@ant-design/pro-components 3.1.1-1 → 3.1.3-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 (165) hide show
  1. package/dist/pro-components.min.js +1 -1
  2. package/es/card/components/Card/index.js +17 -3
  3. package/es/descriptions/index.d.ts +0 -2
  4. package/es/descriptions/index.js +1 -5
  5. package/es/descriptions/useFetchData.js +17 -2
  6. package/es/field/components/Cascader/index.d.ts +3 -3
  7. package/es/field/components/Cascader/index.js +0 -2
  8. package/es/field/components/Checkbox/index.d.ts +2 -2
  9. package/es/field/components/Checkbox/index.js +2 -0
  10. package/es/field/components/Code/index.js +1 -8
  11. package/es/field/components/ColorPicker/index.d.ts +2 -2
  12. package/es/field/components/DatePicker/index.d.ts +2 -2
  13. package/es/field/components/DatePicker/index.js +3 -5
  14. package/es/field/components/FromNow/index.d.ts +1 -0
  15. package/es/field/components/FromNow/index.js +2 -2
  16. package/es/field/components/Money/index.js +0 -1
  17. package/es/field/components/Progress/index.js +1 -2
  18. package/es/field/components/Radio/index.d.ts +1 -1
  19. package/es/field/components/RangePicker/index.d.ts +2 -2
  20. package/es/field/components/RangePicker/index.js +3 -11
  21. package/es/field/components/Segmented/index.d.ts +1 -1
  22. package/es/field/components/Select/LightSelect/index.d.ts +3 -1
  23. package/es/field/components/Select/LightSelect/index.js +3 -1
  24. package/es/field/components/Select/index.d.ts +2 -2
  25. package/es/field/components/Select/index.js +1 -4
  26. package/es/field/components/Switch/index.d.ts +1 -1
  27. package/es/field/components/Switch/index.js +2 -1
  28. package/es/field/components/TimePicker/index.d.ts +2 -0
  29. package/es/field/components/TimePicker/index.js +9 -8
  30. package/es/field/components/TreeSelect/index.d.ts +3 -3
  31. package/es/field/components/TreeSelect/index.js +2 -2
  32. package/es/form/BaseForm/BaseForm.js +16 -2
  33. package/es/form/BaseForm/LightWrapper/index.js +7 -1
  34. package/es/form/BaseForm/Submitter/index.js +2 -2
  35. package/es/form/components/Cascader/index.d.ts +1 -1
  36. package/es/form/components/ColorPicker/index.d.ts +1 -1
  37. package/es/form/components/DatePicker/DateTimePicker.js +1 -0
  38. package/es/form/components/DateRangePicker/DateTimeRangePicker.d.ts +1 -1
  39. package/es/form/components/DateRangePicker/DateTimeRangePicker.js +1 -3
  40. package/es/form/components/Digit/DigitRange.d.ts +2 -2
  41. package/es/form/components/Digit/index.d.ts +1 -1
  42. package/es/form/components/Field/index.d.ts +0 -1
  43. package/es/form/components/Field/index.js +3 -5
  44. package/es/form/components/FormItem/FormItemRender/index.d.ts +1 -0
  45. package/es/form/components/FormItem/Group/index.js +17 -3
  46. package/es/form/components/FormItem/index.d.ts +1 -0
  47. package/es/form/components/FormItem/index.js +16 -31
  48. package/es/form/components/FormItem/warpField.js +1 -0
  49. package/es/form/components/Money/index.d.ts +1 -1
  50. package/es/form/components/Radio/index.d.ts +2 -2
  51. package/es/form/components/Rate/index.d.ts +1 -1
  52. package/es/form/components/Slider/index.d.ts +1 -1
  53. package/es/form/components/TextArea/index.d.ts +1 -1
  54. package/es/form/helpers/grid.d.ts +7 -3
  55. package/es/form/helpers/grid.js +19 -4
  56. package/es/form/layouts/DrawerForm/index.js +16 -2
  57. package/es/form/layouts/LightFilter/index.js +7 -4
  58. package/es/form/layouts/ModalForm/index.js +17 -2
  59. package/es/form/layouts/ProForm/index.d.ts +1 -1
  60. package/es/form/layouts/QueryFilter/index.js +17 -3
  61. package/es/form/layouts/StepsForm/index.js +16 -2
  62. package/es/layout/ProLayout.js +33 -5
  63. package/es/layout/components/AppsLogoComponents/style/index.js +1 -0
  64. package/es/layout/components/SettingDrawer/index.js +33 -5
  65. package/es/layout/components/SiderMenu/BaseMenu.js +0 -2
  66. package/es/list/ListView.js +6 -3
  67. package/es/provider/index.d.ts +0 -4
  68. package/es/provider/index.js +1 -1
  69. package/es/table/Store/Provide.d.ts +0 -1
  70. package/es/table/Store/Provide.js +1 -1
  71. package/es/table/Table.js +0 -1
  72. package/es/table/typing.d.ts +0 -4
  73. package/es/table/useFetchData.js +16 -2
  74. package/es/table/utils/cellRenderToFromItem.d.ts +1 -1
  75. package/es/table/utils/columnRender.d.ts +1 -1
  76. package/es/table/utils/columnRender.js +1 -4
  77. package/es/table/utils/genProColumnToColumn.d.ts +2 -2
  78. package/es/table/utils/index.d.ts +0 -10
  79. package/es/table/utils/index.js +0 -12
  80. package/es/utils/components/FieldLabel/index.js +3 -3
  81. package/es/utils/components/FieldLabel/style.js +23 -4
  82. package/es/utils/components/FilterDropdown/index.js +1 -1
  83. package/es/utils/components/FilterDropdown/style.js +10 -0
  84. package/es/utils/pickProProps/index.js +1 -1
  85. package/es/utils/useEditableArray/index.d.ts +1 -1
  86. package/es/utils/useEditableArray/index.js +1 -1
  87. package/es/utils/useLazyKVMap.d.ts +5 -0
  88. package/es/utils/useLazyKVMap.js +28 -0
  89. package/es/utils/useMediaQuery/index.d.ts +2 -2
  90. package/es/utils/usePagination.d.ts +8 -0
  91. package/es/utils/usePagination.js +67 -0
  92. package/es/utils/useSelection.d.ts +19 -0
  93. package/es/utils/useSelection.js +86 -0
  94. package/lib/card/components/Card/index.js +16 -2
  95. package/lib/descriptions/index.d.ts +0 -2
  96. package/lib/descriptions/index.js +1 -5
  97. package/lib/descriptions/useFetchData.js +17 -2
  98. package/lib/field/components/Cascader/index.js +0 -2
  99. package/lib/field/components/Checkbox/index.js +2 -0
  100. package/lib/field/components/Code/index.js +1 -8
  101. package/lib/field/components/DatePicker/index.js +3 -5
  102. package/lib/field/components/FromNow/index.d.ts +1 -0
  103. package/lib/field/components/FromNow/index.js +2 -2
  104. package/lib/field/components/Money/index.js +0 -1
  105. package/lib/field/components/Progress/index.js +1 -2
  106. package/lib/field/components/RangePicker/index.js +3 -11
  107. package/lib/field/components/Select/LightSelect/index.d.ts +2 -0
  108. package/lib/field/components/Select/LightSelect/index.js +3 -1
  109. package/lib/field/components/Select/index.js +1 -4
  110. package/lib/field/components/Switch/index.js +2 -1
  111. package/lib/field/components/TimePicker/index.d.ts +2 -0
  112. package/lib/field/components/TimePicker/index.js +9 -8
  113. package/lib/field/components/TreeSelect/index.js +2 -2
  114. package/lib/form/BaseForm/BaseForm.js +16 -2
  115. package/lib/form/BaseForm/LightWrapper/index.js +7 -1
  116. package/lib/form/BaseForm/Submitter/index.js +2 -2
  117. package/lib/form/components/DatePicker/DateTimePicker.js +1 -0
  118. package/lib/form/components/DateRangePicker/DateTimeRangePicker.d.ts +1 -1
  119. package/lib/form/components/DateRangePicker/DateTimeRangePicker.js +1 -3
  120. package/lib/form/components/Field/index.d.ts +0 -1
  121. package/lib/form/components/Field/index.js +1 -3
  122. package/lib/form/components/FormItem/FormItemRender/index.d.ts +1 -0
  123. package/lib/form/components/FormItem/Group/index.js +16 -2
  124. package/lib/form/components/FormItem/index.d.ts +1 -0
  125. package/lib/form/components/FormItem/index.js +16 -31
  126. package/lib/form/components/FormItem/warpField.js +1 -0
  127. package/lib/form/helpers/grid.d.ts +7 -3
  128. package/lib/form/helpers/grid.js +20 -4
  129. package/lib/form/layouts/DrawerForm/index.js +16 -2
  130. package/lib/form/layouts/LightFilter/index.js +7 -4
  131. package/lib/form/layouts/ModalForm/index.js +17 -2
  132. package/lib/form/layouts/QueryFilter/index.js +16 -2
  133. package/lib/form/layouts/StepsForm/index.js +16 -2
  134. package/lib/layout/ProLayout.js +32 -4
  135. package/lib/layout/components/AppsLogoComponents/style/index.js +1 -0
  136. package/lib/layout/components/SettingDrawer/index.js +32 -4
  137. package/lib/layout/components/SiderMenu/BaseMenu.js +0 -2
  138. package/lib/list/ListView.js +7 -4
  139. package/lib/provider/index.d.ts +0 -4
  140. package/lib/provider/index.js +1 -1
  141. package/lib/table/Store/Provide.d.ts +0 -1
  142. package/lib/table/Store/Provide.js +1 -1
  143. package/lib/table/Table.js +0 -1
  144. package/lib/table/typing.d.ts +0 -4
  145. package/lib/table/useFetchData.js +16 -2
  146. package/lib/table/utils/cellRenderToFromItem.d.ts +1 -1
  147. package/lib/table/utils/columnRender.d.ts +1 -1
  148. package/lib/table/utils/columnRender.js +1 -4
  149. package/lib/table/utils/genProColumnToColumn.d.ts +2 -2
  150. package/lib/table/utils/index.d.ts +0 -10
  151. package/lib/table/utils/index.js +3 -15
  152. package/lib/utils/components/FieldLabel/index.js +3 -3
  153. package/lib/utils/components/FieldLabel/style.js +23 -4
  154. package/lib/utils/components/FilterDropdown/index.js +1 -1
  155. package/lib/utils/components/FilterDropdown/style.js +10 -0
  156. package/lib/utils/pickProProps/index.js +1 -1
  157. package/lib/utils/useEditableArray/index.d.ts +1 -1
  158. package/lib/utils/useEditableArray/index.js +2 -2
  159. package/lib/utils/useLazyKVMap.d.ts +5 -0
  160. package/lib/utils/useLazyKVMap.js +34 -0
  161. package/lib/utils/usePagination.d.ts +8 -0
  162. package/lib/utils/usePagination.js +74 -0
  163. package/lib/utils/useSelection.d.ts +19 -0
  164. package/lib/utils/useSelection.js +93 -0
  165. package/package.json +2 -1
