@ant-design/pro-components 3.1.2-0 → 3.1.3-1

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 (159) hide show
  1. package/dist/pro-components.min.js +1 -1
  2. package/es/card/components/Actions/style.js +1 -0
  3. package/es/card/components/Card/index.js +17 -3
  4. package/es/card/components/CheckCard/style.js +1 -0
  5. package/es/card/components/Divider/style.js +1 -0
  6. package/es/card/components/Loading/style.js +1 -0
  7. package/es/card/components/Operation/style.js +1 -0
  8. package/es/card/components/Statistic/style.js +1 -0
  9. package/es/card/components/StatisticCard/style.js +1 -0
  10. package/es/descriptions/useFetchData.js +17 -2
  11. package/es/field/components/Cascader/index.js +0 -2
  12. package/es/field/components/Checkbox/index.js +2 -0
  13. package/es/field/components/Code/index.js +1 -8
  14. package/es/field/components/ColorPicker/index.d.ts +1 -1
  15. package/es/field/components/DatePicker/index.js +3 -5
  16. package/es/field/components/FromNow/index.d.ts +1 -0
  17. package/es/field/components/FromNow/index.js +2 -2
  18. package/es/field/components/Money/index.js +0 -1
  19. package/es/field/components/Progress/index.js +1 -2
  20. package/es/field/components/RangePicker/index.js +3 -11
  21. package/es/field/components/Select/LightSelect/index.d.ts +2 -0
  22. package/es/field/components/Select/LightSelect/index.js +3 -1
  23. package/es/field/components/Select/index.d.ts +1 -1
  24. package/es/field/components/Select/index.js +1 -2
  25. package/es/field/components/Switch/index.js +2 -1
  26. package/es/field/components/TimePicker/index.d.ts +2 -0
  27. package/es/field/components/TimePicker/index.js +9 -8
  28. package/es/field/components/TreeSelect/index.js +2 -2
  29. package/es/form/BaseForm/BaseForm.js +16 -2
  30. package/es/form/BaseForm/LightWrapper/index.js +7 -1
  31. package/es/form/BaseForm/LightWrapper/style.js +2 -0
  32. package/es/form/BaseForm/Submitter/index.js +2 -2
  33. package/es/form/components/DatePicker/DateTimePicker.js +1 -0
  34. package/es/form/components/DateRangePicker/DateTimeRangePicker.js +1 -3
  35. package/es/form/components/Digit/DigitRange.d.ts +1 -1
  36. package/es/form/components/Field/index.d.ts +0 -1
  37. package/es/form/components/Field/index.js +3 -5
  38. package/es/form/components/FormItem/FormItemRender/index.d.ts +1 -0
  39. package/es/form/components/FormItem/Group/index.js +17 -3
  40. package/es/form/components/FormItem/Group/style.js +1 -0
  41. package/es/form/components/FormItem/index.d.ts +1 -0
  42. package/es/form/components/FormItem/index.js +16 -31
  43. package/es/form/components/FormItem/warpField.js +1 -0
  44. package/es/form/components/List/style.js +1 -0
  45. package/es/form/helpers/grid.d.ts +7 -3
  46. package/es/form/helpers/grid.js +19 -4
  47. package/es/form/layouts/DrawerForm/index.js +16 -2
  48. package/es/form/layouts/DrawerForm/style.js +1 -0
  49. package/es/form/layouts/LightFilter/index.js +7 -4
  50. package/es/form/layouts/LightFilter/style.js +1 -0
  51. package/es/form/layouts/LoginForm/style.js +1 -0
  52. package/es/form/layouts/LoginFormPage/style.js +1 -0
  53. package/es/form/layouts/ModalForm/index.js +17 -2
  54. package/es/form/layouts/QueryFilter/index.js +17 -3
  55. package/es/form/layouts/QueryFilter/style.js +1 -0
  56. package/es/form/layouts/StepsForm/index.js +16 -2
  57. package/es/form/layouts/StepsForm/style.js +1 -0
  58. package/es/layout/ProLayout.js +33 -5
  59. package/es/layout/components/AppsLogoComponents/style/index.js +1 -0
  60. package/es/layout/components/CollapsedIcon/style.js +1 -0
  61. package/es/layout/components/GlobalFooter/style.js +1 -0
  62. package/es/layout/components/GridContent/style.js +1 -0
  63. package/es/layout/components/SettingDrawer/index.js +33 -5
  64. package/es/layout/components/TopNavHeader/style.js +1 -0
  65. package/es/list/ListView.js +3 -0
  66. package/es/provider/index.d.ts +0 -4
  67. package/es/provider/useStyle/index.js +1 -2
  68. package/es/table/components/Alert/style.js +1 -0
  69. package/es/table/components/ColumnSetting/style.js +1 -0
  70. package/es/table/components/DragSortTable/style.js +1 -0
  71. package/es/table/components/ListToolBar/style.js +1 -0
  72. package/es/table/useFetchData.js +16 -2
  73. package/es/utils/components/DropdownFooter/style.js +1 -0
  74. package/es/utils/components/FieldLabel/index.js +3 -3
  75. package/es/utils/components/FieldLabel/style.js +32 -4
  76. package/es/utils/components/FilterDropdown/index.js +1 -1
  77. package/es/utils/components/FilterDropdown/style.js +10 -0
  78. package/es/utils/components/InlineErrorFormItem/style.js +1 -0
  79. package/es/utils/components/LabelIconTip/style.js +1 -0
  80. package/es/utils/pickProProps/index.js +1 -1
  81. package/es/utils/useSelection.js +27 -2
  82. package/lib/card/components/Actions/style.js +1 -0
  83. package/lib/card/components/Card/index.js +16 -2
  84. package/lib/card/components/CheckCard/style.js +1 -0
  85. package/lib/card/components/Divider/style.js +1 -0
  86. package/lib/card/components/Loading/style.js +1 -0
  87. package/lib/card/components/Operation/style.js +1 -0
  88. package/lib/card/components/Statistic/style.js +1 -0
  89. package/lib/card/components/StatisticCard/style.js +1 -0
  90. package/lib/descriptions/useFetchData.js +17 -2
  91. package/lib/field/components/Cascader/index.js +0 -2
  92. package/lib/field/components/Checkbox/index.js +2 -0
  93. package/lib/field/components/Code/index.js +1 -8
  94. package/lib/field/components/DatePicker/index.js +3 -5
  95. package/lib/field/components/FromNow/index.d.ts +1 -0
  96. package/lib/field/components/FromNow/index.js +2 -2
  97. package/lib/field/components/Money/index.js +0 -1
  98. package/lib/field/components/Progress/index.js +1 -2
  99. package/lib/field/components/RangePicker/index.js +3 -11
  100. package/lib/field/components/Select/LightSelect/index.d.ts +2 -0
  101. package/lib/field/components/Select/LightSelect/index.js +3 -1
  102. package/lib/field/components/Select/index.js +1 -2
  103. package/lib/field/components/Switch/index.js +2 -1
  104. package/lib/field/components/TimePicker/index.d.ts +2 -0
  105. package/lib/field/components/TimePicker/index.js +9 -8
  106. package/lib/field/components/TreeSelect/index.js +2 -2
  107. package/lib/form/BaseForm/BaseForm.js +16 -2
  108. package/lib/form/BaseForm/LightWrapper/index.js +7 -1
  109. package/lib/form/BaseForm/LightWrapper/style.js +2 -0
  110. package/lib/form/BaseForm/Submitter/index.js +2 -2
  111. package/lib/form/components/DatePicker/DateTimePicker.js +1 -0
  112. package/lib/form/components/DateRangePicker/DateTimeRangePicker.js +1 -3
  113. package/lib/form/components/Field/index.d.ts +0 -1
  114. package/lib/form/components/Field/index.js +1 -3
  115. package/lib/form/components/FormItem/FormItemRender/index.d.ts +1 -0
  116. package/lib/form/components/FormItem/Group/index.js +16 -2
  117. package/lib/form/components/FormItem/Group/style.js +1 -0
  118. package/lib/form/components/FormItem/index.d.ts +1 -0
  119. package/lib/form/components/FormItem/index.js +16 -31
  120. package/lib/form/components/FormItem/warpField.js +1 -0
  121. package/lib/form/components/List/style.js +1 -0
  122. package/lib/form/helpers/grid.d.ts +7 -3
  123. package/lib/form/helpers/grid.js +20 -4
  124. package/lib/form/layouts/DrawerForm/index.js +16 -2
  125. package/lib/form/layouts/DrawerForm/style.js +1 -0
  126. package/lib/form/layouts/LightFilter/index.js +7 -4
  127. package/lib/form/layouts/LightFilter/style.js +1 -0
  128. package/lib/form/layouts/LoginForm/style.js +1 -0
  129. package/lib/form/layouts/LoginFormPage/style.js +1 -0
  130. package/lib/form/layouts/ModalForm/index.js +17 -2
  131. package/lib/form/layouts/QueryFilter/index.js +16 -2
  132. package/lib/form/layouts/QueryFilter/style.js +1 -0
  133. package/lib/form/layouts/StepsForm/index.js +16 -2
  134. package/lib/form/layouts/StepsForm/style.js +1 -0
  135. package/lib/layout/ProLayout.js +32 -4
  136. package/lib/layout/components/AppsLogoComponents/style/index.js +1 -0
  137. package/lib/layout/components/CollapsedIcon/style.js +1 -0
  138. package/lib/layout/components/GlobalFooter/style.js +1 -0
  139. package/lib/layout/components/GridContent/style.js +1 -0
  140. package/lib/layout/components/SettingDrawer/index.js +32 -4
  141. package/lib/layout/components/TopNavHeader/style.js +1 -0
  142. package/lib/list/ListView.js +3 -0
  143. package/lib/provider/index.d.ts +0 -4
  144. package/lib/provider/useStyle/index.js +1 -2
  145. package/lib/table/components/Alert/style.js +1 -0
  146. package/lib/table/components/ColumnSetting/style.js +1 -0
  147. package/lib/table/components/DragSortTable/style.js +1 -0
  148. package/lib/table/components/ListToolBar/style.js +1 -0
  149. package/lib/table/useFetchData.js +16 -2
  150. package/lib/utils/components/DropdownFooter/style.js +1 -0
  151. package/lib/utils/components/FieldLabel/index.js +3 -3
  152. package/lib/utils/components/FieldLabel/style.js +32 -4
  153. package/lib/utils/components/FilterDropdown/index.js +1 -1
  154. package/lib/utils/components/FilterDropdown/style.js +10 -0
  155. package/lib/utils/components/InlineErrorFormItem/style.js +1 -0
  156. package/lib/utils/components/LabelIconTip/style.js +1 -0
  157. package/lib/utils/pickProProps/index.js +1 -1
  158. package/lib/utils/useSelection.js +26 -1
  159. package/package.json +1 -1
