@gx-design-vue/pro-layout 0.1.0-alpha.2 → 0.1.0-alpha.21

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 (272) hide show
  1. package/dist/ProLayout.d.ts +4 -536
  2. package/dist/ProLayout.js +489 -358
  3. package/dist/components/AppPage/context.d.ts +4 -3
  4. package/dist/components/AppPage/context.js +3 -5
  5. package/dist/components/AppPage/index.d.ts +29 -52
  6. package/dist/components/AppPage/index.js +71 -54
  7. package/dist/components/AppPage/style.d.ts +8 -7
  8. package/dist/components/AppPage/style.js +16 -17
  9. package/dist/components/Breadcrumb/index.d.ts +19 -0
  10. package/dist/components/Breadcrumb/index.js +129 -0
  11. package/dist/components/Breadcrumb/interface.d.ts +33 -0
  12. package/dist/components/Breadcrumb/interface.js +1 -0
  13. package/dist/components/CollapseButton/Arrow.d.ts +4 -0
  14. package/dist/components/{SiderMenu → CollapseButton}/Arrow.js +2 -4
  15. package/dist/components/CollapseButton/index.d.ts +7 -0
  16. package/dist/components/CollapseButton/index.js +45 -0
  17. package/dist/components/CollapseButton/interface.d.ts +19 -0
  18. package/dist/components/CollapseButton/interface.js +1 -0
  19. package/dist/components/Footer/index.d.ts +10 -0
  20. package/dist/components/Footer/index.js +69 -0
  21. package/dist/components/Footer/interface.d.ts +22 -0
  22. package/dist/components/Footer/interface.js +1 -0
  23. package/dist/components/FooterToolbar/index.d.ts +5 -72
  24. package/dist/components/FooterToolbar/index.js +77 -90
  25. package/dist/components/FooterToolbar/style.d.ts +10 -0
  26. package/dist/components/FooterToolbar/style.js +34 -0
  27. package/dist/components/Header/index.d.ts +7 -0
  28. package/dist/components/Header/index.js +140 -0
  29. package/dist/components/Header/interface.d.ts +41 -0
  30. package/dist/components/Header/interface.js +1 -0
  31. package/dist/components/Logo/index.d.ts +9 -0
  32. package/dist/components/Logo/index.js +63 -0
  33. package/dist/components/Logo/interface.d.ts +13 -0
  34. package/dist/components/Logo/interface.js +1 -0
  35. package/dist/components/Menu/iconRender.d.ts +10 -0
  36. package/dist/components/Menu/iconRender.js +23 -0
  37. package/dist/components/Menu/index.d.ts +13 -0
  38. package/dist/components/Menu/index.js +778 -0
  39. package/dist/components/Menu/interface.d.ts +50 -0
  40. package/dist/components/Menu/interface.js +9 -0
  41. package/dist/components/Menu/overflow.d.ts +39 -0
  42. package/dist/components/Menu/overflow.js +81 -0
  43. package/dist/components/Menu/style/base.d.ts +12 -0
  44. package/dist/components/Menu/style/base.js +36 -0
  45. package/dist/components/Menu/style/horizontal.d.ts +19 -0
  46. package/dist/components/Menu/style/horizontal.js +303 -0
  47. package/dist/components/Menu/style/index.d.ts +356 -0
  48. package/dist/components/Menu/style/index.js +147 -0
  49. package/dist/components/Menu/style/inline.d.ts +13 -0
  50. package/dist/components/Menu/style/inline.js +292 -0
  51. package/dist/components/PageContainer/PageHeader.d.ts +30 -36
  52. package/dist/components/PageContainer/PageHeader.js +80 -46
  53. package/dist/components/PageContainer/index.d.ts +8 -194
  54. package/dist/components/PageContainer/index.js +297 -209
  55. package/dist/components/PageContainer/style.d.ts +5 -0
  56. package/dist/components/PageContainer/style.js +142 -0
  57. package/dist/components/PageTransition/animate.d.ts +41 -0
  58. package/dist/components/PageTransition/animate.js +106 -0
  59. package/dist/components/PageTransition/index.d.ts +57 -0
  60. package/dist/components/PageTransition/index.js +66 -0
  61. package/dist/components/{PageTranstion → PageTransition}/keyFrame/back.d.ts +4 -4
  62. package/dist/components/{PageTranstion → PageTransition}/keyFrame/back.js +2 -4
  63. package/dist/components/{PageTranstion → PageTransition}/keyFrame/bounce.d.ts +4 -4
  64. package/dist/components/{PageTranstion → PageTransition}/keyFrame/bounce.js +2 -4
  65. package/dist/components/{PageTranstion → PageTransition}/keyFrame/fade.d.ts +4 -4
  66. package/dist/components/{PageTranstion → PageTransition}/keyFrame/fade.js +2 -4
  67. package/dist/components/{PageTranstion → PageTransition}/keyFrame/flip.d.ts +4 -4
  68. package/dist/components/{PageTranstion → PageTransition}/keyFrame/flip.js +2 -4
  69. package/dist/components/{PageTranstion → PageTransition}/keyFrame/lightSpeed.d.ts +4 -4
  70. package/dist/components/{PageTranstion → PageTransition}/keyFrame/lightSpeed.js +2 -4
  71. package/dist/components/PageTransition/keyFrame/roll.d.ts +10 -0
  72. package/dist/components/{PageTranstion → PageTransition}/keyFrame/roll.js +2 -4
  73. package/dist/components/{PageTranstion → PageTransition}/keyFrame/rotate.d.ts +4 -4
  74. package/dist/components/{PageTranstion → PageTransition}/keyFrame/rotate.js +2 -4
  75. package/dist/components/{PageTranstion → PageTransition}/keyFrame/slide.d.ts +4 -4
  76. package/dist/components/{PageTranstion → PageTransition}/keyFrame/slide.js +2 -4
  77. package/dist/components/{PageTranstion → PageTransition}/keyFrame/zoom.d.ts +4 -4
  78. package/dist/components/{PageTranstion → PageTransition}/keyFrame/zoom.js +2 -4
  79. package/dist/components/PageTransition/style.d.ts +11 -0
  80. package/dist/components/{PageTranstion → PageTransition}/style.js +9 -13
  81. package/dist/components/Sider/index.d.ts +7 -0
  82. package/dist/components/Sider/index.js +206 -0
  83. package/dist/components/Sider/interface.d.ts +39 -0
  84. package/dist/components/Sider/interface.js +1 -0
  85. package/dist/components/Tabs/InnerTabs.d.ts +7 -0
  86. package/dist/components/Tabs/InnerTabs.js +117 -0
  87. package/dist/components/Tabs/contextMenu.d.ts +41 -0
  88. package/dist/components/Tabs/contextMenu.js +89 -0
  89. package/dist/components/Tabs/hooks/flipAnimate.d.ts +24 -0
  90. package/dist/components/Tabs/hooks/flipAnimate.js +40 -0
  91. package/dist/components/Tabs/hooks/useAutoScroll.d.ts +27 -0
  92. package/dist/components/Tabs/hooks/useAutoScroll.js +122 -0
  93. package/dist/components/Tabs/hooks/useTabDrag.d.ts +31 -0
  94. package/dist/components/Tabs/hooks/useTabDrag.js +252 -0
  95. package/dist/components/Tabs/index.d.ts +13 -0
  96. package/dist/components/Tabs/index.js +181 -0
  97. package/dist/components/Tabs/interface.d.ts +74 -0
  98. package/dist/components/Tabs/interface.js +1 -0
  99. package/dist/components/Tabs/style/index.d.ts +35 -0
  100. package/dist/components/Tabs/style/index.js +161 -0
  101. package/dist/components/WrapContent/index.d.ts +9 -0
  102. package/dist/components/WrapContent/index.js +26 -0
  103. package/dist/components/WrapContent/interface.d.ts +15 -0
  104. package/dist/components/WrapContent/interface.js +1 -0
  105. package/dist/context/index.d.ts +53 -0
  106. package/dist/context/index.js +5 -0
  107. package/dist/defaultConfig.d.ts +10 -0
  108. package/dist/defaultConfig.js +38 -0
  109. package/dist/hooks/useLayoutBase.d.ts +78 -0
  110. package/dist/hooks/useLayoutBase.js +86 -0
  111. package/dist/hooks/useMenu.d.ts +77 -0
  112. package/dist/hooks/useMenu.js +166 -0
  113. package/dist/hooks/useTabs.d.ts +54 -0
  114. package/dist/hooks/useTabs.js +388 -0
  115. package/dist/index.d.ts +22 -27
  116. package/dist/index.js +15 -24
  117. package/dist/interface.d.ts +516 -0
  118. package/dist/interface.js +34 -0
  119. package/dist/pro-layout.esm.js +5848 -5075
  120. package/dist/pro-layout.js +16 -37
  121. package/dist/style/breadcrumb.d.ts +8 -0
  122. package/dist/style/breadcrumb.js +77 -0
  123. package/dist/style/collapseButton.d.ts +8 -0
  124. package/dist/style/collapseButton.js +57 -0
  125. package/dist/style/content.d.ts +8 -0
  126. package/dist/style/content.js +29 -0
  127. package/dist/style/footer.d.ts +8 -0
  128. package/dist/style/footer.js +33 -0
  129. package/dist/style/header.d.ts +8 -0
  130. package/dist/style/header.js +76 -0
  131. package/dist/style/index.d.ts +3 -22
  132. package/dist/style/index.js +51 -55
  133. package/dist/style/logo.d.ts +8 -0
  134. package/dist/style/logo.js +76 -0
  135. package/dist/style/menu.d.ts +15 -0
  136. package/dist/style/menu.js +49 -0
  137. package/dist/style/rightContent.d.ts +12 -0
  138. package/dist/style/rightContent.js +74 -0
  139. package/dist/style/search.d.ts +12 -0
  140. package/dist/style/search.js +94 -0
  141. package/dist/style/sider.d.ts +8 -0
  142. package/dist/style/sider.js +92 -0
  143. package/dist/style/tabs.d.ts +14 -0
  144. package/dist/style/tabs.js +97 -0
  145. package/dist/theme/augment.d.ts +20 -0
  146. package/dist/theme/augment.js +1 -0
  147. package/dist/theme/interface/components.d.ts +20 -0
  148. package/dist/theme/interface/components.js +1 -0
  149. package/dist/utils/config.d.ts +12 -0
  150. package/dist/utils/config.js +18 -0
  151. package/dist/utils/menu.d.ts +111 -20
  152. package/dist/utils/menu.js +263 -118
  153. package/dist/utils/style.d.ts +4 -0
  154. package/dist/utils/style.js +21 -0
  155. package/dist/utils/themeComponents.d.ts +28 -0
  156. package/dist/utils/themeComponents.js +89 -0
  157. package/package.json +24 -15
  158. package/dist/Context/expose.d.ts +0 -6
  159. package/dist/Context/expose.js +0 -7
  160. package/dist/Context/index.d.ts +0 -43
  161. package/dist/Context/index.js +0 -18
  162. package/dist/WrapContent.d.ts +0 -100
  163. package/dist/WrapContent.js +0 -45
  164. package/dist/components/BaseMenu/index.d.ts +0 -255
  165. package/dist/components/BaseMenu/index.js +0 -381
  166. package/dist/components/BaseMenu/props.d.ts +0 -105
  167. package/dist/components/BaseMenu/props.js +0 -94
  168. package/dist/components/BaseMenu/style.d.ts +0 -6
  169. package/dist/components/BaseMenu/style.js +0 -155
  170. package/dist/components/BreadCrumb/Breadcrumb.d.ts +0 -33
  171. package/dist/components/BreadCrumb/Breadcrumb.js +0 -75
  172. package/dist/components/BreadCrumb/index.d.ts +0 -7
  173. package/dist/components/BreadCrumb/index.js +0 -44
  174. package/dist/components/BreadCrumb/style.d.ts +0 -8
  175. package/dist/components/BreadCrumb/style.js +0 -87
  176. package/dist/components/CollapsedIcon/index.d.ts +0 -33
  177. package/dist/components/CollapsedIcon/index.js +0 -51
  178. package/dist/components/CollapsedIcon/style.d.ts +0 -9
  179. package/dist/components/CollapsedIcon/style.js +0 -34
  180. package/dist/components/FooterToolbar/props.d.ts +0 -47
  181. package/dist/components/FooterToolbar/props.js +0 -33
  182. package/dist/components/FooterToolbar/style/index.d.ts +0 -14
  183. package/dist/components/FooterToolbar/style/index.js +0 -48
  184. package/dist/components/FooterToolbar/style/stylish.d.ts +0 -18
  185. package/dist/components/FooterToolbar/style/stylish.js +0 -16
  186. package/dist/components/GlobalFooter/index.d.ts +0 -73
  187. package/dist/components/GlobalFooter/index.js +0 -77
  188. package/dist/components/GlobalFooter/style.d.ts +0 -6
  189. package/dist/components/GlobalFooter/style.js +0 -29
  190. package/dist/components/GlobalHeader/DefaultHeader.d.ts +0 -164
  191. package/dist/components/GlobalHeader/DefaultHeader.js +0 -149
  192. package/dist/components/GlobalHeader/index.d.ts +0 -164
  193. package/dist/components/GlobalHeader/index.js +0 -78
  194. package/dist/components/GlobalHeader/props.d.ts +0 -70
  195. package/dist/components/GlobalHeader/props.js +0 -56
  196. package/dist/components/GlobalHeader/style/defaultHeader.d.ts +0 -6
  197. package/dist/components/GlobalHeader/style/defaultHeader.js +0 -108
  198. package/dist/components/GlobalHeader/style/header.d.ts +0 -6
  199. package/dist/components/GlobalHeader/style/header.js +0 -41
  200. package/dist/components/LogoContent/index.d.ts +0 -80
  201. package/dist/components/LogoContent/index.js +0 -90
  202. package/dist/components/LogoContent/props.d.ts +0 -57
  203. package/dist/components/LogoContent/props.js +0 -37
  204. package/dist/components/LogoContent/style.d.ts +0 -6
  205. package/dist/components/LogoContent/style.js +0 -63
  206. package/dist/components/PageContainer/props.d.ts +0 -138
  207. package/dist/components/PageContainer/props.js +0 -103
  208. package/dist/components/PageContainer/style/index.d.ts +0 -14
  209. package/dist/components/PageContainer/style/index.js +0 -52
  210. package/dist/components/PageContainer/style/pageHeader.d.ts +0 -6
  211. package/dist/components/PageContainer/style/pageHeader.js +0 -44
  212. package/dist/components/PageTranstion/index.d.ts +0 -40
  213. package/dist/components/PageTranstion/index.js +0 -71
  214. package/dist/components/PageTranstion/keyFrame/roll.d.ts +0 -10
  215. package/dist/components/PageTranstion/style.d.ts +0 -10
  216. package/dist/components/SiderMenu/Arrow.d.ts +0 -6
  217. package/dist/components/SiderMenu/SiderMenu.d.ts +0 -180
  218. package/dist/components/SiderMenu/SiderMenu.js +0 -265
  219. package/dist/components/SiderMenu/index.d.ts +0 -193
  220. package/dist/components/SiderMenu/index.js +0 -51
  221. package/dist/components/SiderMenu/props.d.ts +0 -77
  222. package/dist/components/SiderMenu/props.js +0 -67
  223. package/dist/components/SiderMenu/style/index.d.ts +0 -12
  224. package/dist/components/SiderMenu/style/index.js +0 -162
  225. package/dist/components/SiderMenu/typings.d.ts +0 -38
  226. package/dist/components/SiderMenu/typings.js +0 -1
  227. package/dist/components/TabsRoute/index.d.ts +0 -95
  228. package/dist/components/TabsRoute/index.js +0 -405
  229. package/dist/components/TabsRoute/props.d.ts +0 -78
  230. package/dist/components/TabsRoute/props.js +0 -47
  231. package/dist/components/TabsRoute/style.d.ts +0 -15
  232. package/dist/components/TabsRoute/style.js +0 -133
  233. package/dist/components/TabsRoute/utils/config.d.ts +0 -18
  234. package/dist/components/TabsRoute/utils/config.js +0 -64
  235. package/dist/config/animate.d.ts +0 -11
  236. package/dist/config/animate.js +0 -76
  237. package/dist/config/index.d.ts +0 -34
  238. package/dist/config/index.js +0 -30
  239. package/dist/hooks/collapsed/index.d.ts +0 -15
  240. package/dist/hooks/collapsed/index.js +0 -50
  241. package/dist/hooks/layout/useLayoutExpose.d.ts +0 -15
  242. package/dist/hooks/layout/useLayoutExpose.js +0 -22
  243. package/dist/hooks/layout/usePageContent.d.ts +0 -6
  244. package/dist/hooks/layout/usePageContent.js +0 -28
  245. package/dist/hooks/menu/context.d.ts +0 -21
  246. package/dist/hooks/menu/context.js +0 -7
  247. package/dist/hooks/menu/index.d.ts +0 -29
  248. package/dist/hooks/menu/index.js +0 -118
  249. package/dist/hooks/theme/index.d.ts +0 -11
  250. package/dist/hooks/theme/index.js +0 -13
  251. package/dist/props/collapsedProps.d.ts +0 -39
  252. package/dist/props/collapsedProps.js +0 -45
  253. package/dist/props/defaultSettings.d.ts +0 -62
  254. package/dist/props/defaultSettings.js +0 -56
  255. package/dist/props/index.d.ts +0 -226
  256. package/dist/props/index.js +0 -109
  257. package/dist/props/themeProps.d.ts +0 -14
  258. package/dist/props/themeProps.js +0 -10
  259. package/dist/types/Breadcrumb.d.ts +0 -22
  260. package/dist/types/Breadcrumb.js +0 -1
  261. package/dist/types/MenuTypings.d.ts +0 -46
  262. package/dist/types/MenuTypings.js +0 -1
  263. package/dist/types/RouteTypings.d.ts +0 -96
  264. package/dist/types/RouteTypings.js +0 -1
  265. package/dist/types/SlotsTypings.d.ts +0 -124
  266. package/dist/types/SlotsTypings.js +0 -32
  267. package/dist/types/typings.d.ts +0 -73
  268. package/dist/types/typings.js +0 -3
  269. package/dist/utils/index.d.ts +0 -7
  270. package/dist/utils/index.js +0 -17
  271. package/dist/utils/style/index.d.ts +0 -44
  272. package/dist/utils/style/index.js +0 -103
