@dtjoy/dt-design 1.0.5 → 1.0.7

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.
Files changed (179) hide show
  1. package/esm/_util/easings.js +9 -0
  2. package/esm/_util/extendsObject.js +17 -0
  3. package/esm/_util/getScroll.js +32 -0
  4. package/esm/_util/hooks/index.js +4 -1
  5. package/esm/_util/hooks/useForceUpdate.js +6 -0
  6. package/esm/_util/hooks/useProxyImperativeHandle.js +31 -0
  7. package/esm/_util/hooks/useSyncState.js +20 -0
  8. package/esm/_util/scrollTo.js +38 -0
  9. package/esm/_util/warning.js +63 -0
  10. package/esm/blockHeader/index.js +10 -8
  11. package/esm/blockHeader/style/index.less +143 -143
  12. package/esm/button/index.js +7 -15
  13. package/esm/button/style/index.less +52 -127
  14. package/esm/button/style/mixin.less +34 -42
  15. package/esm/collapsible/index.js +53 -55
  16. package/esm/collapsibleActionItems/index.js +2 -2
  17. package/esm/flex/index.js +1 -1
  18. package/esm/flex/style/index.less +76 -76
  19. package/esm/flex/utils.js +1 -1
  20. package/esm/formList/index.js +13 -11
  21. package/esm/formList/style/index.less +45 -45
  22. package/esm/index.js +3 -1
  23. package/esm/overflowList/index.js +4 -3
  24. package/esm/resize/index.js +1 -1
  25. package/esm/resizeObserver/index.js +3 -2
  26. package/esm/splitter/Panel.js +3 -3
  27. package/esm/splitter/SplitBar.js +8 -7
  28. package/esm/splitter/Splitter.js +5 -4
  29. package/esm/splitter/hooks/useItems.js +2 -2
  30. package/esm/splitter/hooks/useResize.js +5 -5
  31. package/esm/statusTag/index.js +8 -8
  32. package/esm/style/index.less +1 -1
  33. package/esm/style/themes/index.less +2 -2
  34. package/esm/style/themes/variable.less +4 -0
  35. package/esm/table/InternalTable.js +429 -0
  36. package/esm/table/RcTable/VirtualTable.js +9 -0
  37. package/esm/table/RcTable/index.js +9 -0
  38. package/esm/table/Table.js +28 -0
  39. package/esm/table/TableMeasureRowContext.js +3 -0
  40. package/esm/table/hooks/useContainerWidth.js +14 -0
  41. package/esm/table/index.js +2 -0
  42. package/esm/table/interface.js +4 -0
  43. package/esm/table/style/bordered.less +141 -0
  44. package/esm/table/style/fixed.less +88 -0
  45. package/esm/table/style/index.js +2 -0
  46. package/esm/table/style/index.less +150 -0
  47. package/esm/table/style/selection.less +90 -0
  48. package/esm/table/style/sticky.less +55 -0
  49. package/esm/table/style/virtual.less +65 -0
  50. package/esm/table/util.js +33 -0
  51. package/lib/_util/easings.js +15 -0
  52. package/lib/_util/extendsObject.js +20 -0
  53. package/lib/_util/getScroll.js +39 -0
  54. package/lib/_util/hooks/index.js +33 -0
  55. package/lib/_util/hooks/useForceUpdate.js +12 -0
  56. package/lib/_util/hooks/useProxyImperativeHandle.js +40 -0
  57. package/lib/_util/hooks/useSyncState.js +19 -0
  58. package/lib/_util/scrollTo.js +44 -0
  59. package/lib/_util/warning.js +75 -0
  60. package/lib/blockHeader/index.js +10 -8
  61. package/lib/blockHeader/style/index.less +143 -143
  62. package/lib/button/index.js +6 -14
  63. package/lib/button/style/index.less +52 -127
  64. package/lib/button/style/mixin.less +34 -42
  65. package/lib/collapsible/index.js +49 -49
  66. package/lib/collapsibleActionItems/index.js +2 -2
  67. package/lib/flex/index.js +2 -2
  68. package/lib/flex/style/index.less +76 -76
  69. package/lib/flex/utils.js +2 -2
  70. package/lib/formList/index.js +10 -10
  71. package/lib/formList/style/index.less +45 -45
  72. package/lib/index.js +21 -2
  73. package/lib/overflowList/index.js +4 -3
  74. package/lib/resize/index.js +1 -1
  75. package/lib/resizeObserver/index.js +3 -2
  76. package/lib/splitter/Panel.js +3 -3
  77. package/lib/splitter/SplitBar.js +8 -7
  78. package/lib/splitter/Splitter.js +5 -4
  79. package/lib/splitter/hooks/useItems.js +2 -2
  80. package/lib/splitter/hooks/useResize.js +5 -5
  81. package/lib/statusTag/index.js +8 -8
  82. package/lib/style/index.less +1 -1
  83. package/lib/style/themes/index.less +2 -2
  84. package/lib/style/themes/variable.less +4 -0
  85. package/lib/table/InternalTable.js +395 -0
  86. package/lib/table/RcTable/VirtualTable.js +17 -0
  87. package/lib/table/RcTable/index.js +17 -0
  88. package/lib/table/Table.js +37 -0
  89. package/lib/table/TableMeasureRowContext.js +10 -0
  90. package/lib/table/hooks/useContainerWidth.js +20 -0
  91. package/lib/table/index.js +9 -0
  92. package/lib/table/interface.js +8 -0
  93. package/lib/table/style/bordered.less +141 -0
  94. package/lib/table/style/fixed.less +88 -0
  95. package/lib/table/style/index.js +4 -0
  96. package/lib/table/style/index.less +150 -0
  97. package/lib/table/style/selection.less +90 -0
  98. package/lib/table/style/sticky.less +55 -0
  99. package/lib/table/style/virtual.less +65 -0
  100. package/lib/table/util.js +44 -0
  101. package/package.json +82 -66
  102. package/esm/_util/gapSize.d.ts +0 -3
  103. package/esm/_util/hooks/index.d.ts +0 -1
  104. package/esm/_util/hooks/useOrientation.d.ts +0 -2
  105. package/esm/_util/index.d.ts +0 -3
  106. package/esm/_util/isNonNullable.d.ts +0 -2
  107. package/esm/_util/type.d.ts +0 -52
  108. package/esm/blockHeader/index.d.ts +0 -47
  109. package/esm/blockHeader/style/index.d.ts +0 -2
  110. package/esm/button/index.d.ts +0 -10
  111. package/esm/button/style/index.d.ts +0 -2
  112. package/esm/collapsible/index.d.ts +0 -97
  113. package/esm/collapsible/style/index.d.ts +0 -1
  114. package/esm/collapsibleActionItems/index.d.ts +0 -24
  115. package/esm/collapsibleActionItems/style/index.d.ts +0 -2
  116. package/esm/flex/index.d.ts +0 -7
  117. package/esm/flex/interface.d.ts +0 -16
  118. package/esm/flex/style/index.d.ts +0 -2
  119. package/esm/flex/utils.d.ts +0 -7
  120. package/esm/formList/index.d.ts +0 -77
  121. package/esm/formList/style/index.d.ts +0 -2
  122. package/esm/index.d.ts +0 -14
  123. package/esm/overflowList/index.d.ts +0 -39
  124. package/esm/overflowList/style/index.d.ts +0 -2
  125. package/esm/resize/index.d.ts +0 -8
  126. package/esm/resizeObserver/index.d.ts +0 -45
  127. package/esm/splitter/Panel.d.ts +0 -7
  128. package/esm/splitter/SplitBar.d.ts +0 -24
  129. package/esm/splitter/Splitter.d.ts +0 -5
  130. package/esm/splitter/hooks/sizeUtil.d.ts +0 -3
  131. package/esm/splitter/hooks/useItems.d.ts +0 -14
  132. package/esm/splitter/hooks/useResizable.d.ts +0 -10
  133. package/esm/splitter/hooks/useResize.d.ts +0 -6
  134. package/esm/splitter/hooks/useSizes.d.ts +0 -4
  135. package/esm/splitter/index.d.ts +0 -8
  136. package/esm/splitter/interface.d.ts +0 -69
  137. package/esm/splitter/style/index.d.ts +0 -2
  138. package/esm/statusTag/index.d.ts +0 -28
  139. package/esm/statusTag/style/index.d.ts +0 -2
  140. package/esm/style/index.d.ts +0 -1
  141. package/lib/_util/gapSize.d.ts +0 -3
  142. package/lib/_util/hooks/index.d.ts +0 -1
  143. package/lib/_util/hooks/useOrientation.d.ts +0 -2
  144. package/lib/_util/index.d.ts +0 -3
  145. package/lib/_util/isNonNullable.d.ts +0 -2
  146. package/lib/_util/type.d.ts +0 -52
  147. package/lib/blockHeader/index.d.ts +0 -47
  148. package/lib/blockHeader/style/index.d.ts +0 -2
  149. package/lib/button/index.d.ts +0 -10
  150. package/lib/button/style/index.d.ts +0 -2
  151. package/lib/collapsible/index.d.ts +0 -97
  152. package/lib/collapsible/style/index.d.ts +0 -1
  153. package/lib/collapsibleActionItems/index.d.ts +0 -24
  154. package/lib/collapsibleActionItems/style/index.d.ts +0 -2
  155. package/lib/flex/index.d.ts +0 -7
  156. package/lib/flex/interface.d.ts +0 -16
  157. package/lib/flex/style/index.d.ts +0 -2
  158. package/lib/flex/utils.d.ts +0 -7
  159. package/lib/formList/index.d.ts +0 -77
  160. package/lib/formList/style/index.d.ts +0 -2
  161. package/lib/index.d.ts +0 -14
  162. package/lib/overflowList/index.d.ts +0 -39
  163. package/lib/overflowList/style/index.d.ts +0 -2
  164. package/lib/resize/index.d.ts +0 -8
  165. package/lib/resizeObserver/index.d.ts +0 -45
  166. package/lib/splitter/Panel.d.ts +0 -7
  167. package/lib/splitter/SplitBar.d.ts +0 -24
  168. package/lib/splitter/Splitter.d.ts +0 -5
  169. package/lib/splitter/hooks/sizeUtil.d.ts +0 -3
  170. package/lib/splitter/hooks/useItems.d.ts +0 -14
  171. package/lib/splitter/hooks/useResizable.d.ts +0 -10
  172. package/lib/splitter/hooks/useResize.d.ts +0 -6
  173. package/lib/splitter/hooks/useSizes.d.ts +0 -4
  174. package/lib/splitter/index.d.ts +0 -8
  175. package/lib/splitter/interface.d.ts +0 -69
  176. package/lib/splitter/style/index.d.ts +0 -2
  177. package/lib/statusTag/index.d.ts +0 -28
  178. package/lib/statusTag/style/index.d.ts +0 -2
  179. package/lib/style/index.d.ts +0 -1
