@jetlinks-web/components 2.0.2 → 2.0.3

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 (237) hide show
  1. package/es/AMap/Map.js +124 -0
  2. package/es/AMap/index.js +2 -0
  3. package/es/AMap/util.js +56 -0
  4. package/es/BadgeStatus/Badge.js +54 -0
  5. package/es/BadgeStatus/color.js +21 -0
  6. package/es/BadgeStatus/index.js +3 -0
  7. package/es/CardSelect/CardSelect.js +123 -0
  8. package/es/CardSelect/index.js +2 -0
  9. package/es/CheckButton/CheckButton.js +121 -0
  10. package/es/CheckButton/index.js +2 -0
  11. package/es/ConfigProvider/context.js +12 -0
  12. package/es/ConfigProvider/index.js +31 -0
  13. package/es/Echarts/Echarts.js +47 -0
  14. package/es/Echarts/index.js +2 -0
  15. package/es/Ellipsis/Ellipsis.js +189 -0
  16. package/es/Ellipsis/index.js +2 -0
  17. package/es/Empty/Empty.js +56 -0
  18. package/es/Empty/image.js +2 -0
  19. package/es/Empty/index.js +2 -0
  20. package/es/FullPage/FullPage.js +31 -0
  21. package/es/FullPage/index.js +2 -0
  22. package/es/Icon/icon.js +42 -0
  23. package/{src/Icon/index.ts → es/Icon/index.js} +2 -3
  24. package/es/MonacoEditor/Monaco.js +238 -0
  25. package/es/MonacoEditor/index.js +2 -0
  26. package/es/PermissionButton/index.js +117 -0
  27. package/es/ProLayout/Basic/BasicLayout.js +259 -0
  28. package/es/ProLayout/Basic/Header.js +97 -0
  29. package/es/ProLayout/PageContainer/index.js +324 -0
  30. package/es/ProLayout/PageContainer/typings.js +1 -0
  31. package/es/ProLayout/RouteContext.js +22 -0
  32. package/es/ProLayout/SiderMenu/BaseMenu.js +285 -0
  33. package/es/ProLayout/SiderMenu/SiderMenu.js +278 -0
  34. package/es/ProLayout/SiderMenu/index.js +2 -0
  35. package/es/ProLayout/SiderMenu/typings.js +1 -0
  36. package/es/ProLayout/TopHeader/index.js +163 -0
  37. package/es/ProLayout/defaultSettings.js +66 -0
  38. package/{src/ProLayout/index.ts → es/ProLayout/index.js} +4 -6
  39. package/{src → es}/ProLayout/style/default.less +4 -4
  40. package/es/ProLayout/style/index.js +1 -0
  41. package/es/ProLayout/typings.js +1 -0
  42. package/es/ProLayout/util.js +61 -0
  43. package/es/ProTable/index.js +411 -0
  44. package/es/ProTable/proTableTypes.js +11 -0
  45. package/es/ProTable/style/index.css +65 -0
  46. package/es/ProTable/style/index.js +1 -0
  47. package/es/Scrollbar/Bar.js +114 -0
  48. package/es/Scrollbar/Scrollbar.js +212 -0
  49. package/es/Scrollbar/Thumb.js +189 -0
  50. package/es/Scrollbar/constants.js +1 -0
  51. package/es/Scrollbar/index.js +2 -0
  52. package/es/Scrollbar/scrollbarProps.js +100 -0
  53. package/es/Scrollbar/thumbProps.js +10 -0
  54. package/es/Scrollbar/util.js +30 -0
  55. package/es/Search/Advanced/History.js +183 -0
  56. package/es/Search/Advanced/SaveHistory.js +153 -0
  57. package/es/Search/Advanced/index.js +520 -0
  58. package/es/Search/Item.js +497 -0
  59. package/es/Search/Search.js +249 -0
  60. package/es/Search/hooks/index.js +1 -0
  61. package/es/Search/hooks/useSearchItems.js +40 -0
  62. package/es/Search/index.js +4 -0
  63. package/es/Search/setting.js +91 -0
  64. package/es/Search/style/Item.less +33 -0
  65. package/es/Search/style/Search.less +179 -0
  66. package/es/Search/style/index.js +2 -0
  67. package/es/Search/typing.js +1 -0
  68. package/es/Search/util.js +234 -0
  69. package/es/ValueItem/ValueItem.js +233 -0
  70. package/es/ValueItem/index.js +2 -0
  71. package/es/ValueItem/util.js +16 -0
  72. package/es/index.js +24 -0
  73. package/es/style/index.js +3 -0
  74. package/es/style/variable.css +0 -0
  75. package/{src → es}/style/variable.less +0 -2
  76. package/es/style.js +3 -0
  77. package/lib/AMap/Map.js +124 -0
  78. package/lib/AMap/index.js +9 -0
  79. package/lib/AMap/util.js +62 -0
  80. package/lib/BadgeStatus/Badge.js +54 -0
  81. package/lib/BadgeStatus/color.js +27 -0
  82. package/lib/BadgeStatus/index.js +22 -0
  83. package/lib/CardSelect/CardSelect.js +123 -0
  84. package/lib/CardSelect/index.js +9 -0
  85. package/lib/CheckButton/CheckButton.js +121 -0
  86. package/lib/CheckButton/index.js +9 -0
  87. package/lib/ConfigProvider/context.js +19 -0
  88. package/lib/ConfigProvider/index.js +37 -0
  89. package/lib/Echarts/Echarts.js +47 -0
  90. package/lib/Echarts/index.js +9 -0
  91. package/lib/Ellipsis/Ellipsis.js +189 -0
  92. package/lib/Ellipsis/index.js +9 -0
  93. package/lib/Empty/Empty.js +56 -0
  94. package/lib/Empty/image.js +8 -0
  95. package/lib/Empty/index.js +9 -0
  96. package/lib/FullPage/FullPage.js +31 -0
  97. package/lib/FullPage/index.js +9 -0
  98. package/lib/Icon/icon.js +52 -0
  99. package/lib/Icon/index.js +9 -0
  100. package/lib/MonacoEditor/Monaco.js +238 -0
  101. package/lib/MonacoEditor/index.js +9 -0
  102. package/lib/PermissionButton/index.js +124 -0
  103. package/lib/ProLayout/Basic/BasicLayout.js +268 -0
  104. package/lib/ProLayout/Basic/BasicLayout.less +66 -0
  105. package/lib/ProLayout/Basic/Header.js +103 -0
  106. package/lib/ProLayout/Basic/Header.less +8 -0
  107. package/lib/ProLayout/PageContainer/index.js +327 -0
  108. package/lib/ProLayout/PageContainer/index.less +103 -0
  109. package/lib/ProLayout/PageContainer/typings.js +5 -0
  110. package/lib/ProLayout/RouteContext.js +28 -0
  111. package/lib/ProLayout/SiderMenu/BaseMenu.js +290 -0
  112. package/lib/ProLayout/SiderMenu/SiderMenu.js +287 -0
  113. package/lib/ProLayout/SiderMenu/index.js +20 -0
  114. package/lib/ProLayout/SiderMenu/index.less +212 -0
  115. package/lib/ProLayout/SiderMenu/typings.js +5 -0
  116. package/lib/ProLayout/TopHeader/index.js +168 -0
  117. package/lib/ProLayout/TopHeader/index.less +174 -0
  118. package/lib/ProLayout/defaultSettings.js +72 -0
  119. package/lib/ProLayout/index.js +16 -0
  120. package/lib/ProLayout/style/default.less +4 -0
  121. package/lib/ProLayout/style/index.js +3 -0
  122. package/lib/ProLayout/style/style.less +7 -0
  123. package/lib/ProLayout/typings.js +5 -0
  124. package/lib/ProLayout/util.js +72 -0
  125. package/lib/ProTable/index.js +417 -0
  126. package/lib/ProTable/proTableTypes.js +17 -0
  127. package/lib/ProTable/style/index.css +65 -0
  128. package/lib/ProTable/style/index.js +3 -0
  129. package/lib/ProTable/style/index.less +92 -0
  130. package/lib/Scrollbar/Bar.js +114 -0
  131. package/lib/Scrollbar/Scrollbar.js +212 -0
  132. package/lib/Scrollbar/Thumb.js +189 -0
  133. package/lib/Scrollbar/constants.js +7 -0
  134. package/lib/Scrollbar/index.js +9 -0
  135. package/{src/Scrollbar/scrollbar.ts → lib/Scrollbar/scrollbarProps.js} +106 -108
  136. package/lib/Scrollbar/thumbProps.js +16 -0
  137. package/lib/Scrollbar/util.js +37 -0
  138. package/lib/Search/Advanced/History.js +183 -0
  139. package/lib/Search/Advanced/SaveHistory.js +153 -0
  140. package/lib/Search/Advanced/index.js +520 -0
  141. package/lib/Search/Item.js +497 -0
  142. package/lib/Search/Search.js +249 -0
  143. package/lib/Search/hooks/index.js +16 -0
  144. package/lib/Search/hooks/useSearchItems.js +47 -0
  145. package/lib/Search/index.js +16 -0
  146. package/lib/Search/setting.js +97 -0
  147. package/lib/Search/style/Item.less +33 -0
  148. package/lib/Search/style/Search.less +179 -0
  149. package/lib/Search/style/index.js +4 -0
  150. package/lib/Search/typing.js +5 -0
  151. package/lib/Search/util.js +241 -0
  152. package/lib/ValueItem/ValueItem.js +233 -0
  153. package/lib/ValueItem/index.js +9 -0
  154. package/lib/ValueItem/util.js +22 -0
  155. package/lib/index.js +158 -0
  156. package/lib/style/components.less +1 -0
  157. package/lib/style/index.js +4 -0
  158. package/lib/style/variable.css +0 -0
  159. package/lib/style/variable.less +2 -0
  160. package/lib/style.js +5 -0
  161. package/package.json +122 -13
  162. package/index.ts +0 -64
  163. package/src/AMap/Map.vue +0 -110
  164. package/src/AMap/index.ts +0 -1
  165. package/src/AMap/util.ts +0 -56
  166. package/src/BadgeStatus/Badge.vue +0 -41
  167. package/src/BadgeStatus/color.ts +0 -25
  168. package/src/BadgeStatus/index.ts +0 -4
  169. package/src/CardSelect/CardSelect.vue +0 -136
  170. package/src/CardSelect/index.ts +0 -3
  171. package/src/CheckButton/CheckButton.vue +0 -146
  172. package/src/CheckButton/index.md +0 -27
  173. package/src/CheckButton/index.ts +0 -3
  174. package/src/ConfigProvider/context.ts +0 -17
  175. package/src/ConfigProvider/index.tsx +0 -42
  176. package/src/Echarts/Echarts.vue +0 -43
  177. package/src/Echarts/index.ts +0 -3
  178. package/src/Ellipsis/Ellipsis.vue +0 -182
  179. package/src/Ellipsis/index.ts +0 -3
  180. package/src/Empty/Empty.vue +0 -43
  181. package/src/Empty/image.ts +0 -3
  182. package/src/Empty/index.ts +0 -2
  183. package/src/FullPage/FullPage.vue +0 -30
  184. package/src/FullPage/index.ts +0 -3
  185. package/src/Icon/icon.tsx +0 -40
  186. package/src/MonacoEditor/Monaco.vue +0 -242
  187. package/src/MonacoEditor/index.md +0 -26
  188. package/src/MonacoEditor/index.ts +0 -2
  189. package/src/PermissionButton/index.tsx +0 -110
  190. package/src/ProLayout/Basic/BasicLayout.tsx +0 -392
  191. package/src/ProLayout/Basic/Header.tsx +0 -115
  192. package/src/ProLayout/PageContainer/index.tsx +0 -441
  193. package/src/ProLayout/PageContainer/typings.ts +0 -56
  194. package/src/ProLayout/RouteContext.ts +0 -87
  195. package/src/ProLayout/SiderMenu/BaseMenu.tsx +0 -296
  196. package/src/ProLayout/SiderMenu/SiderMenu.tsx +0 -320
  197. package/src/ProLayout/SiderMenu/index.ts +0 -2
  198. package/src/ProLayout/SiderMenu/typings.ts +0 -49
  199. package/src/ProLayout/TopHeader/index.tsx +0 -210
  200. package/src/ProLayout/defaultSettings.ts +0 -106
  201. package/src/ProLayout/style/index.ts +0 -1
  202. package/src/ProLayout/typings.ts +0 -87
  203. package/src/ProLayout/util.ts +0 -64
  204. package/src/ProTable/index.md +0 -53
  205. package/src/ProTable/index.tsx +0 -551
  206. package/src/ProTable/proTableTypes.ts +0 -70
  207. package/src/ProTable/style/index.ts +0 -1
  208. package/src/Scrollbar/Bar.vue +0 -75
  209. package/src/Scrollbar/Scrollbar.vue +0 -260
  210. package/src/Scrollbar/Thumb.vue +0 -163
  211. package/src/Scrollbar/constants.ts +0 -10
  212. package/src/Scrollbar/index.ts +0 -4
  213. package/src/Scrollbar/thumb.ts +0 -16
  214. package/src/Scrollbar/util.ts +0 -38
  215. package/src/Search/Advanced/History.vue +0 -140
  216. package/src/Search/Advanced/SaveHistory.vue +0 -108
  217. package/src/Search/Advanced/index.vue +0 -435
  218. package/src/Search/Item.vue +0 -525
  219. package/src/Search/Search.vue +0 -398
  220. package/src/Search/hooks/index.ts +0 -1
  221. package/src/Search/hooks/useSearchItems.ts +0 -68
  222. package/src/Search/index.md +0 -57
  223. package/src/Search/index.ts +0 -5
  224. package/src/Search/setting.ts +0 -55
  225. package/src/Search/typing.ts +0 -76
  226. package/src/Search/util.ts +0 -263
  227. package/src/ValueItem/ValueItem.vue +0 -192
  228. package/src/ValueItem/index.ts +0 -3
  229. package/src/ValueItem/util.ts +0 -16
  230. package/src/style/index.ts +0 -3
  231. /package/{src → es}/ProLayout/Basic/BasicLayout.less +0 -0
  232. /package/{src → es}/ProLayout/Basic/Header.less +0 -0
  233. /package/{src → es}/ProLayout/PageContainer/index.less +0 -0
  234. /package/{src → es}/ProLayout/SiderMenu/index.less +0 -0
  235. /package/{src → es}/ProLayout/TopHeader/index.less +0 -0
  236. /package/{src → es}/ProLayout/style/style.less +0 -0
  237. /package/{src → es}/ProTable/style/index.less +0 -0
