@zat-design/sisyphus-react 4.5.9 → 4.5.10-beta.2

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 (280) hide show
  1. package/dist/index.esm.css +1 -1
  2. package/dist/less.esm.css +1 -1
  3. package/es/FormsProvider/index.js +14 -21
  4. package/es/ProAction/components/CheckModalContent/index.js +12 -26
  5. package/es/ProAction/index.js +79 -83
  6. package/es/ProAction/propsType.js +0 -1
  7. package/es/ProConfigProvider/index.js +63 -110
  8. package/es/ProConfigProvider/propsType.js +0 -1
  9. package/es/ProDownload/index.d.ts +2 -1
  10. package/es/ProDownload/index.js +74 -69
  11. package/es/ProDownload/propsType.js +0 -1
  12. package/es/ProDownload/utils.d.ts +10 -5
  13. package/es/ProDownload/utils.js +63 -95
  14. package/es/ProDrawerForm/components/ProDrawer/index.js +83 -113
  15. package/es/ProDrawerForm/components/ProModal/index.js +77 -108
  16. package/es/ProDrawerForm/components/index.js +6 -2
  17. package/es/ProDrawerForm/hooks/useConfirmClose.js +20 -39
  18. package/es/ProDrawerForm/index.js +29 -38
  19. package/es/ProDrawerForm/propsType.js +0 -1
  20. package/es/ProDrawerForm/utils/index.js +18 -36
  21. package/es/ProEditLabel/components/RenderProForm.js +45 -49
  22. package/es/ProEditLabel/index.js +126 -163
  23. package/es/ProEditLabel/propsType.js +0 -1
  24. package/es/ProEditLabel/utils/index.js +5 -8
  25. package/es/ProEditTable/components/ActionButton/index.js +111 -119
  26. package/es/ProEditTable/components/RcTable/BaseTable.js +38 -51
  27. package/es/ProEditTable/components/RcTable/DraggableTable.js +97 -129
  28. package/es/ProEditTable/components/RcTable/index.js +6 -4
  29. package/es/ProEditTable/components/RenderField/ListChangedWrapper.js +77 -95
  30. package/es/ProEditTable/components/RenderField/index.js +490 -587
  31. package/es/ProEditTable/components/RenderField/propsType.js +0 -1
  32. package/es/ProEditTable/components/RenderField/tools.js +115 -112
  33. package/es/ProEditTable/components/RenderToolbar/index.js +47 -73
  34. package/es/ProEditTable/components/Summary/index.js +38 -64
  35. package/es/ProEditTable/components/Validator/index.js +46 -46
  36. package/es/ProEditTable/components/index.js +12 -5
  37. package/es/ProEditTable/index.js +456 -378
  38. package/es/ProEditTable/propsType.js +0 -1
  39. package/es/ProEditTable/utils/config.js +60 -122
  40. package/es/ProEditTable/utils/diffOriginal.js +45 -82
  41. package/es/ProEditTable/utils/getDefaultProps.js +19 -24
  42. package/es/ProEditTable/utils/index.js +154 -235
  43. package/es/ProEditTable/utils/tools.js +149 -286
  44. package/es/ProEditTable/utils/transform.js +25 -30
  45. package/es/ProEditTable/utils/useEditTableError.js +30 -43
  46. package/es/ProEditTable/utils/useShouldUpdateForTable.js +42 -72
  47. package/es/ProEditTable/utils/validateAll.js +87 -154
  48. package/es/ProEnum/components/Group.js +38 -30
  49. package/es/ProEnum/components/Tag.js +22 -26
  50. package/es/ProEnum/hooks/useEnum.js +48 -116
  51. package/es/ProEnum/hooks/useEnumRequest.js +182 -212
  52. package/es/ProEnum/hooks/useFrequentEnumRequest.js +40 -48
  53. package/es/ProEnum/index.js +162 -172
  54. package/es/ProEnum/propsType.js +0 -1
  55. package/es/ProEnum/utils/eventCenter.js +10 -12
  56. package/es/ProEnum/utils/frequentEnum.js +35 -92
  57. package/es/ProEnum/utils/getEnum.js +32 -90
  58. package/es/ProEnum/utils/getEnumLabel.js +44 -49
  59. package/es/ProEnum/utils/index.js +93 -207
  60. package/es/ProForm/components/Container.js +13 -28
  61. package/es/ProForm/components/FormFooter/index.js +36 -44
  62. package/es/ProForm/components/FormFooter/propsType.js +0 -1
  63. package/es/ProForm/components/base/Checkbox/index.js +32 -59
  64. package/es/ProForm/components/base/DatePicker/index.js +49 -71
  65. package/es/ProForm/components/base/Input/index.js +63 -97
  66. package/es/ProForm/components/base/Input/propsType.js +0 -1
  67. package/es/ProForm/components/base/InputNumber/index.js +118 -172
  68. package/es/ProForm/components/base/Radio/index.js +39 -52
  69. package/es/ProForm/components/base/RangePicker/index.js +109 -127
  70. package/es/ProForm/components/base/RangePicker/useDateRange.js +20 -17
  71. package/es/ProForm/components/base/Select/index.js +63 -89
  72. package/es/ProForm/components/base/Switch/index.js +27 -35
  73. package/es/ProForm/components/base/SwitchCheckbox/index.js +36 -54
  74. package/es/ProForm/components/base/TextArea/index.js +30 -41
  75. package/es/ProForm/components/base/TimePicker/index.js +27 -37
  76. package/es/ProForm/components/combination/Container/index.js +37 -47
  77. package/es/ProForm/components/combination/Container/propsType.js +0 -1
  78. package/es/ProForm/components/combination/FormList/components/ActionButton.js +165 -237
  79. package/es/ProForm/components/combination/FormList/components/BlockFields.js +98 -102
  80. package/es/ProForm/components/combination/FormList/components/Empty.js +28 -55
  81. package/es/ProForm/components/combination/FormList/components/LineFields.js +57 -54
  82. package/es/ProForm/components/combination/FormList/components/ToolbarButton.js +61 -109
  83. package/es/ProForm/components/combination/FormList/index.js +151 -161
  84. package/es/ProForm/components/combination/FormList/propsType.js +0 -1
  85. package/es/ProForm/components/combination/FormList/style/index.less +6 -0
  86. package/es/ProForm/components/combination/FormList/utils.js +22 -38
  87. package/es/ProForm/components/combination/Group/component/AddonWrapper/index.js +12 -28
  88. package/es/ProForm/components/combination/Group/component/ComRender.js +50 -111
  89. package/es/ProForm/components/combination/Group/component/FlexibleGroup.js +106 -213
  90. package/es/ProForm/components/combination/Group/hooks/index.js +69 -129
  91. package/es/ProForm/components/combination/Group/index.js +87 -126
  92. package/es/ProForm/components/combination/Group/propsType.js +0 -1
  93. package/es/ProForm/components/combination/Group/utils/index.js +124 -239
  94. package/es/ProForm/components/combination/ProCascader/index.js +156 -199
  95. package/es/ProForm/components/combination/ProCascader/propsType.js +0 -1
  96. package/es/ProForm/components/combination/ProCascader/utils/index.js +12 -21
  97. package/es/ProForm/components/combination/ProModalSelect/hooks/useRequestList.js +72 -70
  98. package/es/ProForm/components/combination/ProModalSelect/index.js +309 -347
  99. package/es/ProForm/components/combination/ProModalSelect/propsType.js +0 -1
  100. package/es/ProForm/components/combination/ProModalSelect/utils/index.js +32 -39
  101. package/es/ProForm/components/combination/ProNumberRange/index.js +100 -156
  102. package/es/ProForm/components/combination/ProNumberRange/propsType.js +0 -1
  103. package/es/ProForm/components/combination/ProRangeLimit/index.js +104 -115
  104. package/es/ProForm/components/combination/ProRangeLimit/propsType.js +0 -1
  105. package/es/ProForm/components/combination/ProTimeLimit/hooks/useControlled.js +16 -16
  106. package/es/ProForm/components/combination/ProTimeLimit/index.js +75 -109
  107. package/es/ProForm/components/index.js +56 -34
  108. package/es/ProForm/components/render/ChangedWrapper.js +85 -94
  109. package/es/ProForm/components/render/ConfirmWrapper.js +27 -39
  110. package/es/ProForm/components/render/CustomComponentViewWrapper.js +65 -82
  111. package/es/ProForm/components/render/Render.js +223 -329
  112. package/es/ProForm/components/render/RenderFields.js +76 -113
  113. package/es/ProForm/components/render/propsType.js +0 -1
  114. package/es/ProForm/hooks/useControlled.js +8 -10
  115. package/es/ProForm/hooks/useDeepCompareMemo.js +11 -11
  116. package/es/ProForm/hooks/useFieldProps.js +8 -4
  117. package/es/ProForm/hooks/useForm.js +50 -110
  118. package/es/ProForm/hooks/useRules.js +17 -33
  119. package/es/ProForm/hooks/useShouldUpdate.js +77 -152
  120. package/es/ProForm/hooks/useWatch.js +62 -134
  121. package/es/ProForm/index.js +157 -194
  122. package/es/ProForm/propsType.js +15 -7
  123. package/es/ProForm/utils/buildFormItemProps.js +51 -58
  124. package/es/ProForm/utils/diffOriginal.js +43 -73
  125. package/es/ProForm/utils/getDefaultProps.js +18 -24
  126. package/es/ProForm/utils/index.js +160 -235
  127. package/es/ProForm/utils/processDependencies.js +21 -60
  128. package/es/ProForm/utils/reactiveValues.js +20 -34
  129. package/es/ProForm/utils/rulesCreator.js +42 -40
  130. package/es/ProForm/utils/transformNames.js +10 -13
  131. package/es/ProForm/utils/transformValue.js +16 -29
  132. package/es/ProForm/utils/valueType.js +96 -178
  133. package/es/ProIcon/config/index.js +340 -274
  134. package/es/ProIcon/index.js +135 -209
  135. package/es/ProIcon/propsTypes.js +0 -1
  136. package/es/ProIcon/utils/index.js +24 -39
  137. package/es/ProLayout/components/Layout/Header/index.js +108 -141
  138. package/es/ProLayout/components/Layout/Menu/FoldMenu/index.js +134 -190
  139. package/es/ProLayout/components/Layout/Menu/OpenMenu/index.js +113 -139
  140. package/es/ProLayout/components/Layout/Menu/OpenMenu/propsType.js +0 -1
  141. package/es/ProLayout/components/Layout/Menu/SideMenu/index.js +23 -31
  142. package/es/ProLayout/components/Layout/Menu/index.js +92 -89
  143. package/es/ProLayout/components/Layout/Notice/index.js +13 -27
  144. package/es/ProLayout/components/Layout/index.js +8 -3
  145. package/es/ProLayout/components/ProCollapse/PropTypes.js +0 -1
  146. package/es/ProLayout/components/ProCollapse/index.js +89 -111
  147. package/es/ProLayout/components/ProFooter/PropTypes.js +0 -1
  148. package/es/ProLayout/components/ProFooter/index.js +27 -24
  149. package/es/ProLayout/components/ProHeader/PropTypes.js +0 -1
  150. package/es/ProLayout/components/ProHeader/components/Copy/index.js +23 -21
  151. package/es/ProLayout/components/ProHeader/components/Describe/index.js +67 -84
  152. package/es/ProLayout/components/ProHeader/components/ProBackBtn/index.js +18 -21
  153. package/es/ProLayout/components/ProHeader/components/ProBackBtn/propsType.js +0 -1
  154. package/es/ProLayout/components/ProHeader/components/index.js +6 -2
  155. package/es/ProLayout/components/ProHeader/index.js +216 -356
  156. package/es/ProLayout/components/ProHeader/utils/index.js +19 -26
  157. package/es/ProLayout/components/TabsManager/components/TabContextMenu.js +92 -85
  158. package/es/ProLayout/components/TabsManager/components/TabItem.js +53 -63
  159. package/es/ProLayout/components/TabsManager/components/TabsContext.js +5 -5
  160. package/es/ProLayout/components/TabsManager/components/TabsHeader.js +42 -52
  161. package/es/ProLayout/components/TabsManager/hooks/useActiveTab.js +8 -9
  162. package/es/ProLayout/components/TabsManager/hooks/useIframeRoute.js +19 -32
  163. package/es/ProLayout/components/TabsManager/hooks/useProLayoutTabs.js +6 -20
  164. package/es/ProLayout/components/TabsManager/hooks/useTabsCache.js +25 -42
  165. package/es/ProLayout/components/TabsManager/hooks/useTabsState.js +320 -350
  166. package/es/ProLayout/components/TabsManager/hooks/useTabsUrlSync.d.ts +19 -0
  167. package/es/ProLayout/components/TabsManager/hooks/useTabsUrlSync.js +332 -0
  168. package/es/ProLayout/components/TabsManager/index.js +407 -351
  169. package/es/ProLayout/components/TabsManager/propTypes.d.ts +4 -0
  170. package/es/ProLayout/components/TabsManager/propTypes.js +7 -15
  171. package/es/ProLayout/components/TabsManager/style/index.less +1 -1
  172. package/es/ProLayout/components/TabsManager/utils/historyObserver.d.ts +7 -0
  173. package/es/ProLayout/components/TabsManager/utils/historyObserver.js +65 -0
  174. package/es/ProLayout/components/TabsManager/utils/index.d.ts +15 -2
  175. package/es/ProLayout/components/TabsManager/utils/index.js +156 -159
  176. package/es/ProLayout/components/index.js +8 -3
  177. package/es/ProLayout/index.js +173 -228
  178. package/es/ProLayout/propTypes.d.ts +28 -1
  179. package/es/ProLayout/propTypes.js +12 -52
  180. package/es/ProLayout/utils/index.js +48 -128
  181. package/es/ProSelect/components/AdaptiveTooltip.js +26 -25
  182. package/es/ProSelect/index.js +187 -223
  183. package/es/ProSelect/propsType.js +0 -1
  184. package/es/ProSelect/style/index.less +13 -0
  185. package/es/ProSelect/utils/index.js +100 -146
  186. package/es/ProStep/components/Anchor/index.js +71 -82
  187. package/es/ProStep/components/Item/index.js +49 -56
  188. package/es/ProStep/components/LazyLoad/index.js +23 -29
  189. package/es/ProStep/components/Listener/index.js +20 -33
  190. package/es/ProStep/components/Step/index.js +31 -38
  191. package/es/ProStep/constants.js +4 -1
  192. package/es/ProStep/index.js +166 -153
  193. package/es/ProStep/propsType.js +0 -1
  194. package/es/ProStep/style/index.less +1 -1
  195. package/es/ProStep/utils/index.js +29 -55
  196. package/es/ProStepTab/index.js +83 -138
  197. package/es/ProStepTab/propsType.js +0 -1
  198. package/es/ProTable/components/EditableCell/EditIcon.js +10 -14
  199. package/es/ProTable/components/EditableCell/index.js +37 -71
  200. package/es/ProTable/components/EditableCell/propsType.js +0 -1
  201. package/es/ProTable/components/FormatColumn/index.js +209 -340
  202. package/es/ProTable/components/FormatColumn/propsType.js +0 -1
  203. package/es/ProTable/components/RcTable/components/BaseTable/index.js +35 -39
  204. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.js +80 -107
  205. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/index.js +54 -48
  206. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/propsType.js +0 -1
  207. package/es/ProTable/components/RcTable/components/DraggableTable/index.js +47 -54
  208. package/es/ProTable/components/RcTable/index.js +6 -4
  209. package/es/ProTable/components/RenderColumn/index.js +158 -186
  210. package/es/ProTable/components/RenderEmptyText/index.js +12 -21
  211. package/es/ProTable/components/RenderFooter/index.js +15 -15
  212. package/es/ProTable/components/RenderSummary/index.js +33 -50
  213. package/es/ProTable/components/RenderTableHeader/index.js +44 -46
  214. package/es/ProTable/components/RenderTabs/index.js +47 -51
  215. package/es/ProTable/components/TableResizable/index.js +56 -72
  216. package/es/ProTable/components/TooltipTitle/index.js +13 -21
  217. package/es/ProTable/components/index.js +16 -36
  218. package/es/ProTable/hooks/useAntdTable.js +191 -224
  219. package/es/ProTable/index.js +232 -249
  220. package/es/ProTable/propsType.js +0 -1
  221. package/es/ProTable/utils/columnStorage.js +63 -88
  222. package/es/ProTable/utils/index.js +57 -90
  223. package/es/ProTabs/components/Card/index.js +20 -48
  224. package/es/ProTabs/components/index.js +4 -1
  225. package/es/ProTabs/index.js +41 -58
  226. package/es/ProTabs/propType.js +0 -1
  227. package/es/ProThemeTools/component/ProTools/index.js +106 -158
  228. package/es/ProThemeTools/component/index.js +4 -1
  229. package/es/ProThemeTools/context/ThemeContext.js +67 -146
  230. package/es/ProThemeTools/index.js +103 -156
  231. package/es/ProThemeTools/propsType.js +0 -1
  232. package/es/ProThemeTools/utils/index.js +60 -109
  233. package/es/ProTooltip/index.js +132 -168
  234. package/es/ProTooltip/propsType.js +0 -1
  235. package/es/ProTree/components/AdaptiveTooltip.js +15 -17
  236. package/es/ProTree/components/CloseIcon.js +18 -26
  237. package/es/ProTree/components/List.js +28 -47
  238. package/es/ProTree/components/ProTree.js +152 -211
  239. package/es/ProTree/components/ProTreeSelect/index.js +255 -459
  240. package/es/ProTree/components/ProTreeSelect/propsType.js +0 -1
  241. package/es/ProTree/components/SearchTitle.js +23 -42
  242. package/es/ProTree/components/Tree.js +147 -195
  243. package/es/ProTree/components/index.js +10 -5
  244. package/es/ProTree/index.js +12 -16
  245. package/es/ProTree/propsType.js +0 -1
  246. package/es/ProTree/utils.js +46 -118
  247. package/es/ProTreeModal/components/Cascader.js +56 -64
  248. package/es/ProTreeModal/components/CloseIcon.js +18 -26
  249. package/es/ProTreeModal/components/List.js +114 -180
  250. package/es/ProTreeModal/components/SearchTitle.js +15 -18
  251. package/es/ProTreeModal/components/SortableItem.js +29 -58
  252. package/es/ProTreeModal/components/Tree.js +99 -113
  253. package/es/ProTreeModal/components/Trigger.js +87 -121
  254. package/es/ProTreeModal/components/index.js +14 -6
  255. package/es/ProTreeModal/index.js +397 -438
  256. package/es/ProTreeModal/propsType.js +0 -1
  257. package/es/ProTreeModal/utils.js +52 -95
  258. package/es/ProUpload/components/ButtonRender.js +44 -54
  259. package/es/ProUpload/components/DragRender.js +94 -148
  260. package/es/ProUpload/components/DraggableUploadListItem.js +12 -25
  261. package/es/ProUpload/components/Example.js +27 -31
  262. package/es/ProUpload/components/FileItem.js +69 -163
  263. package/es/ProUpload/components/ImageRender.js +134 -170
  264. package/es/ProUpload/index.js +68 -100
  265. package/es/ProUpload/propsType.js +0 -1
  266. package/es/ProUpload/uitls.js +8 -4
  267. package/es/ProUtils/utils/index.js +17 -13
  268. package/es/ProViewer/index.js +154 -175
  269. package/es/ProViewer/propsType.js +0 -5
  270. package/es/ProWaterMark/index.js +9 -16
  271. package/es/ProWaterMark/propsType.js +0 -1
  272. package/es/hooks/useDraggableRow.js +25 -53
  273. package/es/index.js +57 -77
  274. package/es/locale/en_US.js +153 -142
  275. package/es/locale/index.js +23 -36
  276. package/es/locale/zh_CN.js +145 -142
  277. package/es/tokens.js +84 -83
  278. package/es/utils/index.js +24 -51
  279. package/package.json +4 -2
  280. package/es/ProConfigProvider/demo/locale.js +0 -58
