@4399ywkf/design 1.3.12 → 2.1.0

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 (114) hide show
  1. package/dist/MaxTokenSlider/index.d.ts +25 -0
  2. package/dist/MaxTokenSlider/index.js +148 -0
  3. package/dist/MaxTokenSlider/style.d.ts +6 -0
  4. package/dist/MaxTokenSlider/style.js +14 -0
  5. package/dist/Table/components/ColumnSetting/index.js +25 -35
  6. package/dist/Table/components/ColumnSetting/style.d.ts +16 -0
  7. package/dist/Table/components/ColumnSetting/style.js +19 -0
  8. package/dist/Table/components/EnumFilter/index.d.ts +8 -8
  9. package/dist/Table/components/EnumFilter/index.js +34 -36
  10. package/dist/Table/components/EnumFilter/style.d.ts +54 -0
  11. package/dist/Table/components/EnumFilter/style.js +58 -0
  12. package/dist/Table/components/Export/RadioMode.d.ts +1 -5
  13. package/dist/Table/components/Export/RadioMode.js +10 -11
  14. package/dist/Table/components/Export/index.js +160 -207
  15. package/dist/Table/components/Export/style.d.ts +15 -0
  16. package/dist/Table/components/Export/style.js +19 -0
  17. package/dist/Table/components/FilterDropdown/index.d.ts +7 -7
  18. package/dist/Table/components/FilterDropdown/index.js +6 -7
  19. package/dist/Table/components/FilterDropdown/style.d.ts +13 -0
  20. package/dist/Table/components/FilterDropdown/style.js +17 -0
  21. package/dist/Table/components/FilterKeys/index.d.ts +2 -2
  22. package/dist/Table/components/FilterKeys/index.js +51 -69
  23. package/dist/Table/components/FilterKeys/style.d.ts +29 -0
  24. package/dist/Table/components/FilterKeys/style.js +33 -0
  25. package/dist/Table/components/Reload/index.js +8 -21
  26. package/dist/Table/components/SearchInput/index.d.ts +3 -4
  27. package/dist/Table/components/SearchInput/index.js +50 -38
  28. package/dist/Table/components/SearchInput/style.d.ts +11 -0
  29. package/dist/Table/components/SearchInput/style.js +15 -0
  30. package/dist/Table/components/TableSize/index.js +7 -10
  31. package/dist/Table/components/TableTitle/index.d.ts +1 -1
  32. package/dist/Table/components/TableTitle/index.js +36 -38
  33. package/dist/Table/components/TableTitle/style.d.ts +25 -0
  34. package/dist/Table/components/TableTitle/style.js +29 -0
  35. package/dist/Table/context.d.ts +32 -0
  36. package/dist/Table/context.js +31 -0
  37. package/dist/Table/hooks/index.d.ts +8 -0
  38. package/dist/Table/hooks/index.js +8 -0
  39. package/dist/Table/hooks/useColumnsInit.d.ts +6 -0
  40. package/dist/Table/hooks/useColumnsInit.js +44 -0
  41. package/dist/Table/hooks/useEmptyText.d.ts +11 -0
  42. package/dist/Table/hooks/useEmptyText.js +34 -0
  43. package/dist/Table/hooks/usePagination.d.ts +9 -0
  44. package/dist/Table/hooks/usePagination.js +50 -0
  45. package/dist/Table/hooks/useQuerySnapshot.d.ts +6 -0
  46. package/dist/Table/hooks/useQuerySnapshot.js +63 -0
  47. package/dist/Table/hooks/useRowSelection.d.ts +11 -0
  48. package/dist/Table/hooks/useRowSelection.js +34 -0
  49. package/dist/Table/hooks/useSearchEffect.d.ts +9 -0
  50. package/dist/Table/hooks/useSearchEffect.js +48 -0
  51. package/dist/Table/hooks/useTableChange.d.ts +10 -0
  52. package/dist/Table/hooks/useTableChange.js +56 -0
  53. package/dist/Table/hooks/useTriggerSearch.d.ts +22 -0
  54. package/dist/Table/hooks/useTriggerSearch.js +130 -0
  55. package/dist/Table/index.d.ts +1 -1
  56. package/dist/Table/index.js +25 -1
  57. package/dist/Table/store/createStore.d.ts +2 -0
  58. package/dist/Table/store/createStore.js +30 -0
  59. package/dist/Table/store/hooks.d.ts +33 -0
  60. package/dist/Table/store/hooks.js +98 -0
  61. package/dist/Table/store/slices/column/actions.d.ts +9 -0
  62. package/dist/Table/store/slices/column/actions.js +10 -0
  63. package/dist/Table/store/slices/column/initialState.d.ts +2 -0
  64. package/dist/Table/store/slices/column/initialState.js +3 -0
  65. package/dist/Table/store/slices/persist/actions.d.ts +10 -0
  66. package/dist/Table/store/slices/persist/actions.js +28 -0
  67. package/dist/Table/store/slices/persist/api.d.ts +8 -0
  68. package/dist/Table/store/slices/persist/api.js +40 -0
  69. package/dist/Table/store/slices/query/actions.d.ts +32 -0
  70. package/dist/Table/store/slices/query/actions.js +129 -0
  71. package/dist/Table/store/slices/query/initialState.d.ts +2 -0
  72. package/dist/Table/store/slices/query/initialState.js +5 -0
  73. package/dist/Table/store/slices/request/actions.d.ts +8 -0
  74. package/dist/Table/store/slices/request/actions.js +14 -0
  75. package/dist/Table/store/slices/request/initialState.d.ts +2 -0
  76. package/dist/Table/store/slices/request/initialState.js +7 -0
  77. package/dist/Table/store/slices/ui/actions.d.ts +11 -0
  78. package/dist/Table/store/slices/ui/actions.js +15 -0
  79. package/dist/Table/store/slices/ui/initialState.d.ts +2 -0
  80. package/dist/Table/store/slices/ui/initialState.js +4 -0
  81. package/dist/Table/store/types.d.ts +79 -0
  82. package/dist/Table/store/types.js +1 -0
  83. package/dist/Table/style.d.ts +3 -0
  84. package/dist/Table/style.js +10 -0
  85. package/dist/Table/table.d.ts +2 -8
  86. package/dist/Table/table.js +160 -185
  87. package/dist/Table/type.d.ts +50 -64
  88. package/dist/Table/type.js +1 -3
  89. package/dist/Table/utils/Provide.d.ts +6 -9
  90. package/dist/Table/utils/Provide.js +4 -258
  91. package/dist/Table/utils/columnKey.d.ts +2 -0
  92. package/dist/Table/utils/columnKey.js +6 -0
  93. package/dist/Table/utils/getColumn.d.ts +7 -7
  94. package/dist/Table/utils/getColumnEnumProps.d.ts +4 -2
  95. package/dist/Table/utils/getColumnEnumProps.js +8 -6
  96. package/dist/Table/utils/getColumnMerge.d.ts +7 -2
  97. package/dist/Table/utils/getColumnMerge.js +3 -2
  98. package/dist/Table/utils/getDateColumn.d.ts +8 -7
  99. package/dist/Table/utils/getDateColumn.js +22 -68
  100. package/dist/Table/utils/getInputColumn.d.ts +2 -1
  101. package/dist/Table/utils/getInputColumn.js +2 -6
  102. package/dist/Table/utils/getSort.d.ts +4 -2
  103. package/dist/Table/utils/getSort.js +15 -12
  104. package/dist/Table/utils/index.d.ts +5 -20
  105. package/dist/Table/utils/index.js +16 -136
  106. package/dist/index.d.ts +2 -0
  107. package/dist/index.js +3 -0
  108. package/package.json +34 -25
  109. package/dist/Table/components/ColumnSetting/index.css +0 -4
  110. package/dist/Table/components/EnumFilter/index.css +0 -57
  111. package/dist/Table/components/FilterDropdown/index.css +0 -11
  112. package/dist/Table/components/FilterKeys/index.css +0 -19
  113. package/dist/Table/components/SearchInput/style.css +0 -10
  114. package/dist/Table/style.css +0 -42
