@aloudata/aloudata-design 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/Breadcrumb/index.d.ts +1 -0
- package/es/Checkbox/index.d.ts +1 -0
- package/es/ConfigProvider/defaultRenderEmpty.d.ts +4 -0
- package/es/ConfigProvider/defaultRenderEmpty.js +37 -0
- package/es/ConfigProvider/sizeContext.d.ts +9 -0
- package/es/ConfigProvider/sizeContext.js +12 -0
- package/es/Empty/image/Authority.d.ts +1 -0
- package/es/Empty/image/Dataspace.d.ts +1 -0
- package/es/Empty/image/Search.d.ts +1 -0
- package/es/Empty/image/Simple.d.ts +1 -0
- package/es/Empty/image/Worksheet.d.ts +1 -0
- package/es/Empty/image/empty.d.ts +1 -0
- package/es/Input/components/Group/index.d.ts +1 -0
- package/es/Input/components/Input/index.d.ts +1 -1
- package/es/Input/components/Input/index.js +0 -1
- package/es/Input/components/TextArea/index.d.ts +8 -1
- package/es/Input/components/TextArea/index.js +8 -1
- package/es/Input/style/index.less +78 -0
- package/es/InputNumber/index.d.ts +1 -0
- package/es/Menu/Divider.d.ts +1 -0
- package/es/Modal/style/index.less +3 -0
- package/es/Navigator/components/Header/index.d.ts +1 -0
- package/es/Navigator/components/Menu/index.d.ts +1 -0
- package/es/Popover/index.d.ts +1 -0
- package/es/Radio/components/Group/index.d.ts +6 -0
- package/es/Radio/components/Group/index.js +72 -0
- package/es/Radio/components/Radio/index.d.ts +3 -0
- package/es/Radio/components/Radio/index.js +95 -0
- package/es/Radio/index.d.ts +9 -2
- package/es/Radio/index.js +5 -3
- package/es/Radio/interface/radio.d.ts +24 -0
- package/es/Radio/interface/radio.js +1 -0
- package/es/Radio/interface/radioGroup.d.ts +42 -0
- package/es/Radio/interface/radioGroup.js +1 -0
- package/es/Radio/style/index.less +348 -0
- package/es/Select/index.js +1 -1
- package/es/Select/style/index.less +1 -0
- package/es/Steps/components/ProcessIcon/index.d.ts +1 -0
- package/es/Table/Table.d.ts +2 -1
- package/es/Table/Table.js +223 -330
- package/es/Table/components/Empty/index.d.ts +3 -0
- package/es/Table/components/Empty/index.js +17 -0
- package/es/Table/components/Loading/index.d.ts +3 -0
- package/es/Table/components/Loading/index.js +19 -0
- package/es/Table/components/TableBodyRowList/index.d.ts +13 -0
- package/es/Table/components/TableBodyRowList/index.js +89 -0
- package/es/Table/components/TableHead/index.d.ts +23 -0
- package/es/Table/components/TableHead/index.js +262 -0
- package/es/Table/constant.d.ts +1 -0
- package/es/Table/constant.js +1 -0
- package/es/Table/hooks/useFrame.d.ts +7 -0
- package/es/Table/hooks/useFrame.js +90 -0
- package/es/Table/hooks/useTableColumn.d.ts +28 -0
- package/es/Table/hooks/useTableColumn.js +53 -0
- package/es/Table/interface.d.ts +3 -2
- package/es/Table/style/index.less +33 -30
- package/es/Table/utils.d.ts +15 -0
- package/es/Table/utils.js +131 -0
- package/es/_utils/hooks/useId.d.ts +4 -0
- package/es/_utils/hooks/useId.js +23 -0
- package/es/index.d.ts +1 -1
- package/es/locale-provider/index.d.ts +5 -1
- package/es/style/index.d.ts +0 -1
- package/es/style/index.js +0 -1
- package/es/style/index.less +2 -2
- package/lib/Breadcrumb/index.d.ts +1 -0
- package/lib/Checkbox/index.d.ts +1 -0
- package/lib/ConfigProvider/defaultRenderEmpty.d.ts +4 -0
- package/lib/ConfigProvider/defaultRenderEmpty.js +55 -0
- package/lib/ConfigProvider/sizeContext.d.ts +9 -0
- package/lib/ConfigProvider/sizeContext.js +30 -0
- package/lib/Empty/image/Authority.d.ts +1 -0
- package/lib/Empty/image/Dataspace.d.ts +1 -0
- package/lib/Empty/image/Search.d.ts +1 -0
- package/lib/Empty/image/Simple.d.ts +1 -0
- package/lib/Empty/image/Worksheet.d.ts +1 -0
- package/lib/Empty/image/empty.d.ts +1 -0
- package/lib/Input/components/Group/index.d.ts +1 -0
- package/lib/Input/components/Input/index.d.ts +1 -1
- package/lib/Input/components/Input/index.js +0 -1
- package/lib/Input/components/TextArea/index.d.ts +8 -1
- package/lib/Input/components/TextArea/index.js +10 -1
- package/lib/Input/style/index.less +78 -0
- package/lib/InputNumber/index.d.ts +1 -0
- package/lib/Menu/Divider.d.ts +1 -0
- package/lib/Modal/style/index.less +3 -0
- package/lib/Navigator/components/Header/index.d.ts +1 -0
- package/lib/Navigator/components/Menu/index.d.ts +1 -0
- package/lib/Popover/index.d.ts +1 -0
- package/lib/Radio/components/Group/index.d.ts +6 -0
- package/lib/Radio/components/Group/index.js +93 -0
- package/lib/Radio/components/Radio/index.d.ts +3 -0
- package/lib/Radio/components/Radio/index.js +115 -0
- package/lib/Radio/index.d.ts +9 -2
- package/lib/Radio/index.js +5 -3
- package/lib/Radio/interface/radio.d.ts +24 -0
- package/lib/Radio/interface/radio.js +5 -0
- package/lib/Radio/interface/radioGroup.d.ts +42 -0
- package/lib/Radio/interface/radioGroup.js +5 -0
- package/lib/Radio/style/index.less +348 -0
- package/lib/Select/index.js +1 -1
- package/lib/Select/style/index.less +1 -0
- package/lib/Steps/components/ProcessIcon/index.d.ts +1 -0
- package/lib/Table/Table.d.ts +2 -1
- package/lib/Table/Table.js +228 -332
- package/lib/Table/components/Empty/index.d.ts +3 -0
- package/lib/Table/components/Empty/index.js +30 -0
- package/lib/Table/components/Loading/index.d.ts +3 -0
- package/lib/Table/components/Loading/index.js +33 -0
- package/lib/Table/components/TableBodyRowList/index.d.ts +13 -0
- package/lib/Table/components/TableBodyRowList/index.js +108 -0
- package/lib/Table/components/TableHead/index.d.ts +23 -0
- package/lib/Table/components/TableHead/index.js +286 -0
- package/lib/Table/constant.d.ts +1 -0
- package/lib/Table/constant.js +1 -0
- package/lib/Table/hooks/useFrame.d.ts +7 -0
- package/lib/Table/hooks/useFrame.js +98 -0
- package/lib/Table/hooks/useTableColumn.d.ts +28 -0
- package/lib/Table/hooks/useTableColumn.js +66 -0
- package/lib/Table/interface.d.ts +3 -2
- package/lib/Table/style/index.less +33 -30
- package/lib/Table/utils.d.ts +15 -0
- package/lib/Table/utils.js +147 -0
- package/lib/_utils/hooks/useId.d.ts +4 -0
- package/lib/_utils/hooks/useId.js +36 -0
- package/lib/index.d.ts +1 -1
- package/lib/locale-provider/index.d.ts +5 -1
- package/lib/style/index.d.ts +0 -1
- package/lib/style/index.js +0 -2
- package/lib/style/index.less +2 -2
- package/package.json +1 -1
package/lib/Table/Table.js
CHANGED
|
@@ -7,30 +7,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _classnames4 = _interopRequireDefault(require("classnames"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _usePrefixCls = _interopRequireDefault(require("../_utils/hooks/usePrefixCls"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _rcResizeObserver = _interopRequireDefault(require("rc-resize-observer"));
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _reactTable = require("react-table");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _utils = require("./utils");
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
require("./style/index");
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _message = _interopRequireDefault(require("../message"));
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _Loading = _interopRequireDefault(require("./components/Loading"));
|
|
27
27
|
|
|
28
|
-
var _Empty = _interopRequireDefault(require("
|
|
28
|
+
var _Empty = _interopRequireDefault(require("./components/Empty"));
|
|
29
29
|
|
|
30
|
-
var
|
|
30
|
+
var _TableHead = _interopRequireDefault(require("./components/TableHead"));
|
|
31
31
|
|
|
32
|
-
var
|
|
33
|
-
|
|
32
|
+
var _TableBodyRowList = _interopRequireDefault(require("./components/TableBodyRowList"));
|
|
33
|
+
|
|
34
|
+
var _useFrame = require("./hooks/useFrame");
|
|
34
35
|
|
|
35
36
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
36
37
|
|
|
@@ -38,10 +39,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
38
39
|
|
|
39
40
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
40
41
|
|
|
41
|
-
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
42
|
-
|
|
43
|
-
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
44
|
-
|
|
45
42
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
46
43
|
|
|
47
44
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
@@ -60,11 +57,9 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
60
57
|
|
|
61
58
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
62
59
|
|
|
63
|
-
|
|
64
|
-
var
|
|
65
|
-
var
|
|
66
|
-
var DEFAULT_BODY_HEIGHT = 0;
|
|
67
|
-
var EMPTY_LENGTH = 0; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
60
|
+
var TABLE_HEAD_ROW_HEIGHT = 48;
|
|
61
|
+
var SCROLLBAR_SIZE = 15;
|
|
62
|
+
var ZERO = 0;
|
|
68
63
|
|
|
69
64
|
function Table(props, ref) {
|
|
70
65
|
var _classnames3;
|
|
@@ -83,79 +78,78 @@ function Table(props, ref) {
|
|
|
83
78
|
allSortDirections = props.sortDirections,
|
|
84
79
|
_props$onChange = props.onChange,
|
|
85
80
|
onChange = _props$onChange === void 0 ? function () {} : _props$onChange,
|
|
86
|
-
_props$innerScroll = props.innerScroll,
|
|
87
|
-
innerScroll = _props$innerScroll === void 0 ? false : _props$innerScroll,
|
|
88
81
|
_props$scrollThreshol = props.scrollThreshold,
|
|
89
82
|
scrollThreshold = _props$scrollThreshol === void 0 ? '150px' : _props$scrollThreshol,
|
|
90
83
|
_props$rowClassName = props.rowClassName,
|
|
91
84
|
rowClassName = _props$rowClassName === void 0 ? '' : _props$rowClassName,
|
|
92
85
|
_props$ellipsis = props.ellipsis,
|
|
93
86
|
ellipsis = _props$ellipsis === void 0 ? true : _props$ellipsis,
|
|
94
|
-
rowKey = props.rowKey
|
|
95
|
-
|
|
96
|
-
var _React$useState = _react.default.useState(null),
|
|
97
|
-
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
98
|
-
selectedRowId = _React$useState2[0],
|
|
99
|
-
setSelectedRowId = _React$useState2[1];
|
|
87
|
+
rowKey = props.rowKey,
|
|
88
|
+
height = props.height;
|
|
100
89
|
|
|
101
|
-
var
|
|
102
|
-
var tableRef = (0, _react.useRef)(null);
|
|
103
|
-
|
|
104
|
-
var _useState = (0, _react.useState)(DEFAULT_BODY_HEIGHT),
|
|
90
|
+
var _useState = (0, _react.useState)(ZERO),
|
|
105
91
|
_useState2 = _slicedToArray(_useState, 2),
|
|
106
92
|
tableClientWidth = _useState2[0],
|
|
107
93
|
setTableClientWidth = _useState2[1];
|
|
108
94
|
|
|
109
|
-
var
|
|
110
|
-
|
|
111
|
-
var _useState3 = (0, _react.useState)(DEFAULT_ROW_WIDTH),
|
|
95
|
+
var _useState3 = (0, _react.useState)(ZERO),
|
|
112
96
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
113
|
-
|
|
114
|
-
|
|
97
|
+
tableClientHeight = _useState4[0],
|
|
98
|
+
setTableClientHeight = _useState4[1];
|
|
99
|
+
|
|
100
|
+
var prefixCls = (0, _usePrefixCls.default)('', 'ald-table');
|
|
101
|
+
var tableRef = (0, _react.useRef)(null);
|
|
102
|
+
var tableHeadRef = (0, _react.useRef)(null);
|
|
103
|
+
var tableBodyRef = (0, _react.useRef)(null);
|
|
104
|
+
var columnsRef = (0, _react.useRef)([]);
|
|
105
|
+
var columnsWidthMapRef = (0, _react.useRef)();
|
|
106
|
+
var columnsTotalWidthRef = (0, _react.useRef)(ZERO);
|
|
107
|
+
|
|
108
|
+
var _useState5 = (0, _react.useState)(false),
|
|
109
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
110
|
+
loadMoreLoading = _useState6[0],
|
|
111
|
+
setLoadMoreLoading = _useState6[1];
|
|
112
|
+
|
|
113
|
+
var lastOffsetLeftRef = (0, _react.useRef)(ZERO);
|
|
114
|
+
var lastOffsetTopRef = (0, _react.useRef)(ZERO);
|
|
115
|
+
|
|
116
|
+
var _useTimeoutLock = (0, _useFrame.useTimeoutLock)(),
|
|
117
|
+
_useTimeoutLock2 = _slicedToArray(_useTimeoutLock, 2),
|
|
118
|
+
setScrollTarget = _useTimeoutLock2[0],
|
|
119
|
+
getScrollTarget = _useTimeoutLock2[1]; // 记录初始columns, 后续更改不响应
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
if (columns && columnsRef.current.length === ZERO) {
|
|
123
|
+
columnsRef.current = columns;
|
|
124
|
+
} // 初始化进入时 渲染表格容器宽度
|
|
115
125
|
|
|
116
126
|
|
|
117
127
|
(0, _react.useEffect)(function () {
|
|
118
128
|
if (tableRef.current) {
|
|
119
129
|
setTableClientWidth(tableRef.current.clientWidth);
|
|
120
130
|
}
|
|
121
|
-
}, [
|
|
122
|
-
var initialColumnsWidthMap = (0, _react.useMemo)(function () {
|
|
123
|
-
var map = new Map();
|
|
124
|
-
|
|
125
|
-
if (tableClientWidth !== DEFAULT_BODY_HEIGHT) {
|
|
126
|
-
var noGivenColumns = 0;
|
|
127
|
-
var givenColumnsTotalWidth = 0;
|
|
128
|
-
columns.forEach(function (column) {
|
|
129
|
-
if (column.width) {
|
|
130
|
-
map.set(column.dataIndex, column.width);
|
|
131
|
-
givenColumnsTotalWidth += column.width;
|
|
132
|
-
} else {
|
|
133
|
-
noGivenColumns += 1;
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
var averageWidth = (tableClientWidth - givenColumnsTotalWidth) / noGivenColumns;
|
|
137
|
-
return {
|
|
138
|
-
columnMap: map,
|
|
139
|
-
averageWidth: averageWidth
|
|
140
|
-
};
|
|
141
|
-
}
|
|
131
|
+
}, []); // 转换外部传入的columns
|
|
142
132
|
|
|
143
|
-
columns.forEach(function (column) {
|
|
144
|
-
if (column.width) {
|
|
145
|
-
map.set(column.dataIndex, column.width);
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
return {
|
|
149
|
-
columnMap: map,
|
|
150
|
-
averageWidth: DEFAULT_ROW_WIDTH
|
|
151
|
-
};
|
|
152
|
-
}, [columns, tableClientWidth]);
|
|
153
133
|
var newColumns = (0, _react.useMemo)(function () {
|
|
154
|
-
|
|
134
|
+
var _getColumnsWidthMap = (0, _utils.getColumnsWidthMap)(columnsRef.current, tableClientWidth, columnsWidthMapRef.current),
|
|
135
|
+
columnsWidthMap = _getColumnsWidthMap.columnsWidthMap,
|
|
136
|
+
totalColumnWidth = _getColumnsWidthMap.totalColumnWidth;
|
|
137
|
+
|
|
138
|
+
columnsWidthMapRef.current = columnsWidthMap;
|
|
139
|
+
columnsTotalWidthRef.current = totalColumnWidth;
|
|
140
|
+
return columnsRef.current.map(function (column, index) {
|
|
141
|
+
var _columnsWidthMapRef$c, _columnsWidthMapRef$c2;
|
|
142
|
+
|
|
143
|
+
var key = index.toString(); // 不设置dataIndex同时进行排序 则报错
|
|
144
|
+
|
|
145
|
+
if (!column.dataIndex === undefined && sortable) {
|
|
146
|
+
_message.default.error('不支持未设置dataIndex时进行排序设置');
|
|
147
|
+
}
|
|
148
|
+
|
|
155
149
|
return _objectSpread(_objectSpread({}, column), {}, {
|
|
156
|
-
width:
|
|
150
|
+
width: (_columnsWidthMapRef$c = columnsWidthMapRef.current) === null || _columnsWidthMapRef$c === void 0 ? void 0 : (_columnsWidthMapRef$c2 = _columnsWidthMapRef$c.get(key)) === null || _columnsWidthMapRef$c2 === void 0 ? void 0 : _columnsWidthMapRef$c2.width,
|
|
157
151
|
Header: column.title ? column.title : function () {
|
|
158
|
-
return null;
|
|
152
|
+
return /*#__PURE__*/_react.default.createElement("span", null, "\xA0");
|
|
159
153
|
},
|
|
160
154
|
disableSortBy: !sortable || typeof column.sorter === 'boolean',
|
|
161
155
|
accessor: column.dataIndex,
|
|
@@ -166,51 +160,10 @@ function Table(props, ref) {
|
|
|
166
160
|
}
|
|
167
161
|
});
|
|
168
162
|
});
|
|
169
|
-
}, [
|
|
170
|
-
|
|
171
|
-
var defaultSortObject = {
|
|
172
|
-
id: newColumns[ARRAY_FIRST_INDEX].accessor,
|
|
173
|
-
desc: newColumns[ARRAY_FIRST_INDEX].sortOrder && newColumns[ARRAY_FIRST_INDEX].sortOrder === 'descend' ? true : false
|
|
174
|
-
}; // 如果支持排序 但是没有默认排序 则默认按第一列倒叙排序
|
|
175
|
-
|
|
176
|
-
var getInitialSortDirection = function getInitialSortDirection() {
|
|
177
|
-
if (defaultSort && defaultSort.id) {
|
|
178
|
-
return defaultSort;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
if (sortable) {
|
|
182
|
-
return defaultSortObject;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
return {
|
|
186
|
-
id: '',
|
|
187
|
-
desc: false
|
|
188
|
-
};
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
var _React$useState3 = _react.default.useState(getInitialSortDirection()),
|
|
192
|
-
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
193
|
-
sortDirection = _React$useState4[0],
|
|
194
|
-
setSortDirection = _React$useState4[1];
|
|
195
|
-
|
|
196
|
-
var getInitSortBy = function getInitSortBy() {
|
|
197
|
-
if (!(sortDirection === null || sortDirection === void 0 ? void 0 : sortDirection.id)) {
|
|
198
|
-
return [];
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
var sortColumn = newColumns.find(function (column) {
|
|
202
|
-
return column.accessor === sortDirection.id;
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
if (sortColumn === null || sortColumn === void 0 ? void 0 : sortColumn.sorter) {
|
|
206
|
-
return [];
|
|
207
|
-
}
|
|
163
|
+
}, [sortable, tableClientWidth]); // 将rowId转为React Table支持的值
|
|
164
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
208
165
|
|
|
209
|
-
|
|
210
|
-
}; // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
var getRowIdFn = function getRowIdFn(row, relativeIndex, parent) {
|
|
166
|
+
var transformRowId = function transformRowId(row, relativeIndex, parent) {
|
|
214
167
|
if (rowKey && parent) {
|
|
215
168
|
if (typeof rowKey === 'string') {
|
|
216
169
|
return [rowKey, relativeIndex].join('.');
|
|
@@ -222,6 +175,24 @@ function Table(props, ref) {
|
|
|
222
175
|
}
|
|
223
176
|
|
|
224
177
|
return relativeIndex.toString();
|
|
178
|
+
}; // 计算初始传递给 React Table的排序字段
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
var getTableInitSort = function getTableInitSort() {
|
|
182
|
+
if (defaultSort && defaultSort.id) {
|
|
183
|
+
return [defaultSort];
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
var firstColumnSortData = {
|
|
187
|
+
id: newColumns[ZERO].accessor,
|
|
188
|
+
desc: !!(newColumns[ZERO].sortOrder && newColumns[ZERO].sortOrder === 'descend')
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
if (firstColumnSortData.id) {
|
|
192
|
+
return [firstColumnSortData];
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return [];
|
|
225
196
|
};
|
|
226
197
|
|
|
227
198
|
var _useTable = (0, _reactTable.useTable)({
|
|
@@ -229,9 +200,9 @@ function Table(props, ref) {
|
|
|
229
200
|
data: data,
|
|
230
201
|
disableMultiSort: true,
|
|
231
202
|
disableSortBy: !sortable,
|
|
232
|
-
getRowId:
|
|
203
|
+
getRowId: transformRowId,
|
|
233
204
|
initialState: {
|
|
234
|
-
sortBy:
|
|
205
|
+
sortBy: getTableInitSort()
|
|
235
206
|
}
|
|
236
207
|
}, _reactTable.useBlockLayout, _reactTable.useSortBy, _reactTable.useRowSelect, _reactTable.useResizeColumns),
|
|
237
208
|
getTableProps = _useTable.getTableProps,
|
|
@@ -239,261 +210,186 @@ function Table(props, ref) {
|
|
|
239
210
|
headerGroups = _useTable.headerGroups,
|
|
240
211
|
rows = _useTable.rows,
|
|
241
212
|
prepareRow = _useTable.prepareRow,
|
|
242
|
-
setSortBy = _useTable.setSortBy
|
|
243
|
-
totalColumnsWidth = _useTable.totalColumnsWidth;
|
|
213
|
+
setSortBy = _useTable.setSortBy;
|
|
244
214
|
|
|
245
|
-
var
|
|
215
|
+
var scrollToTop = function scrollToTop() {
|
|
216
|
+
var INITIAL_OFFSET_TOP = 0;
|
|
246
217
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
if (!onRowSelected) {
|
|
250
|
-
return;
|
|
218
|
+
if (tableBodyRef && tableBodyRef.current) {
|
|
219
|
+
tableBodyRef.current.scrollTop = INITIAL_OFFSET_TOP;
|
|
251
220
|
}
|
|
221
|
+
};
|
|
252
222
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
var getSortBy = function getSortBy(id) {
|
|
259
|
-
var sortDirections = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ['ascend', 'descend'];
|
|
260
|
-
var // 如果传了sortDirections,则使用传入的,否则使用默认的
|
|
261
|
-
sortOrder = arguments.length > 2 ? arguments[2] : undefined;
|
|
262
|
-
var res = {
|
|
263
|
-
id: id,
|
|
264
|
-
desc: undefined
|
|
265
|
-
};
|
|
266
|
-
var isSameCol = sortDirection.id === id;
|
|
267
|
-
var descMap = new Map([['ascend', false], ['descend', true]]);
|
|
268
|
-
var directions = allSortDirections || sortDirections; // 如果不是同一列 则返回默认排序 或者排序顺序的第一个
|
|
269
|
-
|
|
270
|
-
if (!isSameCol) {
|
|
271
|
-
if (sortOrder === 'ascend' || sortOrder === 'descend') {
|
|
272
|
-
res.desc = descMap.get(sortOrder);
|
|
273
|
-
} else {
|
|
274
|
-
res.desc = sortOrder ? sortOrder : descMap.get(directions[ARRAY_FIRST_INDEX]);
|
|
223
|
+
_react.default.useImperativeHandle(ref, function () {
|
|
224
|
+
return {
|
|
225
|
+
backToTop: function backToTop() {
|
|
226
|
+
scrollToTop();
|
|
275
227
|
}
|
|
228
|
+
};
|
|
229
|
+
});
|
|
276
230
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
231
|
+
var tableHeadNode = /*#__PURE__*/_react.default.createElement(_TableHead.default, {
|
|
232
|
+
canResizeColumn: resizeColumn,
|
|
233
|
+
headerGroups: headerGroups,
|
|
234
|
+
tableContentWidth: columnsTotalWidthRef.current,
|
|
235
|
+
defaultSort: defaultSort,
|
|
236
|
+
sortable: sortable,
|
|
237
|
+
columns: newColumns,
|
|
238
|
+
sortDirections: allSortDirections,
|
|
239
|
+
setSortBy: setSortBy,
|
|
240
|
+
onChange: onChange,
|
|
241
|
+
columnsWidthMapRef: columnsWidthMapRef,
|
|
242
|
+
columnsTotalWidthRef: columnsTotalWidthRef
|
|
243
|
+
});
|
|
286
244
|
|
|
245
|
+
var tableRowListNode = /*#__PURE__*/_react.default.createElement(_TableBodyRowList.default, {
|
|
246
|
+
data: data,
|
|
247
|
+
rows: rows,
|
|
248
|
+
prepareRow: prepareRow,
|
|
249
|
+
columnsTotalWidthRef: columnsTotalWidthRef,
|
|
250
|
+
rowClassName: rowClassName,
|
|
251
|
+
ellipsis: ellipsis,
|
|
252
|
+
onRowSelected: onRowSelected
|
|
253
|
+
}); // 渲染没有设置高度的表格
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
var renderTableWithoutHeight = function renderTableWithoutHeight() {
|
|
257
|
+
var renderNoHeightTableBody = function renderNoHeightTableBody() {
|
|
258
|
+
if (loading && !rows.length) {
|
|
259
|
+
return /*#__PURE__*/_react.default.createElement(_Loading.default, null);
|
|
260
|
+
}
|
|
287
261
|
|
|
288
|
-
|
|
262
|
+
if (!loading && !rows.length) {
|
|
263
|
+
return /*#__PURE__*/_react.default.createElement(_Empty.default, null);
|
|
264
|
+
}
|
|
289
265
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
266
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
267
|
+
className: "".concat(prefixCls, "-list")
|
|
268
|
+
}, tableRowListNode);
|
|
269
|
+
};
|
|
293
270
|
|
|
294
|
-
|
|
295
|
-
|
|
271
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
272
|
+
className: (0, _classnames4.default)("".concat(prefixCls, "-inner-wrap"))
|
|
273
|
+
}, tableHeadNode, /*#__PURE__*/_react.default.createElement("div", Object.assign({}, getTableBodyProps(), {
|
|
274
|
+
className: (0, _classnames4.default)("".concat(prefixCls, "-tbody")),
|
|
275
|
+
style: {
|
|
276
|
+
width: columnsTotalWidthRef.current
|
|
277
|
+
}
|
|
278
|
+
}), renderNoHeightTableBody()));
|
|
279
|
+
};
|
|
296
280
|
|
|
297
|
-
|
|
298
|
-
|
|
281
|
+
var forceScroll = (0, _react.useCallback)(function (scrollLeftNum, target) {
|
|
282
|
+
if (!target) {
|
|
283
|
+
return;
|
|
299
284
|
}
|
|
300
285
|
|
|
301
|
-
|
|
302
|
-
|
|
286
|
+
if (typeof target === 'function') {
|
|
287
|
+
target(scrollLeftNum);
|
|
288
|
+
} else if (target.scrollLeft !== scrollLeftNum) {
|
|
289
|
+
// eslint-disable-next-line no-param-reassign
|
|
290
|
+
target.scrollLeft = scrollLeftNum;
|
|
291
|
+
}
|
|
292
|
+
}, []); // 内部滚动时 纵向的滚动
|
|
303
293
|
|
|
304
|
-
var
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
sortDirections = column.sortDirections;
|
|
311
|
-
var toggleProps = column.getSortByToggleProps(); // 仅在Table设置sortable时,所有列的canSort为true,此时为前端排序
|
|
312
|
-
|
|
313
|
-
if (canSort) {
|
|
314
|
-
// client sort
|
|
315
|
-
return _objectSpread(_objectSpread({}, column.getHeaderProps(_objectSpread({}, toggleProps))), {}, {
|
|
316
|
-
onClick: function onClick(e) {
|
|
317
|
-
e.stopPropagation();
|
|
318
|
-
|
|
319
|
-
if (typeof toggleProps.onClick === 'function') {
|
|
320
|
-
var sortBy = getSortBy(id, sortDirections, sortOrder);
|
|
321
|
-
setSortBy(sortBy.desc === undefined ? [defaultSortObject] : [sortBy]); // 客户端排序时 需要重新设置排序
|
|
322
|
-
|
|
323
|
-
setSortDirection(sortBy);
|
|
324
|
-
onChange(sortBy);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
});
|
|
328
|
-
} // 当列设置sorter属性时,则为服务端排序
|
|
294
|
+
var onBodyVerticalScroll = (0, _react.useCallback)(function (target) {
|
|
295
|
+
var scrollHeight = target.scrollHeight,
|
|
296
|
+
clientHeight = target.clientHeight,
|
|
297
|
+
scrollTop = target.scrollTop;
|
|
298
|
+
var currentPosToBottomGap = scrollHeight - clientHeight - scrollTop;
|
|
299
|
+
var scrollThresholdValue = (0, _utils.getValidScrollThreshold)(scrollThreshold, tableClientHeight);
|
|
329
300
|
|
|
301
|
+
if (currentPosToBottomGap < scrollThresholdValue && hasNextPage && !loadMoreLoading) {
|
|
302
|
+
var _loadMore;
|
|
330
303
|
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
style: {
|
|
335
|
-
cursor: 'pointer'
|
|
336
|
-
}
|
|
337
|
-
})), {}, {
|
|
338
|
-
onClick: function onClick(e) {
|
|
339
|
-
e.stopPropagation();
|
|
340
|
-
var sortBy = getSortBy(id, sortDirections, sortOrder);
|
|
341
|
-
setSortDirection(sortBy);
|
|
342
|
-
onChange(sortBy);
|
|
343
|
-
}
|
|
304
|
+
setLoadMoreLoading(true);
|
|
305
|
+
(_loadMore = loadMore()) === null || _loadMore === void 0 ? void 0 : _loadMore.then(function () {
|
|
306
|
+
setLoadMoreLoading(false);
|
|
344
307
|
});
|
|
345
308
|
}
|
|
346
309
|
|
|
347
|
-
|
|
348
|
-
};
|
|
310
|
+
lastOffsetTopRef.current = scrollTop;
|
|
311
|
+
}, [hasNextPage, loadMore, loadMoreLoading, scrollThreshold, tableClientHeight]); // 内部滚动 对于滚动的处理
|
|
349
312
|
|
|
350
|
-
var
|
|
351
|
-
var
|
|
352
|
-
var currentSortId = sortDirection.id,
|
|
353
|
-
desc = sortDirection.desc;
|
|
313
|
+
var onBodyScroll = (0, _react.useCallback)(function (e) {
|
|
314
|
+
var currentTarget = e.target;
|
|
354
315
|
|
|
355
|
-
if (
|
|
356
|
-
return
|
|
316
|
+
if (!currentTarget) {
|
|
317
|
+
return;
|
|
357
318
|
}
|
|
358
319
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
fill: "currentColor",
|
|
362
|
-
size: 12
|
|
363
|
-
}) : /*#__PURE__*/_react.default.createElement(_SortAscendingLine.default, {
|
|
364
|
-
className: "".concat(prefixCls, "-sortIcon"),
|
|
365
|
-
fill: "currentColor",
|
|
366
|
-
size: 12
|
|
367
|
-
});
|
|
368
|
-
};
|
|
320
|
+
var scrollLeftNum = currentTarget.scrollLeft;
|
|
321
|
+
var scrollTopNum = currentTarget.scrollTop; // 纵向滚动
|
|
369
322
|
|
|
370
|
-
|
|
371
|
-
|
|
323
|
+
if (scrollTopNum !== lastOffsetLeftRef.current) {
|
|
324
|
+
onBodyVerticalScroll(currentTarget);
|
|
325
|
+
}
|
|
372
326
|
|
|
373
|
-
if (
|
|
374
|
-
|
|
327
|
+
if (scrollLeftNum === lastOffsetLeftRef.current) {
|
|
328
|
+
return;
|
|
375
329
|
}
|
|
376
|
-
};
|
|
377
330
|
|
|
378
|
-
|
|
379
|
-
return {
|
|
380
|
-
backToTop: function backToTop() {
|
|
381
|
-
scrollToTop();
|
|
382
|
-
}
|
|
383
|
-
};
|
|
384
|
-
});
|
|
331
|
+
var compareTarget = currentTarget; // 横向滚动
|
|
385
332
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
spin: true,
|
|
392
|
-
className: (0, _classnames7.default)("".concat(prefixCls, "-loading-icon"))
|
|
393
|
-
}), "Loading");
|
|
394
|
-
|
|
395
|
-
var renderTableBody = function renderTableBody() {
|
|
396
|
-
if (loading && !rows.length) {
|
|
397
|
-
return LoadingNode;
|
|
333
|
+
if (!getScrollTarget() || getScrollTarget() === compareTarget) {
|
|
334
|
+
setScrollTarget(compareTarget);
|
|
335
|
+
forceScroll(scrollLeftNum, tableBodyRef.current);
|
|
336
|
+
forceScroll(scrollLeftNum, tableHeadRef.current);
|
|
337
|
+
lastOffsetLeftRef.current = scrollLeftNum;
|
|
398
338
|
}
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
}, /*#__PURE__*/_react.default.createElement(_Empty.default, {
|
|
404
|
-
title: "No Data",
|
|
405
|
-
size: "large",
|
|
406
|
-
image: _Empty.default.PRESENTED_IMAGE_SIMPLE
|
|
407
|
-
}));
|
|
339
|
+
}, [forceScroll, getScrollTarget, onBodyVerticalScroll, setScrollTarget]);
|
|
340
|
+
(0, _react.useEffect)(function () {
|
|
341
|
+
if (!hasNextPage) {
|
|
342
|
+
setLoadMoreLoading(false);
|
|
408
343
|
}
|
|
344
|
+
}, [hasNextPage]); // 渲染有设置高度的表格
|
|
409
345
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
return /*#__PURE__*/_react.default.createElement("div", Object.assign({}, cell.getCellProps(), {
|
|
430
|
-
className: (0, _classnames7.default)("".concat(prefixCls, "-cell"))
|
|
431
|
-
}), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, cell.render('Cell')));
|
|
432
|
-
}));
|
|
433
|
-
});
|
|
346
|
+
var renderTableWithHeight = function renderTableWithHeight() {
|
|
347
|
+
var renderNoHeightTableBody = function renderNoHeightTableBody() {
|
|
348
|
+
if (loading && !rows.length) {
|
|
349
|
+
return /*#__PURE__*/_react.default.createElement(_Loading.default, null);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
if (!loading && !rows.length) {
|
|
353
|
+
return /*#__PURE__*/_react.default.createElement(_Empty.default, null);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
357
|
+
style: {
|
|
358
|
+
overflow: 'overlay',
|
|
359
|
+
overflowX: tableClientWidth + SCROLLBAR_SIZE > columnsTotalWidthRef.current ? 'hidden' : 'unset',
|
|
360
|
+
height: tableClientHeight - TABLE_HEAD_ROW_HEIGHT - SCROLLBAR_SIZE
|
|
361
|
+
},
|
|
362
|
+
ref: tableBodyRef,
|
|
363
|
+
onScroll: onBodyScroll
|
|
364
|
+
}, tableRowListNode, loadMoreLoading && /*#__PURE__*/_react.default.createElement(_Loading.default, null));
|
|
434
365
|
};
|
|
435
366
|
|
|
436
367
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
437
|
-
className: (0,
|
|
438
|
-
|
|
439
|
-
ref:
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
loader: LoadingNode,
|
|
445
|
-
scrollableTarget: RANDOM_ID,
|
|
446
|
-
scrollThreshold: scrollThreshold
|
|
447
|
-
}, renderRowList()) : renderRowList());
|
|
368
|
+
className: (0, _classnames4.default)("".concat(prefixCls, "-inner-wrap"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), height))
|
|
369
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
370
|
+
ref: tableHeadRef,
|
|
371
|
+
className: "".concat(prefixCls, "-tableHeadScrollWrap")
|
|
372
|
+
}, tableHeadNode), /*#__PURE__*/_react.default.createElement("div", Object.assign({}, getTableBodyProps(), {
|
|
373
|
+
className: (0, _classnames4.default)("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-tbody-innerScroll"), height))
|
|
374
|
+
}), renderNoHeightTableBody()));
|
|
448
375
|
};
|
|
449
376
|
|
|
450
377
|
return /*#__PURE__*/_react.default.createElement(_rcResizeObserver.default, {
|
|
451
|
-
onResize: function onResize(
|
|
452
|
-
var
|
|
453
|
-
|
|
378
|
+
onResize: function onResize(_ref2) {
|
|
379
|
+
var clientWidth = _ref2.width,
|
|
380
|
+
clientHeight = _ref2.height;
|
|
381
|
+
setTableClientWidth(clientWidth);
|
|
382
|
+
setTableClientHeight(clientHeight);
|
|
454
383
|
}
|
|
455
384
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
456
385
|
className: prefixCls,
|
|
457
|
-
ref: tableRef
|
|
458
|
-
}, /*#__PURE__*/_react.default.createElement("div", Object.assign({}, getTableProps(), {
|
|
459
|
-
className: (0, _classnames7.default)("".concat(prefixCls, "-table-wrap"), (_classnames3 = {}, _defineProperty(_classnames3, "".concat(prefixCls, "-column-resizable"), resizeColumn), _defineProperty(_classnames3, "".concat(prefixCls, "-init-loading"), data.length === EMPTY_LENGTH && loading), _defineProperty(_classnames3, "".concat(prefixCls, "-empty"), data.length === EMPTY_LENGTH && loading), _classnames3))
|
|
460
|
-
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
461
|
-
className: "".concat(prefixCls, "-thead")
|
|
462
|
-
}, headerGroups.map(function (headerGroup) {
|
|
463
|
-
var _headerGroup$getHeade = headerGroup.getHeaderGroupProps(),
|
|
464
|
-
style = _headerGroup$getHeade.style,
|
|
465
|
-
headerGroupProps = _objectWithoutProperties(_headerGroup$getHeade, _excluded2);
|
|
466
|
-
|
|
467
|
-
theadRowWidthRef.current = (style === null || style === void 0 ? void 0 : style.width) || DEFAULT_ROW_WIDTH;
|
|
468
|
-
return /*#__PURE__*/_react.default.createElement("div", Object.assign({}, headerGroupProps, {
|
|
469
|
-
style: _objectSpread(_objectSpread({}, style), {}, {
|
|
470
|
-
width: resizeColumn ? style === null || style === void 0 ? void 0 : style.width : '100%'
|
|
471
|
-
}),
|
|
472
|
-
className: "".concat(prefixCls, "-row")
|
|
473
|
-
}), headerGroup.headers.map(function (column) {
|
|
474
|
-
var barPorps = resizeColumn ? column.getResizerProps() : {};
|
|
475
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
476
|
-
className: (0, _classnames7.default)(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell")),
|
|
477
|
-
style: getHeaderProps(column).style,
|
|
478
|
-
key: column.id
|
|
479
|
-
}, /*#__PURE__*/_react.default.createElement("div", Object.assign({
|
|
480
|
-
className: "".concat(prefixCls, "-cell-content")
|
|
481
|
-
}, getHeaderProps(column), {
|
|
482
|
-
style: {
|
|
483
|
-
width: '100%'
|
|
484
|
-
}
|
|
485
|
-
}), /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, column.render('Header'), /*#__PURE__*/_react.default.createElement(SortIcons, {
|
|
486
|
-
id: column.id
|
|
487
|
-
}))), /*#__PURE__*/_react.default.createElement("div", Object.assign({}, barPorps, {
|
|
488
|
-
className: (0, _classnames7.default)(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
|
|
489
|
-
})));
|
|
490
|
-
}));
|
|
491
|
-
})), /*#__PURE__*/_react.default.createElement("div", Object.assign({}, getTableBodyProps(), {
|
|
492
|
-
className: (0, _classnames7.default)("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
386
|
+
ref: tableRef,
|
|
493
387
|
style: {
|
|
494
|
-
|
|
388
|
+
height: !height ? 'unset' : height
|
|
495
389
|
}
|
|
496
|
-
}
|
|
390
|
+
}, /*#__PURE__*/_react.default.createElement("div", Object.assign({}, getTableProps(), {
|
|
391
|
+
className: (0, _classnames4.default)("".concat(prefixCls, "-table-wrap"), (_classnames3 = {}, _defineProperty(_classnames3, "".concat(prefixCls, "-init-loading"), data.length === ZERO && loading), _defineProperty(_classnames3, "".concat(prefixCls, "-empty"), data.length === ZERO && loading), _classnames3))
|
|
392
|
+
}), height ? renderTableWithHeight() : renderTableWithoutHeight())));
|
|
497
393
|
}
|
|
498
394
|
|
|
499
395
|
var _default = /*#__PURE__*/_react.default.forwardRef(Table);
|