@@ -66,13 +66,27 @@ const useFetchData = (getData, defaultData, options) => {
66
66
  */
67
67
  const tableLoadingValue = typeof options?.loading === 'object' ? options?.loading?.spinning : options?.loading;
68
68
  const [tableLoading, setTableLoadingInner] = (0, _util.useControlledState)(false, tableLoadingValue);
69
+
70
+ /**
71
+ * 使用 useRefFunction 包装回调,确保引用稳定
72
+ */
73
+ const onLoadingChange = (0, _utils.useRefFunction)(loading => {
74
+ options?.onLoadingChange?.(loading);
75
+ });
76
+
77
+ /**
78
+ * 包装 setTableLoading,使用 queueMicrotask 延迟回调调用
79
+ * 避免在渲染阶段调用外部回调导致的 React 警告
80
+ */
69
81
  const setTableLoading = (0, _react.useCallback)(updater => {
70
82
  setTableLoadingInner(prev => {
71
83
  const next = typeof updater === 'function' ? updater(prev) : updater;
72
- options?.onLoadingChange?.(next);
84
+ queueMicrotask(() => {
85
+ onLoadingChange(next);
86
+ });
73
87
  return next;
74
88
  });
75
- }, [options?.onLoadingChange]);
89
+ }, [onLoadingChange]);
76
90
 
