UNPKG

4.81 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = void 0;
11
12var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
14var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
16var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
17
18var React = _interopRequireWildcard(require("react"));
19
20var _Header = _interopRequireDefault(require("./Header"));
21
22var _ColGroup = _interopRequireDefault(require("../ColGroup"));
23
24var _TableContext = _interopRequireDefault(require("../context/TableContext"));
25
26function 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
28function _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
30function 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
48function 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; // Add scrollbar column
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]); // Calculate the sticky offsets
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
108var _default = FixedHeader;
109exports.default = _default;
\No newline at end of file