@ant-design/pro-components 3.1.4-0 → 3.1.6-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 (214) hide show
  1. package/dist/pro-components.min.js +1 -1
  2. package/es/card/ProCard.js +15 -7
  3. package/es/card/components/Card/index.js +43 -19
  4. package/es/card/components/Card/style.js +12 -1
  5. package/es/card/components/Statistic/index.js +2 -2
  6. package/es/card/components/StatisticCard/index.js +1 -1
  7. package/es/card/typing.d.ts +27 -8
  8. package/es/field/AllProField.d.ts +2 -0
  9. package/es/field/AllProField.js +3 -0
  10. package/es/field/PureProField.d.ts +2 -0
  11. package/es/field/PureProField.js +2 -0
  12. package/es/field/components/Cascader/index.js +8 -1
  13. package/es/field/components/Checkbox/index.js +5 -1
  14. package/es/field/components/ColorPicker/index.d.ts +1 -1
  15. package/es/field/components/DatePicker/index.d.ts +1 -1
  16. package/es/field/components/DatePicker/index.js +13 -1
  17. package/es/field/components/Digit/index.js +20 -3
  18. package/es/field/components/Money/index.js +51 -3
  19. package/es/field/components/Password/index.js +12 -11
  20. package/es/field/components/Radio/index.js +5 -1
  21. package/es/field/components/RangePicker/index.d.ts +1 -1
  22. package/es/field/components/Segmented/index.js +2 -1
  23. package/es/field/components/Select/SearchSelect/index.js +3 -5
  24. package/es/field/components/Select/index.d.ts +1 -1
  25. package/es/field/components/Select/index.js +1 -1
  26. package/es/field/components/Switch/index.js +10 -2
  27. package/es/field/components/Text/index.js +7 -1
  28. package/es/field/components/TextArea/index.js +6 -3
  29. package/es/field/components/TimePicker/index.js +10 -1
  30. package/es/field/components/TreeSelect/index.d.ts +2 -12
  31. package/es/field/components/TreeSelect/index.js +31 -17
  32. package/es/form/BaseForm/BaseForm.js +4 -3
  33. package/es/form/BaseForm/Submitter/index.d.ts +1 -1
  34. package/es/form/components/Digit/DigitRange.js +5 -2
  35. package/es/form/components/Digit/index.js +7 -2
  36. package/es/form/components/FormItem/FormItemRender/index.d.ts +1 -1
  37. package/es/form/components/FormItem/FormItemRender/index.js +10 -2
  38. package/es/form/components/FormItem/Group/index.js +12 -2
  39. package/es/form/components/List/ListContainer.js +2 -1
  40. package/es/form/components/Select/index.js +11 -1
  41. package/es/form/layouts/DrawerForm/index.d.ts +4 -4
  42. package/es/form/layouts/DrawerForm/index.js +1 -1
  43. package/es/form/layouts/LightFilter/index.js +22 -31
  44. package/es/form/layouts/LoginForm/index.js +10 -9
  45. package/es/form/layouts/LoginFormPage/index.js +17 -16
  46. package/es/form/layouts/ModalForm/index.d.ts +2 -2
  47. package/es/form/layouts/ProForm/index.d.ts +1 -1
  48. package/es/form/layouts/QueryFilter/Actions.js +2 -1
  49. package/es/form/layouts/QueryFilter/index.js +40 -23
  50. package/es/form/layouts/StepsForm/index.js +2 -2
  51. package/es/layout/ProLayout.d.ts +3 -3
  52. package/es/layout/ProLayout.js +13 -25
  53. package/es/layout/components/AppsLogoComponents/DefaultContent.js +6 -5
  54. package/es/layout/components/AppsLogoComponents/SimpleContent.js +6 -5
  55. package/es/layout/components/FooterToolbar/index.d.ts +1 -1
  56. package/es/layout/components/FooterToolbar/index.js +2 -2
  57. package/es/layout/components/GlobalFooter/index.js +3 -3
  58. package/es/layout/components/GlobalHeader/ActionsContent.js +6 -6
  59. package/es/layout/components/GlobalHeader/index.js +1 -1
  60. package/es/layout/components/GridContent/index.js +1 -1
  61. package/es/layout/components/Help/ProHelpPanel.js +11 -10
  62. package/es/layout/components/PageContainer/index.js +9 -9
  63. package/es/layout/components/PageHeader/index.js +10 -10
  64. package/es/layout/components/SettingDrawer/BlockCheckbox.js +2 -2
  65. package/es/layout/components/SettingDrawer/LayoutChange.js +3 -2
  66. package/es/layout/components/SettingDrawer/RegionalChange.js +3 -2
  67. package/es/layout/components/SettingDrawer/ThemeColor.js +3 -2
  68. package/es/layout/components/SettingDrawer/index.js +5 -4
  69. package/es/layout/components/SiderMenu/BaseMenu.js +3 -3
  70. package/es/layout/components/SiderMenu/SiderMenu.js +5 -5
  71. package/es/layout/components/TopNavHeader/index.js +3 -3
  72. package/es/layout/utils/getBreadcrumbProps.js +1 -1
  73. package/es/list/Item.d.ts +3 -3
  74. package/es/list/Item.js +8 -1
  75. package/es/list/ListView.js +1 -2
  76. package/es/list/ProListBase.d.ts +1 -1
  77. package/es/list/ProListBase.js +43 -37
  78. package/es/list/style/index.js +13 -0
  79. package/es/provider/index.d.ts +2 -2
  80. package/es/table/Table.js +14 -5
  81. package/es/table/components/Alert/index.js +6 -5
  82. package/es/table/components/ColumnSetting/index.js +9 -9
  83. package/es/table/components/DragSortTable/index.js +8 -4
  84. package/es/table/components/EditableTable/index.d.ts +1 -1
  85. package/es/table/components/EditableTable/index.js +5 -70
  86. package/es/table/components/ListToolBar/HeaderMenu.d.ts +1 -0
  87. package/es/table/components/ListToolBar/HeaderMenu.js +4 -3
  88. package/es/table/components/ListToolBar/index.js +15 -12
  89. package/es/table/components/ListToolBar/style.js +2 -2
  90. package/es/table/components/ToolBar/DensityIcon.d.ts +2 -2
  91. package/es/table/components/ToolBar/DensityIcon.js +6 -3
  92. package/es/table/components/ToolBar/FullscreenIcon.d.ts +1 -1
  93. package/es/table/components/ToolBar/FullscreenIcon.js +11 -5
  94. package/es/table/useFetchData.js +4 -1
  95. package/es/table/utils/cellRenderToFromItem.js +1 -1
  96. package/es/table/utils/useDragSort.js +1 -1
  97. package/es/utils/components/DropdownFooter/index.d.ts +1 -1
  98. package/es/utils/components/FieldLabel/index.js +1 -1
  99. package/es/utils/components/FilterDropdown/index.d.ts +1 -1
  100. package/es/utils/components/FilterDropdown/index.js +1 -1
  101. package/es/utils/components/InlineErrorFormItem/index.js +5 -4
  102. package/es/utils/components/LabelIconTip/index.js +2 -2
  103. package/es/utils/hooks/useFetchData/index.js +0 -2
  104. package/es/utils/isUrl/index.js +1 -1
  105. package/es/utils/proFieldParsingText/index.d.ts +2 -2
  106. package/es/utils/proFieldParsingText/index.js +2 -2
  107. package/guidelines/components/pro-card.md +5 -4
  108. package/lib/card/ProCard.js +15 -7
  109. package/lib/card/components/Card/index.js +43 -19
  110. package/lib/card/components/Card/style.js +12 -1
  111. package/lib/card/components/Statistic/index.js +2 -2
  112. package/lib/card/components/StatisticCard/index.js +1 -1
  113. package/lib/card/typing.d.ts +27 -8
  114. package/lib/field/AllProField.d.ts +2 -0
  115. package/lib/field/AllProField.js +3 -0
  116. package/lib/field/PureProField.d.ts +2 -0
  117. package/lib/field/PureProField.js +2 -0
  118. package/lib/field/components/Cascader/index.js +8 -1
  119. package/lib/field/components/Checkbox/index.js +5 -1
  120. package/lib/field/components/ColorPicker/index.d.ts +1 -1
  121. package/lib/field/components/DatePicker/index.d.ts +1 -1
  122. package/lib/field/components/DatePicker/index.js +13 -1
  123. package/lib/field/components/Digit/index.js +20 -3
  124. package/lib/field/components/Money/index.js +50 -2
  125. package/lib/field/components/Password/index.js +11 -10
  126. package/lib/field/components/Percent/util.d.ts +1 -1
  127. package/lib/field/components/Radio/index.js +5 -1
  128. package/lib/field/components/RangePicker/index.d.ts +1 -1
  129. package/lib/field/components/Segmented/index.js +2 -1
  130. package/lib/field/components/Select/SearchSelect/index.js +2 -4
  131. package/lib/field/components/Select/index.d.ts +1 -1
  132. package/lib/field/components/Select/index.js +1 -1
  133. package/lib/field/components/Switch/index.js +10 -2
  134. package/lib/field/components/Text/index.js +7 -1
  135. package/lib/field/components/TextArea/index.js +6 -3
  136. package/lib/field/components/TimePicker/index.js +10 -1
  137. package/lib/field/components/TreeSelect/index.d.ts +2 -12
  138. package/lib/field/components/TreeSelect/index.js +30 -16
  139. package/lib/form/BaseForm/BaseForm.js +4 -3
  140. package/lib/form/BaseForm/Submitter/index.d.ts +1 -1
  141. package/lib/form/components/Digit/DigitRange.js +5 -2
  142. package/lib/form/components/Digit/index.js +7 -2
  143. package/lib/form/components/FormItem/FormItemRender/index.d.ts +1 -1
  144. package/lib/form/components/FormItem/FormItemRender/index.js +10 -2
  145. package/lib/form/components/FormItem/Group/index.js +12 -2
  146. package/lib/form/components/List/ListContainer.js +2 -1
  147. package/lib/form/components/Select/index.js +11 -1
  148. package/lib/form/layouts/DrawerForm/index.d.ts +4 -4
  149. package/lib/form/layouts/DrawerForm/index.js +1 -1
  150. package/lib/form/layouts/LightFilter/index.js +21 -30
  151. package/lib/form/layouts/LoginForm/index.js +10 -9
  152. package/lib/form/layouts/LoginFormPage/index.js +17 -16
  153. package/lib/form/layouts/ModalForm/index.d.ts +2 -2
  154. package/lib/form/layouts/ProForm/index.d.ts +1 -1
  155. package/lib/form/layouts/QueryFilter/Actions.js +2 -1
  156. package/lib/form/layouts/QueryFilter/index.js +39 -22
  157. package/lib/form/layouts/StepsForm/index.js +2 -2
  158. package/lib/layout/ProLayout.d.ts +3 -3
  159. package/lib/layout/ProLayout.js +13 -25
  160. package/lib/layout/components/AppsLogoComponents/DefaultContent.js +6 -5
  161. package/lib/layout/components/AppsLogoComponents/SimpleContent.js +6 -5
  162. package/lib/layout/components/FooterToolbar/index.d.ts +1 -1
  163. package/lib/layout/components/FooterToolbar/index.js +2 -2
  164. package/lib/layout/components/GlobalFooter/index.js +3 -3
  165. package/lib/layout/components/GlobalHeader/ActionsContent.js +6 -6
  166. package/lib/layout/components/GlobalHeader/index.js +1 -1
  167. package/lib/layout/components/GridContent/index.js +1 -1
  168. package/lib/layout/components/Help/ProHelpPanel.js +11 -10
  169. package/lib/layout/components/PageContainer/index.js +9 -9
  170. package/lib/layout/components/PageHeader/index.js +10 -10
  171. package/lib/layout/components/SettingDrawer/BlockCheckbox.js +2 -2
  172. package/lib/layout/components/SettingDrawer/LayoutChange.js +3 -2
  173. package/lib/layout/components/SettingDrawer/RegionalChange.js +3 -2
  174. package/lib/layout/components/SettingDrawer/ThemeColor.js +3 -2
  175. package/lib/layout/components/SettingDrawer/index.js +5 -4
  176. package/lib/layout/components/SiderMenu/BaseMenu.js +3 -3
  177. package/lib/layout/components/SiderMenu/SiderMenu.js +5 -5
  178. package/lib/layout/components/TopNavHeader/index.js +3 -3
  179. package/lib/layout/utils/getBreadcrumbProps.js +1 -1
  180. package/lib/list/Item.d.ts +3 -3
  181. package/lib/list/Item.js +8 -1
  182. package/lib/list/ListView.js +1 -2
  183. package/lib/list/ProListBase.d.ts +1 -1
  184. package/lib/list/ProListBase.js +42 -36
  185. package/lib/list/style/index.js +13 -0
  186. package/lib/provider/index.d.ts +2 -2
  187. package/lib/table/Table.js +14 -5
  188. package/lib/table/components/Alert/index.js +6 -5
  189. package/lib/table/components/ColumnSetting/index.js +9 -9
  190. package/lib/table/components/DragSortTable/index.js +8 -4
  191. package/lib/table/components/EditableTable/index.d.ts +1 -1
  192. package/lib/table/components/EditableTable/index.js +5 -70
  193. package/lib/table/components/ListToolBar/HeaderMenu.d.ts +1 -0
  194. package/lib/table/components/ListToolBar/HeaderMenu.js +4 -3
  195. package/lib/table/components/ListToolBar/index.js +15 -12
  196. package/lib/table/components/ListToolBar/style.js +2 -2
  197. package/lib/table/components/ToolBar/DensityIcon.d.ts +2 -2
  198. package/lib/table/components/ToolBar/DensityIcon.js +6 -3
  199. package/lib/table/components/ToolBar/FullscreenIcon.d.ts +1 -1
  200. package/lib/table/components/ToolBar/FullscreenIcon.js +11 -5
  201. package/lib/table/useFetchData.js +4 -1
  202. package/lib/table/utils/cellRenderToFromItem.js +1 -1
  203. package/lib/table/utils/useDragSort.js +1 -1
  204. package/lib/utils/components/DropdownFooter/index.d.ts +1 -1
  205. package/lib/utils/components/FieldLabel/index.js +1 -1
  206. package/lib/utils/components/FilterDropdown/index.d.ts +1 -1
  207. package/lib/utils/components/FilterDropdown/index.js +1 -1
  208. package/lib/utils/components/InlineErrorFormItem/index.js +5 -4
  209. package/lib/utils/components/LabelIconTip/index.js +2 -2
  210. package/lib/utils/hooks/useFetchData/index.js +0 -2
  211. package/lib/utils/isUrl/index.js +1 -1
  212. package/lib/utils/proFieldParsingText/index.d.ts +2 -2
  213. package/lib/utils/proFieldParsingText/index.js +2 -2
  214. package/package.json +31 -30
