@aloudata/aloudata-design 0.2.0-beta.11 → 0.2.0-beta.14
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/Table/index.d.ts +3 -3
- package/es/Table/index.js +151 -101
- package/es/Table/interface.d.ts +3 -1
- package/es/Table/style/index.less +37 -9
- package/lib/Table/index.d.ts +3 -3
- package/lib/Table/index.js +161 -110
- package/lib/Table/interface.d.ts +3 -1
- package/lib/Table/style/index.less +37 -9
- package/package.json +2 -1
package/es/Table/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { ITableProps } from './interface';
|
|
3
|
-
declare
|
|
4
|
-
export default
|
|
3
|
+
declare const _default: React.ForwardRefExoticComponent<Pick<ITableProps<Record<string, unknown>>, "onChange" | "loading" | "data" | "columns" | "total" | "renderHeaderLeft" | "renderHeaderRight" | "onRowSelected" | "loadMore" | "hasNextPage" | "sortable" | "defaultSort" | "resizeColumn" | "sortDirections" | "showHeader" | "innerScroll"> & React.RefAttributes<unknown>>;
|
|
4
|
+
export default _default;
|
package/es/Table/index.js
CHANGED
|
@@ -24,31 +24,28 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
24
24
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
25
25
|
|
|
26
26
|
/// <reference types ='./react-table-config' />
|
|
27
|
-
import
|
|
28
|
-
import { useTable, useBlockLayout, useRowSelect, useSortBy, useResizeColumns } from 'react-table';
|
|
29
|
-
import usePrefixCls from '../_utils/hooks/usePrefixCls';
|
|
30
|
-
import { FixedSizeList } from 'react-window';
|
|
31
|
-
import InfiniteLoader from 'react-window-infinite-loader';
|
|
27
|
+
import _ from 'lodash';
|
|
32
28
|
import classnames from 'classnames';
|
|
33
29
|
import Icon from '../Icon';
|
|
30
|
+
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
31
|
+
import usePrefixCls from '../_utils/hooks/usePrefixCls';
|
|
32
|
+
import InfiniteScroll from 'react-infinite-scroll-component';
|
|
34
33
|
import Empty from '../Empty';
|
|
35
|
-
import
|
|
36
|
-
var DEFAULT_ROW_HEIGHT = 40;
|
|
34
|
+
import { useTable, useBlockLayout, useRowSelect, useSortBy, useResizeColumns } from 'react-table';
|
|
37
35
|
var ARRAY_FIRST_INDEX = 0;
|
|
38
36
|
var DEFAULT_ROW_WIDTH = 0;
|
|
39
37
|
var DEFAULT_BODY_HEIGHT = 0;
|
|
40
38
|
|
|
41
|
-
function Table(_ref) {
|
|
39
|
+
function Table(_ref, ref) {
|
|
42
40
|
var columns = _ref.columns,
|
|
43
41
|
data = _ref.data,
|
|
44
42
|
total = _ref.total,
|
|
45
43
|
renderHeaderLeft = _ref.renderHeaderLeft,
|
|
46
44
|
renderHeaderRight = _ref.renderHeaderRight,
|
|
47
45
|
onRowSelected = _ref.onRowSelected,
|
|
48
|
-
|
|
49
|
-
loadMore = _ref$loadMore === void 0 ? function () {} : _ref$loadMore,
|
|
50
|
-
hasNextPage = _ref.hasNextPage,
|
|
46
|
+
loadMore = _ref.loadMore,
|
|
51
47
|
loading = _ref.loading,
|
|
48
|
+
hasNextPage = _ref.hasNextPage,
|
|
52
49
|
_ref$sortable = _ref.sortable,
|
|
53
50
|
sortable = _ref$sortable === void 0 ? false : _ref$sortable,
|
|
54
51
|
defaultSort = _ref.defaultSort,
|
|
@@ -58,28 +55,64 @@ function Table(_ref) {
|
|
|
58
55
|
_ref$showHeader = _ref.showHeader,
|
|
59
56
|
showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
|
|
60
57
|
_ref$onChange = _ref.onChange,
|
|
61
|
-
onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange
|
|
58
|
+
onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
|
|
59
|
+
_ref$innerScroll = _ref.innerScroll,
|
|
60
|
+
innerScroll = _ref$innerScroll === void 0 ? false : _ref$innerScroll;
|
|
62
61
|
|
|
63
62
|
var _React$useState = React.useState(null),
|
|
64
63
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
65
64
|
selectedRowId = _React$useState2[0],
|
|
66
65
|
setSelectedRowId = _React$useState2[1];
|
|
67
66
|
|
|
68
|
-
var
|
|
67
|
+
var tableBodyListRef = useRef(null);
|
|
68
|
+
var tableRef = useRef(null);
|
|
69
69
|
|
|
70
70
|
var _useState = useState(DEFAULT_BODY_HEIGHT),
|
|
71
71
|
_useState2 = _slicedToArray(_useState, 2),
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
tableClientWidth = _useState2[0],
|
|
73
|
+
setTableClientWidth = _useState2[1];
|
|
74
74
|
|
|
75
|
+
var RANDOM_ID = "INNER_SCROLL_ID_".concat(Math.random());
|
|
75
76
|
useEffect(function () {
|
|
76
|
-
if (
|
|
77
|
-
|
|
77
|
+
if (tableRef.current) {
|
|
78
|
+
setTableClientWidth(tableRef.current.clientWidth);
|
|
78
79
|
}
|
|
79
80
|
}, []);
|
|
81
|
+
var initialColumnsWidthMap = useMemo(function () {
|
|
82
|
+
var map = new Map();
|
|
83
|
+
|
|
84
|
+
if (tableClientWidth !== DEFAULT_BODY_HEIGHT) {
|
|
85
|
+
var noGivenColumns = 0;
|
|
86
|
+
var givenColumnsTotalWidth = 0;
|
|
87
|
+
columns.forEach(function (column) {
|
|
88
|
+
if (column.width) {
|
|
89
|
+
map.set(column.dataIndex, column.width);
|
|
90
|
+
givenColumnsTotalWidth += column.width;
|
|
91
|
+
} else {
|
|
92
|
+
noGivenColumns += 1;
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
var averageWidth = (tableClientWidth - givenColumnsTotalWidth) / noGivenColumns;
|
|
96
|
+
return {
|
|
97
|
+
columnMap: map,
|
|
98
|
+
averageWidth: averageWidth
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
columns.forEach(function (column) {
|
|
103
|
+
if (column.width) {
|
|
104
|
+
map.set(column.dataIndex, column.width);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
columnMap: map,
|
|
109
|
+
averageWidth: DEFAULT_ROW_WIDTH
|
|
110
|
+
};
|
|
111
|
+
}, [columns, tableClientWidth]);
|
|
80
112
|
var newColumns = useMemo(function () {
|
|
81
113
|
return columns.map(function (column) {
|
|
82
114
|
return _objectSpread(_objectSpread({}, column), {}, {
|
|
115
|
+
width: initialColumnsWidthMap.columnMap.get(column.dataIndex) || initialColumnsWidthMap.averageWidth,
|
|
83
116
|
Header: column.title,
|
|
84
117
|
disableSortBy: !sortable || typeof column.sorter === 'boolean',
|
|
85
118
|
accessor: column.dataIndex,
|
|
@@ -90,7 +123,7 @@ function Table(_ref) {
|
|
|
90
123
|
}
|
|
91
124
|
});
|
|
92
125
|
});
|
|
93
|
-
}, [columns, sortable]);
|
|
126
|
+
}, [columns, sortable, initialColumnsWidthMap]);
|
|
94
127
|
|
|
95
128
|
var getInitialSortDirection = function getInitialSortDirection() {
|
|
96
129
|
if (defaultSort && defaultSort.id) {
|
|
@@ -115,13 +148,29 @@ function Table(_ref) {
|
|
|
115
148
|
sortDirection = _React$useState4[0],
|
|
116
149
|
setSortDirection = _React$useState4[1];
|
|
117
150
|
|
|
151
|
+
var getInitSortBy = function getInitSortBy() {
|
|
152
|
+
if (!(sortDirection === null || sortDirection === void 0 ? void 0 : sortDirection.id)) {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
var sortColumn = newColumns.find(function (column) {
|
|
157
|
+
return column.accessor === sortDirection.id;
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
if (sortColumn === null || sortColumn === void 0 ? void 0 : sortColumn.sorter) {
|
|
161
|
+
return [];
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return [sortDirection];
|
|
165
|
+
};
|
|
166
|
+
|
|
118
167
|
var _useTable = useTable({
|
|
119
168
|
columns: newColumns,
|
|
120
169
|
data: data,
|
|
121
170
|
disableMultiSort: true,
|
|
122
171
|
disableSortBy: !sortable,
|
|
123
172
|
initialState: {
|
|
124
|
-
sortBy:
|
|
173
|
+
sortBy: getInitSortBy()
|
|
125
174
|
}
|
|
126
175
|
}, useBlockLayout, useSortBy, useRowSelect, useResizeColumns),
|
|
127
176
|
getTableProps = _useTable.getTableProps,
|
|
@@ -129,7 +178,8 @@ function Table(_ref) {
|
|
|
129
178
|
headerGroups = _useTable.headerGroups,
|
|
130
179
|
rows = _useTable.rows,
|
|
131
180
|
prepareRow = _useTable.prepareRow,
|
|
132
|
-
setSortBy = _useTable.setSortBy
|
|
181
|
+
setSortBy = _useTable.setSortBy,
|
|
182
|
+
totalColumnsWidth = _useTable.totalColumnsWidth;
|
|
133
183
|
|
|
134
184
|
var theadRowWidthRef = React.useRef(DEFAULT_ROW_WIDTH);
|
|
135
185
|
var prefixCls = usePrefixCls('block-table');
|
|
@@ -141,48 +191,6 @@ function Table(_ref) {
|
|
|
141
191
|
setSelectedRowId(row.id);
|
|
142
192
|
onRowSelected(row.original);
|
|
143
193
|
}, [onRowSelected]);
|
|
144
|
-
var itemCount = hasNextPage ? data.length + 1 : data.length;
|
|
145
|
-
var loadMoreItems = loading ? function () {} : loadMore;
|
|
146
|
-
|
|
147
|
-
var isItemLoaded = function isItemLoaded(index) {
|
|
148
|
-
return !hasNextPage || index < data.length;
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
var RenderRow = function RenderRow(_ref3) {
|
|
152
|
-
var index = _ref3.index,
|
|
153
|
-
style = _ref3.style;
|
|
154
|
-
|
|
155
|
-
if (!isItemLoaded(index)) {
|
|
156
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
157
|
-
style: style,
|
|
158
|
-
className: classnames("".concat(prefixCls, "-loading"))
|
|
159
|
-
}, /*#__PURE__*/React.createElement(Icon, {
|
|
160
|
-
type: "waiting",
|
|
161
|
-
size: 16
|
|
162
|
-
}), "Loading");
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
var row = rows[index];
|
|
166
|
-
prepareRow(row);
|
|
167
|
-
|
|
168
|
-
var _row$getRowProps = row.getRowProps(),
|
|
169
|
-
rowStyle = _row$getRowProps.style,
|
|
170
|
-
rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
|
|
171
|
-
|
|
172
|
-
return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
|
|
173
|
-
style: _objectSpread(_objectSpread(_objectSpread({}, style), rowStyle), {}, {
|
|
174
|
-
width: resizeColumn ? style === null || style === void 0 ? void 0 : style.width : '100%'
|
|
175
|
-
}),
|
|
176
|
-
className: classnames("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
|
|
177
|
-
onClick: function onClick() {
|
|
178
|
-
return onRowClick(row);
|
|
179
|
-
}
|
|
180
|
-
}), row.cells.map(function (cell) {
|
|
181
|
-
return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
|
|
182
|
-
className: classnames("".concat(prefixCls, "-cell"))
|
|
183
|
-
}), cell.render('Cell'));
|
|
184
|
-
}));
|
|
185
|
-
};
|
|
186
194
|
|
|
187
195
|
var renderHeader = function renderHeader(len) {
|
|
188
196
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -274,8 +282,8 @@ function Table(_ref) {
|
|
|
274
282
|
return column.getHeaderProps();
|
|
275
283
|
};
|
|
276
284
|
|
|
277
|
-
var SortIcons = function SortIcons(
|
|
278
|
-
var id =
|
|
285
|
+
var SortIcons = function SortIcons(_ref3) {
|
|
286
|
+
var id = _ref3.id;
|
|
279
287
|
var currentSortId = sortDirection.id,
|
|
280
288
|
desc = sortDirection.desc;
|
|
281
289
|
|
|
@@ -294,44 +302,79 @@ function Table(_ref) {
|
|
|
294
302
|
});
|
|
295
303
|
};
|
|
296
304
|
|
|
305
|
+
var scrollToTop = function scrollToTop() {
|
|
306
|
+
var INITIAL_OFFSET_TOP = 0;
|
|
307
|
+
|
|
308
|
+
if (tableBodyListRef && tableBodyListRef.current) {
|
|
309
|
+
tableBodyListRef.current.scrollTop = INITIAL_OFFSET_TOP;
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
React.useImperativeHandle(ref, function () {
|
|
314
|
+
return {
|
|
315
|
+
backToTop: function backToTop() {
|
|
316
|
+
scrollToTop();
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
});
|
|
320
|
+
var LoadingNode = /*#__PURE__*/React.createElement("div", {
|
|
321
|
+
className: classnames("".concat(prefixCls, "-loading"))
|
|
322
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
323
|
+
type: "waiting",
|
|
324
|
+
size: 16
|
|
325
|
+
}), "Loading");
|
|
326
|
+
|
|
297
327
|
var renderTableBody = function renderTableBody() {
|
|
328
|
+
if (loading && !rows.length) {
|
|
329
|
+
return LoadingNode;
|
|
330
|
+
}
|
|
331
|
+
|
|
298
332
|
if (!loading && !rows.length) {
|
|
299
333
|
return /*#__PURE__*/React.createElement(Empty, {
|
|
300
334
|
description: "\u5F53\u524D\u65E0\u6570\u636E"
|
|
301
335
|
});
|
|
302
336
|
}
|
|
303
337
|
|
|
304
|
-
|
|
305
|
-
return
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
},
|
|
338
|
+
var renderRowList = function renderRowList() {
|
|
339
|
+
return data.map(function (item, index) {
|
|
340
|
+
var row = rows[index];
|
|
341
|
+
prepareRow(row);
|
|
342
|
+
|
|
343
|
+
var _row$getRowProps = row.getRowProps(),
|
|
344
|
+
rowStyle = _row$getRowProps.style,
|
|
345
|
+
rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
|
|
346
|
+
|
|
347
|
+
return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
|
|
348
|
+
style: _objectSpread({}, rowStyle),
|
|
349
|
+
className: classnames("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
|
|
350
|
+
onClick: function onClick() {
|
|
351
|
+
return onRowClick(row);
|
|
352
|
+
},
|
|
353
|
+
key: row.id
|
|
354
|
+
}), row.cells.map(function (cell) {
|
|
355
|
+
return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
|
|
356
|
+
className: classnames("".concat(prefixCls, "-cell"))
|
|
357
|
+
}), cell.render('Cell'));
|
|
358
|
+
}));
|
|
321
359
|
});
|
|
322
|
-
}
|
|
360
|
+
};
|
|
323
361
|
|
|
324
|
-
return /*#__PURE__*/React.createElement(
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
362
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
363
|
+
className: classnames("".concat(prefixCls, "-list"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
364
|
+
id: RANDOM_ID,
|
|
365
|
+
ref: tableBodyListRef
|
|
366
|
+
}, innerScroll && loadMore ? /*#__PURE__*/React.createElement(InfiniteScroll, {
|
|
367
|
+
dataLength: rows.length,
|
|
368
|
+
next: loadMore,
|
|
369
|
+
hasMore: !!hasNextPage,
|
|
370
|
+
loader: LoadingNode,
|
|
371
|
+
scrollableTarget: RANDOM_ID
|
|
372
|
+
}, renderRowList()) : renderRowList());
|
|
331
373
|
};
|
|
332
374
|
|
|
333
375
|
return /*#__PURE__*/React.createElement("div", {
|
|
334
|
-
className: prefixCls
|
|
376
|
+
className: prefixCls,
|
|
377
|
+
ref: tableRef
|
|
335
378
|
}, showHeader && renderHeader(data.length), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, getTableProps()), {}, {
|
|
336
379
|
className: classnames("".concat(prefixCls, "-table-wrap"), _defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
|
|
337
380
|
}), /*#__PURE__*/React.createElement("div", {
|
|
@@ -349,21 +392,28 @@ function Table(_ref) {
|
|
|
349
392
|
className: "".concat(prefixCls, "-row")
|
|
350
393
|
}), headerGroup.headers.map(function (column) {
|
|
351
394
|
var barPorps = resizeColumn ? column.getResizerProps() : {};
|
|
352
|
-
return /*#__PURE__*/React.createElement("div",
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
}, getHeaderProps(column)), {}, {
|
|
395
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
396
|
+
className: classnames(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell")),
|
|
397
|
+
style: getHeaderProps(column).style,
|
|
356
398
|
key: column.id
|
|
357
|
-
}
|
|
358
|
-
className:
|
|
359
|
-
})),
|
|
399
|
+
}, /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({
|
|
400
|
+
className: "".concat(prefixCls, "-cell-content")
|
|
401
|
+
}, getHeaderProps(column)), {}, {
|
|
402
|
+
style: {
|
|
403
|
+
width: '100%'
|
|
404
|
+
}
|
|
405
|
+
}), column.render('Header'), /*#__PURE__*/React.createElement(SortIcons, {
|
|
360
406
|
id: column.id
|
|
361
|
-
}))
|
|
407
|
+
})), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, barPorps), {}, {
|
|
408
|
+
className: classnames(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
|
|
409
|
+
})));
|
|
362
410
|
}));
|
|
363
411
|
})), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, getTableBodyProps()), {}, {
|
|
364
|
-
className: classnames("".concat(prefixCls, "-tbody")),
|
|
365
|
-
|
|
412
|
+
className: classnames("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
413
|
+
style: {
|
|
414
|
+
width: totalColumnsWidth
|
|
415
|
+
}
|
|
366
416
|
}), renderTableBody())));
|
|
367
417
|
}
|
|
368
418
|
|
|
369
|
-
export default Table;
|
|
419
|
+
export default /*#__PURE__*/React.forwardRef(Table);
|
package/es/Table/interface.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export interface ITableProps<T extends object> {
|
|
|
21
21
|
data: T[];
|
|
22
22
|
total?: number;
|
|
23
23
|
onRowSelected?: (row: T) => void;
|
|
24
|
-
loadMore?: (
|
|
24
|
+
loadMore?: () => void | Promise<void>;
|
|
25
25
|
hasNextPage?: boolean;
|
|
26
26
|
loading?: boolean;
|
|
27
27
|
renderHeaderLeft?: () => React.ReactNode;
|
|
@@ -32,4 +32,6 @@ export interface ITableProps<T extends object> {
|
|
|
32
32
|
sortDirections?: Array<'ascend' | 'descend'>;
|
|
33
33
|
resizeColumn?: boolean;
|
|
34
34
|
showHeader?: boolean;
|
|
35
|
+
innerScroll?: boolean;
|
|
36
|
+
ref?: React.RefObject<unknown>;
|
|
35
37
|
}
|
|
@@ -12,23 +12,33 @@
|
|
|
12
12
|
overflow: hidden;
|
|
13
13
|
user-select: none;
|
|
14
14
|
|
|
15
|
+
&-page-loading {
|
|
16
|
+
opacity: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
&-table-wrap {
|
|
16
20
|
display: flex;
|
|
17
21
|
flex: 1;
|
|
18
22
|
flex-direction: column;
|
|
23
|
+
overflow: hidden;
|
|
19
24
|
}
|
|
20
25
|
|
|
21
26
|
&-cell {
|
|
22
27
|
flex-grow: 1;
|
|
23
|
-
height:
|
|
24
|
-
|
|
25
|
-
overflow: hidden;
|
|
28
|
+
height: unset;
|
|
29
|
+
min-height: @table-row-height;
|
|
26
30
|
color: @NL0;
|
|
27
31
|
line-height: @table-row-height;
|
|
28
|
-
white-space: nowrap;
|
|
29
32
|
text-align: left;
|
|
30
|
-
text-overflow: ellipsis;
|
|
31
33
|
border-bottom: 1px solid @NL95;
|
|
34
|
+
word-break: break-all;
|
|
35
|
+
display: flex;
|
|
36
|
+
padding: 0 12px;
|
|
37
|
+
align-items: center;
|
|
38
|
+
|
|
39
|
+
&-content {
|
|
40
|
+
flex: 1;
|
|
41
|
+
}
|
|
32
42
|
}
|
|
33
43
|
|
|
34
44
|
&-row {
|
|
@@ -51,12 +61,19 @@
|
|
|
51
61
|
right: 0;
|
|
52
62
|
z-index: 1;
|
|
53
63
|
display: inline-block;
|
|
54
|
-
width:
|
|
64
|
+
width: 12px;
|
|
55
65
|
height: 12px;
|
|
56
|
-
background: blue;
|
|
57
|
-
background-color: @NL95;
|
|
58
66
|
transform: translateY(-50%);
|
|
59
67
|
touch-action: none;
|
|
68
|
+
padding-left: 5px;
|
|
69
|
+
|
|
70
|
+
&::after {
|
|
71
|
+
display: block;
|
|
72
|
+
height: 100%;
|
|
73
|
+
width: 1px;
|
|
74
|
+
content: '';
|
|
75
|
+
background-color: @NL95;
|
|
76
|
+
}
|
|
60
77
|
}
|
|
61
78
|
|
|
62
79
|
&:last-child {
|
|
@@ -73,6 +90,8 @@
|
|
|
73
90
|
|
|
74
91
|
.ant-empty {
|
|
75
92
|
padding-top: 80px;
|
|
93
|
+
display: flex;
|
|
94
|
+
justify-content: center;
|
|
76
95
|
}
|
|
77
96
|
|
|
78
97
|
.ant-block-table-row {
|
|
@@ -125,9 +144,18 @@
|
|
|
125
144
|
}
|
|
126
145
|
}
|
|
127
146
|
|
|
128
|
-
|
|
147
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
148
|
+
&-list&-innerScroll {
|
|
149
|
+
height: 100%;
|
|
129
150
|
overflow: overlay !important;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// 当出现多行的时候 会顶出一个滚动条 通过复写三方库的样式覆盖
|
|
154
|
+
&-list&-canNotInnerScroll {
|
|
155
|
+
overflow: hidden !important;
|
|
156
|
+
}
|
|
130
157
|
|
|
158
|
+
&-list {
|
|
131
159
|
&::-webkit-scrollbar-thumb {
|
|
132
160
|
background: @NL90;
|
|
133
161
|
background-clip: padding-box;
|
package/lib/Table/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import { ITableProps } from './interface';
|
|
3
|
-
declare
|
|
4
|
-
export default
|
|
3
|
+
declare const _default: React.ForwardRefExoticComponent<Pick<ITableProps<Record<string, unknown>>, "onChange" | "loading" | "data" | "columns" | "total" | "renderHeaderLeft" | "renderHeaderRight" | "onRowSelected" | "loadMore" | "hasNextPage" | "sortable" | "defaultSort" | "resizeColumn" | "sortDirections" | "showHeader" | "innerScroll"> & React.RefAttributes<unknown>>;
|
|
4
|
+
export default _default;
|
package/lib/Table/index.js
CHANGED
|
@@ -7,33 +7,31 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var _reactTable = require("react-table");
|
|
10
|
+
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
11
|
|
|
14
|
-
var
|
|
12
|
+
var _classnames7 = _interopRequireDefault(require("classnames"));
|
|
15
13
|
|
|
16
|
-
var
|
|
14
|
+
var _Icon = _interopRequireDefault(require("../Icon"));
|
|
17
15
|
|
|
18
|
-
var
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
17
|
|
|
20
|
-
var
|
|
18
|
+
var _usePrefixCls = _interopRequireDefault(require("../_utils/hooks/usePrefixCls"));
|
|
21
19
|
|
|
22
|
-
var
|
|
20
|
+
var _reactInfiniteScrollComponent = _interopRequireDefault(require("react-infinite-scroll-component"));
|
|
23
21
|
|
|
24
22
|
var _Empty = _interopRequireDefault(require("../Empty"));
|
|
25
23
|
|
|
26
|
-
var
|
|
24
|
+
var _reactTable = require("react-table");
|
|
27
25
|
|
|
28
26
|
var _excluded = ["style"],
|
|
29
27
|
_excluded2 = ["style"];
|
|
30
28
|
|
|
31
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
32
|
-
|
|
33
29
|
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); }
|
|
34
30
|
|
|
35
31
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
36
32
|
|
|
33
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
34
|
+
|
|
37
35
|
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; }
|
|
38
36
|
|
|
39
37
|
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; }
|
|
@@ -56,22 +54,20 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
|
|
|
56
54
|
|
|
57
55
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
58
56
|
|
|
59
|
-
var DEFAULT_ROW_HEIGHT = 40;
|
|
60
57
|
var ARRAY_FIRST_INDEX = 0;
|
|
61
58
|
var DEFAULT_ROW_WIDTH = 0;
|
|
62
59
|
var DEFAULT_BODY_HEIGHT = 0;
|
|
63
60
|
|
|
64
|
-
function Table(_ref) {
|
|
61
|
+
function Table(_ref, ref) {
|
|
65
62
|
var columns = _ref.columns,
|
|
66
63
|
data = _ref.data,
|
|
67
64
|
total = _ref.total,
|
|
68
65
|
renderHeaderLeft = _ref.renderHeaderLeft,
|
|
69
66
|
renderHeaderRight = _ref.renderHeaderRight,
|
|
70
67
|
onRowSelected = _ref.onRowSelected,
|
|
71
|
-
|
|
72
|
-
loadMore = _ref$loadMore === void 0 ? function () {} : _ref$loadMore,
|
|
73
|
-
hasNextPage = _ref.hasNextPage,
|
|
68
|
+
loadMore = _ref.loadMore,
|
|
74
69
|
loading = _ref.loading,
|
|
70
|
+
hasNextPage = _ref.hasNextPage,
|
|
75
71
|
_ref$sortable = _ref.sortable,
|
|
76
72
|
sortable = _ref$sortable === void 0 ? false : _ref$sortable,
|
|
77
73
|
defaultSort = _ref.defaultSort,
|
|
@@ -81,28 +77,64 @@ function Table(_ref) {
|
|
|
81
77
|
_ref$showHeader = _ref.showHeader,
|
|
82
78
|
showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
|
|
83
79
|
_ref$onChange = _ref.onChange,
|
|
84
|
-
onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange
|
|
80
|
+
onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
|
|
81
|
+
_ref$innerScroll = _ref.innerScroll,
|
|
82
|
+
innerScroll = _ref$innerScroll === void 0 ? false : _ref$innerScroll;
|
|
85
83
|
|
|
86
84
|
var _React$useState = _react.default.useState(null),
|
|
87
85
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
88
86
|
selectedRowId = _React$useState2[0],
|
|
89
87
|
setSelectedRowId = _React$useState2[1];
|
|
90
88
|
|
|
91
|
-
var
|
|
89
|
+
var tableBodyListRef = (0, _react.useRef)(null);
|
|
90
|
+
var tableRef = (0, _react.useRef)(null);
|
|
92
91
|
|
|
93
92
|
var _useState = (0, _react.useState)(DEFAULT_BODY_HEIGHT),
|
|
94
93
|
_useState2 = _slicedToArray(_useState, 2),
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
tableClientWidth = _useState2[0],
|
|
95
|
+
setTableClientWidth = _useState2[1];
|
|
97
96
|
|
|
97
|
+
var RANDOM_ID = "INNER_SCROLL_ID_".concat(Math.random());
|
|
98
98
|
(0, _react.useEffect)(function () {
|
|
99
|
-
if (
|
|
100
|
-
|
|
99
|
+
if (tableRef.current) {
|
|
100
|
+
setTableClientWidth(tableRef.current.clientWidth);
|
|
101
101
|
}
|
|
102
102
|
}, []);
|
|
103
|
+
var initialColumnsWidthMap = (0, _react.useMemo)(function () {
|
|
104
|
+
var map = new Map();
|
|
105
|
+
|
|
106
|
+
if (tableClientWidth !== DEFAULT_BODY_HEIGHT) {
|
|
107
|
+
var noGivenColumns = 0;
|
|
108
|
+
var givenColumnsTotalWidth = 0;
|
|
109
|
+
columns.forEach(function (column) {
|
|
110
|
+
if (column.width) {
|
|
111
|
+
map.set(column.dataIndex, column.width);
|
|
112
|
+
givenColumnsTotalWidth += column.width;
|
|
113
|
+
} else {
|
|
114
|
+
noGivenColumns += 1;
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
var averageWidth = (tableClientWidth - givenColumnsTotalWidth) / noGivenColumns;
|
|
118
|
+
return {
|
|
119
|
+
columnMap: map,
|
|
120
|
+
averageWidth: averageWidth
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
columns.forEach(function (column) {
|
|
125
|
+
if (column.width) {
|
|
126
|
+
map.set(column.dataIndex, column.width);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
return {
|
|
130
|
+
columnMap: map,
|
|
131
|
+
averageWidth: DEFAULT_ROW_WIDTH
|
|
132
|
+
};
|
|
133
|
+
}, [columns, tableClientWidth]);
|
|
103
134
|
var newColumns = (0, _react.useMemo)(function () {
|
|
104
135
|
return columns.map(function (column) {
|
|
105
136
|
return _objectSpread(_objectSpread({}, column), {}, {
|
|
137
|
+
width: initialColumnsWidthMap.columnMap.get(column.dataIndex) || initialColumnsWidthMap.averageWidth,
|
|
106
138
|
Header: column.title,
|
|
107
139
|
disableSortBy: !sortable || typeof column.sorter === 'boolean',
|
|
108
140
|
accessor: column.dataIndex,
|
|
@@ -113,7 +145,7 @@ function Table(_ref) {
|
|
|
113
145
|
}
|
|
114
146
|
});
|
|
115
147
|
});
|
|
116
|
-
}, [columns, sortable]);
|
|
148
|
+
}, [columns, sortable, initialColumnsWidthMap]);
|
|
117
149
|
|
|
118
150
|
var getInitialSortDirection = function getInitialSortDirection() {
|
|
119
151
|
if (defaultSort && defaultSort.id) {
|
|
@@ -138,13 +170,29 @@ function Table(_ref) {
|
|
|
138
170
|
sortDirection = _React$useState4[0],
|
|
139
171
|
setSortDirection = _React$useState4[1];
|
|
140
172
|
|
|
173
|
+
var getInitSortBy = function getInitSortBy() {
|
|
174
|
+
if (!(sortDirection === null || sortDirection === void 0 ? void 0 : sortDirection.id)) {
|
|
175
|
+
return [];
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
var sortColumn = newColumns.find(function (column) {
|
|
179
|
+
return column.accessor === sortDirection.id;
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
if (sortColumn === null || sortColumn === void 0 ? void 0 : sortColumn.sorter) {
|
|
183
|
+
return [];
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
return [sortDirection];
|
|
187
|
+
};
|
|
188
|
+
|
|
141
189
|
var _useTable = (0, _reactTable.useTable)({
|
|
142
190
|
columns: newColumns,
|
|
143
191
|
data: data,
|
|
144
192
|
disableMultiSort: true,
|
|
145
193
|
disableSortBy: !sortable,
|
|
146
194
|
initialState: {
|
|
147
|
-
sortBy:
|
|
195
|
+
sortBy: getInitSortBy()
|
|
148
196
|
}
|
|
149
197
|
}, _reactTable.useBlockLayout, _reactTable.useSortBy, _reactTable.useRowSelect, _reactTable.useResizeColumns),
|
|
150
198
|
getTableProps = _useTable.getTableProps,
|
|
@@ -152,7 +200,8 @@ function Table(_ref) {
|
|
|
152
200
|
headerGroups = _useTable.headerGroups,
|
|
153
201
|
rows = _useTable.rows,
|
|
154
202
|
prepareRow = _useTable.prepareRow,
|
|
155
|
-
setSortBy = _useTable.setSortBy
|
|
203
|
+
setSortBy = _useTable.setSortBy,
|
|
204
|
+
totalColumnsWidth = _useTable.totalColumnsWidth;
|
|
156
205
|
|
|
157
206
|
var theadRowWidthRef = _react.default.useRef(DEFAULT_ROW_WIDTH);
|
|
158
207
|
|
|
@@ -165,56 +214,14 @@ function Table(_ref) {
|
|
|
165
214
|
setSelectedRowId(row.id);
|
|
166
215
|
onRowSelected(row.original);
|
|
167
216
|
}, [onRowSelected]);
|
|
168
|
-
var itemCount = hasNextPage ? data.length + 1 : data.length;
|
|
169
|
-
var loadMoreItems = loading ? function () {} : loadMore;
|
|
170
|
-
|
|
171
|
-
var isItemLoaded = function isItemLoaded(index) {
|
|
172
|
-
return !hasNextPage || index < data.length;
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
var RenderRow = function RenderRow(_ref3) {
|
|
176
|
-
var index = _ref3.index,
|
|
177
|
-
style = _ref3.style;
|
|
178
|
-
|
|
179
|
-
if (!isItemLoaded(index)) {
|
|
180
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
181
|
-
style: style,
|
|
182
|
-
className: (0, _classnames5.default)("".concat(prefixCls, "-loading"))
|
|
183
|
-
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
184
|
-
type: "waiting",
|
|
185
|
-
size: 16
|
|
186
|
-
}), "Loading");
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
var row = rows[index];
|
|
190
|
-
prepareRow(row);
|
|
191
|
-
|
|
192
|
-
var _row$getRowProps = row.getRowProps(),
|
|
193
|
-
rowStyle = _row$getRowProps.style,
|
|
194
|
-
rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
|
|
195
|
-
|
|
196
|
-
return /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
|
|
197
|
-
style: _objectSpread(_objectSpread(_objectSpread({}, style), rowStyle), {}, {
|
|
198
|
-
width: resizeColumn ? style === null || style === void 0 ? void 0 : style.width : '100%'
|
|
199
|
-
}),
|
|
200
|
-
className: (0, _classnames5.default)("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
|
|
201
|
-
onClick: function onClick() {
|
|
202
|
-
return onRowClick(row);
|
|
203
|
-
}
|
|
204
|
-
}), row.cells.map(function (cell) {
|
|
205
|
-
return /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
|
|
206
|
-
className: (0, _classnames5.default)("".concat(prefixCls, "-cell"))
|
|
207
|
-
}), cell.render('Cell'));
|
|
208
|
-
}));
|
|
209
|
-
};
|
|
210
217
|
|
|
211
218
|
var renderHeader = function renderHeader(len) {
|
|
212
219
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
213
|
-
className: (0,
|
|
220
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-header"))
|
|
214
221
|
}, renderHeaderLeft ? renderHeaderLeft() : /*#__PURE__*/_react.default.createElement("span", {
|
|
215
|
-
className: (0,
|
|
222
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-header-left"))
|
|
216
223
|
}, "\u5171\u8BA1", total || len, "\u6761"), /*#__PURE__*/_react.default.createElement("div", {
|
|
217
|
-
className: (0,
|
|
224
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-header-right"))
|
|
218
225
|
}, renderHeaderRight ? renderHeaderRight() : null));
|
|
219
226
|
};
|
|
220
227
|
|
|
@@ -298,8 +305,8 @@ function Table(_ref) {
|
|
|
298
305
|
return column.getHeaderProps();
|
|
299
306
|
};
|
|
300
307
|
|
|
301
|
-
var SortIcons = function SortIcons(
|
|
302
|
-
var id =
|
|
308
|
+
var SortIcons = function SortIcons(_ref3) {
|
|
309
|
+
var id = _ref3.id;
|
|
303
310
|
var currentSortId = sortDirection.id,
|
|
304
311
|
desc = sortDirection.desc;
|
|
305
312
|
|
|
@@ -318,46 +325,82 @@ function Table(_ref) {
|
|
|
318
325
|
});
|
|
319
326
|
};
|
|
320
327
|
|
|
328
|
+
var scrollToTop = function scrollToTop() {
|
|
329
|
+
var INITIAL_OFFSET_TOP = 0;
|
|
330
|
+
|
|
331
|
+
if (tableBodyListRef && tableBodyListRef.current) {
|
|
332
|
+
tableBodyListRef.current.scrollTop = INITIAL_OFFSET_TOP;
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
|
|
336
|
+
_react.default.useImperativeHandle(ref, function () {
|
|
337
|
+
return {
|
|
338
|
+
backToTop: function backToTop() {
|
|
339
|
+
scrollToTop();
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
});
|
|
343
|
+
|
|
344
|
+
var LoadingNode = /*#__PURE__*/_react.default.createElement("div", {
|
|
345
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-loading"))
|
|
346
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
347
|
+
type: "waiting",
|
|
348
|
+
size: 16
|
|
349
|
+
}), "Loading");
|
|
350
|
+
|
|
321
351
|
var renderTableBody = function renderTableBody() {
|
|
352
|
+
if (loading && !rows.length) {
|
|
353
|
+
return LoadingNode;
|
|
354
|
+
}
|
|
355
|
+
|
|
322
356
|
if (!loading && !rows.length) {
|
|
323
357
|
return /*#__PURE__*/_react.default.createElement(_Empty.default, {
|
|
324
358
|
description: "\u5F53\u524D\u65E0\u6570\u636E"
|
|
325
359
|
});
|
|
326
360
|
}
|
|
327
361
|
|
|
328
|
-
|
|
329
|
-
return
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
},
|
|
362
|
+
var renderRowList = function renderRowList() {
|
|
363
|
+
return data.map(function (item, index) {
|
|
364
|
+
var row = rows[index];
|
|
365
|
+
prepareRow(row);
|
|
366
|
+
|
|
367
|
+
var _row$getRowProps = row.getRowProps(),
|
|
368
|
+
rowStyle = _row$getRowProps.style,
|
|
369
|
+
rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
|
|
370
|
+
|
|
371
|
+
return /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
|
|
372
|
+
style: _objectSpread({}, rowStyle),
|
|
373
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
|
|
374
|
+
onClick: function onClick() {
|
|
375
|
+
return onRowClick(row);
|
|
376
|
+
},
|
|
377
|
+
key: row.id
|
|
378
|
+
}), row.cells.map(function (cell) {
|
|
379
|
+
return /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
|
|
380
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-cell"))
|
|
381
|
+
}), cell.render('Cell'));
|
|
382
|
+
}));
|
|
345
383
|
});
|
|
346
|
-
}
|
|
384
|
+
};
|
|
347
385
|
|
|
348
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
386
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
387
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-list"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
388
|
+
id: RANDOM_ID,
|
|
389
|
+
ref: tableBodyListRef
|
|
390
|
+
}, innerScroll && loadMore ? /*#__PURE__*/_react.default.createElement(_reactInfiniteScrollComponent.default, {
|
|
391
|
+
dataLength: rows.length,
|
|
392
|
+
next: loadMore,
|
|
393
|
+
hasMore: !!hasNextPage,
|
|
394
|
+
loader: LoadingNode,
|
|
395
|
+
scrollableTarget: RANDOM_ID
|
|
396
|
+
}, renderRowList()) : renderRowList());
|
|
355
397
|
};
|
|
356
398
|
|
|
357
399
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
358
|
-
className: prefixCls
|
|
400
|
+
className: prefixCls,
|
|
401
|
+
ref: tableRef
|
|
359
402
|
}, showHeader && renderHeader(data.length), /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, getTableProps()), {}, {
|
|
360
|
-
className: (0,
|
|
403
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-table-wrap"), _defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
|
|
361
404
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
362
405
|
className: "".concat(prefixCls, "-thead")
|
|
363
406
|
}, headerGroups.map(function (headerGroup) {
|
|
@@ -373,22 +416,30 @@ function Table(_ref) {
|
|
|
373
416
|
className: "".concat(prefixCls, "-row")
|
|
374
417
|
}), headerGroup.headers.map(function (column) {
|
|
375
418
|
var barPorps = resizeColumn ? column.getResizerProps() : {};
|
|
376
|
-
return /*#__PURE__*/_react.default.createElement("div",
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
}, getHeaderProps(column)), {}, {
|
|
419
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
420
|
+
className: (0, _classnames7.default)(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell")),
|
|
421
|
+
style: getHeaderProps(column).style,
|
|
380
422
|
key: column.id
|
|
381
|
-
}
|
|
382
|
-
className:
|
|
383
|
-
})),
|
|
423
|
+
}, /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({
|
|
424
|
+
className: "".concat(prefixCls, "-cell-content")
|
|
425
|
+
}, getHeaderProps(column)), {}, {
|
|
426
|
+
style: {
|
|
427
|
+
width: '100%'
|
|
428
|
+
}
|
|
429
|
+
}), column.render('Header'), /*#__PURE__*/_react.default.createElement(SortIcons, {
|
|
384
430
|
id: column.id
|
|
385
|
-
}))
|
|
431
|
+
})), /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, barPorps), {}, {
|
|
432
|
+
className: (0, _classnames7.default)(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
|
|
433
|
+
})));
|
|
386
434
|
}));
|
|
387
435
|
})), /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, getTableBodyProps()), {}, {
|
|
388
|
-
className: (0,
|
|
389
|
-
|
|
436
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
437
|
+
style: {
|
|
438
|
+
width: totalColumnsWidth
|
|
439
|
+
}
|
|
390
440
|
}), renderTableBody())));
|
|
391
441
|
}
|
|
392
442
|
|
|
393
|
-
var _default = Table;
|
|
443
|
+
var _default = /*#__PURE__*/_react.default.forwardRef(Table);
|
|
444
|
+
|
|
394
445
|
exports.default = _default;
|
package/lib/Table/interface.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export interface ITableProps<T extends object> {
|
|
|
21
21
|
data: T[];
|
|
22
22
|
total?: number;
|
|
23
23
|
onRowSelected?: (row: T) => void;
|
|
24
|
-
loadMore?: (
|
|
24
|
+
loadMore?: () => void | Promise<void>;
|
|
25
25
|
hasNextPage?: boolean;
|
|
26
26
|
loading?: boolean;
|
|
27
27
|
renderHeaderLeft?: () => React.ReactNode;
|
|
@@ -32,4 +32,6 @@ export interface ITableProps<T extends object> {
|
|
|
32
32
|
sortDirections?: Array<'ascend' | 'descend'>;
|
|
33
33
|
resizeColumn?: boolean;
|
|
34
34
|
showHeader?: boolean;
|
|
35
|
+
innerScroll?: boolean;
|
|
36
|
+
ref?: React.RefObject<unknown>;
|
|
35
37
|
}
|
|
@@ -12,23 +12,33 @@
|
|
|
12
12
|
overflow: hidden;
|
|
13
13
|
user-select: none;
|
|
14
14
|
|
|
15
|
+
&-page-loading {
|
|
16
|
+
opacity: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
&-table-wrap {
|
|
16
20
|
display: flex;
|
|
17
21
|
flex: 1;
|
|
18
22
|
flex-direction: column;
|
|
23
|
+
overflow: hidden;
|
|
19
24
|
}
|
|
20
25
|
|
|
21
26
|
&-cell {
|
|
22
27
|
flex-grow: 1;
|
|
23
|
-
height:
|
|
24
|
-
|
|
25
|
-
overflow: hidden;
|
|
28
|
+
height: unset;
|
|
29
|
+
min-height: @table-row-height;
|
|
26
30
|
color: @NL0;
|
|
27
31
|
line-height: @table-row-height;
|
|
28
|
-
white-space: nowrap;
|
|
29
32
|
text-align: left;
|
|
30
|
-
text-overflow: ellipsis;
|
|
31
33
|
border-bottom: 1px solid @NL95;
|
|
34
|
+
word-break: break-all;
|
|
35
|
+
display: flex;
|
|
36
|
+
padding: 0 12px;
|
|
37
|
+
align-items: center;
|
|
38
|
+
|
|
39
|
+
&-content {
|
|
40
|
+
flex: 1;
|
|
41
|
+
}
|
|
32
42
|
}
|
|
33
43
|
|
|
34
44
|
&-row {
|
|
@@ -51,12 +61,19 @@
|
|
|
51
61
|
right: 0;
|
|
52
62
|
z-index: 1;
|
|
53
63
|
display: inline-block;
|
|
54
|
-
width:
|
|
64
|
+
width: 12px;
|
|
55
65
|
height: 12px;
|
|
56
|
-
background: blue;
|
|
57
|
-
background-color: @NL95;
|
|
58
66
|
transform: translateY(-50%);
|
|
59
67
|
touch-action: none;
|
|
68
|
+
padding-left: 5px;
|
|
69
|
+
|
|
70
|
+
&::after {
|
|
71
|
+
display: block;
|
|
72
|
+
height: 100%;
|
|
73
|
+
width: 1px;
|
|
74
|
+
content: '';
|
|
75
|
+
background-color: @NL95;
|
|
76
|
+
}
|
|
60
77
|
}
|
|
61
78
|
|
|
62
79
|
&:last-child {
|
|
@@ -73,6 +90,8 @@
|
|
|
73
90
|
|
|
74
91
|
.ant-empty {
|
|
75
92
|
padding-top: 80px;
|
|
93
|
+
display: flex;
|
|
94
|
+
justify-content: center;
|
|
76
95
|
}
|
|
77
96
|
|
|
78
97
|
.ant-block-table-row {
|
|
@@ -125,9 +144,18 @@
|
|
|
125
144
|
}
|
|
126
145
|
}
|
|
127
146
|
|
|
128
|
-
|
|
147
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
148
|
+
&-list&-innerScroll {
|
|
149
|
+
height: 100%;
|
|
129
150
|
overflow: overlay !important;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// 当出现多行的时候 会顶出一个滚动条 通过复写三方库的样式覆盖
|
|
154
|
+
&-list&-canNotInnerScroll {
|
|
155
|
+
overflow: hidden !important;
|
|
156
|
+
}
|
|
130
157
|
|
|
158
|
+
&-list {
|
|
131
159
|
&::-webkit-scrollbar-thumb {
|
|
132
160
|
background: @NL90;
|
|
133
161
|
background-clip: padding-box;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aloudata/aloudata-design",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.14",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"start": "dumi dev",
|
|
6
6
|
"docs:build": "dumi build",
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
"rc-overflow": "^1.2.3",
|
|
58
58
|
"rc-trigger": "^5.2.10",
|
|
59
59
|
"rc-virtual-list": "^3.4.2",
|
|
60
|
+
"react-infinite-scroll-component": "^6.1.0",
|
|
60
61
|
"react-table": "^7.7.0",
|
|
61
62
|
"react-window": "^1.8.6",
|
|
62
63
|
"react-window-infinite-loader": "^1.0.7"
|