@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.
Files changed (56) hide show
  1. package/es/assets/locales/en.d.ts +2 -0
  2. package/es/assets/locales/en.ts +2 -0
  3. package/es/assets/locales/zh.d.ts +1 -0
  4. package/es/assets/locales/zh.ts +6 -5
  5. package/es/components/curd/index.js +117 -62
  6. package/es/components/curd/src/components/Curd.d.ts +0 -8
  7. package/es/components/curd/src/props.d.ts +0 -4
  8. package/es/components/form/index.d.ts +20 -53
  9. package/es/components/form/index.js +5 -3
  10. package/es/components/form/index.less +8 -3
  11. package/es/components/form/src/index.d.ts +16 -41
  12. package/es/components/source/index.js +8 -5
  13. package/es/components/source/types/source.type.d.ts +1 -0
  14. package/es/components/table/index.js +145 -95
  15. package/es/components/table/index.less +26 -5
  16. package/es/components/table/src/components/TableAction.d.ts +1 -1
  17. package/es/components/table/src/index.d.ts +10 -0
  18. package/es/components/table/src/props.d.ts +4 -0
  19. package/es/components/tree/index.d.ts +2 -0
  20. package/es/components/tree/index.js +1087 -0
  21. package/es/components/tree/index.less +119 -0
  22. package/es/components/tree/src/basicProps.d.ts +146 -0
  23. package/es/components/tree/src/components/ContextMenu.d.ts +64 -0
  24. package/es/components/tree/src/components/TreeHeader.d.ts +98 -0
  25. package/es/components/tree/src/enums/index.d.ts +6 -0
  26. package/es/components/tree/src/hooks/useContextMenu.d.ts +2 -0
  27. package/es/components/tree/src/hooks/useTree.d.ts +14 -0
  28. package/es/components/tree/src/index.d.ts +6526 -0
  29. package/es/components/tree/src/type/menu.d.ts +33 -0
  30. package/es/components/tree/src/type/tree.d.ts +55 -0
  31. package/es/components/tree/src/utils/tree.d.ts +5 -0
  32. package/es/theme/index.d.ts +2 -1
  33. package/es/theme/index.js +829 -699
  34. package/es/theme/index.less +56 -0
  35. package/es/theme/src/components/content/index.d.ts +6 -4
  36. package/es/theme/src/components/header/components/logo.d.ts +22 -0
  37. package/es/theme/src/components/header/index.d.ts +110 -0
  38. package/es/theme/src/components/header/multiple-header.d.ts +154 -20
  39. package/es/theme/src/components/sider/index.d.ts +22 -0
  40. package/es/theme/src/components/sider/mix-sider.d.ts +22 -0
  41. package/es/theme/src/components/tabs/components/TabContent.d.ts +33 -3
  42. package/es/theme/src/components/tabs/components/TabRedo.d.ts +6 -4
  43. package/es/theme/src/components/tabs/hooks/useTabDropdown.d.ts +6 -4
  44. package/es/theme/src/components/tabs/hooks/useTabs.d.ts +10 -0
  45. package/es/theme/src/components/tabs/index.d.ts +43 -20
  46. package/es/theme/src/hooks/useMenu.d.ts +1 -1
  47. package/es/theme/src/hooks/useMultifyTab.d.ts +1 -0
  48. package/es/theme/src/index.d.ts +293 -24
  49. package/es/theme/src/stores/routeReuse.store.d.ts +6 -4
  50. package/es/theme/src/stores/theme.store.d.ts +1 -0
  51. package/es/theme/src/types/theme.type.d.ts +2 -0
  52. package/index.d.ts +2 -1
  53. package/index.js +6 -2
  54. package/package.json +4 -2
  55. package/tsconfig.json +1 -0
  56. 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, MenuItem, SubMenu, Menu, LayoutHeader, LayoutSider, MenuDivider, Dropdown, TabPane, Tabs, LayoutContent, Layout, ConfigProvider } from "ant-design-vue/es";
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, normalizeClass, normalizeStyle, withDirectives, toDisplayString, vShow, ref, watchEffect, createVNode, withCtx, Fragment, renderList, resolveDirective, getCurrentInstance, inject, onUnmounted, h, provide, onBeforeUnmount, resolveDynamicComponent, renderSlot, mergeProps, createTextVNode, watch, normalizeProps, guardReactiveProps, resolveComponent, reactive, toRef, withModifiers, Transition, createSlots, KeepAlive } from "vue";
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, isBoolean, localeList, changeLocale, off, on, getParentSlots, isFunction, copyText, isUrl, openWindow, isNullAndUnDef, menuList2Map, useApp, withInstall as withInstall$1 } from "@dt-frames/core";
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 require$$0 from "dayjs";
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: true,
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
- let newThemeConf = deepMerge(this.themeConf, options);
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.THEME)?.routeReuse?.cache ? DtCache.getLocal(CacheKey.ROUTE_REUSE) || [] : [],
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(path, router) {
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(path) {
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(path) {
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(path) {
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
- const cacheTab = DtCache.getLocal(CacheKey.THEME)?.routeReuse?.cache;
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 { getMenuConf, setThemeConf } = useThemeStore();
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: "fullscreen",
702
+ __name: "TabRedo",
666
703
  setup(__props) {
667
- const { toggle, isFullscreen } = useFullscreen();
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
- 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",
671
- onClick: _cache[0] || (_cache[0] = (...args) => unref(toggle) && unref(toggle)(...args))
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
- const _hoisted_1$i = ["src"];
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: "logo",
849
+ __name: "TabContent",
683
850
  props: {
684
- theme: { type: String, validator: (v) => ["light", "dark"].includes(v) },
685
- showTitle: { type: Boolean, default: true }
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 title = t("COMPANY_NAME");
691
- const { getLogoWidth } = useMenu();
692
- const getLogoClass = computed(() => {
693
- 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 `;
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
- return openBlock(), createElementBlock("div", {
697
- class: normalizeClass(unref(getLogoClass)),
698
- style: normalizeStyle({
699
- minWidth: `${unref(getLogoWidth)}px`
700
- })
701
- }, [
702
- createElementVNode("img", { src: "/node_modules/@dt-frames/ui/es/assets/imgs/logo/logo.png" }, null, 8, _hoisted_1$i),
703
- withDirectives(createElementVNode("div", { class: "dt-logo__title text-base font-bold transition-all duration-500 pl-3" }, toDisplayString(unref(title)), 513), [
704
- [vShow, __props.showTitle]
705
- ])
706
- ], 6);
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
- const _sfc_main$v = /* @__PURE__ */ defineComponent({
711
- __name: "trigger",
712
- props: { theme: String },
713
- setup(__props) {
714
- const props = __props;
715
- const { getCollapsed, toggleCollapsed } = useMenu();
716
- return (_ctx, _cache) => {
717
- return openBlock(), createElementBlock("div", {
718
- class: normalizeClass(["flex w-12 h-full cursor-pointer items-center justify-center", props.theme]),
719
- onClick: _cache[0] || (_cache[0] = (...args) => unref(toggleCollapsed) && unref(toggleCollapsed)(...args))
720
- }, [
721
- createElementVNode("i", {
722
- class: normalizeClass(["i leading-none", unref(getCollapsed) ? "ic:baseline-format-indent-increase" : "ic:baseline-format-indent-decrease"])
723
- }, null, 2)
724
- ], 2);
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
- const _hoisted_1$h = { class: "dt-breadcrumb" };
729
- const _sfc_main$u = /* @__PURE__ */ defineComponent({
730
- __name: "bread-crumb",
731
- setup(__props) {
732
- const { getIsZH } = useHeader();
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
- routes.value = getBreadCrumb(currentRoute.value.path);
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
- const _hoisted_1$g = {
754
- key: 0,
755
- class: "dt-menu-filter h-7 pr-2"
756
- };
757
- const _hoisted_2$9 = ["onClick"];
758
- const _hoisted_3$6 = {
759
- key: 0,
760
- class: "flex items-center justify-center h-full overflow-hidden"
761
- };
762
- const _sfc_main$t = /* @__PURE__ */ defineComponent({
763
- __name: "menu-filter",
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 filter = ref("");
769
- const { getShowSearch, getIsZH } = useHeader();
770
- const isUseDef = computed(() => {
771
- return isBoolean(getShowSearch.value);
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
- function visibleChange(e) {
774
- if (e) {
775
- filterMenu();
776
- } else {
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 navigation(url) {
784
- router.push(url);
785
- setTimeout(() => {
786
- filter.value = "";
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 _component_AEmpty = Empty;
792
- const _component_AInputSearch = InputSearch;
793
- const _component_APopover = Popover;
794
- return unref(isUseDef) ? (openBlock(), createElementBlock("div", _hoisted_1$g, [
795
- createVNode(_component_APopover, {
796
- placement: "bottom",
797
- overlayClassName: "dt-menu-filter__popover",
798
- trigger: "focus",
799
- onVisibleChange: visibleChange
800
- }, {
801
- content: withCtx(() => [
802
- (openBlock(true), createElementBlock(Fragment, null, renderList(menuList.value, (menu) => {
803
- return openBlock(), createElementBlock("p", {
804
- onClick: ($event) => navigation(menu.url),
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
- createVNode(_component_AInputSearch, {
817
- value: filter.value,
818
- "onUpdate:value": _cache[0] || (_cache[0] = ($event) => filter.value = $event),
819
- placeholder: unref(t)("FILTER_MORE"),
820
- onInput: filterMenu,
821
- size: unref(UiSize).SMALL
822
- }, null, 8, ["value", "placeholder", "size"])
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
- _: 1
825
- })
826
- ])) : createCommentVNode("", true);
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 _hoisted_1$f = { class: "lang m-0" };
831
- const _hoisted_2$8 = ["onClick"];
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 props = __props;
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
- const _component_APopover = Popover;
858
- const _directive_icon = resolveDirective("icon");
859
- return openBlock(), createBlock(_component_APopover, {
860
- placement: "bottom",
861
- visible: visible.value,
862
- "onUpdate:visible": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
863
- overlayClassName: "dt-lang-picker__popover",
864
- trigger: "click"
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$e = { class: "scrollbar relative h-full overflow-hidden" };
1028
- const _sfc_main$r = /* @__PURE__ */ defineComponent({
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$e, [
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$q = /* @__PURE__ */ defineComponent({
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$r, mergeProps({
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$p = /* @__PURE__ */ defineComponent({
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$q);
1172
- const DtSlotContainer = withInstall(_sfc_main$p);
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 _sfc_main$o = /* @__PURE__ */ defineComponent({
1175
- __name: "notify",
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
- const _component_APopover = Popover;
1180
- const _directive_icon = resolveDirective("icon");
1181
- return openBlock(), createBlock(_component_APopover, {
1182
- trigger: "click",
1183
- overlayClassName: "dt-notify__popover"
1184
- }, {
1185
- content: withCtx(() => [
1186
- unref(slots).notify ? (openBlock(), createBlock(unref(DtSlotContainer), {
1187
- key: 0,
1188
- template: unref(slots).notify
1189
- }, null, 8, ["template"])) : createCommentVNode("", true)
1190
- ]),
1191
- default: withCtx(() => [
1192
- createElementVNode("span", _hoisted_1$d, [
1193
- withDirectives(createElementVNode("span", null, null, 512), [
1194
- [_directive_icon, "ant-design:bell-outlined"]
1195
- ]),
1196
- unref(slots).notifyBadge ? (openBlock(), createBlock(unref(DtSlotContainer), {
1197
- key: 0,
1198
- template: unref(slots).notifyBadge
1199
- }, null, 8, ["template"])) : createCommentVNode("", true)
1200
- ])
1201
- ]),
1202
- _: 1
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 = { class: "lang m-0" };
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$4 = /* @__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" }, [
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$n = /* @__PURE__ */ defineComponent({
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$c, [
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$7);
1684
+ ], 10, _hoisted_2$5);
1258
1685
  }), 64))
1259
1686
  ])
1260
1687
  ]),
1261
1688
  default: withCtx(() => [
1262
- _hoisted_3$4
1689
+ _hoisted_3$3
1263
1690
  ]),
1264
1691
  _: 1
1265
1692
  }, 8, ["visible"]);
1266
1693
  };
1267
1694
  }
1268
1695
  });
1269
- const _hoisted_1$b = { class: "m-0" };
1270
- const _hoisted_2$6 = {
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$3 = { 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" };
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$m = /* @__PURE__ */ defineComponent({
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$b, [
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$6, null, 512), [
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$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$a = { class: "flex flex-row justify-center dt-menu-type" };
1433
- const _hoisted_2$5 = ["onClick"];
1434
- const _hoisted_3$2 = /* @__PURE__ */ createElementVNode("div", { class: "dt-menu-type__item" }, null, -1);
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$2
1863
+ _hoisted_3$1
1437
1864
  ];
1438
- const _sfc_main$l = /* @__PURE__ */ defineComponent({
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$a, [
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$5)
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$9 = { class: "flex justify-between mb-5" };
1509
- const _sfc_main$k = /* @__PURE__ */ defineComponent({
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$9, [
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$8 = { class: "flex justify-between mb-5" };
1546
- const _sfc_main$j = /* @__PURE__ */ defineComponent({
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$8, [
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$i = /* @__PURE__ */ defineComponent({
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$j, {
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$k, {
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$7 = { class: "mt-5" };
1678
- const _hoisted_2$4 = { class: "dt-setting-theme__tips p-3 text-12 bg-gray-100 rounded" };
1679
- const _sfc_main$h = /* @__PURE__ */ defineComponent({
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$l)),
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$i)),
2221
+ createVNode(unref(_sfc_main$f)),
1795
2222
  createVNode(_component_ADivider),
1796
- createElementVNode("div", _hoisted_1$7, [
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$4, toDisplayString(unref(t)("DRAWER_TIPS")), 1)
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$g = /* @__PURE__ */ defineComponent({
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$f = /* @__PURE__ */ defineComponent({
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$g, normalizeProps(guardReactiveProps(props)), null, 16)
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$e = /* @__PURE__ */ defineComponent({
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$f, normalizeProps(mergeProps({ key: 0 }, props)), null, 16)) : createCommentVNode("", true),
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$g, mergeProps(props, { item: unref(item) }), null, 16, ["item"])
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$d = /* @__PURE__ */ defineComponent({
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$e, {
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$c = defineComponent({
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
- if (!unref(getIsShowLogo))
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$d, mergeProps(menuProps, {
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$6 = { class: "dt-header-left flex h-full items-center" };
2280
- const _hoisted_2$3 = {
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$b = /* @__PURE__ */ defineComponent({
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", _hoisted_1$6, [
2327
- unref(getShowHeaderLogo) ? (openBlock(), createBlock(unref(_sfc_main$w), {
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$v), {
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$u), { key: 2 })) : createCommentVNode("", true)
2337
- ]),
2338
- unref(getShowTopMenu) ? (openBlock(), createElementBlock("div", _hoisted_2$3, [
2339
- createVNode(_sfc_main$c, {
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$t), { key: 0 })) : createCommentVNode("", true),
2353
- unref(getShowNotice) ? (openBlock(), createBlock(unref(_sfc_main$o), { key: 1 })) : createCommentVNode("", true),
2354
- unref(getShowUiSize) ? (openBlock(), createBlock(unref(_sfc_main$n), { key: 2 })) : createCommentVNode("", true),
2355
- unref(getShowFullScreen) ? (openBlock(), createBlock(unref(_sfc_main$x), { key: 3 })) : createCommentVNode("", true),
2356
- unref(getShowLocale) ? (openBlock(), createBlock(unref(_sfc_main$s), {
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$m)),
2361
- unref(getShowSettingTheme) ? (openBlock(), createBlock(unref(_sfc_main$h), { key: 5 })) : createCommentVNode("", true)
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$a = /* @__PURE__ */ defineComponent({
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$9 = /* @__PURE__ */ defineComponent({
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$5 = { class: "dt-mix-sider__shallow-menu" };
2447
- const _hoisted_2$2 = { class: "m-0" };
2448
- const _hoisted_3$1 = { class: "dt-mix-sider__sub-shallow-menu" };
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$8 = /* @__PURE__ */ defineComponent({
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$w, {
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$5, [
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$2, toDisplayString(item.label), 1)
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$1, [
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$7 = /* @__PURE__ */ defineComponent({
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$a);
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$8, {
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$c, {
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$9, {
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 _hoisted_1$4 = /* @__PURE__ */ createElementVNode("i", { class: "block i ic:baseline-autorenew" }, null, -1);
2706
- const _hoisted_2$1 = [
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$b, { key: 0 })) : createCommentVNode("", true),
3064
- unref(getShowMultipleTab) ? (openBlock(), createBlock(_sfc_main$4, { key: 1 })) : createCommentVNode("", true)
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
- require$$0.locale(unref(getIsZH) ? "zh-cn" : "en");
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$b, {
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$7, { key: 0 })) : createCommentVNode("", true),
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
- "CLOSE_CURRENT_TAG": "\u5173\u95ED\u5F53\u524D\u6807\u7B7E\u9875",
3441
- "CLOSE_LEFT_TAGS": "\u5173\u95ED\u5DE6\u4FA7\u6807\u7B7E\u9875",
3442
- "CLOSE_RIGHT_TAGS": "\u5173\u95ED\u53F3\u4FA7\u6807\u7B7E\u9875",
3443
- "CLOSE_OTHER_TAGS": "\u5173\u95ED\u5176\u4ED6\u6807\u7B7E\u9875",
3444
- "CLOSE_ALL_TAGE": "\u5173\u95ED\u5168\u90E8\u6807\u7B7E\u9875",
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,