@@ -0,0 +1,292 @@
1
+ import { unit } from "@antdv-next/cssinjs";
2
+ //#region src/components/Menu/style/inline.ts
3
+ /**
4
+ * Inline 模式样式。
5
+ *
6
+ * 只处理 inline 模式结构、状态和侧边栏 token 映射。
7
+ */
8
+ const genInlineStyle = (token) => {
9
+ const { componentCls, antCls } = token;
10
+ const iconSize = unit(token.menuItemIconSize || token.iconSize || token.fontSize);
11
+ const collapsedIconSize = unit(token.collapsedIconSize || token.fontSizeLG);
12
+ const siderMenuItemHeight = token.siderMenuItemHeight || token.itemHeight || token.controlHeight;
13
+ const siderMenuItemMarginInline = token.siderMenuItemMarginInline ?? token.itemMarginInline ?? token.marginXXS;
14
+ const siderMenuItemMarginBlock = token.itemMarginBlock ?? token.marginXXS;
15
+ const siderMenuBasePadding = token.itemPaddingInline ?? token.paddingSM;
16
+ const siderMenuArrowSize = token.calc(token.fontSize).div(7).mul(5).equal();
17
+ const siderMenuArrowOffset = token.calc(siderMenuArrowSize).mul(.25).equal();
18
+ const siderMenuPaddingWithArrow = token.calc(siderMenuArrowSize).add(token.padding).add(token.marginXS).equal();
19
+ const siderMenuTitleGap = token.iconMarginInlineEnd ?? token.marginSM;
20
+ const activeBarWidth = token.activeBarWidth ?? 0;
21
+ const itemWidth = token.itemWidth || `calc(100% - ${unit(token.calc(siderMenuItemMarginInline).mul(2).equal())})`;
22
+ return {
23
+ [`${componentCls}-inline-collapsed-tooltip`]: {
24
+ pointerEvents: "none",
25
+ [`${componentCls}-icon, ${antCls}-icon`]: { display: "none" }
26
+ },
27
+ [`${componentCls}-inline`]: {
28
+ boxSizing: "border-box",
29
+ margin: 0,
30
+ padding: 0,
31
+ color: token.siderColorTextMenu || token.itemColor,
32
+ fontSize: token.fontSize,
33
+ lineHeight: 0,
34
+ listStyle: "none",
35
+ overflow: "hidden",
36
+ background: token.siderColorMenuBackground || token.itemBg || "transparent",
37
+ outline: "none",
38
+ transition: `width ${token.motionDurationSlow} cubic-bezier(0.2, 0, 0, 1) 0s`,
39
+ "ul, ol": {
40
+ margin: 0,
41
+ padding: 0,
42
+ listStyle: "none"
43
+ },
44
+ [`&${componentCls}-sub`]: {
45
+ /**
46
+ * overflow: hidden 创建 BFC,阻止父子 margin 折叠。
47
+ * 确保动画期间 scrollHeight 与最终渲染高度一致,
48
+ * 避免 afterEnter 清除 maxHeight 时产生高度跳变(抖动)。
49
+ */
50
+ overflow: "hidden",
51
+ background: token.siderColorMenuBackground || token.subMenuItemBg
52
+ },
53
+ [`&${componentCls}-popup-list`]: {
54
+ minWidth: token.dropdownWidth,
55
+ maxWidth: token.dropdownWidth,
56
+ maxHeight: `calc(100vh - ${unit(token.calc(token.controlHeightLG).mul(2.5).equal())})`,
57
+ padding: 0,
58
+ overflow: "hidden auto",
59
+ borderInlineEnd: 0,
60
+ background: token.siderColorBgMenuItemCollapsedElevated || token.popupBg
61
+ },
62
+ [`${componentCls}-node`]: {
63
+ margin: 0,
64
+ padding: 0,
65
+ listStyle: "none"
66
+ },
67
+ [`${componentCls}-item`]: {
68
+ position: "relative",
69
+ display: "flex",
70
+ alignItems: "center",
71
+ boxSizing: "border-box",
72
+ width: itemWidth,
73
+ height: siderMenuItemHeight,
74
+ minHeight: siderMenuItemHeight,
75
+ marginBlock: siderMenuItemMarginBlock,
76
+ marginInline: siderMenuItemMarginInline,
77
+ paddingInlineStart: `calc(${unit(siderMenuBasePadding)} + var(--pro-menu-level, 0) * var(--pro-menu-indent, 24px))`,
78
+ paddingInlineEnd: siderMenuBasePadding,
79
+ overflow: "hidden",
80
+ color: token.siderColorTextMenu || token.itemColor,
81
+ lineHeight: unit(siderMenuItemHeight),
82
+ whiteSpace: "nowrap",
83
+ textOverflow: "ellipsis",
84
+ cursor: "pointer",
85
+ borderRadius: token.siderBorderRadius ?? token.itemBorderRadius,
86
+ transition: [
87
+ `border-color ${token.motionDurationSlow}`,
88
+ `color ${token.motionDurationSlow}`,
89
+ `background-color ${token.motionDurationSlow}`,
90
+ `padding ${token.motionDurationFast} ${token.motionEaseOut}`
91
+ ].join(","),
92
+ "&::after": {
93
+ position: "absolute",
94
+ insetBlock: 0,
95
+ insetInlineEnd: 0,
96
+ borderInlineEnd: `${unit(activeBarWidth)} solid ${token.itemSelectedColor}`,
97
+ transform: "scaleY(0.0001)",
98
+ opacity: 0,
99
+ transition: ["transform", "opacity"].map((prop) => `${prop} ${token.motionDurationMid} ${token.motionEaseOut}`).join(","),
100
+ content: "\"\""
101
+ },
102
+ [`&:not(${componentCls}-item-selected):not(${componentCls}-item-active):hover`]: {
103
+ color: token.siderColorTextMenuItemHover || token.itemHoverColor,
104
+ backgroundColor: token.siderColorBgMenuItemHover || token.itemHoverBg
105
+ },
106
+ [`&:not(${componentCls}-item-selected):not(${componentCls}-item-active):active`]: { backgroundColor: token.siderColorBgMenuItemActive || token.itemActiveBg },
107
+ "&:focus-visible": {
108
+ outline: `${unit(token.lineWidthFocus)} solid ${token.colorPrimaryBorder}`,
109
+ outlineOffset: 1
110
+ },
111
+ [`&${componentCls}-item-active`]: { color: token.siderColorTextSubMenuSelected || token.siderColorTextMenuSelected || token.subMenuItemSelectedColor },
112
+ [`&${componentCls}-item-selected`]: {
113
+ color: token.siderColorTextMenuSelected || token.itemSelectedColor,
114
+ backgroundColor: token.siderColorBgMenuItemSelected || token.itemSelectedBg,
115
+ "&::after": {
116
+ transform: "scaleY(1)",
117
+ opacity: 1,
118
+ transition: ["transform", "opacity"].map((prop) => `${prop} ${token.motionDurationMid} ${token.motionEaseInOut}`).join(",")
119
+ }
120
+ },
121
+ [`&${componentCls}-item-disabled`]: {
122
+ color: `${token.itemDisabledColor || token.colorTextDisabled} !important`,
123
+ background: "none !important",
124
+ cursor: "not-allowed",
125
+ "&::after": { borderColor: "transparent !important" }
126
+ },
127
+ [`&${componentCls}-item-collapsed`]: {
128
+ justifyContent: "center",
129
+ paddingInline: `calc(50% - ${iconSize} / 2 - ${unit(siderMenuItemMarginInline)})`,
130
+ textOverflow: "clip"
131
+ },
132
+ "> *": { flex: "none" }
133
+ },
134
+ [`${componentCls}-submenu-title`]: {
135
+ paddingInlineEnd: siderMenuPaddingWithArrow,
136
+ [`&:not(${componentCls}-item-selected):not(${componentCls}-item-active):not(${componentCls}-item-disabled):hover`]: {
137
+ color: token.siderColorTextMenuItemHover || token.itemHoverColor,
138
+ backgroundColor: token.siderColorBgMenuItemHover || token.itemHoverBg
139
+ },
140
+ [`&:not(${componentCls}-item-selected):not(${componentCls}-item-active):not(${componentCls}-item-disabled):active`]: { backgroundColor: token.siderColorBgMenuItemActive || token.itemActiveBg }
141
+ },
142
+ [`${componentCls}-submenu-active > ${componentCls}-submenu-title`]: { color: token.siderColorTextSubMenuSelected || token.siderColorTextMenuSelected || token.subMenuItemSelectedColor },
143
+ [`${componentCls}-icon`]: {
144
+ display: "inline-flex",
145
+ flex: "none",
146
+ alignItems: "center",
147
+ justifyContent: "center",
148
+ minWidth: iconSize,
149
+ height: iconSize,
150
+ marginInlineEnd: siderMenuTitleGap,
151
+ color: "currentcolor",
152
+ fontSize: iconSize,
153
+ lineHeight: iconSize,
154
+ transition: [
155
+ `font-size ${token.motionDurationMid} ${token.motionEaseOut}`,
156
+ `margin ${token.motionDurationSlow} ${token.motionEaseInOut}`,
157
+ `color ${token.motionDurationSlow}`
158
+ ].join(","),
159
+ img: {
160
+ width: iconSize,
161
+ height: iconSize,
162
+ objectFit: "contain"
163
+ }
164
+ },
165
+ [`${componentCls}-item-collapsed ${componentCls}-icon`]: {
166
+ marginInlineEnd: 0,
167
+ fontSize: collapsedIconSize
168
+ },
169
+ [`${componentCls}-title`]: {
170
+ flex: "auto",
171
+ minWidth: 0,
172
+ overflow: "hidden",
173
+ textOverflow: "ellipsis",
174
+ whiteSpace: "nowrap",
175
+ transition: [
176
+ `opacity ${token.motionDurationSlow} ${token.motionEaseInOut}`,
177
+ `margin ${token.motionDurationSlow}`,
178
+ `color ${token.motionDurationSlow}`
179
+ ].join(",")
180
+ },
181
+ [`${componentCls}-extra`]: {
182
+ flex: "none",
183
+ marginInlineStart: "auto",
184
+ paddingInlineStart: token.padding,
185
+ color: token.siderColorTextMenuSecondary || token.groupTitleColor || token.colorTextDescription
186
+ },
187
+ [`${componentCls}-arrow`]: {
188
+ position: "absolute",
189
+ top: "50%",
190
+ insetInlineEnd: token.margin,
191
+ width: siderMenuArrowSize,
192
+ color: "currentcolor",
193
+ transform: "translateY(-50%)",
194
+ transition: ["transform", "opacity"].map((prop) => `${prop} ${token.motionDurationSlow}`).join(","),
195
+ "&::before, &::after": {
196
+ position: "absolute",
197
+ width: token.calc(siderMenuArrowSize).mul(.6).equal(),
198
+ height: token.calc(siderMenuArrowSize).mul(.15).equal(),
199
+ backgroundColor: "currentcolor",
200
+ borderRadius: token.borderRadius,
201
+ transition: [
202
+ "background-color",
203
+ "transform",
204
+ "top",
205
+ "color"
206
+ ].map((prop) => `${prop} ${token.motionDurationSlow} ${token.motionEaseInOut}`).join(","),
207
+ content: "\"\""
208
+ },
209
+ "&::before": { transform: `rotate(-45deg) translateX(${unit(siderMenuArrowOffset)})` },
210
+ "&::after": { transform: `rotate(45deg) translateX(${unit(token.calc(siderMenuArrowOffset).mul(-1).equal())})` }
211
+ },
212
+ [`${componentCls}-item-open ${componentCls}-arrow`]: {
213
+ transform: `translateY(${unit(token.calc(siderMenuArrowSize).mul(.2).mul(-1).equal())})`,
214
+ "&::before": { transform: `rotate(45deg) translateX(${unit(siderMenuArrowOffset)})` },
215
+ "&::after": { transform: `rotate(-45deg) translateX(${unit(token.calc(siderMenuArrowOffset).mul(-1).equal())})` }
216
+ },
217
+ [`${componentCls}-submenu-title-popup ${componentCls}-arrow`]: {
218
+ transform: "translateY(-50%)",
219
+ "&::before": { transform: `rotate(45deg) translateY(${unit(token.calc(siderMenuArrowOffset).mul(-1).equal())})` },
220
+ "&::after": { transform: `rotate(-45deg) translateY(${unit(siderMenuArrowOffset)})` }
221
+ },
222
+ [`${componentCls}-group-title`]: {
223
+ boxSizing: "border-box",
224
+ paddingBlock: token.paddingXXS,
225
+ paddingInlineStart: `calc(${unit(siderMenuBasePadding)} + var(--pro-menu-level, 0) * var(--pro-menu-indent, 24px))`,
226
+ paddingInlineEnd: token.padding,
227
+ color: token.siderColorTextMenuTitle || token.groupTitleColor || token.colorTextLabel,
228
+ fontSize: token.groupTitleFontSize || token.fontSizeSM,
229
+ lineHeight: token.groupTitleLineHeight || token.lineHeightSM
230
+ },
231
+ [`${componentCls}-divider`]: {
232
+ overflow: "hidden",
233
+ lineHeight: 0,
234
+ borderColor: token.colorSplit,
235
+ borderStyle: token.lineType,
236
+ borderWidth: 0,
237
+ borderTopWidth: token.lineWidth,
238
+ marginBlock: token.lineWidth,
239
+ marginInline: token.marginSM,
240
+ padding: 0
241
+ }
242
+ },
243
+ [`${componentCls}-inline-popover${antCls}-popover`]: {
244
+ borderRadius: token.borderRadiusLG,
245
+ boxShadow: "none",
246
+ transformOrigin: "0 0",
247
+ zIndex: token.zIndexPopup,
248
+ [`&${componentCls}-submenu-placement-rightTop`]: { paddingInlineStart: token.paddingXS },
249
+ [`&${componentCls}-submenu-placement-nested`]: { paddingInlineStart: token.marginXXS },
250
+ [`${antCls}-popover-container`]: {
251
+ padding: 0,
252
+ background: "transparent",
253
+ borderRadius: token.borderRadiusLG,
254
+ boxShadow: "none"
255
+ },
256
+ [`${antCls}-popover-content`]: {
257
+ padding: 0,
258
+ background: "transparent"
259
+ },
260
+ [`${componentCls}-popover-content,${componentCls}-popover-container`]: {
261
+ padding: 0,
262
+ background: "transparent"
263
+ },
264
+ [`${componentCls}-submenu-popup`]: {
265
+ position: "relative",
266
+ borderRadius: token.borderRadiusLG,
267
+ background: "transparent",
268
+ "&::before": {
269
+ position: "absolute",
270
+ inset: 0,
271
+ zIndex: -1,
272
+ width: "100%",
273
+ height: "100%",
274
+ opacity: 0,
275
+ content: "\"\""
276
+ },
277
+ [`> ${componentCls}`]: {
278
+ borderRadius: token.borderRadiusLG,
279
+ boxShadow: token.boxShadowSecondary,
280
+ backgroundColor: token.siderColorBgMenuItemCollapsedElevated || token.popupBg
281
+ }
282
+ },
283
+ [`${componentCls}-popup-list ${componentCls}-item, ${componentCls}-popup-list ${componentCls}-submenu-title`]: { borderRadius: token.subMenuItemBorderRadius }
284
+ },
285
+ [`${componentCls}-collapse-enter-active, ${componentCls}-collapse-leave-active`]: {
286
+ overflow: "hidden",
287
+ transition: `max-height ${token.motionDurationMid} ${token.motionEaseInOut}`
288
+ }
289
+ };
290
+ };
291
+ //#endregion
292
+ export { genInlineStyle as default };
@@ -1,39 +1,33 @@
1
- import { DefaultRender } from "../../types/SlotsTypings.js";
2
- import * as vue46 from "vue";
3
- import { PropType } from "vue";
4
- import * as ant_design_vue_es__util_type2 from "ant-design-vue/es/_util/type";
1
+ import { BreadcrumbItemType, LayoutBreadcrumbConfig, LayoutBreadcrumbSlotProps, LayoutMenuRoute, PageContainerClassNamesType, PageContainerStylesType } from "../../interface.js";
2
+ import { SlotsType } from "vue";
5
3
 