77
91
  /**
78
92
  * 表示页面信息的类型
@@ -1,4 +1,4 @@
1
- import { AnyObject } from 'antd/lib/_util/type';
1
+ import type { AnyObject } from 'antd/lib/_util/type';
2
2
  import React from 'react';
3
3
  import type { ProFieldEmptyText } from '../../field';
4
4
  import type { ProFormFieldProps } from '../../form';
@@ -1,4 +1,4 @@
1
- import { AnyObject } from 'antd/lib/_util/type';
1
+ import type { AnyObject } from 'antd/lib/_util/type';
2
2
  import React from 'react';
3
3
  import type { ProFieldEmptyText } from '../../field';
4
4
  import type { ProSchemaComponentTypes, UseEditableUtilType } from '../../utils';
@@ -25,10 +25,7 @@ const renderColumnsTitle = item => {
25
25
  } = item;
26
26
  const ellipsis = typeof item?.ellipsis === 'boolean' ? item?.ellipsis : item?.ellipsis?.showTitle;
27
27
  if (title && typeof title === 'function') {
28
- return title(item, 'table', /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.LabelIconTip, {
29
- label: null,
30
- tooltip: item.tooltip
31
- }));
28
+ return title(item, 'table', null);
32
29
  }
33
30
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.LabelIconTip, {
34
31
  label: title,
@@ -1,6 +1,6 @@
1
1
  import type { TableColumnType, TableProps } from 'antd';
2
- import { AnyObject } from 'antd/lib/_util/type';
3
- import { SortOrder } from 'antd/lib/table/interface';
2
+ import type { AnyObject } from 'antd/lib/_util/type';
3
+ import type { SortOrder } from 'antd/lib/table/interface';
4
4
  import type { ProFieldEmptyText } from '../../field';
5
5
  import type { ProSchemaComponentTypes, UseEditableUtilType } from '../../utils';
6
6
  import type { ContainerType } from '../Store/Provide';
@@ -75,22 +75,12 @@ export declare const flattenColumns: (data: any[]) => any[];
75
75
  * @returns 是否为本地筛选
76
76
  */