@@ -1,23 +1,40 @@
1
- import _isNumber from "lodash/isNumber";
2
- import _omit from "lodash/omit";
3
- import _isFunction from "lodash/isFunction";
4
- import { useDeepCompareEffect, useRequest as useRequestFunc } from 'ahooks';
5
- import { message, Select, Space, Tooltip } from 'antd';
6
- import React, { useImperativeHandle, useState, forwardRef, isValidElement, useCallback, useEffect, useMemo, useRef } from 'react';
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { useDeepCompareEffect, useRequest as useRequestFunc } from "ahooks";
3
+ import { message, Select, Space, Tooltip } from "antd";
4
+ import React, {
5
+ useImperativeHandle,
6
+ useState,
7
+ forwardRef,
8
+ isValidElement,
9
+ useCallback,
10
+ useEffect,
11
+ useMemo,
12
+ useRef
13
+ } from "react";
14
+ import isFunction from "lodash/isFunction";
15
+ import omit from "lodash/omit";
16
+ import isNumber from "lodash/isNumber";
7
17
  import { useProConfig } from "../ProConfigProvider";
8
18
  import Container from "../ProForm/components/Container";
9
19
  import AdaptiveTooltip from "./components/AdaptiveTooltip";
10
- import { ProForm } from '..';
20
+ import { ProForm } from "..";
11
21
  import locale from "../locale";
