@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.
@@ -1,4 +1,4 @@
1
- import { ReactElement } from 'react';
1
+ import React from 'react';
2
2
  import { ITableProps } from './interface';
3
- declare function Table<T extends Record<string, unknown>>({ columns, data, total, renderHeaderLeft, renderHeaderRight, onRowSelected, loadMore, hasNextPage, loading, sortable, defaultSort, resizeColumn, sortDirections: allSortDirections, showHeader, onChange, }: ITableProps<T>): ReactElement;
4
- export default Table;
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 React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
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 _ from 'lodash';
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 tableBodyRef = useRef(null);
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
- bodyClientHeight = _useState2[0],
72
- setBodyClientHeight = _useState2[1];
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 (tableBodyRef.current) {
76
- setBodyClientHeight(tableBodyRef.current.clientHeight);
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
- Header: column.title,
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: sortDirection.id ? [sortDirection] : []
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(_ref4) {
277
- var id = _ref4.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
- if (loadMore && typeof loadMore === 'function') {
304
- return /*#__PURE__*/React.createElement(InfiniteLoader, {
305
- isItemLoaded: isItemLoaded,
306
- itemCount: itemCount,
307
- loadMoreItems: loadMoreItems,
308
- threshold: 3
309
- }, function (_ref5) {
310
- var onItemsRendered = _ref5.onItemsRendered,
311
- ref = _ref5.ref;
312
- return /*#__PURE__*/React.createElement(FixedSizeList, {
313
- itemCount: itemCount,
314
- onItemsRendered: onItemsRendered,
315
- height: bodyClientHeight,
316
- itemSize: DEFAULT_ROW_HEIGHT,
317
- width: resizeColumn ? theadRowWidthRef.current : '100%',
318
- ref: ref,
319
- className: "".concat(prefixCls, "-list")
320
- }, RenderRow);
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(FixedSizeList, {
325
- itemCount: itemCount,
326
- height: bodyClientHeight,
327
- itemSize: DEFAULT_ROW_HEIGHT,
328
- width: resizeColumn ? theadRowWidthRef.current : '100%',
329
- className: "".concat(prefixCls, "-list")
330
- }, RenderRow);
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", _objectSpread(_objectSpread({
353
- // {...column.getHeaderProps(column.getSortByToggleProps())}
354
- className: classnames(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell"))
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
- }), column.render('Header'), /*#__PURE__*/React.createElement("div", _objectSpread(_objectSpread({}, barPorps), {}, {
358
- className: classnames(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
359
- })), /*#__PURE__*/React.createElement(SortIcons, {
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
- ref: tableBodyRef
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);
@@ -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?: (startIndex: number, stopIndex: number) => void | Promise<void>;
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: @table-row-height;
24
- padding: 0 12px;
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: 1px;
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
- &-list {
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;
@@ -1,4 +1,4 @@
1
- import { ReactElement } from 'react';
1
+ import React from 'react';
2
2
  import { ITableProps } from './interface';
3
- declare function Table<T extends Record<string, unknown>>({ columns, data, total, renderHeaderLeft, renderHeaderRight, onRowSelected, loadMore, hasNextPage, loading, sortable, defaultSort, resizeColumn, sortDirections: allSortDirections, showHeader, onChange, }: ITableProps<T>): ReactElement;
4
- export default Table;
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;
@@ -7,33 +7,31 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
 
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _reactTable = require("react-table");
10
+ var _lodash = _interopRequireDefault(require("lodash"));
13
11
 
14
- var _usePrefixCls = _interopRequireDefault(require("../_utils/hooks/usePrefixCls"));
12
+ var _classnames7 = _interopRequireDefault(require("classnames"));
15
13
 
16
- var _reactWindow = require("react-window");
14
+ var _Icon = _interopRequireDefault(require("../Icon"));
17
15
 
18
- var _reactWindowInfiniteLoader = _interopRequireDefault(require("react-window-infinite-loader"));
16
+ var _react = _interopRequireWildcard(require("react"));
19
17
 
20
- var _classnames5 = _interopRequireDefault(require("classnames"));
18
+ var _usePrefixCls = _interopRequireDefault(require("../_utils/hooks/usePrefixCls"));
21
19
 
22
- var _Icon = _interopRequireDefault(require("../Icon"));
20
+ var _reactInfiniteScrollComponent = _interopRequireDefault(require("react-infinite-scroll-component"));
23
21
 
24
22
  var _Empty = _interopRequireDefault(require("../Empty"));
25
23
 
26
- var _lodash = _interopRequireDefault(require("lodash"));
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 tableBodyRef = (0, _react.useRef)(null);
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
- bodyClientHeight = _useState2[0],
95
- setBodyClientHeight = _useState2[1];
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 (tableBodyRef.current) {
99
- setBodyClientHeight(tableBodyRef.current.clientHeight);
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
- Header: column.title,
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: sortDirection.id ? [sortDirection] : []
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, _classnames5.default)("".concat(prefixCls, "-header"))
222
+ className: (0, _classnames7.default)("".concat(prefixCls, "-header"))
213
223
  }, renderHeaderLeft ? renderHeaderLeft() : /*#__PURE__*/_react.default.createElement("span", {
214
- className: (0, _classnames5.default)("".concat(prefixCls, "-header-left"))
224
+ className: (0, _classnames7.default)("".concat(prefixCls, "-header-left"))
215
225
  }, "\u5171\u8BA1", total || len, "\u6761"), /*#__PURE__*/_react.default.createElement("div", {
216
- className: (0, _classnames5.default)("".concat(prefixCls, "-header-right"))
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(_ref4) {
301
- var id = _ref4.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
- if (loadMore && typeof loadMore === 'function') {
328
- return /*#__PURE__*/_react.default.createElement(_reactWindowInfiniteLoader.default, {
329
- isItemLoaded: isItemLoaded,
330
- itemCount: itemCount,
331
- loadMoreItems: loadMoreItems,
332
- threshold: 3
333
- }, function (_ref5) {
334
- var onItemsRendered = _ref5.onItemsRendered,
335
- ref = _ref5.ref;
336
- return /*#__PURE__*/_react.default.createElement(_reactWindow.FixedSizeList, {
337
- itemCount: itemCount,
338
- onItemsRendered: onItemsRendered,
339
- height: bodyClientHeight,
340
- itemSize: DEFAULT_ROW_HEIGHT,
341
- width: resizeColumn ? theadRowWidthRef.current : '100%',
342
- ref: ref,
343
- className: "".concat(prefixCls, "-list")
344
- }, RenderRow);
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(_reactWindow.FixedSizeList, {
349
- itemCount: itemCount,
350
- height: bodyClientHeight,
351
- itemSize: DEFAULT_ROW_HEIGHT,
352
- width: resizeColumn ? theadRowWidthRef.current : '100%',
353
- className: "".concat(prefixCls, "-list")
354
- }, RenderRow);
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, _classnames5.default)("".concat(prefixCls, "-table-wrap"), _defineProperty({}, "".concat(prefixCls, "-column-resizable"), resizeColumn))
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", _objectSpread(_objectSpread({
377
- // {...column.getHeaderProps(column.getSortByToggleProps())}
378
- className: (0, _classnames5.default)(_defineProperty({}, "".concat(prefixCls, "-cell-sorting"), column.id === sortDirection.id), "".concat(prefixCls, "-cell"))
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
- }), column.render('Header'), /*#__PURE__*/_react.default.createElement("div", _objectSpread(_objectSpread({}, barPorps), {}, {
382
- className: (0, _classnames5.default)(_defineProperty({}, "".concat(prefixCls, "-dragBar"), resizeColumn), "".concat(prefixCls, "-bar"))
383
- })), /*#__PURE__*/_react.default.createElement(SortIcons, {
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, _classnames5.default)("".concat(prefixCls, "-tbody")),
389
- ref: tableBodyRef
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;
@@ -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?: (startIndex: number, stopIndex: number) => void | Promise<void>;
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: @table-row-height;
24
- padding: 0 12px;
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: 1px;
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
- &-list {
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.12",
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"