77
77
  export declare const isLocalFilter: <T>(filters: ProColumnType<T>['filters'], onFilter: ProColumnType<T>['onFilter']) => boolean;
78
- /**
79
- * @deprecated typo kept for backward compatibility
80
- * use `isLocalFilter` instead
81
- */
82
- export declare const isLocaleFilter: <T>(filters: ProColumnType<T>['filters'], onFilter: ProColumnType<T>['onFilter']) => boolean;
83
78
  /**
84
79
  * 判断是否为本地排序
85
80
  * @param sorter 排序配置
86
81
  * @returns 是否为本地排序
87
82
  */
88
83
  export declare const isLocalSorter: <T>(sorter: ProSorter<T>) => boolean;
89
- /**
90
- * @deprecated typo kept for backward compatibility
91
- * use `isLocalSorter` instead
92
- */
93
- export declare const isLocaleSorter: <T>(sorter: ProSorter<T>) => boolean;
94
84
  /**
95
85
  * 获取服务端筛选数据
96
86
  * @param filters 筛选数据
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isMergeCell = exports.isLocaleSorter = exports.isLocaleFilter = exports.isLocalSorter = exports.isLocalFilter = exports.isBordered = exports.getServerSorterResult = exports.getServerFilterResult = exports.genColumnKey = exports.flattenColumns = exports.checkUndefinedOrNull = void 0;
6
+ exports.isMergeCell = exports.isLocalSorter = exports.isLocalFilter = exports.isBordered = exports.getServerSorterResult = exports.getServerFilterResult = exports.genColumnKey = exports.flattenColumns = exports.checkUndefinedOrNull = void 0;
7
7
  exports.mergePagination = mergePagination;
8
8
  exports.parseServerDefaultColumnConfig = exports.parseProSortOrder = exports.parseProFilteredValue = exports.parseDataIndex = void 0;
9
9
  exports.postDataPipeline = postDataPipeline;
@@ -186,35 +186,23 @@ const isLocalFilter = (filters, onFilter) => {
186
186
  return !!filters && !!onFilter;
187
187
  };
188
188
 
189
- /**
190
- * @deprecated typo kept for backward compatibility
191
- * use `isLocalFilter` instead
192
- */
193
- exports.isLocalFilter = isLocalFilter;
194
- const isLocaleFilter = exports.isLocaleFilter = isLocalFilter;
195
-
196
189
  /**
197
190
  * 判断是否为本地排序
198
191
  * @param sorter 排序配置
199
192
  * @returns 是否为本地排序
200
193
  */
194
+ exports.isLocalFilter = isLocalFilter;
201
195
  const isLocalSorter = sorter => {
202
196
  return typeof sorter === 'function' || typeof sorter === 'object' && typeof sorter.compare === 'function';
203
197
  };
204
198
 