6
4
  //#region src/components/PageContainer/PageHeader.d.ts
7
- declare const _default: vue46.DefineComponent<vue46.ExtractPropTypes<{
8
- close: {
9
- type: PropType<boolean>;
10
- default: any;
11
- };
12
- style: {
13
- type: PropType<vue46.CSSProperties>;
14
- default: () => any;
15
- };
16
- content: {
17
- type: PropType<DefaultRender>;
18
- default: () => any;
19
- };
20
- }>, () => ant_design_vue_es__util_type2.VueNode, {}, {}, {}, vue46.ComponentOptionsMixin, vue46.ComponentOptionsMixin, {}, string, vue46.PublicProps, Readonly<vue46.ExtractPropTypes<{
21
- close: {
22
- type: PropType<boolean>;
23
- default: any;
24
- };
25
- style: {
26
- type: PropType<vue46.CSSProperties>;
27
- default: () => any;
28
- };
29
- content: {
30
- type: PropType<DefaultRender>;
31
- default: () => any;
32
- };
33
- }>> & Readonly<{}>, {
34
- content: DefaultRender;
35
- style: vue46.CSSProperties;
36
- close: boolean;
37
- }, {}, {}, {}, string, vue46.ComponentProvideOptions, true, {}, any>;
5
+ interface PageHeaderProps {
6
+ /** PageContainer 传入的 prefixCls,用于生成 class 名 */
7
+ prefixCls: string;
8
+ /** 标题 */
9
+ title?: string;
10
+ /** 面包屑配置 */
11
+ breadcrumbConfig: LayoutBreadcrumbConfig | null;
12
+ /** 面包屑数据 */
13
+ breadcrumbItems: BreadcrumbItemType[];
14
+ breadcrumbRoutes: LayoutMenuRoute[];
15
+ /** 语义样式 */
16
+ proStyles?: PageContainerStylesType;
17
+ proClasses?: PageContainerClassNamesType;
18
+ }
19
+ interface PageHeaderSlots {
20
+ headerContent?: () => any;
21
+ extra?: () => any;
22
+ breadcrumb?: (props: LayoutBreadcrumbSlotProps) => any;
23
+ }
24
+ /**
25
+ * PageHeader —— PageContainer 内部的页头子组件。
26
+ * 负责渲染:面包屑行 + 标题行(标题 + headerContent + extra)+ 全屏关闭按钮。
27
+ * 所有渲染所需数据通过 props 传入,不自行读取 layout context。
28
+ */
29
+ declare const PageHeader: import("vue").DefineSetupFnComponent<PageHeaderProps, Record<string, never>, SlotsType<PageHeaderSlots>, PageHeaderProps & {
30
+ [x: `on${Capitalize<string>}`]: (...args: unknown[]) => any;
31
+ }, import("vue").PublicProps>;
38
32
  //#endregion