@@ -0,0 +1,395 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _table = require("@rc-component/table");
9
+ var _useColumns = require("@rc-component/table/lib/hooks/useColumns");
10
+ var _antd = require("antd");
11
+ var _configProvider = require("antd/lib/config-provider");
12
+ var _defaultRenderEmpty = _interopRequireDefault(require("antd/lib/config-provider/defaultRenderEmpty"));
13
+ var _SizeContext = _interopRequireDefault(require("antd/lib/config-provider/SizeContext"));
14
+ var _useBreakpoint = _interopRequireDefault(require("antd/lib/grid/hooks/useBreakpoint"));
15
+ var _en_US = _interopRequireDefault(require("antd/lib/locale/en_US"));
16
+ var _ExpandIcon = _interopRequireDefault(require("antd/lib/table/ExpandIcon"));
17
+ var _useFilter = _interopRequireWildcard(require("antd/lib/table/hooks/useFilter"));
18
+ var _useLazyKVMap = _interopRequireDefault(require("antd/lib/table/hooks/useLazyKVMap"));
19
+ var _usePagination = _interopRequireWildcard(require("antd/lib/table/hooks/usePagination"));
20
+ var _useSelection = _interopRequireDefault(require("antd/lib/table/hooks/useSelection"));
21
+ var _useSorter = _interopRequireWildcard(require("antd/lib/table/hooks/useSorter"));
22
+ var _useTitleColumns = _interopRequireDefault(require("antd/lib/table/hooks/useTitleColumns"));
23
+ var _clsx = _interopRequireDefault(require("clsx"));
24
+ var _lodashEs = require("lodash-es");
25
+ require("./style");
26
+ var _hooks = require("../_util/hooks");
27
+ var _scrollTo = _interopRequireDefault(require("../_util/scrollTo"));
28
+ var _warning = require("../_util/warning");
29
+ var _useContainerWidth = _interopRequireDefault(require("./hooks/useContainerWidth"));
30
+ var _RcTable = _interopRequireDefault(require("./RcTable"));
31
+ var _VirtualTable = _interopRequireDefault(require("./RcTable/VirtualTable"));
32
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
33
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
34
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
36
+ const EMPTY_LIST = [];
37
+ const InternalTable = (props, ref) => {
38
+ const {
39
+ prefixCls: customizePrefixCls,
40
+ className,
41
+ style,
42
+ size: customizeSize,
43
+ bordered,
44
+ dropdownPrefixCls: customizeDropdownPrefixCls,
45
+ dataSource,
46
+ pagination,
47
+ rowSelection,
48
+ rowKey = 'key',
49
+ rowClassName,
50
+ columns,
51
+ children,
52
+ childrenColumnName: legacyChildrenColumnName,
53
+ onChange,
54
+ getPopupContainer,
55
+ loading,
56
+ expandIcon,
57
+ expandable,
58
+ expandedRowRender,
59
+ expandIconColumnIndex,
60
+ indentSize,
61
+ scroll,
62
+ sortDirections,
63
+ locale,
64
+ showSorterTooltip = true,
65
+ virtual
66
+ } = props;
67
+ const warning = (0, _warning.devUseWarning)('Table');
68
+ warning(!(typeof rowKey === 'function' && rowKey.length > 1), 'usage', '`index` parameter of `rowKey` function is deprecated. There is no guarantee that it will work as expected.');
69
+ [['filterDropdownVisible', 'filterDropdownOpen'], ['onFilterDropdownVisibleChange', 'onFilterDropdownOpenChange']].forEach(([deprecatedName, newName]) => {
70
+ warning(!(deprecatedName in props), 'usage', `\`${deprecatedName}\` is deprecated which will be removed in next major version.Please use \`${newName}\` instead. `);
71
+ });
72
+ const baseColumns = _react.default.useMemo(() => columns || (0, _useColumns.convertChildrenToColumns)(children), [columns, children]);
73
+ const needResponsive = _react.default.useMemo(() => baseColumns.some(col => col.responsive), [baseColumns]);
74
+ const screens = (0, _useBreakpoint.default)(needResponsive);
75
+ const mergedColumns = _react.default.useMemo(() => {
76
+ const matched = new Set(Object.keys(screens).filter(m => screens[m]));
77
+ return baseColumns.filter(c => !c.responsive || c.responsive.some(r => matched.has(r)));
78
+ }, [baseColumns, screens]);
79
+ const tableProps = (0, _lodashEs.omit)(props, ['className', 'style', 'columns']);
80
+ const size = _react.default.useContext(_SizeContext.default);
81
+ const {
82
+ locale: contextLocale = _en_US.default,
83
+ renderEmpty,
84
+ direction
85
+ } = _react.default.useContext(_configProvider.ConfigContext);
86
+ const mergedSize = customizeSize || size;
87
+ const tableLocale = {
88
+ ...contextLocale.Table,
89
+ ...locale
90
+ };
91
+ const rawData = dataSource || EMPTY_LIST;
92
+ const {
93
+ getPrefixCls
94
+ } = _react.default.useContext(_configProvider.ConfigContext);
95
+ const prefixCls = getPrefixCls('table', customizePrefixCls);
96
+ const dropdownPrefixCls = getPrefixCls('dropdown', customizeDropdownPrefixCls);
97
+ const mergedExpandable = {
98
+ childrenColumnName: legacyChildrenColumnName,
99
+ expandIconColumnIndex,
100
+ ...expandable
101
+ };
102
+ const {
103
+ childrenColumnName = 'children'
104
+ } = mergedExpandable;
105
+ const expandType = _react.default.useMemo(() => {
106
+ if (rawData.some(item => item?.[childrenColumnName])) {
107
+ return 'nest';
108
+ }
109
+ if (expandedRowRender || expandable && expandable.expandedRowRender) {
110
+ return 'row';
111
+ }
112
+ return null;
113
+ }, [rawData]);
114
+ const internalRefs = {
115
+ body: _react.default.useRef(null)
116
+ };
117
+
118
+ // ============================ Width =============================
119
+ const getContainerWidth = (0, _useContainerWidth.default)(prefixCls);
120
+
121
+ // ============================= Refs =============================
122
+ const rootRef = _react.default.useRef(null);
123
+ const tblRef = _react.default.useRef(null);
124
+ (0, _hooks.useProxyImperativeHandle)(ref, () => ({
125
+ ...tblRef.current,
126
+ nativeElement: rootRef.current
127
+ }));
128
+
129
+ // ========================== Render ==========================
130
+ const TableComponent = virtual ? _VirtualTable.default : _RcTable.default;
131
+
132
+ // ============================ RowKey ============================
133
+ const getRowKey = _react.default.useMemo(() => {
134
+ if (typeof rowKey === 'function') {
135
+ return rowKey;
136
+ }
137
+ return record => record?.[rowKey];
138
+ }, [rowKey]);
139
+ const [getRecordByKey] = (0, _useLazyKVMap.default)(rawData, childrenColumnName, getRowKey);
140
+
141
+ // ============================ Events =============================
142
+ const changeEventInfo = {};
143
+ const triggerOnChange = (info, action, reset = false) => {
144
+ const changeInfo = {
145
+ ...changeEventInfo,
146
+ ...info
147
+ };
148
+ if (reset) {
149
+ changeEventInfo.resetPagination();
150
+
151
+ // Reset event param
152
+ if (changeInfo.pagination.current) {
153
+ changeInfo.pagination.current = 1;
154
+ }
155
+
156
+ // Trigger pagination events
157
+ if (pagination && pagination.onChange) {
158
+ pagination.onChange(1, changeInfo.pagination.pageSize);
159
+ }
160
+ }
161
+ if (scroll && scroll.scrollToFirstRowOnChange !== false && internalRefs.body.current) {
162
+ (0, _scrollTo.default)(0, {
163
+ getContainer: () => internalRefs.body.current
164
+ });
165
+ }
166
+ onChange?.(changeInfo.pagination, changeInfo.filters, changeInfo.sorter, {
167
+ currentDataSource: (0, _useFilter.getFilterData)((0, _useSorter.getSortData)(rawData, changeInfo.sorterStates, childrenColumnName), changeInfo.filterStates),
168
+ action
169
+ });
170
+ };
171
+
172
+ /**
173
+ * Controlled state in `columns` is not a good idea that makes too many code (1000+ line?) to read
174
+ * state out and then put it back to title render. Move these code into `hooks` but still too
175
+ * complex. We should provides Table props like `sorter` & `filter` to handle control in next big
176
+ * version.
177
+ */
178
+
179
+ // ============================ Sorter =============================
180
+ const onSorterChange = (sorter, sorterStates) => {
181
+ triggerOnChange({
182
+ sorter,
183
+ sorterStates
184
+ }, 'sort', false);
185
+ };
186
+ const [transformSorterColumns, sortStates, sorterTitleProps, getSorters] = (0, _useSorter.default)({
187
+ prefixCls,
188
+ mergedColumns,
189
+ onSorterChange,
190
+ sortDirections: sortDirections || ['ascend', 'descend'],
191
+ tableLocale,
192
+ showSorterTooltip
193
+ });
194
+ const sortedData = _react.default.useMemo(() => (0, _useSorter.getSortData)(rawData, sortStates, childrenColumnName), [rawData, sortStates]);
195
+ changeEventInfo.sorter = getSorters();
196
+ changeEventInfo.sorterStates = sortStates;
197
+
198
+ // ============================ Filter ============================
199
+ const onFilterChange = (filters, filterStates) => {
200
+ triggerOnChange({
201
+ filters,
202
+ filterStates
203
+ }, 'filter', true);
204
+ };
205
+ const [transformFilterColumns, filterStates, filters] = (0, _useFilter.default)({
206
+ prefixCls,
207
+ locale: tableLocale,
208
+ dropdownPrefixCls,
209
+ mergedColumns,
210
+ onFilterChange,
211
+ getPopupContainer
212
+ });
213
+ const mergedData = (0, _useFilter.getFilterData)(sortedData, filterStates);
214
+ changeEventInfo.filters = filters;
215
+ changeEventInfo.filterStates = filterStates;
216
+
217
+ // ============================ Column ============================
218
+ const columnTitleProps = _react.default.useMemo(() => {
219
+ const mergedFilters = {};
220
+ Object.keys(filters).forEach(filterKey => {
221
+ if (filters[filterKey] !== null) {
222
+ mergedFilters[filterKey] = filters[filterKey];
223
+ }
224
+ });
225
+ return {
226
+ ...sorterTitleProps,
227
+ filters: mergedFilters
228
+ };
229
+ }, [sorterTitleProps, filters]);
230
+ const [transformTitleColumns] = (0, _useTitleColumns.default)(columnTitleProps);
231
+
232
+ // ========================== Pagination ==========================
233
+ const onPaginationChange = (current, pageSize) => {
234
+ triggerOnChange({
235
+ pagination: {
236
+ ...changeEventInfo.pagination,
237
+ current,
238
+ pageSize
239
+ }
240
+ }, 'paginate');
241
+ };
242
+ const [mergedPagination, resetPagination] = (0, _usePagination.default)(mergedData.length, pagination, onPaginationChange);
243
+ changeEventInfo.pagination = pagination === false ? {} : (0, _usePagination.getPaginationParam)(pagination, mergedPagination);
244
+ changeEventInfo.resetPagination = resetPagination;
245
+
246
+ // ============================= Data =============================
247
+ const pageData = _react.default.useMemo(() => {
248
+ if (pagination === false || !mergedPagination.pageSize) {
249
+ return mergedData;
250
+ }
251
+ const {
252
+ current = 1,
253
+ total,
254
+ pageSize = _usePagination.DEFAULT_PAGE_SIZE
255
+ } = mergedPagination;
256
+ warning(current > 0, 'usage', '`current` should be positive number.');
257
+
258
+ // Dynamic table data
259
+ if (mergedData.length < total) {
260
+ if (mergedData.length > pageSize) {
261
+ warning(false, 'usage', '`dataSource` length is less than `pagination.total` but large than `pagination.pageSize`. Please make sure your config correct data with async mode.');
262
+ return mergedData.slice((current - 1) * pageSize, current * pageSize);
263
+ }
264
+ return mergedData;
265
+ }
266
+ return mergedData.slice((current - 1) * pageSize, current * pageSize);
267
+ }, [!!pagination, mergedData, mergedPagination && mergedPagination.current, mergedPagination && mergedPagination.pageSize, mergedPagination && mergedPagination.total]);
268
+
269
+ // ========================== Selections ==========================
270
+ const [transformSelectionColumns, selectedKeySet] = (0, _useSelection.default)(rowSelection, {
271
+ prefixCls,
272
+ data: mergedData,
273
+ pageData,
274
+ getRowKey,
275
+ getRecordByKey,
276
+ expandType,
277
+ childrenColumnName,
278
+ locale: tableLocale,
279
+ getPopupContainer
280
+ });
281
+ const internalRowClassName = (record, index, indent) => {
282
+ let mergedRowClassName;
283
+ if (typeof rowClassName === 'function') {
284
+ mergedRowClassName = (0, _clsx.default)(rowClassName(record, index, indent));
285
+ } else {
286
+ mergedRowClassName = (0, _clsx.default)(rowClassName);
287
+ }
288
+ return (0, _clsx.default)({
289
+ [`${prefixCls}-row-selected`]: selectedKeySet.has(getRowKey(record, index))
290
+ }, mergedRowClassName);
291
+ };
292
+
293
+ // ========================== Expandable ==========================
294
+
295
+ // Pass origin render status into `rc-table`, this can be removed when refactor with `rc-table`
296
+ mergedExpandable.__PARENT_RENDER_ICON__ = mergedExpandable.expandIcon;
297
+
298
+ // Customize expandable icon
299
+ mergedExpandable.expandIcon = mergedExpandable.expandIcon || expandIcon || (0, _ExpandIcon.default)(tableLocale);
300
+
301
+ // Adjust expand icon index, no overwrite expandIconColumnIndex if set.
302
+ if (expandType === 'nest' && mergedExpandable.expandIconColumnIndex === undefined) {
303
+ mergedExpandable.expandIconColumnIndex = rowSelection ? 1 : 0;
304
+ } else if (mergedExpandable.expandIconColumnIndex > 0 && rowSelection) {
305
+ mergedExpandable.expandIconColumnIndex -= 1;
306
+ }
307
+
308
+ // Indent size
309
+ if (typeof mergedExpandable.indentSize !== 'number') {
310
+ mergedExpandable.indentSize = typeof indentSize === 'number' ? indentSize : 15;
311
+ }
312
+
313
+ // ============================ Render ============================
314
+ const transformColumns = _react.default.useCallback(innerColumns => transformTitleColumns(transformSelectionColumns(transformFilterColumns(transformSorterColumns(innerColumns)))), [transformSorterColumns, transformFilterColumns, transformSelectionColumns]);
315
+ let topPaginationNode;
316
+ let bottomPaginationNode;
317
+ if (pagination !== false && mergedPagination?.total) {
318
+ let paginationSize;
319
+ if (mergedPagination.size) {
320
+ paginationSize = mergedPagination.size;
321
+ } else {
322
+ paginationSize = mergedSize === 'small' || mergedSize === 'middle' ? 'small' : undefined;
323
+ }
324
+ const renderPagination = position => /*#__PURE__*/_react.default.createElement(_antd.Pagination, _extends({}, mergedPagination, {
325
+ className: (0, _clsx.default)(`${prefixCls}-pagination ${prefixCls}-pagination-${position}`, mergedPagination.className),
326
+ size: paginationSize
327
+ }));
328
+ const defaultPosition = direction === 'rtl' ? 'left' : 'right';
329
+ const {
330
+ position
331
+ } = mergedPagination;
332
+ if (position !== null && Array.isArray(position)) {
333
+ const topPos = position.find(p => p.includes('top'));
334
+ const bottomPos = position.find(p => p.includes('bottom'));
335
+ const isDisable = position.every(p => `${p}` === 'none');
336
+ if (!topPos && !bottomPos && !isDisable) {
337
+ bottomPaginationNode = renderPagination(defaultPosition);
338
+ }
339
+ if (topPos) {
340
+ topPaginationNode = renderPagination(topPos.toLowerCase().replace('top', ''));
341
+ }
342
+ if (bottomPos) {
343
+ bottomPaginationNode = renderPagination(bottomPos.toLowerCase().replace('bottom', ''));
344
+ }
345
+ } else {
346
+ bottomPaginationNode = renderPagination(defaultPosition);
347
+ }
348
+ }
349
+
350
+ // >>>>>>>>> Spinning
351
+ let spinProps;
352
+ if (typeof loading === 'boolean') {
353
+ spinProps = {
354
+ spinning: loading
355
+ };
356
+ } else if (typeof loading === 'object') {
357
+ spinProps = {
358
+ spinning: true,
359
+ ...loading
360
+ };
361
+ }
362
+ const wrapperClassNames = (0, _clsx.default)(`${prefixCls}-wrapper`, {
363
+ [`${prefixCls}-wrapper-rtl`]: direction === 'rtl'
364
+ }, className);
365
+ return /*#__PURE__*/_react.default.createElement("div", {
366
+ ref: rootRef,
367
+ className: wrapperClassNames,
368
+ style: style
369
+ }, /*#__PURE__*/_react.default.createElement(_antd.Spin, _extends({
370
+ spinning: false
371
+ }, spinProps), topPaginationNode, /*#__PURE__*/_react.default.createElement(TableComponent, _extends({}, tableProps, {
372
+ ref: tblRef,
373
+ columns: mergedColumns,
374
+ direction: direction,
375
+ expandable: mergedExpandable,
376
+ prefixCls: prefixCls,
377
+ className: (0, _clsx.default)({
378
+ [`${prefixCls}-middle`]: mergedSize === 'middle',
379
+ [`${prefixCls}-small`]: mergedSize === 'small',
380
+ [`${prefixCls}-bordered`]: bordered,
381
+ [`${prefixCls}-empty`]: rawData.length === 0
382
+ }),
383
+ data: pageData,
384
+ rowKey: getRowKey,
385
+ rowClassName: internalRowClassName,
386
+ emptyText: locale && locale.emptyText || (renderEmpty || _defaultRenderEmpty.default)('Table')
387
+ // Internal
388
+ ,
389
+ internalHooks: _table.INTERNAL_HOOKS,
390
+ internalRefs: internalRefs,
391
+ transformColumns: transformColumns,
392
+ getContainerWidth: getContainerWidth
393
+ })), bottomPaginationNode));
394
+ };
395
+ var _default = exports.default = /*#__PURE__*/_react.default.forwardRef(InternalTable);
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _table = require("@rc-component/table");
8
+ const RcVirtualTable = (0, _table.genVirtualTable)((prev, next) => {
9
+ const {
10
+ _renderTimes: prevRenderTimes
11
+ } = prev;
12
+ const {
13
+ _renderTimes: nextRenderTimes
14
+ } = next;
15
+ return prevRenderTimes !== nextRenderTimes;
16
+ });
17
+ var _default = exports.default = RcVirtualTable;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _table = require("@rc-component/table");
8
+ const RcTable = (0, _table.genTable)((prev, next) => {
9
+ const {
10
+ _renderTimes: prevRenderTimes
11
+ } = prev;
12
+ const {
13
+ _renderTimes: nextRenderTimes
14
+ } = next;
15
+ return prevRenderTimes !== nextRenderTimes;
16
+ });
17
+ var _default = exports.default = RcTable;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _table = require("@rc-component/table");
9
+ var _Column = _interopRequireDefault(require("antd/lib/table/Column"));
10
+ var _ColumnGroup = _interopRequireDefault(require("antd/lib/table/ColumnGroup"));
11
+ var _useSelection = require("antd/lib/table/hooks/useSelection");
12
+ var _InternalTable = _interopRequireDefault(require("./InternalTable"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
+ const Table = (props, ref) => {
18
+ const renderTimesRef = React.useRef(0);
19
+ renderTimesRef.current += 1;
20
+ return /*#__PURE__*/React.createElement(_InternalTable.default, _extends({}, props, {
21
+ ref: ref,
22
+ _renderTimes: renderTimesRef.current
23
+ }));
24
+ };
25
+ const ForwardTable = /*#__PURE__*/React.forwardRef(Table);
26
+ ForwardTable.SELECTION_COLUMN = _useSelection.SELECTION_COLUMN;
27
+ ForwardTable.EXPAND_COLUMN = _table.EXPAND_COLUMN;
28
+ ForwardTable.SELECTION_ALL = _useSelection.SELECTION_ALL;
29
+ ForwardTable.SELECTION_INVERT = _useSelection.SELECTION_INVERT;
30
+ ForwardTable.SELECTION_NONE = _useSelection.SELECTION_NONE;
31
+ ForwardTable.Column = _Column.default;
32
+ ForwardTable.ColumnGroup = _ColumnGroup.default;
33
+ ForwardTable.Summary = _table.Summary;
34
+ if (process.env.NODE_ENV !== 'production') {
35
+ ForwardTable.displayName = 'Table';
36
+ }
37
+ var _default = exports.default = ForwardTable;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ const TableMeasureRowContext = /*#__PURE__*/_react.default.createContext(false);
10
+ var _default = exports.default = TableMeasureRowContext;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useContainerWidth;
7
+ function useContainerWidth(prefixCls) {
8
+ const getContainerWidth = (ele, width) => {
9
+ const container = ele.querySelector(`.${prefixCls}-container`);
10
+ let returnWidth = width;
11
+ if (container) {
12
+ const style = getComputedStyle(container);
13
+ const borderLeft = Number.parseInt(style.borderLeftWidth, 10);
14
+ const borderRight = Number.parseInt(style.borderRightWidth, 10);
15
+ returnWidth = width - borderLeft - borderRight;
16
+ }
17
+ return returnWidth;
18
+ };
19
+ return getContainerWidth;
20
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _Table = _interopRequireDefault(require("./Table"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ var _default = exports.default = _Table.default;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ const _TableActions = ['paginate', 'sort', 'filter'];
7
+
8
+ // 非必要请勿导出
@@ -0,0 +1,141 @@
1
+ @import '../../style/themes/index.less';
2
+
3
+ @table-prefix-cls: ~'@{ant-prefix}-table';
4
+
5
+ .@{table-prefix-cls}-wrapper {
6
+ .@{table-prefix-cls}.@{table-prefix-cls}-bordered {
7
+ // ============================ Title 标题 =============================
8
+ > .@{table-prefix-cls}-title {
9
+ border: @border-width-base @border-style-base @border-color-base;
10
+ border-bottom: 0;
11
+ }
12
+
13
+ // ============================ Content 内容容器 ============================
14
+ > .@{table-prefix-cls}-container {
15
+ border-left: @border-width-base @border-style-base @border-color-base;
16
+ border-top: @border-width-base @border-style-base @border-color-base;
17
+
18
+ > .@{table-prefix-cls}-content,
19
+ > .@{table-prefix-cls}-header,
20
+ > .@{table-prefix-cls}-body,
21
+ > .@{table-prefix-cls}-summary {
22
+ > table {
23
+ // ============================= Cell 单元格 =============================
24
+ > thead > tr > th,
25
+ > thead > tr > td,
26
+ > tbody > tr > th,
27
+ > tbody > tr > td,
28
+ > tfoot > tr > th,
29
+ > tfoot > tr > td {
30
+ border-right: @border-width-base @border-style-base @border-color-base;
31
+ }
32
+
33
+ // ============================ Header 表头 ============================
34
+ > thead {
35
+ > tr:not(:last-child) > th {
36
+ border-bottom: @border-width-base @border-style-base @border-color-base;
37
+ }
38
+
39
+ > tr > th::before {
40
+ background-color: transparent !important;
41
+ }
42
+ }
43
+
44
+ > thead > tr,
45
+ > tbody > tr,
46
+ > tfoot > tr {
47
+ > .@{table-prefix-cls}-cell-fix-right-first::after {
48
+ border-right: @border-width-base @border-style-base @border-color-base;
49
+ }
50
+ }
51
+
52
+ // ========================== Expandable 展开行 ==========================
53
+ > tbody > tr > th,
54
+ > tbody > tr > td {
55
+ > .@{table-prefix-cls}-expanded-row-fixed {
56
+ // margin: calc(-@table-cell-padding-vertical)
57
+ // calc(-(@table-cell-padding-horizontal + @border-width-base));
58
+ &::after {
59
+ position: absolute;
60
+ top: 0;
61
+ right: @border-width-base;
62
+ bottom: 0;
63
+ border-right: @border-width-base @border-style-base @border-color-base;
64
+ content: '';
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+
72
+ // ============================ Scroll 水平滚动 ============================
73
+ &.@{table-prefix-cls}-scroll-horizontal {
74
+ > .@{table-prefix-cls}-container > .@{table-prefix-cls}-body {
75
+ > table > tbody {
76
+ > tr.@{table-prefix-cls}-expanded-row,
77
+ > tr.@{table-prefix-cls}-placeholder {
78
+ > th,
79
+ > td {
80
+ border-right: 0;
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+
87
+ // ============================ Size 尺寸样式(middle/small) ============================
88
+ &.@{table-prefix-cls}-middle {
89
+ > .@{table-prefix-cls}-container {
90
+ > .@{table-prefix-cls}-content,
91
+ > .@{table-prefix-cls}-body {
92
+ > table > tbody > tr > th,
93
+ > table > tbody > tr > td {
94
+ > .@{table-prefix-cls}-expanded-row-fixed {
95
+ // margin: calc(-@table-cell-padding-vertical-middle)
96
+ // calc(-(@table-cell-padding-horizontal-middle + @border-width-base));
97
+ }
98
+ }
99
+ }
100
+ }
101
+ }
102
+
103
+ // small尺寸(对应原getSizeBorderStyle('small'))
104
+ &.@{table-prefix-cls}-small {
105
+ > .@{table-prefix-cls}-container {
106
+ > .@{table-prefix-cls}-content,
107
+ > .@{table-prefix-cls}-body {
108
+ > table > tbody > tr > th,
109
+ > table > tbody > tr > td {
110
+ > .@{table-prefix-cls}-expanded-row-fixed {
111
+ // margin: calc(-@table-cell-padding-vertical-small)
112
+ // calc(-(@table-cell-padding-horizontal-small + @border-width-base));
113
+ }
114
+ }
115
+ }
116
+ }
117
+ }
118
+
119
+ // ============================ Footer 页脚 ============================
120
+ > .@{table-prefix-cls}-footer {
121
+ border: @border-width-base @border-style-base @border-color-base;
122
+ border-top: 0;
123
+ }
124
+ }
125
+
126
+ // ============================ Nested 嵌套表格 ============================
127
+ .@{table-prefix-cls}-cell {
128
+ > .@{table-prefix-cls}-container:first-child {
129
+ border-top: 0;
130
+ }
131
+
132
+ &-scrollbar:not([rowspan]) {
133
+ // box-shadow: 0 @border-width-base 0 @border-width-base @table-header-background;
134
+ }
135
+ }
136
+
137
+ // 边框表格滚动条右侧边框
138
+ .@{table-prefix-cls}-bordered .@{table-prefix-cls}-cell-scrollbar {
139
+ border-right: @border-width-base @border-style-base @border-color-base;
140
+ }
141
+ }