@dt-frames/ui 2.0.5 → 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 (96) 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 +113 -63
  6. package/es/components/form/index.js +24 -12
  7. package/es/theme/index.js +208 -71
  8. package/es/theme/index.less +1 -0
  9. package/es/theme/src/components/content/index.d.ts +6 -4
  10. package/es/theme/src/components/header/index.d.ts +43 -20
  11. package/es/theme/src/components/header/multiple-header.d.ts +86 -40
  12. package/es/theme/src/components/tabs/components/TabContent.d.ts +33 -3
  13. package/es/theme/src/components/tabs/components/TabRedo.d.ts +6 -4
  14. package/es/theme/src/components/tabs/hooks/useTabDropdown.d.ts +6 -4
  15. package/es/theme/src/components/tabs/hooks/useTabs.d.ts +10 -0
  16. package/es/theme/src/components/tabs/index.d.ts +43 -20
  17. package/es/theme/src/hooks/useMenu.d.ts +1 -1
  18. package/es/theme/src/index.d.ts +136 -64
  19. package/es/theme/src/stores/routeReuse.store.d.ts +6 -4
  20. package/es/theme/src/stores/theme.store.d.ts +1 -0
  21. package/es/theme/src/types/theme.type.d.ts +1 -0
  22. package/package.json +1 -1
  23. package/es/packages/ui/src/assets/locales/en.d.ts +0 -101
  24. package/es/packages/ui/src/assets/locales/index.d.ts +0 -2
  25. package/es/packages/ui/src/assets/locales/zh.d.ts +0 -103
  26. package/es/packages/ui/src/components/container/index.d.ts +0 -94
  27. package/es/packages/ui/src/components/container/src/components/bar.d.ts +0 -14
  28. package/es/packages/ui/src/components/container/src/components/scroll-bar.d.ts +0 -70
  29. package/es/packages/ui/src/components/container/src/hooks/scroll.d.ts +0 -10
  30. package/es/packages/ui/src/components/container/src/scroll-container.d.ts +0 -76
  31. package/es/packages/ui/src/components/container/src/slot-container.d.ts +0 -20
  32. package/es/packages/ui/src/components/container/src/types/scroll.type.d.ts +0 -22
  33. package/es/packages/ui/src/components/container/src/utils/scroll.d.ts +0 -5
  34. package/es/packages/ui/src/global.d.ts +0 -7
  35. package/es/packages/ui/src/theme/index.d.ts +0 -10
  36. package/es/packages/ui/src/theme/src/components/content/index.d.ts +0 -27
  37. package/es/packages/ui/src/theme/src/components/feature/back-top.d.ts +0 -5
  38. package/es/packages/ui/src/theme/src/components/feature/index.d.ts +0 -7
  39. package/es/packages/ui/src/theme/src/components/footer/index.d.ts +0 -31
  40. package/es/packages/ui/src/theme/src/components/header/components/bread-crumb.d.ts +0 -6
  41. package/es/packages/ui/src/theme/src/components/header/components/fullscreen.d.ts +0 -5
  42. package/es/packages/ui/src/theme/src/components/header/components/index.d.ts +0 -11
  43. package/es/packages/ui/src/theme/src/components/header/components/lang-picker.d.ts +0 -23
  44. package/es/packages/ui/src/theme/src/components/header/components/logo.d.ts +0 -56
  45. package/es/packages/ui/src/theme/src/components/header/components/menu-filter.d.ts +0 -22
  46. package/es/packages/ui/src/theme/src/components/header/components/notify.d.ts +0 -24
  47. package/es/packages/ui/src/theme/src/components/header/components/setting-theme.d.ts +0 -223
  48. package/es/packages/ui/src/theme/src/components/header/components/size.d.ts +0 -282
  49. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/feature.d.ts +0 -138
  50. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/index.d.ts +0 -3
  51. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/menu-type.d.ts +0 -16
  52. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/select.d.ts +0 -58
  53. package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/switch.d.ts +0 -49
  54. package/es/packages/ui/src/theme/src/components/header/components/trigger.d.ts +0 -10
  55. package/es/packages/ui/src/theme/src/components/header/components/user-info.d.ts +0 -37
  56. package/es/packages/ui/src/theme/src/components/header/helper/change-theme.d.ts +0 -13
  57. package/es/packages/ui/src/theme/src/components/header/helper/menu-tree.d.ts +0 -4
  58. package/es/packages/ui/src/theme/src/components/header/index.d.ts +0 -720
  59. package/es/packages/ui/src/theme/src/components/header/multiple-header.d.ts +0 -806
  60. package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-menu-item.d.ts +0 -62
  61. package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-menu.d.ts +0 -207
  62. package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-sub-menu-item.d.ts +0 -127
  63. package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/menu-item-content.d.ts +0 -26
  64. package/es/packages/ui/src/theme/src/components/sider/components/drag-bar.d.ts +0 -14
  65. package/es/packages/ui/src/theme/src/components/sider/components/layout-menu.d.ts +0 -22
  66. package/es/packages/ui/src/theme/src/components/sider/components/props.d.ts +0 -69
  67. package/es/packages/ui/src/theme/src/components/sider/components/sider-trigger.d.ts +0 -17
  68. package/es/packages/ui/src/theme/src/components/sider/helper/sider.d.ts +0 -12
  69. package/es/packages/ui/src/theme/src/components/sider/helper/split-menu.d.ts +0 -10
  70. package/es/packages/ui/src/theme/src/components/sider/index.d.ts +0 -235
  71. package/es/packages/ui/src/theme/src/components/sider/mix-sider.d.ts +0 -167
  72. package/es/packages/ui/src/theme/src/components/tabs/components/TabContent.d.ts +0 -6
  73. package/es/packages/ui/src/theme/src/components/tabs/components/TabRedo.d.ts +0 -21
  74. package/es/packages/ui/src/theme/src/components/tabs/components/index.d.ts +0 -3
  75. package/es/packages/ui/src/theme/src/components/tabs/hooks/useMultifyTabs.d.ts +0 -7
  76. package/es/packages/ui/src/theme/src/components/tabs/hooks/useTabDropdown.d.ts +0 -6
  77. package/es/packages/ui/src/theme/src/components/tabs/index.d.ts +0 -63
  78. package/es/packages/ui/src/theme/src/components/tabs/types/tabs.type.d.ts +0 -7
  79. package/es/packages/ui/src/theme/src/enums/index.d.ts +0 -1
  80. package/es/packages/ui/src/theme/src/enums/theme.enum.d.ts +0 -34
  81. package/es/packages/ui/src/theme/src/hooks/index.d.ts +0 -6
  82. package/es/packages/ui/src/theme/src/hooks/useDragLine.d.ts +0 -2
  83. package/es/packages/ui/src/theme/src/hooks/useHeader.d.ts +0 -25
  84. package/es/packages/ui/src/theme/src/hooks/useMenu.d.ts +0 -29
  85. package/es/packages/ui/src/theme/src/hooks/useMultifyTab.d.ts +0 -8
  86. package/es/packages/ui/src/theme/src/hooks/useOpenKeys.d.ts +0 -7
  87. package/es/packages/ui/src/theme/src/hooks/useTheme.d.ts +0 -9
  88. package/es/packages/ui/src/theme/src/index.d.ts +0 -1851
  89. package/es/packages/ui/src/theme/src/setting/theme.setting.d.ts +0 -2
  90. package/es/packages/ui/src/theme/src/stores/index.d.ts +0 -3
  91. package/es/packages/ui/src/theme/src/stores/routeReuse.store.d.ts +0 -23
  92. package/es/packages/ui/src/theme/src/stores/theme.store.d.ts +0 -18
  93. package/es/packages/ui/src/theme/src/types/index.d.ts +0 -3
  94. package/es/packages/ui/src/theme/src/types/menu.type.d.ts +0 -15
  95. package/es/packages/ui/src/theme/src/types/theme.type.d.ts +0 -62
  96. package/es/packages/ui/src/utils/withInstall.d.ts +0 -4
