@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.
- package/dist/pro-components.min.js +1 -1
- package/es/card/components/Card/index.js +17 -3
- package/es/descriptions/index.d.ts +0 -2
- package/es/descriptions/index.js +1 -5
- package/es/descriptions/useFetchData.js +17 -2
- package/es/field/components/Cascader/index.d.ts +3 -3
- package/es/field/components/Cascader/index.js +0 -2
- package/es/field/components/Checkbox/index.d.ts +2 -2
- package/es/field/components/Checkbox/index.js +2 -0
- package/es/field/components/Code/index.js +1 -8
- package/es/field/components/ColorPicker/index.d.ts +2 -2
- package/es/field/components/DatePicker/index.d.ts +2 -2
- package/es/field/components/DatePicker/index.js +3 -5
- package/es/field/components/FromNow/index.d.ts +1 -0
- package/es/field/components/FromNow/index.js +2 -2
- package/es/field/components/Money/index.js +0 -1
- package/es/field/components/Progress/index.js +1 -2
- package/es/field/components/Radio/index.d.ts +1 -1
- package/es/field/components/RangePicker/index.d.ts +2 -2
- package/es/field/components/RangePicker/index.js +3 -11
- package/es/field/components/Segmented/index.d.ts +1 -1
- package/es/field/components/Select/LightSelect/index.d.ts +3 -1
- package/es/field/components/Select/LightSelect/index.js +3 -1
- package/es/field/components/Select/index.d.ts +2 -2
- package/es/field/components/Select/index.js +1 -4
- package/es/field/components/Switch/index.d.ts +1 -1
- package/es/field/components/Switch/index.js +2 -1
- package/es/field/components/TimePicker/index.d.ts +2 -0
- package/es/field/components/TimePicker/index.js +9 -8
- package/es/field/components/TreeSelect/index.d.ts +3 -3
- package/es/field/components/TreeSelect/index.js +2 -2
- package/es/form/BaseForm/BaseForm.js +16 -2
- package/es/form/BaseForm/LightWrapper/index.js +7 -1
- package/es/form/BaseForm/Submitter/index.js +2 -2
- package/es/form/components/Cascader/index.d.ts +1 -1
- package/es/form/components/ColorPicker/index.d.ts +1 -1
- package/es/form/components/DatePicker/DateTimePicker.js +1 -0
- package/es/form/components/DateRangePicker/DateTimeRangePicker.d.ts +1 -1
- package/es/form/components/DateRangePicker/DateTimeRangePicker.js +1 -3
- package/es/form/components/Digit/DigitRange.d.ts +2 -2
- package/es/form/components/Digit/index.d.ts +1 -1
- package/es/form/components/Field/index.d.ts +0 -1
- package/es/form/components/Field/index.js +3 -5
- package/es/form/components/FormItem/FormItemRender/index.d.ts +1 -0
- package/es/form/components/FormItem/Group/index.js +17 -3
- package/es/form/components/FormItem/index.d.ts +1 -0
- package/es/form/components/FormItem/index.js +16 -31
- package/es/form/components/FormItem/warpField.js +1 -0
- package/es/form/components/Money/index.d.ts +1 -1
- package/es/form/components/Radio/index.d.ts +2 -2
- package/es/form/components/Rate/index.d.ts +1 -1
- package/es/form/components/Slider/index.d.ts +1 -1
- package/es/form/components/TextArea/index.d.ts +1 -1
- package/es/form/helpers/grid.d.ts +7 -3
- package/es/form/helpers/grid.js +19 -4
- package/es/form/layouts/DrawerForm/index.js +16 -2
- package/es/form/layouts/LightFilter/index.js +7 -4
- package/es/form/layouts/ModalForm/index.js +17 -2
- package/es/form/layouts/ProForm/index.d.ts +1 -1
- package/es/form/layouts/QueryFilter/index.js +17 -3
- package/es/form/layouts/StepsForm/index.js +16 -2
- package/es/layout/ProLayout.js +33 -5
- package/es/layout/components/AppsLogoComponents/style/index.js +1 -0
- package/es/layout/components/SettingDrawer/index.js +33 -5
- package/es/layout/components/SiderMenu/BaseMenu.js +0 -2
- package/es/list/ListView.js +6 -3
- package/es/provider/index.d.ts +0 -4
- package/es/provider/index.js +1 -1
- package/es/table/Store/Provide.d.ts +0 -1
- package/es/table/Store/Provide.js +1 -1
- package/es/table/Table.js +0 -1
- package/es/table/typing.d.ts +0 -4
- package/es/table/useFetchData.js +16 -2
- package/es/table/utils/cellRenderToFromItem.d.ts +1 -1
- package/es/table/utils/columnRender.d.ts +1 -1
- package/es/table/utils/columnRender.js +1 -4
- package/es/table/utils/genProColumnToColumn.d.ts +2 -2
- package/es/table/utils/index.d.ts +0 -10
- package/es/table/utils/index.js +0 -12
- package/es/utils/components/FieldLabel/index.js +3 -3
- package/es/utils/components/FieldLabel/style.js +23 -4
- package/es/utils/components/FilterDropdown/index.js +1 -1
- package/es/utils/components/FilterDropdown/style.js +10 -0
- package/es/utils/pickProProps/index.js +1 -1
- package/es/utils/useEditableArray/index.d.ts +1 -1
- package/es/utils/useEditableArray/index.js +1 -1
- package/es/utils/useLazyKVMap.d.ts +5 -0
- package/es/utils/useLazyKVMap.js +28 -0
- package/es/utils/useMediaQuery/index.d.ts +2 -2
- package/es/utils/usePagination.d.ts +8 -0
- package/es/utils/usePagination.js +67 -0
- package/es/utils/useSelection.d.ts +19 -0
- package/es/utils/useSelection.js +86 -0
- package/lib/card/components/Card/index.js +16 -2
- package/lib/descriptions/index.d.ts +0 -2
- package/lib/descriptions/index.js +1 -5
- package/lib/descriptions/useFetchData.js +17 -2
- package/lib/field/components/Cascader/index.js +0 -2
- package/lib/field/components/Checkbox/index.js +2 -0
- package/lib/field/components/Code/index.js +1 -8
- package/lib/field/components/DatePicker/index.js +3 -5
- package/lib/field/components/FromNow/index.d.ts +1 -0
- package/lib/field/components/FromNow/index.js +2 -2
- package/lib/field/components/Money/index.js +0 -1
- package/lib/field/components/Progress/index.js +1 -2
- package/lib/field/components/RangePicker/index.js +3 -11
- package/lib/field/components/Select/LightSelect/index.d.ts +2 -0
- package/lib/field/components/Select/LightSelect/index.js +3 -1
- package/lib/field/components/Select/index.js +1 -4
- package/lib/field/components/Switch/index.js +2 -1
- package/lib/field/components/TimePicker/index.d.ts +2 -0
- package/lib/field/components/TimePicker/index.js +9 -8
- package/lib/field/components/TreeSelect/index.js +2 -2
- package/lib/form/BaseForm/BaseForm.js +16 -2
- package/lib/form/BaseForm/LightWrapper/index.js +7 -1
- package/lib/form/BaseForm/Submitter/index.js +2 -2
- package/lib/form/components/DatePicker/DateTimePicker.js +1 -0
- package/lib/form/components/DateRangePicker/DateTimeRangePicker.d.ts +1 -1
- package/lib/form/components/DateRangePicker/DateTimeRangePicker.js +1 -3
- package/lib/form/components/Field/index.d.ts +0 -1
- package/lib/form/components/Field/index.js +1 -3
- package/lib/form/components/FormItem/FormItemRender/index.d.ts +1 -0
- package/lib/form/components/FormItem/Group/index.js +16 -2
- package/lib/form/components/FormItem/index.d.ts +1 -0
- package/lib/form/components/FormItem/index.js +16 -31
- package/lib/form/components/FormItem/warpField.js +1 -0
- package/lib/form/helpers/grid.d.ts +7 -3
- package/lib/form/helpers/grid.js +20 -4
- package/lib/form/layouts/DrawerForm/index.js +16 -2
- package/lib/form/layouts/LightFilter/index.js +7 -4
- package/lib/form/layouts/ModalForm/index.js +17 -2
- package/lib/form/layouts/QueryFilter/index.js +16 -2
- package/lib/form/layouts/StepsForm/index.js +16 -2
- package/lib/layout/ProLayout.js +32 -4
- package/lib/layout/components/AppsLogoComponents/style/index.js +1 -0
- package/lib/layout/components/SettingDrawer/index.js +32 -4
- package/lib/layout/components/SiderMenu/BaseMenu.js +0 -2
- package/lib/list/ListView.js +7 -4
- package/lib/provider/index.d.ts +0 -4
- package/lib/provider/index.js +1 -1
- package/lib/table/Store/Provide.d.ts +0 -1
- package/lib/table/Store/Provide.js +1 -1
- package/lib/table/Table.js +0 -1
- package/lib/table/typing.d.ts +0 -4
- package/lib/table/useFetchData.js +16 -2
- package/lib/table/utils/cellRenderToFromItem.d.ts +1 -1
- package/lib/table/utils/columnRender.d.ts +1 -1
- package/lib/table/utils/columnRender.js +1 -4
- package/lib/table/utils/genProColumnToColumn.d.ts +2 -2
- package/lib/table/utils/index.d.ts +0 -10
- package/lib/table/utils/index.js +3 -15
- package/lib/utils/components/FieldLabel/index.js +3 -3
- package/lib/utils/components/FieldLabel/style.js +23 -4
- package/lib/utils/components/FilterDropdown/index.js +1 -1
- package/lib/utils/components/FilterDropdown/style.js +10 -0
- package/lib/utils/pickProProps/index.js +1 -1
- package/lib/utils/useEditableArray/index.d.ts +1 -1
- package/lib/utils/useEditableArray/index.js +2 -2
- package/lib/utils/useLazyKVMap.d.ts +5 -0
- package/lib/utils/useLazyKVMap.js +34 -0
- package/lib/utils/usePagination.d.ts +8 -0
- package/lib/utils/usePagination.js +74 -0
- package/lib/utils/useSelection.d.ts +19 -0
- package/lib/utils/useSelection.js +93 -0
- 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
|
-
|
|
84
|
+
queueMicrotask(() => {
|
|
85
|
+
onLoadingChange(next);
|
|
86
|
+
});
|
|
73
87
|
return next;
|
|
74
88
|
});
|
|
75
|
-
}, [
|
|
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 { 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',
|
|
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 筛选数据
|
package/lib/table/utils/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.isMergeCell = exports.
|
|
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 ??
|
|
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}-
|
|
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:
|
|
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
|
-
'&-
|
|
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:
|
|
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',
|
|
@@ -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
|
|
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.
|
|
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",
|