@@ -3,7 +3,7 @@ import { omit, useControlledState } from '@rc-component/util';
3
3
  import { useUrlSearchParams } from '@umijs/use-params';
4
4
  import { Alert, Button, Divider, Drawer, List, Switch, message } from 'antd';
5
5
  import React, { useCallback, useEffect, useRef, useState } from 'react';
6
- import { isBrowser, merge } from "../../../utils";
6
+ import { isBrowser, merge, useRefFunction } from "../../../utils";
7
7
  import { defaultSettings } from "../../defaultSettings";
8
8
  import { gLocaleObject, getLanguage } from "../../locales";
9
9
  import { genStringToTheme } from "../../utils/utils";
@@ -144,25 +144,53 @@ export const SettingDrawer = props => {
144
144
  } = props;
145
145
  const firstRender = useRef(true);
146
146
  const [open, setOpenInner] = useControlledState(false, props.collapse);
147
+
148
+ /**
149
+ * 使用 useRefFunction 包装回调,确保引用稳定
150
+ */
151
+ const onCollapseChangeCallback = useRefFunction(o => {
152
+ props.onCollapseChange?.(o);
153
+ });
154
+
155
+ /**
156
+ * 使用 queueMicrotask 延迟回调调用,避免在渲染阶段调用外部回调导致的 React 警告
157
+ * "Cannot update a component while rendering a different component"
158
+ */
147
159
  const setOpen = useCallback(updater => {
148
160
  setOpenInner(prev => {
149
161
  const next = typeof updater === 'function' ? updater(prev) : updater;
150
- props.onCollapseChange?.(next);
162
+ queueMicrotask(() => {
163
+ onCollapseChangeCallback(next);
164
+ });
151
165
  return next;
152
166
  });
153
- }, [props.onCollapseChange]);
167
+ }, [onCollapseChangeCallback]);
154
168
  const [language, setLanguage] = useState(getLanguage());