package/es/theme/index.js CHANGED
@@ -3,9 +3,9 @@ import "ant-design-vue/es/config-provider/style";
3
3
  import "ant-design-vue/es/layout/style";
4
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, isNullAndUnDef, menuList2Map, off, on, getParentSlots, isBoolean, localeList, changeLocale, isFunction, copyText, isUrl, openWindow, 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
11
  import "ant-design-vue/es/tabs/style";
@@ -64,6 +64,7 @@ var UiSize = /* @__PURE__ */ ((UiSize2) => {
64
64
  return UiSize2;
65
65
  })(UiSize || {});
66
66
  const defaultThemeConf = {
67
+ cache: false,
67
68
  content: {
68
69
  contentMode: ContentMode.FULL
69
70
  },
@@ -106,7 +107,7 @@ const defaultThemeConf = {
106
107
  },
107
108
  routeReuse: {
108
109
  show: true,
109
- cache: true,
110
+ cache: false,
110
111
  canDrag: true,
111
112
  showQuick: true,
112
113
  showRedo: true,
@@ -116,7 +117,7 @@ const defaultThemeConf = {
116
117
  const useThemeStore = defineStore({
117
118
  id: "dt-theme",
118
119
  state: () => ({
119
- themeConf: DtCache.getLocal(CacheKey.THEME) ?? defaultThemeConf,
120
+ themeConf: DtCache.getLocal(CacheKey.THEME) ?? cloneDeep(defaultThemeConf),
120
121
  pageLoading: false,
121
122
  mixSiderHasSubMenu: false
122
123
  }),
@@ -145,20 +146,27 @@ const useThemeStore = defineStore({
145
146
  },
146
147
  actions: {
147
148
  setThemeConf(options = {}) {
148
- let newThemeConf = deepMerge(this.themeConf, options);
149
- this.themeConf = deepMerge(defaultThemeConf, newThemeConf);
149
+ this.themeConf = deepMerge(this.themeConf, options);
150
150
  DtCache.setLocal(CacheKey.THEME, this.themeConf);
151
151
  },
152
152
  setMixSiderIsHasMenu(val) {
153
153
  this.mixSiderHasSubMenu = val;
154
+ },
155
+ resetState() {
156
+ DtCache.removeLocal(CacheKey.THEME);
157
+ this.themeConf = cloneDeep(defaultThemeConf);
154
158
  }
155
159
  }
156
160
  });
161
+ function handleGotoPage(router) {
162
+ const go = useGo(router);
163
+ go(unref(router.currentRoute).path, true);
164
+ }
157
165
  const useRouteReuseStore = defineStore({
158
166
  id: "route-reuse",
159
167
  state: () => ({
160
168
  cacheTabList: /* @__PURE__ */ new Set(),
161
- tabList: DtCache.getLocal(CacheKey.THEME)?.routeReuse?.cache ? DtCache.getLocal(CacheKey.ROUTE_REUSE) || [] : [],
169
+ tabList: DtCache.getLocal(CacheKey.ROUTE_REUSE) || [],
162
170
  lastDragEndIndex: 0
163
171
  }),
164
172
  getters: {
@@ -194,9 +202,9 @@ const useRouteReuseStore = defineStore({
194
202
  }
195
203
  this.updateCacheTab();
196
204
  },
197
- closeTab(path, router) {
205
+ closeTab(route, router) {
198
206
  const go = useGo(router);
199
- const index = this.tabList.findIndex((item) => item.path === path);
207
+ const index = this.tabList.findIndex((item) => item.path === route.path);
200
208
  let page;
201
209
  if (index === 0) {
202
210
  if (this.tabList.length !== 1) {
@@ -205,9 +213,9 @@ const useRouteReuseStore = defineStore({
205
213
  } else {
206
214
  page = this.tabList[index - 1];
207
215
  }
208
- this.bulkCloseTabs([path]);
216
+ this.bulkCloseTabs([route.path]);
209
217
  this.updateCacheTab();
210
- path === router.currentRoute.value.path && go(page.path);
218
+ route.path === router.currentRoute.value.path && go(page.path);
211
219
  },
212
220
  closeAllTab(currentRoute, router) {
213
221
  const go = useGo(router);
@@ -217,8 +225,8 @@ const useRouteReuseStore = defineStore({
217
225
  this.updateCacheTab();
218
226
  go(route.path);
219
227
  },
220
- closeLeftTabs(path) {
221
- const index = this.tabList.findIndex((item) => item.path === path);
228
+ closeLeftTabs(route, router) {
229
+ const index = this.tabList.findIndex((item) => item.path === route.path);
222
230
  if (index > 0) {
223
231
  const leftTabs = this.tabList.slice(0, index);
224
232
  const pathList = [];
@@ -231,9 +239,10 @@ const useRouteReuseStore = defineStore({
231
239
  this.bulkCloseTabs(pathList);
232
240
  }
233
241
  this.updateCacheTab();
242
+ handleGotoPage(router);
234
243
  },
235
- closeRightTabs(path) {
236
- const index = this.tabList.findIndex((item) => item.path === path);
244
+ closeRightTabs(route, router) {
245
+ const index = this.tabList.findIndex((item) => item.path === route.path);
237
246
  if (index >= 0 && index < this.tabList.length - 1) {
238
247
  const rightTabs = this.tabList.slice(index + 1, this.tabList.length);
239
248
  const pathList = [];
@@ -246,24 +255,40 @@ const useRouteReuseStore = defineStore({
246
255
  this.bulkCloseTabs(pathList);
247
256
  }
248
257
  this.updateCacheTab();
258
+ handleGotoPage(router);
249
259
  },
250
- closeOtherTabs(path) {
260
+ closeOtherTabs(route, router) {
251
261
  const pathList = [];
252
262
  for (let item of this.tabList) {
253
263
  const affix = item?.meta?.affix ?? false;
254
- if (item.path !== path && !affix) {
264
+ if (item.path !== route.path && !affix) {
255
265
  pathList.push(item.path);
256
266
  }
257
267
  }
258
268
  this.bulkCloseTabs(pathList);
259
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);
260
286
  },
261
287
  bulkCloseTabs(pathList) {
262
288
  this.tabList = this.tabList.filter((item) => !pathList.includes(item.fullPath));
263
289
  },
264
290
  updateCacheTab() {
265
- const cacheTab = DtCache.getLocal(CacheKey.THEME)?.routeReuse?.cache;
266
- cacheTab && DtCache.setLocal(CacheKey.ROUTE_REUSE, this.tabList);
291
+ DtCache.setLocal(CacheKey.ROUTE_REUSE, this.tabList);
267
292
  const cacheMap = /* @__PURE__ */ new Set();
268
293
  for (const tab of this.tabList) {
269
294
  if (tab.meta?.hideTab) {
@@ -287,42 +312,46 @@ const useRouteReuseStore = defineStore({
287
312
  this.tabList.splice(oldIndex, 1);
288
313
  this.tabList.splice(newIndex, 0, currentTab);
289
314
  this.lastDragEndIndex = this.lastDragEndIndex + 1;
315
+ },
316
+ resetState() {
317
+ this.tabList = [];
318
+ this.updateCacheTab();
290
319
  }
291
320
  }
292
321
  });
293
322
  function useMenu() {
294
- const { getMenuConf, setThemeConf } = useThemeStore();
295
- const getCollapsedShowTitle = computed(() => getMenuConf.collapsedShowTitle);
296
- const getIsSidebarType = computed(() => getMenuConf.type === MenuType.SIDE);
297
- const getMenuFixed = computed(() => getMenuConf.fixed);
298
- 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);
299
328
  const getShowSidebar = computed(() => {
300
329
  return unref(getSplit) || unref(getShowMenu) && unref(getMenuMode) !== MenuMode.HORIZONTAL;
301
330
  });
302
- const getMenuHidden = computed(() => getMenuConf.hidden);
303
- const getMenuTheme = computed(() => getMenuConf.theme);
304
- const getTrigger = computed(() => getMenuConf.trigger);
305
- 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);
306
335
  const getIsMixMode = computed(() => {
307
336
  return unref(getMenuMode) === MenuMode.INLINE && unref(getMenuType) === MenuType.MIX;
308
337
  });
309
338
  const getIsMixSidebar = computed(() => unref(getMenuType) === MenuType.MIX_SIDEBAR);
310
339
  const getMenuWidth = computed(() => {
311
340
  if (unref(getIsMixMode)) {
312
- return Number(getMenuConf.menuWidth) - 40;
341
+ return Number(useThemeStore().getMenuConf.menuWidth) - 40;
313
342
  } else if (unref(getIsMixSidebar)) {
314
- return Number(getMenuConf.menuWidth) - 10;
343
+ return Number(useThemeStore().getMenuConf.menuWidth) - 10;
315
344
  } else {
316
- return Number(getMenuConf.menuWidth);
345
+ return Number(useThemeStore().getMenuConf.menuWidth);
317
346
  }
318
347
  });
319
- const getMixSideTrigger = computed(() => getMenuConf.mixSideTrigger);
320
- const getLogoWidth = computed(() => unref(getIsMixSidebar) ? "80px" : getMenuConf.menuWidth);
321
- 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);
322
351
  const getIsTopMenu = computed(() => unref(getMenuType) === MenuType.TOP_MENU);
323
- const getMenuMode = computed(() => getMenuConf.mode);
324
- const getSplit = computed(() => getMenuConf.split);
325
- 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);
326
355
  const getIsHorizontal = computed(() => unref(getMenuMode) === MenuMode.HORIZONTAL);
327
356
  const setThemeStore = (conf = {}) => setThemeConf(conf);
328
357
  const toggleCollapsed = () => setThemeStore({
@@ -330,7 +359,7 @@ function useMenu() {
330
359
  collapsed: !unref(getCollapsed)
331
360
  }
332
361
  });
333
- const getMiniWidthNumber = computed(() => getMenuConf.collapsedShowTitle ? 80 : 48);
362
+ const getMiniWidthNumber = computed(() => useThemeStore().getMenuConf.collapsedShowTitle ? 80 : 48);
334
363
  const getRealWidth = computed(() => {
335
364
  return unref(getCollapsed) ? unref(getMiniWidthNumber) : unref(getMenuWidth);
336
365
  });
@@ -685,73 +714,129 @@ const _sfc_main$x = /* @__PURE__ */ defineComponent({
685
714
  };
686
715
  }
687
716
  });
688
- function useTabDropdown() {
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) {
689
759
  const router = useRouter();
690
760
  const { currentRoute } = router;
691
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
+ });
692
766
  const state = reactive({
693
767
  current: null,
694
768
  currentIndex: 0
695
769
  });
696
770
  const getDropMenuList = computed(() => {
697
771
  const { t } = useI18n("UI");
698
- const { path, meta } = unref(currentRoute);
772
+ const { meta } = unref(getTargetTab);
773
+ const { path } = unref(currentRoute);
699
774
  const curItem = state.current;
700
775
  const isCurItem = curItem ? curItem.path === path : false;
701
776
  const index = state.currentIndex;
777
+ const refreshDisabled = !isCurItem;
702
778
  const closeLeftDisabled = index === 0 || !isCurItem;
703
- const disabled = tabStore.getTabList.length === 1;
704
779
  const closeRightDisabled = !isCurItem || index === tabStore.getTabList.length - 1 && tabStore.getLastDragEndIndex >= 0;
780
+ const disabled = tabStore.getTabList.length === 1;
705
781
  const dropMenuList = [
782
+ {
783
+ icon: "ic:baseline-autorenew",
784
+ text: t("REFRESH"),
785
+ onClick: refreshPage,
786
+ disabled: refreshDisabled
787
+ },
706
788
  {
707
789
  icon: "ic:baseline-close",
708
790
  text: t("CLOSE_CURRENT_TAG"),
709
- onClick: () => tabStore.closeTab(path, router),
791
+ onClick: () => close(tabItem),
710
792
  disabled: !!meta?.affix || disabled,
711
793
  divider: true
712
794
  },
713
795
  {
714
796
  icon: "mdi:arrow-collapse-left",
715
797
  text: t("CLOSE_LEFT_TAGS"),
716
- onClick: () => tabStore.closeLeftTabs(path),
798
+ onClick: closeLeft,
717
799
  disabled: closeLeftDisabled,
718
800
  divider: false
719
801
  },
720
802
  {
721
803
  icon: "mdi:arrow-collapse-right",
722
804
  text: t("CLOSE_RIGHT_TAGS"),
723
- onClick: () => tabStore.closeRightTabs(path),
805
+ onClick: closeRight,
724
806
  disabled: closeRightDisabled,
725
807
  divider: true
726
808
  },
727
809
  {
728
810
  icon: "ic:baseline-sync-alt",
729
811
  text: t("CLOSE_OTHER_TAGS"),
730
- onClick: () => tabStore.closeOtherTabs(path),
812
+ onClick: closeOther,
731
813
  disabled: disabled || !isCurItem
732
814
  },
733
815
  {
734
816
  icon: "ic:baseline-horizontal-rule",
735
817
  text: t("CLOSE_ALL_TAGE"),
736
- onClick: () => tabStore.closeAllTab(currentRoute, router),
818
+ onClick: closeAll,
737
819
  disabled
738
820
  }
739
821
  ];
740
822
  return dropMenuList;
741
823
  });
742
- function handleContext(e) {
743
- e?.preventDefault();
744
- const { path } = unref(currentRoute);
745
- const index = tabStore.getTabList.findIndex((tab) => tab.path === path);
746
- state.current = unref(currentRoute);
747
- state.currentIndex = index;
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
+ };
748
833
  }
749
834
  function handleMenuEvent(item) {
750
835
  item.onClick?.();
751
836
  }
752
837
  return {
753
838
  getDropMenuList,
754
- handleContext,
839
+ handleContextMenu,
755
840
  handleMenuEvent
756
841
  };
757
842
  }
@@ -762,8 +847,25 @@ const _hoisted_2$8 = [
762
847
  const _hoisted_3$6 = { class: "text-13" };
763
848
  const _sfc_main$w = /* @__PURE__ */ defineComponent({
764
849
  __name: "TabContent",
850
+ props: {
851
+ tabItem: {
852
+ type: Object,
853
+ default: null
854
+ },
855
+ isExtra: Boolean
856
+ },
765
857
  setup(__props) {
766
- const { getDropMenuList, handleContext, handleMenuEvent } = useTabDropdown();
858
+ const props = __props;
859
+ const { t } = useI18n("UI");
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
+ }
767
869
  return (_ctx, _cache) => {
768
870
  const _component_AMenuItem = MenuItem;
769
871
  const _component_AMenuDivider = MenuDivider;
@@ -771,14 +873,14 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
771
873
  const _component_ADropdown = Dropdown;
772
874
  return openBlock(), createBlock(_component_ADropdown, {
773
875
  placement: "bottomRight",
774
- trigger: ["click"],
876
+ trigger: unref(getTrigger),
775
877
  overlayClassName: "dt-reuse-tabs__dropdown"
776
878
  }, {
777
879
  overlay: withCtx(() => [
778
880
  createVNode(_component_AMenu, null, {
779
881
  default: withCtx(() => [
780
882
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getDropMenuList), (item, index) => {
781
- return openBlock(), createElementBlock(Fragment, { key: index }, [
883
+ return openBlock(), createElementBlock(Fragment, null, [
782
884
  createVNode(_component_AMenuItem, {
783
885
  onClick: ($event) => unref(handleMenuEvent)(item),
784
886
  disabled: item.disabled
@@ -795,19 +897,25 @@ const _sfc_main$w = /* @__PURE__ */ defineComponent({
795
897
  key: `d-${index}`
796
898
  })) : createCommentVNode("", true)
797
899
  ], 64);
798
- }), 128))
900
+ }), 256))
799
901
  ]),
800
902
  _: 1
801
903
  })
802
904
  ]),
803
905
  default: withCtx(() => [
804
- createElementVNode("span", {
805
- onClick: _cache[0] || (_cache[0] = (...args) => unref(handleContext) && unref(handleContext)(...args)),
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,
806
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"
807
- }, _hoisted_2$8)
915
+ }, _hoisted_2$8))
808
916
  ]),
809
917
  _: 1
810
- });
918
+ }, 8, ["trigger"]);
811
919
  };
812
920
  }
813
921
  });
@@ -885,12 +993,10 @@ const _hoisted_1$g = { class: "dt-reuse-tabs leading-8 border-b border-solid bor
885
993
  const _sfc_main$v = /* @__PURE__ */ defineComponent({
886
994
  __name: "index",
887
995
  setup(__props) {
888
- const { t } = useI18n("UI");
889
996
  const router = useRouter();
890
997
  const go = useGo(router);
891
998
  const tabStore = useRouteReuseStore();
892
999
  const { getShowQuick, getShowRedo } = useMultipleTab();
893
- const menuLabelMap = menuList2Map();
894
1000
  const activeKeyRef = ref(null);
895
1001
  const getTabsState = computed(() => {
896
1002
  return tabStore.getTabList.filter((item) => !item.meta?.hideTab);
@@ -903,7 +1009,7 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
903
1009
  function handleEdit(targetKey) {
904
1010
  if (unref(unClose))
905
1011
  return;
906
- tabStore.closeTab(targetKey, router);
1012
+ tabStore.closeTabByKey(targetKey, router);
907
1013
  }
908
1014
  const affixTextList = initAffixTabs();
909
1015
  useTabsDrag(affixTextList);
@@ -947,7 +1053,10 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
947
1053
  closable: !(item && item.meta && item.meta.affix)
948
1054
  }, {
949
1055
  tab: withCtx(() => [
950
- createElementVNode("span", null, toDisplayString(unref(menuLabelMap).get(item.path) || unref(t)("UNKNOWN_ROUTE")), 1)
1056
+ unref(getShowQuick) ? (openBlock(), createBlock(unref(_sfc_main$w), {
1057
+ key: 0,
1058
+ tabItem: item
1059
+ }, null, 8, ["tabItem"])) : createCommentVNode("", true)
951
1060
  ]),
952
1061
  _: 2
953
1062
  }, 1032, ["closable"]);
@@ -959,7 +1068,11 @@ const _sfc_main$v = /* @__PURE__ */ defineComponent({
959
1068
  name: "rightExtra",
960
1069
  fn: withCtx(() => [
961
1070
  unref(getShowRedo) ? (openBlock(), createBlock(unref(_sfc_main$x), { key: 0 })) : createCommentVNode("", true),
962
- unref(getShowQuick) ? (openBlock(), createBlock(unref(_sfc_main$w), { key: 1 })) : 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)
963
1076
  ]),
964
1077
  key: "0"
965
1078
  } : void 0
@@ -3203,6 +3316,27 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3203
3316
  overflowY: "auto"
3204
3317
  };
3205
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
+ );
3206
3340
  return (_ctx, _cache) => {
3207
3341
  const _component_ALayout = Layout;
3208
3342
  const _component_AConfigProvider = ConfigProvider;
@@ -3290,6 +3424,7 @@ const EN = {
3290
3424
  "FIXED_TO_LEFT": "Fixed to the left",
3291
3425
  "FIXED_TO_RIGHT": "Fixed to the right",
3292
3426
  "EXPORT": "Export",
3427
+ "DOWNLOAD_TEMPLATE": "Download Template",
3293
3428
  "EXPORT_CURRENT_PAGE": "Export the current page",
3294
3429
  "EXPORT_SELECT_COLUMN": "Export Selected columns",
3295
3430
  "EXPORT_ALL": "Export all columns",
@@ -3326,6 +3461,7 @@ const EN = {
3326
3461
  "SMALL_SIZE": "Small Size",
3327
3462
  "MODIFY_PASSWORD": "Modify Password",
3328
3463
  "LOGIN_OUT": "Log out",
3464
+ "REFRESH": "Refresh",
3329
3465
  "CLOSE_CURRENT_TAG": "Close the current tab",
3330
3466
  "CLOSE_LEFT_TAGS": "Close the left tab",
3331
3467
  "CLOSE_RIGHT_TAGS": "Close the right tab",
@@ -3428,11 +3564,12 @@ const ZH = {
3428
3564
  "SMALL_SIZE": "\u5C0F\u5C3A\u5BF8",
3429
3565
  "MODIFY_PASSWORD": "\u4FEE\u6539\u5BC6\u7801",
3430
3566
  "LOGIN_OUT": "\u9000\u51FA\u7CFB\u7EDF",
3431
- "CLOSE_CURRENT_TAG": "\u5173\u95ED\u5F53\u524D\u6807\u7B7E\u9875",
3432
- "CLOSE_LEFT_TAGS": "\u5173\u95ED\u5DE6\u4FA7\u6807\u7B7E\u9875",
3433
- "CLOSE_RIGHT_TAGS": "\u5173\u95ED\u53F3\u4FA7\u6807\u7B7E\u9875",
3434
- "CLOSE_OTHER_TAGS": "\u5173\u95ED\u5176\u4ED6\u6807\u7B7E\u9875",
3435
- "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",
3436
3573
  "SETTING_THEME": "\u98CE\u683C\u8BBE\u7F6E",
3437
3574
  "PROJECT_SETTING": "\u9879\u76EE\u914D\u7F6E",
3438
3575
  "NAV_MODE": "\u5BFC\u822A\u680F\u6A21\u5F0F",
@@ -744,6 +744,7 @@
744
744
 
745
745
  &__dropdown .ant-dropdown-content li > span{
746
746
  display: flex;
747
+ padding-right: 3px;
747
748
  }
748
749
  }
749
750
 
@@ -11,15 +11,17 @@ declare const _sfc_main: import("vue").DefineComponent<{}, {
11
11
  getLastDragEndIndex(): number;
12
12
  }, {
13
13
  addTab(route: import("vue-router").RouteLocationNormalized): Promise<void>;
14
- closeTab(path: string, router: import("vue-router").Router): void;
14
+ closeTab(route: import("vue-router").RouteLocationNormalized, router: import("vue-router").Router): void;
15
15
  closeAllTab(currentRoute: import("vue").Ref<import("vue-router").RouteLocationNormalizedLoaded>, router: import("vue-router").Router): void;
16
- closeLeftTabs(path: string): void;
17
- closeRightTabs(path: string): void;
18
- closeOtherTabs(path: string): void;
16
+ closeLeftTabs(route: import("vue-router").RouteLocationNormalized, router: import("vue-router").Router): void;
17
+ closeRightTabs(route: import("vue-router").RouteLocationNormalized, router: import("vue-router").Router): void;
18
+ closeOtherTabs(route: import("vue-router").RouteLocationNormalized, router: import("vue-router").Router): void;
19
+ closeTabByKey(path: string, router: import("vue-router").Router): void;
19
20
  bulkCloseTabs(pathList: string[]): void;
20
21
  updateCacheTab(): void;
21
22
  refreshPage(router: import("vue-router").Router): Promise<void>;
22
23
  sortTabs(oldIndex: number, newIndex: number): void;
24
+ resetState(): void;
23
25
  }>;
24
26
  getTransitionName: (route: RouteRecordRaw) => string | undefined;
25
27
  getCaches: import("vue").ComputedRef<string[]>;