1 | "use strict";
|
2 |
|
3 | var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
4 |
|
5 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
6 |
|
7 | Object.defineProperty(exports, "__esModule", {
|
8 | value: true
|
9 | });
|
10 | exports.default = void 0;
|
11 |
|
12 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
13 |
|
14 | var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
15 |
|
16 | var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
17 |
|
18 | var React = _interopRequireWildcard(require("react"));
|
19 |
|
20 | var _Header = _interopRequireDefault(require("./Header"));
|
21 |
|
22 | var _ColGroup = _interopRequireDefault(require("../ColGroup"));
|
23 |
|
24 | var _TableContext = _interopRequireDefault(require("../context/TableContext"));
|
25 |
|
26 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
27 |
|
28 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
29 |
|
30 | function useColumnWidth(colWidths, columCount) {
|
31 | return (0, React.useMemo)(function () {
|
32 | var cloneColumns = [];
|
33 |
|
34 | for (var i = 0; i < columCount; i += 1) {
|
35 | var val = colWidths[i];
|
36 |
|
37 | if (val) {
|
38 | cloneColumns[i] = val;
|
39 | } else {
|
40 | return null;
|
41 | }
|
42 | }
|
43 |
|
44 | return cloneColumns;
|
45 | }, [colWidths.join('_'), columCount]);
|
46 | }
|
47 |
|
48 | function FixedHeader(_ref) {
|
49 | var columns = _ref.columns,
|
50 | flattenColumns = _ref.flattenColumns,
|
51 | colWidths = _ref.colWidths,
|
52 | columCount = _ref.columCount,
|
53 | stickyOffsets = _ref.stickyOffsets,
|
54 | direction = _ref.direction,
|
55 | fixHeader = _ref.fixHeader,
|
56 | props = (0, _objectWithoutProperties2.default)(_ref, ["columns", "flattenColumns", "colWidths", "columCount", "stickyOffsets", "direction", "fixHeader"]);
|
57 |
|
58 | var _React$useContext = React.useContext(_TableContext.default),
|
59 | prefixCls = _React$useContext.prefixCls,
|
60 | scrollbarSize = _React$useContext.scrollbarSize;
|
61 |
|
62 |
|
63 | var lastColumn = flattenColumns[flattenColumns.length - 1];
|
64 | var ScrollBarColumn = {
|
65 | fixed: lastColumn ? lastColumn.fixed : null,
|
66 | onHeaderCell: function onHeaderCell() {
|
67 | return {
|
68 | className: "".concat(prefixCls, "-cell-scrollbar")
|
69 | };
|
70 | }
|
71 | };
|
72 | var columnsWithScrollbar = (0, React.useMemo)(function () {
|
73 | return scrollbarSize && fixHeader ? [].concat((0, _toConsumableArray2.default)(columns), [ScrollBarColumn]) : columns;
|
74 | }, [scrollbarSize, columns, fixHeader]);
|
75 | var flattenColumnsWithScrollbar = (0, React.useMemo)(function () {
|
76 | return scrollbarSize ? [].concat((0, _toConsumableArray2.default)(flattenColumns), [ScrollBarColumn]) : flattenColumns;
|
77 | }, [scrollbarSize, flattenColumns]);
|
78 |
|
79 | var headerStickyOffsets = (0, React.useMemo)(function () {
|
80 | var right = stickyOffsets.right,
|
81 | left = stickyOffsets.left;
|
82 | return _objectSpread(_objectSpread({}, stickyOffsets), {}, {
|
83 | left: direction === 'rtl' ? [].concat((0, _toConsumableArray2.default)(left.map(function (width) {
|
84 | return width + scrollbarSize;
|
85 | })), [0]) : left,
|
86 | right: direction === 'rtl' ? right : [].concat((0, _toConsumableArray2.default)(right.map(function (width) {
|
87 | return width + scrollbarSize;
|
88 | })), [0])
|
89 | });
|
90 | }, [scrollbarSize, stickyOffsets]);
|
91 | var mergedColumnWidth = useColumnWidth(colWidths, columCount);
|
92 | return React.createElement("table", {
|
93 | style: {
|
94 | tableLayout: 'fixed',
|
95 | visibility: mergedColumnWidth ? null : 'hidden'
|
96 | }
|
97 | }, React.createElement(_ColGroup.default, {
|
98 | colWidths: mergedColumnWidth ? [].concat((0, _toConsumableArray2.default)(mergedColumnWidth), [scrollbarSize]) : [],
|
99 | columCount: columCount + 1,
|
100 | columns: flattenColumnsWithScrollbar
|
101 | }), React.createElement(_Header.default, Object.assign({}, props, {
|
102 | stickyOffsets: headerStickyOffsets,
|
103 | columns: columnsWithScrollbar,
|
104 | flattenColumns: flattenColumnsWithScrollbar
|
105 | })));
|
106 | }
|
107 |
|
108 | var _default = FixedHeader;
|
109 | exports.default = _default; |
\ | No newline at end of file |