@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,95 +1,85 @@
1
- import _cloneDeep from "lodash/cloneDeep";
2
- import { useMemo, useRef, useContext } from 'react';
3
- import { Menu } from 'antd';
4
- import { useDeepCompareEffect, useSetState } from 'ahooks';
5
- import { CaretDownOutlined } from '@ant-design/icons';
6
- import classnames from 'classnames';
7
- import { Link as RouterLink } from 'react-router-dom';
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useRef, useContext } from "react";
3
+ import { Menu } from "antd";
4
+ import { useDeepCompareEffect, useSetState } from "ahooks";
5
+ import { CaretDownOutlined } from "@ant-design/icons";
6
+ import classnames from "classnames";
7
+ import { Link as RouterLink } from "react-router-dom";
8
+ import cloneDeep from "lodash/cloneDeep";
8
9
  import { LayoutContext } from "../../../../index";
9
10
  import { getIdsByPathName, findMenuItemByKey } from "../../../../utils";
10
11
  import { canOpenAsTab } from "../../../TabsManager/utils";
11
12
  import ProIcon from "../../../../../ProIcon";
12
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  const Link = RouterLink;
14
- const OpenMenu = props => {
15
- const {
16
- className,
17
- dataSource,
18
- style,
19
- onMenuClick,
20
- textVisible = true
21
- } = props;
22
- const {
23
- menus,
24
- sideMenu
25
- } = dataSource || {};
14
+ const OpenMenu = (props) => {
15
+ var _a;
16
+ const { className, dataSource, style, onMenuClick, textVisible = true } = props;
17
+ const { menus, sideMenu } = dataSource || {};
26
18
  const linkRef = useRef(null);
27
- // 通过URL匹配对应的ID用于回显
28
- const [{
29
- selectedKeys,
30
- openKeys,
31
- router
32
- }, setState] = useSetState({
19
+ const [{ selectedKeys, openKeys, router }, setState] = useSetState({
33
20
  selectedKeys: [],
34
21
  openKeys: [],
35
- router: ''
22
+ router: ""
36
23
  });
37
24
  const query = new URLSearchParams(window.location.search);
38
25
  const layoutContext = useContext(LayoutContext);
39
- const layoutSelectedPath = layoutContext?.selectedPath;
40
- const layoutOnSelected = layoutContext?.onSelected;
41
- const layoutTarget = layoutContext?.target;
26
+ const layoutSelectedPath = layoutContext == null ? void 0 : layoutContext.selectedPath;
27
+ const layoutOnSelected = layoutContext == null ? void 0 : layoutContext.onSelected;
28
+ const layoutTarget = layoutContext == null ? void 0 : layoutContext.target;
42
29
  const cls = classnames({
43
- 'pro-layout-open-menu': true,
44
- 'pro-layout-menu-text-hidden': textVisible === false,
30
+ "pro-layout-open-menu": true,
31
+ "pro-layout-menu-text-hidden": textVisible === false,
45
32
  [`${className}`]: className
46
33
  });
47
-
48
- // 默认激活菜单优先取selectedPath或activeMenu,默认取pathName进行匹配
49
- // 特殊处理:如果layoutSelectedPath是'##EMPTY##',表示有意清空选中状态
50
- const preferredPath = query.get('activeMenu') || (layoutSelectedPath === '##EMPTY##' ? null : layoutSelectedPath) || window.location.pathname;
51
- const selectKeyIdPath = preferredPath ? getIdsByPathName(menus, preferredPath)?.map(item => String(item)) || [] : [];
34
+ const preferredPath = query.get("activeMenu") || (layoutSelectedPath === "##EMPTY##" ? null : layoutSelectedPath) || window.location.pathname;
35
+ const selectKeyIdPath = preferredPath ? ((_a = getIdsByPathName(menus, preferredPath)) == null ? void 0 : _a.map((item) => String(item))) || [] : [];
36
+ const selectedRootKey = selectKeyIdPath[0];
52
37
  const itemsTransform = useMemo(() => {
53
- const result = _cloneDeep(menus);
38
+ const result = cloneDeep(menus);
54
39
  if (!Array.isArray(result) || !result.length) {
55
40
  return [];
56
41
  }
57
- const menuDeep = data => {
58
- data.forEach(item => {
59
- // 是否是第一级菜单,展开模式一级菜单有icon, 收起模式二级菜单有icon
60
- const isFirstMenu = item.keyIdPath?.length === 1 || sideMenu && item.keyIdPath?.length === 2;
61
- // 第一级菜单显示icon
62
- item.label = /*#__PURE__*/_jsxs("div", {
63
- className: classnames({
64
- 'pro-layout-open-menu-lv1': isFirstMenu
65
- }),
66
- children: [/*#__PURE__*/_jsx(_Fragment, {
67
- children: item.imgUrl && isFirstMenu ? /*#__PURE__*/_jsx("img", {
68
- className: "pro-layout-icon",
69
- src: selectKeyIdPath[0] === String(item.id) ? item.imgActiveUrl || item.imgUrl : item.imgUrl,
70
- alt: "icon"
71
- }) : item.icon && isFirstMenu ? /*#__PURE__*/_jsx(ProIcon, {
72
- type: item.icon || '',
73
- size: "20px"
74
- }) : /*#__PURE__*/_jsx("span", {
75
- className: classnames({
76
- 'pro-layout-icon': true,
77
- 'pro-layout-icon-empty': isFirstMenu
78
- })
79
- })
80
- }), /*#__PURE__*/_jsx("h2", {
81
- children: item.name
82
- })]
83
- });
42
+ const menuDeep = (data) => {
43
+ data.forEach((item) => {
44
+ var _a2, _b, _c;
45
+ const isFirstMenu = ((_a2 = item.keyIdPath) == null ? void 0 : _a2.length) === 1 || sideMenu && ((_b = item.keyIdPath) == null ? void 0 : _b.length) === 2;
46
+ item.label = /* @__PURE__ */ jsxs(
47
+ "div",
48
+ {
49
+ className: classnames({
50
+ "pro-layout-open-menu-lv1": isFirstMenu
51
+ }),
52
+ children: [
53
+ /* @__PURE__ */ jsx(Fragment, { children: item.imgUrl && isFirstMenu ? /* @__PURE__ */ jsx(
54
+ "img",
55
+ {
56
+ className: "pro-layout-icon",
57
+ src: selectedRootKey === String(item.id) ? item.imgActiveUrl || item.imgUrl : item.imgUrl,
58
+ alt: "icon"
59
+ }
60
+ ) : item.icon && isFirstMenu ? /* @__PURE__ */ jsx(ProIcon, { type: item.icon || "", size: "20px" }) : /* @__PURE__ */ jsx(
61
+ "span",
62
+ {
63
+ className: classnames({
64
+ "pro-layout-icon": true,
65
+ "pro-layout-icon-empty": isFirstMenu
66
+ })
67
+ }
68
+ ) }),
69
+ /* @__PURE__ */ jsx("h2", { children: item.name })
70
+ ]
71
+ }
72
+ );
84
73
  item.key = String(item.id);
85
74
  item.router = item.redirectUrl || item.router || item.url;
86
- Object.keys(item).filter(keyItem => !['label', 'key', 'children', 'onTitleClick', 'router'].includes(keyItem)).forEach(_keyItem => {
75
+ Object.keys(item).filter(
76
+ (keyItem) => !["label", "key", "children", "onTitleClick", "router"].includes(keyItem)
77
+ ).forEach((_keyItem) => {
87
78
  delete item[_keyItem];
88
79
  });
89
- if (Array.isArray(item?.children) && item?.children?.length > 0) {
90
- const _item = item?.children[0];
91
- // 移除不需要显示的菜单
92
- if (_item?.hideInMenu || ['TAB', 'QUERY', 'BUTTON'].includes(_item?.type)) {
80
+ if (Array.isArray(item == null ? void 0 : item.children) && ((_c = item == null ? void 0 : item.children) == null ? void 0 : _c.length) > 0) {
81
+ const _item = item == null ? void 0 : item.children[0];
82
+ if ((_item == null ? void 0 : _item.hideInMenu) || ["TAB", "QUERY", "BUTTON"].includes(_item == null ? void 0 : _item.type)) {
93
83
  delete item.children;
94
84
  } else {
95
85
  menuDeep(item.children);
@@ -102,7 +92,7 @@ const OpenMenu = props => {
102
92
  };
103
93
  menuDeep(result);
104
94
  return result;
105
- }, [dataSource]);
95
+ }, [dataSource, selectedRootKey]);
106
96
  useDeepCompareEffect(() => {
107
97
  if (Array.isArray(selectKeyIdPath)) {
108
98
  const newState = {
@@ -114,84 +104,68 @@ const OpenMenu = props => {
114
104
  setState(newState);
115
105
  }
116
106
  }, [menus, selectKeyIdPath]);
117
-
118
- // 折叠模式默认展开全部菜单
119
107
  useDeepCompareEffect(() => {
120
108
  if (sideMenu) {
121
- const keys = menus.map(item => String(item.id));
109
+ const keys = menus.map((item) => String(item.id));
122
110
  setState({
123
111
  openKeys: keys
124
112
  });
125
113
  }
126
114
  }, [sideMenu]);
127
- return /*#__PURE__*/_jsxs("div", {
128
- className: cls,
129
- style: style,
130
- children: [/*#__PURE__*/_jsx(Menu, {
131
- mode: "inline",
132
- selectedKeys: selectedKeys,
133
- openKeys: openKeys,
134
- items: itemsTransform,
135
- inlineIndent: 14,
136
- expandIcon: /*#__PURE__*/_jsx(CaretDownOutlined, {}),
137
- onOpenChange: openKeys => {
138
- setState({
139
- openKeys
140
- });
141
- },
142
- onClick: ({
143
- item,
144
- keyPath,
145
- key,
146
- domEvent
147
- }) => {
148
- // 查找完整的菜单项数据
149
- const menuItem = findMenuItemByKey(menus, key);
150
- const menuKeyPath = menuItem?.keyIdPath ? menuItem.keyIdPath.map(id => String(id)) : keyPath;
151
-
152
- // 调用用户传入的onMenuClick回调,获取返回值(是否应该激活菜单)
153
- let shouldActivate = true;
154
- if (onMenuClick) {
155
- const result = onMenuClick({
156
- item: menuItem,
157
- key,
158
- keyPath: menuKeyPath
159
- });
160
- // 如果返回 false,表示不应该激活菜单
161
- if (result === false) {
162
- shouldActivate = false;
163
- }
164
- }
165
-
166
- // 可入签节点(叶子 + 根节点特例)才设置选中状态和路径
167
- // 并且只有在 shouldActivate 为 true 时才设置
168
- if (menuItem && canOpenAsTab(menuItem) && shouldActivate) {
115
+ return /* @__PURE__ */ jsxs("div", { className: cls, style, children: [
116
+ /* @__PURE__ */ jsx(
117
+ Menu,
118
+ {
119
+ mode: "inline",
120
+ selectedKeys,
121
+ openKeys,
122
+ items: itemsTransform,
123
+ inlineIndent: 14,
124
+ expandIcon: /* @__PURE__ */ jsx(CaretDownOutlined, {}),
125
+ onOpenChange: (openKeys2) => {
169
126
  setState({
170
- selectedKeys: keyPath,
171
- router: item?.props?.router
127
+ openKeys: openKeys2
172
128
  });
173
- layoutOnSelected?.({
174
- selectedPath: item?.props?.router
175
- });
176
- if (layoutTarget) {
177
- window.open(item?.props?.router, layoutTarget);
178
- } else {
179
- setTimeout(() => {
180
- // 路由变更,且不再demo文档中
181
- if (!window.location.href.includes('~demos/prolayout')) {
182
- linkRef.current.click();
183
- }
184
- }, 100);
129
+ },
130
+ onClick: ({ keyPath, key }) => {
131
+ const menuItem = findMenuItemByKey(menus, key);
132
+ const menuKeyPath = (menuItem == null ? void 0 : menuItem.keyIdPath) ? menuItem.keyIdPath.map((id) => String(id)) : keyPath;
133
+ const menuRouter = (menuItem == null ? void 0 : menuItem.redirectUrl) || (menuItem == null ? void 0 : menuItem.router) || (menuItem == null ? void 0 : menuItem.url);
134
+ let shouldActivate = true;
135
+ if (onMenuClick) {
136
+ const result = onMenuClick({ item: menuItem, key, keyPath: menuKeyPath });
137
+ if (result === false) {
138
+ shouldActivate = false;
139
+ }
140
+ }
141
+ if (menuItem && canOpenAsTab(menuItem) && shouldActivate) {
142
+ setState({
143
+ selectedKeys: keyPath,
144
+ router: menuRouter
145
+ });
146
+ layoutOnSelected == null ? void 0 : layoutOnSelected({
147
+ selectedPath: menuRouter
148
+ });
149
+ if (layoutTarget) {
150
+ window.open(menuRouter, layoutTarget);
151
+ } else {
152
+ setTimeout(() => {
153
+ if (!window.location.href.includes("~demos/prolayout")) {
154
+ linkRef.current.click();
155
+ }
156
+ }, 100);
157
+ }
185
158
  }
159
+ },
160
+ style: {
161
+ height: dataSource.sideMenu ? "auto" : `calc(100vh - ${(dataSource == null ? void 0 : dataSource.height) || 0}px)`
186
162
  }
187
- },
188
- style: {
189
- height: dataSource.sideMenu ? 'auto' : `calc(100vh - ${dataSource?.height || 0}px)`
190
163
  }
191
- }), /*#__PURE__*/_jsx(Link, {
192
- to: router,
193
- ref: linkRef
194
- })]
195
- });
164
+ ),
165
+ /* @__PURE__ */ jsx(Link, { to: router, ref: linkRef })
166
+ ] });
167
+ };
168
+ var OpenMenu_default = OpenMenu;
169
+ export {
170
+ OpenMenu_default as default
196
171
  };
197
- export default OpenMenu;
@@ -1,44 +1,36 @@
1
- import { useRef } from 'react';
2
- import classnames from 'classnames';
3
- import { useSize } from 'ahooks';
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { useRef } from "react";
3
+ import classnames from "classnames";
4
+ import { useSize } from "ahooks";
4
5
  import OpenMenu from "../OpenMenu";
5
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- const SideMenu = props => {
7
- const {
8
- dataSource,
9
- onMenuClick
10
- } = props;
6
+ const SideMenu = (props) => {
7
+ const { dataSource, onMenuClick } = props;
11
8
  const ref = useRef(null);
12
9
  const size = useSize(ref);
13
- const {
14
- menus,
15
- iconfontUrl,
16
- notice,
17
- collapsed,
18
- headerHeight
19
- } = dataSource;
10
+ const { menus, iconfontUrl, notice, collapsed, headerHeight } = dataSource;
20
11
  const cls = classnames({
21
- 'pro-layout-sider-menu': true
12
+ "pro-layout-sider-menu": true
22
13
  });
23
- return /*#__PURE__*/_jsxs("div", {
24
- className: cls,
25
- children: [/*#__PURE__*/_jsx("h2", {
26
- ref: ref,
27
- children: menus?.name || ''
28
- }), /*#__PURE__*/_jsx("div", {
29
- children: /*#__PURE__*/_jsx(OpenMenu, {
14
+ return /* @__PURE__ */ jsxs("div", { className: cls, children: [
15
+ /* @__PURE__ */ jsx("h2", { ref, children: (menus == null ? void 0 : menus.name) || "" }),
16
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
17
+ OpenMenu,
18
+ {
30
19
  className: "pro-layout-sider-menu-list",
31
- onMenuClick: onMenuClick,
20
+ onMenuClick,
32
21
  dataSource: {
33
- menus: menus?.children || [],
22
+ menus: (menus == null ? void 0 : menus.children) || [],
34
23
  iconfontUrl,
35
24
  sideMenu: true
36
25
  },
37
26
  style: {
38
- height: `calc(100vh - ${headerHeight + (notice ? 32 : 0) + (size?.height || 0) + 12}px)`
27
+ height: `calc(100vh - ${headerHeight + (notice ? 32 : 0) + ((size == null ? void 0 : size.height) || 0) + 12}px)`
39
28
  }
40
- })
41
- })]
42
- });
29
+ }
30
+ ) })
31
+ ] });
32
+ };
33
+ var SideMenu_default = SideMenu;
34
+ export {
35
+ SideMenu_default as default
43
36
  };
44
- export default SideMenu;
@@ -1,27 +1,28 @@
1
- import { useEffect, useRef, useState, useCallback } from 'react';
2
- import classnames from 'classnames';
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState, useCallback } from "react";
3
+ import classnames from "classnames";
3
4
  import OpenMenu from "./OpenMenu";
4
- import FoldMenu from "./FoldMenu"; // 折叠后菜单
5
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- const iconfontCache = new Set();
7
- const loadIconfontScript = url => {
8
- if (!url || iconfontCache.has(url)) return;
9
- if (typeof document === 'undefined') return;
10
- const script = document.createElement('script');
11
- script.setAttribute('src', url);
5
+ import FoldMenu from "./FoldMenu";
6
+ const iconfontCache = /* @__PURE__ */ new Set();
7
+ const loadIconfontScript = (url) => {
8
+ if (!url || iconfontCache.has(url))
9
+ return;
10
+ if (typeof document === "undefined")
11
+ return;
12
+ const script = document.createElement("script");
13
+ script.setAttribute("src", url);
12
14
  iconfontCache.add(url);
13
15
  document.body.appendChild(script);
14
16
  };
15
-
16
- // 菜单宽度配置
17
17
  const MENU_CONFIG = {
18
18
  TRANSITION_DURATION: 300,
19
19
  // 宽度过渡时长(ms)
20
20
  TEXT_VISIBLE_THRESHOLD: 150,
21
21
  // 文字显示阈值(px, 约68%展开)
22
- FULL_WIDTH: 219 // 完全展开宽度(px)
22
+ FULL_WIDTH: 219
23
+ // 完全展开宽度(px)
23
24
  };
24
- const Menu = props => {
25
+ const Menu = (props) => {
25
26
  const {
26
27
  headerHeight,
27
28
  dataSource,
@@ -36,7 +37,6 @@ const Menu = props => {
36
37
  } = props || {};
37
38
  let menus = [];
38
39
  const menuRef = useRef(null);
39
- // 整合所有动画相关的refs
40
40
  const animationStateRef = useRef({
41
41
  timer: null,
42
42
  observer: null,
@@ -46,8 +46,6 @@ const Menu = props => {
46
46
  useEffect(() => {
47
47
  loadIconfontScript(iconfontUrl);
48
48
  }, [iconfontUrl]);
49
-
50
- // 提取清理逻辑
51
49
  const cleanupAnimation = useCallback(() => {
52
50
  const state = animationStateRef.current;
53
51
  if (state.timer) {
@@ -58,117 +56,122 @@ const Menu = props => {
58
56
  try {
59
57
  state.observer.disconnect();
60
58
  } catch (e) {
61
- console.warn('ResizeObserver disconnect failed:', e);
59
+ console.warn("ResizeObserver disconnect failed:", e);
62
60
  }
63
61
  state.observer = null;
64
62
  }
65
63
  }, []);
66
-
67
- // 触发文字显示
68
64
  const showMenuText = useCallback(() => {
69
65
  const state = animationStateRef.current;
70
- if (state.hasTriggered) return;
66
+ if (state.hasTriggered)
67
+ return;
71
68
  state.hasTriggered = true;
72
69
  setIsOpenMenuTextVisible(true);
73
- // 延迟清理,避免回调内竞态
74
70
  setTimeout(cleanupAnimation, 0);
75
71
  }, [cleanupAnimation]);
76
-
77
- // ResizeObserver 监听宽度变化,提前显示文字
78
72
  useEffect(() => {
73
+ var _a, _b;
79
74
  const state = animationStateRef.current;
80
75
  state.hasTriggered = false;
81
-
82
- // 折叠态:清理并隐藏文字
83
76
  if (!collapsed) {
84
77
  setIsOpenMenuTextVisible(false);
85
78
  cleanupAnimation();
86
79
  return;
87
80
  }
88
-
89
- // 检查是否已展开
90
- const currentWidth = menuRef.current?.getBoundingClientRect?.().width ?? 0;
81
+ const currentWidth = ((_b = (_a = menuRef.current) == null ? void 0 : _a.getBoundingClientRect) == null ? void 0 : _b.call(_a).width) ?? 0;
91
82
  if (currentWidth >= MENU_CONFIG.FULL_WIDTH) {
92
83
  state.hasTriggered = true;
93
84
  setIsOpenMenuTextVisible(true);
94
85
  return;
95
86
  }
96
-
97
- // 创建 ResizeObserver
98
- const supportsResizeObserver = typeof ResizeObserver !== 'undefined';
87
+ const supportsResizeObserver = typeof ResizeObserver !== "undefined";
99
88
  if (supportsResizeObserver && menuRef.current) {
100
- state.observer = new ResizeObserver(entries => {
101
- const width = entries[0]?.contentRect.width ?? 0;
89
+ state.observer = new ResizeObserver((entries) => {
90
+ var _a2;
91
+ const width = ((_a2 = entries[0]) == null ? void 0 : _a2.contentRect.width) ?? 0;
102
92
  if (width >= MENU_CONFIG.TEXT_VISIBLE_THRESHOLD) {
103
93
  showMenuText();
104
94
  }
105
95
  });
106
96
  state.observer.observe(menuRef.current);
107
97
  }
108
-
109
- // Fallback:定时器保底
110
98
  state.timer = setTimeout(showMenuText, MENU_CONFIG.TRANSITION_DURATION);
111
99
  return cleanupAnimation;
112
100
  }, [collapsed, cleanupAnimation, showMenuText]);
113
101
  const menuCls = classnames({
114
- 'pro-layout-menu': true,
115
- 'pro-layout-menu-open': collapsed
102
+ "pro-layout-menu": true,
103
+ "pro-layout-menu-open": collapsed
116
104
  });
117
105
  if (Array.isArray(dataSource)) {
118
106
  menus = dataSource;
119
107
  } else if (dataSource) {
120
- menus = dataSource?.menus;
108
+ menus = dataSource == null ? void 0 : dataSource.menus;
121
109
  }
122
- if (pure?.leftMenu || pure === true) {
123
- return /*#__PURE__*/_jsx(_Fragment, {});
110
+ if ((pure == null ? void 0 : pure.leftMenu) || pure === true) {
111
+ return /* @__PURE__ */ jsx(Fragment, {});
124
112
  }
125
- return /*#__PURE__*/_jsxs("div", {
126
- ref: menuRef,
127
- className: menuCls,
128
- style: {
129
- top: notice ? 96 + headerHeight - 64 : headerHeight
130
- },
131
- onTransitionEnd: e => {
132
- // Fallback:确保宽度过渡结束后文字一定显示
133
- if (e.propertyName === 'width' && e.target === menuRef.current && collapsed) {
134
- showMenuText();
135
- }
136
- },
137
- children: [sideMenuHeaderRender, /*#__PURE__*/_jsx(OpenMenu, {
138
- dataSource: {
139
- menus,
140
- iconfontUrl,
141
- height: headerHeight + (notice ? 32 : 0) + 48
142
- },
143
- onMenuClick: onMenuClick,
144
- textVisible: isOpenMenuTextVisible,
145
- style: {
146
- display: collapsed ? 'block' : 'none'
147
- }
148
- }), /*#__PURE__*/_jsx(FoldMenu, {
149
- dataSource: {
150
- menus,
151
- iconfontUrl,
152
- height: headerHeight + (notice ? 32 : 0) + 48,
153
- notice,
154
- collapsed,
155
- headerHeight
156
- },
157
- onMenuClick: onMenuClick,
158
- style: {
159
- display: collapsed ? 'none' : 'block',
160
- height: `calc(100vh - ${headerHeight + (notice ? 32 : 0) + 48 || 0}px)`
161
- }
162
- }), sideMenuFooterRender || /*#__PURE__*/_jsx("div", {
163
- className: "pro-layout-menu-collapsed",
164
- onClick: () => {
165
- setIsOpenMenuTextVisible(false);
166
- onToggle?.();
113
+ return /* @__PURE__ */ jsxs(
114
+ "div",
115
+ {
116
+ ref: menuRef,
117
+ className: menuCls,
118
+ style: { top: notice ? 96 + headerHeight - 64 : headerHeight },
119
+ onTransitionEnd: (e) => {
120
+ if (e.propertyName === "width" && e.target === menuRef.current && collapsed) {
121
+ showMenuText();
122
+ }
167
123
  },
168
- children: /*#__PURE__*/_jsx("div", {
169
- className: "pro-layout-arrow "
170
- })
171
- })]
172
- });
124
+ children: [
125
+ sideMenuHeaderRender,
126
+ /* @__PURE__ */ jsx(
127
+ OpenMenu,
128
+ {
129
+ dataSource: {
130
+ menus,
131
+ iconfontUrl,
132
+ height: headerHeight + (notice ? 32 : 0) + 48
133
+ },
134
+ onMenuClick,
135
+ textVisible: isOpenMenuTextVisible,
136
+ style: {
137
+ display: collapsed ? "block" : "none"
138
+ }
139
+ }
140
+ ),
141
+ /* @__PURE__ */ jsx(
142
+ FoldMenu,
143
+ {
144
+ dataSource: {
145
+ menus,
146
+ iconfontUrl,
147
+ height: headerHeight + (notice ? 32 : 0) + 48,
148
+ notice,
149
+ collapsed,
150
+ headerHeight
151
+ },
152
+ onMenuClick,
153
+ style: {
154
+ display: collapsed ? "none" : "block",
155
+ height: `calc(100vh - ${(headerHeight ?? 0) + (notice ? 32 : 0) + 48}px)`
156
+ }
157
+ }
158
+ ),
159
+ sideMenuFooterRender || /* @__PURE__ */ jsx(
160
+ "div",
161
+ {
162
+ className: "pro-layout-menu-collapsed",
163
+ onClick: () => {
164
+ setIsOpenMenuTextVisible(false);
165
+ onToggle == null ? void 0 : onToggle();
166
+ },
167
+ children: /* @__PURE__ */ jsx("div", { className: "pro-layout-arrow " })
168
+ }
169
+ )
170
+ ]
171
+ }
172
+ );
173
+ };
174
+ var Menu_default = Menu;
175
+ export {
176
+ Menu_default as default
173
177
  };
174
- export default Menu;