@zat-design/sisyphus-react 4.5.10-beta.1 → 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 (266) hide show
  1. package/es/FormsProvider/index.js +14 -21
  2. package/es/ProAction/components/CheckModalContent/index.js +12 -26
  3. package/es/ProAction/index.js +79 -83
  4. package/es/ProAction/propsType.js +0 -1
  5. package/es/ProConfigProvider/index.js +63 -110
  6. package/es/ProConfigProvider/propsType.js +0 -1
  7. package/es/ProDownload/index.js +55 -65
  8. package/es/ProDownload/propsType.js +0 -1
  9. package/es/ProDownload/utils.js +61 -95
  10. package/es/ProDrawerForm/components/ProDrawer/index.js +83 -113
  11. package/es/ProDrawerForm/components/ProModal/index.js +77 -108
  12. package/es/ProDrawerForm/components/index.js +6 -2
  13. package/es/ProDrawerForm/hooks/useConfirmClose.js +20 -39
  14. package/es/ProDrawerForm/index.js +29 -38
  15. package/es/ProDrawerForm/propsType.js +0 -1
  16. package/es/ProDrawerForm/utils/index.js +18 -36
  17. package/es/ProEditLabel/components/RenderProForm.js +45 -49
  18. package/es/ProEditLabel/index.js +126 -163
  19. package/es/ProEditLabel/propsType.js +0 -1
  20. package/es/ProEditLabel/utils/index.js +5 -8
  21. package/es/ProEditTable/components/ActionButton/index.js +111 -119
  22. package/es/ProEditTable/components/RcTable/BaseTable.js +38 -51
  23. package/es/ProEditTable/components/RcTable/DraggableTable.js +97 -129
  24. package/es/ProEditTable/components/RcTable/index.js +6 -4
  25. package/es/ProEditTable/components/RenderField/ListChangedWrapper.js +77 -95
  26. package/es/ProEditTable/components/RenderField/index.js +490 -587
  27. package/es/ProEditTable/components/RenderField/propsType.js +0 -1
  28. package/es/ProEditTable/components/RenderField/tools.js +115 -112
  29. package/es/ProEditTable/components/RenderToolbar/index.js +47 -73
  30. package/es/ProEditTable/components/Summary/index.js +38 -64
  31. package/es/ProEditTable/components/Validator/index.js +46 -46
  32. package/es/ProEditTable/components/index.js +12 -5
  33. package/es/ProEditTable/index.js +456 -378
  34. package/es/ProEditTable/propsType.js +0 -1
  35. package/es/ProEditTable/utils/config.js +60 -122
  36. package/es/ProEditTable/utils/diffOriginal.js +45 -82
  37. package/es/ProEditTable/utils/getDefaultProps.js +19 -24
  38. package/es/ProEditTable/utils/index.js +150 -236
  39. package/es/ProEditTable/utils/tools.js +149 -286
  40. package/es/ProEditTable/utils/transform.js +25 -30
  41. package/es/ProEditTable/utils/useEditTableError.js +30 -43
  42. package/es/ProEditTable/utils/useShouldUpdateForTable.js +42 -72
  43. package/es/ProEditTable/utils/validateAll.js +87 -154
  44. package/es/ProEnum/components/Group.js +38 -30
  45. package/es/ProEnum/components/Tag.js +22 -26
  46. package/es/ProEnum/hooks/useEnum.js +48 -116
  47. package/es/ProEnum/hooks/useEnumRequest.js +128 -179
  48. package/es/ProEnum/hooks/useFrequentEnumRequest.js +40 -48
  49. package/es/ProEnum/index.js +162 -172
  50. package/es/ProEnum/propsType.js +0 -1
  51. package/es/ProEnum/utils/eventCenter.js +10 -12
  52. package/es/ProEnum/utils/frequentEnum.js +35 -92
  53. package/es/ProEnum/utils/getEnum.js +32 -90
  54. package/es/ProEnum/utils/getEnumLabel.js +44 -49
  55. package/es/ProEnum/utils/index.js +93 -207
  56. package/es/ProForm/components/Container.js +13 -28
  57. package/es/ProForm/components/FormFooter/index.js +36 -44
  58. package/es/ProForm/components/FormFooter/propsType.js +0 -1
  59. package/es/ProForm/components/base/Checkbox/index.js +32 -59
  60. package/es/ProForm/components/base/DatePicker/index.js +49 -71
  61. package/es/ProForm/components/base/Input/index.js +63 -97
  62. package/es/ProForm/components/base/Input/propsType.js +0 -1
  63. package/es/ProForm/components/base/InputNumber/index.js +118 -172
  64. package/es/ProForm/components/base/Radio/index.js +39 -52
  65. package/es/ProForm/components/base/RangePicker/index.js +109 -127
  66. package/es/ProForm/components/base/RangePicker/useDateRange.js +20 -17
  67. package/es/ProForm/components/base/Select/index.js +63 -89
  68. package/es/ProForm/components/base/Switch/index.js +27 -35
  69. package/es/ProForm/components/base/SwitchCheckbox/index.js +36 -54
  70. package/es/ProForm/components/base/TextArea/index.js +30 -41
  71. package/es/ProForm/components/base/TimePicker/index.js +27 -37
  72. package/es/ProForm/components/combination/Container/index.js +37 -47
  73. package/es/ProForm/components/combination/Container/propsType.js +0 -1
  74. package/es/ProForm/components/combination/FormList/components/ActionButton.js +165 -237
  75. package/es/ProForm/components/combination/FormList/components/BlockFields.js +98 -103
  76. package/es/ProForm/components/combination/FormList/components/Empty.js +27 -54
  77. package/es/ProForm/components/combination/FormList/components/LineFields.js +57 -54
  78. package/es/ProForm/components/combination/FormList/components/ToolbarButton.js +61 -109
  79. package/es/ProForm/components/combination/FormList/index.js +151 -161
  80. package/es/ProForm/components/combination/FormList/propsType.js +0 -1
  81. package/es/ProForm/components/combination/FormList/utils.js +22 -38
  82. package/es/ProForm/components/combination/Group/component/AddonWrapper/index.js +12 -28
  83. package/es/ProForm/components/combination/Group/component/ComRender.js +50 -111
  84. package/es/ProForm/components/combination/Group/component/FlexibleGroup.js +105 -206
  85. package/es/ProForm/components/combination/Group/hooks/index.js +68 -128
  86. package/es/ProForm/components/combination/Group/index.js +87 -126
  87. package/es/ProForm/components/combination/Group/propsType.js +0 -1
  88. package/es/ProForm/components/combination/Group/utils/index.js +124 -239
  89. package/es/ProForm/components/combination/ProCascader/index.js +156 -199
  90. package/es/ProForm/components/combination/ProCascader/propsType.js +0 -1
  91. package/es/ProForm/components/combination/ProCascader/utils/index.js +12 -21
  92. package/es/ProForm/components/combination/ProModalSelect/hooks/useRequestList.js +63 -75
  93. package/es/ProForm/components/combination/ProModalSelect/index.js +290 -348
  94. package/es/ProForm/components/combination/ProModalSelect/propsType.js +0 -1
  95. package/es/ProForm/components/combination/ProModalSelect/utils/index.js +32 -39
  96. package/es/ProForm/components/combination/ProNumberRange/index.js +100 -156
  97. package/es/ProForm/components/combination/ProNumberRange/propsType.js +0 -1
  98. package/es/ProForm/components/combination/ProRangeLimit/index.js +104 -115
  99. package/es/ProForm/components/combination/ProRangeLimit/propsType.js +0 -1
  100. package/es/ProForm/components/combination/ProTimeLimit/hooks/useControlled.js +16 -16
  101. package/es/ProForm/components/combination/ProTimeLimit/index.js +75 -109
  102. package/es/ProForm/components/index.js +56 -34
  103. package/es/ProForm/components/render/ChangedWrapper.js +85 -94
  104. package/es/ProForm/components/render/ConfirmWrapper.js +27 -39
  105. package/es/ProForm/components/render/CustomComponentViewWrapper.js +65 -82
  106. package/es/ProForm/components/render/Render.js +223 -329
  107. package/es/ProForm/components/render/RenderFields.js +76 -113
  108. package/es/ProForm/components/render/propsType.js +0 -1
  109. package/es/ProForm/hooks/useControlled.js +8 -10
  110. package/es/ProForm/hooks/useDeepCompareMemo.js +11 -11
  111. package/es/ProForm/hooks/useFieldProps.js +8 -4
  112. package/es/ProForm/hooks/useForm.js +50 -110
  113. package/es/ProForm/hooks/useRules.js +17 -33
  114. package/es/ProForm/hooks/useShouldUpdate.js +77 -152
  115. package/es/ProForm/hooks/useWatch.js +58 -129
  116. package/es/ProForm/index.js +157 -194
  117. package/es/ProForm/propsType.js +15 -7
  118. package/es/ProForm/utils/buildFormItemProps.js +51 -58
  119. package/es/ProForm/utils/diffOriginal.js +43 -73
  120. package/es/ProForm/utils/getDefaultProps.js +18 -24
  121. package/es/ProForm/utils/index.js +159 -234
  122. package/es/ProForm/utils/processDependencies.js +21 -60
  123. package/es/ProForm/utils/reactiveValues.js +20 -34
  124. package/es/ProForm/utils/rulesCreator.js +42 -40
  125. package/es/ProForm/utils/transformNames.js +10 -13
  126. package/es/ProForm/utils/transformValue.js +16 -29
  127. package/es/ProForm/utils/valueType.js +96 -178
  128. package/es/ProIcon/config/index.js +340 -274
  129. package/es/ProIcon/index.js +135 -209
  130. package/es/ProIcon/propsTypes.js +0 -1
  131. package/es/ProIcon/utils/index.js +24 -39
  132. package/es/ProLayout/components/Layout/Header/index.js +108 -141
  133. package/es/ProLayout/components/Layout/Menu/FoldMenu/index.js +134 -190
  134. package/es/ProLayout/components/Layout/Menu/OpenMenu/index.js +111 -137
  135. package/es/ProLayout/components/Layout/Menu/OpenMenu/propsType.js +0 -1
  136. package/es/ProLayout/components/Layout/Menu/SideMenu/index.js +23 -31
  137. package/es/ProLayout/components/Layout/Menu/index.js +92 -89
  138. package/es/ProLayout/components/Layout/Notice/index.js +13 -27
  139. package/es/ProLayout/components/Layout/index.js +8 -3
  140. package/es/ProLayout/components/ProCollapse/PropTypes.js +0 -1
  141. package/es/ProLayout/components/ProCollapse/index.js +89 -111
  142. package/es/ProLayout/components/ProFooter/PropTypes.js +0 -1
  143. package/es/ProLayout/components/ProFooter/index.js +27 -25
  144. package/es/ProLayout/components/ProHeader/PropTypes.js +0 -1
  145. package/es/ProLayout/components/ProHeader/components/Copy/index.js +23 -21
  146. package/es/ProLayout/components/ProHeader/components/Describe/index.js +67 -86
  147. package/es/ProLayout/components/ProHeader/components/ProBackBtn/index.js +18 -21
  148. package/es/ProLayout/components/ProHeader/components/ProBackBtn/propsType.js +0 -1
  149. package/es/ProLayout/components/ProHeader/components/index.js +6 -2
  150. package/es/ProLayout/components/ProHeader/index.js +216 -356
  151. package/es/ProLayout/components/ProHeader/utils/index.js +19 -26
  152. package/es/ProLayout/components/TabsManager/components/TabContextMenu.js +92 -85
  153. package/es/ProLayout/components/TabsManager/components/TabItem.js +53 -64
  154. package/es/ProLayout/components/TabsManager/components/TabsContext.js +5 -5
  155. package/es/ProLayout/components/TabsManager/components/TabsHeader.js +42 -52
  156. package/es/ProLayout/components/TabsManager/hooks/useActiveTab.js +8 -9
  157. package/es/ProLayout/components/TabsManager/hooks/useIframeRoute.js +19 -32
  158. package/es/ProLayout/components/TabsManager/hooks/useProLayoutTabs.js +6 -20
  159. package/es/ProLayout/components/TabsManager/hooks/useTabsCache.js +25 -42
  160. package/es/ProLayout/components/TabsManager/hooks/useTabsState.js +290 -408
  161. package/es/ProLayout/components/TabsManager/hooks/useTabsUrlSync.js +132 -95
  162. package/es/ProLayout/components/TabsManager/index.js +406 -390
  163. package/es/ProLayout/components/TabsManager/propTypes.js +7 -15
  164. package/es/ProLayout/components/TabsManager/utils/historyObserver.js +26 -23
  165. package/es/ProLayout/components/TabsManager/utils/index.js +127 -184
  166. package/es/ProLayout/components/index.js +8 -3
  167. package/es/ProLayout/index.js +171 -229
  168. package/es/ProLayout/propTypes.js +12 -52
  169. package/es/ProLayout/utils/index.js +48 -128
  170. package/es/ProSelect/components/AdaptiveTooltip.js +26 -25
  171. package/es/ProSelect/index.js +184 -229
  172. package/es/ProSelect/propsType.js +0 -1
  173. package/es/ProSelect/utils/index.js +100 -146
  174. package/es/ProStep/components/Anchor/index.js +71 -82
  175. package/es/ProStep/components/Item/index.js +49 -56
  176. package/es/ProStep/components/LazyLoad/index.js +23 -29
  177. package/es/ProStep/components/Listener/index.js +20 -33
  178. package/es/ProStep/components/Step/index.js +31 -38
  179. package/es/ProStep/constants.js +4 -1
  180. package/es/ProStep/index.js +166 -153
  181. package/es/ProStep/propsType.js +0 -1
  182. package/es/ProStep/utils/index.js +29 -55
  183. package/es/ProStepTab/index.js +83 -138
  184. package/es/ProStepTab/propsType.js +0 -1
  185. package/es/ProTable/components/EditableCell/EditIcon.js +10 -14
  186. package/es/ProTable/components/EditableCell/index.js +37 -71
  187. package/es/ProTable/components/EditableCell/propsType.js +0 -1
  188. package/es/ProTable/components/FormatColumn/index.js +209 -340
  189. package/es/ProTable/components/FormatColumn/propsType.js +0 -1
  190. package/es/ProTable/components/RcTable/components/BaseTable/index.js +35 -39
  191. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.js +80 -107
  192. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/index.js +54 -48
  193. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/propsType.js +0 -1
  194. package/es/ProTable/components/RcTable/components/DraggableTable/index.js +47 -54
  195. package/es/ProTable/components/RcTable/index.js +6 -4
  196. package/es/ProTable/components/RenderColumn/index.js +158 -186
  197. package/es/ProTable/components/RenderEmptyText/index.js +12 -21
  198. package/es/ProTable/components/RenderFooter/index.js +15 -15
  199. package/es/ProTable/components/RenderSummary/index.js +33 -50
  200. package/es/ProTable/components/RenderTableHeader/index.js +44 -46
  201. package/es/ProTable/components/RenderTabs/index.js +47 -51
  202. package/es/ProTable/components/TableResizable/index.js +56 -72
  203. package/es/ProTable/components/TooltipTitle/index.js +13 -21
  204. package/es/ProTable/components/index.js +16 -36
  205. package/es/ProTable/hooks/useAntdTable.js +185 -219
  206. package/es/ProTable/index.js +232 -249
  207. package/es/ProTable/propsType.js +0 -1
  208. package/es/ProTable/utils/columnStorage.js +63 -88
  209. package/es/ProTable/utils/index.js +57 -90
  210. package/es/ProTabs/components/Card/index.js +20 -48
  211. package/es/ProTabs/components/index.js +4 -1
  212. package/es/ProTabs/index.js +39 -56
  213. package/es/ProTabs/propType.js +0 -1
  214. package/es/ProThemeTools/component/ProTools/index.js +106 -158
  215. package/es/ProThemeTools/component/index.js +4 -1
  216. package/es/ProThemeTools/context/ThemeContext.js +67 -146
  217. package/es/ProThemeTools/index.js +103 -156
  218. package/es/ProThemeTools/propsType.js +0 -1
  219. package/es/ProThemeTools/utils/index.js +60 -109
  220. package/es/ProTooltip/index.js +132 -165
  221. package/es/ProTooltip/propsType.js +0 -1
  222. package/es/ProTree/components/AdaptiveTooltip.js +15 -17
  223. package/es/ProTree/components/CloseIcon.js +18 -26
  224. package/es/ProTree/components/List.js +28 -47
  225. package/es/ProTree/components/ProTree.js +152 -211
  226. package/es/ProTree/components/ProTreeSelect/index.js +254 -458
  227. package/es/ProTree/components/ProTreeSelect/propsType.js +0 -1
  228. package/es/ProTree/components/SearchTitle.js +23 -42
  229. package/es/ProTree/components/Tree.js +147 -195
  230. package/es/ProTree/components/index.js +10 -5
  231. package/es/ProTree/index.js +12 -16
  232. package/es/ProTree/propsType.js +0 -1
  233. package/es/ProTree/utils.js +46 -118
  234. package/es/ProTreeModal/components/Cascader.js +56 -64
  235. package/es/ProTreeModal/components/CloseIcon.js +18 -26
  236. package/es/ProTreeModal/components/List.js +114 -180
  237. package/es/ProTreeModal/components/SearchTitle.js +15 -18
  238. package/es/ProTreeModal/components/SortableItem.js +29 -58
  239. package/es/ProTreeModal/components/Tree.js +99 -113
  240. package/es/ProTreeModal/components/Trigger.js +87 -121
  241. package/es/ProTreeModal/components/index.js +14 -6
  242. package/es/ProTreeModal/index.js +397 -435
  243. package/es/ProTreeModal/propsType.js +0 -1
  244. package/es/ProTreeModal/utils.js +52 -95
  245. package/es/ProUpload/components/ButtonRender.js +44 -54
  246. package/es/ProUpload/components/DragRender.js +94 -134
  247. package/es/ProUpload/components/DraggableUploadListItem.js +12 -25
  248. package/es/ProUpload/components/Example.js +27 -31
  249. package/es/ProUpload/components/FileItem.js +69 -163
  250. package/es/ProUpload/components/ImageRender.js +134 -170
  251. package/es/ProUpload/index.js +68 -100
  252. package/es/ProUpload/propsType.js +0 -1
  253. package/es/ProUpload/uitls.js +8 -4
  254. package/es/ProUtils/utils/index.js +17 -13
  255. package/es/ProViewer/index.js +154 -175
  256. package/es/ProViewer/propsType.js +0 -5
  257. package/es/ProWaterMark/index.js +9 -16
  258. package/es/ProWaterMark/propsType.js +0 -1
  259. package/es/hooks/useDraggableRow.js +25 -53
  260. package/es/index.js +57 -77
  261. package/es/locale/en_US.js +153 -142
  262. package/es/locale/index.js +23 -36
  263. package/es/locale/zh_CN.js +145 -142
  264. package/es/tokens.js +84 -83
  265. package/es/utils/index.js +24 -51
  266. package/package.json +4 -3