@@ -19,6 +19,7 @@
19
19
  - `tabs`: Configure tabs inside the card.
20
20
  - `collapsible`: Whether the card can be collapsed.
21
21
  - `ghost`: Transparent background.
22
+ - `variant`: `'outlined'` | `'borderless'`. Card border style.
22
23
 
23
24
  **Usage Pattern**:
24
25
 
@@ -31,7 +32,7 @@ export default () => {
31
32
  title="Card Title"
32
33
  extra="More"
33
34
  split="vertical"
34
- bordered
35
+ variant="outlined"
35
36
  headerBordered
36
37
  >
37
38
  <ProCard title="Left Details" colSpan="50%">
@@ -49,13 +50,13 @@ export default () => {
49
50
 
50
51
  ```tsx
51
52
  <ProCard gutter={16} ghost>
52
- <ProCard colSpan={12} layout="center" bordered>
53
+ <ProCard colSpan={12} layout="center" variant="outlined">
53
54
  Col 12
54
55
  </ProCard>
55
- <ProCard colSpan={6} layout="center" bordered>
56
+ <ProCard colSpan={6} layout="center" variant="outlined">
56
57
  Col 6
57
58
  </ProCard>
58
- <ProCard colSpan={6} layout="center" bordered>
59
+ <ProCard colSpan={6} layout="center" variant="outlined">
59
60
  Col 6
60
61
  </ProCard>
61
62
  </ProCard>
@@ -8,14 +8,22 @@ exports.default = void 0;
8
8
  var _Card = _interopRequireDefault(require("./components/Card"));
9
9
  var _Divider = _interopRequireDefault(require("./components/Divider"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
- const Group = props => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Card.default, {
12
- styles: {
13
- body: {
14
- padding: 0
11
+ const Group = props => {
12
+ const {
13
+ styles,
14
+ ...rest
15
+ } = props;
16
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Card.default, {
17
+ ...rest,
18
+ styles: {
19
+ ...styles,
20
+ body: {
21
+ ...styles?.body,
22
+ padding: 0
23
+ }
15
24
  }
16
- },
17
- ...props
18
- });
25
+ });
26
+ };
19
27
 
20
28
  // 当前不对底层 Card 做封装,仅挂载子组件,直接导出
21
29
  const ProCard = _Card.default;
@@ -22,6 +22,7 @@ const {
22
22
  const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
23
23
  const {
24
24
  className,
25
+ rootClassName,
25
26
  style,
26
27
  styles,
27
28
  title,
@@ -34,7 +35,9 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
34
35
  tooltip,
35
36
  split,
36
37
  headerBordered = false,
37
- variant = 'outlined',
38
+ variant: customVariant,
39
+ cover,
40
+ classNames,
38
41
  boxShadow = false,
39
42
  children,
40
43
  size,
@@ -54,6 +57,16 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
54
57
  type,
55
58
  ...rest
56
59
  } = props;
60
+ const variant = customVariant ?? 'outlined';
61
+ const mergedStyles = {
62
+ header: styles?.header,
63
+ body: styles?.body,
64
+ root: styles?.root,
65
+ extra: styles?.extra,
66
+ title: styles?.title,
67
+ actions: styles?.actions,
68
+ cover: styles?.cover
69
+ };
57
70
  const {
58
71
  getPrefixCls
59
72
  } = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext);
@@ -199,7 +212,7 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
199
212
  }
200
213
  return element;
201
214
  });
202
- const cardCls = (0, _clsx.clsx)(`${prefixCls}`, className, hashId, {
215
+ const cardCls = (0, _clsx.clsx)(`${prefixCls}`, className, rootClassName, hashId, classNames?.root, {
203
216
  [`${prefixCls}-border`]: variant === 'outlined',
204
217
  [`${prefixCls}-box-shadow`]: boxShadow,
205
218
  [`${prefixCls}-contain-card`]: containProCard,
@@ -212,12 +225,12 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
212
225
  [`${prefixCls}-collapse`]: collapsed,
213
226
  [`${prefixCls}-checked`]: checked
214
227
  });
215
- const bodyCls = (0, _clsx.clsx)(`${prefixCls}-body`, hashId, {
228
+ const bodyCls = (0, _clsx.clsx)(`${prefixCls}-body`, hashId, classNames?.body, {
216
229
  [`${prefixCls}-body-center`]: layout === 'center',
217
230
  [`${prefixCls}-body-direction-column`]: split === 'horizontal' || direction === 'column',
218
231
  [`${prefixCls}-body-wrap`]: wrap && containProCard
219
232
  });
220
- const bodyStylePadding = styles?.body?.padding;
233
+ const bodyStylePadding = mergedStyles.body?.padding;
221
234
  const loadingDOM = /*#__PURE__*/_react.default.isValidElement(loading) ? loading : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Loading.default, {
222
235
  prefix: prefixCls,
223
236
  style: bodyStylePadding === 0 || bodyStylePadding === '0px' ? {
@@ -227,12 +240,10 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
227
240
  const handleCollapsibleIconClick = (0, _react.useCallback)(() => {
228
241
  if (collapsible === 'icon') setCollapsed(prev => !prev);
229
242
  }, [collapsible, setCollapsed]);
230
-
231
- // 非受控情况下展示
232
- const collapsibleButton = collapsible && controlCollapsed === undefined && (collapsibleIconRender ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
243
+ const collapsibleButton = collapsible && (collapsibleIconRender ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
233
244
  role: "button",
234
245
  tabIndex: collapsible === 'icon' ? 0 : undefined,
235
- className: `${prefixCls}-collapsible-icon ${hashId}`.trim(),
246
+ className: (0, _clsx.clsx)(`${prefixCls}-collapsible-icon`, hashId),
236
247
  onClick: collapsible === 'icon' ? handleCollapsibleIconClick : undefined,
237
248
  onKeyDown: collapsible === 'icon' ? e => {
238
249
  if (e.key === 'Enter' || e.key === ' ') {
@@ -246,11 +257,21 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
246
257
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.RightOutlined, {
247
258
  onClick: handleCollapsibleIconClick,
248
259
  rotate: !collapsed ? 90 : undefined,
249
- className: `${prefixCls}-collapsible-icon ${hashId}`.trim()
260
+ className: (0, _clsx.clsx)(`${prefixCls}-collapsible-icon`, hashId)
250
261
  }));
262
+ const headerCls = (0, _clsx.clsx)(`${prefixCls}-header`, hashId, classNames?.header, {
263
+ [`${prefixCls}-header-border`]: headerBordered || type === 'inner',
264
+ [`${prefixCls}-header-collapsible`]: collapsibleButton
265
+ });
266
+ const titleCls = (0, _clsx.clsx)(`${prefixCls}-title`, hashId, classNames?.title);
267
+ const extraCls = (0, _clsx.clsx)(`${prefixCls}-extra`, hashId, classNames?.extra);
268
+ const rootStyle = {
269
+ ...mergedStyles.root,
270
+ ...style
271
+ };
251
272
  return wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
252
273
  className: cardCls,
253
- style: style,
274
+ style: rootStyle,
254
275
  ref: ref,
255
276
  onClick: e => {
256
277
  onChecked?.(e);
@@ -258,28 +279,31 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
258
279
  },
259
280
  ...(0, _util.omit)(rest, ['prefixCls', 'colSpan']),
260
281
  children: [(title || extra || collapsibleButton) && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
261
- className: (0, _clsx.clsx)(`${prefixCls}-header`, hashId, {
262
- [`${prefixCls}-header-border`]: headerBordered || type === 'inner',
263
- [`${prefixCls}-header-collapsible`]: collapsibleButton
264
- }),
265
- style: styles?.header,
282
+ className: headerCls,
283
+ style: mergedStyles.header,
266
284
  onClick: () => {
267
285
  if (collapsible === 'header' || collapsible === true) setCollapsed(!collapsed);
268
286
  },
269
287
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
270
- className: `${prefixCls}-title ${hashId}`.trim(),
288
+ className: titleCls,
289
+ style: mergedStyles.title,
271
290
  children: [collapsibleButton, /*#__PURE__*/(0, _jsxRuntime.jsx)(_utils.LabelIconTip, {
272
291
  label: title,
273
292
  tooltip: tooltip,
274
293
  subTitle: subTitle
275
294
  })]
276
295
  }), extra && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
277
- className: `${prefixCls}-extra ${hashId}`.trim(),
296
+ className: extraCls,
297
+ style: mergedStyles.extra,
278
298
  onClick: e => e.stopPropagation(),
279
299
  children: extra
280
300
  })]
301
+ }), cover && !collapsed && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
302
+ className: (0, _clsx.clsx)(`${prefixCls}-cover`, hashId, classNames?.cover),
303
+ style: mergedStyles.cover,
304
+ children: cover
281
305
  }), tabs ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
282
- className: `${prefixCls}-tabs ${hashId}`.trim(),
306
+ className: (0, _clsx.clsx)(`${prefixCls}-tabs`, hashId),
283
307
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Tabs, {
284
308
  onChange: tabs.onChange,
285
309
  ...(0, _util.omit)(tabs, ['cardProps']),
@@ -288,7 +312,7 @@ const Card = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
288
312
  })
289
313
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
290
314
  className: bodyCls,
291
- style: styles?.body,
315
+ style: mergedStyles.body,
292
316
  children: loading ? loadingDOM : childrenModified
293
317
  }), actions ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Actions.default, {
294
318
  actions: actions,
@@ -153,7 +153,7 @@ const genProCardStyle = token => {
153
153
  },
154
154
  [`${componentCls}-title`]: {
155
155
  color: token.colorText,
156
- fontWeight: 500,
156
+ fontWeight: token.fontWeightStrong,
157
157
  fontSize: token.fontSizeLG,
158
158
  lineHeight: token.lineHeight
159
159
  },
@@ -175,6 +175,17 @@ const genProCardStyle = token => {
175
175
  transition: `transform ${token.motionDurationMid}`
176
176
  }
177
177
  },
178
+ [`${componentCls}-cover`]: {
179
+ overflow: 'hidden',
180
+ borderRadius: `${token.borderRadius}px ${token.borderRadius}px 0 0`,
181
+ '& > *': {
182
+ width: '100%',
183
+ display: 'block'
184
+ },
185
+ '& img': {
186
+ verticalAlign: 'middle'
187
+ }
188
+ },
178
189
  [`${componentCls}-body`]: {
179
190
  display: 'block',
180
191
  boxSizing: 'border-box',
@@ -46,7 +46,7 @@ const Statistic = props => {
46
46
  const tipDom = tip && /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Tooltip, {
47
47
  title: tip,
48
48
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.QuestionCircleOutlined, {
49
- className: `${prefixCls}-tip ${hashId}`.trim()
49
+ className: (0, _clsx.clsx)(`${prefixCls}-tip`, hashId)
50
50
  })
51
51
  });
52
52
  const trendIconClassName = (0, _clsx.clsx)(`${prefixCls}-trend-icon`, hashId, {
@@ -83,7 +83,7 @@ const Statistic = props => {
83
83
  className: statisticClassName,
84
84
  ...others
85
85
  }), description && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
86
- className: `${prefixCls}-description ${hashId}`.trim(),
86
+ className: (0, _clsx.clsx)(`${prefixCls}-description`, hashId),
87
87
  children: description
88
88
  })]
89
89
  })]
@@ -61,7 +61,7 @@ const StatisticCard = props => {
61
61
  children: [statisticDom, chartDom]
62
62
  }));
63
63
  const footerDom = footer && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
64
- className: `${prefixCls}-footer ${hashId}`.trim(),
64
+ className: (0, _clsx.clsx)(`${prefixCls}-footer`, hashId),
65
65
  children: footer
66
66
  });
67
67
  return wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Card.default, {
@@ -1,4 +1,4 @@
1
- import type { TabPaneProps, TabsProps } from 'antd';
1
+ import type { CardProps as AntdCardProps, TabPaneProps, TabsProps } from 'antd';
2
2
  import type { ReactNode } from 'react';
3
3
  import type { LabelTooltipType } from '../utils';
4
4
  export type { LabelTooltipType };
@@ -6,12 +6,31 @@ export type Breakpoint = 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';
6
6
  export type Gutter = number | Partial<Record<Breakpoint, number>>;
7
7
  export type ColSpanType = number | string;
8
8
  type CollapsibleType = 'icon' | 'header' | boolean;
9
- type CardPropsBase = {
10
- /** 样式配置 */
11
- styles?: {
12
- header?: React.CSSProperties;
13
- body?: React.CSSProperties;
14
- };
9
+ /** antd Card 一致的 styles 结构 */
10
+ export interface ProCardStyles {
11
+ root?: React.CSSProperties;
12
+ header?: React.CSSProperties;
13
+ body?: React.CSSProperties;
14
+ extra?: React.CSSProperties;
15
+ title?: React.CSSProperties;
16
+ actions?: React.CSSProperties;
17
+ cover?: React.CSSProperties;
18
+ }
19
+ /** 与 antd Card 一致的 classNames 结构 */
20
+ export interface ProCardClassNames {
21
+ root?: string;
22
+ header?: string;
23
+ body?: string;
24
+ extra?: string;
25
+ title?: string;
26
+ actions?: string;
27
+ cover?: string;
28
+ }
29
+ type CardPropsBase = Pick<AntdCardProps, 'rootClassName' | 'cover'> & {
30
+ /** 样式配置,与 antd Card styles 结构一致 */
31
+ styles?: ProCardStyles;
32
+ /** 语义化 classNames,与 antd Card classNames 结构一致 */
33
+ classNames?: ProCardClassNames;
15
34
  /** 页头是否有分割线 */
16
35
  headerBordered?: boolean;
17
36
  /** 卡片标题 */
@@ -43,7 +62,7 @@ type CardPropsBase = {
43
62
  actions?: React.ReactNode[] | React.ReactNode;
44
63
  /** 拆分卡片方式 */
45
64
  split?: 'vertical' | 'horizontal';
46
- /** Card variants */
65
+ /** 卡片变体,与 antd Card variant 一致 */
47
66
  variant?: 'outlined' | 'borderless';
48
67
  /**
49
68
  * 鼠标移过时可浮起
@@ -27,6 +27,8 @@ type RenderProps = Omit<ProFieldFCRenderProps, 'text' | 'placeholder'> & ProRend
27
27
  *
28
28
  * @param dataValue
29
29
  * @param valueType
30
+ * @param props
31
+ * @param valueTypeMap
30
32
  */
31
33
  export declare const defaultRenderText: (dataValue: ProFieldTextType, valueType: ProFieldValueType | ProFieldValueObjectType, props: RenderProps, valueTypeMap: Record<string, ProRenderFieldPropsType>) => React.ReactNode;
32
34
  export declare const ProField: React.ForwardRefRenderFunction<any, ProFieldPropsType>;
@@ -62,6 +62,7 @@ _dayjs.default.extend(_weekday.default);
62
62
  *
63
63
  * @param text String | number
64
64
  * @param valueType ProColumnsValueObjectType
65
+ * @param props
65
66
  */
66
67
  const defaultRenderTextByObject = (text, valueType, props) => {
67
68
  const pickFormItemProps = (0, _utils.pickProProps)(props.fieldProps);
@@ -109,6 +110,8 @@ const defaultRenderTextByObject = (text, valueType, props) => {
109
110
  *
110
111
  * @param dataValue
111
112
  * @param valueType
113
+ * @param props
114
+ * @param valueTypeMap
112
115
  */
113
116
  const defaultRenderText = (dataValue, valueType, props, valueTypeMap) => {
114
117
  const {
@@ -29,6 +29,8 @@ type RenderProps = Omit<ProFieldFCRenderProps, 'text' | 'placeholder'> & ProRend
29
29
  *
30
30
  * @param dataValue
31
31
  * @param valueType
32
+ * @param props
33
+ * @param valueTypeMap
32
34
  */
33
35
  export declare const pureRenderText: (dataValue: ProFieldTextType, valueType: ProFieldValueType | ProFieldValueObjectType, props: RenderProps, valueTypeMap: Record<string, ProRenderFieldPropsType>) => React.ReactNode;
34
36
  /** ProField 的类型 */
@@ -34,6 +34,8 @@ _dayjs.default.extend(_weekday.default);
34
34
  *
35
35
  * @param dataValue
36
36
  * @param valueType
37
+ * @param props
38
+ * @param valueTypeMap
37
39
  */
38
40
  const pureRenderText = (dataValue, valueType, props, valueTypeMap) => {
39
41
  const {
@@ -16,7 +16,14 @@ var _jsxRuntime = require("react/jsx-runtime");
16
16
  /**
17
17
  * 级联选择组件
18
18
  *
19
- * @param param0
19
+ * @param placeholder
20
+ * @param formItemRender
21
+ * @param mode
22
+ * @param render
23
+ * @param label
24
+ * @param light
25
+ * @param variant
26
+ * @param rest
20
27
  * @param ref
21
28
  */
22
29
  const FieldCascader = ({
@@ -14,7 +14,11 @@ var _jsxRuntime = require("react/jsx-runtime");
14
14
  /**
15
15
  * 多选组件
16
16
  *
17
- * @param param0
17
+ * @param layout
18
+ * @param formItemRender
19
+ * @param mode
20
+ * @param render
21
+ * @param rest
18
22
  * @param ref
19
23
  */
20
24
  const FieldCheckbox = ({
@@ -3,5 +3,5 @@ import React from 'react';
3
3
  declare const _default: React.ForwardRefExoticComponent<import("src/provider").BaseProFieldFC & import("src/provider").ProRenderFieldPropsType & {
4
4
  text: string;
5
5
  mode?: "update" | "read" | "edit" | undefined;
6
- } & Partial<Omit<ColorPickerProps, "mode" | "value">> & React.RefAttributes<any>>;
6
+ } & Partial<Omit<ColorPickerProps, "value" | "mode">> & React.RefAttributes<any>>;
7
7
  export default _default;
@@ -5,6 +5,6 @@ declare const _default: React.ForwardRefExoticComponent<import("../../../provide
5
5
  format?: string | undefined;
6
6
  showTime?: boolean | undefined;
7
7
  variant?: "outlined" | "filled" | "borderless" | "underlined" | undefined;
8
- picker?: "time" | "date" | "month" | "week" | "quarter" | "year" | undefined;
8
+ picker?: "time" | "date" | "month" | "week" | "year" | "quarter" | undefined;
9
9
  } & ProFieldLightProps & React.RefAttributes<any>>;
10
10
  export default _default;
@@ -26,7 +26,19 @@ const formatDate = (text, format) => {
26
26
  /**
27
27
  * 日期选择组件
28
28
  *
29
- * @param
29
+ * @param text
30
+ * @param mode
31
+ * @param format
32
+ * @param label
33
+ * @param light
34
+ * @param render
35
+ * @param formItemRender
36
+ * @param showTime
37
+ * @param fieldProps
38
+ * @param picker
39
+ * @param lightLabel
40
+ * @param variant
41
+ * @param ref
30
42
  */
31
43
  const FieldDatePicker = ({
32
44
  text,
@@ -11,12 +11,25 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _provider = require("../../../provider");
12
12
  var _utils = require("../../../utils");
13
13
  var _jsxRuntime = require("react/jsx-runtime");
14
+ /**
15
+ * 判断字符串是否为空或仅包含空白字符
16
+ * @param {string} str - 要检查的字符串
17
+ * @returns {boolean} - 如果为空或仅包含空白字符返回 true,否则返回 false
18
+ */
19
+ function isEmptyOrWhitespace(str) {
20
+ return (0, _utils.isNil)(str) || str === '' || str?.trim() === '';
21
+ }
22
+
14
23
  /**
15
24
  * 数字组件
16
25
  *
17
- * @param FieldDigitProps {
18
- * text: number;
19
- * moneySymbol?: string; }
26
+ * @param text
27
+ * @param type
28
+ * @param render
29
+ * @param placeholder
30
+ * @param formItemRender
31
+ * @param fieldProps
32
+ * @param ref
20
33
  */
21
34
  const FieldDigit = ({
22
35
  text,
@@ -87,6 +100,10 @@ const FieldDigit = ({
87
100
  onChange: e => fieldProps?.onChange?.(proxyChange(e)),
88
101
  onBlur: e => {
89
102
  const value = e.target.value;
103
+ if (isEmptyOrWhitespace(value)) {
104
+ fieldProps?.onBlur?.(e);
105
+ return;
106
+ }
90
107
  const processedValue = proxyChange(value);
91
108
  // 更新输入框的值
92
109
  if (e.target && typeof processedValue === 'number') {
@@ -123,16 +123,53 @@ const InputNumberPopover = /*#__PURE__*/_react.default.forwardRef(({
123
123
  numberFormatOptions,
124
124
  numberPopoverRender,
125
125
  open,
126
+ onOpenChange,
126
127
  ...rest
127
128
  }, ref) => {
128
129
  const [value, setValueInner] = (0, _util.useControlledState)(() => rest.defaultValue, rest.value);
130
+
131
+ // 使用本地状态管理 Popover 显示,同时支持受控模式
132
+ const [localOpen, setLocalOpen] = (0, _react.useState)(open ?? false);
133
+
134
+ // 跟踪组件挂载状态,防止在卸载后执行状态更新
135
+ const mountedRef = (0, _react.useRef)(true);
136
+ (0, _react.useEffect)(() => {
137
+ mountedRef.current = true;
138
+ return () => {
139
+ mountedRef.current = false;
140
+ };
141
+ }, []);
142
+
143
+ // 同步外部 open 属性到本地状态,支持受控模式
144
+ (0, _react.useEffect)(() => {
145
+ if (open !== undefined) {
146
+ setLocalOpen(open);
147
+ }
148
+ }, [open]);
129
149
  const onChange = (0, _react.useCallback)(updater => {
130
150
  setValueInner(prev => {
131
151
  const next = typeof updater === 'function' ? updater(prev) : updater;
132
152
  rest.onChange?.(next);
133
153
  return next;
134
154
  });
135
- }, [rest.onChange]);
155
+ }, [rest.onChange, setValueInner]);
156
+
157
+ // 优化的 onOpenChange 处理器
158
+ const handleOpenChange = (0, _react.useCallback)(visible => {
159
+ // 通知父组件状态变化
160
+ onOpenChange?.(visible);
161
+
162
+ // 如果是受控模式(传入了 open prop),不更新本地状态
163
+ if (open === undefined) {
164
+ // 使用 queueMicrotask 延迟状态更新,避免在渲染期间触发 flushSync
165
+ queueMicrotask(() => {
166
+ // 检查组件是否仍然挂载,避免在卸载后更新状态
167
+ if (mountedRef.current) {
168
+ setLocalOpen(visible);
169
+ }
170
+ });
171
+ }
172
+ }, [open, onOpenChange]);
136
173
 
137
174
  /**
138
175
  * 如果content 存在要根据 content 渲染一下
@@ -141,9 +178,20 @@ const InputNumberPopover = /*#__PURE__*/_react.default.forwardRef(({
141
178
  ...rest,
142
179
  value
143
180
  });
181
+
182
+ // 没有 dom 时不显示 Popover
183
+ if (!dom) {
184
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.InputNumber, {
185
+ ref: ref,
186
+ ...rest,
187
+ value: value,
188
+ onChange: onChange
189
+ });
190
+ }
144
191
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Popover, {
145
192
  placement: "topLeft",
146
- open: dom ? open : false,
193
+ open: localOpen,
194
+ onOpenChange: handleOpenChange,
147
195
  trigger: ['focus', 'click'],
148
196
  content: dom,
149
197
  getPopupContainer: triggerNode => {
@@ -14,18 +14,19 @@ var _jsxRuntime = require("react/jsx-runtime");
14
14
  /**
15
15
  * 最基本的组件,就是个普通的 Input.Password
16
16
  *
17
- * @param
17
+ * @param props
18
+ * @param ref
18
19
  */
19
- const FieldPassword = ({
20
- text,
21
- mode,
22
- render,
23
- formItemRender,
24
- fieldProps,
25
- proFieldKey,
26
- ...rest
27
- }, ref) => {
20
+ const FieldPassword = (props, ref) => {
28
21
  const intl = (0, _provider.useIntl)();
22
+ const {
23
+ text,
24
+ mode,
25
+ render,
26
+ formItemRender,
27
+ fieldProps,
28
+ ...rest
29
+ } = (0, _util.omit)(props, ['proFieldKey']);
29
30
  const [open, setOpenInner] = (0, _util.useControlledState)(() => rest.open || false, rest.open);
30
31
  const setOpen = (0, _react.useCallback)(updater => {
31
32
  setOpenInner(prev => {
@@ -1,7 +1,7 @@
1
1
  /** 获取展示符号 */
2
2
  export declare function getSymbolByRealValue(realValue: number): "-" | "+" | null;
3
3
  /** 获取颜色 */
4
- export declare function getColorByRealValue(realValue: number /** ,color: string */): "#595959" | "#ff4d4f" | "#52c41a";
4
+ export declare function getColorByRealValue(realValue: number /** ,color: string */): "#52c41a" | "#595959" | "#ff4d4f";
5
5
  /** 获取到最后展示的数字 */
6
6
  export declare function getRealTextWithPrecision(realValue: number, precision?: number): string | number;
7
7
  /**
@@ -14,7 +14,11 @@ var _jsxRuntime = require("react/jsx-runtime");
14
14
  /**
15
15
  * 单选组件
16
16
  *
17
- * @param param0
17
+ * @param radioType
18
+ * @param formItemRender
19
+ * @param mode
20
+ * @param render
21
+ * @param rest
18
22
  * @param ref
19
23
  */
20
24
  const FieldRadio = ({
@@ -5,6 +5,6 @@ declare const _default: React.ForwardRefExoticComponent<import("../../../provide
5
5
  format?: string | undefined;
6
6
  variant?: "outlined" | "filled" | "borderless" | "underlined" | undefined;
7
7
  showTime?: boolean | undefined;
8
- picker?: "time" | "date" | "month" | "week" | "quarter" | "year" | undefined;
8
+ picker?: "time" | "date" | "month" | "week" | "year" | "quarter" | undefined;
9
9
  } & ProFieldLightProps & React.RefAttributes<any>>;
10
10
  export default _default;
@@ -14,7 +14,8 @@ var _jsxRuntime = require("react/jsx-runtime");
14
14
  /**
15
15
  * Segmented https://ant.design/components/segmented-cn/
16
16
  *
17
- * @param
17
+ * @param props
18
+ * @param ref
18
19
  */const FieldSegmented = (props, ref) => {
19
20
  const {
20
21
  mode,
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _util = require("@rc-component/util");
8
9
  var _antd = require("antd");
9
10
  var _clsx = require("clsx");
10
11
  var _react = _interopRequireWildcard(require("react"));
@@ -48,7 +49,7 @@ const SearchSelect = (props, ref) => {
48
49
  value: valuePropsName = 'value',
49
50
  options: optionsPropsName = 'options'
50
51
  } = fieldNames || {};
51
- const [searchValue, setSearchValue] = (0, _react.useState)(propsSearchValue ?? defaultSearchValue);
52
+ const [searchValue, setSearchValue] = (0, _util.useControlledState)(defaultSearchValue, propsSearchValue);
52
53
  const selectRef = (0, _react.useRef)();
53
54
  (0, _react.useImperativeHandle)(ref, () => selectRef.current);
54
55
  (0, _react.useEffect)(() => {
@@ -56,9 +57,6 @@ const SearchSelect = (props, ref) => {
56
57
  selectRef?.current?.focus();
57
58
  }
58
59
  }, [restProps.autoFocus]);
59
- (0, _react.useEffect)(() => {
60
- setSearchValue(propsSearchValue);
61
- }, [propsSearchValue]);
62
60
  const {
63
61
  getPrefixCls
64
62
  } = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext);
@@ -23,7 +23,7 @@ export type FieldSelectProps<FieldProps = any> = {
23
23
  /**
24
24
  * 把 value 的枚举转化为数组
25
25
  *
26
- * @param valueEnum
26
+ * @param valueEnumParams
27
27
  */
28
28
  export declare const proFieldParsingValueEnumToArray: (valueEnumParams: ProFieldValueEnumType) => SelectOptionType;
29
29
  export declare const useFieldFetchData: (props: FieldSelectProps & {