@@ -1,70 +1,43 @@
1
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
- var _excluded = ["title", "onSearch", "storageName", "columns", "dataSource", "pagination", "total", "size", "rowSelection"];
1
+ var _excluded = ["title", "onSearch", "request", "manualRequest", "params", "onRequestError", "renderRequestError", "renderRequestEmpty", "renderPagination", "storageName", "columns", "dataSource", "pagination", "total", "size", "rowSelection"];
3
2
  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); }
4
3
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
4
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
5
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
7
6
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
8
7
  function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
11
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
13
- function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
14
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
8
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
15
9
  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; }
16
10
  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; }
17
- import { useDeepCompareEffect } from 'ahooks';
18
11
  import { ConfigProvider, Table } from 'antd';
19
12
  import zhCN from 'antd/locale/zh_CN';
20
- import React, { forwardRef, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState } from 'react';
13
+ import React, { forwardRef, useContext, useEffect, useImperativeHandle, useLayoutEffect, useMemo } from 'react';
21
14
  import { useStore } from 'zustand';
22
15
  import TableTitle from "./components/TableTitle";
23
- import { genColumnKey, genRichColumnToColumn, mergePagination, mergeTablePagination } from "./utils";
24
- import { Container, StoreContext } from "./utils/Provide";
25
- import "./style.css";
26
-
27
- // 定义ref类型
28
-
29
- // 使用自定义hook来管理订阅
30
- var useStoreRef = function useStoreRef(selector) {
31
- var store = useContext(StoreContext);
32
- var ref = useRef(selector(store.getState()));
33
- useEffect(function () {
34
- var unsubscribe = store.subscribe(function (state) {
35
- ref.current = selector(state);
36
- });
37
- return unsubscribe;
38
- }, [store, selector]);
39
- return ref;
40
- };
16
+ import { TableContext } from "./context";
17
+ import { useColumnsInit, useEmptyText, usePagination, useQuerySnapshot, useRowSelection, useSearchEffect, useTableChange, useTriggerSearch } from "./hooks";
18
+ import { genRichColumnToColumn } from "./utils";
19
+ import { StoreContext } from "./utils/Provide";
20
+ import { useStyles } from "./style";
21
+ var EMPTY_COLUMNS = [];
41
22
  var CustomTable = /*#__PURE__*/forwardRef(function (props, ref) {
42
- var _restProps$className;
23
+ var _restProps$locale, _restProps$className, _restProps$locale2;
24
+ var _useStyles = useStyles(),
25
+ styles = _useStyles.styles,
26
+ cx = _useStyles.cx;
43
27
  var store = useContext(StoreContext);
44
- var _useStore = useStore(store),
45
- queryData = _useStore.queryData,
46
- _setPagination = _useStore.setPagination,
47
- setTotal = _useStore.setTotal,
48
- _setFilter = _useStore.setFilter,
49
- setStorageName = _useStore.setStorageName,
50
- readLocalData = _useStore.readLocalData,
51
- resetFilter = _useStore.resetFilter,
52
- _setSize = _useStore.setSize,
53
- setSortOrder = _useStore.setSortOrder,
54
- setColumnSetting = _useStore.setColumnSetting,
55
- setOffset = _useStore.setOffset,
56
- columnSetting = _useStore.columnSetting;
57
- var queryDataRef = useStoreRef(function (state) {
58
- return state.queryData;
59
- });
60
- var columnSettingRef = useStoreRef(function (state) {
61
- return state.columnSetting;
62
- });
63
28
  var title = props.title,
64
29
  onSearch = props.onSearch,
30
+ request = props.request,
31
+ _props$manualRequest = props.manualRequest,
32
+ manualRequest = _props$manualRequest === void 0 ? false : _props$manualRequest,
33
+ params = props.params,
34
+ onRequestError = props.onRequestError,
35
+ renderRequestError = props.renderRequestError,
36
+ renderRequestEmpty = props.renderRequestEmpty,
37
+ renderPagination = props.renderPagination,
65
38
  storageName = props.storageName,
66
39
  _props$columns = props.columns,
67
- propsColumns = _props$columns === void 0 ? [] : _props$columns,
40
+ propsColumns = _props$columns === void 0 ? EMPTY_COLUMNS : _props$columns,
68
41
  dataSource = props.dataSource,
69
42
  propsPagination = props.pagination,
70
43
  _props$total = props.total,
@@ -73,159 +46,161 @@ var CustomTable = /*#__PURE__*/forwardRef(function (props, ref) {
73
46
  size = _props$size === void 0 ? 'middle' : _props$size,
74
47
  propsRowSelection = props.rowSelection,
75
48
  restProps = _objectWithoutProperties(props, _excluded);
76
- var _useState = useState([]),
77
- _useState2 = _slicedToArray(_useState, 2),
78
- selectedRowKeys = _useState2[0],
79
- setSelectedRowKeys = _useState2[1];
80
49
 
81
- /** 计算出默认的分页 */
82
- var defaultPagination = mergeTablePagination(propsPagination, storageName);
50
+ // --- store actions ---
51
+ var setStorageName = useStore(store, function (s) {
52
+ return s.setStorageName;
53
+ });
54
+ var readLocalData = useStore(store, function (s) {
55
+ return s.readLocalData;
56
+ });
57
+ var setTotal = useStore(store, function (s) {
58
+ return s.setTotal;
59
+ });
60
+ var setSize = useStore(store, function (s) {
61
+ return s.setSize;
62
+ });
63
+ var setFilter = useStore(store, function (s) {
64
+ return s.setFilter;
65
+ });
66
+ var setPagination = useStore(store, function (s) {
67
+ return s.setPagination;
68
+ });
69
+ var setManualRequested = useStore(store, function (s) {
70
+ return s.setManualRequested;
71
+ });
72
+ var columnSetting = useStore(store, function (s) {
73
+ return s.columnSetting;
74
+ });
75
+ var requestLoading = useStore(store, function (s) {
76
+ return s.requestLoading;
77
+ });
78
+ var storeTotal = useStore(store, function (s) {
79
+ return s.total;
80
+ });
83
81
 
84
- // React 18: 使用forwardRef正确处理ref
85
- useImperativeHandle(ref, function () {
86
- return {
87
- setFilter: function setFilter(key, value, exact) {
88
- _setFilter(key, value, exact);
89
- },
90
- setPagination: function setPagination(page, pageSize) {
91
- _setPagination(page, pageSize);
92
- },
93
- setSize: function setSize(value) {
94
- _setSize(value);
95
- },
96
- queryData: queryData
97
- };
82
+ // --- domain hooks ---
83
+ var querySnapshot = useQuerySnapshot();
84
+ var _useTriggerSearch = useTriggerSearch({
85
+ request: request,
86
+ onSearch: onSearch,
87
+ params: params,
88
+ onRequestError: onRequestError
89
+ }),
90
+ triggerSearch = _useTriggerSearch.triggerSearch,
91
+ reload = _useTriggerSearch.reload,
92
+ reset = _useTriggerSearch.reset;
93
+ var mergedTotal = request ? storeTotal : total;
94
+ var pagination = usePagination(propsPagination, mergedTotal);
95
+ var onChangeTable = useTableChange(propsColumns);
96
+ var rowSelection = useRowSelection(propsRowSelection);
97
+ var emptyText = useEmptyText({
98
+ request: request,
99
+ renderRequestError: renderRequestError,
100
+ renderRequestEmpty: renderRequestEmpty,
101
+ defaultEmptyText: (_restProps$locale = restProps.locale) === null || _restProps$locale === void 0 ? void 0 : _restProps$locale.emptyText
102
+ });
103
+ useColumnsInit(propsColumns, storageName);
104
+ useSearchEffect(triggerSearch, {
105
+ request: request,
106
+ manualRequest: manualRequest,
107
+ params: params
98
108
  });
99
- useEffect(function () {
100
- if (storageName) {
101
- setStorageName(storageName);
102
- }
103
- var newTotal = total || (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) || 0;
104
- setTotal(newTotal);
105
- }, [storageName, total, dataSource === null || dataSource === void 0 ? void 0 : dataSource.length]);
106
109
 
107
- /** 合并出真实的值 */
108
- var pagination = mergePagination(defaultPagination, total);
110
+ // --- simple side effects ---
109
111
  useLayoutEffect(function () {
110
- if (storageName) {
111
- readLocalData(storageName);
112
- }
113
- }, [storageName]);
114
- useDeepCompareEffect(function () {
115
- var columnSettingList = [];
116
- propsColumns === null || propsColumns === void 0 || propsColumns.map(function (col, index) {
117
- var _col$dataIndex;
118
- var columnKey = genColumnKey(col.key || (Array.isArray(col.dataIndex) ? col.dataIndex.join('.') : (_col$dataIndex = col.dataIndex) === null || _col$dataIndex === void 0 ? void 0 : _col$dataIndex.toString()), index);
119
- if (col.defaultFilteredValue) {
120
- _setFilter(columnKey, col.defaultFilteredValue);
121
- }
122
- if (col.filteredValue) {
123
- _setFilter(columnKey, col.filteredValue);
124
- }
125
- if (col.defaultSortOrder) {
126
- setSortOrder(columnKey, col.defaultSortOrder);
127
- }
128
- if (col.sortOrder) {
129
- setSortOrder(columnKey, col.sortOrder);
130
- }
131
- columnSettingList.push({
132
- key: columnKey,
133
- disabled: col.disable,
134
- hidden: col.hidden
135
- });
136
- });
137
- if (!localStorage.getItem("".concat(storageName, "_columns"))) {
138
- setColumnSetting(columnSettingList);
139
- }
140
- }, [propsColumns, storageName]);
141
- useDeepCompareEffect(function () {
142
- if (queryData.limit != undefined) {
143
- if (onSearch) {
144
- onSearch(queryDataRef.current);
145
- }
146
- }
147
- }, [queryData.limit, queryData.order, queryData.filter, queryData.search, queryData.offset]);
148
- var onChangeTable = function onChangeTable(pagination, filters, sorter, extra) {
149
- var _pagination$current, _pagination$pageSize, _sorter$field, _findObj$sorter;
150
- switch (extra.action) {
151
- case 'paginate':
152
- _setPagination((_pagination$current = pagination.current) !== null && _pagination$current !== void 0 ? _pagination$current : 1, (_pagination$pageSize = pagination.pageSize) !== null && _pagination$pageSize !== void 0 ? _pagination$pageSize : 10);
153
- return;
154
- case 'sort':
155
- var columnKey = genColumnKey(sorter.columnKey || (Array.isArray(sorter.field) ? sorter.field.join('.') : (_sorter$field = sorter.field) === null || _sorter$field === void 0 ? void 0 : _sorter$field.toString()));
156
- var isMultiple = false;
157
- var findObj = propsColumns.find(function (column, index) {
158
- var _column$dataIndex;
159
- var colKey = genColumnKey(column.key || (Array.isArray(column.dataIndex) ? column.dataIndex.join('.') : (_column$dataIndex = column.dataIndex) === null || _column$dataIndex === void 0 ? void 0 : _column$dataIndex.toString()), index);
160
- return colKey === columnKey;
161
- });
162
- if (findObj !== null && findObj !== void 0 && (_findObj$sorter = findObj.sorter) !== null && _findObj$sorter !== void 0 && _findObj$sorter.multiple) {
163
- isMultiple = true;
164
- }
165
- setSortOrder(columnKey, sorter.order, isMultiple);
166
- return;
167
- case 'filter':
168
- Object.keys(filters).forEach(function (key) {
169
- _setFilter(key, filters[key]);
170
- });
171
- setOffset(0);
172
- return;
112
+ if (storageName) readLocalData(storageName);
113
+ var s = store.getState();
114
+ if (s.limit === undefined) {
115
+ var _ref, _propsPagination$page;
116
+ var ps = _typeof(propsPagination) === 'object' ? (_ref = (_propsPagination$page = propsPagination.pageSize) !== null && _propsPagination$page !== void 0 ? _propsPagination$page : propsPagination.defaultPageSize) !== null && _ref !== void 0 ? _ref : 20 : 20;
117
+ setPagination(1, ps);
173
118
  }
174
- };
119
+ }, [storageName, readLocalData, store, propsPagination, setPagination]);
175
120
  useEffect(function () {
176
- _setSize(size);
177
- }, [size]);
178
-
179
- /**
180
- * 接管Table的批量选择
181
- */
182
- var rowSelection = useMemo(function () {
183
- if (!propsRowSelection) {
184
- return undefined;
185
- } else {
186
- var propsRowSelectionOnChange = propsRowSelection.onChange;
187
- propsRowSelection.onChange = function (selectedRowKeys, selectedRows, info) {
188
- setSelectedRowKeys(selectedRowKeys);
189
- if (propsRowSelectionOnChange && typeof propsRowSelectionOnChange === 'function') {
190
- propsRowSelectionOnChange(selectedRowKeys, selectedRows, info);
191
- }
192
- };
193
- return propsRowSelection;
194
- }
195
- }, [propsRowSelection]);
121
+ if (storageName) setStorageName(storageName);
122
+ if (!request) setTotal(total || (dataSource === null || dataSource === void 0 ? void 0 : dataSource.length) || 0);
123
+ }, [storageName, total, dataSource === null || dataSource === void 0 ? void 0 : dataSource.length, setStorageName, setTotal, request]);
196
124
  useEffect(function () {
197
- var unsubscribe = store.subscribe(function (state) {
198
- queryDataRef.current = state.queryData;
199
- });
200
- return unsubscribe;
201
- }, [store]);
202
- return /*#__PURE__*/React.createElement(ConfigProvider, {
203
- locale: zhCN
204
- }, /*#__PURE__*/React.createElement(Container, {
205
- initValue: _objectSpread({
206
- setFilter: _setFilter,
207
- queryData: queryData,
125
+ setSize(size);
126
+ }, [size, setSize]);
127
+ useEffect(function () {
128
+ if (manualRequest) setManualRequested(false);
129
+ }, [manualRequest, setManualRequested]);
130
+
131
+ // --- ref ---
132
+ useImperativeHandle(ref, function () {
133
+ return {
134
+ setFilter: setFilter,
135
+ setPagination: setPagination,
136
+ setSize: setSize,
137
+ reload: reload,
138
+ reset: reset,
139
+ queryData: store.getState().getQuerySnapshot()
140
+ };
141
+ });
142
+
143
+ // --- context value ---
144
+ var ctxValue = useMemo(function () {
145
+ return {
208
146
  columns: propsColumns,
209
147
  title: title,
148
+ dataSource: dataSource,
149
+ isShowToggleColumns: restProps.isShowToggleColumns,
150
+ isShowSize: restProps.isShowSize,
151
+ isShowExport: restProps.isShowExport,
152
+ isShowReload: restProps.isShowReload,
153
+ quickInputToolTipRender: restProps.quickInputToolTipRender,
154
+ quickInputPlaceholder: restProps.quickInputPlaceholder,
155
+ rowSelection: propsRowSelection,
156
+ request: request,
157
+ manualRequest: manualRequest,
158
+ params: params,
210
159
  onSearch: onSearch,
211
- setSelectedRowKeys: setSelectedRowKeys,
212
- selectedRowKeys: selectedRowKeys
213
- }, restProps)
160
+ onRequestError: onRequestError,
161
+ renderRequestError: renderRequestError,
162
+ renderRequestEmpty: renderRequestEmpty,
163
+ triggerSearch: triggerSearch,
164
+ reload: reload,
165
+ reset: reset
166
+ };
167
+ }, [propsColumns, title, dataSource, restProps.isShowToggleColumns, restProps.isShowSize, restProps.isShowExport, restProps.isShowReload, restProps.quickInputToolTipRender, restProps.quickInputPlaceholder, propsRowSelection, request, manualRequest, params, onSearch, onRequestError, renderRequestError, renderRequestEmpty, triggerSearch, reload, reset]);
168
+ var data = request ? store.getState().requestDataSource : dataSource;
169
+ var useCustomPagination = !!renderPagination;
170
+ var paginationForTable = useCustomPagination || propsPagination === false ? false : pagination;
171
+ var paginationState = useMemo(function () {
172
+ var _pagination$current, _pagination$pageSize;
173
+ if (!useCustomPagination) return null;
174
+ var pCurrent = _typeof(pagination) === 'object' ? (_pagination$current = pagination.current) !== null && _pagination$current !== void 0 ? _pagination$current : 1 : 1;
175
+ var pPageSize = _typeof(pagination) === 'object' ? (_pagination$pageSize = pagination.pageSize) !== null && _pagination$pageSize !== void 0 ? _pagination$pageSize : 20 : 20;
176
+ return {
177
+ current: pCurrent,
178
+ pageSize: pPageSize,
179
+ total: mergedTotal,
180
+ onChange: setPagination
181
+ };
182
+ }, [useCustomPagination, pagination, mergedTotal, setPagination]);
183
+ return /*#__PURE__*/React.createElement(TableContext.Provider, {
184
+ value: ctxValue
185
+ }, /*#__PURE__*/React.createElement(ConfigProvider, {
186
+ locale: zhCN
214
187
  }, /*#__PURE__*/React.createElement(Table, _extends({}, restProps, {
215
- size: queryData.size,
216
- className: (_restProps$className = restProps === null || restProps === void 0 ? void 0 : restProps.className) !== null && _restProps$className !== void 0 ? _restProps$className : 'rich-table',
188
+ size: querySnapshot.size,
189
+ className: cx(styles.table, (_restProps$className = restProps === null || restProps === void 0 ? void 0 : restProps.className) !== null && _restProps$className !== void 0 ? _restProps$className : 'rich-table'),
217
190
  title: function title(currentPageData) {
218
191
  return /*#__PURE__*/React.createElement(TableTitle, {
219
192
  currentPageData: currentPageData
220
193
  });
221
194
  },
222
- columns: genRichColumnToColumn(propsColumns, queryDataRef.current, _setFilter, columnSettingRef.current, dataSource),
223
- dataSource: dataSource,
224
- pagination: propsPagination === false ? false : pagination,
195
+ columns: genRichColumnToColumn(propsColumns, querySnapshot, setFilter, columnSetting, data),
196
+ dataSource: data,
197
+ pagination: paginationForTable,
225
198
  onChange: onChangeTable,
226
- rowSelection: rowSelection
227
- }))));
199
+ rowSelection: rowSelection,
200
+ loading: request ? requestLoading : restProps.loading,
201
+ locale: _objectSpread(_objectSpread({}, (_restProps$locale2 = restProps.locale) !== null && _restProps$locale2 !== void 0 ? _restProps$locale2 : {}), {}, {
202
+ emptyText: emptyText
203
+ })
204
+ })), paginationState && (renderPagination === null || renderPagination === void 0 ? void 0 : renderPagination(paginationState))));
228
205
  });