@@ -1,8 +1,7 @@
1
- /* eslint-disable func-call-spacing */
2
- /* eslint-disable no-spaced-func */
3
- import { createContext, useMemo, useRef, useCallback, useLayoutEffect, useState } from 'react';
4
- import classNames from 'classnames';
5
- import { useSetState, useToggle, useDeepCompareEffect } from 'ahooks';
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { createContext, useMemo, useRef, useCallback, useLayoutEffect, useState } from "react";
3
+ import classNames from "classnames";
4
+ import { useSetState, useToggle, useDeepCompareEffect } from "ahooks";
6
5
  import { ProWaterMark } from "../index";
7
6
  import { ProCollapse, ProFooter, ProHeader } from "./components";
8
7
  import { Header, Notice, Menu } from "./components/Layout/index";
@@ -13,15 +12,13 @@ import { useActiveTab } from "./components/TabsManager/hooks/useActiveTab";
13
12
  import { transformMenus } from "./utils";
14
13
  import { canOpenAsTab, flattenMenuData } from "./components/TabsManager/utils";
15
14
  import headerBg from "../assets/header_bg.png";
16
-
17
- // 全局上下文
18
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
- export const LayoutContext = /*#__PURE__*/createContext(undefined);
15
+ const LayoutContext = createContext(void 0);
20
16
  const TABS_HEADER_MEASURE_SELECTOR = '[data-pro-layout-tabs-measure="true"]';