155
169
  const [urlParams, setUrlParams] = useUrlSearchParams({}, {
156
170
  disabled: disableUrlParams
157
171
  });
158
172
  const [settingState, setSettingStateInner] = useControlledState(() => getParamsFromUrl(urlParams, propsSettings || propsDefaultSettings), propsSettings);
173
+
174
+ /**
175
+ * 使用 useRefFunction 包装回调,确保引用稳定
176
+ */
177
+ const onSettingChangeCallback = useRefFunction(settings => {
178
+ onSettingChange?.(settings);
179
+ });
180
+
181
+ /**
182
+ * 使用 queueMicrotask 延迟回调调用,避免在渲染阶段调用外部回调导致的 React 警告
183
+ * "Cannot update a component while rendering a different component"
184
+ */
159
185
  const setSettingState = useCallback(updater => {
160
186
  setSettingStateInner(prev => {
161
187
  const next = typeof updater === 'function' ? updater(prev) : updater;
162
- onSettingChange?.(next);
188
+ queueMicrotask(() => {
189
+ onSettingChangeCallback(next);
190
+ });
163
191
  return next;
164
192
  });
165
- }, [onSettingChange]);
193
+ }, [onSettingChangeCallback]);
166
194
  const {
167
195
  navTheme,
168
196
  colorPrimary,
@@ -2,6 +2,7 @@ import { useStyle as useAntdStyle } from "../../../provider";
2
2
  const genTopNavHeaderStyle = token => {
3
3
  return {
4
4
  [token.componentCls]: {
5
+ boxSizing: 'border-box',
5
6
  position: 'relative',
6
7
  width: '100%',
7
8
  height: '100%',
@@ -169,6 +169,9 @@ function ListView(props) {
169
169
  onChange: /*#__PURE__*/React.isValidElement(checkboxDom) ? changeChecked => {
170
170
  return checkboxDom?.props?.onChange({
171
171
  nativeEvent: {},
172
+ target: {
173
+ checked: changeChecked
174
+ },
172
175
  changeChecked
173
176
  });
174
177
  } : undefined
@@ -50,10 +50,6 @@ export type BaseProFieldFC = {
50
50
  * @option edit 渲染编辑模式
51
51
  * */
52
52
  mode?: ProFieldFCMode;
53
- /**
54
- * 简约模式
55
- */
56
- plain?: boolean;
57
53
  /** 轻量模式 */
58
54
  light?: boolean;
59
55
  /** Label */
@@ -58,8 +58,7 @@ export function useStyle(componentName, styleFn) {
58
58
  // eslint-disable-next-line prefer-const
59
59
  let {
60
60
  token = {},
61
- hashed,
62
- prefixCls
61
+ hashed
63
62
  } = useContext(ProProvider);
64
63
  const {
65
64
  token: antdToken,
@@ -2,6 +2,7 @@ import { setAlpha, useStyle as useAntdStyle } from "../../../provider";
2
2
  const genProStyle = token => {
3
3
  return {
4
4
  [token.componentCls]: {
5
+ boxSizing: 'border-box',
5
6
  marginBlockEnd: 16,
6
7
  backgroundColor: setAlpha(token.colorTextBase, 0.02),
7
8
  borderRadius: token.borderRadius,
@@ -2,6 +2,7 @@ import { useStyle as useAntdStyle } from "../../../provider";
2
2
  const genProStyle = token => {
3
3
  return {
4
4
  [token.componentCls]: {
5
+ boxSizing: 'border-box',
5
6
  width: 'auto',
6
7
  '&-title': {
7
8
  display: 'flex',
@@ -2,6 +2,7 @@ import { useStyle as useAntdStyle } from "../../../provider";
2
2
  const genProListStyle = token => {
3
3
  return {
4
4
  [token.componentCls]: {
5
+ boxSizing: 'border-box',
5
6
  '&-icon': {
6
7
  marginInlineEnd: 8,
7
8
  color: token.colorTextSecondary,
@@ -2,6 +2,7 @@ import { useStyle as useAntdStyle } from "../../../provider";
2
2
  const genProListStyle = token => {
3
3
  return {
4
4
  [token.componentCls]: {
5
+ boxSizing: 'border-box',
5
6
  lineHeight: '1',
6
7
  '&-container': {
7
8
  display: 'flex',
@@ -61,13 +61,27 @@ const useFetchData = (getData, defaultData, options) => {
61
61
  */
62
62
  const tableLoadingValue = typeof options?.loading === 'object' ? options?.loading?.spinning : options?.loading;
63
63
  const [tableLoading, setTableLoadingInner] = useControlledState(false, tableLoadingValue);
64
+
65
+ /**
66
+ * 使用 useRefFunction 包装回调,确保引用稳定
67
+ */
68
+ const onLoadingChange = useRefFunction(loading => {
69
+ options?.onLoadingChange?.(loading);
70
+ });
71
+
72
+ /**
73
+ * 包装 setTableLoading,使用 queueMicrotask 延迟回调调用
74
+ * 避免在渲染阶段调用外部回调导致的 React 警告
75
+ */
64
76
  const setTableLoading = useCallback(updater => {
65
77
  setTableLoadingInner(prev => {
66
78
  const next = typeof updater === 'function' ? updater(prev) : updater;
67
- options?.onLoadingChange?.(next);
79
+ queueMicrotask(() => {
80
+ onLoadingChange(next);
81
+ });
68
82
  return next;
69
83
  });
70
- }, [options?.onLoadingChange]);
84
+ }, [onLoadingChange]);
71
85
 
72
86
  /**
73
87
  * 表示页面信息的类型
@@ -2,6 +2,7 @@ import { useStyle as useAntdStyle } from "../../../provider";
2
2
  const genProStyle = token => {
3
3
  return {
4
4
  [token.componentCls]: {
5
+ boxSizing: 'border-box',
5
6
  display: 'flex',
6
7
  justifyContent: 'space-between',
7
8
  paddingBlock: 8,
@@ -28,7 +28,6 @@ const FieldLabelFunction = (props, ref) => {
28
28
  } = ConfigProvider?.useConfig?.() || {
29
29
  componentSize: 'middle'
30
30
  };
31
- const size = componentSize;
32
31
  const {
33
32
  getPrefixCls
34
33
  } = useContext(ConfigProvider.ConfigContext);
@@ -113,10 +112,11 @@ const FieldLabelFunction = (props, ref) => {
113
112
  return aLabel || placeholder;
114
113
  };
115
114
  return wrapSSR( /*#__PURE__*/_jsxs("span", {
116
- className: clsx(prefixCls, hashId, `${prefixCls}-${props.size ?? size ?? 'middle'}`, {
115
+ className: clsx(prefixCls, hashId, `${prefixCls}-${props.size ?? componentSize ?? 'middle'}`, {
116
+ [`${prefixCls}-${variant || 'borderless'}-active`]: (Array.isArray(value) ? value.length > 0 : !!value) || value === 0,
117
117
  [`${prefixCls}-active`]: (Array.isArray(value) ? value.length > 0 : !!value) || value === 0,
118
118
  [`${prefixCls}-disabled`]: disabled,
119
- [`${prefixCls}-bordered`]: variant !== 'borderless',
119
+ [`${prefixCls}-${variant}`]: variant,
120
120
  [`${prefixCls}-allow-clear`]: allowClear
121
121
  }, className),
122
122
  style: style,
@@ -2,6 +2,7 @@ import { useStyle as useAntdStyle } from "../../../provider";
2
2
  const genProStyle = token => {
3
3
  return {
4
4
  [token.componentCls]: {
5
+ boxSizing: 'border-box',
5
6
  display: 'inline-flex',
6
7
  gap: token.marginXXS,
7
8
  alignItems: 'center',
@@ -10,7 +11,8 @@ const genProStyle = token => {
10
11
  paddingInline: 8,
11
12
  fontSize: token.fontSize,
12
13
  lineHeight: '30px',
13
- borderRadius: '2px',
14
+ borderRadius: token.borderRadius,
15
+ cornerShape: 'squircle',
14
16
  cursor: 'pointer',
15
17
  '&:hover': {
16
18
  backgroundColor: token.colorBgTextHover
@@ -18,7 +20,6 @@ const genProStyle = token => {
18
20
  '&-active': {
19
21
  paddingBlock: 0,
20
22
  paddingInline: 8,
21
- backgroundColor: token.colorBgTextHover,
22
23
  [`&${token.componentCls}-allow-clear:hover:not(${token.componentCls}-disabled)`]: {
23
24
  [`${token.componentCls}-arrow`]: {
24
25
  display: 'none'
@@ -83,12 +84,39 @@ const genProStyle = token => {
83
84
  fontSize: '6px'
84
85
  }
85
86
  },
86
- '&-bordered': {
87
+ '&-outlined': {
87
88
  height: '32px',
88
89
  paddingBlock: 0,
89
90
  paddingInline: 8,
90
91
  border: `${token.lineWidth}px solid ${token.colorBorder}`,
91
- borderRadius: '@border-radius-base'
92
+ borderRadius: token.borderRadius,
93
+ '&-active': {
94
+ backgroundColor: 'none'
95
+ }
96
+ },
97
+ '&-borderless': {
98
+ height: '32px',
99
+ '&-active': {
100
+ backgroundColor: token.colorBgTextHover
101
+ }
102
+ },
103
+ '&-filled': {
104
+ height: '32px',
105
+ backgroundColor: token.colorBgTextHover,
106
+ border: `${token.lineWidth}px solid transparent`,
107
+ '&:hover': {
108
+ border: `${token.lineWidth}px solid ${token.colorPrimary}`,
109
+ backgroundColor: token.colorBgTextHover
110
+ }
111
+ },
112
+ '&-underlined': {
113
+ height: '32px',
114
+ borderRadius: 0,
115
+ borderBottom: `${token.lineWidth}px solid ${token.colorSplit}`,
116
+ '&:hover': {
117
+ borderBottom: `${token.lineWidth}px solid ${token.colorPrimary}`,
118
+ backgroundColor: token.colorBgTextHover
119
+ }
92
120
  },
93
121
  '&-bordered&-small': {
94
122
  height: '24px',
@@ -61,7 +61,7 @@ const FilterDropdown = props => {
61
61
  })]
62
62
  }),
63
63
  children: /*#__PURE__*/_jsx("span", {
64
- className: `${prefixCls}-label ${hashId}`.trim(),
64
+ className: clsx(`${prefixCls}-label`, hashId),
65
65
  children: label
66
66
  })
67
67
  }));
@@ -4,6 +4,16 @@ const genProStyle = token => {
4
4
  [`${token.componentCls}-label`]: {
5
5
  cursor: 'pointer'
6
6
  },
7
+ [`${token.componentCls}-label-bordered`]: {
8
+ display: 'inline-flex',
9
+ alignItems: 'center',
10
+ height: token.controlHeight,
11
+ paddingBlock: 0,
12
+ paddingInline: token.paddingSM,
13
+ border: `${token.lineWidth}px solid ${token.colorBorder}`,
14
+ borderRadius: token.borderRadius,
15
+ boxSizing: 'border-box'
16
+ },
7
17
  [`${token.componentCls}-overlay`]: {
8
18
  minWidth: '200px',
9
19
  marginBlockStart: '4px'
@@ -3,6 +3,7 @@ const genProStyle = token => {
3
3
  const progressBgCls = `${token.antCls}-progress-bg`;
4
4
  return {
5
5
  [token.componentCls]: {
6
+ boxSizing: 'border-box',
6
7
  '&-multiple': {
7
8
  paddingBlockStart: 6,
8
9
  paddingBlockEnd: 12,
@@ -2,6 +2,7 @@ import { useStyle as useAntdStyle } from "../../../provider";
2
2
  const genProStyle = token => {
3
3
  return {
4
4
  [token.componentCls]: {
5
+ boxSizing: 'border-box',
5
6
  display: 'inline-flex',
6
7
  alignItems: 'center',
7
8
  maxWidth: '100%',
@@ -1,4 +1,4 @@
1
- const proFieldProps = `valueType request plain formItemRender render text formItemProps valueEnum`;
1
+ const proFieldProps = `valueType request formItemRender render text formItemProps valueEnum`;
2
2
  const proFormProps = `fieldProps isDefaultDom groupProps contentRender submitterProps submitter`;
3
3
  export function pickProProps(props, customValueType = false) {
4
4
  const propList = `${proFieldProps} ${proFormProps}`.split(/[\s\n]+/);
@@ -1,4 +1,4 @@
1
- import { Checkbox } from 'antd';
1
+ import { Checkbox, Radio } from 'antd';
2
2
  import React from 'react';
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  function useSelection(config, rowSelection) {
@@ -18,6 +18,20 @@ function useSelection(config, rowSelection) {
18
18
  const selectedKeySet = React.useMemo(() => new Set(innerKeys), [innerKeys]);
19
19
  const toggleKey = React.useCallback((key, record, checked) => {
20
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
+ }
21
35
  const prevSet = new Set(prevKeys);
22
36
  const next = new Set(prevSet);
23
37
  if (checked) {
@@ -43,10 +57,21 @@ function useSelection(config, rowSelection) {
43
57
  }, [data, getRowKey, rowSelection, controlledKeys]);
44
58
  const selectItemRender = React.useCallback(columns => {
45
59
  void columns;
60
+ if (!rowSelection) {
61
+ return [];
62
+ }
46
63
  return [{
47
64
  render: (_text, record, index) => {
48
65
  const key = getRowKey(record, index);
49
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
+ }
50
75
  return /*#__PURE__*/_jsx(Checkbox, {
51
76
  checked: checked,
52
77
  onChange: e => {
@@ -55,7 +80,7 @@ function useSelection(config, rowSelection) {
55
80
  });
56
81
  }
57
82
  }];
58
- }, [getRowKey, selectedKeySet, toggleKey]);
83
+ }, [getRowKey, selectedKeySet, toggleKey, rowSelection?.type]);
59
84
  return [selectItemRender, selectedKeySet];
60
85
  }
61
86
  export default useSelection;
@@ -12,6 +12,7 @@ const genActionsStyle = token => {
12
12
  } = token;
13
13
  return {
14
14
  [`${componentCls}-actions`]: {
15
+ boxSizing: 'border-box',
15
16
  marginBlock: 0,
16
17
  marginInline: 0,
17
18
  paddingBlock: 0,
@@ -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'];
@@ -41,6 +41,7 @@ const cardLoading = exports.cardLoading = new _cssinjs.Keyframes('card-loading',
41
41
  const genProStyle = token => {
42
42
  return {
43
43
  [token.componentCls]: {
44
+ boxSizing: 'border-box',
44
45
  position: 'relative',
45
46
  display: 'inline-block',
46
47
  width: '320px',
@@ -11,6 +11,7 @@ const genDividerStyle = token => {
11
11
  } = token;
12
12
  return {
13
13
  [componentCls]: {
14
+ boxSizing: 'border-box',
14
15
  '&-divider': {
15
16
  flex: 'none',
16
17
  width: token.lineWidth,
@@ -21,6 +21,7 @@ const cardLoading = exports.cardLoading = new _cssinjs.Keyframes('card-loading',
21
21
  const genProStyle = token => {
22
22
  return {
23
23
  [token.componentCls]: {
24
+ boxSizing: 'border-box',
24
25
  '&-loading': {
25
26
  overflow: 'hidden'
26
27
  },
@@ -8,6 +8,7 @@ var _provider = require("../../../provider");
8
8
  const genProStyle = token => {
9
9
  return {
10
10
  [token.componentCls]: {
11
+ boxSizing: 'border-box',
11
12
  display: 'flex',
12
13
  flexDirection: 'column',
13
14
  justifyContent: 'flex-end',
@@ -8,6 +8,7 @@ var _provider = require("../../../provider");
8
8
  const genProStyle = token => {
9
9
  return {
10
10
  [token.componentCls]: {
11
+ boxSizing: 'border-box',
11
12
  display: 'flex',
12
13
  fontSize: token.fontSize,
13
14
  '& + &': {
@@ -8,6 +8,7 @@ var _provider = require("../../../provider");
8
8
  const genProStyle = token => {
9
9
  return {
10
10
  [token.componentCls]: {
11
+ boxSizing: 'border-box',
11
12
  '&-chart': {
12
13
  display: 'flex',
13
14
  flexDirection: 'column',
@@ -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,