@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
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { Checkbox, Radio } from 'antd';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
|
+
function useSelection(config, rowSelection) {
|
|
5
|
+
const {
|
|
6
|
+
getRowKey,
|
|
7
|
+
data
|
|
8
|
+
} = config;
|
|
9
|
+
const controlledKeys = rowSelection?.selectedRowKeys;
|
|
10
|
+
const [innerKeys, setInnerKeys] = React.useState(controlledKeys || []);
|
|
11
|
+
|
|
12
|
+
// Keep in sync with controlled keys
|
|
13
|
+
React.useEffect(() => {
|
|
14
|
+
if (controlledKeys) {
|
|
15
|
+
setInnerKeys(controlledKeys);
|
|
16
|
+
}
|
|
17
|
+
}, [controlledKeys && controlledKeys.join(';')]);
|
|
18
|
+
const selectedKeySet = React.useMemo(() => new Set(innerKeys), [innerKeys]);
|
|
19
|
+
const toggleKey = React.useCallback((key, record, checked) => {
|
|
20
|
+
setInnerKeys(prevKeys => {
|
|
21
|
+
if (rowSelection?.type === 'radio') {
|
|
22
|
+
const nextKeys = [key];
|
|
23
|
+
const selectedRows = [record];
|
|
24
|
+
rowSelection?.onChange?.(nextKeys, selectedRows, {
|
|
25
|
+
type: 'single',
|
|
26
|
+
selectedRows,
|
|
27
|
+
selectedRowKeys: nextKeys
|
|
28
|
+
});
|
|
29
|
+
rowSelection?.onSelect?.(record, checked, selectedRows, {});
|
|
30
|
+
if (!controlledKeys) {
|
|
31
|
+
return nextKeys;
|
|
32
|
+
}
|
|
33
|
+
return prevKeys;
|
|
34
|
+
}
|
|
35
|
+
const prevSet = new Set(prevKeys);
|
|
36
|
+
const next = new Set(prevSet);
|
|
37
|
+
if (checked) {
|
|
38
|
+
next.add(key);
|
|
39
|
+
} else {
|
|
40
|
+
next.delete(key);
|
|
41
|
+
}
|
|
42
|
+
const nextKeys = Array.from(next);
|
|
43
|
+
|
|
44
|
+
// Fire callbacks similar to antd rowSelection
|
|
45
|
+
const selectedRows = data.filter((item, idx) => next.has(getRowKey(item, idx)));
|
|
46
|
+
rowSelection?.onChange?.(nextKeys, selectedRows, {
|
|
47
|
+
type: 'multiple',
|
|
48
|
+
selectedRows,
|
|
49
|
+
selectedRowKeys: nextKeys
|
|
50
|
+
});
|
|
51
|
+
rowSelection?.onSelect?.(record, checked, data.filter((item, idx) => next.has(getRowKey(item, idx))), {});
|
|
52
|
+
if (!controlledKeys) {
|
|
53
|
+
return nextKeys;
|
|
54
|
+
}
|
|
55
|
+
return prevKeys;
|
|
56
|
+
});
|
|
57
|
+
}, [data, getRowKey, rowSelection, controlledKeys]);
|
|
58
|
+
const selectItemRender = React.useCallback(columns => {
|
|
59
|
+
void columns;
|
|
60
|
+
if (!rowSelection) {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
return [{
|
|
64
|
+
render: (_text, record, index) => {
|
|
65
|
+
const key = getRowKey(record, index);
|
|
66
|
+
const checked = selectedKeySet.has(key);
|
|
67
|
+
if (rowSelection?.type === 'radio') {
|
|
68
|
+
return /*#__PURE__*/_jsx(Radio, {
|
|
69
|
+
checked: checked,
|
|
70
|
+
onChange: e => {
|
|
71
|
+
toggleKey(key, record, e.target.checked);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return /*#__PURE__*/_jsx(Checkbox, {
|
|
76
|
+
checked: checked,
|
|
77
|
+
onChange: e => {
|
|
78
|
+
toggleKey(key, record, e.target.checked);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}];
|
|
83
|
+
}, [getRowKey, selectedKeySet, toggleKey, rowSelection?.type]);
|
|
84
|
+
return [selectItemRender, selectedKeySet];
|
|
85
|
+
}
|
|
86
|
+
export default useSelection;
|
|
@@ -68,13 +68,27 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
|
|
|
68
68
|
xxl: false
|
|
69
69
|
};
|
|
70
70
|
const [collapsed, setCollapsedInner] = (0, _util.useControlledState)(defaultCollapsed, controlCollapsed);
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* 使用 useRefFunction 包装回调,确保引用稳定
|
|
74
|
+
*/
|
|
75
|
+
const onCollapseCallback = (0, _utils.useRefFunction)(c => {
|
|
76
|
+
onCollapse?.(c);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* 使用 queueMicrotask 延迟回调调用,避免在渲染阶段调用外部回调导致的 React 警告
|
|
81
|
+
* "Cannot update a component while rendering a different component"
|
|
82
|
+
*/
|
|
71
83
|
const setCollapsed = (0, _react.useCallback)(updater => {
|
|
72
84
|
setCollapsedInner(prev => {
|
|
73
85
|
const next = typeof updater === 'function' ? updater(prev) : updater;
|
|
74
|
-
|
|
86
|
+
queueMicrotask(() => {
|
|
87
|
+
onCollapseCallback(next);
|
|
88
|
+
});
|
|
75
89
|
return next;
|
|
76
90
|
});
|
|
77
|
-
}, [
|
|
91
|
+
}, [onCollapseCallback]);
|
|
78
92
|
|
|
79
93
|
// 顺序决定如何进行响应式取值,按最大响应值依次取值,请勿修改。
|
|
80
94
|
const responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];
|
|
@@ -17,8 +17,6 @@ var _skeleton = _interopRequireDefault(require("../skeleton"));
|
|
|
17
17
|
var _utils = require("../utils");
|
|
18
18
|
var _useFetchData = _interopRequireDefault(require("./useFetchData"));
|
|
19
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
-
// todo remove it
|
|
21
|
-
|
|
22
20
|
/**
|
|
23
21
|
* 定义列表属性的类型定义,用于定义列表的一列
|
|
24
22
|
* @typedef {Object} ProDescriptionsItemProps
|
|
@@ -304,7 +302,6 @@ const ProDescriptions = props => {
|
|
|
304
302
|
actionRef,
|
|
305
303
|
onRequestError,
|
|
306
304
|
emptyText,
|
|
307
|
-
contentStyle,
|
|
308
305
|
...rest
|
|
309
306
|
} = props;
|
|
310
307
|
const proContext = (0, _react.useContext)(_provider.default);
|
|
@@ -422,8 +419,7 @@ const ProDescriptions = props => {
|
|
|
422
419
|
...rest,
|
|
423
420
|
styles: {
|
|
424
421
|
content: {
|
|
425
|
-
minWidth: 0
|
|
426
|
-
...(contentStyle || {})
|
|
422
|
+
minWidth: 0
|
|
427
423
|
}
|
|
428
424
|
},
|
|
429
425
|
extra: rest.extra ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_antd.Space, {
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _util = require("@rc-component/util");
|
|
8
8
|
var _react = require("react");
|
|
9
|
+
var _utils = require("../utils");
|
|
9
10
|
const useFetchData = (getData, options) => {
|
|
10
11
|
const {
|
|
11
12
|
onRequestError,
|
|
@@ -24,13 +25,27 @@ const useFetchData = (getData, options) => {
|
|
|
24
25
|
});
|
|
25
26
|
}, [onDataSourceChange]);
|
|
26
27
|
const [loading, setLoadingInner] = (0, _util.useControlledState)(options?.loading, options?.loading);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* 使用 useRefFunction 包装回调,确保引用稳定
|
|
31
|
+
*/
|
|
32
|
+
const onLoadingChange = (0, _utils.useRefFunction)(l => {
|
|
33
|
+
options?.onLoadingChange?.(l);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 包装 setLoading,使用 queueMicrotask 延迟回调调用
|
|
38
|
+
* 避免在渲染阶段调用外部回调导致的 React 警告
|
|
39
|
+
*/
|
|
27
40
|
const setLoading = (0, _react.useCallback)(updater => {
|
|
28
41
|
setLoadingInner(prev => {
|
|
29
42
|
const next = typeof updater === 'function' ? updater(prev) : updater;
|
|
30
|
-
|
|
43
|
+
queueMicrotask(() => {
|
|
44
|
+
onLoadingChange(next);
|
|
45
|
+
});
|
|
31
46
|
return next;
|
|
32
47
|
});
|
|
33
|
-
}, [
|
|
48
|
+
}, [onLoadingChange]);
|
|
34
49
|
const updateDataAndLoading = data => {
|
|
35
50
|
setEntity(data);
|
|
36
51
|
setLoading(false);
|
|
@@ -20,7 +20,6 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
20
20
|
* @param ref
|
|
21
21
|
*/
|
|
22
22
|
const FieldCascader = ({
|
|
23
|
-
radioType,
|
|
24
23
|
placeholder,
|
|
25
24
|
formItemRender,
|
|
26
25
|
mode,
|
|
@@ -85,7 +84,6 @@ const FieldCascader = ({
|
|
|
85
84
|
if (mode === 'edit') {
|
|
86
85
|
const fieldProps = rest.fieldProps || {};
|
|
87
86
|
let dom = /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Cascader, {
|
|
88
|
-
variant: !light ? variant : 'borderless',
|
|
89
87
|
ref: cascaderRef,
|
|
90
88
|
open: open,
|
|
91
89
|
suffixIcon: loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.LoadingOutlined, {}) : undefined,
|
|
@@ -107,6 +107,7 @@ const FieldCheckbox = ({
|
|
|
107
107
|
if (mode === 'edit') {
|
|
108
108
|
const {
|
|
109
109
|
fieldNames,
|
|
110
|
+
variant,
|
|
110
111
|
...restFieldProps
|
|
111
112
|
} = rest.fieldProps || {};
|
|
112
113
|
const dom = wrapSSR(
|
|
@@ -114,6 +115,7 @@ const FieldCheckbox = ({
|
|
|
114
115
|
//@ts-ignore
|
|
115
116
|
(0, _jsxRuntime.jsx)(_antd.Checkbox.Group, {
|
|
116
117
|
...restFieldProps,
|
|
118
|
+
variant: variant,
|
|
117
119
|
className: (0, _clsx.clsx)(rest.fieldProps?.className, hashId, `${layoutClassName}-${layout}`, {
|
|
118
120
|
[`${layoutClassName}-error`]: status?.status === 'error',
|
|
119
121
|
[`${layoutClassName}-warning`]: status?.status === 'warning'
|
|
@@ -34,7 +34,6 @@ const FieldCode = ({
|
|
|
34
34
|
render,
|
|
35
35
|
language = 'text',
|
|
36
36
|
formItemRender,
|
|
37
|
-
plain,
|
|
38
37
|
fieldProps
|
|
39
38
|
}, ref) => {
|
|
40
39
|
const code = languageFormat(text, language);
|
|
@@ -72,17 +71,11 @@ const FieldCode = ({
|
|
|
72
71
|
}
|
|
73
72
|
if (mode === 'edit' || mode === 'update') {
|
|
74
73
|
fieldProps.value = code;
|
|
75
|
-
|
|
74
|
+
const dom = /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Input.TextArea, {
|
|
76
75
|
rows: 5,
|
|
77
76
|
...fieldProps,
|
|
78
77
|
ref: ref
|
|
79
78
|
});
|
|
80
|
-
if (plain) {
|
|
81
|
-
dom = /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Input, {
|
|
82
|
-
...fieldProps,
|
|
83
|
-
ref: ref
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
79
|
if (formItemRender) {
|
|
87
80
|
return formItemRender(code, {
|
|
88
81
|
mode,
|
|
@@ -36,12 +36,11 @@ const FieldDatePicker = ({
|
|
|
36
36
|
light,
|
|
37
37
|
render,
|
|
38
38
|
formItemRender,
|
|
39
|
-
plain,
|
|
40
39
|
showTime,
|
|
41
40
|
fieldProps,
|
|
42
41
|
picker,
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
lightLabel,
|
|
43
|
+
variant
|
|
45
44
|
}, ref) => {
|
|
46
45
|
const intl = (0, _provider.useIntl)();
|
|
47
46
|
const [open, setOpen] = (0, _react.useState)(false);
|
|
@@ -89,7 +88,6 @@ const FieldDatePicker = ({
|
|
|
89
88
|
setOpen(isOpen);
|
|
90
89
|
fieldProps?.onOpenChange?.(isOpen);
|
|
91
90
|
},
|
|
92
|
-
variant: "borderless",
|
|
93
91
|
open: open
|
|
94
92
|
}) : undefined,
|
|
95
93
|
allowClear: false,
|
|
@@ -103,7 +101,7 @@ const FieldDatePicker = ({
|
|
|
103
101
|
showTime: showTime,
|
|
104
102
|
format: format,
|
|
105
103
|
placeholder: placeholder,
|
|
106
|
-
variant:
|
|
104
|
+
variant: variant,
|
|
107
105
|
ref: ref,
|
|
108
106
|
...fieldProps,
|
|
109
107
|
value: dayValue
|
|
@@ -2,5 +2,6 @@ import React from 'react';
|
|
|
2
2
|
declare const _default: React.ForwardRefExoticComponent<import("../../../provider").BaseProFieldFC & import("../../../provider").ProRenderFieldPropsType & {
|
|
3
3
|
text: string;
|
|
4
4
|
format?: string | undefined;
|
|
5
|
+
variant?: "outlined" | "filled" | "borderless" | "underlined" | undefined;
|
|
5
6
|
} & React.RefAttributes<any>>;
|
|
6
7
|
export default _default;
|
|
@@ -21,7 +21,7 @@ _dayjs.default.extend(_relativeTime.default);
|
|
|
21
21
|
const FieldFromNow = ({
|
|
22
22
|
text,
|
|
23
23
|
mode,
|
|
24
|
-
|
|
24
|
+
variant,
|
|
25
25
|
render,
|
|
26
26
|
formItemRender,
|
|
27
27
|
format,
|
|
@@ -52,7 +52,7 @@ const FieldFromNow = ({
|
|
|
52
52
|
ref: ref,
|
|
53
53
|
placeholder: placeholder,
|
|
54
54
|
showTime: true,
|
|
55
|
-
variant:
|
|
55
|
+
variant: variant ?? fieldProps?.variant ?? 'outlined',
|
|
56
56
|
...fieldProps,
|
|
57
57
|
value: momentValue
|
|
58
58
|
});
|
|
@@ -33,7 +33,6 @@ const FieldProgress = ({
|
|
|
33
33
|
text,
|
|
34
34
|
mode,
|
|
35
35
|
render,
|
|
36
|
-
plain,
|
|
37
36
|
formItemRender,
|
|
38
37
|
fieldProps,
|
|
39
38
|
placeholder
|
|
@@ -50,7 +49,7 @@ const FieldProgress = ({
|
|
|
50
49
|
maxWidth: 320
|
|
51
50
|
},
|
|
52
51
|
percent: realValue,
|
|
53
|
-
steps:
|
|
52
|
+
steps: fieldProps?.steps,
|
|
54
53
|
status: getProgressStatus(realValue),
|
|
55
54
|
...fieldProps
|
|
56
55
|
});
|
|
@@ -26,10 +26,9 @@ const FieldRangePicker = ({
|
|
|
26
26
|
render,
|
|
27
27
|
picker,
|
|
28
28
|
formItemRender,
|
|
29
|
-
plain,
|
|
30
29
|
showTime,
|
|
31
30
|
lightLabel,
|
|
32
|
-
variant,
|
|
31
|
+
variant: propsVariant,
|
|
33
32
|
fieldProps
|
|
34
33
|
}, ref) => {
|
|
35
34
|
const intl = (0, _provider.useIntl)();
|
|
@@ -94,14 +93,8 @@ const FieldRangePicker = ({
|
|
|
94
93
|
picker: picker,
|
|
95
94
|
showTime: showTime,
|
|
96
95
|
format: format,
|
|
97
|
-
variant: "borderless",
|
|
98
96
|
...fieldProps,
|
|
99
|
-
placeholder: fieldProps.placeholder ?? [intl.getMessage('tableForm.selectPlaceholder', '请选择'), intl.getMessage('tableForm.selectPlaceholder', '请选择')]
|
|
100
|
-
// onClear={() => {
|
|
101
|
-
// setOpen(false);
|
|
102
|
-
// fieldProps?.onClear?.();
|
|
103
|
-
// }}
|
|
104
|
-
,
|
|
97
|
+
placeholder: fieldProps.placeholder ?? [intl.getMessage('tableForm.selectPlaceholder', '请选择'), intl.getMessage('tableForm.selectPlaceholder', '请选择')],
|
|
105
98
|
value: dayValue,
|
|
106
99
|
onOpenChange: isOpen => {
|
|
107
100
|
if (dayValue) setOpen(isOpen);
|
|
@@ -109,8 +102,8 @@ const FieldRangePicker = ({
|
|
|
109
102
|
},
|
|
110
103
|
onChange: handleRangeChange
|
|
111
104
|
}) : null,
|
|
105
|
+
variant: propsVariant,
|
|
112
106
|
allowClear: false,
|
|
113
|
-
variant: variant,
|
|
114
107
|
ref: lightLabel,
|
|
115
108
|
downIcon: dayValue || open ? false : undefined
|
|
116
109
|
});
|
|
@@ -120,7 +113,6 @@ const FieldRangePicker = ({
|
|
|
120
113
|
format: format,
|
|
121
114
|
showTime: showTime,
|
|
122
115
|
placeholder: [intl.getMessage('tableForm.selectPlaceholder', '请选择'), intl.getMessage('tableForm.selectPlaceholder', '请选择')],
|
|
123
|
-
variant: plain === undefined ? variant : plain ? 'borderless' : 'outlined',
|
|
124
116
|
...fieldProps,
|
|
125
117
|
value: dayValue
|
|
126
118
|
});
|
|
@@ -15,6 +15,7 @@ export type LightSelectProps = {
|
|
|
15
15
|
fetchDataOnSearch?: boolean;
|
|
16
16
|
/** 变体类型 */
|
|
17
17
|
variant?: 'outlined' | 'borderless' | 'filled' | 'underlined';
|
|
18
|
+
labelVariant?: 'outlined' | 'borderless' | 'filled' | 'underlined';
|
|
18
19
|
} & ProFieldLightProps & SelectProps;
|
|
19
20
|
export declare const LightSelect: React.ForwardRefRenderFunction<any, SelectProps<any> & LightSelectProps>;
|
|
20
21
|
declare const _default: React.ForwardRefExoticComponent<SelectProps<any, import("antd/es/select").DefaultOptionType> & {
|
|
@@ -31,5 +32,6 @@ declare const _default: React.ForwardRefExoticComponent<SelectProps<any, import(
|
|
|
31
32
|
fetchDataOnSearch?: boolean | undefined;
|
|
32
33
|
/** 变体类型 */
|
|
33
34
|
variant?: "outlined" | "filled" | "borderless" | "underlined" | undefined;
|
|
35
|
+
labelVariant?: "outlined" | "filled" | "borderless" | "underlined" | undefined;
|
|
34
36
|
} & ProFieldLightProps & SelectProps<any, import("antd/es/select").DefaultOptionType> & React.RefAttributes<any>>;
|
|
35
37
|
export default _default;
|
|
@@ -32,6 +32,7 @@ const LightSelect = (props, ref) => {
|
|
|
32
32
|
value,
|
|
33
33
|
mode,
|
|
34
34
|
defaultValue,
|
|
35
|
+
labelVariant,
|
|
35
36
|
size,
|
|
36
37
|
showSearch,
|
|
37
38
|
disabled,
|
|
@@ -78,6 +79,7 @@ const LightSelect = (props, ref) => {
|
|
|
78
79
|
width: '153px',
|
|
79
80
|
height: '28px',
|
|
80
81
|
visibility: 'hidden',
|
|
82
|
+
opacity: 0,
|
|
81
83
|
'&-selector': {
|
|
82
84
|
height: 28
|
|
83
85
|
}
|
|
@@ -206,7 +208,7 @@ const LightSelect = (props, ref) => {
|
|
|
206
208
|
label: label,
|
|
207
209
|
placeholder: placeholder,
|
|
208
210
|
disabled: disabled,
|
|
209
|
-
variant:
|
|
211
|
+
variant: labelVariant,
|
|
210
212
|
allowClear: !!allowClear,
|
|
211
213
|
value: filterValue || value?.label || value,
|
|
212
214
|
onClear: () => {
|
|
@@ -190,10 +190,8 @@ const useFieldFetchData = props => {
|
|
|
190
190
|
keyWords: kw
|
|
191
191
|
}, props), {
|
|
192
192
|
revalidateIfStale: !cacheForSwr,
|
|
193
|
-
// 打开 cacheForSwr 的时候才应该支持两个功能
|
|
194
193
|
revalidateOnReconnect: cacheForSwr,
|
|
195
194
|
shouldRetryOnError: false,
|
|
196
|
-
// @todo 这个功能感觉应该搞个API出来
|
|
197
195
|
revalidateOnFocus: false
|
|
198
196
|
});
|
|
199
197
|
const resOptions = (0, _react.useMemo)(() => {
|
|
@@ -317,7 +315,6 @@ const FieldSelect = (props, ref) => {
|
|
|
317
315
|
const renderDom = () => {
|
|
318
316
|
if (light) {
|
|
319
317
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LightSelect.default, {
|
|
320
|
-
variant: variant,
|
|
321
318
|
id: id,
|
|
322
319
|
loading: loading,
|
|
323
320
|
ref: inputRef,
|
|
@@ -325,6 +322,7 @@ const FieldSelect = (props, ref) => {
|
|
|
325
322
|
size: componentSize,
|
|
326
323
|
options: options,
|
|
327
324
|
label: label,
|
|
325
|
+
labelVariant: variant,
|
|
328
326
|
placeholder: intl.getMessage('tableForm.selectPlaceholder', '请选择'),
|
|
329
327
|
lightLabel: lightLabel,
|
|
330
328
|
labelTrigger: labelTrigger,
|
|
@@ -338,7 +336,6 @@ const FieldSelect = (props, ref) => {
|
|
|
338
336
|
minWidth: 100,
|
|
339
337
|
...rest.style
|
|
340
338
|
},
|
|
341
|
-
variant: variant,
|
|
342
339
|
id: id,
|
|
343
340
|
loading: loading,
|
|
344
341
|
ref: inputRef,
|
|
@@ -24,9 +24,10 @@ const FieldSwitch = ({
|
|
|
24
24
|
label,
|
|
25
25
|
formItemRender,
|
|
26
26
|
fieldProps,
|
|
27
|
-
variant
|
|
27
|
+
variant: propsVariant
|
|
28
28
|
}, ref) => {
|
|
29
29
|
const intl = (0, _provider.useIntl)();
|
|
30
|
+
const variant = propsVariant ?? fieldProps?.variant;
|
|
30
31
|
const dom = (0, _react.useMemo)(() => {
|
|
31
32
|
if (text === undefined || text === null || `${text}`.length < 1) return '-';
|
|
32
33
|
return text ? fieldProps?.checkedChildren ?? intl.getMessage('switch.open', '打开') : fieldProps?.unCheckedChildren ?? intl.getMessage('switch.close', '关闭');
|
|
@@ -3,10 +3,12 @@ import type { ProFieldLightProps } from '../../PureProField';
|
|
|
3
3
|
declare const FieldTimeRangePicker: React.ForwardRefExoticComponent<import("../../../provider").BaseProFieldFC & import("../../../provider").ProRenderFieldPropsType & {
|
|
4
4
|
text: string[] | number[];
|
|
5
5
|
format?: string | undefined;
|
|
6
|
+
variant?: "outlined" | "filled" | "borderless" | "underlined" | undefined;
|
|
6
7
|
} & ProFieldLightProps & React.RefAttributes<any>>;
|
|
7
8
|
export { FieldTimeRangePicker };
|
|
8
9
|
declare const _default: React.ForwardRefExoticComponent<import("../../../provider").BaseProFieldFC & import("../../../provider").ProRenderFieldPropsType & {
|
|
9
10
|
text: string | number;
|
|
10
11
|
format?: string | undefined;
|
|
12
|
+
variant?: "outlined" | "filled" | "borderless" | "underlined" | undefined;
|
|
11
13
|
} & ProFieldLightProps & React.RefAttributes<any>>;
|
|
12
14
|
export default _default;
|
|
@@ -25,9 +25,9 @@ const FieldTimePicker = ({
|
|
|
25
25
|
format = 'HH:mm:ss',
|
|
26
26
|
render,
|
|
27
27
|
formItemRender,
|
|
28
|
-
plain,
|
|
29
28
|
fieldProps,
|
|
30
|
-
lightLabel
|
|
29
|
+
lightLabel,
|
|
30
|
+
variant
|
|
31
31
|
}, ref) => {
|
|
32
32
|
const [open, setOpen] = (0, _react.useState)(false);
|
|
33
33
|
const intl = (0, _provider.useIntl)();
|
|
@@ -66,8 +66,9 @@ const FieldTimePicker = ({
|
|
|
66
66
|
} : undefined,
|
|
67
67
|
label: label,
|
|
68
68
|
disabled: disabled,
|
|
69
|
+
variant: variant ?? fieldProps?.variant,
|
|
69
70
|
value: dayValue || open ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.TimePicker, {
|
|
70
|
-
variant:
|
|
71
|
+
variant: variant ?? fieldProps?.variant,
|
|
71
72
|
format: format,
|
|
72
73
|
ref: ref,
|
|
73
74
|
...fieldProps,
|
|
@@ -87,7 +88,6 @@ const FieldTimePicker = ({
|
|
|
87
88
|
dom = /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.DatePicker.TimePicker, {
|
|
88
89
|
ref: ref,
|
|
89
90
|
format: format,
|
|
90
|
-
variant: plain === undefined ? 'outlined' : plain ? 'borderless' : 'outlined',
|
|
91
91
|
...fieldProps,
|
|
92
92
|
value: dayValue
|
|
93
93
|
});
|
|
@@ -118,8 +118,8 @@ const FieldTimeRangePickerComponents = ({
|
|
|
118
118
|
format = 'HH:mm:ss',
|
|
119
119
|
render,
|
|
120
120
|
formItemRender,
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
fieldProps,
|
|
122
|
+
variant
|
|
123
123
|
}, ref) => {
|
|
124
124
|
const intl = (0, _provider.useIntl)();
|
|
125
125
|
const [open, setOpen] = (0, _react.useState)(false);
|
|
@@ -166,9 +166,10 @@ const FieldTimeRangePickerComponents = ({
|
|
|
166
166
|
} : undefined,
|
|
167
167
|
label: label,
|
|
168
168
|
disabled: disabled,
|
|
169
|
+
variant: variant,
|
|
169
170
|
placeholder: placeholder,
|
|
170
171
|
value: dayValue || open ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.TimePicker.RangePicker, {
|
|
171
|
-
variant:
|
|
172
|
+
variant: variant ?? fieldProps?.variant,
|
|
172
173
|
format: format,
|
|
173
174
|
ref: ref,
|
|
174
175
|
...fieldProps,
|
|
@@ -188,7 +189,7 @@ const FieldTimeRangePickerComponents = ({
|
|
|
188
189
|
dom = /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.TimePicker.RangePicker, {
|
|
189
190
|
ref: ref,
|
|
190
191
|
format: format,
|
|
191
|
-
variant:
|
|
192
|
+
variant: variant,
|
|
192
193
|
...fieldProps,
|
|
193
194
|
value: dayValue
|
|
194
195
|
});
|
|
@@ -25,7 +25,7 @@ const FieldTreeSelect = ({
|
|
|
25
25
|
light,
|
|
26
26
|
label,
|
|
27
27
|
render,
|
|
28
|
-
variant,
|
|
28
|
+
variant: propsVariant,
|
|
29
29
|
...rest
|
|
30
30
|
}, ref) => {
|
|
31
31
|
const {
|
|
@@ -46,6 +46,7 @@ const FieldTreeSelect = ({
|
|
|
46
46
|
searchValue: propsSearchValue,
|
|
47
47
|
...fieldProps
|
|
48
48
|
} = rest.fieldProps;
|
|
49
|
+
const variant = propsVariant ?? fieldProps?.variant;
|
|
49
50
|
const intl = (0, _provider.useIntl)();
|
|
50
51
|
const [loading, options, fetchData] = (0, _Select.useFieldFetchData)({
|
|
51
52
|
...rest,
|
|
@@ -136,7 +137,6 @@ const FieldTreeSelect = ({
|
|
|
136
137
|
children: [item.label, " ", itemIndex < valuesLength - 1 ? ',' : '']
|
|
137
138
|
});
|
|
138
139
|
} : undefined,
|
|
139
|
-
variant: !light ? variant : 'borderless',
|
|
140
140
|
...fieldProps,
|
|
141
141
|
treeData: options,
|
|
142
142
|
showSearch: showSearch,
|
|
@@ -378,13 +378,27 @@ function BaseForm(props) {
|
|
|
378
378
|
} = props;
|
|
379
379
|
const formRef = (0, _react.useRef)({});
|
|
380
380
|
const [loading, setLoadingInner] = (0, _util.useControlledState)(false, propsLoading);
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* 使用 useRefFunction 包装回调,确保引用稳定
|
|
384
|
+
*/
|
|
385
|
+
const onLoadingChangeCallback = (0, _utils.useRefFunction)(l => {
|
|
386
|
+
onLoadingChange?.(l);
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* 包装 setLoading,使用 queueMicrotask 延迟回调调用
|
|
391
|
+
* 避免在渲染阶段调用外部回调导致的 React 警告
|
|
392
|
+
*/
|
|
381
393
|
const setLoading = (0, _react.useCallback)(updater => {
|
|
382
394
|
setLoadingInner(prev => {
|
|
383
395
|
const next = typeof updater === 'function' ? updater(prev) : updater;
|
|
384
|
-
|
|
396
|
+
queueMicrotask(() => {
|
|
397
|
+
onLoadingChangeCallback(next);
|
|
398
|
+
});
|
|
385
399
|
return next;
|
|
386
400
|
});
|
|
387
|
-
}, [
|
|
401
|
+
}, [onLoadingChangeCallback]);
|
|
388
402
|
const [urlSearch, setUrlSearch] = (0, _useParams.useUrlSearchParams)({}, {
|
|
389
403
|
disabled: !syncToUrl
|
|
390
404
|
});
|
|
@@ -101,7 +101,13 @@ const LightWrapper = props => {
|
|
|
101
101
|
onChange: e => {
|
|
102
102
|
setTempValue(e?.target ? e.target.value : e);
|
|
103
103
|
},
|
|
104
|
-
...children.props
|
|
104
|
+
...children.props,
|
|
105
|
+
// light 模式下由外层 FilterDropdown 统一描边,内层 Select/TreeSelect/DatePicker 等统一使用 borderless,各 Field 组件无需再根据 light 判断
|
|
106
|
+
variant: 'borderless',
|
|
107
|
+
fieldProps: {
|
|
108
|
+
...children.props?.fieldProps,
|
|
109
|
+
variant: 'borderless'
|
|
110
|
+
}
|
|
105
111
|
})
|
|
106
112
|
})
|
|
107
113
|
}));
|
|
@@ -51,7 +51,7 @@ const Submitter = props => {
|
|
|
51
51
|
const dom = [];
|
|
52
52
|
if (resetButtonProps !== false) {
|
|
53
53
|
dom.push( /*#__PURE__*/(0, _react.createElement)(_antd.Button, {
|
|
54
|
-
...(0, _util.omit)(resetButtonProps ?? {}, ['preventDefault']),
|
|
54
|
+
...(0, _util.omit)(resetButtonProps ?? {}, ['preventDefault', 'fieldProps']),
|
|
55
55
|
key: "rest",
|
|
56
56
|
onClick: e => {
|
|
57
57
|
if (!resetButtonProps?.preventDefault) reset();
|
|
@@ -62,7 +62,7 @@ const Submitter = props => {
|
|
|
62
62
|
if (submitButtonProps !== false) {
|
|
63
63
|
dom.push( /*#__PURE__*/(0, _react.createElement)(_antd.Button, {
|
|
64
64
|
type: "primary",
|
|
65
|
-
...(0, _util.omit)(submitButtonProps || {}, ['preventDefault']),
|
|
65
|
+
...(0, _util.omit)(submitButtonProps || {}, ['preventDefault', 'fieldProps']),
|
|
66
66
|
key: "submit",
|
|
67
67
|
onClick: e => {
|
|
68
68
|
if (!submitButtonProps?.preventDefault) submit();
|
|
@@ -23,9 +23,7 @@ const ProFormDateTimeRangePicker = exports.ProFormDateTimeRangePicker = /*#__PUR
|
|
|
23
23
|
}, ref) => {
|
|
24
24
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BaseDateRanger.BaseDateRanger, {
|
|
25
25
|
ref: ref,
|
|
26
|
-
fieldProps:
|
|
27
|
-
...fieldProps
|
|
28
|
-
},
|
|
26
|
+
fieldProps: fieldProps,
|
|
29
27
|
valueType: valueType,
|
|
30
28
|
proFieldProps: proFieldProps,
|
|
31
29
|
fieldConfig: {
|