UNPKG

4.49 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _extends2 = require('babel-runtime/helpers/extends');
6
7var _extends3 = _interopRequireDefault(_extends2);
8
9var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
10
11var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
12
13var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
14
15var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
16
17var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
18
19var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
20
21var _inherits2 = require('babel-runtime/helpers/inherits');
22
23var _inherits3 = _interopRequireDefault(_inherits2);
24
25exports.default = sticky;
26
27var _react = require('react');
28
29var _react2 = _interopRequireDefault(_react);
30
31var _propTypes = require('prop-types');
32
33var _propTypes2 = _interopRequireDefault(_propTypes);
34
35var _header = require('./fixed/header');
36
37var _header2 = _interopRequireDefault(_header);
38
39var _header3 = require('./sticky/header');
40
41var _header4 = _interopRequireDefault(_header3);
42
43var _util = require('./util');
44
45function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
47function sticky(BaseComponent) {
48 var _class, _temp2;
49
50 /** Table */
51 var StickyTable = (_temp2 = _class = function (_React$Component) {
52 (0, _inherits3.default)(StickyTable, _React$Component);
53
54 function StickyTable() {
55 var _temp, _this, _ret;
56
57 (0, _classCallCheck3.default)(this, StickyTable);
58
59 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
60 args[_key] = arguments[_key];
61 }
62
63 return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {}, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
64 }
65
66 StickyTable.prototype.getChildContext = function getChildContext() {
67 return {
68 Header: this.props.components.Header || _header2.default,
69 offsetTop: this.props.offsetTop,
70 affixProps: this.props.affixProps
71 };
72 };
73
74 StickyTable.prototype.render = function render() {
75 /* eslint-disable no-unused-vars */
76 var _props = this.props,
77 stickyHeader = _props.stickyHeader,
78 offsetTop = _props.offsetTop,
79 affixProps = _props.affixProps,
80 others = (0, _objectWithoutProperties3.default)(_props, ['stickyHeader', 'offsetTop', 'affixProps']);
81 var _props2 = this.props,
82 components = _props2.components,
83 maxBodyHeight = _props2.maxBodyHeight,
84 fixedHeader = _props2.fixedHeader;
85
86 if (stickyHeader) {
87 components = (0, _extends3.default)({}, components);
88 components.Header = _header4.default;
89 fixedHeader = true;
90 maxBodyHeight = Math.max(maxBodyHeight, 10000);
91 }
92 return _react2.default.createElement(BaseComponent, (0, _extends3.default)({}, others, {
93 components: components,
94 fixedHeader: fixedHeader,
95 maxBodyHeight: maxBodyHeight
96 }));
97 };
98
99 return StickyTable;
100 }(_react2.default.Component), _class.StickyHeader = _header4.default, _class.propTypes = (0, _extends3.default)({
101 /**
102 * 表头是否是sticky
103 */
104 stickyHeader: _propTypes2.default.bool,
105 /**
106 * 距离窗口顶部达到指定偏移量后触发
107 */
108 offsetTop: _propTypes2.default.number,
109 /**
110 * affix组件的的属性
111 */
112 affixProps: _propTypes2.default.object,
113 components: _propTypes2.default.object
114 }, BaseComponent.propTypes), _class.defaultProps = (0, _extends3.default)({
115 components: {}
116 }, BaseComponent.defaultProps), _class.childContextTypes = {
117 Header: _propTypes2.default.any,
118 offsetTop: _propTypes2.default.number,
119 affixProps: _propTypes2.default.object
120 }, _temp2);
121 StickyTable.displayName = 'StickyTable';
122
123 (0, _util.statics)(StickyTable, BaseComponent);
124 return StickyTable;
125}
126module.exports = exports['default'];
\No newline at end of file