229
-
230
- // React 18: 使用forwardRef包装组件
231
206
  export default CustomTable;
@@ -1,46 +1,8 @@
1
1
  /// <reference types="react" />
2
- import type { TablePaginationConfig } from 'antd';
3
- import type { ColumnProps, TableProps } from 'antd/lib/table';
4
- export interface BearState {
5
- queryData: {
6
- defaultPageSize: number;
7
- defaultCurrent: number;
8
- offset?: number;
9
- limit?: number;
10
- search?: string;
11
- filter?: {
12
- [index: string]: {
13
- value: any[];
14
- exact: boolean;
15
- };
16
- };
17
- sort?: string;
18
- order?: 'descend' | 'desc' | string | null;
19
- storageName?: string;
20
- multipleSort?: any[];
21
- total?: number;
22
- size?: 'large' | 'middle' | 'small';
23
- };
24
- columnSetting: {
25
- key: string;
26
- hidden?: boolean;
27
- disabled?: boolean | {
28
- checkbox?: boolean;
29
- };
30
- }[];
31
- setPagination: (newPage: number, newPageSize: number) => void;
32
- setFilter: (key: string, value: any, exact?: boolean) => void;
33
- setStorageName: (key: string) => void;
34
- readLocalData: (key?: string) => void;
35
- resetFilter: () => void;
36
- setSearch: (value: string) => void;
37
- setSortOrder: (key: string, value?: 'descend' | 'ascend' | string | null, isMultiple?: boolean) => void;
38
- setColumnSetting: (value: any[]) => void;
39
- setTotal: (value: number) => void;
40
- setSize: (value: 'large' | 'middle' | 'small') => void;
41
- setQueryData: (value: any) => void;
42
- setOffset: (value: number) => void;
43
- }
2
+ import type { TablePaginationConfig, TableProps } from 'antd/es/table';
3
+ import type { ColumnType } from 'antd/es/table';
4
+ import type { FilterInputValue, QuerySnapshot, TableStore } from './store/types';
5
+ export type BearState = TableStore;
44
6
  interface FullFilterOptionsType {
45
7
  text?: string;
46
8
  value?: string | number;
@@ -48,17 +10,18 @@ interface FullFilterOptionsType {
48
10
  export interface FullFilterType {
49
11
  type: 'varchar' | 'enum' | 'date' | 'dateWeek' | 'dateYear' | 'dateMonth' | 'dateRange';
50
12
  options?: FullFilterOptionsType[];
51
- value?: any[];
13
+ value?: React.Key[];
14
+ optionLabelProp?: 'value' | 'text';
52
15
  filterKeyName?: 'value' | 'text';
53
- showTime?: Object | boolean;
16
+ showTime?: object | boolean;
54
17
  format?: string;
55
18
  mode?: 'multiple' | 'radio';
56
19
  exact?: boolean;
57
- valueRenderer?: (values: any[]) => React.ReactNode;
20
+ valueRenderer?: (values: React.Key[]) => React.ReactNode;
58
21
  valueSeparator?: string;
59
22
  tagClassName?: string;
60
23
  }
61
- export interface RichColumn<RecordType> extends ColumnProps<RecordType> {
24
+ export interface RichColumn<RecordType = Record<string, unknown>> extends ColumnType<RecordType> {
62
25
  fullFilter?: FullFilterType;
63
26
  visible?: boolean;
64
27
  disable?: boolean | {
@@ -73,31 +36,54 @@ export interface RichColumn<RecordType> extends ColumnProps<RecordType> {
73
36
  export interface ExportParams {
74
37
  name?: string;
75
38
  mode?: string;
76
- query?: () => Promise<any>;
39
+ query?: () => Promise<unknown>;
40
+ }
41
+ export interface TableRequestResult<T = unknown> {
42
+ data: T[];
43
+ total?: number;
44
+ success?: boolean;
45
+ message?: string;
46
+ }
47
+ export type TableRequestParams = QuerySnapshot & {
48
+ current: number;
49
+ pageSize: number;
50
+ [key: string]: unknown;
51
+ };
52
+ export interface TableActionRef {
53
+ setFilter: (key: string, value: FilterInputValue | null | undefined, exact?: boolean) => void;
54
+ setPagination: (page: number, pageSize: number) => void;
55
+ setSize: (value: 'large' | 'middle' | 'small') => void;
56
+ reload: () => Promise<void>;
57
+ reset: () => void;
58
+ queryData: QuerySnapshot;
59
+ }
60
+ export interface TablePaginationState {
61
+ current: number;
62
+ pageSize: number;
63
+ total: number;
64
+ onChange: (page: number, pageSize: number) => void;
77
65
  }
78
- export interface TableState extends TableProps {
79
- /**
80
- * @description 继承Table的Columns,新增了一些额外参数用于控制其他
81
- */
82
- columns?: RichColumn<any>[];
83
- /**
84
- * @description 表格的数据源
85
- */
86
- dataSource?: any[];
87
- /**
88
- * @description 沿用Antd 分页组件
89
- */
66
+ export interface TableState extends TableProps<any> {
67
+ columns?: RichColumn<unknown>[];
68
+ dataSource?: unknown[];
90
69
  pagination?: false | TablePaginationConfig;
91
70
  total?: number;
92
71
  storageName?: string;
93
- onSearch?: (payload: BearState['queryData']) => void;
94
- title?: (data: any) => any;
72
+ onSearch?: (payload: QuerySnapshot) => void;
73
+ request?: (params: TableRequestParams) => Promise<TableRequestResult<unknown>> | TableRequestResult<unknown>;
74
+ manualRequest?: boolean;
75
+ params?: Record<string, unknown>;
76
+ onRequestError?: (error: Error) => void;
77
+ renderRequestError?: (error: Error) => React.ReactNode;
78
+ renderRequestEmpty?: () => React.ReactNode;
79
+ renderPagination?: (state: TablePaginationState) => React.ReactNode;
80
+ title?: (data: readonly unknown[]) => React.ReactNode;
95
81
  isShowToggleColumns?: boolean;
96
82
  size?: 'large' | 'middle' | 'small';
97
83
  isShowExport?: boolean | ExportParams;
98
84
  isShowReload?: boolean;
99
- quickInputToolTipRender?: (v: any[]) => React.ReactNode;
100
- quickInputPlaceholder?: (v: any[]) => string;
85
+ quickInputToolTipRender?: (v: unknown[]) => React.ReactNode;
86
+ quickInputPlaceholder?: (v: unknown[]) => string;
101
87
  [key: string]: any;
102
88
  }
103
89
  declare const _default: {};
@@ -105,7 +91,7 @@ export default _default;
105
91
  export type TableTypes = {
106
92
  BearState: BearState;
107
93
  FullFilterType: FullFilterType;
108
- RichColumn: RichColumn<any>;
94
+ RichColumn: RichColumn<unknown>;
109
95
  ExportParams: ExportParams;
110
96
  TableState: TableState;
111
97
  };
@@ -1,3 +1 @@
1
- // Replace the default export with this
2
- export default {};
3
- // Add a type export - this allows `import type TableTypes from './type'`
1
+ export default {};
@@ -1,11 +1,8 @@
1
1
  import React from 'react';
2
- import { StoreApi } from 'zustand';
3
- import type { BearState } from '../type';
4
- declare const TableContext: React.Context<any>;
5
- declare const Container: React.FC<{
6
- initValue: any;
2
+ import type { StoreApi } from 'zustand';
3
+ import type { TableStore } from '../store/types';
4
+ declare const StoreContext: React.Context<StoreApi<TableStore>>;
5
+ declare const StoreProvider: ({ children }: {
7
6
  children: React.ReactNode;
8
- }>;
9
- declare const StoreContext: React.Context<StoreApi<BearState>>;
10
- declare const StoreProvider: ({ children }: any) => React.FunctionComponentElement<React.ProviderProps<StoreApi<BearState>>>;
11
- export { Container, StoreContext, StoreProvider, TableContext };
7
+ }) => React.FunctionComponentElement<React.ProviderProps<StoreApi<TableStore>>>;
8
+ export { StoreContext, StoreProvider };