39
- export { _default as default };
33
+ export { PageHeader as default };
@@ -1,53 +1,87 @@
1
- import { useProLayoutContext } from "../../Context/index.js";
2
- import BreadCrumb_default from "../BreadCrumb/index.js";
3
- import { pageContainerProps } from "./props.js";
4
- import { ProLayoutPageHeader } from "./style/pageHeader.js";
1
+ import Breadcrumb from "../Breadcrumb/index.js";
5
2
  import { createVNode, defineComponent } from "vue";
6
- import { useProStyle } from "@gx-design-vue/pro-provider";
7
- import { classNames, getPrefixCls } from "@gx-design-vue/pro-utils";
8
- import { CloseOutlined } from "@ant-design/icons-vue";
9
-
3
+ import { classNames } from "@gx-design-vue/pro-utils";
10
4
  //#region src/components/PageContainer/PageHeader.tsx
11
- var PageHeader_default = /* @__PURE__ */ defineComponent({
12
- name: "ProPageHeader",
5
+ /**
6
+ * PageHeader —— PageContainer 内部的页头子组件。
7
+ * 负责渲染:面包屑行 + 标题行(标题 + headerContent + extra)+ 全屏关闭按钮。
8
+ * 所有渲染所需数据通过 props 传入,不自行读取 layout context。
9
+ */
10
+ const PageHeader = /* @__PURE__ */ defineComponent((props, { slots }) => {
11
+ function renderBreadcrumb() {
12
+ if (!props.breadcrumbConfig) return null;
13
+ const items = props.breadcrumbItems;
14
+ const routes = props.breadcrumbRoutes;
15
+ const prefixCls = props.prefixCls;
16
+ if (slots.breadcrumb) return createVNode("div", {
17
+ "class": classNames(`${prefixCls}-breadcrumb`, props.proClasses?.breadcrumb),
18
+ "style": props.proStyles?.breadcrumb
19
+ }, [slots.breadcrumb?.({
20
+ items,
21
+ routes
22
+ })]);
23
+ if (routes.length === 0) return null;
24
+ return createVNode("div", {
25
+ "class": classNames(`${prefixCls}-breadcrumb`, props.proClasses?.breadcrumb),
26
+ "style": props.proStyles?.breadcrumb
27
+ }, [createVNode(Breadcrumb, null, null)]);
28
+ }
29
+ return () => {
30
+ const breadcrumbNode = (!props.breadcrumbConfig ? void 0 : props.breadcrumbConfig.placement) === "pageHeader" ? renderBreadcrumb() : null;
31
+ const headerContentNode = slots.headerContent?.();
32
+ const extraNode = slots.extra?.();
33
+ const hasTop = breadcrumbNode;
34
+ const hasHeading = props.title || headerContentNode || extraNode;
35
+ if (!hasTop && !hasHeading) return null;
36
+ const prefixCls = props.prefixCls;
37
+ return createVNode("div", {
38
+ "class": classNames(`${prefixCls}-header`, props.proClasses?.header),
39
+ "style": props.proStyles?.header
40
+ }, [hasTop && createVNode("div", { "class": `${prefixCls}-header-top` }, [breadcrumbNode]), hasHeading && createVNode("div", { "class": `${prefixCls}-header-heading` }, [
41
+ props.title && createVNode("h4", {
42
+ "class": classNames(`${prefixCls}-title`, props.proClasses?.title),
43
+ "style": props.proStyles?.title
44
+ }, [props.title]),
45
+ headerContentNode,
46
+ extraNode && createVNode("div", {
47
+ "class": classNames(`${prefixCls}-extra`, props.proClasses?.extra),
48
+ "style": props.proStyles?.extra
49
+ }, [extraNode])
50
+ ])]);
51
+ };
52
+ }, {
13
53
  props: {
14
- close: {
15
- type: Boolean,
16
- default: void 0
54
+ prefixCls: {
55
+ type: String,
56
+ required: true
57
+ },
58
+ title: {
59
+ type: String,
60
+ required: false
61
+ },
62
+ breadcrumbConfig: {
63
+ type: [Object, null],
64
+ required: true
65
+ },
66
+ breadcrumbItems: {
67
+ type: Array,
68
+ required: true
17
69
  },
18
- style: pageContainerProps.pageHeaderStyle,
19
- content: pageContainerProps.pageHeaderContentRender
70
+ breadcrumbRoutes: {
71
+ type: Array,
72
+ required: true
73
+ },
74
+ proStyles: {
75
+ type: Object,
76
+ required: false
77
+ },
78
+ proClasses: {
79
+ type: Object,
80
+ required: false
81
+ }
20
82
  },
21
- setup(props) {
22
- const layoutContext = useProLayoutContext();
23
- const baseClassName = (layoutContext?.getPrefixCls || getPrefixCls)({
24
- isPor: true,
25
- suffixCls: "page-header"
26
- });
27
- const { wrapSSR, hashId } = useProStyle("ProPageHeader", [ProLayoutPageHeader], baseClassName);
28
- return () => {
29
- const hasBreadcrumb = layoutContext?.breadcrumb?.value?.position === "pageHeader";
30
- return wrapSSR(createVNode("div", {
31
- "class": [
32
- `${baseClassName}`,
33
- hashId.value,
34
- hasBreadcrumb && `${baseClassName}-has-breadcrumb`
35
- ],
36
- "style": props.style
37
- }, [layoutContext?.breadcrumb?.value?.position === "pageHeader" && layoutContext?.breadcrumb?.value?.visible && createVNode("div", { "class": classNames(`${baseClassName}-top`, hashId.value) }, [createVNode(BreadCrumb_default, null, null), layoutContext?.contentFullScreen?.value && props.close && createVNode("div", {
38
- "class": [`${baseClassName}-close`, hashId.value],
39
- "onClick": () => {
40
- if (layoutContext) layoutContext.contentFullScreen.value = false;
41
- }
42
- }, [createVNode(CloseOutlined, { "class": [`${baseClassName}-close-x`, hashId.value] }, null)])]), props.content && createVNode("div", { "class": [`${baseClassName}-content`, hashId.value] }, [props.content, layoutContext?.contentFullScreen?.value && props.close && layoutContext?.breadcrumb?.value?.position !== "pageHeader" && createVNode("div", {
43
- "class": [`${baseClassName}-close`, hashId.value],
44
- "onClick": () => {
45
- if (layoutContext) layoutContext.contentFullScreen.value = false;
46
- }
47
- }, [createVNode(CloseOutlined, { "class": [`${baseClassName}-close-x`, hashId.value] }, null)])])]));
48
- };
49
- }
83
+ name: "ProPageHeader",
84
+ inheritAttrs: false
50
85
  });
51
-
52
86
  //#endregion
53
- export { PageHeader_default as default };
87
+ export { PageHeader as default };