205
- /**
206
- * @deprecated typo kept for backward compatibility
207
- * use `isLocalSorter` instead
208
- */
209
- exports.isLocalSorter = isLocalSorter;
210
- const isLocaleSorter = exports.isLocaleSorter = isLocalSorter;
211
-
212
199
  /**
213
200
  * 获取服务端筛选数据
214
201
  * @param filters 筛选数据
215
202
  * @param columns 列配置
216
203
  * @returns 服务端筛选数据
217
204
  */
205
+ exports.isLocalSorter = isLocalSorter;
218
206
  const getServerFilterResult = (filters, columns) => {
219
207
  // 过滤掉本地筛选的列
220
208
  return Object.entries(filters).reduce((acc, [key, value]) => {
@@ -34,7 +34,6 @@ const FieldLabelFunction = (props, ref) => {
34
34
  } = _antd.ConfigProvider?.useConfig?.() || {
35
35
  componentSize: 'middle'
36
36
  };
37
- const size = componentSize;
38
37
  const {
39
38
  getPrefixCls
40
39
  } = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext);
@@ -119,10 +118,11 @@ const FieldLabelFunction = (props, ref) => {
119
118
  return aLabel || placeholder;
120
119
  };
121
120
  return wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
122
- className: (0, _clsx.clsx)(prefixCls, hashId, `${prefixCls}-${props.size ?? size ?? 'middle'}`, {
121
+ className: (0, _clsx.clsx)(prefixCls, hashId, `${prefixCls}-${props.size ?? componentSize ?? 'middle'}`, {
122
+ [`${prefixCls}-${variant || 'borderless'}-active`]: (Array.isArray(value) ? value.length > 0 : !!value) || value === 0,
123
123
  [`${prefixCls}-active`]: (Array.isArray(value) ? value.length > 0 : !!value) || value === 0,
124
124
  [`${prefixCls}-disabled`]: disabled,
125
- [`${prefixCls}-bordered`]: variant !== 'borderless',
125
+ [`${prefixCls}-outlined`]: variant === 'outlined',
126
126
  [`${prefixCls}-allow-clear`]: allowClear
127
127
  }, className),
128
128
  style: style,
@@ -16,7 +16,8 @@ const genProStyle = token => {
16
16
  paddingInline: 8,
17
17
  fontSize: token.fontSize,
18
18
  lineHeight: '30px',
19
- borderRadius: '2px',
19
+ borderRadius: token.borderRadius,
20
+ cornerShape: 'squircle',
20
21
  cursor: 'pointer',
21
22
  '&:hover': {
22
23
  backgroundColor: token.colorBgTextHover
@@ -24,7 +25,6 @@ const genProStyle = token => {
24
25
  '&-active': {
25
26
  paddingBlock: 0,
26
27
  paddingInline: 8,
27
- backgroundColor: token.colorBgTextHover,
28
28
  [`&${token.componentCls}-allow-clear:hover:not(${token.componentCls}-disabled)`]: {
29
29
  [`${token.componentCls}-arrow`]: {
30
30
  display: 'none'
@@ -89,12 +89,31 @@ const genProStyle = token => {
89
89
  fontSize: '6px'
90
90
  }
91
91
  },
92
- '&-bordered': {
92
+ '&-outlined': {
93
93
  height: '32px',
94
94
  paddingBlock: 0,
95
95
  paddingInline: 8,
96
96
  border: `${token.lineWidth}px solid ${token.colorBorder}`,
97
- borderRadius: '@border-radius-base'
97
+ borderRadius: token.borderRadius,
98
+ '&-active': {
99
+ backgroundColor: 'none'
100
+ }
101
+ },
102
+ '&-borderless': {
103
+ height: '32px',
104
+ '&-active': {
105
+ backgroundColor: token.colorBgTextHover
106
+ }
107
+ },
108
+ '&-filled': {
109
+ height: '32px',
110
+ paddingBlock: 0,
111
+ paddingInline: 8,
112
+ border: 'none',
113
+ borderRadius: token.borderRadius,
114
+ '&-active': {
115
+ backgroundColor: token.colorBgContainer
116
+ }
98
117
  },
99
118
  '&-bordered&-small': {
100
119
  height: '24px',
@@ -67,7 +67,7 @@ const FilterDropdown = props => {
67
67
  })]
68
68
  }),
69
69
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
70
- className: `${prefixCls}-label ${hashId}`.trim(),
70
+ className: (0, _clsx.clsx)(`${prefixCls}-label`, hashId),
71
71
  children: label
72
72
  })
73
73
  }));
@@ -10,6 +10,16 @@ const genProStyle = token => {
10
10
  [`${token.componentCls}-label`]: {
11
11
  cursor: 'pointer'
12
12
  },
13
+ [`${token.componentCls}-label-bordered`]: {
14
+ display: 'inline-flex',
15
+ alignItems: 'center',
16
+ height: token.controlHeight,
17
+ paddingBlock: 0,
18
+ paddingInline: token.paddingSM,
19
+ border: `${token.lineWidth}px solid ${token.colorBorder}`,
20
+ borderRadius: token.borderRadius,
21
+ boxSizing: 'border-box'
22
+ },
13
23
  [`${token.componentCls}-overlay`]: {
14
24
  minWidth: '200px',
15
25
  marginBlockStart: '4px'
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.pickProProps = pickProProps;
7
- const proFieldProps = `valueType request plain formItemRender render text formItemProps valueEnum`;
7
+ const proFieldProps = `valueType request formItemRender render text formItemProps valueEnum`;
8
8
  const proFormProps = `fieldProps isDefaultDom groupProps contentRender submitterProps submitter`;
9
9
  function pickProProps(props, customValueType = false) {
10
10
  const propList = `${proFieldProps} ${proFormProps}`.split(/[\s\n]+/);
@@ -1,5 +1,5 @@
1
1
  import type { FormInstance, FormProps } from 'antd';
2
- import { AnyObject } from 'antd/lib/_util/type';
2
+ import type { AnyObject } from 'antd/lib/_util/type';
3
3
  import type { NamePath } from 'antd/lib/form/interface';
4
4
  import type { GetRowKey } from 'antd/lib/table/interface';
5
5
  import React from 'react';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
@@ -14,7 +14,6 @@ exports.useEditableArray = useEditableArray;
14
14
  var _icons = require("@ant-design/icons");
15
15
  var _util = require("@rc-component/util");
16
16
  var _antd = require("antd");
17
- var _useLazyKVMap = _interopRequireDefault(require("antd/lib/table/hooks/useLazyKVMap"));
18
17
  var _react = _interopRequireWildcard(require("react"));
19
18
  var _ = require("..");
20
19
  var _provider = require("../../provider");
@@ -22,6 +21,7 @@ var _ProFormContext = require("../components/ProFormContext");
22
21
  var _useDeepCompareEffect = require("../hooks/useDeepCompareEffect");
23
22
  var _usePrevious = require("../hooks/usePrevious");
24
23
  var _merge = require("../merge");
24
+ var _useLazyKVMap = _interopRequireDefault(require("../useLazyKVMap"));
25
25
  var _jsxRuntime = require("react/jsx-runtime");
26
26
  /* eslint-disable react-hooks/exhaustive-deps */
27
27
 
@@ -0,0 +1,5 @@
1
+ import type { AnyObject } from 'antd/lib/_util/type';
2
+ import type { GetRowKey } from 'antd/lib/table/interface';
3
+ import React from 'react';
4
+ declare const useLazyKVMap: <RecordType extends AnyObject = AnyObject>(data: readonly RecordType[], childrenColumnName: string, getRowKey: GetRowKey<RecordType>) => readonly [(key: React.Key) => RecordType | undefined];
5
+ export default useLazyKVMap;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ const useLazyKVMap = (data, childrenColumnName, getRowKey) => {
9
+ const mapCacheRef = (0, _react.useRef)({});
10
+ function getRecordByKey(key) {
11
+ function dig(records, kv) {
12
+ records.forEach((record, index) => {
13
+ const rowKey = getRowKey(record, index);
14
+ kv.set(rowKey, record);
15
+ if (record && typeof record === 'object' && childrenColumnName in record) {
16
+ dig(record[childrenColumnName] || [], kv);
17
+ }
18
+ });
19
+ }
20
+ if (!mapCacheRef.current || mapCacheRef.current.data !== data || mapCacheRef.current.childrenColumnName !== childrenColumnName || mapCacheRef.current.getRowKey !== getRowKey) {
21
+ const kvMap = new Map();
22
+ dig(data, kvMap);
23
+ mapCacheRef.current = {
24
+ data,
25
+ childrenColumnName,
26
+ kvMap,
27
+ getRowKey
28
+ };
29
+ }
30
+ return mapCacheRef.current.kvMap?.get(key);
31
+ }
32
+ return [getRecordByKey];
33
+ };
34
+ var _default = exports.default = useLazyKVMap;
@@ -0,0 +1,8 @@
1
+ import type { TablePaginationConfig } from 'antd/es/table/interface';
2
+ export declare const DEFAULT_PAGE_SIZE = 10;
3
+ export declare function getPaginationParam(mergedPagination: TablePaginationConfig, pagination?: TablePaginationConfig | boolean): any;
4
+ declare function usePagination(total: number, onChange: (current: number, pageSize: number) => void, pagination?: TablePaginationConfig | false): readonly [
5
+ TablePaginationConfig,
6
+ (current?: number, pageSize?: number) => void
7
+ ];
8
+ export default usePagination;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.DEFAULT_PAGE_SIZE = void 0;
7
+ exports.getPaginationParam = getPaginationParam;
8
+ var _react = require("react");
9
+ const DEFAULT_PAGE_SIZE = exports.DEFAULT_PAGE_SIZE = 10;
10
+ function extendsObject(base, override, extra = {}) {
11
+ return {
12
+ ...base,
13
+ ...override,
14
+ ...extra
15
+ };
16
+ }
17
+ function getPaginationParam(mergedPagination, pagination) {
18
+ const param = {
19
+ current: mergedPagination.current,
20
+ pageSize: mergedPagination.pageSize
21
+ };
22
+ const paginationObj = pagination && typeof pagination === 'object' ? pagination : {};
23
+ Object.keys(paginationObj).forEach(pageProp => {
24
+ const value = mergedPagination[pageProp];
25
+ if (typeof value !== 'function') {
26
+ param[pageProp] = value;
27
+ }
28
+ });
29
+ return param;
30
+ }
31
+ function usePagination(total, onChange, pagination) {
32
+ const {
33
+ total: paginationTotal = 0,
34
+ ...paginationObj
35
+ } = pagination && typeof pagination === 'object' ? pagination : {};
36
+ const [innerPagination, setInnerPagination] = (0, _react.useState)(() => ({
37
+ current: 'defaultCurrent' in paginationObj ? paginationObj.defaultCurrent : 1,
38
+ pageSize: 'defaultPageSize' in paginationObj ? paginationObj.defaultPageSize : DEFAULT_PAGE_SIZE
39
+ }));
40
+
41
+ // ============ Basic Pagination Config ============
42
+ const mergedPagination = extendsObject(innerPagination, paginationObj, {
43
+ total: paginationTotal > 0 ? paginationTotal : total
44
+ });
45
+
46
+ // Reset `current` if data length or pageSize changed
47
+ const pageSize = mergedPagination.pageSize || DEFAULT_PAGE_SIZE;
48
+ const maxPage = Math.ceil((paginationTotal || total) / pageSize);
49
+ if ((mergedPagination.current || 1) > maxPage) {
50
+ // Prevent a maximum page count of 0
51
+ mergedPagination.current = maxPage || 1;
52
+ }
53
+ const refreshPagination = (current, pageSizeArg) => {
54
+ setInnerPagination({
55
+ current: current ?? 1,
56
+ pageSize: pageSizeArg || mergedPagination.pageSize
57
+ });
58
+ };
59
+ const onInternalChange = (current, pageSizeArg) => {
60
+ if (pagination && typeof pagination === 'object') {
61
+ pagination.onChange?.(current, pageSizeArg);
62
+ }
63
+ refreshPagination(current, pageSizeArg);
64
+ onChange(current, pageSizeArg || mergedPagination.pageSize);
65
+ };
66
+ if (pagination === false) {
67
+ return [{}, () => {}];
68
+ }
69
+ return [{
70
+ ...mergedPagination,
71
+ onChange: onInternalChange
72
+ }, refreshPagination];
73
+ }
74
+ var _default = exports.default = usePagination;
@@ -0,0 +1,19 @@
1
+ import type { GetRowKey, TableRowSelection } from 'antd/lib/table/interface';
2
+ import React from 'react';
3
+ type UseSelectionConfig<RecordType> = {
4
+ getRowKey: GetRowKey<RecordType>;
5
+ getRecordByKey: (key: React.Key) => RecordType | undefined;
6
+ prefixCls?: string;
7
+ data: RecordType[];
8
+ pageData: RecordType[];
9
+ expandType?: 'row' | 'nest';
10
+ childrenColumnName?: string;
11
+ locale?: any;
12
+ };
13
+ declare function useSelection<RecordType>(config: UseSelectionConfig<RecordType>, rowSelection?: TableRowSelection<RecordType>): readonly [
14
+ (columns?: any[]) => Array<{
15
+ render: (text: any, record: RecordType, index: number) => React.ReactElement;
16
+ }>,
17
+ Set<React.Key>
18
+ ];
19
+ export default useSelection;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _antd = require("antd");
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function useSelection(config, rowSelection) {
12
+ const {
13
+ getRowKey,
14
+ data
15
+ } = config;
16
+ const controlledKeys = rowSelection?.selectedRowKeys;
17
+ const [innerKeys, setInnerKeys] = _react.default.useState(controlledKeys || []);
18
+
19
+ // Keep in sync with controlled keys
20
+ _react.default.useEffect(() => {
21
+ if (controlledKeys) {
22
+ setInnerKeys(controlledKeys);
23
+ }
24
+ }, [controlledKeys && controlledKeys.join(';')]);
25
+ const selectedKeySet = _react.default.useMemo(() => new Set(innerKeys), [innerKeys]);
26
+ const toggleKey = _react.default.useCallback((key, record, checked) => {
27
+ setInnerKeys(prevKeys => {
28
+ if (rowSelection?.type === 'radio') {
29
+ const nextKeys = [key];
30
+ const selectedRows = [record];
31
+ rowSelection?.onChange?.(nextKeys, selectedRows, {
32
+ type: 'single',
33
+ selectedRows,
34
+ selectedRowKeys: nextKeys
35
+ });
36
+ rowSelection?.onSelect?.(record, checked, selectedRows, {});
37
+ if (!controlledKeys) {
38
+ return nextKeys;
39
+ }
40
+ return prevKeys;
41
+ }
42
+ const prevSet = new Set(prevKeys);
43
+ const next = new Set(prevSet);
44
+ if (checked) {
45
+ next.add(key);
46
+ } else {
47
+ next.delete(key);
48
+ }
49
+ const nextKeys = Array.from(next);
50
+
51
+ // Fire callbacks similar to antd rowSelection
52
+ const selectedRows = data.filter((item, idx) => next.has(getRowKey(item, idx)));
53
+ rowSelection?.onChange?.(nextKeys, selectedRows, {
54
+ type: 'multiple',
55
+ selectedRows,
56
+ selectedRowKeys: nextKeys
57
+ });
58
+ rowSelection?.onSelect?.(record, checked, data.filter((item, idx) => next.has(getRowKey(item, idx))), {});
59
+ if (!controlledKeys) {
60
+ return nextKeys;
61
+ }
62
+ return prevKeys;
63
+ });
64
+ }, [data, getRowKey, rowSelection, controlledKeys]);
65
+ const selectItemRender = _react.default.useCallback(columns => {
66
+ void columns;
67
+ if (!rowSelection) {
68
+ return [];
69
+ }
70
+ return [{
71
+ render: (_text, record, index) => {
72
+ const key = getRowKey(record, index);
73
+ const checked = selectedKeySet.has(key);
74
+ if (rowSelection?.type === 'radio') {
75
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Radio, {
76
+ checked: checked,
77
+ onChange: e => {
78
+ toggleKey(key, record, e.target.checked);
79
+ }
80
+ });
81
+ }
82
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Checkbox, {
83
+ checked: checked,
84
+ onChange: e => {
85
+ toggleKey(key, record, e.target.checked);
86
+ }
87
+ });
88
+ }
89
+ }];
90
+ }, [getRowKey, selectedKeySet, toggleKey, rowSelection?.type]);
91
+ return [selectItemRender, selectedKeySet];
92
+ }
93
+ var _default = exports.default = useSelection;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ant-design/pro-components",
3
- "version": "3.1.1-1",
3
+ "version": "3.1.3-0",
4
4
  "type": "module",
5
5
  "description": "All-in-one package of @ant-design/pro-components",
6
6
  "keywords": [
@@ -41,6 +41,7 @@
41
41
  "docs:preview": "pnpm docs preview",
42
42
  "docs:create": "pnpm docs create",
43
43
  "docs:check": "pnpm docs check",
44
+ "prepublishOnly": "pnpm run test && pnpm run build",
44
45
  "lint": "eslint --cache --ext .js,.jsx,.ts,.tsx --fix ./ && npm run tsc",
45
46
  "prettier": "prettier --write \"**/**.{js,jsx,tsx,ts,less,md,yaml,json}\" --log-level warn",
46
47
  "createRelease": "node ./scripts/createRelease.mjs",