21
- const ProLayout = props => {
17
+ const ProLayout = (props) => {
18
+ var _a;
22
19
  const {
23
20
  children,
24
- className = '',
21
+ className = "",
25
22
  pure = false,
26
23
  headerHeight = 64,
27
24
  contentStyle = {},
@@ -30,7 +27,7 @@ const ProLayout = props => {
30
27
  notice: noticeIn,
31
28
  // 修改别名
32
29
  dataSource,
33
- pathPrefix = '',
30
+ pathPrefix = "",
34
31
  target,
35
32
  onCollapsedChange,
36
33
  collapsed: propsCollapsed = false,
@@ -39,108 +36,89 @@ const ProLayout = props => {
39
36
  headerTitleRender,
40
37
  headerContentRender,
41
38
  rightContentRender,
42
- title = '',
39
+ title = "",
43
40
  logo,
44
41
  appsOptions,
45
42
  // Menu组件需要的props
46
- iconfontUrl = '',
43
+ iconfontUrl = "",
47
44
  sideMenuFooterRender,
48
45
  sideMenuHeaderRender,
49
- mode = 'normal',
46
+ mode = "normal",
50
47
  tabs
51
48
  } = props;
52
49
  const isTabsLayout = isTabsMode(props);
53
50
  validateTabsProps(mode, tabs);
54
51
  const tabsManagerRef = useRef(null);
55
-
56
- // Tab 栏 Portal 挂载目标及动画状态
57
- const [{
58
- tabsBarEl,
59
- hasTabs,
60
- isIframePure
61
- }, setTabsState] = useSetState({
62
- tabsBarEl: null,
63
- hasTabs: false,
64
- isIframePure: false
65
- });
66
- // 稳定的 ref 回调,避免内联函数每次渲染都触发 setState 导致无限循环
67
- const setTabsBarElRef = useCallback(el => setTabsState({
68
- tabsBarEl: el
69
- }), []);
70
- // TabsManager 会在 layout effect 中调用这两个回调;保持引用稳定,避免父组件每次
71
- // render 都让 layout effect 重新执行并再次 setState,形成无限更新循环。
72
- const handleTabsChange = useCallback(v => setTabsState({
73
- hasTabs: v
74
- }), []);
75
- const handleIframePureChange = useCallback(v => setTabsState({
76
- isIframePure: v
77
- }), []);
52
+ const [{ tabsBarEl, hasTabs, isIframePure }, setTabsState] = useSetState({ tabsBarEl: null, hasTabs: false, isIframePure: false });
53
+ const setTabsBarElRef = useCallback(
54
+ (el) => setTabsState({ tabsBarEl: el }),
55
+ []
56
+ );
57
+ const handleTabsChange = useCallback((v) => setTabsState({ hasTabs: v }), []);
58
+ const handleIframePureChange = useCallback((v) => setTabsState({ isIframePure: v }), []);
78
59
  const noticeElRef = useRef(null);
79
- const setNoticeElRef = useCallback(el => {
60
+ const setNoticeElRef = useCallback((el) => {
80
61
  noticeElRef.current = el;
81
62
  }, []);
82
- const [stickyHeights, setStickyHeights] = useState({
83
- notice: 0,
84
- tabsBar: 0
85
- });
86
- const [{
87
- notice,
88
- menus,
89
- selectedPath
90
- }, setState] = useSetState({
63
+ const [stickyHeights, setStickyHeights] = useState({ notice: 0, tabsBar: 0 });
64
+ const [{ notice, menus, selectedPath }, setState] = useSetState({
91
65
  notice: headerNotice || noticeIn,
92
66
  menus: [],
93
- selectedPath: ''
67
+ selectedPath: ""
94
68
  });
95
69
  useLayoutEffect(() => {
96
70
  const noticeEl = notice && !isIframePure ? noticeElRef.current : null;
97
71
  const visibleTabsBarEl = isTabsLayout && hasTabs && !isIframePure ? tabsBarEl : null;
98
- const visibleTabsHeaderEl = visibleTabsBarEl?.querySelector(TABS_HEADER_MEASURE_SELECTOR);
72
+ const visibleTabsHeaderEl = visibleTabsBarEl == null ? void 0 : visibleTabsBarEl.querySelector(
73
+ TABS_HEADER_MEASURE_SELECTOR
74
+ );
99
75
  let active = true;
100
76
  let animationFrameId;
101
77
  const measureStickyElements = () => {
102
- if (!active) return;
78
+ if (!active)
79
+ return;
103
80
  const nextHeights = {
104
- notice: noticeEl?.getBoundingClientRect().height ?? 0,
105
- tabsBar: visibleTabsHeaderEl?.getBoundingClientRect().height ?? 0
81
+ notice: (noticeEl == null ? void 0 : noticeEl.getBoundingClientRect().height) ?? 0,
82
+ tabsBar: (visibleTabsHeaderEl == null ? void 0 : visibleTabsHeaderEl.getBoundingClientRect().height) ?? 0
106
83
  };
107
- setStickyHeights(currentHeights => currentHeights.notice === nextHeights.notice && currentHeights.tabsBar === nextHeights.tabsBar ? currentHeights : nextHeights);
84
+ setStickyHeights(
85
+ (currentHeights) => currentHeights.notice === nextHeights.notice && currentHeights.tabsBar === nextHeights.tabsBar ? currentHeights : nextHeights
86
+ );
108
87
  };
109
88
  measureStickyElements();
110
- if (typeof window.requestAnimationFrame === 'function') {
89
+ if (typeof window.requestAnimationFrame === "function") {
111
90
  animationFrameId = window.requestAnimationFrame(measureStickyElements);
112
91
  }
113
- const handleTabsTransitionEnd = event => {
114
- if (event.target === visibleTabsBarEl && event.propertyName === 'grid-template-rows') {
92
+ const handleTabsTransitionEnd = (event) => {
93
+ if (event.target === visibleTabsBarEl && event.propertyName === "grid-template-rows") {
115
94
  measureStickyElements();
116
95
  }
117
96
  };
118
- visibleTabsBarEl?.addEventListener('transitionend', handleTabsTransitionEnd);
119
- const observedElements = [noticeEl, visibleTabsHeaderEl].filter(element => element !== null && element !== undefined);
120
- if (observedElements.length === 0 || typeof ResizeObserver === 'undefined') {
97
+ visibleTabsBarEl == null ? void 0 : visibleTabsBarEl.addEventListener("transitionend", handleTabsTransitionEnd);
98
+ const observedElements = [noticeEl, visibleTabsHeaderEl].filter(
99
+ (element) => element !== null && element !== void 0
100
+ );
101
+ if (observedElements.length === 0 || typeof ResizeObserver === "undefined") {
121
102
  return () => {
122
103
  active = false;
123
- if (animationFrameId !== undefined) {
104
+ if (animationFrameId !== void 0) {
124
105
  window.cancelAnimationFrame(animationFrameId);
125
106
  }
126
- visibleTabsBarEl?.removeEventListener('transitionend', handleTabsTransitionEnd);
107
+ visibleTabsBarEl == null ? void 0 : visibleTabsBarEl.removeEventListener("transitionend", handleTabsTransitionEnd);
127
108
  };
128
109
  }
129
110
  const resizeObserver = new ResizeObserver(measureStickyElements);
130
- observedElements.forEach(element => resizeObserver.observe(element));
111
+ observedElements.forEach((element) => resizeObserver.observe(element));
131
112
  return () => {
132
113
  active = false;
133
- if (animationFrameId !== undefined) {
114
+ if (animationFrameId !== void 0) {
134
115
  window.cancelAnimationFrame(animationFrameId);
135
116
  }
136
- visibleTabsBarEl?.removeEventListener('transitionend', handleTabsTransitionEnd);
117
+ visibleTabsBarEl == null ? void 0 : visibleTabsBarEl.removeEventListener("transitionend", handleTabsTransitionEnd);
137
118
  resizeObserver.disconnect();
138
119
  };
139
120
  }, [hasTabs, isIframePure, isTabsLayout, notice, tabsBarEl]);
140
- const [collapsed, {
141
- toggle,
142
- set
143
- }] = useToggle(props.collapsed || false);
121
+ const [collapsed, { toggle, set }] = useToggle(props.collapsed || false);
144
122
  useDeepCompareEffect(() => {
145
123
  set(props.collapsed || false);
146
124
  }, [props.collapsed]);
@@ -149,27 +127,17 @@ const ProLayout = props => {
149
127
  return;
150
128
  }
151
129
  const userData = transformMenus(dataSource, pathPrefix);
152
- // 确保 menus 始终是一个数组
153
- const menuData = Array.isArray(userData) ? userData : userData?.menus || [];
154
- setState({
155
- menus: menuData
156
- });
130
+ const menuData = Array.isArray(userData) ? userData : (userData == null ? void 0 : userData.menus) || [];
131
+ setState({ menus: menuData });
157
132
  }, [dataSource]);
158
133
  const menuDataSource = useMemo(() => {
159
- // menus 已通过 useDeepCompareEffect 填充,直接使用
160
134
  if (Array.isArray(menus) && menus.length > 0) {
161
- return {
162
- menus
163
- };
135
+ return { menus };
164
136
  }
165
- // menus state 尚未填充(初始为 []),直接用 dataSource 原始 menus,
166
- // 确保 tabsInstance 第一次创建时就能查到完整菜单数据(含 closable 等属性)
167
- if (!Array.isArray(dataSource) && Array.isArray(dataSource?.menus)) {
137
+ if (!Array.isArray(dataSource) && Array.isArray(dataSource == null ? void 0 : dataSource.menus)) {
168
138
  return dataSource;
169
139
  }
170
- return {
171
- menus: menus || []
172
- };
140
+ return { menus: menus || [] };
173
141
  }, [menus, dataSource]);
174
142
  const enhancedTabsConfig = useMemo(() => {
175
143
  if (!isTabsLayout || !tabs) {
@@ -178,102 +146,80 @@ const ProLayout = props => {
178
146
  return {
179
147
  ...tabs,
180
148
  onTabChange: (activeKey, activeTab, allTabs) => {
149
+ var _a2, _b, _c, _d, _e;
181
150
  if (!allTabs || allTabs.length === 0) {
182
- // 使用一个不可能匹配的路径来清除选中状态,避免 OpenMenu fallback 到 window.location.pathname
183
- setState({
184
- selectedPath: '##EMPTY##'
185
- });
151
+ setState({ selectedPath: "##EMPTY##" });
186
152
  return;
187
153
  }
188
- const menuCodeSource = activeTab?.menuCodeSource?.trim();
189
- const sourceMenu = menuCodeSource ? flattenMenuData(menuDataSource.menus).find(menu => menu.code === menuCodeSource) : undefined;
190
- const sourcePath = sourceMenu?.redirectUrl || sourceMenu?.url || sourceMenu?.router;
191
- const targetPath = sourcePath || activeTab?.url || activeTab?.menuItem?.router || activeTab?.menuItem?.redirectUrl || activeTab?.menuItem?.url;
154
+ const menuCodeSource = (_a2 = activeTab == null ? void 0 : activeTab.menuCodeSource) == null ? void 0 : _a2.trim();
155
+ const sourceMenu = menuCodeSource ? flattenMenuData(menuDataSource.menus).find((menu) => menu.code === menuCodeSource) : void 0;
156
+ const sourcePath = (sourceMenu == null ? void 0 : sourceMenu.redirectUrl) || (sourceMenu == null ? void 0 : sourceMenu.url) || (sourceMenu == null ? void 0 : sourceMenu.router);
157
+ const targetPath = sourcePath || (activeTab == null ? void 0 : activeTab.url) || ((_b = activeTab == null ? void 0 : activeTab.menuItem) == null ? void 0 : _b.router) || ((_c = activeTab == null ? void 0 : activeTab.menuItem) == null ? void 0 : _c.redirectUrl) || ((_d = activeTab == null ? void 0 : activeTab.menuItem) == null ? void 0 : _d.url);
192
158
  if (targetPath && targetPath !== selectedPath) {
193
- setState({
194
- selectedPath: targetPath
195
- });
159
+ setState({ selectedPath: targetPath });
196
160
  }
197
- tabs.onTabChange?.(activeKey, activeTab, allTabs);
161
+ (_e = tabs.onTabChange) == null ? void 0 : _e.call(tabs, activeKey, activeTab, allTabs);
198
162
  }
199
163
  };
200
164
  }, [isTabsLayout, menuDataSource.menus, tabs, selectedPath]);
201
165
  const renderContent = () => {
202
166
  if (!isTabsLayout || !enhancedTabsConfig) {
203
- return /*#__PURE__*/_jsx("div", {
204
- children: children
205
- });
167
+ return /* @__PURE__ */ jsx("div", { children });
206
168
  }
207
- return /*#__PURE__*/_jsx(TabsManager, {
208
- ref: tabsManagerRef,
209
- config: enhancedTabsConfig,
210
- dataSource: menuDataSource,
211
- originalOnMenuClick: onMenuClick,
212
- tabsBarContainer: tabsBarEl,
213
- onTabsChange: handleTabsChange,
214
- onIframePureChange: handleIframePureChange,
215
- children: children
216
- });
169
+ return /* @__PURE__ */ jsx(
170
+ TabsManager,
171
+ {
172
+ ref: tabsManagerRef,
173
+ config: enhancedTabsConfig,
174
+ dataSource: menuDataSource,
175
+ originalOnMenuClick: onMenuClick,
176
+ tabsBarContainer: tabsBarEl,
177
+ onTabsChange: handleTabsChange,
178
+ onIframePureChange: handleIframePureChange,
179
+ children
180
+ }
181
+ );
217
182
  };
218
- const handleMenuClick = useCallback(params => {
219
- // 非 tabs 模式,直接调用原始回调并允许激活
220
- if (!isTabsLayout) {
221
- onMenuClick?.(params);
222
- return true;
223
- }
224
-
225
- // tabs 模式:调用 TabsManager 的 handleMenuClick 来添加标签页
226
- tabsManagerRef.current?.handleMenuClick?.(params);
227
- if (!params.item) {
228
- return true;
229
- }
230
-
231
- // 只有叶子节点(无 children)可入签;有 children 的节点不激活
232
- if (!canOpenAsTab(params.item)) {
233
- return false;
234
- }
235
-
236
- // 可入签节点:检查是否可以添加标签页(检查 max 限制、_blank 等)
237
- const canAdd = tabsManagerRef.current?.canAddTab?.(params.item);
238
- if (!canAdd) {
239
- // 超过限制,返回 false 阻止菜单激活
183
+ const handleMenuClick = useCallback(
184
+ (params) => {
185
+ var _a2, _b, _c, _d, _e, _f, _g;
186
+ if (!isTabsLayout) {
187
+ onMenuClick == null ? void 0 : onMenuClick(params);
188
+ return true;
189
+ }
190
+ (_b = (_a2 = tabsManagerRef.current) == null ? void 0 : _a2.handleMenuClick) == null ? void 0 : _b.call(_a2, params);
191
+ if (!params.item) {
192
+ return true;
193
+ }
194
+ if (!canOpenAsTab(params.item)) {
195
+ return false;
196
+ }
197
+ const canAdd = (_d = (_c = tabsManagerRef.current) == null ? void 0 : _c.canAddTab) == null ? void 0 : _d.call(_c, params.item);
198
+ if (!canAdd) {
199
+ return false;
200
+ }
201
+ const targetPath = ((_e = params.item) == null ? void 0 : _e.redirectUrl) || ((_f = params.item) == null ? void 0 : _f.url) || ((_g = params.item) == null ? void 0 : _g.router);
202
+ if (targetPath && targetPath !== selectedPath) {
203
+ setState({ selectedPath: targetPath });
204
+ }
240
205
  return false;
241
- }
242
-
243
- // 可以添加标签页,设置选中路径(激活菜单)
244
- const targetPath = params.item?.redirectUrl || params.item?.url || params.item?.router;
245
- if (targetPath && targetPath !== selectedPath) {
246
- setState({
247
- selectedPath: targetPath
248
- });
249
- }
250
- // tabs 模式下由 Tab 管理内容,阻止菜单默认 Link 跳转
251
- return false;
252
- }, [isTabsLayout, onMenuClick, selectedPath]);
253
-
254
- /**
255
- * 关闭提示框
256
- */
206
+ },
207
+ [isTabsLayout, onMenuClick, selectedPath]
208
+ );
257
209
  const onCancelNotice = () => {
258
- setState({
259
- notice: null
260
- });
210
+ setState({ notice: null });
261
211
  };
262
212
  const contentCls = classNames({
263
- 'pro-layout-row': true,
264
- 'pro-layout-row-has-notice': notice,
265
- 'pro-layout-row-pure': typeof pure === 'boolean' && pure,
266
- 'pro-layout-row-top-pure': typeof pure !== 'boolean' && pure.topMenu,
267
- 'pro-layout-row-left-pure': typeof pure !== 'boolean' && pure.leftMenu
213
+ "pro-layout-row": true,
214
+ "pro-layout-row-has-notice": notice,
215
+ "pro-layout-row-pure": typeof pure === "boolean" && pure,
216
+ "pro-layout-row-top-pure": typeof pure !== "boolean" && pure.topMenu,
217
+ "pro-layout-row-left-pure": typeof pure !== "boolean" && pure.leftMenu
268
218
  });
269
219
  const noticeHeight = stickyHeights.notice;
270
-
271
- // pure 模式下 Header 不渲染,有效头部高度为 0
272
- const isPureHeader = typeof pure === 'boolean' ? pure : !!pure?.topMenu;
220
+ const isPureHeader = typeof pure === "boolean" ? pure : !!(pure == null ? void 0 : pure.topMenu);
273
221
  const effectiveHeaderHeight = isPureHeader ? 0 : headerHeight;
274
222
  const contentStickyTop = effectiveHeaderHeight + noticeHeight + (hasTabs ? stickyHeights.tabsBar : 0);
275
-
276
- // 为Header组件创建专门的props对象
277
223
  const headerProps = {
278
224
  headerHeight,
279
225
  pure,
@@ -284,21 +230,15 @@ const ProLayout = props => {
284
230
  logo,
285
231
  appsOptions
286
232
  };
287
-
288
- // 为Notice组件创建专门的props对象
289
233
  const noticeProps = {
290
234
  headerHeight: effectiveHeaderHeight,
291
235
  notice,
292
236
  onCancel: onCancelNotice,
293
237
  noticeRef: setNoticeElRef
294
238
  };
295
-
296
- // 为Menu组件创建专门的props对象
297
239
  const menuProps = {
298
240
  headerHeight,
299
- dataSource: Array.isArray(menus) ? {
300
- menus
301
- } : menus,
241
+ dataSource: Array.isArray(menus) ? { menus } : menus,
302
242
  iconfontUrl,
303
243
  collapsed,
304
244
  notice,
@@ -312,72 +252,74 @@ const ProLayout = props => {
312
252
  onMenuClick: handleMenuClick,
313
253
  appsOptions
314
254
  };
315
- const layoutDom = isIframePure ?
316
- /*#__PURE__*/
317
- /* iframe pure 模式:仅渲染 TabsManager 内容,不渲染 Header/Notice/Menu/tabsBar */
318
- _jsx("div", {
319
- className: classNames({
320
- 'pro-layout': true,
321
- 'pro-layout-light': true,
322
- 'pro-layout-iframe-pure': true,
323
- [`${className}`]: className
324
- }),
325
- children: renderContent()
326
- }) : /*#__PURE__*/_jsxs("div", {
327
- className: classNames({
328
- 'pro-layout': true,
329
- 'pro-layout-light': true,
330
- 'pro-layout-pure': typeof pure === 'boolean' ? pure : pure?.topMenu || pure?.leftMenu,
331
- [`${className}`]: className
332
- }),
333
- style: {
334
- '--header-bg-image': `url(${headerBg})`,
335
- '--pro-layout-header-height': `${effectiveHeaderHeight}px`,
336
- '--pro-layout-notice-height': `${noticeHeight}px`,
337
- '--pro-layout-content-sticky-top': `${contentStickyTop}px`
338
- },
339
- children: [/*#__PURE__*/_jsx(Header, {
340
- ...headerProps
341
- }), /*#__PURE__*/_jsx(Notice, {
342
- ...noticeProps
343
- }), /*#__PURE__*/_jsx("div", {
344
- ref: setTabsBarElRef,
345
- className: `pro-layout-tabs-bar-wrapper${hasTabs ? ' tabs-visible' : ''}${collapsed ? ' tabs-menu-open' : ''}`,
346
- style: {
347
- marginTop: effectiveHeaderHeight + noticeHeight
348
- }
349
- }), /*#__PURE__*/_jsxs("div", {
350
- className: contentCls,
351
- children: [/*#__PURE__*/_jsx(Menu, {
352
- ...menuProps
353
- }), /*#__PURE__*/_jsx("div", {
354
- className: `pro-layout-content${hasTabs ? ' pro-layout-content-has-tabs' : ''}`,
355
- style: {
356
- ...contentStyle,
357
- marginTop: 0
358
- },
255
+ const layoutDom = isIframePure ? (
256
+ /* iframe pure 模式:仅渲染 TabsManager 内容,不渲染 Header/Notice/Menu/tabsBar */
257
+ /* @__PURE__ */ jsx(
258
+ "div",
259
+ {
260
+ className: classNames({
261
+ "pro-layout": true,
262
+ "pro-layout-light": true,
263
+ "pro-layout-iframe-pure": true,
264
+ [`${className}`]: className
265
+ }),
359
266
  children: renderContent()
360
- })]
361
- })]
362
- });
363
- return /*#__PURE__*/_jsx(LayoutContext.Provider, {
364
- value: {
365
- selectedPath,
366
- target,
367
- onSelected: setState
368
- },
369
- children: !Object.keys(waterMarkProps)?.length ? layoutDom : /*#__PURE__*/_jsx(ProWaterMark, {
370
- ...waterMarkProps,
371
- children: layoutDom
372
- })
373
- });
267
+ }
268
+ )
269
+ ) : /* @__PURE__ */ jsxs(
270
+ "div",
271
+ {
272
+ className: classNames({
273
+ "pro-layout": true,
274
+ "pro-layout-light": true,
275
+ "pro-layout-pure": typeof pure === "boolean" ? pure : (pure == null ? void 0 : pure.topMenu) || (pure == null ? void 0 : pure.leftMenu),
276
+ [`${className}`]: className
277
+ }),
278
+ style: {
279
+ "--header-bg-image": `url(${headerBg})`,
280
+ "--pro-layout-header-height": `${effectiveHeaderHeight}px`,
281
+ "--pro-layout-notice-height": `${noticeHeight}px`,
282
+ "--pro-layout-content-sticky-top": `${contentStickyTop}px`
283
+ },
284
+ children: [
285
+ /* @__PURE__ */ jsx(Header, { ...headerProps }),
286
+ /* @__PURE__ */ jsx(Notice, { ...noticeProps }),
287
+ /* @__PURE__ */ jsx(
288
+ "div",
289
+ {
290
+ ref: setTabsBarElRef,
291
+ className: `pro-layout-tabs-bar-wrapper${hasTabs ? " tabs-visible" : ""}${collapsed ? " tabs-menu-open" : ""}`,
292
+ style: { marginTop: effectiveHeaderHeight + noticeHeight }
293
+ }
294
+ ),
295
+ /* @__PURE__ */ jsxs("div", { className: contentCls, children: [
296
+ /* @__PURE__ */ jsx(Menu, { ...menuProps }),
297
+ /* @__PURE__ */ jsx(
298
+ "div",
299
+ {
300
+ className: `pro-layout-content${hasTabs ? " pro-layout-content-has-tabs" : ""}`,
301
+ style: {
302
+ ...contentStyle,
303
+ marginTop: 0
304
+ },
305
+ children: renderContent()
306
+ }
307
+ )
308
+ ] })
309
+ ]
310
+ }
311
+ );
312
+ return /* @__PURE__ */ jsx(LayoutContext.Provider, { value: { selectedPath, target, onSelected: setState }, children: !((_a = Object.keys(waterMarkProps)) == null ? void 0 : _a.length) ? layoutDom : /* @__PURE__ */ jsx(ProWaterMark, { ...waterMarkProps, children: layoutDom }) });
374
313
  };
375
314
  ProLayout.ProCollapse = ProCollapse;
376
315
  ProLayout.ProFooter = ProFooter;
377
316
  ProLayout.ProHeader = ProHeader;
378
317
  ProLayout.useProLayoutTabs = useProLayoutTabs;
379
318
  ProLayout.useActiveTab = useActiveTab;
380
-
381
- // 同时导出Hook供直接使用
382
- export { useProLayoutTabs, useActiveTab };
383
- export default ProLayout;
319
+ var ProLayout_default = ProLayout;
320
+ export {
321
+ LayoutContext,
322
+ ProLayout_default as default,
323
+ useActiveTab,
324
+ useProLayoutTabs
325
+ };
@@ -1,55 +1,15 @@
1
- /**
2
- * @description 应用选项类型(无分组模式)
3
- */
4
-
5
- /**
6
- * @description 应用分组类型(分组模式)
7
- */
8
-
9
- /**
10
- * @description 是否带有菜单界面的配置
11
- */
12
-
13
- /**
14
- * @description 添加标签页的业务参数
15
- */
16
-
17
- /**
18
- * @description 添加标签页的选项
19
- */
20
-
21
- /**
22
- * @description 更新标签页的字段(仅允许更新展示与扩展数据)
23
- */
24
-
25
- /**
26
- * @description 获取标签页信息返回值
27
- */
28
-
29
- /**
30
- * @description ProLayout 标签页实例接口(类似 FormInstance)
31
- */
32
-
33
- /**
34
- * @description iframe 路由表配置项
35
- */
36
-
37
- /**
38
- * @description iframe 嵌入配置
39
- *
40
- * **触发条件**:URL query 上带 `?isIframe`(大小写不敏感,值不限,只看 key 是否存在)。
41
- * 第三方系统通过在 iframe src 上拼 `?isIframe=1` 来触发组件库的嵌入模式。
42
- *
43
- * 未带该 query 时(独立访问),即使配置了 `tabs.iframe`,组件库也完全不读取,
44
- * 维持完整 Layout 渲染。
45
- */
46
-
47
- export const isTabsMode = props => props.mode === 'tabs';
48
- export const validateTabsProps = (mode = 'normal', tabs) => {
49
- if (mode === 'tabs' && !tabs) {
50
- throw new Error('ProLayout: tabs configuration is required when mode="tabs",例如 <ProLayout mode="tabs" tabs={{ max: 10 }} />');
1
+ const isTabsMode = (props) => props.mode === "tabs";
2
+ const validateTabsProps = (mode = "normal", tabs) => {
3
+ if (mode === "tabs" && !tabs) {
4
+ throw new Error(
5
+ 'ProLayout: tabs configuration is required when mode="tabs",例如 <ProLayout mode="tabs" tabs={{ max: 10 }} />'
6
+ );
51
7
  }
52
- if (mode !== 'tabs' && tabs) {
8
+ if (mode !== "tabs" && tabs) {
53
9
  console.warn('ProLayout: tabs configuration is ignored because mode is not "tabs"');
54
10
  }
55
- };
11
+ };
12
+ export {
13
+ isTabsMode,
14
+ validateTabsProps
15
+ };