@aloudata/aloudata-design 0.2.0-beta.12 → 0.2.0-beta.15
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 +153 -101
- package/es/Table/interface.d.ts +4 -2
- package/es/Table/style/index.less +37 -9
- package/lib/Table/index.d.ts +3 -3
- package/lib/Table/index.js +163 -110
- package/lib/Table/interface.d.ts +4 -2
- 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,21 +24,19 @@ 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,
|
|
@@ -46,8 +44,8 @@ function Table(_ref) {
|
|
|
46
44
|
renderHeaderRight = _ref.renderHeaderRight,
|
|
47
45
|
onRowSelected = _ref.onRowSelected,
|
|
48
46
|
loadMore = _ref.loadMore,
|
|
49
|
-
hasNextPage = _ref.hasNextPage,
|
|
50
47
|
loading = _ref.loading,
|
|
48
|
+
hasNextPage = _ref.hasNextPage,
|
|
51
49
|
_ref$sortable = _ref.sortable,
|
|
52
50
|
sortable = _ref$sortable === void 0 ? false : _ref$sortable,
|
|
53
51
|
defaultSort = _ref.defaultSort,
|
|
@@ -57,29 +55,67 @@ function Table(_ref) {
|
|
|
57
55
|
_ref$showHeader = _ref.showHeader,
|
|
58
56
|
showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
|
|
59
57
|
_ref$onChange = _ref.onChange,
|
|
60
|
-
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;
|
|
61
61
|
|
|
62
62
|
var _React$useState = React.useState(null),
|
|
63
63
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
64
64
|
selectedRowId = _React$useState2[0],
|
|
65
65
|
setSelectedRowId = _React$useState2[1];
|
|
66
66
|
|
|
67
|
-
var
|
|
67
|
+
var tableBodyListRef = useRef(null);
|
|
68
|
+
var tableRef = useRef(null);
|
|
68
69
|
|
|
69
70
|
var _useState = useState(DEFAULT_BODY_HEIGHT),
|
|
70
71
|
_useState2 = _slicedToArray(_useState, 2),
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
tableClientWidth = _useState2[0],
|
|
73
|
+
setTableClientWidth = _useState2[1];
|
|
73
74
|
|
|
75
|
+
var RANDOM_ID = "INNER_SCROLL_ID_".concat(Math.random());
|
|
74
76
|
useEffect(function () {
|
|
75
|
-
if (
|
|
76
|
-
|
|
77
|
+
if (tableRef.current) {
|
|
78
|
+
setTableClientWidth(tableRef.current.clientWidth);
|
|
77
79
|
}
|
|
78
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]);
|
|
79
112
|
var newColumns = useMemo(function () {
|
|
80
113
|
return columns.map(function (column) {
|
|
81
114
|
return _objectSpread(_objectSpread({}, column), {}, {
|
|
82
|
-
|
|
115
|
+
width: initialColumnsWidthMap.columnMap.get(column.dataIndex) || initialColumnsWidthMap.averageWidth,
|
|
116
|
+
Header: column.title ? column.title : function () {
|
|
117
|
+
return null;
|
|
118
|
+
},
|
|
83
119
|
disableSortBy: !sortable || typeof column.sorter === 'boolean',
|
|
84
120
|
accessor: column.dataIndex,
|
|
85
121
|
Cell: function Cell(_ref2) {
|
|
@@ -89,7 +125,7 @@ function Table(_ref) {
|
|
|
89
125
|
}
|
|
90
126
|
});
|
|
91
127
|
});
|
|
92
|
-
}, [columns, sortable]);
|
|
128
|
+
}, [columns, sortable, initialColumnsWidthMap]);
|
|
93
129
|
|
|
94
130
|
var getInitialSortDirection = function getInitialSortDirection() {
|
|
95
131
|
if (defaultSort && defaultSort.id) {
|
|
@@ -114,13 +150,29 @@ function Table(_ref) {
|
|
|
114
150
|
sortDirection = _React$useState4[0],
|
|
115
151
|
setSortDirection = _React$useState4[1];
|
|
116
152
|
|
|
153
|
+
var getInitSortBy = function getInitSortBy() {
|
|
154
|
+
if (!(sortDirection === null || sortDirection === void 0 ? void 0 : sortDirection.id)) {
|
|
155
|
+
return [];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
var sortColumn = newColumns.find(function (column) {
|
|
159
|
+
return column.accessor === sortDirection.id;
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
if (sortColumn === null || sortColumn === void 0 ? void 0 : sortColumn.sorter) {
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return [sortDirection];
|
|
167
|
+
};
|
|
168
|
+
|
|
117
169
|
var _useTable = useTable({
|
|
118
170
|
columns: newColumns,
|
|
119
171
|
data: data,
|
|
120
172
|
disableMultiSort: true,
|
|
121
173
|
disableSortBy: !sortable,
|
|
122
174
|
initialState: {
|
|
123
|
-
sortBy:
|
|
175
|
+
sortBy: getInitSortBy()
|
|
124
176
|
}
|
|
125
177
|
}, useBlockLayout, useSortBy, useRowSelect, useResizeColumns),
|
|
126
178
|
getTableProps = _useTable.getTableProps,
|
|
@@ -128,7 +180,8 @@ function Table(_ref) {
|
|
|
128
180
|
headerGroups = _useTable.headerGroups,
|
|
129
181
|
rows = _useTable.rows,
|
|
130
182
|
prepareRow = _useTable.prepareRow,
|
|
131
|
-
setSortBy = _useTable.setSortBy
|
|
183
|
+
setSortBy = _useTable.setSortBy,
|
|
184
|
+
totalColumnsWidth = _useTable.totalColumnsWidth;
|
|
132
185
|
|
|
133
186
|
var theadRowWidthRef = React.useRef(DEFAULT_ROW_WIDTH);
|
|
134
187
|
var prefixCls = usePrefixCls('block-table');
|
|
@@ -140,48 +193,6 @@ function Table(_ref) {
|
|
|
140
193
|
setSelectedRowId(row.id);
|
|
141
194
|
onRowSelected(row.original);
|
|
142
195
|
}, [onRowSelected]);
|
|
143
|
-
var itemCount = hasNextPage ? data.length + 1 : data.length;
|
|
144
|
-
var loadMoreItems = loading ? function () {} : loadMore;
|
|
145
|
-
|
|
146
|
-
var isItemLoaded = function isItemLoaded(index) {
|
|
147
|
-
return !hasNextPage || index < data.length;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
var RenderRow = function RenderRow(_ref3) {
|
|
151
|
-
var index = _ref3.index,
|
|
152
|
-
style = _ref3.style;
|
|
153
|
-
|
|
154
|
-
if (!isItemLoaded(index)) {
|
|
155
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
156
|
-
style: style,
|
|
157
|
-
className: classnames("".concat(prefixCls, "-loading"))
|
|
158
|
-
}, /*#__PURE__*/React.createElement(Icon, {
|
|
159
|
-
type: "waiting",
|
|
160
|
-
size: 16
|
|
161
|
-
}), "Loading");
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
var row = rows[index];
|
|
165
|
-
prepareRow(row);
|
|
166
|
-
|
|
167
|
-
var _row$getRowProps = row.getRowProps(),
|
|
168
|
-
rowStyle = _row$getRowProps.style,
|
|
169
|
-
rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
|
|
170
|
-
|
|
171
|
-
return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
|
|
172
|
-
style: _objectSpread(_objectSpread(_objectSpread({}, style), rowStyle), {}, {
|
|
173
|
-
width: resizeColumn ? style === null || style === void 0 ? void 0 : style.width : '100%'
|
|
174
|
-
}),
|
|
175
|
-
className: classnames("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
|
|
176
|
-
onClick: function onClick() {
|
|
177
|
-
return onRowClick(row);
|
|
178
|
-
}
|
|
179
|
-
}), row.cells.map(function (cell) {
|
|
180
|
-
return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
|
|
181
|
-
className: classnames("".concat(prefixCls, "-cell"))
|
|
182
|
-
}), cell.render('Cell'));
|
|
183
|
-
}));
|
|
184
|
-
};
|
|
185
196
|
|
|
186
197
|
var renderHeader = function renderHeader(len) {
|
|
187
198
|
return /*#__PURE__*/React.createElement("div", {
|
|
@@ -273,8 +284,8 @@ function Table(_ref) {
|
|
|
273
284
|
return column.getHeaderProps();
|
|
274
285
|
};
|
|
275
286
|
|
|
276
|
-
var SortIcons = function SortIcons(
|
|
277
|
-
var id =
|
|
287
|
+
var SortIcons = function SortIcons(_ref3) {
|
|
288
|
+
var id = _ref3.id;
|
|
278
289
|
var currentSortId = sortDirection.id,
|
|
279
290
|
desc = sortDirection.desc;
|
|
280
291
|
|
|
@@ -293,45 +304,79 @@ function Table(_ref) {
|
|
|
293
304
|
});
|
|
294
305
|
};
|
|
295
306
|
|
|
307
|
+
var scrollToTop = function scrollToTop() {
|
|
308
|
+
var INITIAL_OFFSET_TOP = 0;
|
|
309
|
+
|
|
310
|
+
if (tableBodyListRef && tableBodyListRef.current) {
|
|
311
|
+
tableBodyListRef.current.scrollTop = INITIAL_OFFSET_TOP;
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
React.useImperativeHandle(ref, function () {
|
|
316
|
+
return {
|
|
317
|
+
backToTop: function backToTop() {
|
|
318
|
+
scrollToTop();
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
});
|
|
322
|
+
var LoadingNode = /*#__PURE__*/React.createElement("div", {
|
|
323
|
+
className: classnames("".concat(prefixCls, "-loading"))
|
|
324
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
325
|
+
type: "waiting",
|
|
326
|
+
size: 16
|
|
327
|
+
}), "Loading");
|
|
328
|
+
|
|
296
329
|
var renderTableBody = function renderTableBody() {
|
|
330
|
+
if (loading && !rows.length) {
|
|
331
|
+
return LoadingNode;
|
|
332
|
+
}
|
|
333
|
+
|
|
297
334
|
if (!loading && !rows.length) {
|
|
298
335
|
return /*#__PURE__*/React.createElement(Empty, {
|
|
299
336
|
description: "\u5F53\u524D\u65E0\u6570\u636E"
|
|
300
337
|
});
|
|
301
338
|
}
|
|
302
339
|
|
|
303
|
-
|
|
304
|
-
return
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
return /*#__PURE__*/React.createElement(
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
340
|
+
var renderRowList = function renderRowList() {
|
|
341
|
+
return data.map(function (item, index) {
|
|
342
|
+
var row = rows[index];
|
|
343
|
+
prepareRow(row);
|
|
344
|
+
|
|
345
|
+
var _row$getRowProps = row.getRowProps(),
|
|
346
|
+
rowStyle = _row$getRowProps.style,
|
|
347
|
+
rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
|
|
348
|
+
|
|
349
|
+
return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
|
|
350
|
+
style: _objectSpread({}, rowStyle),
|
|
351
|
+
className: classnames("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
|
|
352
|
+
onClick: function onClick() {
|
|
353
|
+
return onRowClick(row);
|
|
354
|
+
},
|
|
355
|
+
key: row.id
|
|
356
|
+
}), row.cells.map(function (cell) {
|
|
357
|
+
return /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
|
|
358
|
+
className: classnames("".concat(prefixCls, "-cell"))
|
|
359
|
+
}), cell.render('Cell'));
|
|
360
|
+
}));
|
|
321
361
|
});
|
|
322
|
-
}
|
|
362
|
+
};
|
|
323
363
|
|
|
324
|
-
return /*#__PURE__*/React.createElement(
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
364
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
365
|
+
className: classnames("".concat(prefixCls, "-list"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
366
|
+
id: RANDOM_ID,
|
|
367
|
+
ref: tableBodyListRef
|
|
368
|
+
}, innerScroll && loadMore ? /*#__PURE__*/React.createElement(InfiniteScroll, {
|
|
369
|
+
dataLength: rows.length,
|
|
370
|
+
next: loadMore,
|
|
371
|
+
hasMore: !!hasNextPage,
|
|
372
|
+
loader: LoadingNode,
|
|
373
|
+
scrollableTarget: RANDOM_ID
|
|
374
|
+
}, renderRowList()) : renderRowList());
|
|
331
375
|
};
|
|
332
376
|
|
|
333
377
|
return /*#__PURE__*/React.createElement("div", {
|
|
334
|
-
className: prefixCls
|
|
378
|
+
className: prefixCls,
|
|
379
|
+
ref: tableRef
|
|
335
380
|
}, showHeader && renderHeader(data.length), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, getTableProps()), {}, {
|
|
336
381
|
className: classnames("".concat(prefixCls, "-table-wrap"), _defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
|
|
337
382
|
}), /*#__PURE__*/React.createElement("div", {
|
|
@@ -349,21 +394,28 @@ function Table(_ref) {
|
|
|
349
394
|
className: "".concat(prefixCls, "-row")
|
|
350
395
|
}), headerGroup.headers.map(function (column) {
|
|
351
396
|
var barPorps = resizeColumn ? column.getResizerProps() : {};
|
|
352
|
-
return /*#__PURE__*/React.createElement("div",
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
}, getHeaderProps(column)), {}, {
|
|
397
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
398
|
+
className: classnames(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell")),
|
|
399
|
+
style: getHeaderProps(column).style,
|
|
356
400
|
key: column.id
|
|
357
|
-
}
|
|
358
|
-
className:
|
|
359
|
-
})),
|
|
401
|
+
}, /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({
|
|
402
|
+
className: "".concat(prefixCls, "-cell-content")
|
|
403
|
+
}, getHeaderProps(column)), {}, {
|
|
404
|
+
style: {
|
|
405
|
+
width: '100%'
|
|
406
|
+
}
|
|
407
|
+
}), column.render('Header'), /*#__PURE__*/React.createElement(SortIcons, {
|
|
360
408
|
id: column.id
|
|
361
|
-
}))
|
|
409
|
+
})), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, barPorps), {}, {
|
|
410
|
+
className: classnames(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
|
|
411
|
+
})));
|
|
362
412
|
}));
|
|
363
413
|
})), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, getTableBodyProps()), {}, {
|
|
364
|
-
className: classnames("".concat(prefixCls, "-tbody")),
|
|
365
|
-
|
|
414
|
+
className: classnames("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
415
|
+
style: {
|
|
416
|
+
width: totalColumnsWidth
|
|
417
|
+
}
|
|
366
418
|
}), renderTableBody())));
|
|
367
419
|
}
|
|
368
420
|
|
|
369
|
-
export default Table;
|
|
421
|
+
export default /*#__PURE__*/React.forwardRef(Table);
|
package/es/Table/interface.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface ISort<T> {
|
|
|
6
6
|
desc?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export interface IColumn<T extends object> {
|
|
9
|
-
title: string;
|
|
9
|
+
title: string | null;
|
|
10
10
|
dataIndex: string;
|
|
11
11
|
render?: (value: any, row: Record<string, T>, index: number) => React.ReactNode;
|
|
12
12
|
width?: number;
|
|
@@ -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,12 +54,11 @@ 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,
|
|
@@ -69,8 +66,8 @@ function Table(_ref) {
|
|
|
69
66
|
renderHeaderRight = _ref.renderHeaderRight,
|
|
70
67
|
onRowSelected = _ref.onRowSelected,
|
|
71
68
|
loadMore = _ref.loadMore,
|
|
72
|
-
hasNextPage = _ref.hasNextPage,
|
|
73
69
|
loading = _ref.loading,
|
|
70
|
+
hasNextPage = _ref.hasNextPage,
|
|
74
71
|
_ref$sortable = _ref.sortable,
|
|
75
72
|
sortable = _ref$sortable === void 0 ? false : _ref$sortable,
|
|
76
73
|
defaultSort = _ref.defaultSort,
|
|
@@ -80,29 +77,67 @@ function Table(_ref) {
|
|
|
80
77
|
_ref$showHeader = _ref.showHeader,
|
|
81
78
|
showHeader = _ref$showHeader === void 0 ? true : _ref$showHeader,
|
|
82
79
|
_ref$onChange = _ref.onChange,
|
|
83
|
-
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;
|
|
84
83
|
|
|
85
84
|
var _React$useState = _react.default.useState(null),
|
|
86
85
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
87
86
|
selectedRowId = _React$useState2[0],
|
|
88
87
|
setSelectedRowId = _React$useState2[1];
|
|
89
88
|
|
|
90
|
-
var
|
|
89
|
+
var tableBodyListRef = (0, _react.useRef)(null);
|
|
90
|
+
var tableRef = (0, _react.useRef)(null);
|
|
91
91
|
|
|
92
92
|
var _useState = (0, _react.useState)(DEFAULT_BODY_HEIGHT),
|
|
93
93
|
_useState2 = _slicedToArray(_useState, 2),
|
|
94
|
-
|
|
95
|
-
|
|
94
|
+
tableClientWidth = _useState2[0],
|
|
95
|
+
setTableClientWidth = _useState2[1];
|
|
96
96
|
|
|
97
|
+
var RANDOM_ID = "INNER_SCROLL_ID_".concat(Math.random());
|
|
97
98
|
(0, _react.useEffect)(function () {
|
|
98
|
-
if (
|
|
99
|
-
|
|
99
|
+
if (tableRef.current) {
|
|
100
|
+
setTableClientWidth(tableRef.current.clientWidth);
|
|
100
101
|
}
|
|
101
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]);
|
|
102
134
|
var newColumns = (0, _react.useMemo)(function () {
|
|
103
135
|
return columns.map(function (column) {
|
|
104
136
|
return _objectSpread(_objectSpread({}, column), {}, {
|
|
105
|
-
|
|
137
|
+
width: initialColumnsWidthMap.columnMap.get(column.dataIndex) || initialColumnsWidthMap.averageWidth,
|
|
138
|
+
Header: column.title ? column.title : function () {
|
|
139
|
+
return null;
|
|
140
|
+
},
|
|
106
141
|
disableSortBy: !sortable || typeof column.sorter === 'boolean',
|
|
107
142
|
accessor: column.dataIndex,
|
|
108
143
|
Cell: function Cell(_ref2) {
|
|
@@ -112,7 +147,7 @@ function Table(_ref) {
|
|
|
112
147
|
}
|
|
113
148
|
});
|
|
114
149
|
});
|
|
115
|
-
}, [columns, sortable]);
|
|
150
|
+
}, [columns, sortable, initialColumnsWidthMap]);
|
|
116
151
|
|
|
117
152
|
var getInitialSortDirection = function getInitialSortDirection() {
|
|
118
153
|
if (defaultSort && defaultSort.id) {
|
|
@@ -137,13 +172,29 @@ function Table(_ref) {
|
|
|
137
172
|
sortDirection = _React$useState4[0],
|
|
138
173
|
setSortDirection = _React$useState4[1];
|
|
139
174
|
|
|
175
|
+
var getInitSortBy = function getInitSortBy() {
|
|
176
|
+
if (!(sortDirection === null || sortDirection === void 0 ? void 0 : sortDirection.id)) {
|
|
177
|
+
return [];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
var sortColumn = newColumns.find(function (column) {
|
|
181
|
+
return column.accessor === sortDirection.id;
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
if (sortColumn === null || sortColumn === void 0 ? void 0 : sortColumn.sorter) {
|
|
185
|
+
return [];
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return [sortDirection];
|
|
189
|
+
};
|
|
190
|
+
|
|
140
191
|
var _useTable = (0, _reactTable.useTable)({
|
|
141
192
|
columns: newColumns,
|
|
142
193
|
data: data,
|
|
143
194
|
disableMultiSort: true,
|
|
144
195
|
disableSortBy: !sortable,
|
|
145
196
|
initialState: {
|
|
146
|
-
sortBy:
|
|
197
|
+
sortBy: getInitSortBy()
|
|
147
198
|
}
|
|
148
199
|
}, _reactTable.useBlockLayout, _reactTable.useSortBy, _reactTable.useRowSelect, _reactTable.useResizeColumns),
|
|
149
200
|
getTableProps = _useTable.getTableProps,
|
|
@@ -151,7 +202,8 @@ function Table(_ref) {
|
|
|
151
202
|
headerGroups = _useTable.headerGroups,
|
|
152
203
|
rows = _useTable.rows,
|
|
153
204
|
prepareRow = _useTable.prepareRow,
|
|
154
|
-
setSortBy = _useTable.setSortBy
|
|
205
|
+
setSortBy = _useTable.setSortBy,
|
|
206
|
+
totalColumnsWidth = _useTable.totalColumnsWidth;
|
|
155
207
|
|
|
156
208
|
var theadRowWidthRef = _react.default.useRef(DEFAULT_ROW_WIDTH);
|
|
157
209
|
|
|
@@ -164,56 +216,14 @@ function Table(_ref) {
|
|
|
164
216
|
setSelectedRowId(row.id);
|
|
165
217
|
onRowSelected(row.original);
|
|
166
218
|
}, [onRowSelected]);
|
|
167
|
-
var itemCount = hasNextPage ? data.length + 1 : data.length;
|
|
168
|
-
var loadMoreItems = loading ? function () {} : loadMore;
|
|
169
|
-
|
|
170
|
-
var isItemLoaded = function isItemLoaded(index) {
|
|
171
|
-
return !hasNextPage || index < data.length;
|
|
172
|
-
};
|
|
173
|
-
|
|
174
|
-
var RenderRow = function RenderRow(_ref3) {
|
|
175
|
-
var index = _ref3.index,
|
|
176
|
-
style = _ref3.style;
|
|
177
|
-
|
|
178
|
-
if (!isItemLoaded(index)) {
|
|
179
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
180
|
-
style: style,
|
|
181
|
-
className: (0, _classnames5.default)("".concat(prefixCls, "-loading"))
|
|
182
|
-
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
183
|
-
type: "waiting",
|
|
184
|
-
size: 16
|
|
185
|
-
}), "Loading");
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
var row = rows[index];
|
|
189
|
-
prepareRow(row);
|
|
190
|
-
|
|
191
|
-
var _row$getRowProps = row.getRowProps(),
|
|
192
|
-
rowStyle = _row$getRowProps.style,
|
|
193
|
-
rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
|
|
194
|
-
|
|
195
|
-
return /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
|
|
196
|
-
style: _objectSpread(_objectSpread(_objectSpread({}, style), rowStyle), {}, {
|
|
197
|
-
width: resizeColumn ? style === null || style === void 0 ? void 0 : style.width : '100%'
|
|
198
|
-
}),
|
|
199
|
-
className: (0, _classnames5.default)("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
|
|
200
|
-
onClick: function onClick() {
|
|
201
|
-
return onRowClick(row);
|
|
202
|
-
}
|
|
203
|
-
}), row.cells.map(function (cell) {
|
|
204
|
-
return /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
|
|
205
|
-
className: (0, _classnames5.default)("".concat(prefixCls, "-cell"))
|
|
206
|
-
}), cell.render('Cell'));
|
|
207
|
-
}));
|
|
208
|
-
};
|
|
209
219
|
|
|
210
220
|
var renderHeader = function renderHeader(len) {
|
|
211
221
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
212
|
-
className: (0,
|
|
222
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-header"))
|
|
213
223
|
}, renderHeaderLeft ? renderHeaderLeft() : /*#__PURE__*/_react.default.createElement("span", {
|
|
214
|
-
className: (0,
|
|
224
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-header-left"))
|
|
215
225
|
}, "\u5171\u8BA1", total || len, "\u6761"), /*#__PURE__*/_react.default.createElement("div", {
|
|
216
|
-
className: (0,
|
|
226
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-header-right"))
|
|
217
227
|
}, renderHeaderRight ? renderHeaderRight() : null));
|
|
218
228
|
};
|
|
219
229
|
|
|
@@ -297,8 +307,8 @@ function Table(_ref) {
|
|
|
297
307
|
return column.getHeaderProps();
|
|
298
308
|
};
|
|
299
309
|
|
|
300
|
-
var SortIcons = function SortIcons(
|
|
301
|
-
var id =
|
|
310
|
+
var SortIcons = function SortIcons(_ref3) {
|
|
311
|
+
var id = _ref3.id;
|
|
302
312
|
var currentSortId = sortDirection.id,
|
|
303
313
|
desc = sortDirection.desc;
|
|
304
314
|
|
|
@@ -317,47 +327,82 @@ function Table(_ref) {
|
|
|
317
327
|
});
|
|
318
328
|
};
|
|
319
329
|
|
|
330
|
+
var scrollToTop = function scrollToTop() {
|
|
331
|
+
var INITIAL_OFFSET_TOP = 0;
|
|
332
|
+
|
|
333
|
+
if (tableBodyListRef && tableBodyListRef.current) {
|
|
334
|
+
tableBodyListRef.current.scrollTop = INITIAL_OFFSET_TOP;
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
_react.default.useImperativeHandle(ref, function () {
|
|
339
|
+
return {
|
|
340
|
+
backToTop: function backToTop() {
|
|
341
|
+
scrollToTop();
|
|
342
|
+
}
|
|
343
|
+
};
|
|
344
|
+
});
|
|
345
|
+
|
|
346
|
+
var LoadingNode = /*#__PURE__*/_react.default.createElement("div", {
|
|
347
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-loading"))
|
|
348
|
+
}, /*#__PURE__*/_react.default.createElement(_Icon.default, {
|
|
349
|
+
type: "waiting",
|
|
350
|
+
size: 16
|
|
351
|
+
}), "Loading");
|
|
352
|
+
|
|
320
353
|
var renderTableBody = function renderTableBody() {
|
|
354
|
+
if (loading && !rows.length) {
|
|
355
|
+
return LoadingNode;
|
|
356
|
+
}
|
|
357
|
+
|
|
321
358
|
if (!loading && !rows.length) {
|
|
322
359
|
return /*#__PURE__*/_react.default.createElement(_Empty.default, {
|
|
323
360
|
description: "\u5F53\u524D\u65E0\u6570\u636E"
|
|
324
361
|
});
|
|
325
362
|
}
|
|
326
363
|
|
|
327
|
-
|
|
328
|
-
return
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
364
|
+
var renderRowList = function renderRowList() {
|
|
365
|
+
return data.map(function (item, index) {
|
|
366
|
+
var row = rows[index];
|
|
367
|
+
prepareRow(row);
|
|
368
|
+
|
|
369
|
+
var _row$getRowProps = row.getRowProps(),
|
|
370
|
+
rowStyle = _row$getRowProps.style,
|
|
371
|
+
rowProps = _objectWithoutProperties(_row$getRowProps, _excluded);
|
|
372
|
+
|
|
373
|
+
return /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, rowProps), {}, {
|
|
374
|
+
style: _objectSpread({}, rowStyle),
|
|
375
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-row"), _defineProperty({}, "".concat(prefixCls, "-row-selected"), row.id === selectedRowId)),
|
|
376
|
+
onClick: function onClick() {
|
|
377
|
+
return onRowClick(row);
|
|
378
|
+
},
|
|
379
|
+
key: row.id
|
|
380
|
+
}), row.cells.map(function (cell) {
|
|
381
|
+
return /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, cell.getCellProps()), {}, {
|
|
382
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-cell"))
|
|
383
|
+
}), cell.render('Cell'));
|
|
384
|
+
}));
|
|
345
385
|
});
|
|
346
|
-
}
|
|
386
|
+
};
|
|
347
387
|
|
|
348
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
388
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
389
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-list"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
390
|
+
id: RANDOM_ID,
|
|
391
|
+
ref: tableBodyListRef
|
|
392
|
+
}, innerScroll && loadMore ? /*#__PURE__*/_react.default.createElement(_reactInfiniteScrollComponent.default, {
|
|
393
|
+
dataLength: rows.length,
|
|
394
|
+
next: loadMore,
|
|
395
|
+
hasMore: !!hasNextPage,
|
|
396
|
+
loader: LoadingNode,
|
|
397
|
+
scrollableTarget: RANDOM_ID
|
|
398
|
+
}, renderRowList()) : renderRowList());
|
|
355
399
|
};
|
|
356
400
|
|
|
357
401
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
358
|
-
className: prefixCls
|
|
402
|
+
className: prefixCls,
|
|
403
|
+
ref: tableRef
|
|
359
404
|
}, showHeader && renderHeader(data.length), /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, getTableProps()), {}, {
|
|
360
|
-
className: (0,
|
|
405
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-table-wrap"), _defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
|
|
361
406
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
362
407
|
className: "".concat(prefixCls, "-thead")
|
|
363
408
|
}, headerGroups.map(function (headerGroup) {
|
|
@@ -373,22 +418,30 @@ function Table(_ref) {
|
|
|
373
418
|
className: "".concat(prefixCls, "-row")
|
|
374
419
|
}), headerGroup.headers.map(function (column) {
|
|
375
420
|
var barPorps = resizeColumn ? column.getResizerProps() : {};
|
|
376
|
-
return /*#__PURE__*/_react.default.createElement("div",
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
}, getHeaderProps(column)), {}, {
|
|
421
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
422
|
+
className: (0, _classnames7.default)(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell")),
|
|
423
|
+
style: getHeaderProps(column).style,
|
|
380
424
|
key: column.id
|
|
381
|
-
}
|
|
382
|
-
className:
|
|
383
|
-
})),
|
|
425
|
+
}, /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({
|
|
426
|
+
className: "".concat(prefixCls, "-cell-content")
|
|
427
|
+
}, getHeaderProps(column)), {}, {
|
|
428
|
+
style: {
|
|
429
|
+
width: '100%'
|
|
430
|
+
}
|
|
431
|
+
}), column.render('Header'), /*#__PURE__*/_react.default.createElement(SortIcons, {
|
|
384
432
|
id: column.id
|
|
385
|
-
}))
|
|
433
|
+
})), /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, barPorps), {}, {
|
|
434
|
+
className: (0, _classnames7.default)(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
|
|
435
|
+
})));
|
|
386
436
|
}));
|
|
387
437
|
})), /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, getTableBodyProps()), {}, {
|
|
388
|
-
className: (0,
|
|
389
|
-
|
|
438
|
+
className: (0, _classnames7.default)("".concat(prefixCls, "-tbody"), _defineProperty({}, "".concat(prefixCls, "-innerScroll"), innerScroll)),
|
|
439
|
+
style: {
|
|
440
|
+
width: totalColumnsWidth
|
|
441
|
+
}
|
|
390
442
|
}), renderTableBody())));
|
|
391
443
|
}
|
|
392
444
|
|
|
393
|
-
var _default = Table;
|
|
445
|
+
var _default = /*#__PURE__*/_react.default.forwardRef(Table);
|
|
446
|
+
|
|
394
447
|
exports.default = _default;
|
package/lib/Table/interface.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export interface ISort<T> {
|
|
|
6
6
|
desc?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export interface IColumn<T extends object> {
|
|
9
|
-
title: string;
|
|
9
|
+
title: string | null;
|
|
10
10
|
dataIndex: string;
|
|
11
11
|
render?: (value: any, row: Record<string, T>, index: number) => React.ReactNode;
|
|
12
12
|
width?: number;
|
|
@@ -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.15",
|
|
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"
|