@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
@@ -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
- onCollapse?.(next);
86
+ queueMicrotask(() => {
87
+ onCollapseCallback(next);
88
+ });
75
89
  return next;
76
90
  });
77
- }, [onCollapse]);
91
+ }, [onCollapseCallback]);
78
92
 
79
93
  // 顺序决定如何进行响应式取值,按最大响应值依次取值,请勿修改。
80
94
  const responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];
@@ -9,8 +9,6 @@ export interface DescriptionsItemProps {
9
9
  className?: string;
10
10
  style?: React.CSSProperties;
11
11
  label?: React.ReactNode;
12
- labelStyle?: React.CSSProperties;
13
- contentStyle?: React.CSSProperties;
14
12
  children: React.ReactNode;
15
13
  span?: number;
16
14
  }
@@ -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
- options?.onLoadingChange?.(next);
43
+ queueMicrotask(() => {
44
+ onLoadingChange(next);
45
+ });
31
46
  return next;
32
47
  });
33
- }, [options?.onLoadingChange]);
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
- let dom = /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Input.TextArea, {
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
- variant,
44
- lightLabel
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: plain === undefined ? variant : plain ? 'borderless' : 'outlined',
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
- plain,
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: plain === undefined ? 'outlined' : plain ? 'borderless' : 'outlined',
55
+ variant: variant ?? fieldProps?.variant ?? 'outlined',
56
56
  ...fieldProps,
57
57
  value: momentValue
58
58
  });
@@ -172,7 +172,6 @@ const FieldMoney = ({
172
172
  formItemRender,
173
173
  fieldProps,
174
174
  proFieldKey,
175
- plain,
176
175
  valueEnum,
177
176
  placeholder,
178
177
  locale,
@@ -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: plain ? 10 : undefined,
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: 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: "borderless",
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
- plain,
122
- fieldProps
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: "borderless",
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: plain === undefined ? 'outlined' : plain ? 'borderless' : 'outlined',
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
- onLoadingChange?.(next);
396
+ queueMicrotask(() => {
397
+ onLoadingChangeCallback(next);
398
+ });
385
399
  return next;
386
400
  });
387
- }, [onLoadingChange]);
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();
@@ -28,6 +28,7 @@ const ProFormDateTimePicker = /*#__PURE__*/_react.default.forwardRef(({
28
28
  valueType,
29
29
  customLightMode: true
30
30
  },
31
+ fieldProps: fieldProps,
31
32
  ...rest
32
33
  });
33
34
  });
@@ -1,4 +1,4 @@
1
- import { RangePickerProps } from 'antd/lib/date-picker';
1
+ import type { RangePickerProps } from 'antd/lib/date-picker';
2
2
  import React from 'react';
3
3
  import type { ProFormFieldItemProps } from '../../typing';
4
4
  /**
@@ -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: {