@@ -1,392 +0,0 @@
1
- import type {
2
- BreadcrumbRender,
3
- FormatMessage,
4
- HeaderContentRender,
5
- WithFalse,
6
- HeaderRender,
7
- RightContentRender,
8
- CollapsedButtonRender,
9
- MenuExtraRender,
10
- SubMenuItemRender,
11
- MenuContentRender,
12
- MenuItemRender,
13
- MenuHeaderRender,
14
- } from '../typings';
15
- import SiderMenu, { siderMenuProps } from '../SiderMenu/SiderMenu';
16
- import type { CSSProperties, ExtractPropTypes, PropType } from 'vue';
17
- import {
18
- computed,
19
- defineComponent,
20
- provide,
21
- reactive,
22
- watchEffect,
23
- toRefs,
24
- } from 'vue';
25
- import { defaultSettingProps } from '../defaultSettings';
26
- import { baseHeaderProps } from '../TopHeader';
27
- import Header, { headerViewProps } from './Header';
28
- import type { VueNode } from 'ant-design-vue/es/_util/type';
29
- import useConfigInject from 'ant-design-vue/es/_util/hooks/useConfigInject';
30
- import type { BreadcrumbProps, RouteContextProps } from '../RouteContext';
31
- import { pick } from 'lodash-es';
32
- import { defaultRouteContext, routeContextInjectKey } from '../RouteContext';
33
- import { getMenuFirstChildren, getSlot } from '../util';
34
- import { Layout, LayoutContent } from 'ant-design-vue';
35
-
36
- export const basicLayoutProps = {
37
- ...defaultSettingProps,
38
- ...siderMenuProps,
39
- ...baseHeaderProps,
40
- ...headerViewProps,
41
-
42
- pure: Boolean,
43
- loading: Boolean,
44
- locale: {
45
- type: [Function, Boolean] as PropType<WithFalse<FormatMessage>>,
46
- default() {
47
- return (s: string) => s;
48
- },
49
- },
50
- /**
51
- * 是否禁用移动端模式,有的管理系统不需要移动端模式,此属性设置为true即可
52
- */
53
- disableMobile: {
54
- type: Boolean,
55
- required: false,
56
- },
57
- isChildrenLayout: {
58
- type: Boolean,
59
- required: false,
60
- },
61
- /**
62
- * 兼用 content 的 margin
63
- */
64
- disableContentMargin: {
65
- type: Boolean,
66
- required: false,
67
- },
68
- colSize: {
69
- type: Number,
70
- required: false,
71
- },
72
- contentStyle: {
73
- type: [String, Object] as PropType<CSSProperties>,
74
- default: () => {
75
- return null;
76
- },
77
- },
78
- breadcrumb: {
79
- type: [Object, Function] as PropType<BreadcrumbProps>,
80
- default: () => null,
81
- },
82
- collapsedButtonRender: {
83
- type: [Function, Object, Boolean] as PropType<
84
- WithFalse<(collapsed?: boolean) => VueNode>
85
- >,
86
- default: () => undefined,
87
- },
88
- breadcrumbRender: {
89
- type: [Object, Function, Boolean] as PropType<BreadcrumbRender>,
90
- default() {
91
- return null;
92
- },
93
- },
94
- headerContentRender: {
95
- type: [Function, Object, Boolean] as PropType<HeaderContentRender>,
96
- default: () => undefined,
97
- },
98
- headerRender: {
99
- type: [Object, Function, Boolean] as PropType<HeaderRender>,
100
- default: () => undefined,
101
- },
102
- };
103
-
104
- export type BasicLayoutProps = Partial<
105
- ExtractPropTypes<typeof basicLayoutProps>
106
- >;
107
-
108
- export default defineComponent({
109
- name: 'JProLayout',
110
- inheritAttrs: false,
111
- props: basicLayoutProps,
112
- emits: [
113
- 'update:collapsed',
114
- 'update:open-keys',
115
- 'update:selected-keys',
116
- 'collapse',
117
- 'openKeys',
118
- 'select',
119
- 'menuHeaderClick',
120
- 'menuClick',
121
- 'backClick',
122
- ],
123
- setup(props, { emit, attrs, slots }) {
124
- const { prefixCls } = useConfigInject('layout', {});
125
- const isTop = computed(() => props.layout === 'top');
126
- const hasSide = computed(
127
- () => props.layout === 'mix' || props.layout === 'side' || false,
128
- );
129
- const hasSplitMenu = computed(
130
- () => props.layout === 'mix' && props.splitMenus,
131
- );
132
- const hasFlatMenu = computed(() => {
133
- return hasSide.value && hasSplitMenu.value;
134
- });
135
- const siderWidth = computed(() =>
136
- props.collapsed ? props.collapsedWidth : props.siderWidth,
137
- );
138
-
139
- const onCollapse = (collapsed: boolean) => {
140
- emit('update:collapsed', collapsed);
141
- emit('collapse', collapsed);
142
- };
143
- const onOpenKeys = (openKeys: string[] | false) => {
144
- emit('update:open-keys', openKeys);
145
- emit('openKeys', openKeys);
146
- };
147
- const onSelect = (selectedKeys: string[] | false) => {
148
- emit('update:selected-keys', selectedKeys);
149
- emit('select', selectedKeys);
150
- };
151
- const onMenuHeaderClick = (e: MouseEvent) => {
152
- emit('menuHeaderClick', e);
153
- };
154
- const onMenuClick = (args: any) => {
155
- emit('menuClick', args);
156
- };
157
- const onBack = (args: any) => {
158
- emit('backClick', args);
159
- };
160
-
161
- const baseClassName = computed(() => `${props.prefixCls}-basicLayout`);
162
-
163
- const className = computed(() => {
164
- return {
165
- [baseClassName.value]: true,
166
- [`${baseClassName.value}-top-menu`]: isTop.value,
167
- [`${baseClassName.value}-is-children`]: props.isChildrenLayout,
168
- [`${baseClassName.value}-fix-siderbar`]: props.fixSiderbar,
169
- [`${baseClassName.value}-${props.layout}`]: props.layout,
170
- };
171
- });
172
-
173
- const genLayoutStyle = reactive<CSSProperties>({
174
- position: 'relative',
175
- });
176
-
177
- watchEffect(() => {
178
- if (
179
- props.isChildrenLayout ||
180
- (props.contentStyle && props.contentStyle.minHeight)
181
- ) {
182
- genLayoutStyle.minHeight = 0;
183
- }
184
- });
185
-
186
- const headerRender = (
187
- p: BasicLayoutProps & {
188
- hasSiderMenu: boolean;
189
- headerRender: HeaderRender;
190
- rightContentRender: RightContentRender;
191
- },
192
- matchMenuKeys?: string[],
193
- ): VueNode | null => {
194
- if (p.headerRender === false || p.pure) {
195
- return null;
196
- }
197
- return <Header {...p} matchMenuKeys={matchMenuKeys || []} />;
198
- };
199
-
200
- const breadcrumb = computed<BreadcrumbProps>(() => ({
201
- ...props.breadcrumb,
202
- itemRender: getSlot<BreadcrumbRender>(
203
- slots,
204
- props,
205
- 'breadcrumbRender',
206
- ) as BreadcrumbRender,
207
- }));
208
-
209
- const flatMenuData = computed(
210
- () =>
211
- (hasFlatMenu.value &&
212
- props.selectedKeys &&
213
- getMenuFirstChildren(
214
- props.menuData,
215
- props.selectedKeys[0],
216
- )) ||
217
- [],
218
- );
219
-
220
- const routeContext = reactive<RouteContextProps>({
221
- ...defaultRouteContext,
222
- ...(pick(toRefs(props), [
223
- 'pure',
224
- 'locale',
225
- 'menuData',
226
- 'openKeys',
227
- 'selectedKeys',
228
- 'contentWidth',
229
- 'disableMobile',
230
- 'fixSiderbar',
231
- 'fixedHeader',
232
- 'headerHeight',
233
- ]) as any),
234
- siderWidth,
235
- breadcrumb,
236
- flatMenuData,
237
- hasSide,
238
- back: onBack,
239
- hasHeader: true,
240
- flatMenu: hasFlatMenu,
241
- });
242
- provide(routeContextInjectKey, routeContext);
243
-
244
- return () => {
245
- const {
246
- pure,
247
- onCollapse: propsOnCollapse,
248
- onOpenKeys: propsOnOpenKeys,
249
- onSelect: propsOnSelect,
250
- onMenuClick: propsOnMenuClick,
251
- ...restProps
252
- } = props;
253
-
254
- const collapsedButtonRender = getSlot<CollapsedButtonRender>(
255
- slots,
256
- props,
257
- 'collapsedButtonRender',
258
- );
259
- const headerContentRender = getSlot<HeaderContentRender>(
260
- slots,
261
- props,
262
- 'headerContentRender',
263
- );
264
- const rightContentRender = getSlot<RightContentRender>(
265
- slots,
266
- props,
267
- 'rightContentRender',
268
- );
269
- const customHeaderRender = getSlot<HeaderRender>(
270
- slots,
271
- props,
272
- 'headerRender',
273
- );
274
-
275
- // menu
276
- const menuHeaderRender = getSlot<MenuHeaderRender>(
277
- slots,
278
- props,
279
- 'menuHeaderRender',
280
- );
281
- const menuExtraRender = getSlot<MenuExtraRender>(
282
- slots,
283
- props,
284
- 'menuExtraRender',
285
- );
286
- const menuContentRender = getSlot<MenuContentRender>(
287
- slots,
288
- props,
289
- 'menuContentRender',
290
- );
291
- const menuItemRender = getSlot<MenuItemRender>(
292
- slots,
293
- props,
294
- 'menuItemRender',
295
- );
296
- const subMenuItemRender = getSlot<SubMenuItemRender>(
297
- slots,
298
- props,
299
- 'subMenuItemRender',
300
- );
301
-
302
- const headerDom = computed(() =>
303
- headerRender(
304
- {
305
- ...props,
306
- menuItemRender,
307
- subMenuItemRender,
308
- hasSiderMenu: !isTop.value,
309
- menuData: props.menuData,
310
- onCollapse,
311
- onOpenKeys,
312
- onSelect,
313
- onMenuHeaderClick,
314
- rightContentRender,
315
- collapsedButtonRender,
316
- headerTitleRender: menuHeaderRender,
317
- menuExtraRender,
318
- menuContentRender,
319
- headerContentRender,
320
- headerRender: customHeaderRender,
321
- theme: (props.theme || 'dark')
322
- .toLocaleLowerCase()
323
- .includes('dark')
324
- ? 'dark'
325
- : 'light',
326
- },
327
- props.matchMenuKeys,
328
- ),
329
- );
330
- routeContext.hasHeader = !!headerDom.value;
331
-
332
- const contentClassName = computed(() => {
333
- return {
334
- [`${baseClassName.value}-content`]: true,
335
- [`${baseClassName.value}-has-header`]: headerDom,
336
- [`${baseClassName.value}-content-disable-margin`]:
337
- props.disableContentMargin,
338
- };
339
- });
340
-
341
- return (
342
- <>
343
- {pure ? (
344
- slots.default?.()
345
- ) : (
346
- <div class={className.value}>
347
- <Layout
348
- style={{
349
- minHeight: '100vh',
350
- ...((attrs.style as CSSProperties) || {}),
351
- }}
352
- >
353
- {headerDom.value}
354
- <Layout
355
- style={genLayoutStyle}
356
- class={prefixCls.value}
357
- >
358
- {!isTop.value && (
359
- <SiderMenu
360
- {...restProps}
361
- menuHeaderRender={menuHeaderRender}
362
- menuExtraRender={menuExtraRender}
363
- menuContentRender={
364
- menuContentRender
365
- }
366
- menuItemRender={menuItemRender}
367
- subMenuItemRender={
368
- subMenuItemRender
369
- }
370
- collapsedButtonRender={
371
- collapsedButtonRender
372
- }
373
- onCollapse={onCollapse}
374
- onSelect={onSelect}
375
- onOpenKeys={onOpenKeys}
376
- onMenuClick={onMenuClick}
377
- />
378
- )}
379
- <Layout>
380
- <LayoutContent>
381
- {slots.default?.()}
382
- </LayoutContent>
383
- </Layout>
384
- </Layout>
385
- </Layout>
386
- </div>
387
- )}
388
- </>
389
- );
390
- };
391
- },
392
- });
@@ -1,115 +0,0 @@
1
- import { baseHeaderProps, TopNavHeader } from '../TopHeader';
2
- import type { BaseHeaderPropsType } from '../TopHeader';
3
- import PropTypes from 'ant-design-vue/es/_util/vue-types';
4
- import type { VueNode } from 'ant-design-vue/es/_util/type';
5
- import type { ExtractPropTypes, PropType } from 'vue';
6
- import { defineComponent, computed, toRefs } from 'vue';
7
- import type { WithFalse } from '../typings';
8
- import { useRouteContext } from '../RouteContext';
9
- import { Layout } from 'ant-design-vue';
10
-
11
- export const headerViewProps = {
12
- ...baseHeaderProps,
13
- headerRender: {
14
- type: [Object, Function, Boolean] as PropType<
15
- WithFalse<(props: any, defaultDom: VueNode) => VueNode>
16
- >,
17
- default: () => undefined,
18
- },
19
- headerTitleRender: {
20
- type: [Object, Function, Boolean] as PropType<
21
- WithFalse<(props: any, defaultDom: VueNode) => VueNode>
22
- >,
23
- default: () => undefined,
24
- },
25
- headerContentRender: {
26
- type: [Object, Function, Boolean] as PropType<
27
- WithFalse<(props: any) => VueNode>
28
- >,
29
- default: () => undefined,
30
- },
31
- hasSiderMenu: PropTypes.looseBool,
32
- siderWidth: PropTypes.number.def(208),
33
- };
34
-
35
- export type HeaderViewProps = Partial<
36
- ExtractPropTypes<typeof headerViewProps> & BaseHeaderPropsType
37
- >;
38
-
39
- export default defineComponent({
40
- name: 'HeaderView',
41
- inheritAttrs: false,
42
- props: headerViewProps,
43
- setup(props) {
44
- const {
45
- prefixCls,
46
- fixedHeader,
47
- hasSiderMenu,
48
- headerHeight,
49
- layout,
50
- theme,
51
- onCollapse,
52
- } = toRefs(props);
53
- const context = useRouteContext();
54
- const needFixedHeader = computed(
55
- () => fixedHeader.value || context.fixedHeader,
56
- );
57
- const isMix = computed(() => layout.value === 'mix');
58
- const isTop = computed(() => layout.value === 'top');
59
- const needSettingWidth = computed(
60
- () => needFixedHeader.value && hasSiderMenu.value && !isTop.value,
61
- );
62
-
63
- const className = computed(() => {
64
- return {
65
- [`${prefixCls.value}-fixed-header`]: needFixedHeader.value,
66
- [`${prefixCls.value}-top-menu`]: isTop.value,
67
- };
68
- });
69
-
70
- const renderContent = () => {
71
- const defaultDom = (
72
- <TopNavHeader
73
- theme={theme.value}
74
- mode="horizontal"
75
- {...props}
76
- onCollapse={onCollapse.value}
77
- menuData={context.menuData}
78
- />
79
- );
80
- if (props.headerRender) {
81
- return props.headerRender(props, defaultDom);
82
- }
83
- return defaultDom;
84
- };
85
-
86
- const right = computed(() => (needFixedHeader.value ? 0 : undefined));
87
-
88
- return () => (
89
- <>
90
- {needFixedHeader.value && (
91
- <Layout.Header
92
- style={{
93
- height: `${headerHeight.value}px`,
94
- lineHeight: `${headerHeight.value}px`,
95
- background: 'transparent',
96
- }}
97
- />
98
- )}
99
- <Layout.Header
100
- style={{
101
- padding: 0,
102
- height: `${headerHeight.value}px`,
103
- lineHeight: `${headerHeight.value}px`,
104
- width: '100%',
105
- zIndex: 100,
106
- right: right.value,
107
- }}
108
- class={className.value}
109
- >
110
- {renderContent()}
111
- </Layout.Header>
112
- </>
113
- );
114
- },
115
- });