@dt-frames/ui 2.0.4 → 2.0.6
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.
- package/es/assets/locales/en.d.ts +2 -0
- package/es/assets/locales/en.ts +2 -0
- package/es/assets/locales/zh.d.ts +1 -0
- package/es/assets/locales/zh.ts +6 -5
- package/es/components/curd/index.js +117 -62
- package/es/components/curd/src/components/Curd.d.ts +0 -8
- package/es/components/curd/src/props.d.ts +0 -4
- package/es/components/form/index.d.ts +20 -53
- package/es/components/form/index.js +5 -3
- package/es/components/form/index.less +8 -3
- package/es/components/form/src/index.d.ts +16 -41
- package/es/components/source/index.js +8 -5
- package/es/components/source/types/source.type.d.ts +1 -0
- package/es/components/table/index.js +145 -95
- package/es/components/table/index.less +26 -5
- package/es/components/table/src/components/TableAction.d.ts +1 -1
- package/es/components/table/src/index.d.ts +10 -0
- package/es/components/table/src/props.d.ts +4 -0
- package/es/components/tree/index.d.ts +2 -0
- package/es/components/tree/index.js +1087 -0
- package/es/components/tree/index.less +119 -0
- package/es/components/tree/src/basicProps.d.ts +146 -0
- package/es/components/tree/src/components/ContextMenu.d.ts +64 -0
- package/es/components/tree/src/components/TreeHeader.d.ts +98 -0
- package/es/components/tree/src/enums/index.d.ts +6 -0
- package/es/components/tree/src/hooks/useContextMenu.d.ts +2 -0
- package/es/components/tree/src/hooks/useTree.d.ts +14 -0
- package/es/components/tree/src/index.d.ts +6526 -0
- package/es/components/tree/src/type/menu.d.ts +33 -0
- package/es/components/tree/src/type/tree.d.ts +55 -0
- package/es/components/tree/src/utils/tree.d.ts +5 -0
- package/es/theme/index.d.ts +2 -1
- package/es/theme/index.js +829 -699
- package/es/theme/index.less +56 -0
- package/es/theme/src/components/content/index.d.ts +6 -4
- package/es/theme/src/components/header/components/logo.d.ts +22 -0
- package/es/theme/src/components/header/index.d.ts +110 -0
- package/es/theme/src/components/header/multiple-header.d.ts +154 -20
- package/es/theme/src/components/sider/index.d.ts +22 -0
- package/es/theme/src/components/sider/mix-sider.d.ts +22 -0
- package/es/theme/src/components/tabs/components/TabContent.d.ts +33 -3
- package/es/theme/src/components/tabs/components/TabRedo.d.ts +6 -4
- package/es/theme/src/components/tabs/hooks/useTabDropdown.d.ts +6 -4
- package/es/theme/src/components/tabs/hooks/useTabs.d.ts +10 -0
- package/es/theme/src/components/tabs/index.d.ts +43 -20
- package/es/theme/src/hooks/useMenu.d.ts +1 -1
- package/es/theme/src/hooks/useMultifyTab.d.ts +1 -0
- package/es/theme/src/index.d.ts +293 -24
- package/es/theme/src/stores/routeReuse.store.d.ts +6 -4
- package/es/theme/src/stores/theme.store.d.ts +1 -0
- package/es/theme/src/types/theme.type.d.ts +2 -0
- package/index.d.ts +2 -1
- package/index.js +6 -2
- package/package.json +4 -2
- package/tsconfig.json +1 -0
- package/vite.config.ts +1 -0
package/es/theme/index.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import { BackTop, Breadcrumb, Empty, InputSearch, Popover, Avatar, Tooltip, Select, Switch, Divider, Button, Drawer,
|
|
1
|
+
import { BackTop, MenuItem, MenuDivider, Menu, Dropdown, TabPane, Tabs, Breadcrumb, Empty, InputSearch, Popover, Avatar, Tooltip, Select, Switch, Divider, Button, Drawer, SubMenu, LayoutHeader, LayoutSider, LayoutContent, Layout, ConfigProvider } from "ant-design-vue/es";
|
|
2
2
|
import "ant-design-vue/es/config-provider/style";
|
|
3
3
|
import "ant-design-vue/es/layout/style";
|
|
4
|
-
import { toRaw, unref, computed, onMounted, nextTick, defineComponent, openBlock, createBlock, createCommentVNode, createElementBlock, createElementVNode,
|
|
4
|
+
import { toRaw, unref, computed, onMounted, nextTick, defineComponent, openBlock, createBlock, createCommentVNode, createElementBlock, createElementVNode, reactive, withCtx, createVNode, Fragment, renderList, normalizeClass, toDisplayString, ref, watch, createSlots, getCurrentInstance, inject, onUnmounted, h, provide, onBeforeUnmount, normalizeStyle, resolveDynamicComponent, renderSlot, mergeProps, withDirectives, vShow, watchEffect, resolveDirective, createTextVNode, normalizeProps, guardReactiveProps, resolveComponent, toRef, withModifiers, Transition, KeepAlive } from "vue";
|
|
5
5
|
import { useRouter, RouterView } from "vue-router";
|
|
6
|
-
import { DtCache, CacheKey, deepMerge, Pages, useGo, useRedo, Language, isObject, useTimeoutFn, useI18n,
|
|
6
|
+
import { DtCache, CacheKey, deepMerge, Pages, useGo, useRedo, Language, isObject, useTimeoutFn, useI18n, menuList2Map, isNullAndUnDef, off, on, getParentSlots, isBoolean, localeList, changeLocale, isFunction, copyText, isUrl, openWindow, useApp, withInstall as withInstall$1 } from "@dt-frames/core";
|
|
7
7
|
import { defineStore } from "pinia";
|
|
8
|
-
import { trim } from "lodash-es";
|
|
8
|
+
import { cloneDeep, trim } from "lodash-es";
|
|
9
9
|
import { useDebounceFn, useFullscreen, useThrottleFn } from "@vueuse/core";
|
|
10
10
|
import "ant-design-vue/es/back-top/style";
|
|
11
|
+
import "ant-design-vue/es/tabs/style";
|
|
12
|
+
import "ant-design-vue/es/dropdown/style";
|
|
13
|
+
import "ant-design-vue/es/menu/style";
|
|
11
14
|
import "ant-design-vue/es/breadcrumb/style";
|
|
12
15
|
import "ant-design-vue/es/popover/style";
|
|
13
16
|
import "ant-design-vue/es/input/style";
|
|
@@ -20,12 +23,11 @@ import "ant-design-vue/es/divider/style";
|
|
|
20
23
|
import "ant-design-vue/es/tooltip/style";
|
|
21
24
|
import "ant-design-vue/es/select/style";
|
|
22
25
|
import "ant-design-vue/es/switch/style";
|
|
23
|
-
import "ant-design-vue/es/menu/style";
|
|
24
|
-
import "ant-design-vue/es/tabs/style";
|
|
25
|
-
import "ant-design-vue/es/dropdown/style";
|
|
26
26
|
import zhCN from "ant-design-vue/es/locale/zh_CN";
|
|
27
27
|
import en from "ant-design-vue/es/locale/en_US";
|
|
28
|
-
import
|
|
28
|
+
import dayjs from "dayjs";
|
|
29
|
+
import "dayjs/locale/zh-cn";
|
|
30
|
+
import "dayjs/locale/es-us";
|
|
29
31
|
var Theme = /* @__PURE__ */ ((Theme2) => {
|
|
30
32
|
Theme2["DARK"] = "dark";
|
|
31
33
|
Theme2["LIGHT"] = "light";
|
|
@@ -62,6 +64,7 @@ var UiSize = /* @__PURE__ */ ((UiSize2) => {
|
|
|
62
64
|
return UiSize2;
|
|
63
65
|
})(UiSize || {});
|
|
64
66
|
const defaultThemeConf = {
|
|
67
|
+
cache: false,
|
|
65
68
|
content: {
|
|
66
69
|
contentMode: ContentMode.FULL
|
|
67
70
|
},
|
|
@@ -104,7 +107,7 @@ const defaultThemeConf = {
|
|
|
104
107
|
},
|
|
105
108
|
routeReuse: {
|
|
106
109
|
show: true,
|
|
107
|
-
cache:
|
|
110
|
+
cache: false,
|
|
108
111
|
canDrag: true,
|
|
109
112
|
showQuick: true,
|
|
110
113
|
showRedo: true,
|
|
@@ -114,7 +117,7 @@ const defaultThemeConf = {
|
|
|
114
117
|
const useThemeStore = defineStore({
|
|
115
118
|
id: "dt-theme",
|
|
116
119
|
state: () => ({
|
|
117
|
-
themeConf: DtCache.getLocal(CacheKey.THEME) ?? defaultThemeConf,
|
|
120
|
+
themeConf: DtCache.getLocal(CacheKey.THEME) ?? cloneDeep(defaultThemeConf),
|
|
118
121
|
pageLoading: false,
|
|
119
122
|
mixSiderHasSubMenu: false
|
|
120
123
|
}),
|
|
@@ -143,20 +146,27 @@ const useThemeStore = defineStore({
|
|
|
143
146
|
},
|
|
144
147
|
actions: {
|
|
145
148
|
setThemeConf(options = {}) {
|
|
146
|
-
|
|
147
|
-
this.themeConf = deepMerge(defaultThemeConf, newThemeConf);
|
|
149
|
+
this.themeConf = deepMerge(this.themeConf, options);
|
|
148
150
|
DtCache.setLocal(CacheKey.THEME, this.themeConf);
|
|
149
151
|
},
|
|
150
152
|
setMixSiderIsHasMenu(val) {
|
|
151
153
|
this.mixSiderHasSubMenu = val;
|
|
154
|
+
},
|
|
155
|
+
resetState() {
|
|
156
|
+
DtCache.removeLocal(CacheKey.THEME);
|
|
157
|
+
this.themeConf = cloneDeep(defaultThemeConf);
|
|
152
158
|
}
|
|
153
159
|
}
|
|
154
160
|
});
|
|
161
|
+
function handleGotoPage(router) {
|
|
162
|
+
const go = useGo(router);
|
|
163
|
+
go(unref(router.currentRoute).path, true);
|
|
164
|
+
}
|
|
155
165
|
const useRouteReuseStore = defineStore({
|
|
156
166
|
id: "route-reuse",
|
|
157
167
|
state: () => ({
|
|
158
168
|
cacheTabList: /* @__PURE__ */ new Set(),
|
|
159
|
-
tabList: DtCache.getLocal(CacheKey.
|
|
169
|
+
tabList: DtCache.getLocal(CacheKey.ROUTE_REUSE) || [],
|
|
160
170
|
lastDragEndIndex: 0
|
|
161
171
|
}),
|
|
162
172
|
getters: {
|
|
@@ -192,9 +202,9 @@ const useRouteReuseStore = defineStore({
|
|
|
192
202
|
}
|
|
193
203
|
this.updateCacheTab();
|
|
194
204
|
},
|
|
195
|
-
closeTab(
|
|
205
|
+
closeTab(route, router) {
|
|
196
206
|
const go = useGo(router);
|
|
197
|
-
const index = this.tabList.findIndex((item) => item.path === path);
|
|
207
|
+
const index = this.tabList.findIndex((item) => item.path === route.path);
|
|
198
208
|
let page;
|
|
199
209
|
if (index === 0) {
|
|
200
210
|
if (this.tabList.length !== 1) {
|
|
@@ -203,9 +213,9 @@ const useRouteReuseStore = defineStore({
|
|
|
203
213
|
} else {
|
|
204
214
|
page = this.tabList[index - 1];
|
|
205
215
|
}
|
|
206
|
-
this.bulkCloseTabs([path]);
|
|
216
|
+
this.bulkCloseTabs([route.path]);
|
|
207
217
|
this.updateCacheTab();
|
|
208
|
-
path === router.currentRoute.value.path && go(page.path);
|
|
218
|
+
route.path === router.currentRoute.value.path && go(page.path);
|
|
209
219
|
},
|
|
210
220
|
closeAllTab(currentRoute, router) {
|
|
211
221
|
const go = useGo(router);
|
|
@@ -215,8 +225,8 @@ const useRouteReuseStore = defineStore({
|
|
|
215
225
|
this.updateCacheTab();
|
|
216
226
|
go(route.path);
|
|
217
227
|
},
|
|
218
|
-
closeLeftTabs(
|
|
219
|
-
const index = this.tabList.findIndex((item) => item.path === path);
|
|
228
|
+
closeLeftTabs(route, router) {
|
|
229
|
+
const index = this.tabList.findIndex((item) => item.path === route.path);
|
|
220
230
|
if (index > 0) {
|
|
221
231
|
const leftTabs = this.tabList.slice(0, index);
|
|
222
232
|
const pathList = [];
|
|
@@ -229,9 +239,10 @@ const useRouteReuseStore = defineStore({
|
|
|
229
239
|
this.bulkCloseTabs(pathList);
|
|
230
240
|
}
|
|
231
241
|
this.updateCacheTab();
|
|
242
|
+
handleGotoPage(router);
|
|
232
243
|
},
|
|
233
|
-
closeRightTabs(
|
|
234
|
-
const index = this.tabList.findIndex((item) => item.path === path);
|
|
244
|
+
closeRightTabs(route, router) {
|
|
245
|
+
const index = this.tabList.findIndex((item) => item.path === route.path);
|
|
235
246
|
if (index >= 0 && index < this.tabList.length - 1) {
|
|
236
247
|
const rightTabs = this.tabList.slice(index + 1, this.tabList.length);
|
|
237
248
|
const pathList = [];
|
|
@@ -244,24 +255,40 @@ const useRouteReuseStore = defineStore({
|
|
|
244
255
|
this.bulkCloseTabs(pathList);
|
|
245
256
|
}
|
|
246
257
|
this.updateCacheTab();
|
|
258
|
+
handleGotoPage(router);
|
|
247
259
|
},
|
|
248
|
-
closeOtherTabs(
|
|
260
|
+
closeOtherTabs(route, router) {
|
|
249
261
|
const pathList = [];
|
|
250
262
|
for (let item of this.tabList) {
|
|
251
263
|
const affix = item?.meta?.affix ?? false;
|
|
252
|
-
if (item.path !== path && !affix) {
|
|
264
|
+
if (item.path !== route.path && !affix) {
|
|
253
265
|
pathList.push(item.path);
|
|
254
266
|
}
|
|
255
267
|
}
|
|
256
268
|
this.bulkCloseTabs(pathList);
|
|
257
269
|
this.updateCacheTab();
|
|
270
|
+
handleGotoPage(router);
|
|
271
|
+
},
|
|
272
|
+
closeTabByKey(path, router) {
|
|
273
|
+
const go = useGo(router);
|
|
274
|
+
const index = this.tabList.findIndex((item) => item.path === path);
|
|
275
|
+
let page;
|
|
276
|
+
if (index === 0) {
|
|
277
|
+
if (this.tabList.length !== 1) {
|
|
278
|
+
page = this.tabList[index + 1];
|
|
279
|
+
}
|
|
280
|
+
} else {
|
|
281
|
+
page = this.tabList[index - 1];
|
|
282
|
+
}
|
|
283
|
+
this.bulkCloseTabs([path]);
|
|
284
|
+
this.updateCacheTab();
|
|
285
|
+
path === router.currentRoute.value.path && go(page.path);
|
|
258
286
|
},
|
|
259
287
|
bulkCloseTabs(pathList) {
|
|
260
288
|
this.tabList = this.tabList.filter((item) => !pathList.includes(item.fullPath));
|
|
261
289
|
},
|
|
262
290
|
updateCacheTab() {
|
|
263
|
-
|
|
264
|
-
cacheTab && DtCache.setLocal(CacheKey.ROUTE_REUSE, this.tabList);
|
|
291
|
+
DtCache.setLocal(CacheKey.ROUTE_REUSE, this.tabList);
|
|
265
292
|
const cacheMap = /* @__PURE__ */ new Set();
|
|
266
293
|
for (const tab of this.tabList) {
|
|
267
294
|
if (tab.meta?.hideTab) {
|
|
@@ -285,42 +312,46 @@ const useRouteReuseStore = defineStore({
|
|
|
285
312
|
this.tabList.splice(oldIndex, 1);
|
|
286
313
|
this.tabList.splice(newIndex, 0, currentTab);
|
|
287
314
|
this.lastDragEndIndex = this.lastDragEndIndex + 1;
|
|
315
|
+
},
|
|
316
|
+
resetState() {
|
|
317
|
+
this.tabList = [];
|
|
318
|
+
this.updateCacheTab();
|
|
288
319
|
}
|
|
289
320
|
}
|
|
290
321
|
});
|
|
291
322
|
function useMenu() {
|
|
292
|
-
const {
|
|
293
|
-
const getCollapsedShowTitle = computed(() => getMenuConf.collapsedShowTitle);
|
|
294
|
-
const getIsSidebarType = computed(() => getMenuConf.type === MenuType.SIDE);
|
|
295
|
-
const getMenuFixed = computed(() => getMenuConf.fixed);
|
|
296
|
-
const getShowMenu = computed(() => getMenuConf.show);
|
|
323
|
+
const { setThemeConf } = useThemeStore();
|
|
324
|
+
const getCollapsedShowTitle = computed(() => useThemeStore().getMenuConf.collapsedShowTitle);
|
|
325
|
+
const getIsSidebarType = computed(() => useThemeStore().getMenuConf.type === MenuType.SIDE);
|
|
326
|
+
const getMenuFixed = computed(() => useThemeStore().getMenuConf.fixed);
|
|
327
|
+
const getShowMenu = computed(() => useThemeStore().getMenuConf.show);
|
|
297
328
|
const getShowSidebar = computed(() => {
|
|
298
329
|
return unref(getSplit) || unref(getShowMenu) && unref(getMenuMode) !== MenuMode.HORIZONTAL;
|
|
299
330
|
});
|
|
300
|
-
const getMenuHidden = computed(() => getMenuConf.hidden);
|
|
301
|
-
const getMenuTheme = computed(() => getMenuConf.theme);
|
|
302
|
-
const getTrigger = computed(() => getMenuConf.trigger);
|
|
303
|
-
const getCanDrag = computed(() => getMenuConf.canDrag);
|
|
331
|
+
const getMenuHidden = computed(() => useThemeStore().getMenuConf.hidden);
|
|
332
|
+
const getMenuTheme = computed(() => useThemeStore().getMenuConf.theme);
|
|
333
|
+
const getTrigger = computed(() => useThemeStore().getMenuConf.trigger);
|
|
334
|
+
const getCanDrag = computed(() => useThemeStore().getMenuConf.canDrag);
|
|
304
335
|
const getIsMixMode = computed(() => {
|
|
305
336
|
return unref(getMenuMode) === MenuMode.INLINE && unref(getMenuType) === MenuType.MIX;
|
|
306
337
|
});
|
|
307
338
|
const getIsMixSidebar = computed(() => unref(getMenuType) === MenuType.MIX_SIDEBAR);
|
|
308
339
|
const getMenuWidth = computed(() => {
|
|
309
340
|
if (unref(getIsMixMode)) {
|
|
310
|
-
return Number(getMenuConf.menuWidth) - 40;
|
|
341
|
+
return Number(useThemeStore().getMenuConf.menuWidth) - 40;
|
|
311
342
|
} else if (unref(getIsMixSidebar)) {
|
|
312
|
-
return Number(getMenuConf.menuWidth) - 10;
|
|
343
|
+
return Number(useThemeStore().getMenuConf.menuWidth) - 10;
|
|
313
344
|
} else {
|
|
314
|
-
return Number(getMenuConf.menuWidth);
|
|
345
|
+
return Number(useThemeStore().getMenuConf.menuWidth);
|
|
315
346
|
}
|
|
316
347
|
});
|
|
317
|
-
const getMixSideTrigger = computed(() => getMenuConf.mixSideTrigger);
|
|
318
|
-
const getLogoWidth = computed(() => unref(getIsMixSidebar) ? "80px" : getMenuConf.menuWidth);
|
|
319
|
-
const getMenuType = computed(() => getMenuConf.type);
|
|
348
|
+
const getMixSideTrigger = computed(() => useThemeStore().getMenuConf.mixSideTrigger);
|
|
349
|
+
const getLogoWidth = computed(() => unref(getIsMixSidebar) ? "80px" : useThemeStore().getMenuConf.menuWidth);
|
|
350
|
+
const getMenuType = computed(() => useThemeStore().getMenuConf.type);
|
|
320
351
|
const getIsTopMenu = computed(() => unref(getMenuType) === MenuType.TOP_MENU);
|
|
321
|
-
const getMenuMode = computed(() => getMenuConf.mode);
|
|
322
|
-
const getSplit = computed(() => getMenuConf.split);
|
|
323
|
-
const getCollapsed = computed(() => getMenuConf.collapsed);
|
|
352
|
+
const getMenuMode = computed(() => useThemeStore().getMenuConf.mode);
|
|
353
|
+
const getSplit = computed(() => useThemeStore().getMenuConf.split);
|
|
354
|
+
const getCollapsed = computed(() => useThemeStore().getMenuConf.collapsed);
|
|
324
355
|
const getIsHorizontal = computed(() => unref(getMenuMode) === MenuMode.HORIZONTAL);
|
|
325
356
|
const setThemeStore = (conf = {}) => setThemeConf(conf);
|
|
326
357
|
const toggleCollapsed = () => setThemeStore({
|
|
@@ -328,7 +359,7 @@ function useMenu() {
|
|
|
328
359
|
collapsed: !unref(getCollapsed)
|
|
329
360
|
}
|
|
330
361
|
});
|
|
331
|
-
const getMiniWidthNumber = computed(() => getMenuConf.collapsedShowTitle ? 80 : 48);
|
|
362
|
+
const getMiniWidthNumber = computed(() => useThemeStore().getMenuConf.collapsedShowTitle ? 80 : 48);
|
|
332
363
|
const getRealWidth = computed(() => {
|
|
333
364
|
return unref(getCollapsed) ? unref(getMiniWidthNumber) : unref(getMenuWidth);
|
|
334
365
|
});
|
|
@@ -368,12 +399,14 @@ function useMultipleTab() {
|
|
|
368
399
|
const { getRouteReuseConf } = useThemeStore();
|
|
369
400
|
const getShowMultipleTab = computed(() => getRouteReuseConf.show);
|
|
370
401
|
const getShowQuick = computed(() => getRouteReuseConf.showQuick);
|
|
402
|
+
const getMultipleTabPosIsTop = computed(() => getRouteReuseConf.position === "top");
|
|
371
403
|
const getShowRedo = computed(() => getRouteReuseConf.showRedo);
|
|
372
404
|
const getCanCache = computed(() => getRouteReuseConf.cache);
|
|
373
405
|
const getCanDrag = computed(() => getRouteReuseConf.canDrag);
|
|
374
406
|
return {
|
|
375
407
|
getShowMultipleTab,
|
|
376
408
|
getShowQuick,
|
|
409
|
+
getMultipleTabPosIsTop,
|
|
377
410
|
getShowRedo,
|
|
378
411
|
getCanCache,
|
|
379
412
|
getCanDrag
|
|
@@ -394,7 +427,7 @@ function useHeader() {
|
|
|
394
427
|
getIsTopMenu,
|
|
395
428
|
getIsMixSidebar
|
|
396
429
|
} = useMenu();
|
|
397
|
-
const { getShowMultipleTab } = useMultipleTab();
|
|
430
|
+
const { getShowMultipleTab, getMultipleTabPosIsTop } = useMultipleTab();
|
|
398
431
|
const getHeaderTheme = computed(() => getHeaderConf.theme);
|
|
399
432
|
const getFixed = computed(() => getHeaderConf.fixed);
|
|
400
433
|
const getShowHeaderLogo = computed(() => unref(getShowLogo) && !unref(getIsSidebarType) && !unref(getIsMixSidebar));
|
|
@@ -420,7 +453,7 @@ function useHeader() {
|
|
|
420
453
|
const getHeaderHeight = computed(() => {
|
|
421
454
|
let height = 0;
|
|
422
455
|
height += HEADER_HEIGHT;
|
|
423
|
-
if (unref(getShowMultipleTab) && !unref(getSplit)) {
|
|
456
|
+
if (unref(getShowMultipleTab) && !unref(getSplit) && !unref(getMultipleTabPosIsTop)) {
|
|
424
457
|
height += TABS_HEIGHT;
|
|
425
458
|
}
|
|
426
459
|
return height;
|
|
@@ -661,228 +694,406 @@ const _sfc_main$y = /* @__PURE__ */ defineComponent({
|
|
|
661
694
|
};
|
|
662
695
|
}
|
|
663
696
|
});
|
|
697
|
+
const _hoisted_1$i = /* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-autorenew" }, null, -1);
|
|
698
|
+
const _hoisted_2$9 = [
|
|
699
|
+
_hoisted_1$i
|
|
700
|
+
];
|
|
664
701
|
const _sfc_main$x = /* @__PURE__ */ defineComponent({
|
|
665
|
-
__name: "
|
|
702
|
+
__name: "TabRedo",
|
|
666
703
|
setup(__props) {
|
|
667
|
-
const
|
|
704
|
+
const tabStore = useRouteReuseStore();
|
|
705
|
+
const router = useRouter();
|
|
706
|
+
function handleRedo() {
|
|
707
|
+
tabStore.refreshPage(router);
|
|
708
|
+
}
|
|
668
709
|
return (_ctx, _cache) => {
|
|
669
710
|
return openBlock(), createElementBlock("span", {
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
},
|
|
673
|
-
createElementVNode("i", {
|
|
674
|
-
class: normalizeClass(["i block", !unref(isFullscreen) ? "ic:baseline-fullscreen" : "ic:baseline-fullscreen-exit"])
|
|
675
|
-
}, null, 2)
|
|
676
|
-
]);
|
|
711
|
+
onClick: handleRedo,
|
|
712
|
+
class: "inline-block w-9 h-9 leading-9 -mt-0.5 text-zinc-600 text-center cursor-pointer border-l border-zinc-300 hover:text-zinc-900"
|
|
713
|
+
}, _hoisted_2$9);
|
|
677
714
|
};
|
|
678
715
|
}
|
|
679
716
|
});
|
|
680
|
-
|
|
717
|
+
function useTabs(_router) {
|
|
718
|
+
const tabStore = useRouteReuseStore();
|
|
719
|
+
const router = _router || useRouter();
|
|
720
|
+
const { currentRoute } = router;
|
|
721
|
+
const getCurrentTab = () => {
|
|
722
|
+
const route = unref(currentRoute);
|
|
723
|
+
return tabStore.getTabList.find((item) => item.fullPath === route.fullPath);
|
|
724
|
+
};
|
|
725
|
+
function handleTabAction(action, tab) {
|
|
726
|
+
const currentTab = getCurrentTab();
|
|
727
|
+
switch (action) {
|
|
728
|
+
case 0:
|
|
729
|
+
tabStore.refreshPage(router);
|
|
730
|
+
break;
|
|
731
|
+
case 1:
|
|
732
|
+
tabStore.closeAllTab(currentRoute, router);
|
|
733
|
+
break;
|
|
734
|
+
case 2:
|
|
735
|
+
tabStore.closeLeftTabs(currentTab, router);
|
|
736
|
+
break;
|
|
737
|
+
case 3:
|
|
738
|
+
tabStore.closeRightTabs(currentTab, router);
|
|
739
|
+
break;
|
|
740
|
+
case 4:
|
|
741
|
+
tabStore.closeOtherTabs(currentTab, router);
|
|
742
|
+
break;
|
|
743
|
+
case 5:
|
|
744
|
+
case 6:
|
|
745
|
+
tabStore.closeTab(tab || currentTab, router);
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
return {
|
|
749
|
+
refreshPage: () => handleTabAction(0),
|
|
750
|
+
closeAll: () => handleTabAction(1),
|
|
751
|
+
closeLeft: () => handleTabAction(2),
|
|
752
|
+
closeRight: () => handleTabAction(3),
|
|
753
|
+
closeOther: () => handleTabAction(4),
|
|
754
|
+
closeCurrent: () => handleTabAction(5),
|
|
755
|
+
close: (tab) => handleTabAction(6, tab)
|
|
756
|
+
};
|
|
757
|
+
}
|
|
758
|
+
function useTabDropdown(tabItem, getIsTabs) {
|
|
759
|
+
const router = useRouter();
|
|
760
|
+
const { currentRoute } = router;
|
|
761
|
+
const tabStore = useRouteReuseStore();
|
|
762
|
+
const { refreshPage, closeAll, close, closeLeft, closeOther, closeRight } = useTabs();
|
|
763
|
+
const getTargetTab = computed(() => {
|
|
764
|
+
return unref(getIsTabs) ? tabItem : unref(currentRoute);
|
|
765
|
+
});
|
|
766
|
+
const state = reactive({
|
|
767
|
+
current: null,
|
|
768
|
+
currentIndex: 0
|
|
769
|
+
});
|
|
770
|
+
const getDropMenuList = computed(() => {
|
|
771
|
+
const { t } = useI18n("UI");
|
|
772
|
+
const { meta } = unref(getTargetTab);
|
|
773
|
+
const { path } = unref(currentRoute);
|
|
774
|
+
const curItem = state.current;
|
|
775
|
+
const isCurItem = curItem ? curItem.path === path : false;
|
|
776
|
+
const index = state.currentIndex;
|
|
777
|
+
const refreshDisabled = !isCurItem;
|
|
778
|
+
const closeLeftDisabled = index === 0 || !isCurItem;
|
|
779
|
+
const closeRightDisabled = !isCurItem || index === tabStore.getTabList.length - 1 && tabStore.getLastDragEndIndex >= 0;
|
|
780
|
+
const disabled = tabStore.getTabList.length === 1;
|
|
781
|
+
const dropMenuList = [
|
|
782
|
+
{
|
|
783
|
+
icon: "ic:baseline-autorenew",
|
|
784
|
+
text: t("REFRESH"),
|
|
785
|
+
onClick: refreshPage,
|
|
786
|
+
disabled: refreshDisabled
|
|
787
|
+
},
|
|
788
|
+
{
|
|
789
|
+
icon: "ic:baseline-close",
|
|
790
|
+
text: t("CLOSE_CURRENT_TAG"),
|
|
791
|
+
onClick: () => close(tabItem),
|
|
792
|
+
disabled: !!meta?.affix || disabled,
|
|
793
|
+
divider: true
|
|
794
|
+
},
|
|
795
|
+
{
|
|
796
|
+
icon: "mdi:arrow-collapse-left",
|
|
797
|
+
text: t("CLOSE_LEFT_TAGS"),
|
|
798
|
+
onClick: closeLeft,
|
|
799
|
+
disabled: closeLeftDisabled,
|
|
800
|
+
divider: false
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
icon: "mdi:arrow-collapse-right",
|
|
804
|
+
text: t("CLOSE_RIGHT_TAGS"),
|
|
805
|
+
onClick: closeRight,
|
|
806
|
+
disabled: closeRightDisabled,
|
|
807
|
+
divider: true
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
icon: "ic:baseline-sync-alt",
|
|
811
|
+
text: t("CLOSE_OTHER_TAGS"),
|
|
812
|
+
onClick: closeOther,
|
|
813
|
+
disabled: disabled || !isCurItem
|
|
814
|
+
},
|
|
815
|
+
{
|
|
816
|
+
icon: "ic:baseline-horizontal-rule",
|
|
817
|
+
text: t("CLOSE_ALL_TAGE"),
|
|
818
|
+
onClick: closeAll,
|
|
819
|
+
disabled
|
|
820
|
+
}
|
|
821
|
+
];
|
|
822
|
+
return dropMenuList;
|
|
823
|
+
});
|
|
824
|
+
function handleContextMenu(tabItem2) {
|
|
825
|
+
return (e) => {
|
|
826
|
+
if (!tabItem2)
|
|
827
|
+
return;
|
|
828
|
+
e?.preventDefault();
|
|
829
|
+
const index = tabStore.getTabList.findIndex((tab) => tab.path === tabItem2.path);
|
|
830
|
+
state.current = tabItem2;
|
|
831
|
+
state.currentIndex = index;
|
|
832
|
+
};
|
|
833
|
+
}
|
|
834
|
+
function handleMenuEvent(item) {
|
|
835
|
+
item.onClick?.();
|
|
836
|
+
}
|
|
837
|
+
return {
|
|
838
|
+
getDropMenuList,
|
|
839
|
+
handleContextMenu,
|
|
840
|
+
handleMenuEvent
|
|
841
|
+
};
|
|
842
|
+
}
|
|
843
|
+
const _hoisted_1$h = /* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-keyboard-arrow-down" }, null, -1);
|
|
844
|
+
const _hoisted_2$8 = [
|
|
845
|
+
_hoisted_1$h
|
|
846
|
+
];
|
|
847
|
+
const _hoisted_3$6 = { class: "text-13" };
|
|
681
848
|
const _sfc_main$w = /* @__PURE__ */ defineComponent({
|
|
682
|
-
__name: "
|
|
849
|
+
__name: "TabContent",
|
|
683
850
|
props: {
|
|
684
|
-
|
|
685
|
-
|
|
851
|
+
tabItem: {
|
|
852
|
+
type: Object,
|
|
853
|
+
default: null
|
|
854
|
+
},
|
|
855
|
+
isExtra: Boolean
|
|
686
856
|
},
|
|
687
857
|
setup(__props) {
|
|
688
858
|
const props = __props;
|
|
689
859
|
const { t } = useI18n("UI");
|
|
690
|
-
const
|
|
691
|
-
const
|
|
692
|
-
const
|
|
693
|
-
|
|
694
|
-
|
|
860
|
+
const menuLabelMap = menuList2Map();
|
|
861
|
+
const getIsTabs = computed(() => !props.isExtra);
|
|
862
|
+
const getTrigger = computed(
|
|
863
|
+
() => unref(getIsTabs) ? ["contextmenu"] : ["click"]
|
|
864
|
+
);
|
|
865
|
+
const { getDropMenuList, handleContextMenu, handleMenuEvent } = useTabDropdown(props?.tabItem, getIsTabs);
|
|
866
|
+
function handleContext(e) {
|
|
867
|
+
props.tabItem && handleContextMenu(props.tabItem)(e);
|
|
868
|
+
}
|
|
695
869
|
return (_ctx, _cache) => {
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
870
|
+
const _component_AMenuItem = MenuItem;
|
|
871
|
+
const _component_AMenuDivider = MenuDivider;
|
|
872
|
+
const _component_AMenu = Menu;
|
|
873
|
+
const _component_ADropdown = Dropdown;
|
|
874
|
+
return openBlock(), createBlock(_component_ADropdown, {
|
|
875
|
+
placement: "bottomRight",
|
|
876
|
+
trigger: unref(getTrigger),
|
|
877
|
+
overlayClassName: "dt-reuse-tabs__dropdown"
|
|
878
|
+
}, {
|
|
879
|
+
overlay: withCtx(() => [
|
|
880
|
+
createVNode(_component_AMenu, null, {
|
|
881
|
+
default: withCtx(() => [
|
|
882
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(getDropMenuList), (item, index) => {
|
|
883
|
+
return openBlock(), createElementBlock(Fragment, null, [
|
|
884
|
+
createVNode(_component_AMenuItem, {
|
|
885
|
+
onClick: ($event) => unref(handleMenuEvent)(item),
|
|
886
|
+
disabled: item.disabled
|
|
887
|
+
}, {
|
|
888
|
+
default: withCtx(() => [
|
|
889
|
+
createElementVNode("i", {
|
|
890
|
+
class: normalizeClass(["i pr-4", item.icon])
|
|
891
|
+
}, null, 2),
|
|
892
|
+
createElementVNode("span", _hoisted_3$6, toDisplayString(item.text), 1)
|
|
893
|
+
]),
|
|
894
|
+
_: 2
|
|
895
|
+
}, 1032, ["onClick", "disabled"]),
|
|
896
|
+
item.divider ? (openBlock(), createBlock(_component_AMenuDivider, {
|
|
897
|
+
key: `d-${index}`
|
|
898
|
+
})) : createCommentVNode("", true)
|
|
899
|
+
], 64);
|
|
900
|
+
}), 256))
|
|
901
|
+
]),
|
|
902
|
+
_: 1
|
|
903
|
+
})
|
|
904
|
+
]),
|
|
905
|
+
default: withCtx(() => [
|
|
906
|
+
unref(getIsTabs) ? (openBlock(), createElementBlock("div", {
|
|
907
|
+
key: 0,
|
|
908
|
+
onContextmenu: handleContext
|
|
909
|
+
}, [
|
|
910
|
+
createElementVNode("span", null, toDisplayString(unref(menuLabelMap).get(__props.tabItem.path) || __props.tabItem?.meta?.title || unref(t)("UNKNOWN_ROUTE")), 1)
|
|
911
|
+
], 32)) : (openBlock(), createElementBlock("span", {
|
|
912
|
+
key: 1,
|
|
913
|
+
onClick: handleContext,
|
|
914
|
+
class: "inline-block w-9 h-9 leading-9 -mt-0.5 text-zinc-600 text-center cursor-pointer border-l border-zinc-300 hover:text-zinc-900"
|
|
915
|
+
}, _hoisted_2$8))
|
|
916
|
+
]),
|
|
917
|
+
_: 1
|
|
918
|
+
}, 8, ["trigger"]);
|
|
707
919
|
};
|
|
708
920
|
}
|
|
709
921
|
});
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
922
|
+
function initAffixTabs() {
|
|
923
|
+
const affixList = ref([]);
|
|
924
|
+
const tabStore = useRouteReuseStore();
|
|
925
|
+
const router = useRouter();
|
|
926
|
+
const filterAffixTabs = (routes = []) => {
|
|
927
|
+
return routes && routes.reduce((tabs, route) => {
|
|
928
|
+
if (route.meta && route.meta.affix) {
|
|
929
|
+
tabs.push(toRaw(route));
|
|
930
|
+
}
|
|
931
|
+
return tabs;
|
|
932
|
+
}, []);
|
|
933
|
+
};
|
|
934
|
+
const addAffixTabs = () => {
|
|
935
|
+
const affixTabs = filterAffixTabs(router.getRoutes());
|
|
936
|
+
affixList.value = affixTabs;
|
|
937
|
+
for (const tab of affixTabs) {
|
|
938
|
+
tabStore.addTab({
|
|
939
|
+
meta: tab.meta,
|
|
940
|
+
name: tab.name,
|
|
941
|
+
path: tab.path
|
|
942
|
+
});
|
|
943
|
+
}
|
|
944
|
+
};
|
|
945
|
+
let isAddAffix = false;
|
|
946
|
+
if (!isAddAffix) {
|
|
947
|
+
addAffixTabs();
|
|
948
|
+
isAddAffix = true;
|
|
726
949
|
}
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
let routes = ref([]);
|
|
734
|
-
const { currentRoute = null } = useRouter();
|
|
735
|
-
watchEffect(() => {
|
|
736
|
-
if (!currentRoute || currentRoute.value.path === "/")
|
|
950
|
+
return affixList.value.map((item) => item.meta?.title).filter(Boolean);
|
|
951
|
+
}
|
|
952
|
+
function useSortable(el, options) {
|
|
953
|
+
function initSortable() {
|
|
954
|
+
nextTick(async () => {
|
|
955
|
+
if (!el)
|
|
737
956
|
return;
|
|
738
|
-
|
|
957
|
+
const Sortable = (await import("sortablejs")).default;
|
|
958
|
+
Sortable.create(unref(el), {
|
|
959
|
+
animation: 500,
|
|
960
|
+
delay: 400,
|
|
961
|
+
delayOnTouchOnly: true,
|
|
962
|
+
...options
|
|
963
|
+
});
|
|
739
964
|
});
|
|
740
|
-
return (_ctx, _cache) => {
|
|
741
|
-
const _component_ABreadcrumb = Breadcrumb;
|
|
742
|
-
return openBlock(), createElementBlock("div", _hoisted_1$h, [
|
|
743
|
-
createVNode(_component_ABreadcrumb, { routes: unref(routes) }, {
|
|
744
|
-
itemRender: withCtx(({ route }) => [
|
|
745
|
-
createElementVNode("span", null, toDisplayString((unref(getIsZH) ? route.label : route.enLabel) || route.meta?.title), 1)
|
|
746
|
-
]),
|
|
747
|
-
_: 1
|
|
748
|
-
}, 8, ["routes"])
|
|
749
|
-
]);
|
|
750
|
-
};
|
|
751
965
|
}
|
|
752
|
-
}
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
};
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
|
|
966
|
+
return { initSortable };
|
|
967
|
+
}
|
|
968
|
+
function useTabsDrag(affixList) {
|
|
969
|
+
const tabStore = useRouteReuseStore();
|
|
970
|
+
const { getCanDrag } = useMultipleTab();
|
|
971
|
+
nextTick(() => {
|
|
972
|
+
if (!unref(getCanDrag))
|
|
973
|
+
return;
|
|
974
|
+
const el = document.querySelectorAll(`.dt-reuse-tabs .ant-tabs-nav-list`)?.[0];
|
|
975
|
+
const { initSortable } = useSortable(el, {
|
|
976
|
+
filter: (e) => {
|
|
977
|
+
const text = e?.target?.innerText;
|
|
978
|
+
if (!text)
|
|
979
|
+
return false;
|
|
980
|
+
return affixList.includes(text);
|
|
981
|
+
},
|
|
982
|
+
onEnd: (evt) => {
|
|
983
|
+
const { oldIndex, newIndex } = evt;
|
|
984
|
+
if (isNullAndUnDef(oldIndex) || isNullAndUnDef(newIndex) || oldIndex === newIndex)
|
|
985
|
+
return;
|
|
986
|
+
tabStore.sortTabs(oldIndex, newIndex);
|
|
987
|
+
}
|
|
988
|
+
});
|
|
989
|
+
initSortable();
|
|
990
|
+
});
|
|
991
|
+
}
|
|
992
|
+
const _hoisted_1$g = { class: "dt-reuse-tabs leading-8 border-b border-solid border-gray-200" };
|
|
993
|
+
const _sfc_main$v = /* @__PURE__ */ defineComponent({
|
|
994
|
+
__name: "index",
|
|
764
995
|
setup(__props) {
|
|
765
|
-
const { t } = useI18n("UI");
|
|
766
|
-
const menuList = ref([]);
|
|
767
996
|
const router = useRouter();
|
|
768
|
-
const
|
|
769
|
-
const
|
|
770
|
-
const
|
|
771
|
-
|
|
997
|
+
const go = useGo(router);
|
|
998
|
+
const tabStore = useRouteReuseStore();
|
|
999
|
+
const { getShowQuick, getShowRedo } = useMultipleTab();
|
|
1000
|
+
const activeKeyRef = ref(null);
|
|
1001
|
+
const getTabsState = computed(() => {
|
|
1002
|
+
return tabStore.getTabList.filter((item) => !item.meta?.hideTab);
|
|
772
1003
|
});
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
filter.value = null;
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
function filterMenu() {
|
|
781
|
-
menuList.value = getFilterMenu(filter.value, true);
|
|
1004
|
+
const unClose = computed(() => unref(getTabsState).length === 1);
|
|
1005
|
+
function handleChange(activeKey) {
|
|
1006
|
+
activeKeyRef.value = activeKey;
|
|
1007
|
+
go(activeKey);
|
|
782
1008
|
}
|
|
783
|
-
function
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
menuList.value = [];
|
|
788
|
-
});
|
|
1009
|
+
function handleEdit(targetKey) {
|
|
1010
|
+
if (unref(unClose))
|
|
1011
|
+
return;
|
|
1012
|
+
tabStore.closeTabByKey(targetKey, router);
|
|
789
1013
|
}
|
|
1014
|
+
const affixTextList = initAffixTabs();
|
|
1015
|
+
useTabsDrag(affixTextList);
|
|
1016
|
+
watch(
|
|
1017
|
+
() => router.currentRoute.value.path,
|
|
1018
|
+
(v) => {
|
|
1019
|
+
if (v === "/" || v === "/login")
|
|
1020
|
+
return;
|
|
1021
|
+
const { meta = {} } = unref(router.currentRoute);
|
|
1022
|
+
const { hideTab = false } = meta;
|
|
1023
|
+
if (activeKeyRef.value !== v) {
|
|
1024
|
+
activeKeyRef.value = v;
|
|
1025
|
+
}
|
|
1026
|
+
if (!hideTab) {
|
|
1027
|
+
tabStore.addTab(unref(router.currentRoute));
|
|
1028
|
+
}
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
immediate: true
|
|
1032
|
+
}
|
|
1033
|
+
);
|
|
790
1034
|
return (_ctx, _cache) => {
|
|
791
|
-
const
|
|
792
|
-
const
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
class: "px-5 leading-9 border-gray-200 border-dashed border-b m-0 cursor-pointer transition-all duration-300 text-13"
|
|
806
|
-
}, toDisplayString(unref(getIsZH) ? menu.label : menu.enLabel), 9, _hoisted_2$9);
|
|
807
|
-
}), 256)),
|
|
808
|
-
!menuList.value.length ? (openBlock(), createElementBlock("div", _hoisted_3$6, [
|
|
809
|
-
createVNode(_component_AEmpty, {
|
|
810
|
-
description: "\u6682\u65E0\u6570\u636E",
|
|
811
|
-
imageStyle: { width: "100%" }
|
|
812
|
-
})
|
|
813
|
-
])) : createCommentVNode("", true)
|
|
814
|
-
]),
|
|
1035
|
+
const _component_ATabPane = TabPane;
|
|
1036
|
+
const _component_ATabs = Tabs;
|
|
1037
|
+
return openBlock(), createElementBlock("div", _hoisted_1$g, [
|
|
1038
|
+
createVNode(_component_ATabs, {
|
|
1039
|
+
type: "editable-card",
|
|
1040
|
+
size: "small",
|
|
1041
|
+
animated: false,
|
|
1042
|
+
hideAdd: true,
|
|
1043
|
+
tabBarGutter: 3,
|
|
1044
|
+
activeKey: activeKeyRef.value,
|
|
1045
|
+
onChange: handleChange,
|
|
1046
|
+
onEdit: handleEdit,
|
|
1047
|
+
class: "h-8"
|
|
1048
|
+
}, createSlots({
|
|
815
1049
|
default: withCtx(() => [
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
1050
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(getTabsState), (item) => {
|
|
1051
|
+
return openBlock(), createBlock(_component_ATabPane, {
|
|
1052
|
+
key: item.query ? item.fullPath : item.path,
|
|
1053
|
+
closable: !(item && item.meta && item.meta.affix)
|
|
1054
|
+
}, {
|
|
1055
|
+
tab: withCtx(() => [
|
|
1056
|
+
unref(getShowQuick) ? (openBlock(), createBlock(unref(_sfc_main$w), {
|
|
1057
|
+
key: 0,
|
|
1058
|
+
tabItem: item
|
|
1059
|
+
}, null, 8, ["tabItem"])) : createCommentVNode("", true)
|
|
1060
|
+
]),
|
|
1061
|
+
_: 2
|
|
1062
|
+
}, 1032, ["closable"]);
|
|
1063
|
+
}), 128))
|
|
823
1064
|
]),
|
|
824
|
-
_:
|
|
825
|
-
}
|
|
826
|
-
|
|
1065
|
+
_: 2
|
|
1066
|
+
}, [
|
|
1067
|
+
unref(getShowRedo) || unref(getShowQuick) ? {
|
|
1068
|
+
name: "rightExtra",
|
|
1069
|
+
fn: withCtx(() => [
|
|
1070
|
+
unref(getShowRedo) ? (openBlock(), createBlock(unref(_sfc_main$x), { key: 0 })) : createCommentVNode("", true),
|
|
1071
|
+
unref(getShowQuick) ? (openBlock(), createBlock(unref(_sfc_main$w), {
|
|
1072
|
+
key: 1,
|
|
1073
|
+
isExtra: "",
|
|
1074
|
+
tabItem: _ctx.$route
|
|
1075
|
+
}, null, 8, ["tabItem"])) : createCommentVNode("", true)
|
|
1076
|
+
]),
|
|
1077
|
+
key: "0"
|
|
1078
|
+
} : void 0
|
|
1079
|
+
]), 1032, ["activeKey"])
|
|
1080
|
+
]);
|
|
827
1081
|
};
|
|
828
1082
|
}
|
|
829
1083
|
});
|
|
830
|
-
const
|
|
831
|
-
|
|
832
|
-
const _hoisted_3$5 = {
|
|
833
|
-
class: "pr-2",
|
|
834
|
-
size: 16
|
|
835
|
-
};
|
|
836
|
-
const _hoisted_4$3 = /* @__PURE__ */ createElementVNode("span", { class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300" }, [
|
|
837
|
-
/* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-language" })
|
|
838
|
-
], -1);
|
|
839
|
-
const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
840
|
-
__name: "lang-picker",
|
|
841
|
-
props: {
|
|
842
|
-
reload: { type: Boolean }
|
|
843
|
-
},
|
|
1084
|
+
const _sfc_main$u = /* @__PURE__ */ defineComponent({
|
|
1085
|
+
__name: "fullscreen",
|
|
844
1086
|
setup(__props) {
|
|
845
|
-
const
|
|
846
|
-
const visible = ref(false);
|
|
847
|
-
let currentLang = DtCache.getLocal(CacheKey.LOCALE);
|
|
848
|
-
async function toggleLang(lang) {
|
|
849
|
-
visible.value = false;
|
|
850
|
-
if (lang !== currentLang) {
|
|
851
|
-
currentLang = lang;
|
|
852
|
-
await changeLocale(lang);
|
|
853
|
-
props.reload && location.reload();
|
|
854
|
-
}
|
|
855
|
-
}
|
|
1087
|
+
const { toggle, isFullscreen } = useFullscreen();
|
|
856
1088
|
return (_ctx, _cache) => {
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
}, {
|
|
866
|
-
content: withCtx(() => [
|
|
867
|
-
createElementVNode("ul", _hoisted_1$f, [
|
|
868
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(localeList), (it) => {
|
|
869
|
-
return openBlock(), createElementBlock("li", {
|
|
870
|
-
onClick: ($event) => toggleLang(it.event),
|
|
871
|
-
class: normalizeClass(["px-4 my-1 leading-9 flex border-gray-200 cursor-pointer hover:bg-gray-100 transition-all duration-300 text-13", it.event === unref(currentLang) ? "active bg-gray-100" : ""])
|
|
872
|
-
}, [
|
|
873
|
-
withDirectives(createElementVNode("span", _hoisted_3$5, null, 512), [
|
|
874
|
-
[_directive_icon, it.icon]
|
|
875
|
-
]),
|
|
876
|
-
createElementVNode("span", null, toDisplayString(it.text), 1)
|
|
877
|
-
], 10, _hoisted_2$8);
|
|
878
|
-
}), 256))
|
|
879
|
-
])
|
|
880
|
-
]),
|
|
881
|
-
default: withCtx(() => [
|
|
882
|
-
_hoisted_4$3
|
|
883
|
-
]),
|
|
884
|
-
_: 1
|
|
885
|
-
}, 8, ["visible"]);
|
|
1089
|
+
return openBlock(), createElementBlock("span", {
|
|
1090
|
+
class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300",
|
|
1091
|
+
onClick: _cache[0] || (_cache[0] = (...args) => unref(toggle) && unref(toggle)(...args))
|
|
1092
|
+
}, [
|
|
1093
|
+
createElementVNode("i", {
|
|
1094
|
+
class: normalizeClass(["i block", !unref(isFullscreen) ? "ic:baseline-fullscreen" : "ic:baseline-fullscreen-exit"])
|
|
1095
|
+
}, null, 2)
|
|
1096
|
+
]);
|
|
886
1097
|
};
|
|
887
1098
|
}
|
|
888
1099
|
});
|
|
@@ -1024,8 +1235,8 @@ const Bar = defineComponent({
|
|
|
1024
1235
|
);
|
|
1025
1236
|
}
|
|
1026
1237
|
});
|
|
1027
|
-
const _hoisted_1$
|
|
1028
|
-
const _sfc_main$
|
|
1238
|
+
const _hoisted_1$f = { class: "scrollbar relative h-full overflow-hidden" };
|
|
1239
|
+
const _sfc_main$t = /* @__PURE__ */ defineComponent({
|
|
1029
1240
|
__name: "scroll-bar",
|
|
1030
1241
|
props: {
|
|
1031
1242
|
wrapClass: {
|
|
@@ -1094,7 +1305,7 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
|
1094
1305
|
}
|
|
1095
1306
|
});
|
|
1096
1307
|
return (_ctx, _cache) => {
|
|
1097
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
1308
|
+
return openBlock(), createElementBlock("div", _hoisted_1$f, [
|
|
1098
1309
|
createElementVNode("div", {
|
|
1099
1310
|
ref_key: "wrap",
|
|
1100
1311
|
ref: wrap,
|
|
@@ -1127,12 +1338,12 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
|
1127
1338
|
};
|
|
1128
1339
|
}
|
|
1129
1340
|
});
|
|
1130
|
-
const _sfc_main$
|
|
1341
|
+
const _sfc_main$s = /* @__PURE__ */ defineComponent({
|
|
1131
1342
|
__name: "scroll-container",
|
|
1132
1343
|
setup(__props) {
|
|
1133
1344
|
const scrollbarRef = ref(null);
|
|
1134
1345
|
return (_ctx, _cache) => {
|
|
1135
|
-
return openBlock(), createBlock(_sfc_main$
|
|
1346
|
+
return openBlock(), createBlock(_sfc_main$t, mergeProps({
|
|
1136
1347
|
ref_key: "scrollbarRef",
|
|
1137
1348
|
ref: scrollbarRef
|
|
1138
1349
|
}, _ctx.$attrs, { class: "w-full h-full" }), {
|
|
@@ -1144,7 +1355,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
|
1144
1355
|
};
|
|
1145
1356
|
}
|
|
1146
1357
|
});
|
|
1147
|
-
const _sfc_main$
|
|
1358
|
+
const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
1148
1359
|
__name: "slot-container",
|
|
1149
1360
|
props: {
|
|
1150
1361
|
template: {
|
|
@@ -1168,48 +1379,264 @@ const withInstall = (comp) => {
|
|
|
1168
1379
|
};
|
|
1169
1380
|
return comp;
|
|
1170
1381
|
};
|
|
1171
|
-
const DtScrollContainer = withInstall(_sfc_main$
|
|
1172
|
-
const DtSlotContainer = withInstall(_sfc_main$
|
|
1173
|
-
const _hoisted_1$d = { class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300 relative" };
|
|
1174
|
-
const
|
|
1175
|
-
|
|
1382
|
+
const DtScrollContainer = withInstall(_sfc_main$s);
|
|
1383
|
+
const DtSlotContainer = withInstall(_sfc_main$r);
|
|
1384
|
+
const logoUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAzfGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxOS0wNS0wNlQxMToyNzoyOCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0xMC0yNFQxNDozMToxNiswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjEtMTAtMjRUMTQ6MzE6MTYrMDg6MDAiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NWU1YmFlNWUtOTQzOS1lYjQ4LWJiMjEtZjZjM2UwOWYxODM2IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZGU4M2YxYWYtODBkMS1kMTRlLTg5ZWMtNGE1MjUzNzFkZTcwIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OTg1ODkwODQtMjkyYi01ODRiLTkzODAtNWJmY2E3NjJmYzk5Ij4gPHBob3Rvc2hvcDpEb2N1bWVudEFuY2VzdG9ycz4gPHJkZjpCYWc+IDxyZGY6bGk+MDBCQTBEMEExQ0M5RDAwNTMxNTlBMjBGRTcxOTA2RTg8L3JkZjpsaT4gPHJkZjpsaT4wMTQwNjdEM0ZDNjM5OTM3RTc4QkFCNDFBMzdCNzMwNTwvcmRmOmxpPiA8cmRmOmxpPjAyRDI2REY0MDMxREJFOUM5N0Q5Mzg1RjE5QTUwMUQ0PC9yZGY6bGk+IDxyZGY6bGk+MDcxNDVGQzc5RjkxODMwQjNGRUNFOUZCODNEMDZDN0M8L3JkZjpsaT4gPHJkZjpsaT4wRDgyMkI0MThFM0E2RjZCMjBDMEM2NjkwOUI0QTc5QTwvcmRmOmxpPiA8cmRmOmxpPjBGOUM0NTJBMkZGQTE3QzU4RTQ5MzVFQUU3RUJEQzI1PC9yZGY6bGk+IDxyZGY6bGk+MTY2N0I2OTg3MUJGRjQ4MThEODU5RENGMjIzOTUyMjg8L3JkZjpsaT4gPHJkZjpsaT4xOTNFMUQ2M0ExRDJEN0VBN0U0MTFBMzlBQzNENkJBMzwvcmRmOmxpPiA8cmRmOmxpPjIwNjY1MENBM0RBNUM2OURFQjZCRjAyMTQ3MEUzM0Y1PC9yZGY6bGk+IDxyZGY6bGk+MjE1QzM3NDMwNUM1MUVDQ0FENUM1RDUzQThCMEMwMkI8L3JkZjpsaT4gPHJkZjpsaT4yMThDREMzM0Y0OTE1NTMzQzRFQjMwRUIzQTU3MjM1RjwvcmRmOmxpPiA8cmRmOmxpPjI0N0QxRUVDRThCMjkzOTJCNzQ3RjVCMzQ3Rjc5RDRGPC9yZGY6bGk+IDxyZGY6bGk+MkVDOURBNDM2NEQ2RTBCRjYwNzExRDJFOUY1OEM4ODg8L3JkZjpsaT4gPHJkZjpsaT4zNzEyQTgyQjE3NEM0OUMwMDg2MTUxMEJBODEzMDlBOTwvcmRmOmxpPiA8cmRmOmxpPjNEQjIwQTEwQzQyQjZGMkZEMEMwQkYyNUZDNEU5NzFFPC9yZGY6bGk+IDxyZGY6bGk+NDFDMTBEM0IzRUFBQTUwQjI5ODRBNzY1MEM5QzQzMTc8L3JkZjpsaT4gPHJkZjpsaT40OTQxN0MwQjQxMDgxRkJDRDQxNjAwQTM1QUE0MkEwMzwvcmRmOmxpPiA8cmRmOmxpPjRCQUVBREUyQjhFMTk4MTA2MkM5RjQzMTFCREI5Njg5PC9yZGY6bGk+IDxyZGY6bGk+NEU5NTUxOEI4OUI2MjEwOTRFNDdGMEU3MUQ4MUYxRjQ8L3JkZjpsaT4gPHJkZjpsaT41NDlEOUJFODJBRjc3NzVFOTMzRDc3QjJDOEY4N0QwMDwvcmRmOmxpPiA8cmRmOmxpPjU1NTQ4QzhDN0VEODdCRDI2MUI1RTNDRTBCQzdGNUM3PC9yZGY6bGk+IDxyZGY6bGk+NTg0RjVFMjNEMEFFMDA0NUQ4OENBM0I3MTUxNDQyODk8L3JkZjpsaT4gPHJkZjpsaT41OUVDMTdCMzk5Q0Y3QzFDQkJEN0FBMDUwODYyMzY1OTwvcmRmOmxpPiA8cmRmOmxpPjVDRUFCMzA0QUVFMTUyMzVGMDM3Mjg1NTdDMjFCQTBBPC9yZGY6bGk+IDxyZGY6bGk+NUUwRkI3MDI4QjU5NDlBNEFDRkU0NjIwNjRCQjVFNTc8L3JkZjpsaT4gPHJkZjpsaT42NzlCNDI1OEZGQjVDQTZBQUM2MDgzQkJBQTNFMDYwRTwvcmRmOmxpPiA8cmRmOmxpPjZDMDkzMzdDRjQxRTU3NTQ2NTFFMTJCNkRDMTU5OTcyPC9yZGY6bGk+IDxyZGY6bGk+NzU1RTZBRjM1MzM3ODA5MkM3NzlCNDE1MDAwRDg0RkE8L3JkZjpsaT4gPHJkZjpsaT43OUJDMjI2N0QxODVCOTM4MTA4RDQ2N0ZBNEI0QzVBOTwvcmRmOmxpPiA8cmRmOmxpPjdDMTMzQkQ1NDA3MzQ3RTVBREJFMzJBNDlCODIzRUFEPC9yZGY6bGk+IDxyZGY6bGk+ODE2QzZGQUI0NTQ4NzMyNjU5NTc2NkNCNEYzNDFEQUQ8L3JkZjpsaT4gPHJkZjpsaT44MzZFNkZCNjlEMDk4Njg5RDc4RDdEQjlEQjhDREExRTwvcmRmOmxpPiA8cmRmOmxpPjg1QTM5MUEyMkM2NEY1Q0IwQTM3QTg2MzZFNTRGOUY2PC9yZGY6bGk+IDxyZGY6bGk+OEE0QkZEOTQzQUZGOTlEMDdEREU1MUYwMDFDNEE5REE8L3JkZjpsaT4gPHJkZjpsaT45NEMzMkU2QTE1MTdCNzBBNDM5ODVBQTc2NTM0NEI2OTwvcmRmOmxpPiA8cmRmOmxpPkFCMzlENjBENTExNEVFOEE4RkJBREUyRTkyMEM0NUExPC9yZGY6bGk+IDxyZGY6bGk+QjIwMUZGOTM3QzYwNzkxMEY4MUY5REJERkNDRkZGRTk8L3JkZjpsaT4gPHJkZjpsaT5CRTYxMzMxREQ1MkI2MjlFNjgwNUVCMzQ3MkRFRTJEMjwvcmRmOmxpPiA8cmRmOmxpPkJFQzM4NTRBODA1RkQ1NkM3RThEMkUxN0M0NzA5ODkwPC9yZGY6bGk+IDxyZGY6bGk+Qzg5NkI0OTZGMTgyREU1MTgzNTg3MEIwOTM0MUQ4RTg8L3JkZjpsaT4gPHJkZjpsaT5DQkJEN0U5OEM1MEI0RTE0RDA0MkNFNTMzQUE1QTgyMDwvcmRmOmxpPiA8cmRmOmxpPkQ5NjQzNUIwNkRFNTQ2OTg4MDUyMjVDNERBRkUzOEIyPC9yZGY6bGk+IDxyZGY6bGk+RTJCNTc3NDY4ODE4NEI2Mzk4OTE0RTI4MkQ5RThFODQ8L3JkZjpsaT4gPHJkZjpsaT5FNDJCMEFDNjg1OTAyMTcyQzIxNjEyQkJGMjFGRjg0QjwvcmRmOmxpPiA8cmRmOmxpPkU1QjQzNTBCREVFMTQ1NUMxM0UxNTU1NEM2MEY2QjQ0PC9yZGY6bGk+IDxyZGY6bGk+RUI3NzhBRjNENDVERUNBQkFCRUEwRkZDQTg4QTEyNDM8L3JkZjpsaT4gPHJkZjpsaT5GNTY3RjdBNDRCNTJFQUMwNTYxNkVBODdGRjlEMzMxQzwvcmRmOmxpPiA8cmRmOmxpPkY1RjgzQTQyMzI4N0E0MUUyMTM5ODdDNTRERjhFOUQ3PC9yZGY6bGk+IDxyZGY6bGk+RkVBQkZDQTQyQzY1N0ZFN0Y1MjEzOEQ0NkQyRTQ2MjM8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MDQ3NzM4NzYtZTg2Zi0xMWU3LTg4MmMtYWRiZmQ5NWE3NjU0PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjA4ZjFmZmI5LWM1MWUtMTE3OS1iNTJlLWFkNGFiZjVjNmRhZDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDowYjM2MmY4Yi1hY2I2LTExZTUtOGZmZS1lMzQ2MTgxMGQzZTk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MTAwMDFlZTUtZGVmNy03MjRiLTg3OTctZDg4YjE0ZWI3YjExPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjE0Y2YxMGI4LWNlOTItMTE3OS04ZDJhLWIzNjcyY2QwOWI2MzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoxNzM4ZDA5ZS05YTk4LTExZTUtOTE3ZS1kNGExOTRhYWE2N2U8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MWZkODY3YmItYzJlOC0xMTc5LWFkOTYtZjBjODUzNzZkYjFkPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjIxMzMzNjE3LWNjYWItMDg0OS04YWFmLWE0MzQwY2ZiZGVmZjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDoyNGI4YzllYS05MDU3LTExZTYtODBkYi04ZTk5ZjZiZDFiNTY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6MmRmNzZkN2YtOWMyMy0xMWU1LWJlOTUtZDNiYjFlNDBhYmZhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjM0NDUxNTQyLTlhYjQtMTFlNS05MTdlLWQ0YTE5NGFhYTY3ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDozNTU4NmExZi00M2FiLTExNzktYTg2Ny1hMmFiMmIxYjU2OTY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Mzg2ZDAwYzAtNmRjMi0xMTc3LWFiNjUtYTIwYWMzNDdjYzI2PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjNhNDdmMTQxLWJlNmItZjE0My1hMzM3LTM4ZmIwZGQzMzljYjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDozYjk1ZmY2Zi1hYjAwLTExNzktOGEyYS1lYmY4MzMyOTc0NTc8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NDVjOGUzYjMtYjg5Mi00ZTQwLTg3YjUtYWIwNTk0NmFjMDE2PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjQ4YTI0ZDkyLWUyMzMtMjM0NC1iNTQ1LWE3OTA3MDY1MjJiMzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo0YmNiZWZkMS04MTBlLTJkNGEtYTA4NS04MGVmYmMwZjJiODA8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NTUzNTRjMmEtYzMyOC0xMTc5LWFkOTYtZjBjODUzNzZkYjFkPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjcxODQ0ZWUwLWMwY2MtMTE3OS05ODliLWNlNWRkM2Y3NmNhYjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3MzFhNjYwZC1jY2Q4LWNiNDQtOWZkYS1jOTY1NjAwYTlmOTI8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6NzdiYjEwZmYtYjI4ZC0xMWU4LThiN2UtZjE3MTY4ZDMxZTljPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjgyNGIxODI5LTliYTUtMTFlNS1hZmM2LTg3NjcxZTA3ZTBjNDwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4MzQ2YzY1NC1kMzM0LTEwNDMtYjZjNS1kYTM3N2QwYWIyNTg8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6OTgyODRiN2UtOWIzNi0xMWU1LTkxN2UtZDRhMTk0YWFhNjdlPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjlkNDM5Y2UwLWIyM2UtMTFlNS05MTYxLWY5ZDdjYzE1OTQzMjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo5ZWQ1MWIzNS1hYzM2LTExNzktYmE0ZS1kZjIxY2JlNzI1Yjk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YTE2NTQzNjYtODg0ZS0xMWU1LThjOTAtYzY5MjYzYzdiOTYxPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmEzMzUzZGI3LWE4MDItOTc0Mi1iZmYzLTI0Mzk4YjY5OTI5ZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDphZDM0MWU1Ni1iMjczLTE2NDktODY2ZC0xN2E5MjcxZjExODg8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6YmExNjlmMjMtOTA1OC0xMWU2LTgwZGItOGU5OWY2YmQxYjU2PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmJlNjYzNjRhLWUwM2YtNWU0OS05YmY0LWM0YjIwMTc3NTliNTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpiZTY2YzcxYy1hYTQ1LTExZTUtYmY4Yi1hZWNlNTk4MWMzNmQ8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Yzc5Yzc3YzYtOWMxOS0xMWU1LWJlOTUtZDNiYjFlNDBhYmZhPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmNjZDJjZGNhLTQ2OWUtMTE3OS1iYzUzLWRmNDJmNjRkYjZhYzwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkZDE2YWYyNi1iNGI2LTExNzktODkwYi05YjY5NDhiZDgzZTk8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6ZTNmZmVlNjgtM2MxMi03MzQzLWE1NTItOTAxYmFkMTViOGMwPC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmVhOGYyYzNkLTkwNTMtMTFlNi04MGRiLThlOTlmNmJkMWI1NjwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmMTc1NDg3ZC05YjcwLTExZTUtYWU3Mi1lYmI4OWUwZmQwZWY8L3JkZjpsaT4gPHJkZjpsaT5hZG9iZTpkb2NpZDpwaG90b3Nob3A6Zjg4Y2M5NGQtYzcwZS0xMTc5LWJjNzQtYzljNmY5NjcyYTQ0PC9yZGY6bGk+IDxyZGY6bGk+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmY5MTdmNjM5LTkwNGUtMTFlNi05MThjLWZmZjgyYjQxY2YyZTwvcmRmOmxpPiA8cmRmOmxpPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmYWU1ZDczNy05YTIzLTExZTUtOTJlNC04YzM5MzI2N2QwMWM8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjAwMWU2NDI1LWI5ZTgtMWQ0My1hY2EzLWQwMzM3MDM4NGFjYzwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MDE4MDExNzQwNzIwNjgxMTgwODNBMzJBMUI2ODVERTQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjAyZDdmMjgzLTE0ZTUtNDAyOS1hZWZhLThmMGIwOTk0NWQyMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MDUyN2I1ODctZGRiZi1jNzQ2LWI3YzYtZGQ5MDlhNzhhZDllPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDowRUVEMzFGQkQxQjBFMjExQjc5OUFEQTUzNjYzOTg5NTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MGNkOWFiZWMtM2UyOC1hZjQ3LTk1NjctZjBlY2EwZTU4MGFkPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoxMDdGMjg5NDUxNTAxMUU4QkNGOEU4NzI4QzNERDBCMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MTBjZGNiZGMtY2M2NS00ZWJmLWEzZmEtMWZmNjIyMTc2ODZjPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoxM2Q2YjY5My0zM2QwLWZmNDctOTk1Yy0yZGRkYzQ0NTgxMTI8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjFGRjAyMjJBNzI3RkUzMTE4QTIyRkI5QzU1Rjk3RkVGPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoxY2MzNWUzOC0yMTY3LTk4NDgtOTNhOC05ZmMyNTAxNGMzMzM8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjI2NzdiOWEzLTQxZDItMzE0NC1iNTI0LWQ3N2U1YTYyZGI0MDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MjZlYjJmNWItNWViYy00ODk3LWEyZmItYjc0MGQ5ZTMwZDc2PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyQkU5QjkyOUIyNkExMUU1QjIxNjhFODMzRDJENUU0RjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MmEyYTA2OWEtNjEwNS00NzM3LWE0ZjktNmJiNWEwNzI2ZjdhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDoyYzRhZDFjYy1lNzUwLTFlNDctYTlmMi0xNTEwZTFiMDRiOTM8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjJkZWZlNGVjLTdjYzctYmU0OS1iYzg5LTQ5OGUzZmQ1ZjVmZjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6MzRDNjBDN0JCMkQwMTFFNTg4NUM5MjhFNTk3ODMxQ0Y8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjM2Y2ViMGI3LTU4MTktNTQ0NC1iN2NmLWU2OWEyODBmNWFhMTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6M0VBQzJERDc1MzUxRTgxMTk3NkFGMzlCNEI2QUZCRjg8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjNhNWFiMjgwLTQwZmUtNGY1ZS05ZmE2LTcxNjE2YjczODEyYjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6M2Q1Njg0OTgtOTg0ZC00NThhLWIyNDktZWFjYzMyMjUyYTIwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo0MTk0ZmE2Mi1jYWRlLThmNDktYTIxNy1lY2E3ZWUzZDIyYTA8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ0MzMyRjU5QjI2MDExRTU4RDNGOEJEQUJDMENEMEFDPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo0NmVkZjRlNC05MTUyLTVlNGItODA4Ny1kYTQzN2JjNWRjM2M8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjQ4RTNEMDA3MDgyMDY4MTE4MjJBRDdEMjNEMDQ0QTk1PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo1Y2EzNTUzMS1lOTZmLTRjMjAtOWViYi01M2U3NTJkMDMxYWQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjVlODc5ZTZmLWE3MjMtMjI0Ny1iOGQ4LWE5MDI4YzY4YmQyZjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NjViOTJlMzAtNWU0NC0wNjRmLTk3YWQtMzg2YWI5ZTQ3NzEwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo2ODc0QjFFNzZBMjA2ODExODIyQUM2N0Y1OEJFQTE3OTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NjliYWZkZWItNDM4NS04MjQ4LTk2NDgtMTIyN2YxMTE2ZTViPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo2QTc0QjFFNzZBMjA2ODExODIyQUM2N0Y1OEJFQTE3OTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NkZENTNBMzgwQTIwNjgxMTgyMkFDRjE5MTgwRTgxQjI8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjZlYjFkY2Y1LTliNjctOWQ0NC05MWJmLWZmODQzYWNmMTZmMTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6NzI2MGY1YjQtY2MxNy1kZjRlLWIwMWUtZjEzYWQyMWQwODkwPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo3NDljYmFlOC0xNTRmLTM5NDAtOWVlNi0yMmQxZjgwZmEzYTE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjc3OUQyNjQwQjI1QjExRTU5M0MxRDg5NTlDNDg0NDg1PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo3YTE1ZGNmMS1kYTE4LTQ3YzUtYWI0ZS1iOTQ4NTUyOTAyNjc8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjdhOTJkNDBiLTY5ZTctNDlhMy04ZDIzLTIzZjNkNzc0ZmVkYTwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6N2MwMmQ3YjEtMDNkYS00Zjg1LTk5YzAtMDBiM2YwMzI5MDNmPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo3ZGRjODNmMS1jYTIxLTlhNDMtYWFlMS1kMjhkZTkyMjc3OWQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjhEMzA2NTQ0OTYxQjExRTQ4OTM3REM3Rjg4OUZGMDQzPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4RkNCRUNBRkIyNkMxMUU1OUExNDgwMjUxQTI3MzQzNjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6OGM2NWIxOTYtOWNhNC1mNDQ0LTlkMzQtZDM1MzM4YTllMjE1PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDo4Y2M3ODA2MS0yNzk2LTRlYTAtYTVhZC1hNjk3ZDRjMjA3OGU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjkzNTk1Mzc0LTc5MjUtM2U0ZC1iMDRjLTk2YzU2OTY1NGNkYjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6OTU5NkI5OTE3NzIwNjgxMTgyMkFDNjdGNThCRUExNzk8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOjlGMUZFMkJFRTNDMEU1MTE5QUU5OUNFNTZGNjc4NzY3PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpCQkFFMjI5OEYxMTlFOTExODhFMjgzQjVGRjY0QkU5MjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6QzM3MTlGNDQwMkM0RTUxMUJBNDE4NUE1ODhCNTEwODc8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkM5NjUwQ0I5MDcyMDY4MTE4MDgzQTE1REU3MzQzNjUyPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpENTNBODdBQzQxNjdFNDExQkZERUY2ODdGMzU2NEY5NzwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6REJDMjdENjQyRTZCRTUxMTlGQkVGMkREMkU4REFDRUY8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOkRFQjkwOEE1OEI3OEU1MTE5MTk5OUVFQkJCRDI4M0UyPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpGODdGMTE3NDA3MjA2ODExODIyQUNCNkU2OTFDMjRGRjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YTIyZmVmZDItNTM0MS05NDQ4LWFiNDQtYWJhZjhmNDgxOTlhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDphMjk1Y2U2Ny1iOWIxLThhNGUtOGZmYS02YjJjOTIxMDlmMTY8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmE2NDcwMTE5LTg3ZWUtOGU0ZC04ODZlLTM1MDUwY2Y3YTBjYzwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YTdiMjA5MmItMDg2Zi02NTQ3LWJhNTUtNzEzN2ZhOTRmZjVjPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDphN2M2ZjA0NS1lNTE3LTVlNGUtOTUzZi1mY2I3ODMyMzZkMDY8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmE4NGU1MWFmLWJhZTYtNGNiOS05ZGQ3LTZmOTJjYWVjZDQ1NDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YWVkZjcwYWMtOGExNy05OTQ1LTgxYzctM2FmNWFlM2UwM2VhPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpiMjljYzBmMi05MTg1LTQ0ZjEtOWU5YS1kMzhkMTkwMmU5OGQ8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmJhMGJjNGViLTJjYzgtMTg0ZC1iN2Q1LTE2MzQxM2JkY2I5MjwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YmMxYzdmNWYtNTMzMy1kZDQ3LTg1NmMtMDFlNTJhN2NiMWY4PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpiZTE0OWFhNy0zZDM4LTc5NGEtOWVhMi0xYWFiMDAxNGMwNzY8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmJmYWIwNDVmLTQ4MTItNDdlNi05N2NlLWNjNzk1NmUzYTFhNzwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6YzIxNWY4ODUtNGI4Ny01YjQxLTg1M2YtM2Q5NmRlNWMxOThlPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpjNWIxODhiNC1hZTMzLTRiODctYmRjZC05M2U5Yzk0MWM1YjA8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmM5YTI2YzkyLTQ1MTgtNGI1YS04NjIwLWIxYjExMTZlMGZkZDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6Y2YwMDViZTUtNWYzZi1mMTQ1LWI5OGEtYTU2YjU1NTk4YzkyPC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDpkZDliOTBkMi01MjcyLTQyOWUtODQ2Zi1mMTMxMmE0ODNlNjE8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmU1NmQyNjUyLWM3YzQtMzk0ZC05MzA4LTlmM2Q5YmQzMGU1MDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6ZTcwNTM5OWQtNDY0ZS00M2ZmLWE1MmMtY2RjOGE4YmY3ZWE2PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDplZDAxYWNlYS0xNDYwLTYxNGQtODdlNC1mMmEzNDM1NjA3Njk8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmVlNDYzYjU0LTRjMjItNGMyZC1hZjQwLTdlN2U0Yzc2YTcwMDwvcmRmOmxpPiA8cmRmOmxpPnhtcC5kaWQ6ZWVlNzBjZjMtZDRiZC05MjQxLThiNzAtN2NjYmFkMzViZGU2PC9yZGY6bGk+IDxyZGY6bGk+eG1wLmRpZDplZmQ5MzI1Mi01MjBkLWYxNDEtOTAxMy0wZGI3MTBhZWRmNzU8L3JkZjpsaT4gPHJkZjpsaT54bXAuZGlkOmY1YjljZjZkLTM2YjgtYTc0MS1iMGZmLTE3ZGU0YzQwNjZjNjwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvcGhvdG9zaG9wOkRvY3VtZW50QW5jZXN0b3JzPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjk4NTg5MDg0LTI5MmItNTg0Yi05MzgwLTViZmNhNzYyZmM5OSIgc3RFdnQ6d2hlbj0iMjAxOS0wNS0wNlQxMToyNzoyOCswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplY2UyZWZjMi01NDlkLTBkNDgtYTExNi1kZTI1ZmU1NzNkYzkiIHN0RXZ0OndoZW49IjIwMTktMDUtMDZUMTE6NDM6MjQrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDQ5NDBhMmEtNzEwNy00YmFlLThjOTMtY2ZjNGRkM2UyYjc2IiBzdEV2dDp3aGVuPSIyMDE5LTA3LTAyVDEyOjIwOjE5KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNvbnZlcnRlZCIgc3RFdnQ6cGFyYW1ldGVycz0iZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iZGVyaXZlZCIgc3RFdnQ6cGFyYW1ldGVycz0iY29udmVydGVkIGZyb20gYXBwbGljYXRpb24vdm5kLmFkb2JlLnBob3Rvc2hvcCB0byBpbWFnZS9wbmciLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjZlYjlkOTFjLTI5NDAtNGMwZS1iMjEwLTg3NGMwNmY5NzBkMyIgc3RFdnQ6d2hlbj0iMjAxOS0wNy0wMlQxMjoyMDoxOSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1ZTViYWU1ZS05NDM5LWViNDgtYmIyMS1mNmMzZTA5ZjE4MzYiIHN0RXZ0OndoZW49IjIwMjEtMTAtMjRUMTQ6MzE6MTYrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NDQ5NDBhMmEtNzEwNy00YmFlLThjOTMtY2ZjNGRkM2UyYjc2IiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NWJmZGU1MDUtMmVkMy1lZjQxLWFiYjgtNWRjYTRhNjUxZjVlIiBzdFJlZjpvcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OTg1ODkwODQtMjkyYi01ODRiLTkzODAtNWJmY2E3NjJmYzk5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+UQTyIAAAAptJREFUaN7l2ktoE0EYwPH/xtRXbRupRlsQ04JoRRQE8aQiYhHFg+JFRD1oC4oVfJx6UDwIRSsURYUiorWCiohaRSz0IIoExMfBS7A+wEIjqXFpFySm6XrYTTEmpunuJu7OfJdsJjNf8svMJDPsKLqu82covWpmQWliDHgF3ARuAKqdZHpjIOO5D3eED1gNnAcGgHPAHCeTuy3KgaPAB/PRLyIyHQGzR18CS0RFpmOVOV+3i4wEmAXcBY6LjARQgLPACZGR6TgFHPAEUkGnpixKtf+7leYXgK2uRU5XErTVtvJ1WYjI0gYuLThkJc0UoAsIFVLZX+re6wrtZVPl0/GyZ9paO38x14D1gO6antxc9SQDGBudS3d8l52U64B9rhquO2ffGr9WUwF2f7nOcKrSbtrTQIWjwzVYBg0zrH2aqcoYfSMbePtzBZ1DzUST85z47oLAYRObe5pMdheyoxo6661tVEJvFIZTRRkkg+aP0C8370LsRg2wzbHhOpCAB/Hs8uXlUDfNuA6PwLdkdp1kcXeqB4HbjiDDGoQ1Jau8faFOXdC47ogq9Kol7801Zo8OirCsy7e2bRRl7ZovtsiA3JjLJBoyACwSHQmwUgbkYhmQ9TIga2VAzpcBWSEDskoG5EwZkKMyIDUZkDEZkP0yICMyIN/LgHwhOvIj8El05P1chaIhu0VHvgbeiY5s/9cLoiAjwB3Rkccwjq4Ji3wEPM5XwevIGNA8USUvI3VgPzlu8IiEbAUeFlLRq8iLQFuhlb2I7ABaJtPA57E5eBI4wgTndv4Ov0eAKrAH6LHS2As9+RzjTlWP1QRuRv4AmjBOXX22k8iNw1UDLgNngCEnEroJGQeumLuJmJOJ/zdSB/qAq8A9IFGMN/kNt6GNd9kLeHQAAAAASUVORK5CYII=";
|
|
1385
|
+
const _hoisted_1$e = ["src"];
|
|
1386
|
+
const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
1387
|
+
__name: "logo",
|
|
1388
|
+
props: {
|
|
1389
|
+
theme: { type: String, validator: (v) => ["light", "dark"].includes(v) },
|
|
1390
|
+
showTitle: { type: Boolean, default: true }
|
|
1391
|
+
},
|
|
1176
1392
|
setup(__props) {
|
|
1393
|
+
const props = __props;
|
|
1394
|
+
const { t } = useI18n("UI");
|
|
1177
1395
|
const slots = getParentSlots(null, "dt-theme");
|
|
1396
|
+
const title = t("COMPANY_NAME");
|
|
1397
|
+
const { getLogoWidth } = useMenu();
|
|
1398
|
+
const getLogoClass = computed(() => {
|
|
1399
|
+
return `${props.theme} dt-logo px-2.5 text-sm flex items-center pl-2.5 cursor-pointer text-center transition-all duration-200 ease-in-out `;
|
|
1400
|
+
});
|
|
1178
1401
|
return (_ctx, _cache) => {
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
},
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
}, null, 8,
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1402
|
+
return openBlock(), createElementBlock("div", {
|
|
1403
|
+
class: normalizeClass(unref(getLogoClass)),
|
|
1404
|
+
style: normalizeStyle({
|
|
1405
|
+
minWidth: `${unref(getLogoWidth)}px`
|
|
1406
|
+
})
|
|
1407
|
+
}, [
|
|
1408
|
+
unref(slots).logo ? (openBlock(), createBlock(unref(DtSlotContainer), {
|
|
1409
|
+
key: 0,
|
|
1410
|
+
template: unref(slots).logo
|
|
1411
|
+
}, null, 8, ["template"])) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
1412
|
+
createElementVNode("img", { src: unref(logoUrl) }, null, 8, _hoisted_1$e),
|
|
1413
|
+
withDirectives(createElementVNode("div", { class: "dt-logo__title text-base font-bold transition-all duration-500 pl-3" }, toDisplayString(unref(title)), 513), [
|
|
1414
|
+
[vShow, __props.showTitle]
|
|
1415
|
+
])
|
|
1416
|
+
], 64))
|
|
1417
|
+
], 6);
|
|
1418
|
+
};
|
|
1419
|
+
}
|
|
1420
|
+
});
|
|
1421
|
+
const _sfc_main$p = /* @__PURE__ */ defineComponent({
|
|
1422
|
+
__name: "trigger",
|
|
1423
|
+
props: { theme: String },
|
|
1424
|
+
setup(__props) {
|
|
1425
|
+
const props = __props;
|
|
1426
|
+
const { getCollapsed, toggleCollapsed } = useMenu();
|
|
1427
|
+
return (_ctx, _cache) => {
|
|
1428
|
+
return openBlock(), createElementBlock("div", {
|
|
1429
|
+
class: normalizeClass(["flex w-12 h-full cursor-pointer items-center justify-center", props.theme]),
|
|
1430
|
+
onClick: _cache[0] || (_cache[0] = (...args) => unref(toggleCollapsed) && unref(toggleCollapsed)(...args))
|
|
1431
|
+
}, [
|
|
1432
|
+
createElementVNode("i", {
|
|
1433
|
+
class: normalizeClass(["i leading-none", unref(getCollapsed) ? "ic:baseline-format-indent-increase" : "ic:baseline-format-indent-decrease"])
|
|
1434
|
+
}, null, 2)
|
|
1435
|
+
], 2);
|
|
1436
|
+
};
|
|
1437
|
+
}
|
|
1438
|
+
});
|
|
1439
|
+
const _hoisted_1$d = { class: "dt-breadcrumb" };
|
|
1440
|
+
const _sfc_main$o = /* @__PURE__ */ defineComponent({
|
|
1441
|
+
__name: "bread-crumb",
|
|
1442
|
+
setup(__props) {
|
|
1443
|
+
const { getIsZH } = useHeader();
|
|
1444
|
+
let routes = ref([]);
|
|
1445
|
+
const { currentRoute = null } = useRouter();
|
|
1446
|
+
watchEffect(() => {
|
|
1447
|
+
if (!currentRoute || currentRoute.value.path === "/")
|
|
1448
|
+
return;
|
|
1449
|
+
routes.value = getBreadCrumb(currentRoute.value.path);
|
|
1450
|
+
});
|
|
1451
|
+
return (_ctx, _cache) => {
|
|
1452
|
+
const _component_ABreadcrumb = Breadcrumb;
|
|
1453
|
+
return openBlock(), createElementBlock("div", _hoisted_1$d, [
|
|
1454
|
+
createVNode(_component_ABreadcrumb, { routes: unref(routes) }, {
|
|
1455
|
+
itemRender: withCtx(({ route }) => [
|
|
1456
|
+
createElementVNode("span", null, toDisplayString((unref(getIsZH) ? route.label : route.enLabel) || route.meta?.title), 1)
|
|
1457
|
+
]),
|
|
1458
|
+
_: 1
|
|
1459
|
+
}, 8, ["routes"])
|
|
1460
|
+
]);
|
|
1204
1461
|
};
|
|
1205
1462
|
}
|
|
1206
1463
|
});
|
|
1207
|
-
const _hoisted_1$c = {
|
|
1464
|
+
const _hoisted_1$c = {
|
|
1465
|
+
key: 0,
|
|
1466
|
+
class: "dt-menu-filter h-7 pr-2"
|
|
1467
|
+
};
|
|
1208
1468
|
const _hoisted_2$7 = ["onClick"];
|
|
1209
|
-
const _hoisted_3$
|
|
1469
|
+
const _hoisted_3$5 = {
|
|
1470
|
+
key: 0,
|
|
1471
|
+
class: "flex items-center justify-center h-full overflow-hidden"
|
|
1472
|
+
};
|
|
1473
|
+
const _sfc_main$n = /* @__PURE__ */ defineComponent({
|
|
1474
|
+
__name: "menu-filter",
|
|
1475
|
+
setup(__props) {
|
|
1476
|
+
const { t } = useI18n("UI");
|
|
1477
|
+
const menuList = ref([]);
|
|
1478
|
+
const router = useRouter();
|
|
1479
|
+
const filter = ref("");
|
|
1480
|
+
const { getShowSearch, getIsZH } = useHeader();
|
|
1481
|
+
const isUseDef = computed(() => {
|
|
1482
|
+
return isBoolean(getShowSearch.value);
|
|
1483
|
+
});
|
|
1484
|
+
function visibleChange(e) {
|
|
1485
|
+
if (e) {
|
|
1486
|
+
filterMenu();
|
|
1487
|
+
} else {
|
|
1488
|
+
filter.value = null;
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
function filterMenu() {
|
|
1492
|
+
menuList.value = getFilterMenu(filter.value, true);
|
|
1493
|
+
}
|
|
1494
|
+
function navigation(url) {
|
|
1495
|
+
router.push(url);
|
|
1496
|
+
setTimeout(() => {
|
|
1497
|
+
filter.value = "";
|
|
1498
|
+
menuList.value = [];
|
|
1499
|
+
});
|
|
1500
|
+
}
|
|
1501
|
+
return (_ctx, _cache) => {
|
|
1502
|
+
const _component_AEmpty = Empty;
|
|
1503
|
+
const _component_AInputSearch = InputSearch;
|
|
1504
|
+
const _component_APopover = Popover;
|
|
1505
|
+
return unref(isUseDef) ? (openBlock(), createElementBlock("div", _hoisted_1$c, [
|
|
1506
|
+
createVNode(_component_APopover, {
|
|
1507
|
+
placement: "bottom",
|
|
1508
|
+
overlayClassName: "dt-menu-filter__popover",
|
|
1509
|
+
trigger: "focus",
|
|
1510
|
+
onVisibleChange: visibleChange
|
|
1511
|
+
}, {
|
|
1512
|
+
content: withCtx(() => [
|
|
1513
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(menuList.value, (menu) => {
|
|
1514
|
+
return openBlock(), createElementBlock("p", {
|
|
1515
|
+
onClick: ($event) => navigation(menu.url),
|
|
1516
|
+
class: "px-5 leading-9 border-gray-200 border-dashed border-b m-0 cursor-pointer transition-all duration-300 text-13"
|
|
1517
|
+
}, toDisplayString(unref(getIsZH) ? menu.label : menu.enLabel), 9, _hoisted_2$7);
|
|
1518
|
+
}), 256)),
|
|
1519
|
+
!menuList.value.length ? (openBlock(), createElementBlock("div", _hoisted_3$5, [
|
|
1520
|
+
createVNode(_component_AEmpty, {
|
|
1521
|
+
description: "\u6682\u65E0\u6570\u636E",
|
|
1522
|
+
imageStyle: { width: "100%" }
|
|
1523
|
+
})
|
|
1524
|
+
])) : createCommentVNode("", true)
|
|
1525
|
+
]),
|
|
1526
|
+
default: withCtx(() => [
|
|
1527
|
+
createVNode(_component_AInputSearch, {
|
|
1528
|
+
value: filter.value,
|
|
1529
|
+
"onUpdate:value": _cache[0] || (_cache[0] = ($event) => filter.value = $event),
|
|
1530
|
+
placeholder: unref(t)("FILTER_MORE"),
|
|
1531
|
+
onInput: filterMenu,
|
|
1532
|
+
size: unref(UiSize).SMALL
|
|
1533
|
+
}, null, 8, ["value", "placeholder", "size"])
|
|
1534
|
+
]),
|
|
1535
|
+
_: 1
|
|
1536
|
+
})
|
|
1537
|
+
])) : createCommentVNode("", true);
|
|
1538
|
+
};
|
|
1539
|
+
}
|
|
1540
|
+
});
|
|
1541
|
+
const _hoisted_1$b = { class: "lang m-0" };
|
|
1542
|
+
const _hoisted_2$6 = ["onClick"];
|
|
1543
|
+
const _hoisted_3$4 = {
|
|
1544
|
+
class: "pr-2",
|
|
1545
|
+
size: 16
|
|
1546
|
+
};
|
|
1547
|
+
const _hoisted_4$3 = /* @__PURE__ */ createElementVNode("span", { class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300" }, [
|
|
1548
|
+
/* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-language" })
|
|
1549
|
+
], -1);
|
|
1550
|
+
const _sfc_main$m = /* @__PURE__ */ defineComponent({
|
|
1551
|
+
__name: "lang-picker",
|
|
1552
|
+
props: {
|
|
1553
|
+
reload: { type: Boolean }
|
|
1554
|
+
},
|
|
1555
|
+
setup(__props) {
|
|
1556
|
+
const props = __props;
|
|
1557
|
+
const visible = ref(false);
|
|
1558
|
+
let currentLang = DtCache.getLocal(CacheKey.LOCALE);
|
|
1559
|
+
async function toggleLang(lang) {
|
|
1560
|
+
visible.value = false;
|
|
1561
|
+
if (lang !== currentLang) {
|
|
1562
|
+
currentLang = lang;
|
|
1563
|
+
await changeLocale(lang);
|
|
1564
|
+
props.reload && location.reload();
|
|
1565
|
+
}
|
|
1566
|
+
}
|
|
1567
|
+
return (_ctx, _cache) => {
|
|
1568
|
+
const _component_APopover = Popover;
|
|
1569
|
+
const _directive_icon = resolveDirective("icon");
|
|
1570
|
+
return openBlock(), createBlock(_component_APopover, {
|
|
1571
|
+
placement: "bottom",
|
|
1572
|
+
visible: visible.value,
|
|
1573
|
+
"onUpdate:visible": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
|
|
1574
|
+
overlayClassName: "dt-lang-picker__popover",
|
|
1575
|
+
trigger: "click"
|
|
1576
|
+
}, {
|
|
1577
|
+
content: withCtx(() => [
|
|
1578
|
+
createElementVNode("ul", _hoisted_1$b, [
|
|
1579
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(localeList), (it) => {
|
|
1580
|
+
return openBlock(), createElementBlock("li", {
|
|
1581
|
+
onClick: ($event) => toggleLang(it.event),
|
|
1582
|
+
class: normalizeClass(["px-4 my-1 leading-9 flex border-gray-200 cursor-pointer hover:bg-gray-100 transition-all duration-300 text-13", it.event === unref(currentLang) ? "active bg-gray-100" : ""])
|
|
1583
|
+
}, [
|
|
1584
|
+
withDirectives(createElementVNode("span", _hoisted_3$4, null, 512), [
|
|
1585
|
+
[_directive_icon, it.icon]
|
|
1586
|
+
]),
|
|
1587
|
+
createElementVNode("span", null, toDisplayString(it.text), 1)
|
|
1588
|
+
], 10, _hoisted_2$6);
|
|
1589
|
+
}), 256))
|
|
1590
|
+
])
|
|
1591
|
+
]),
|
|
1592
|
+
default: withCtx(() => [
|
|
1593
|
+
_hoisted_4$3
|
|
1594
|
+
]),
|
|
1595
|
+
_: 1
|
|
1596
|
+
}, 8, ["visible"]);
|
|
1597
|
+
};
|
|
1598
|
+
}
|
|
1599
|
+
});
|
|
1600
|
+
const _hoisted_1$a = { class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300 relative" };
|
|
1601
|
+
const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
1602
|
+
__name: "notify",
|
|
1603
|
+
setup(__props) {
|
|
1604
|
+
const slots = getParentSlots(null, "dt-theme");
|
|
1605
|
+
return (_ctx, _cache) => {
|
|
1606
|
+
const _component_APopover = Popover;
|
|
1607
|
+
const _directive_icon = resolveDirective("icon");
|
|
1608
|
+
return openBlock(), createBlock(_component_APopover, {
|
|
1609
|
+
trigger: "click",
|
|
1610
|
+
overlayClassName: "dt-notify__popover"
|
|
1611
|
+
}, {
|
|
1612
|
+
content: withCtx(() => [
|
|
1613
|
+
unref(slots).notify ? (openBlock(), createBlock(unref(DtSlotContainer), {
|
|
1614
|
+
key: 0,
|
|
1615
|
+
template: unref(slots).notify
|
|
1616
|
+
}, null, 8, ["template"])) : createCommentVNode("", true)
|
|
1617
|
+
]),
|
|
1618
|
+
default: withCtx(() => [
|
|
1619
|
+
createElementVNode("span", _hoisted_1$a, [
|
|
1620
|
+
withDirectives(createElementVNode("span", null, null, 512), [
|
|
1621
|
+
[_directive_icon, "ant-design:bell-outlined"]
|
|
1622
|
+
]),
|
|
1623
|
+
unref(slots).notifyBadge ? (openBlock(), createBlock(unref(DtSlotContainer), {
|
|
1624
|
+
key: 0,
|
|
1625
|
+
template: unref(slots).notifyBadge
|
|
1626
|
+
}, null, 8, ["template"])) : createCommentVNode("", true)
|
|
1627
|
+
])
|
|
1628
|
+
]),
|
|
1629
|
+
_: 1
|
|
1630
|
+
});
|
|
1631
|
+
};
|
|
1632
|
+
}
|
|
1633
|
+
});
|
|
1634
|
+
const _hoisted_1$9 = { class: "lang m-0" };
|
|
1635
|
+
const _hoisted_2$5 = ["onClick"];
|
|
1636
|
+
const _hoisted_3$3 = /* @__PURE__ */ createElementVNode("span", { class: "dt_header_icon text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300" }, [
|
|
1210
1637
|
/* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-format-size" })
|
|
1211
1638
|
], -1);
|
|
1212
|
-
const _sfc_main$
|
|
1639
|
+
const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
1213
1640
|
__name: "size",
|
|
1214
1641
|
setup(__props) {
|
|
1215
1642
|
const { t } = useI18n("UI");
|
|
@@ -1247,34 +1674,34 @@ const _sfc_main$n = /* @__PURE__ */ defineComponent({
|
|
|
1247
1674
|
trigger: "click"
|
|
1248
1675
|
}, {
|
|
1249
1676
|
content: withCtx(() => [
|
|
1250
|
-
createElementVNode("ul", _hoisted_1$
|
|
1677
|
+
createElementVNode("ul", _hoisted_1$9, [
|
|
1251
1678
|
(openBlock(), createElementBlock(Fragment, null, renderList(sizeList, (it) => {
|
|
1252
1679
|
return createElementVNode("li", {
|
|
1253
1680
|
onClick: ($event) => toggleLang(it.event),
|
|
1254
1681
|
class: normalizeClass(["px-4 my-1 leading-9 flex border-gray-200 cursor-pointer hover:bg-gray-100 transition-all duration-300 text-13", it.event === unref(getUiSize) ? "active bg-gray-100" : ""])
|
|
1255
1682
|
}, [
|
|
1256
1683
|
createElementVNode("span", null, toDisplayString(it.text), 1)
|
|
1257
|
-
], 10, _hoisted_2$
|
|
1684
|
+
], 10, _hoisted_2$5);
|
|
1258
1685
|
}), 64))
|
|
1259
1686
|
])
|
|
1260
1687
|
]),
|
|
1261
1688
|
default: withCtx(() => [
|
|
1262
|
-
_hoisted_3$
|
|
1689
|
+
_hoisted_3$3
|
|
1263
1690
|
]),
|
|
1264
1691
|
_: 1
|
|
1265
1692
|
}, 8, ["visible"]);
|
|
1266
1693
|
};
|
|
1267
1694
|
}
|
|
1268
1695
|
});
|
|
1269
|
-
const _hoisted_1$
|
|
1270
|
-
const _hoisted_2$
|
|
1696
|
+
const _hoisted_1$8 = { class: "m-0" };
|
|
1697
|
+
const _hoisted_2$4 = {
|
|
1271
1698
|
class: "pr-2",
|
|
1272
1699
|
size: 16
|
|
1273
1700
|
};
|
|
1274
|
-
const _hoisted_3$
|
|
1701
|
+
const _hoisted_3$2 = { class: "dt_header_icon h-12 text-lg text-gray-800 cursor-pointer px-3 hover:bg-gray-500 hover:bg-opacity-50 transition-all duration-300 flex items-center" };
|
|
1275
1702
|
const _hoisted_4$2 = ["src"];
|
|
1276
1703
|
const _hoisted_5$1 = { class: "pl-2 text-13" };
|
|
1277
|
-
const _sfc_main$
|
|
1704
|
+
const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
1278
1705
|
__name: "user-info",
|
|
1279
1706
|
setup(__props) {
|
|
1280
1707
|
const { t } = useI18n("UI");
|
|
@@ -1299,7 +1726,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
|
|
|
1299
1726
|
trigger: "click"
|
|
1300
1727
|
}, {
|
|
1301
1728
|
content: withCtx(() => [
|
|
1302
|
-
createElementVNode("div", _hoisted_1$
|
|
1729
|
+
createElementVNode("div", _hoisted_1$8, [
|
|
1303
1730
|
unref(slots).userInfo ? (openBlock(), createBlock(unref(DtSlotContainer), {
|
|
1304
1731
|
key: 0,
|
|
1305
1732
|
template: unref(slots).userInfo
|
|
@@ -1309,7 +1736,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
|
|
|
1309
1736
|
onClick: _cache[0] || (_cache[0] = ($event) => signOut()),
|
|
1310
1737
|
class: "px-4 my-1 leading-9 flex border-gray-200 cursor-pointer hover:bg-gray-100 transition-all duration-300 text-13"
|
|
1311
1738
|
}, [
|
|
1312
|
-
withDirectives(createElementVNode("span", _hoisted_2$
|
|
1739
|
+
withDirectives(createElementVNode("span", _hoisted_2$4, null, 512), [
|
|
1313
1740
|
[_directive_icon, "ant-design:logout-outlined"]
|
|
1314
1741
|
]),
|
|
1315
1742
|
createElementVNode("span", null, toDisplayString(unref(t)("LOGIN_OUT")), 1)
|
|
@@ -1317,7 +1744,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
|
|
|
1317
1744
|
])
|
|
1318
1745
|
]),
|
|
1319
1746
|
default: withCtx(() => [
|
|
1320
|
-
createElementVNode("div", _hoisted_3$
|
|
1747
|
+
createElementVNode("div", _hoisted_3$2, [
|
|
1321
1748
|
createVNode(_component_AAvatar, { size: 28 }, {
|
|
1322
1749
|
icon: withCtx(() => [
|
|
1323
1750
|
createElementVNode("img", { src: "/node_modules/@dt-frames/ui/es/assets/imgs/header/avatar.png" }, null, 8, _hoisted_4$2)
|
|
@@ -1429,13 +1856,13 @@ function changeTheme(event, value = {}) {
|
|
|
1429
1856
|
}
|
|
1430
1857
|
useThemeStore().setThemeConf(conf);
|
|
1431
1858
|
}
|
|
1432
|
-
const _hoisted_1$
|
|
1433
|
-
const _hoisted_2$
|
|
1434
|
-
const _hoisted_3$
|
|
1859
|
+
const _hoisted_1$7 = { class: "flex flex-row justify-center dt-menu-type" };
|
|
1860
|
+
const _hoisted_2$3 = ["onClick"];
|
|
1861
|
+
const _hoisted_3$1 = /* @__PURE__ */ createElementVNode("div", { class: "dt-menu-type__item" }, null, -1);
|
|
1435
1862
|
const _hoisted_4$1 = [
|
|
1436
|
-
_hoisted_3$
|
|
1863
|
+
_hoisted_3$1
|
|
1437
1864
|
];
|
|
1438
|
-
const _sfc_main$
|
|
1865
|
+
const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
1439
1866
|
__name: "menu-type",
|
|
1440
1867
|
setup(__props) {
|
|
1441
1868
|
const { getMenuType, getMenuMode } = useMenu();
|
|
@@ -1478,7 +1905,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
|
1478
1905
|
}
|
|
1479
1906
|
return (_ctx, _cache) => {
|
|
1480
1907
|
const _component_ATooltip = Tooltip;
|
|
1481
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
1908
|
+
return openBlock(), createElementBlock("div", _hoisted_1$7, [
|
|
1482
1909
|
(openBlock(), createElementBlock(Fragment, null, renderList(menuTypeList, (item) => {
|
|
1483
1910
|
return createVNode(_component_ATooltip, {
|
|
1484
1911
|
key: item.title,
|
|
@@ -1496,7 +1923,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
|
1496
1923
|
[`dt-menu-type__item--active`]: unref(getMenuType) === item.type && unref(getMenuMode) === item.mode
|
|
1497
1924
|
}
|
|
1498
1925
|
])
|
|
1499
|
-
}, _hoisted_4$1, 10, _hoisted_2$
|
|
1926
|
+
}, _hoisted_4$1, 10, _hoisted_2$3)
|
|
1500
1927
|
]),
|
|
1501
1928
|
_: 2
|
|
1502
1929
|
}, 1032, ["title"]);
|
|
@@ -1505,8 +1932,8 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
|
1505
1932
|
};
|
|
1506
1933
|
}
|
|
1507
1934
|
});
|
|
1508
|
-
const _hoisted_1$
|
|
1509
|
-
const _sfc_main$
|
|
1935
|
+
const _hoisted_1$6 = { class: "flex justify-between mb-5" };
|
|
1936
|
+
const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
1510
1937
|
__name: "select",
|
|
1511
1938
|
props: {
|
|
1512
1939
|
event: { type: Number },
|
|
@@ -1529,7 +1956,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
1529
1956
|
}
|
|
1530
1957
|
return (_ctx, _cache) => {
|
|
1531
1958
|
const _component_ASelect = Select;
|
|
1532
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
1959
|
+
return openBlock(), createElementBlock("div", _hoisted_1$6, [
|
|
1533
1960
|
createElementVNode("span", null, toDisplayString(__props.title), 1),
|
|
1534
1961
|
createVNode(_component_ASelect, mergeProps(unref(getBindValue), {
|
|
1535
1962
|
disabled: __props.disabled,
|
|
@@ -1542,8 +1969,8 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
1542
1969
|
};
|
|
1543
1970
|
}
|
|
1544
1971
|
});
|
|
1545
|
-
const _hoisted_1$
|
|
1546
|
-
const _sfc_main$
|
|
1972
|
+
const _hoisted_1$5 = { class: "flex justify-between mb-5" };
|
|
1973
|
+
const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
1547
1974
|
__name: "switch",
|
|
1548
1975
|
props: {
|
|
1549
1976
|
event: {
|
|
@@ -1566,7 +1993,7 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
1566
1993
|
}
|
|
1567
1994
|
return (_ctx, _cache) => {
|
|
1568
1995
|
const _component_ASwitch = Switch;
|
|
1569
|
-
return openBlock(), createElementBlock("div", _hoisted_1$
|
|
1996
|
+
return openBlock(), createElementBlock("div", _hoisted_1$5, [
|
|
1570
1997
|
createElementVNode("span", null, toDisplayString(__props.title), 1),
|
|
1571
1998
|
createVNode(_component_ASwitch, mergeProps(unref(getBindValue), {
|
|
1572
1999
|
disabled: __props.disabled,
|
|
@@ -1578,7 +2005,7 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
1578
2005
|
};
|
|
1579
2006
|
}
|
|
1580
2007
|
});
|
|
1581
|
-
const _sfc_main$
|
|
2008
|
+
const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
1582
2009
|
__name: "feature",
|
|
1583
2010
|
setup(__props) {
|
|
1584
2011
|
const { t } = useI18n("UI");
|
|
@@ -1654,7 +2081,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
|
1654
2081
|
return (_ctx, _cache) => {
|
|
1655
2082
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
1656
2083
|
(openBlock(), createElementBlock(Fragment, null, renderList(switchItems, (item) => {
|
|
1657
|
-
return createVNode(_sfc_main$
|
|
2084
|
+
return createVNode(_sfc_main$g, {
|
|
1658
2085
|
key: item.title,
|
|
1659
2086
|
title: item.title,
|
|
1660
2087
|
event: item.event,
|
|
@@ -1662,7 +2089,7 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
|
1662
2089
|
}, null, 8, ["title", "event", "def"]);
|
|
1663
2090
|
}), 64)),
|
|
1664
2091
|
(openBlock(), createElementBlock(Fragment, null, renderList(selectItems, (item) => {
|
|
1665
|
-
return createVNode(_sfc_main$
|
|
2092
|
+
return createVNode(_sfc_main$h, {
|
|
1666
2093
|
key: item.title,
|
|
1667
2094
|
title: item.title,
|
|
1668
2095
|
event: item.event,
|
|
@@ -1674,9 +2101,9 @@ const _sfc_main$i = /* @__PURE__ */ defineComponent({
|
|
|
1674
2101
|
};
|
|
1675
2102
|
}
|
|
1676
2103
|
});
|
|
1677
|
-
const _hoisted_1$
|
|
1678
|
-
const _hoisted_2$
|
|
1679
|
-
const _sfc_main$
|
|
2104
|
+
const _hoisted_1$4 = { class: "mt-5" };
|
|
2105
|
+
const _hoisted_2$2 = { class: "dt-setting-theme__tips p-3 text-12 bg-gray-100 rounded" };
|
|
2106
|
+
const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
1680
2107
|
__name: "setting-theme",
|
|
1681
2108
|
setup(__props) {
|
|
1682
2109
|
const { t } = useI18n("UI");
|
|
@@ -1784,16 +2211,16 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
1784
2211
|
]),
|
|
1785
2212
|
_: 1
|
|
1786
2213
|
}),
|
|
1787
|
-
createVNode(unref(_sfc_main$
|
|
2214
|
+
createVNode(unref(_sfc_main$i)),
|
|
1788
2215
|
createVNode(_component_ADivider, null, {
|
|
1789
2216
|
default: withCtx(() => [
|
|
1790
2217
|
createTextVNode(toDisplayString(unref(t)("PAGE_SHOW")), 1)
|
|
1791
2218
|
]),
|
|
1792
2219
|
_: 1
|
|
1793
2220
|
}),
|
|
1794
|
-
createVNode(unref(_sfc_main$
|
|
2221
|
+
createVNode(unref(_sfc_main$f)),
|
|
1795
2222
|
createVNode(_component_ADivider),
|
|
1796
|
-
createElementVNode("div", _hoisted_1$
|
|
2223
|
+
createElementVNode("div", _hoisted_1$4, [
|
|
1797
2224
|
createVNode(_component_AButton, {
|
|
1798
2225
|
onClick: copy,
|
|
1799
2226
|
class: "mb-3",
|
|
@@ -1816,7 +2243,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
1816
2243
|
_: 1
|
|
1817
2244
|
})
|
|
1818
2245
|
]),
|
|
1819
|
-
createElementVNode("div", _hoisted_2$
|
|
2246
|
+
createElementVNode("div", _hoisted_2$2, toDisplayString(unref(t)("DRAWER_TIPS")), 1)
|
|
1820
2247
|
]),
|
|
1821
2248
|
_: 1
|
|
1822
2249
|
}, 8, ["visible", "title"])
|
|
@@ -1991,7 +2418,7 @@ const contentProps = {
|
|
|
1991
2418
|
},
|
|
1992
2419
|
isSplitMenu: Boolean
|
|
1993
2420
|
});
|
|
1994
|
-
const _sfc_main$
|
|
2421
|
+
const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
1995
2422
|
__name: "menu-item-content",
|
|
1996
2423
|
props: contentProps,
|
|
1997
2424
|
setup(__props) {
|
|
@@ -2008,7 +2435,7 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
2008
2435
|
};
|
|
2009
2436
|
}
|
|
2010
2437
|
});
|
|
2011
|
-
const _sfc_main$
|
|
2438
|
+
const _sfc_main$c = /* @__PURE__ */ defineComponent({
|
|
2012
2439
|
__name: "basic-menu-item",
|
|
2013
2440
|
props: ItemProp,
|
|
2014
2441
|
setup(__props) {
|
|
@@ -2019,14 +2446,14 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2019
2446
|
key: _ctx.item.url
|
|
2020
2447
|
}, {
|
|
2021
2448
|
default: withCtx(() => [
|
|
2022
|
-
createVNode(_sfc_main$
|
|
2449
|
+
createVNode(_sfc_main$d, normalizeProps(guardReactiveProps(props)), null, 16)
|
|
2023
2450
|
]),
|
|
2024
2451
|
_: 1
|
|
2025
2452
|
});
|
|
2026
2453
|
};
|
|
2027
2454
|
}
|
|
2028
2455
|
});
|
|
2029
|
-
const _sfc_main$
|
|
2456
|
+
const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
2030
2457
|
__name: "basic-sub-menu-item",
|
|
2031
2458
|
props: ItemProp,
|
|
2032
2459
|
setup(__props) {
|
|
@@ -2043,14 +2470,14 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
2043
2470
|
const _component_BasicSubMenuItem = resolveComponent("BasicSubMenuItem", true);
|
|
2044
2471
|
const _component_ASubMenu = SubMenu;
|
|
2045
2472
|
return openBlock(), createElementBlock(Fragment, null, [
|
|
2046
|
-
!menuHasChildren(unref(item)) && unref(getShowMenu) ? (openBlock(), createBlock(_sfc_main$
|
|
2473
|
+
!menuHasChildren(unref(item)) && unref(getShowMenu) ? (openBlock(), createBlock(_sfc_main$c, normalizeProps(mergeProps({ key: 0 }, props)), null, 16)) : createCommentVNode("", true),
|
|
2047
2474
|
menuHasChildren(unref(item)) && unref(getShowMenu) ? (openBlock(), createBlock(_component_ASubMenu, {
|
|
2048
2475
|
class: normalizeClass([unref(theme)]),
|
|
2049
2476
|
key: unref(item).id,
|
|
2050
2477
|
popupClassName: "app-top-menu-popup"
|
|
2051
2478
|
}, {
|
|
2052
2479
|
title: withCtx(() => [
|
|
2053
|
-
createVNode(_sfc_main$
|
|
2480
|
+
createVNode(_sfc_main$d, mergeProps(props, { item: unref(item) }), null, 16, ["item"])
|
|
2054
2481
|
]),
|
|
2055
2482
|
default: withCtx(() => [
|
|
2056
2483
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(item).children, (childrenItem) => {
|
|
@@ -2065,7 +2492,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
2065
2492
|
};
|
|
2066
2493
|
}
|
|
2067
2494
|
});
|
|
2068
|
-
const _sfc_main$
|
|
2495
|
+
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
2069
2496
|
__name: "basic-menu",
|
|
2070
2497
|
props: BasicMenu,
|
|
2071
2498
|
emits: ["menuClick"],
|
|
@@ -2152,7 +2579,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
2152
2579
|
}, {
|
|
2153
2580
|
default: withCtx(() => [
|
|
2154
2581
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {
|
|
2155
|
-
return openBlock(), createBlock(_sfc_main$
|
|
2582
|
+
return openBlock(), createBlock(_sfc_main$b, {
|
|
2156
2583
|
key: item.id,
|
|
2157
2584
|
item,
|
|
2158
2585
|
theme: _ctx.theme,
|
|
@@ -2165,7 +2592,7 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
|
|
|
2165
2592
|
};
|
|
2166
2593
|
}
|
|
2167
2594
|
});
|
|
2168
|
-
const _sfc_main$
|
|
2595
|
+
const _sfc_main$9 = defineComponent({
|
|
2169
2596
|
name: "LayoutMenu",
|
|
2170
2597
|
props: {
|
|
2171
2598
|
theme: String,
|
|
@@ -2225,6 +2652,8 @@ const _sfc_main$c = defineComponent({
|
|
|
2225
2652
|
go(path);
|
|
2226
2653
|
}
|
|
2227
2654
|
function renderHeader() {
|
|
2655
|
+
if (!unref(getIsShowLogo))
|
|
2656
|
+
return null;
|
|
2228
2657
|
if (slots.logo) {
|
|
2229
2658
|
return createVNode(DtSlotContainer, {
|
|
2230
2659
|
"template": slots.logo,
|
|
@@ -2234,9 +2663,7 @@ const _sfc_main$c = defineComponent({
|
|
|
2234
2663
|
}
|
|
2235
2664
|
}, null);
|
|
2236
2665
|
}
|
|
2237
|
-
|
|
2238
|
-
return null;
|
|
2239
|
-
return createVNode(_sfc_main$w, {
|
|
2666
|
+
return createVNode(_sfc_main$q, {
|
|
2240
2667
|
"showTitle": !unref(getCollapsed),
|
|
2241
2668
|
"class": unref(getLogoClass),
|
|
2242
2669
|
"theme": unref(getComputedTheme)
|
|
@@ -2261,7 +2688,7 @@ const _sfc_main$c = defineComponent({
|
|
|
2261
2688
|
} = unref(getMenuProps);
|
|
2262
2689
|
if (!menus || !menus.length)
|
|
2263
2690
|
return null;
|
|
2264
|
-
return createVNode(_sfc_main$
|
|
2691
|
+
return createVNode(_sfc_main$a, mergeProps(menuProps, {
|
|
2265
2692
|
"isHorizontal": props.isHorizontal,
|
|
2266
2693
|
"type": unref(getMenuType),
|
|
2267
2694
|
"showLogo": unref(getIsShowLogo),
|
|
@@ -2276,12 +2703,15 @@ const _sfc_main$c = defineComponent({
|
|
|
2276
2703
|
};
|
|
2277
2704
|
}
|
|
2278
2705
|
});
|
|
2279
|
-
const _hoisted_1$
|
|
2280
|
-
|
|
2706
|
+
const _hoisted_1$3 = {
|
|
2707
|
+
key: 3,
|
|
2708
|
+
class: "max-w-full pl-3 pr-20 dt-reuse-tabs__top"
|
|
2709
|
+
};
|
|
2710
|
+
const _hoisted_2$1 = {
|
|
2281
2711
|
key: 0,
|
|
2282
2712
|
class: "flex-1 h-full min-w-0 items-center"
|
|
2283
2713
|
};
|
|
2284
|
-
const _sfc_main$
|
|
2714
|
+
const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
2285
2715
|
__name: "index",
|
|
2286
2716
|
props: {
|
|
2287
2717
|
fixed: Boolean
|
|
@@ -2302,12 +2732,14 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
2302
2732
|
getShowSearch,
|
|
2303
2733
|
getShowUiSize
|
|
2304
2734
|
} = useHeader();
|
|
2735
|
+
const { getShowMultipleTab, getMultipleTabPosIsTop } = useMultipleTab();
|
|
2305
2736
|
const getSplitType = computed(() => {
|
|
2306
2737
|
return unref(getSplit) ? MenuSplitTye.TOP : MenuSplitTye.NONE;
|
|
2307
2738
|
});
|
|
2308
2739
|
const getMenuMode = computed(() => {
|
|
2309
2740
|
return unref(getSplit) ? MenuMode.HORIZONTAL : null;
|
|
2310
2741
|
});
|
|
2742
|
+
const getShowTab = computed(() => unref(getShowMultipleTab) && unref(getMultipleTabPosIsTop));
|
|
2311
2743
|
const getHeaderCls = computed(() => {
|
|
2312
2744
|
let theme = unref(getHeaderTheme);
|
|
2313
2745
|
let cls = "dt-header flex p-0 items-center justify-between ";
|
|
@@ -2323,20 +2755,27 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
2323
2755
|
class: normalizeClass([unref(getHeaderCls), "flex items-center justify-between"])
|
|
2324
2756
|
}, {
|
|
2325
2757
|
default: withCtx(() => [
|
|
2326
|
-
createElementVNode("div",
|
|
2327
|
-
|
|
2758
|
+
createElementVNode("div", {
|
|
2759
|
+
class: normalizeClass(["dt-header-left flex h-full items-center", {
|
|
2760
|
+
"w-0 flex-1": unref(getShowTab)
|
|
2761
|
+
}])
|
|
2762
|
+
}, [
|
|
2763
|
+
unref(getShowHeaderLogo) ? (openBlock(), createBlock(unref(_sfc_main$q), {
|
|
2328
2764
|
key: 0,
|
|
2329
2765
|
theme: unref(getHeaderTheme),
|
|
2330
2766
|
class: "dt-header-logo"
|
|
2331
2767
|
}, null, 8, ["theme"])) : createCommentVNode("", true),
|
|
2332
|
-
unref(getShowHeaderTrigger) && !unref(getSplit) ? (openBlock(), createBlock(unref(_sfc_main$
|
|
2768
|
+
unref(getShowHeaderTrigger) && !unref(getSplit) && !unref(getShowTab) ? (openBlock(), createBlock(unref(_sfc_main$p), {
|
|
2333
2769
|
key: 1,
|
|
2334
2770
|
theme: unref(getHeaderTheme)
|
|
2335
2771
|
}, null, 8, ["theme"])) : createCommentVNode("", true),
|
|
2336
|
-
unref(getShowBread) ? (openBlock(), createBlock(unref(_sfc_main$
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2772
|
+
unref(getShowBread) && !unref(getShowTab) ? (openBlock(), createBlock(unref(_sfc_main$o), { key: 2 })) : createCommentVNode("", true),
|
|
2773
|
+
unref(getShowTab) ? (openBlock(), createElementBlock("div", _hoisted_1$3, [
|
|
2774
|
+
createVNode(_sfc_main$v)
|
|
2775
|
+
])) : createCommentVNode("", true)
|
|
2776
|
+
], 2),
|
|
2777
|
+
unref(getShowTopMenu) ? (openBlock(), createElementBlock("div", _hoisted_2$1, [
|
|
2778
|
+
createVNode(_sfc_main$9, {
|
|
2340
2779
|
isHorizontal: true,
|
|
2341
2780
|
theme: unref(getHeaderTheme),
|
|
2342
2781
|
splitType: unref(getSplitType),
|
|
@@ -2349,16 +2788,16 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
2349
2788
|
"padding-right": unref(getShowSettingTheme) ? "" : "20px"
|
|
2350
2789
|
})
|
|
2351
2790
|
}, [
|
|
2352
|
-
unref(getShowSearch) ? (openBlock(), createBlock(unref(_sfc_main$
|
|
2353
|
-
unref(getShowNotice) ? (openBlock(), createBlock(unref(_sfc_main$
|
|
2354
|
-
unref(getShowUiSize) ? (openBlock(), createBlock(unref(_sfc_main$
|
|
2355
|
-
unref(getShowFullScreen) ? (openBlock(), createBlock(unref(_sfc_main$
|
|
2356
|
-
unref(getShowLocale) ? (openBlock(), createBlock(unref(_sfc_main$
|
|
2791
|
+
unref(getShowSearch) ? (openBlock(), createBlock(unref(_sfc_main$n), { key: 0 })) : createCommentVNode("", true),
|
|
2792
|
+
unref(getShowNotice) ? (openBlock(), createBlock(unref(_sfc_main$l), { key: 1 })) : createCommentVNode("", true),
|
|
2793
|
+
unref(getShowUiSize) ? (openBlock(), createBlock(unref(_sfc_main$k), { key: 2 })) : createCommentVNode("", true),
|
|
2794
|
+
unref(getShowFullScreen) ? (openBlock(), createBlock(unref(_sfc_main$u), { key: 3 })) : createCommentVNode("", true),
|
|
2795
|
+
unref(getShowLocale) ? (openBlock(), createBlock(unref(_sfc_main$m), {
|
|
2357
2796
|
key: 4,
|
|
2358
2797
|
reload: true
|
|
2359
2798
|
})) : createCommentVNode("", true),
|
|
2360
|
-
createVNode(unref(_sfc_main$
|
|
2361
|
-
unref(getShowSettingTheme) ? (openBlock(), createBlock(unref(_sfc_main$
|
|
2799
|
+
createVNode(unref(_sfc_main$j)),
|
|
2800
|
+
unref(getShowSettingTheme) ? (openBlock(), createBlock(unref(_sfc_main$e), { key: 5 })) : createCommentVNode("", true)
|
|
2362
2801
|
], 4)
|
|
2363
2802
|
]),
|
|
2364
2803
|
_: 1
|
|
@@ -2393,7 +2832,7 @@ function useTrigger() {
|
|
|
2393
2832
|
});
|
|
2394
2833
|
return { getTriggerAttr, getShowTrigger };
|
|
2395
2834
|
}
|
|
2396
|
-
const _sfc_main$
|
|
2835
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
2397
2836
|
__name: "sider-trigger",
|
|
2398
2837
|
props: {
|
|
2399
2838
|
type: {
|
|
@@ -2417,7 +2856,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
2417
2856
|
};
|
|
2418
2857
|
}
|
|
2419
2858
|
});
|
|
2420
|
-
const _sfc_main$
|
|
2859
|
+
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
2421
2860
|
__name: "drag-bar",
|
|
2422
2861
|
setup(__props) {
|
|
2423
2862
|
const { getCollapsed, getCanDrag, getMenuWidth } = useMenu();
|
|
@@ -2443,16 +2882,16 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
2443
2882
|
};
|
|
2444
2883
|
}
|
|
2445
2884
|
});
|
|
2446
|
-
const _hoisted_1$
|
|
2447
|
-
const _hoisted_2
|
|
2448
|
-
const _hoisted_3
|
|
2885
|
+
const _hoisted_1$2 = { class: "dt-mix-sider__shallow-menu" };
|
|
2886
|
+
const _hoisted_2 = { class: "m-0" };
|
|
2887
|
+
const _hoisted_3 = { class: "dt-mix-sider__sub-shallow-menu" };
|
|
2449
2888
|
const _hoisted_4 = { key: 0 };
|
|
2450
2889
|
const _hoisted_5 = { class: "opacity-60 m-0 py-3 text-lg pt-6" };
|
|
2451
2890
|
const _hoisted_6 = ["onClick"];
|
|
2452
2891
|
const _hoisted_7 = { class: "m-0" };
|
|
2453
2892
|
const _hoisted_8 = ["onClick"];
|
|
2454
2893
|
const _hoisted_9 = { class: "m-0" };
|
|
2455
|
-
const _sfc_main$
|
|
2894
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
2456
2895
|
__name: "mix-sider",
|
|
2457
2896
|
setup(__props) {
|
|
2458
2897
|
const MENU_WIDTH = 80;
|
|
@@ -2523,13 +2962,13 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2523
2962
|
style: unref(getWrapStyle),
|
|
2524
2963
|
class: ["dt-mix-sider fixed top-0 left-0 h-full overflow-hidden", unref(getMenuTheme)]
|
|
2525
2964
|
}, getMenuEvents), [
|
|
2526
|
-
createVNode(_sfc_main$
|
|
2965
|
+
createVNode(_sfc_main$q, {
|
|
2527
2966
|
showTitle: false,
|
|
2528
2967
|
class: normalizeClass("justify-center z-10")
|
|
2529
2968
|
}),
|
|
2530
2969
|
createVNode(unref(DtScrollContainer), { class: "z-10" }, {
|
|
2531
2970
|
default: withCtx(() => [
|
|
2532
|
-
createElementVNode("ul", _hoisted_1$
|
|
2971
|
+
createElementVNode("ul", _hoisted_1$2, [
|
|
2533
2972
|
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(menuModules), (item) => {
|
|
2534
2973
|
return openBlock(), createElementBlock("li", mergeProps({
|
|
2535
2974
|
key: item.id,
|
|
@@ -2540,7 +2979,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2540
2979
|
createElementVNode("i", {
|
|
2541
2980
|
class: normalizeClass(["i", item.icon])
|
|
2542
2981
|
}, null, 2),
|
|
2543
|
-
createElementVNode("p", _hoisted_2
|
|
2982
|
+
createElementVNode("p", _hoisted_2, toDisplayString(item.label), 1)
|
|
2544
2983
|
], 16);
|
|
2545
2984
|
}), 128))
|
|
2546
2985
|
])
|
|
@@ -2556,7 +2995,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2556
2995
|
}, [
|
|
2557
2996
|
createVNode(unref(DtScrollContainer), null, {
|
|
2558
2997
|
default: withCtx(() => [
|
|
2559
|
-
createElementVNode("ul", _hoisted_3
|
|
2998
|
+
createElementVNode("ul", _hoisted_3, [
|
|
2560
2999
|
(openBlock(true), createElementBlock(Fragment, null, renderList(subMenus.value, (menu) => {
|
|
2561
3000
|
return openBlock(), createElementBlock("li", {
|
|
2562
3001
|
key: menu.id
|
|
@@ -2606,7 +3045,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2606
3045
|
};
|
|
2607
3046
|
}
|
|
2608
3047
|
});
|
|
2609
|
-
const _sfc_main$
|
|
3048
|
+
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
2610
3049
|
__name: "index",
|
|
2611
3050
|
setup(__props) {
|
|
2612
3051
|
const {
|
|
@@ -2666,10 +3105,10 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2666
3105
|
const getMode = computed(() => {
|
|
2667
3106
|
return unref(getSplit) ? MenuMode.INLINE : null;
|
|
2668
3107
|
});
|
|
2669
|
-
const renderTrigger = h(_sfc_main$
|
|
3108
|
+
const renderTrigger = h(_sfc_main$7);
|
|
2670
3109
|
return (_ctx, _cache) => {
|
|
2671
3110
|
const _component_ALayoutSider = LayoutSider;
|
|
2672
|
-
return unref(getIsMixSidebar) ? (openBlock(), createBlock(_sfc_main$
|
|
3111
|
+
return unref(getIsMixSidebar) ? (openBlock(), createBlock(_sfc_main$5, {
|
|
2673
3112
|
key: 0
|
|
2674
3113
|
})) : (openBlock(), createElementBlock(Fragment, {
|
|
2675
3114
|
key: 1
|
|
@@ -2689,11 +3128,11 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2689
3128
|
theme: unref(getMenuTheme),
|
|
2690
3129
|
trigger: unref(renderTrigger)
|
|
2691
3130
|
}, unref(getTriggerAttr)), {
|
|
2692
|
-
default: withCtx(() => [createVNode(_sfc_main$
|
|
3131
|
+
default: withCtx(() => [createVNode(_sfc_main$9, {
|
|
2693
3132
|
theme: unref(getMenuTheme),
|
|
2694
3133
|
menuMode: unref(getMode),
|
|
2695
3134
|
splitType: unref(getSplitType)
|
|
2696
|
-
}, null, 8, ["theme", "menuMode", "splitType"]), createVNode(_sfc_main$
|
|
3135
|
+
}, null, 8, ["theme", "menuMode", "splitType"]), createVNode(_sfc_main$6, {
|
|
2697
3136
|
ref_key: "dragBarRef",
|
|
2698
3137
|
ref: dragBarRef
|
|
2699
3138
|
}, null, 512)]),
|
|
@@ -2702,311 +3141,8 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2702
3141
|
};
|
|
2703
3142
|
}
|
|
2704
3143
|
});
|
|
2705
|
-
const
|
|
2706
|
-
|
|
2707
|
-
_hoisted_1$4
|
|
2708
|
-
];
|
|
2709
|
-
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
2710
|
-
__name: "TabRedo",
|
|
2711
|
-
setup(__props) {
|
|
2712
|
-
const tabStore = useRouteReuseStore();
|
|
2713
|
-
const router = useRouter();
|
|
2714
|
-
function handleRedo() {
|
|
2715
|
-
tabStore.refreshPage(router);
|
|
2716
|
-
}
|
|
2717
|
-
return (_ctx, _cache) => {
|
|
2718
|
-
return openBlock(), createElementBlock("span", {
|
|
2719
|
-
onClick: handleRedo,
|
|
2720
|
-
class: "inline-block w-9 h-9 leading-9 -mt-0.5 text-zinc-600 text-center cursor-pointer border-l border-zinc-300 hover:text-zinc-900"
|
|
2721
|
-
}, _hoisted_2$1);
|
|
2722
|
-
};
|
|
2723
|
-
}
|
|
2724
|
-
});
|
|
2725
|
-
function useTabDropdown() {
|
|
2726
|
-
const router = useRouter();
|
|
2727
|
-
const { currentRoute } = router;
|
|
2728
|
-
const tabStore = useRouteReuseStore();
|
|
2729
|
-
const state = reactive({
|
|
2730
|
-
current: null,
|
|
2731
|
-
currentIndex: 0
|
|
2732
|
-
});
|
|
2733
|
-
const getDropMenuList = computed(() => {
|
|
2734
|
-
const { t } = useI18n("UI");
|
|
2735
|
-
const { path, meta } = unref(currentRoute);
|
|
2736
|
-
const curItem = state.current;
|
|
2737
|
-
const isCurItem = curItem ? curItem.path === path : false;
|
|
2738
|
-
const index = state.currentIndex;
|
|
2739
|
-
const closeLeftDisabled = index === 0 || !isCurItem;
|
|
2740
|
-
const disabled = tabStore.getTabList.length === 1;
|
|
2741
|
-
const closeRightDisabled = !isCurItem || index === tabStore.getTabList.length - 1 && tabStore.getLastDragEndIndex >= 0;
|
|
2742
|
-
const dropMenuList = [
|
|
2743
|
-
{
|
|
2744
|
-
icon: "ic:baseline-close",
|
|
2745
|
-
text: t("CLOSE_CURRENT_TAG"),
|
|
2746
|
-
onClick: () => tabStore.closeTab(path, router),
|
|
2747
|
-
disabled: !!meta?.affix || disabled,
|
|
2748
|
-
divider: true
|
|
2749
|
-
},
|
|
2750
|
-
{
|
|
2751
|
-
icon: "mdi:arrow-collapse-left",
|
|
2752
|
-
text: t("CLOSE_LEFT_TAGS"),
|
|
2753
|
-
onClick: () => tabStore.closeLeftTabs(path),
|
|
2754
|
-
disabled: closeLeftDisabled,
|
|
2755
|
-
divider: false
|
|
2756
|
-
},
|
|
2757
|
-
{
|
|
2758
|
-
icon: "mdi:arrow-collapse-right",
|
|
2759
|
-
text: t("CLOSE_RIGHT_TAGS"),
|
|
2760
|
-
onClick: () => tabStore.closeRightTabs(path),
|
|
2761
|
-
disabled: closeRightDisabled,
|
|
2762
|
-
divider: true
|
|
2763
|
-
},
|
|
2764
|
-
{
|
|
2765
|
-
icon: "ic:baseline-sync-alt",
|
|
2766
|
-
text: t("CLOSE_OTHER_TAGS"),
|
|
2767
|
-
onClick: () => tabStore.closeOtherTabs(path),
|
|
2768
|
-
disabled: disabled || !isCurItem
|
|
2769
|
-
},
|
|
2770
|
-
{
|
|
2771
|
-
icon: "ic:baseline-horizontal-rule",
|
|
2772
|
-
text: t("CLOSE_ALL_TAGE"),
|
|
2773
|
-
onClick: () => tabStore.closeAllTab(currentRoute, router),
|
|
2774
|
-
disabled
|
|
2775
|
-
}
|
|
2776
|
-
];
|
|
2777
|
-
return dropMenuList;
|
|
2778
|
-
});
|
|
2779
|
-
function handleContext(e) {
|
|
2780
|
-
e?.preventDefault();
|
|
2781
|
-
const { path } = unref(currentRoute);
|
|
2782
|
-
const index = tabStore.getTabList.findIndex((tab) => tab.path === path);
|
|
2783
|
-
state.current = unref(currentRoute);
|
|
2784
|
-
state.currentIndex = index;
|
|
2785
|
-
}
|
|
2786
|
-
function handleMenuEvent(item) {
|
|
2787
|
-
item.onClick?.();
|
|
2788
|
-
}
|
|
2789
|
-
return {
|
|
2790
|
-
getDropMenuList,
|
|
2791
|
-
handleContext,
|
|
2792
|
-
handleMenuEvent
|
|
2793
|
-
};
|
|
2794
|
-
}
|
|
2795
|
-
const _hoisted_1$3 = /* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-keyboard-arrow-down" }, null, -1);
|
|
2796
|
-
const _hoisted_2 = [
|
|
2797
|
-
_hoisted_1$3
|
|
2798
|
-
];
|
|
2799
|
-
const _hoisted_3 = { class: "text-13" };
|
|
2800
|
-
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
2801
|
-
__name: "TabContent",
|
|
2802
|
-
setup(__props) {
|
|
2803
|
-
const { getDropMenuList, handleContext, handleMenuEvent } = useTabDropdown();
|
|
2804
|
-
return (_ctx, _cache) => {
|
|
2805
|
-
const _component_AMenuItem = MenuItem;
|
|
2806
|
-
const _component_AMenuDivider = MenuDivider;
|
|
2807
|
-
const _component_AMenu = Menu;
|
|
2808
|
-
const _component_ADropdown = Dropdown;
|
|
2809
|
-
return openBlock(), createBlock(_component_ADropdown, {
|
|
2810
|
-
placement: "bottomRight",
|
|
2811
|
-
trigger: ["click"],
|
|
2812
|
-
overlayClassName: "dt-reuse-tabs__dropdown"
|
|
2813
|
-
}, {
|
|
2814
|
-
overlay: withCtx(() => [
|
|
2815
|
-
createVNode(_component_AMenu, null, {
|
|
2816
|
-
default: withCtx(() => [
|
|
2817
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(getDropMenuList), (item, index) => {
|
|
2818
|
-
return openBlock(), createElementBlock(Fragment, { key: index }, [
|
|
2819
|
-
createVNode(_component_AMenuItem, {
|
|
2820
|
-
onClick: ($event) => unref(handleMenuEvent)(item),
|
|
2821
|
-
disabled: item.disabled
|
|
2822
|
-
}, {
|
|
2823
|
-
default: withCtx(() => [
|
|
2824
|
-
createElementVNode("i", {
|
|
2825
|
-
class: normalizeClass(["i pr-4", item.icon])
|
|
2826
|
-
}, null, 2),
|
|
2827
|
-
createElementVNode("span", _hoisted_3, toDisplayString(item.text), 1)
|
|
2828
|
-
]),
|
|
2829
|
-
_: 2
|
|
2830
|
-
}, 1032, ["onClick", "disabled"]),
|
|
2831
|
-
item.divider ? (openBlock(), createBlock(_component_AMenuDivider, {
|
|
2832
|
-
key: `d-${index}`
|
|
2833
|
-
})) : createCommentVNode("", true)
|
|
2834
|
-
], 64);
|
|
2835
|
-
}), 128))
|
|
2836
|
-
]),
|
|
2837
|
-
_: 1
|
|
2838
|
-
})
|
|
2839
|
-
]),
|
|
2840
|
-
default: withCtx(() => [
|
|
2841
|
-
createElementVNode("span", {
|
|
2842
|
-
onClick: _cache[0] || (_cache[0] = (...args) => unref(handleContext) && unref(handleContext)(...args)),
|
|
2843
|
-
class: "inline-block w-9 h-9 leading-9 -mt-0.5 text-zinc-600 text-center cursor-pointer border-l border-zinc-300 hover:text-zinc-900"
|
|
2844
|
-
}, _hoisted_2)
|
|
2845
|
-
]),
|
|
2846
|
-
_: 1
|
|
2847
|
-
});
|
|
2848
|
-
};
|
|
2849
|
-
}
|
|
2850
|
-
});
|
|
2851
|
-
function initAffixTabs() {
|
|
2852
|
-
const affixList = ref([]);
|
|
2853
|
-
const tabStore = useRouteReuseStore();
|
|
2854
|
-
const router = useRouter();
|
|
2855
|
-
const filterAffixTabs = (routes = []) => {
|
|
2856
|
-
return routes && routes.reduce((tabs, route) => {
|
|
2857
|
-
if (route.meta && route.meta.affix) {
|
|
2858
|
-
tabs.push(toRaw(route));
|
|
2859
|
-
}
|
|
2860
|
-
return tabs;
|
|
2861
|
-
}, []);
|
|
2862
|
-
};
|
|
2863
|
-
const addAffixTabs = () => {
|
|
2864
|
-
const affixTabs = filterAffixTabs(router.getRoutes());
|
|
2865
|
-
affixList.value = affixTabs;
|
|
2866
|
-
for (const tab of affixTabs) {
|
|
2867
|
-
tabStore.addTab({
|
|
2868
|
-
meta: tab.meta,
|
|
2869
|
-
name: tab.name,
|
|
2870
|
-
path: tab.path
|
|
2871
|
-
});
|
|
2872
|
-
}
|
|
2873
|
-
};
|
|
2874
|
-
let isAddAffix = false;
|
|
2875
|
-
if (!isAddAffix) {
|
|
2876
|
-
addAffixTabs();
|
|
2877
|
-
isAddAffix = true;
|
|
2878
|
-
}
|
|
2879
|
-
return affixList.value.map((item) => item.meta?.title).filter(Boolean);
|
|
2880
|
-
}
|
|
2881
|
-
function useSortable(el, options) {
|
|
2882
|
-
function initSortable() {
|
|
2883
|
-
nextTick(async () => {
|
|
2884
|
-
if (!el)
|
|
2885
|
-
return;
|
|
2886
|
-
const Sortable = (await import("sortablejs")).default;
|
|
2887
|
-
Sortable.create(unref(el), {
|
|
2888
|
-
animation: 500,
|
|
2889
|
-
delay: 400,
|
|
2890
|
-
delayOnTouchOnly: true,
|
|
2891
|
-
...options
|
|
2892
|
-
});
|
|
2893
|
-
});
|
|
2894
|
-
}
|
|
2895
|
-
return { initSortable };
|
|
2896
|
-
}
|
|
2897
|
-
function useTabsDrag(affixList) {
|
|
2898
|
-
const tabStore = useRouteReuseStore();
|
|
2899
|
-
const { getCanDrag } = useMultipleTab();
|
|
2900
|
-
nextTick(() => {
|
|
2901
|
-
if (!unref(getCanDrag))
|
|
2902
|
-
return;
|
|
2903
|
-
const el = document.querySelectorAll(`.dt-reuse-tabs .ant-tabs-nav-list`)?.[0];
|
|
2904
|
-
const { initSortable } = useSortable(el, {
|
|
2905
|
-
filter: (e) => {
|
|
2906
|
-
const text = e?.target?.innerText;
|
|
2907
|
-
if (!text)
|
|
2908
|
-
return false;
|
|
2909
|
-
return affixList.includes(text);
|
|
2910
|
-
},
|
|
2911
|
-
onEnd: (evt) => {
|
|
2912
|
-
const { oldIndex, newIndex } = evt;
|
|
2913
|
-
if (isNullAndUnDef(oldIndex) || isNullAndUnDef(newIndex) || oldIndex === newIndex)
|
|
2914
|
-
return;
|
|
2915
|
-
tabStore.sortTabs(oldIndex, newIndex);
|
|
2916
|
-
}
|
|
2917
|
-
});
|
|
2918
|
-
initSortable();
|
|
2919
|
-
});
|
|
2920
|
-
}
|
|
2921
|
-
const _hoisted_1$2 = { class: "dt-reuse-tabs leading-8 border-b border-solid border-gray-200" };
|
|
2922
|
-
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
2923
|
-
__name: "index",
|
|
2924
|
-
setup(__props) {
|
|
2925
|
-
const { t } = useI18n("UI");
|
|
2926
|
-
const router = useRouter();
|
|
2927
|
-
const go = useGo(router);
|
|
2928
|
-
const tabStore = useRouteReuseStore();
|
|
2929
|
-
const { getShowQuick, getShowRedo } = useMultipleTab();
|
|
2930
|
-
const menuLabelMap = menuList2Map();
|
|
2931
|
-
const activeKeyRef = ref(null);
|
|
2932
|
-
const getTabsState = computed(() => {
|
|
2933
|
-
return tabStore.getTabList.filter((item) => !item.meta?.hideTab);
|
|
2934
|
-
});
|
|
2935
|
-
const unClose = computed(() => unref(getTabsState).length === 1);
|
|
2936
|
-
function handleChange(activeKey) {
|
|
2937
|
-
activeKeyRef.value = activeKey;
|
|
2938
|
-
go(activeKey);
|
|
2939
|
-
}
|
|
2940
|
-
function handleEdit(targetKey) {
|
|
2941
|
-
if (unref(unClose))
|
|
2942
|
-
return;
|
|
2943
|
-
tabStore.closeTab(targetKey, router);
|
|
2944
|
-
}
|
|
2945
|
-
const affixTextList = initAffixTabs();
|
|
2946
|
-
useTabsDrag(affixTextList);
|
|
2947
|
-
watch(
|
|
2948
|
-
() => router.currentRoute.value.path,
|
|
2949
|
-
(v) => {
|
|
2950
|
-
if (v === "/" || v === "/login")
|
|
2951
|
-
return;
|
|
2952
|
-
const { meta = {} } = unref(router.currentRoute);
|
|
2953
|
-
const { hideTab = false } = meta;
|
|
2954
|
-
if (activeKeyRef.value !== v) {
|
|
2955
|
-
activeKeyRef.value = v;
|
|
2956
|
-
}
|
|
2957
|
-
if (!hideTab) {
|
|
2958
|
-
tabStore.addTab(unref(router.currentRoute));
|
|
2959
|
-
}
|
|
2960
|
-
},
|
|
2961
|
-
{
|
|
2962
|
-
immediate: true
|
|
2963
|
-
}
|
|
2964
|
-
);
|
|
2965
|
-
return (_ctx, _cache) => {
|
|
2966
|
-
const _component_ATabPane = TabPane;
|
|
2967
|
-
const _component_ATabs = Tabs;
|
|
2968
|
-
return openBlock(), createElementBlock("div", _hoisted_1$2, [
|
|
2969
|
-
createVNode(_component_ATabs, {
|
|
2970
|
-
type: "editable-card",
|
|
2971
|
-
size: "small",
|
|
2972
|
-
animated: false,
|
|
2973
|
-
hideAdd: true,
|
|
2974
|
-
tabBarGutter: 3,
|
|
2975
|
-
activeKey: activeKeyRef.value,
|
|
2976
|
-
onChange: handleChange,
|
|
2977
|
-
onEdit: handleEdit,
|
|
2978
|
-
class: "h-8"
|
|
2979
|
-
}, createSlots({
|
|
2980
|
-
default: withCtx(() => [
|
|
2981
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(getTabsState), (item) => {
|
|
2982
|
-
return openBlock(), createBlock(_component_ATabPane, {
|
|
2983
|
-
key: item.query ? item.fullPath : item.path,
|
|
2984
|
-
closable: !(item && item.meta && item.meta.affix)
|
|
2985
|
-
}, {
|
|
2986
|
-
tab: withCtx(() => [
|
|
2987
|
-
createElementVNode("span", null, toDisplayString(unref(menuLabelMap).get(item.path) || unref(t)("UNKNOWN_ROUTE")), 1)
|
|
2988
|
-
]),
|
|
2989
|
-
_: 2
|
|
2990
|
-
}, 1032, ["closable"]);
|
|
2991
|
-
}), 128))
|
|
2992
|
-
]),
|
|
2993
|
-
_: 2
|
|
2994
|
-
}, [
|
|
2995
|
-
unref(getShowRedo) || unref(getShowQuick) ? {
|
|
2996
|
-
name: "rightExtra",
|
|
2997
|
-
fn: withCtx(() => [
|
|
2998
|
-
unref(getShowRedo) ? (openBlock(), createBlock(unref(_sfc_main$6), { key: 0 })) : createCommentVNode("", true),
|
|
2999
|
-
unref(getShowQuick) ? (openBlock(), createBlock(unref(_sfc_main$5), { key: 1 })) : createCommentVNode("", true)
|
|
3000
|
-
]),
|
|
3001
|
-
key: "0"
|
|
3002
|
-
} : void 0
|
|
3003
|
-
]), 1032, ["activeKey"])
|
|
3004
|
-
]);
|
|
3005
|
-
};
|
|
3006
|
-
}
|
|
3007
|
-
});
|
|
3008
|
-
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
3009
|
-
__name: "multiple-header",
|
|
3144
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
3145
|
+
__name: "multiple-header",
|
|
3010
3146
|
setup(__props) {
|
|
3011
3147
|
const {
|
|
3012
3148
|
getHeaderHeight,
|
|
@@ -3016,7 +3152,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
3016
3152
|
getTabsHeight
|
|
3017
3153
|
} = useHeader();
|
|
3018
3154
|
const { getCalcContentWidth, getIsMixMode, getSplit, getIsMixSidebar } = useMenu();
|
|
3019
|
-
const { getShowMultipleTab } = useMultipleTab();
|
|
3155
|
+
const { getShowMultipleTab, getMultipleTabPosIsTop } = useMultipleTab();
|
|
3020
3156
|
const getPlaceholderDomStyle = computed(() => {
|
|
3021
3157
|
let height = unref(getHeaderHeight);
|
|
3022
3158
|
if (unref(getIsMixMode)) {
|
|
@@ -3060,8 +3196,8 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
3060
3196
|
style: normalizeStyle(unref(getWrapStyle)),
|
|
3061
3197
|
class: normalizeClass(unref(getClass))
|
|
3062
3198
|
}, [
|
|
3063
|
-
unref(getShowInsetHeaderRef) ? (openBlock(), createBlock(_sfc_main$
|
|
3064
|
-
unref(getShowMultipleTab) ? (openBlock(), createBlock(_sfc_main$
|
|
3199
|
+
unref(getShowInsetHeaderRef) ? (openBlock(), createBlock(_sfc_main$8, { key: 0 })) : createCommentVNode("", true),
|
|
3200
|
+
unref(getShowMultipleTab) && !unref(getMultipleTabPosIsTop) ? (openBlock(), createBlock(_sfc_main$v, { key: 1 })) : createCommentVNode("", true)
|
|
3065
3201
|
], 6)
|
|
3066
3202
|
]);
|
|
3067
3203
|
};
|
|
@@ -3147,38 +3283,6 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
3147
3283
|
};
|
|
3148
3284
|
}
|
|
3149
3285
|
});
|
|
3150
|
-
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
|
3151
|
-
var zhCn = { exports: {} };
|
|
3152
|
-
(function(module, exports) {
|
|
3153
|
-
!function(e, _) {
|
|
3154
|
-
module.exports = _(require$$0);
|
|
3155
|
-
}(commonjsGlobal, function(e) {
|
|
3156
|
-
function _(e2) {
|
|
3157
|
-
return e2 && "object" == typeof e2 && "default" in e2 ? e2 : { default: e2 };
|
|
3158
|
-
}
|
|
3159
|
-
var t = _(e), d = { name: "zh-cn", weekdays: "\u661F\u671F\u65E5_\u661F\u671F\u4E00_\u661F\u671F\u4E8C_\u661F\u671F\u4E09_\u661F\u671F\u56DB_\u661F\u671F\u4E94_\u661F\u671F\u516D".split("_"), weekdaysShort: "\u5468\u65E5_\u5468\u4E00_\u5468\u4E8C_\u5468\u4E09_\u5468\u56DB_\u5468\u4E94_\u5468\u516D".split("_"), weekdaysMin: "\u65E5_\u4E00_\u4E8C_\u4E09_\u56DB_\u4E94_\u516D".split("_"), months: "\u4E00\u6708_\u4E8C\u6708_\u4E09\u6708_\u56DB\u6708_\u4E94\u6708_\u516D\u6708_\u4E03\u6708_\u516B\u6708_\u4E5D\u6708_\u5341\u6708_\u5341\u4E00\u6708_\u5341\u4E8C\u6708".split("_"), monthsShort: "1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"), ordinal: function(e2, _2) {
|
|
3160
|
-
return "W" === _2 ? e2 + "\u5468" : e2 + "\u65E5";
|
|
3161
|
-
}, weekStart: 1, yearStart: 4, formats: { LT: "HH:mm", LTS: "HH:mm:ss", L: "YYYY/MM/DD", LL: "YYYY\u5E74M\u6708D\u65E5", LLL: "YYYY\u5E74M\u6708D\u65E5Ah\u70B9mm\u5206", LLLL: "YYYY\u5E74M\u6708D\u65E5ddddAh\u70B9mm\u5206", l: "YYYY/M/D", ll: "YYYY\u5E74M\u6708D\u65E5", lll: "YYYY\u5E74M\u6708D\u65E5 HH:mm", llll: "YYYY\u5E74M\u6708D\u65E5dddd HH:mm" }, relativeTime: { future: "%s\u5185", past: "%s\u524D", s: "\u51E0\u79D2", m: "1 \u5206\u949F", mm: "%d \u5206\u949F", h: "1 \u5C0F\u65F6", hh: "%d \u5C0F\u65F6", d: "1 \u5929", dd: "%d \u5929", M: "1 \u4E2A\u6708", MM: "%d \u4E2A\u6708", y: "1 \u5E74", yy: "%d \u5E74" }, meridiem: function(e2, _2) {
|
|
3162
|
-
var t2 = 100 * e2 + _2;
|
|
3163
|
-
return t2 < 600 ? "\u51CC\u6668" : t2 < 900 ? "\u65E9\u4E0A" : t2 < 1100 ? "\u4E0A\u5348" : t2 < 1300 ? "\u4E2D\u5348" : t2 < 1800 ? "\u4E0B\u5348" : "\u665A\u4E0A";
|
|
3164
|
-
} };
|
|
3165
|
-
return t.default.locale(d, null, true), d;
|
|
3166
|
-
});
|
|
3167
|
-
})(zhCn);
|
|
3168
|
-
var esUs = { exports: {} };
|
|
3169
|
-
(function(module, exports) {
|
|
3170
|
-
!function(e, s) {
|
|
3171
|
-
module.exports = s(require$$0);
|
|
3172
|
-
}(commonjsGlobal, function(e) {
|
|
3173
|
-
function s(e2) {
|
|
3174
|
-
return e2 && "object" == typeof e2 && "default" in e2 ? e2 : { default: e2 };
|
|
3175
|
-
}
|
|
3176
|
-
var o = s(e), d = { name: "es-us", weekdays: "domingo_lunes_martes_mi\xE9rcoles_jueves_viernes_s\xE1bado".split("_"), weekdaysShort: "dom._lun._mar._mi\xE9._jue._vie._s\xE1b.".split("_"), weekdaysMin: "do_lu_ma_mi_ju_vi_s\xE1".split("_"), months: "enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"), monthsShort: "ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"), relativeTime: { future: "en %s", past: "hace %s", s: "unos segundos", m: "un minuto", mm: "%d minutos", h: "una hora", hh: "%d horas", d: "un d\xEDa", dd: "%d d\xEDas", M: "un mes", MM: "%d meses", y: "un a\xF1o", yy: "%d a\xF1os" }, ordinal: function(e2) {
|
|
3177
|
-
return e2 + "\xBA";
|
|
3178
|
-
}, formats: { LT: "h:mm A", LTS: "h:mm:ss A", L: "MM/DD/YYYY", LL: "D [de] MMMM [de] YYYY", LLL: "D [de] MMMM [de] YYYY h:mm A", LLLL: "dddd, D [de] MMMM [de] YYYY h:mm A" } };
|
|
3179
|
-
return o.default.locale(d, null, true), d;
|
|
3180
|
-
});
|
|
3181
|
-
})(esUs);
|
|
3182
3286
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
3183
3287
|
__name: "index",
|
|
3184
3288
|
setup(__props) {
|
|
@@ -3187,7 +3291,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3187
3291
|
const { getSplit, getShowMenu, getShowSidebar, getIsMixSidebar } = useMenu();
|
|
3188
3292
|
const { getFooter, getShowFooter } = useTheme();
|
|
3189
3293
|
const { height } = unref(getFooter);
|
|
3190
|
-
|
|
3294
|
+
dayjs.locale(unref(getIsZH) ? "zh-cn" : "en");
|
|
3191
3295
|
const layoutClass = computed(() => {
|
|
3192
3296
|
let cls = "ant-layout";
|
|
3193
3297
|
if (unref(getIsMixSidebar)) {
|
|
@@ -3212,6 +3316,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3212
3316
|
overflowY: "auto"
|
|
3213
3317
|
};
|
|
3214
3318
|
});
|
|
3319
|
+
const router = useRouter();
|
|
3320
|
+
watch(
|
|
3321
|
+
() => router.currentRoute.value.path,
|
|
3322
|
+
(v) => {
|
|
3323
|
+
if (v === Pages.LOGIN) {
|
|
3324
|
+
const cacheTab = DtCache.getLocal(CacheKey.THEME)?.routeReuse?.cache;
|
|
3325
|
+
if (!cacheTab) {
|
|
3326
|
+
const tabStore = useRouteReuseStore();
|
|
3327
|
+
tabStore.resetState();
|
|
3328
|
+
}
|
|
3329
|
+
const cacheTheme = DtCache.getLocal(CacheKey.THEME)?.cache;
|
|
3330
|
+
if (!cacheTheme) {
|
|
3331
|
+
const themeStore = useThemeStore();
|
|
3332
|
+
themeStore.resetState();
|
|
3333
|
+
}
|
|
3334
|
+
}
|
|
3335
|
+
},
|
|
3336
|
+
{
|
|
3337
|
+
immediate: true
|
|
3338
|
+
}
|
|
3339
|
+
);
|
|
3215
3340
|
return (_ctx, _cache) => {
|
|
3216
3341
|
const _component_ALayout = Layout;
|
|
3217
3342
|
const _component_AConfigProvider = ConfigProvider;
|
|
@@ -3229,7 +3354,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3229
3354
|
}, {
|
|
3230
3355
|
default: withCtx(() => [
|
|
3231
3356
|
createVNode(_sfc_main$y),
|
|
3232
|
-
unref(getShowFullHeaderRef) ? (openBlock(), createBlock(_sfc_main$
|
|
3357
|
+
unref(getShowFullHeaderRef) ? (openBlock(), createBlock(_sfc_main$8, {
|
|
3233
3358
|
key: 0,
|
|
3234
3359
|
fixed: ""
|
|
3235
3360
|
})) : createCommentVNode("", true),
|
|
@@ -3238,7 +3363,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
3238
3363
|
style: normalizeStyle(unref(layoutOption))
|
|
3239
3364
|
}, {
|
|
3240
3365
|
default: withCtx(() => [
|
|
3241
|
-
unref(getShowSidebar) ? (openBlock(), createBlock(_sfc_main$
|
|
3366
|
+
unref(getShowSidebar) ? (openBlock(), createBlock(_sfc_main$4, { key: 0 })) : createCommentVNode("", true),
|
|
3242
3367
|
createVNode(_component_ALayout, { class: "dt-theme-main flex w-full h-ful transition-width duration-200" }, {
|
|
3243
3368
|
default: withCtx(() => [
|
|
3244
3369
|
createVNode(_sfc_main$3),
|
|
@@ -3299,6 +3424,7 @@ const EN = {
|
|
|
3299
3424
|
"FIXED_TO_LEFT": "Fixed to the left",
|
|
3300
3425
|
"FIXED_TO_RIGHT": "Fixed to the right",
|
|
3301
3426
|
"EXPORT": "Export",
|
|
3427
|
+
"DOWNLOAD_TEMPLATE": "Download Template",
|
|
3302
3428
|
"EXPORT_CURRENT_PAGE": "Export the current page",
|
|
3303
3429
|
"EXPORT_SELECT_COLUMN": "Export Selected columns",
|
|
3304
3430
|
"EXPORT_ALL": "Export all columns",
|
|
@@ -3335,6 +3461,7 @@ const EN = {
|
|
|
3335
3461
|
"SMALL_SIZE": "Small Size",
|
|
3336
3462
|
"MODIFY_PASSWORD": "Modify Password",
|
|
3337
3463
|
"LOGIN_OUT": "Log out",
|
|
3464
|
+
"REFRESH": "Refresh",
|
|
3338
3465
|
"CLOSE_CURRENT_TAG": "Close the current tab",
|
|
3339
3466
|
"CLOSE_LEFT_TAGS": "Close the left tab",
|
|
3340
3467
|
"CLOSE_RIGHT_TAGS": "Close the right tab",
|
|
@@ -3437,11 +3564,12 @@ const ZH = {
|
|
|
3437
3564
|
"SMALL_SIZE": "\u5C0F\u5C3A\u5BF8",
|
|
3438
3565
|
"MODIFY_PASSWORD": "\u4FEE\u6539\u5BC6\u7801",
|
|
3439
3566
|
"LOGIN_OUT": "\u9000\u51FA\u7CFB\u7EDF",
|
|
3440
|
-
"
|
|
3441
|
-
"
|
|
3442
|
-
"
|
|
3443
|
-
"
|
|
3444
|
-
"
|
|
3567
|
+
"REFRESH": "\u91CD\u65B0\u52A0\u8F7D",
|
|
3568
|
+
"CLOSE_CURRENT_TAG": "\u5173\u95ED\u5F53\u524D",
|
|
3569
|
+
"CLOSE_LEFT_TAGS": "\u5173\u95ED\u5DE6\u4FA7",
|
|
3570
|
+
"CLOSE_RIGHT_TAGS": "\u5173\u95ED\u53F3\u4FA7",
|
|
3571
|
+
"CLOSE_OTHER_TAGS": "\u5173\u95ED\u5176\u4ED6",
|
|
3572
|
+
"CLOSE_ALL_TAGE": "\u5173\u95ED\u5168\u90E8",
|
|
3445
3573
|
"SETTING_THEME": "\u98CE\u683C\u8BBE\u7F6E",
|
|
3446
3574
|
"PROJECT_SETTING": "\u9879\u76EE\u914D\u7F6E",
|
|
3447
3575
|
"NAV_MODE": "\u5BFC\u822A\u680F\u6A21\u5F0F",
|
|
@@ -3469,7 +3597,9 @@ const ZH = {
|
|
|
3469
3597
|
const uiLang = (lang) => lang === Language.ZH ? ZH : EN;
|
|
3470
3598
|
const DtTheme = withInstall$1(_sfc_main);
|
|
3471
3599
|
export {
|
|
3600
|
+
ContentMode,
|
|
3472
3601
|
DtTheme,
|
|
3602
|
+
UiSize,
|
|
3473
3603
|
defaultThemeConf,
|
|
3474
3604
|
uiLang,
|
|
3475
3605
|
useRouteReuseStore,
|