12
- import { getSelectList, flattenOptions, findValueObject, defaultFilterOption as defaultFilterOptionFn, getInnerRecord, buildSelectOptions, resolveChangeOption, computeChangeValue, computeTransformValue } from "./utils";
13
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
14
- export const ProSelect = (props, ref) => {
15
- const {
16
- fieldNames: proSelectFieldNames = {},
17
- showCodeName
18
- } = useProConfig('ProSelect') || {};
19
- let label = 'label';
20
- let code = 'value';
22
+ import {
23
+ getSelectList,
24
+ flattenOptions,
25
+ findValueObject,
26
+ defaultFilterOption as defaultFilterOptionFn,
27
+ getInnerRecord,
28
+ buildSelectOptions,
29
+ resolveChangeOption,
30
+ computeChangeValue,
31
+ computeTransformValue
32
+ } from "./utils";
33
+ const ProSelect = (props, ref) => {
34
+ var _a, _b, _c, _d, _e, _f, _g;
35
+ const { fieldNames: proSelectFieldNames = {}, showCodeName } = useProConfig("ProSelect") || {};
36
+ let label = "label";
37
+ let code = "value";
21
38
  if (proSelectFieldNames && Object.keys(proSelectFieldNames).length) {
22
39
  code = proSelectFieldNames.value;
23
40
  label = proSelectFieldNames.label;
@@ -33,6 +50,7 @@ export const ProSelect = (props, ref) => {
33
50
  scrollFollowParent = true,
34
51
  defaultOne,
35
52
  onSearch: _onSearch,
53
+ onOpenChange,
36
54
  optionRender,
37
55
  onChange,
38
56
  transformResponse,
@@ -44,173 +62,146 @@ export const ProSelect = (props, ref) => {
44
62
  } = props;
45
63
  selectProps.showCodeName = selectProps.showCodeName ?? showCodeName;
46
64
  const value = getValueProps && props.value ? getValueProps(props.value) : props.value;
47
- const {
48
- isView: isViewCon,
49
- viewEmpty
50
- } = ProForm?.useFieldProps?.() || {};
51
- const isView = typeof props.isView === 'boolean' ? props.isView : isViewCon; // 组件可直接接收isView参数, 优先级高
52
-
65
+ const { isView: isViewCon, viewEmpty } = ((_b = (_a = ProForm) == null ? void 0 : _a.useFieldProps) == null ? void 0 : _b.call(_a)) || {};
66
+ const isView = typeof props.isView === "boolean" ? props.isView : isViewCon;
53
67
  if (fieldNames && Object.keys(fieldNames).length) {
54
68
  code = fieldNames.value;
55
69
  label = fieldNames.label;
56
70
  }
57
71
  const [selectList, setSelectList] = useState(dataSource || []);
58
-
59
- // 用来控制只有第一次才会设置 defaultOne 属性、🔒
60
72
  const [isDefaultOne, setIsDefaultOne] = useState(false);
73
+ const [innerPopupOpen, setInnerPopupOpen] = useState(selectProps.defaultOpen ?? false);
74
+ const popupOpen = selectProps.open ?? innerPopupOpen;
75
+ const handleOpenChange = useCallback(
76
+ (open) => {
77
+ setInnerPopupOpen(open);
78
+ onOpenChange == null ? void 0 : onOpenChange(open);
79
+ },
80
+ [onOpenChange]
81
+ );
61
82
  const OptionRender = optionRender;
62
- const defaultOnSuccessFun = res => {
63
- const {
64
- status = 200,
65
- message: msg,
66
- data
67
- } = res;
83
+ const defaultOnSuccessFun = (res) => {
84
+ const { status = 200, message: msg, data } = res;
68
85
  if (status !== 200) {
69
86
  message.error(msg);
70
87
  return;
71
88
  }
72
89
  setSelectList(data || []);
73
90
  };
74
- const successTransformDataHandle = useCallback(res => {
75
- if (transformResponse && typeof transformResponse === 'function') {
91
+ const successTransformDataHandle = useCallback((res) => {
92
+ if (transformResponse && typeof transformResponse === "function") {
76
93
  return transformResponse(res);
77
94
  }
78
- const {
79
- status = 200,
80
- message: msg,
81
- data
82
- } = res || {};
95
+ const { status = 200, message: msg, data } = res || {};
83
96
  if (status !== 200) {
84
97
  message.error(msg);
85
98
  return;
86
99
  }
87
100
  return data;
88
101
  }, []);
89
- const fetchFunction = useRequestFunc(useRequest?.service, {
102
+ const fetchFunction = useRequestFunc(useRequest == null ? void 0 : useRequest.service, {
90
103
  manual: true,
91
104
  debounceWait: 300,
92
- ...useRequest?.options,
93
- onSuccess: data => {
94
- if (transformResponse && typeof transformResponse === 'function') {
105
+ ...useRequest == null ? void 0 : useRequest.options,
106
+ onSuccess: (data) => {
107
+ var _a2, _b2, _c2;
108
+ if (transformResponse && typeof transformResponse === "function") {
95
109
  const responseData = transformResponse(data);
96
110
  setSelectList(responseData);
97
111
  } else {
98
112
  defaultOnSuccessFun(data);
99
113
  }
100
- // 执行传入onSuccess
101
- useRequest?.options?.onSuccess?.(data, useRequest?.options?.defaultParams);
114
+ (_c2 = (_a2 = useRequest == null ? void 0 : useRequest.options) == null ? void 0 : _a2.onSuccess) == null ? void 0 : _c2.call(_a2, data, (_b2 = useRequest == null ? void 0 : useRequest.options) == null ? void 0 : _b2.defaultParams);
102
115
  }
103
116
  });
104
117
  const fetchFunctionRef = useRef(fetchFunction);
105
118
  useEffect(() => {
106
119
  fetchFunctionRef.current = fetchFunction;
107
120
  }, [fetchFunction]);
108
- const cacheList = useRequest?.options?.cacheKey ? successTransformDataHandle(fetchFunction?.data) : [];
109
-
110
- // 展平结果仅随 selectList 变化;滚动重挂载/无关 rerender 时复用,避免重复展平
121
+ const cacheList = ((_c = useRequest == null ? void 0 : useRequest.options) == null ? void 0 : _c.cacheKey) ? successTransformDataHandle(fetchFunction == null ? void 0 : fetchFunction.data) : [];
111
122
  const flatOptions = useMemo(() => flattenOptions(selectList), [selectList]);
112
- const getValueObject = input => findValueObject(flatOptions, code, input);
113
- useImperativeHandle(ref, () => ({
114
- getValueObject,
115
- useRequestRef: fetchFunction
116
- }));
117
-
118
- // 实现maxTagPlaceholder功能,支持hover显示完整标签 (必须在条件渲染之前)
119
- const maxTagPlaceholder = useCallback(omittedValues => {
120
- // 提取被省略的标签文本
121
- const omittedLabels = omittedValues.map(value => {
122
- // 在ProSelect中,value可能是各种格式
123
- const targetValue = typeof value === 'object' ? value.value || value[code] : value;
124
- const item = flatOptions.find(item => item[code] === targetValue);
125
- return item?.[label] || targetValue;
126
- });
127
- const tooltipContent = omittedLabels.join('');
128
- return /*#__PURE__*/_jsx(Tooltip, {
129
- title: tooltipContent,
130
- placement: "topLeft",
131
- children: /*#__PURE__*/_jsxs("span", {
132
- children: ["+ ", /*#__PURE__*/_jsx("b", {
133
- className: "pro-select-more-count",
134
- children: omittedValues.length
135
- }), " ..."]
136
- })
137
- });
138
- }, [flatOptions, code, label]);
123
+ const getValueObject = (input) => findValueObject(flatOptions, code, input);
124
+ useImperativeHandle(
125
+ ref,
126
+ () => ({
127
+ getValueObject,
128
+ useRequestRef: fetchFunction
129
+ })
130
+ );
131
+ const maxTagPlaceholder = useCallback(
132
+ (omittedValues) => {
133
+ const omittedLabels = omittedValues.map((value2) => {
134
+ const targetValue = typeof value2 === "object" ? value2.value || value2[code] : value2;
135
+ const item = flatOptions.find((item2) => item2[code] === targetValue);
136
+ return (item == null ? void 0 : item[label]) || targetValue;
137
+ });
138
+ const tooltipContent = omittedLabels.join("");
139
+ return /* @__PURE__ */ jsx(Tooltip, { title: tooltipContent, placement: "topLeft", children: /* @__PURE__ */ jsxs("span", { children: [
140
+ "+ ",
141
+ /* @__PURE__ */ jsx("b", { className: "pro-select-more-count", children: omittedValues.length }),
142
+ " ..."
143
+ ] }) });
144
+ },
145
+ [flatOptions, code, label]
146
+ );
139
147
  useDeepCompareEffect(() => {
140
148
  setSelectList(dataSource);
141
149
  }, [dataSource]);
142
150
  useDeepCompareEffect(() => {
143
- // 设置cacheKey后使用缓存的数据
144
- if (!selectList?.length && useRequest?.options?.cacheKey) {
145
- if (cacheList?.length) {
151
+ var _a2;
152
+ if (!(selectList == null ? void 0 : selectList.length) && ((_a2 = useRequest == null ? void 0 : useRequest.options) == null ? void 0 : _a2.cacheKey)) {
153
+ if (cacheList == null ? void 0 : cacheList.length) {
146
154
  setSelectList(cacheList);
147
155
  }
148
156
  }
149
- }, [fetchFunction?.data]);
157
+ }, [fetchFunction == null ? void 0 : fetchFunction.data]);
150
158
  useDeepCompareEffect(() => {
151
159
  if (!useRequest) {
152
160
  return;
153
161
  }
154
- const {
155
- defaultParams,
156
- manual
157
- } = useRequest?.options || {};
158
- if (manual || cacheList?.length) {
162
+ const { defaultParams, manual } = (useRequest == null ? void 0 : useRequest.options) || {};
163
+ if (manual || (cacheList == null ? void 0 : cacheList.length)) {
159
164
  return;
160
165
  }
161
- const params = Array.isArray(defaultParams) ? defaultParams?.[0] : defaultParams || {};
166
+ const params = Array.isArray(defaultParams) ? defaultParams == null ? void 0 : defaultParams[0] : defaultParams || {};
162
167
  fetchFunction.run(params);
163
- }, [useRequest?.options]);
164
-
165
- // 处理 defaultOne 逻辑:当 dataSource 只有一个值且没有 value 时,自动设置默认值
168
+ }, [useRequest == null ? void 0 : useRequest.options]);
166
169
  useEffect(() => {
167
- if (defaultOne && !value && !isDefaultOne && selectList?.length === 1) {
168
- const option = selectList?.[0];
169
- if (option && option[code] !== undefined && option[code] !== null) {
170
+ if (defaultOne && !value && !isDefaultOne && (selectList == null ? void 0 : selectList.length) === 1) {
171
+ const option = selectList == null ? void 0 : selectList[0];
172
+ if (option && option[code] !== void 0 && option[code] !== null) {
170
173
  setIsDefaultOne(true);
171
- // 使用 setTimeout 确保在下一个事件循环中调用,避免在渲染过程中更新状态
172
174
  setTimeout(() => {
173
- onChange?.(option[code], option);
175
+ onChange == null ? void 0 : onChange(option[code], option);
174
176
  }, 0);
175
177
  }
176
178
  }
177
179
  }, [defaultOne, value, isDefaultOne, selectList, code, onChange]);
178
- const transToLabel = value => {
180
+ const transToLabel = (value2) => {
179
181
  if (!flatOptions.length) {
180
182
  return viewEmpty;
181
183
  }
182
- const findOption = v => flatOptions.find(item => labelInValue ? item[code] === v[code] : item[code] === v);
183
- const record = value.map(findOption).filter(v => !!v);
184
-
185
- // 自定义 option 时,默认取 optionRender 的值
186
- if (_isFunction(props.optionRender) && record.length) {
187
- return /*#__PURE__*/_jsx(Space, {
188
- orientation: "vertical",
189
- size: 4,
190
- children: record.map(item => /*#__PURE__*/_jsx(React.Fragment, {
191
- children: props.optionRender(item)
192
- }, item[code]))
193
- });
184
+ const findOption = (v) => flatOptions.find((item) => labelInValue ? item[code] === v[code] : item[code] === v);
185
+ const record = value2.map(findOption).filter((v) => !!v);
186
+ if (isFunction(props.optionRender) && record.length) {
187
+ return /* @__PURE__ */ jsx(Space, { orientation: "vertical", size: 4, children: record.map((item) => /* @__PURE__ */ jsx(React.Fragment, { children: props.optionRender(item) }, item[code])) });
194
188
  }
195
- const labelList = value.map(v => {
189
+ const labelList = value2.map((v) => {
196
190
  const option = findOption(v);
197
- if (!option) return '-';
198
- return selectProps.showCodeName ? `${option[code]}-${option[label]}` : option?.[label];
191
+ if (!option)
192
+ return "-";
193
+ return selectProps.showCodeName ? `${option[code]}-${option[label]}` : option == null ? void 0 : option[label];
199
194
  });
200
- return labelList?.join('');
195
+ return labelList == null ? void 0 : labelList.join("");
201
196
  };
202
-
203
- // 必须在早期 return 之前声明,确保每次渲染 hooks 调用数量一致(React Rules of Hooks)
204
197
  const defaultFilterOption = useCallback(defaultFilterOptionFn, []);
205
198
  const mergedShowSearch = useMemo(() => {
206
199
  const defaultConfig = {
207
200
  enabled: true,
208
- filterOption: _isFunction(_onSearch) ? false : defaultFilterOption,
209
- optionFilterProp: 'label',
210
- onSearch: searchValue => {
211
- _onSearch?.(searchValue, {
212
- ...fetchFunctionRef.current
213
- });
201
+ filterOption: isFunction(_onSearch) ? false : defaultFilterOption,
202
+ optionFilterProp: "label",
203
+ onSearch: (searchValue) => {
204
+ _onSearch == null ? void 0 : _onSearch(searchValue, { ...fetchFunctionRef.current });
214
205
  }
215
206
  };
216
207
  const customShowSearch = selectProps.showSearch;
@@ -223,7 +214,7 @@ export const ProSelect = (props, ref) => {
223
214
  if (customShowSearch === true || customShowSearch == null) {
224
215
  return defaultConfig;
225
216
  }
226
- if (typeof customShowSearch === 'object' && customShowSearch !== null) {
217
+ if (typeof customShowSearch === "object" && customShowSearch !== null) {
227
218
  return {
228
219
  ...defaultConfig,
229
220
  ...customShowSearch,
@@ -236,7 +227,7 @@ export const ProSelect = (props, ref) => {
236
227
  return defaultConfig;
237
228
  }, [_onSearch, defaultFilterOption, selectProps.showSearch]);
238
229
  let newSelectList = selectList;
239
- if (otherProps?.listName && filterInList) {
230
+ if ((otherProps == null ? void 0 : otherProps.listName) && filterInList) {
240
231
  newSelectList = getSelectList({
241
232
  otherProps,
242
233
  value,
@@ -246,115 +237,74 @@ export const ProSelect = (props, ref) => {
246
237
  mode: selectProps.mode
247
238
  });
248
239
  }
249
-
250
- // antd Select 的 options 仅随数据源/字段映射/展示配置变化;滚动重挂载与无关 rerender 时复用,
251
- // 避免每次渲染全量重建 option 对象(落在虚拟表格挂载热路径上)。
252
- // 依赖用 buildSelectOptions 实际消费的原始值(code/label/showCodeName/OptionRender),
253
- // 而非每次新建的函数引用,避免缓存失效。
254
- // 必须在 isView 早期 return 之前声明,确保每次渲染 hooks 调用数量一致(React Rules of Hooks)。
255
- const selectOptions = useMemo(() => buildSelectOptions(newSelectList, {
256
- code,
257
- label,
258
- showCodeName: selectProps.showCodeName,
259
- optionRender: OptionRender
260
- }), [newSelectList, code, label, selectProps.showCodeName, OptionRender]);
240
+ const selectOptions = useMemo(
241
+ () => buildSelectOptions(newSelectList, {
242
+ code,
243
+ label,
244
+ showCodeName: selectProps.showCodeName,
245
+ optionRender: OptionRender
246
+ }),
247
+ [newSelectList, code, label, selectProps.showCodeName, OptionRender]
248
+ );
261
249
  if (isView || props.isView) {
262
250
  if (Array.isArray(value)) {
263
- // 如果设置了maxTagCount且超出数量,需要截断显示
264
- const shouldTruncate = typeof selectProps.maxTagCount === 'number' && value.length > selectProps.maxTagCount;
251
+ const shouldTruncate = typeof selectProps.maxTagCount === "number" && value.length > selectProps.maxTagCount;
265
252
  if (shouldTruncate) {
266
- // 截断显示:显示前N项 + "更多N项..."
267
- const maxCount = typeof selectProps.maxTagCount === 'number' ? selectProps.maxTagCount : 0;
253
+ const maxCount = typeof selectProps.maxTagCount === "number" ? selectProps.maxTagCount : 0;
268
254
  const visibleItems = value.slice(0, maxCount);
269
255
  const hiddenItems = value.slice(maxCount);
270
256
  const hiddenCount = value.length - maxCount;
271
257
  const visibleText = transToLabel(visibleItems);
272
- const hiddenText = transToLabel(hiddenItems); // 只显示被隐藏的标签
273
- const moreText = locale?.ProForm?.moreItems ? /*#__PURE__*/_jsxs(_Fragment, {
274
- children: [locale.ProForm.moreItems.split('{count}')[0], /*#__PURE__*/_jsx("b", {
275
- className: "pro-select-more-count",
276
- children: hiddenCount
277
- }), locale.ProForm.moreItems.split('{count}')[1]]
278
- }) : /*#__PURE__*/_jsxs(_Fragment, {
279
- children: [/*#__PURE__*/_jsx("b", {
280
- className: "pro-select-more-count",
281
- children: hiddenCount
282
- }), " more..."]
283
- });
284
- return /*#__PURE__*/_jsxs(Container, {
285
- viewEmpty: viewEmpty,
286
- children: [visibleText, "\u3001", /*#__PURE__*/_jsx(Tooltip, {
287
- title: hiddenText,
288
- children: /*#__PURE__*/_jsx("span", {
289
- children: moreText
290
- })
291
- })]
292
- });
258
+ const hiddenText = transToLabel(hiddenItems);
259
+ const moreText = ((_e = (_d = locale) == null ? void 0 : _d.ProForm) == null ? void 0 : _e.moreItems) ? /* @__PURE__ */ jsxs(Fragment, { children: [
260
+ locale.ProForm.moreItems.split("{count}")[0],
261
+ /* @__PURE__ */ jsx("b", { className: "pro-select-more-count", children: hiddenCount }),
262
+ locale.ProForm.moreItems.split("{count}")[1]
263
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
264
+ /* @__PURE__ */ jsx("b", { className: "pro-select-more-count", children: hiddenCount }),
265
+ " more..."
266
+ ] });
267
+ return /* @__PURE__ */ jsxs(Container, { viewEmpty, children: [
268
+ visibleText,
269
+ "、",
270
+ /* @__PURE__ */ jsx(Tooltip, { title: hiddenText, children: /* @__PURE__ */ jsx("span", { children: moreText }) })
271
+ ] });
293
272
  }
294
-
295
- // 不需要截断,正常显示
296
- return /*#__PURE__*/_jsx(Container, {
297
- viewEmpty: viewEmpty,
298
- children: transToLabel(value)
299
- });
273
+ return /* @__PURE__ */ jsx(Container, { viewEmpty, children: transToLabel(value) });
300
274
  }
301
- return /*#__PURE__*/_jsx(Container, {
302
- viewEmpty: viewEmpty,
303
- children: value || _isNumber(value) ? transToLabel([value]) : null
304
- });
275
+ return /* @__PURE__ */ jsx(Container, { viewEmpty, children: value || isNumber(value) ? transToLabel([value]) : null });
305
276
  }
306
- const TooltipOption = props => {
277
+ const TooltipOption = (props2) => {
307
278
  if (tooltip) {
308
- return /*#__PURE__*/_jsx(AdaptiveTooltip, {
309
- children: props.children
310
- });
279
+ return /* @__PURE__ */ jsx(AdaptiveTooltip, { children: props2.children });
311
280
  }
312
- return props.children;
281
+ return props2.children;
313
282
  };
314
- const isReactElement = element => /*#__PURE__*/isValidElement(element);
315
- const selectOptionRender = option => {
316
- const currentRecord = option?.data?.record || option?.record;
317
- const text = option?.data?.searchText ?? option?.data?.title ?? option?.label ?? '';
283
+ const isReactElement = (element) => isValidElement(element);
284
+ const selectOptionRender = (option) => {
285
+ var _a2, _b2, _c2;
286
+ const currentRecord = ((_a2 = option == null ? void 0 : option.data) == null ? void 0 : _a2.record) || (option == null ? void 0 : option.record);
287
+ const text = ((_b2 = option == null ? void 0 : option.data) == null ? void 0 : _b2.searchText) ?? ((_c2 = option == null ? void 0 : option.data) == null ? void 0 : _c2.title) ?? (option == null ? void 0 : option.label) ?? "";
318
288
  if (!currentRecord) {
319
- return /*#__PURE__*/_jsx(TooltipOption, {
320
- title: String(text),
321
- children: String(text)
322
- });
289
+ return /* @__PURE__ */ jsx(TooltipOption, { title: String(text), children: String(text) });
323
290
  }
324
- return /*#__PURE__*/_jsx(TooltipOption, {
325
- title: String(text),
326
- children: OptionRender ? /*#__PURE__*/_jsx("span", {
327
- children: OptionRender(currentRecord)
328
- }) : /*#__PURE__*/_jsx("span", {
329
- children: String(text)
330
- })
331
- });
291
+ return /* @__PURE__ */ jsx(TooltipOption, { title: String(text), children: OptionRender ? /* @__PURE__ */ jsx("span", { children: OptionRender(currentRecord) }) : /* @__PURE__ */ jsx("span", { children: String(text) }) });
332
292
  };
333
293
  const mode = selectProps.mode;
334
- const handleChange = (value, rawOption) => {
335
- // 仅多选、或单选 labelInValue 需要加工 option;其余直接取原始节点上的 record
336
- if (mode !== 'multiple' && !(labelInValue && !mode)) {
337
- onChange?.(computeChangeValue(value, {
338
- mode,
339
- getChangeValue,
340
- flatOptions,
341
- code
342
- }), getInnerRecord(rawOption));
294
+ const handleChange = (value2, rawOption) => {
295
+ if (mode !== "multiple" && !(labelInValue && !mode)) {
296
+ onChange == null ? void 0 : onChange(
297
+ computeChangeValue(value2, { mode, getChangeValue, flatOptions, code }),
298
+ getInnerRecord(rawOption)
299
+ );
343
300
  return;
344
301
  }
345
- // labelInValue 下,option/其首层子节点是 React 节点时取挂载的 record
346
- const isReactNode = labelInValue && (isReactElement(rawOption) || isReactElement(rawOption?.children));
347
- const option = resolveChangeOption(rawOption, {
348
- mode,
349
- isReactNode
350
- });
351
- onChange?.(computeChangeValue(value, {
352
- labelInValue,
353
- mode,
354
- getChangeValue,
355
- flatOptions,
356
- code
357
- }), option);
302
+ const isReactNode = labelInValue && (isReactElement(rawOption) || isReactElement(rawOption == null ? void 0 : rawOption.children));
303
+ const option = resolveChangeOption(rawOption, { mode, isReactNode });
304
+ onChange == null ? void 0 : onChange(
305
+ computeChangeValue(value2, { labelInValue, mode, getChangeValue, flatOptions, code }),
306
+ option
307
+ );
358
308
  };
359
309
  const transformValue = () => computeTransformValue({
360
310
  value,
@@ -366,31 +316,45 @@ export const ProSelect = (props, ref) => {
366
316
  flatOptions,
367
317
  code
368
318
  });
369
- return /*#__PURE__*/_jsx("div", {
370
- style: props.style,
371
- className: "pro-select",
372
- children: /*#__PURE__*/_jsx(Select, {
373
- placeholder: locale?.ProSelect?.select,
319
+ return /* @__PURE__ */ jsx("div", { style: props.style, className: `pro-select${popupOpen ? " pro-select-popup-open" : ""}`, children: /* @__PURE__ */ jsx(
320
+ Select,
321
+ {
322
+ placeholder: (_g = (_f = locale) == null ? void 0 : _f.ProSelect) == null ? void 0 : _g.select,
374
323
  allowClear: true,
375
- loading: fetchFunction?.loading,
324
+ loading: fetchFunction == null ? void 0 : fetchFunction.loading,
376
325
  onChange: handleChange,
377
326
  showSearch: mergedShowSearch.enabled ? {
378
327
  filterOption: mergedShowSearch.filterOption,
379
328
  optionFilterProp: mergedShowSearch.optionFilterProp,
380
329
  onSearch: mergedShowSearch.onSearch
381
330
  } : false,
382
- getPopupContainer: trigger => {
331
+ getPopupContainer: (trigger) => {
383
332
  return scrollFollowParent ? trigger.parentElement : document.body;
384
333
  },
385
- ..._omit({
386
- ...selectProps
387
- }, ['isView', 'showCodeName', 'form', 'name', 'style', 'onFieldChange', 'getChangeValue', 'viewportReady', 'showSearch', 'filterOption', 'optionFilterProp', 'searchValue']),
388
- // 如果是多选模式且用户没有自定义maxTagPlaceholder,使用我们的hover版本
389
- maxTagPlaceholder: selectProps.mode === 'multiple' && !selectProps.maxTagPlaceholder ? maxTagPlaceholder : selectProps.maxTagPlaceholder,
334
+ ...omit({ ...selectProps }, [
335
+ "isView",
336
+ "showCodeName",
337
+ "form",
338
+ "name",
339
+ "style",
340
+ "onFieldChange",
341
+ "getChangeValue",
342
+ "viewportReady",
343
+ "showSearch",
344
+ "filterOption",
345
+ "optionFilterProp",
346
+ "searchValue"
347
+ ]),
348
+ onOpenChange: handleOpenChange,
349
+ maxTagPlaceholder: selectProps.mode === "multiple" && !selectProps.maxTagPlaceholder ? maxTagPlaceholder : selectProps.maxTagPlaceholder,
390
350
  optionRender: selectOptionRender,
391
351
  value: transformValue(),
392
352
  options: selectOptions
393
- })
394
- });
353
+ }
354
+ ) });
355
+ };
356
+ var ProSelect_default = forwardRef(ProSelect);
357
+ export {
358
+ ProSelect,
359
+ ProSelect_default as default
395
360
  };
396
- export default /*#__PURE__*/forwardRef(ProSelect);
@@ -1 +0,0 @@
1
- export {};
@@ -8,6 +8,13 @@
8
8
  }
9
9
  .pro-select {
10
10
  width: 100%;
11
+
12
+ // Ant Design Compact 控件的交互层级为 2;弹层打开时临时提升当前选择框。
13
+ &.pro-select-popup-open {
14
+ position: relative;
15
+ z-index: 3;
16
+ }
17
+
11
18
  > .ant-select {
12
19
  width: 100%;
13
20
  }
@@ -18,3 +25,9 @@
18
25
  font-weight: bold;
19
26
  }
20
27
  }
28
+
29
+ // scrollFollowParent 会让弹层受祖先堆叠上下文约束,需要同步提升嵌套 Form.Item。
30
+ .ant-form-item:has(.pro-select-popup-open) {
31
+ position: relative;
32
+ z-index: 3 !important;
33
+ }