@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.
- package/es/assets/locales/en.d.ts +2 -0
- package/es/assets/locales/en.ts +2 -0
- package/es/assets/locales/zh.d.ts +1 -0
- package/es/assets/locales/zh.ts +6 -5
- package/es/components/curd/index.js +113 -63
- package/es/components/form/index.js +24 -12
- package/es/theme/index.js +208 -71
- package/es/theme/index.less +1 -0
- package/es/theme/src/components/content/index.d.ts +6 -4
- package/es/theme/src/components/header/index.d.ts +43 -20
- package/es/theme/src/components/header/multiple-header.d.ts +86 -40
- package/es/theme/src/components/tabs/components/TabContent.d.ts +33 -3
- package/es/theme/src/components/tabs/components/TabRedo.d.ts +6 -4
- package/es/theme/src/components/tabs/hooks/useTabDropdown.d.ts +6 -4
- package/es/theme/src/components/tabs/hooks/useTabs.d.ts +10 -0
- package/es/theme/src/components/tabs/index.d.ts +43 -20
- package/es/theme/src/hooks/useMenu.d.ts +1 -1
- package/es/theme/src/index.d.ts +136 -64
- package/es/theme/src/stores/routeReuse.store.d.ts +6 -4
- package/es/theme/src/stores/theme.store.d.ts +1 -0
- package/es/theme/src/types/theme.type.d.ts +1 -0
- package/package.json +1 -1
- package/es/packages/ui/src/assets/locales/en.d.ts +0 -101
- package/es/packages/ui/src/assets/locales/index.d.ts +0 -2
- package/es/packages/ui/src/assets/locales/zh.d.ts +0 -103
- package/es/packages/ui/src/components/container/index.d.ts +0 -94
- package/es/packages/ui/src/components/container/src/components/bar.d.ts +0 -14
- package/es/packages/ui/src/components/container/src/components/scroll-bar.d.ts +0 -70
- package/es/packages/ui/src/components/container/src/hooks/scroll.d.ts +0 -10
- package/es/packages/ui/src/components/container/src/scroll-container.d.ts +0 -76
- package/es/packages/ui/src/components/container/src/slot-container.d.ts +0 -20
- package/es/packages/ui/src/components/container/src/types/scroll.type.d.ts +0 -22
- package/es/packages/ui/src/components/container/src/utils/scroll.d.ts +0 -5
- package/es/packages/ui/src/global.d.ts +0 -7
- package/es/packages/ui/src/theme/index.d.ts +0 -10
- package/es/packages/ui/src/theme/src/components/content/index.d.ts +0 -27
- package/es/packages/ui/src/theme/src/components/feature/back-top.d.ts +0 -5
- package/es/packages/ui/src/theme/src/components/feature/index.d.ts +0 -7
- package/es/packages/ui/src/theme/src/components/footer/index.d.ts +0 -31
- package/es/packages/ui/src/theme/src/components/header/components/bread-crumb.d.ts +0 -6
- package/es/packages/ui/src/theme/src/components/header/components/fullscreen.d.ts +0 -5
- package/es/packages/ui/src/theme/src/components/header/components/index.d.ts +0 -11
- package/es/packages/ui/src/theme/src/components/header/components/lang-picker.d.ts +0 -23
- package/es/packages/ui/src/theme/src/components/header/components/logo.d.ts +0 -56
- package/es/packages/ui/src/theme/src/components/header/components/menu-filter.d.ts +0 -22
- package/es/packages/ui/src/theme/src/components/header/components/notify.d.ts +0 -24
- package/es/packages/ui/src/theme/src/components/header/components/setting-theme.d.ts +0 -223
- package/es/packages/ui/src/theme/src/components/header/components/size.d.ts +0 -282
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/feature.d.ts +0 -138
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/index.d.ts +0 -3
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/menu-type.d.ts +0 -16
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/select.d.ts +0 -58
- package/es/packages/ui/src/theme/src/components/header/components/theme-drawer/switch.d.ts +0 -49
- package/es/packages/ui/src/theme/src/components/header/components/trigger.d.ts +0 -10
- package/es/packages/ui/src/theme/src/components/header/components/user-info.d.ts +0 -37
- package/es/packages/ui/src/theme/src/components/header/helper/change-theme.d.ts +0 -13
- package/es/packages/ui/src/theme/src/components/header/helper/menu-tree.d.ts +0 -4
- package/es/packages/ui/src/theme/src/components/header/index.d.ts +0 -720
- package/es/packages/ui/src/theme/src/components/header/multiple-header.d.ts +0 -806
- package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-menu-item.d.ts +0 -62
- package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-menu.d.ts +0 -207
- package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/basic-sub-menu-item.d.ts +0 -127
- package/es/packages/ui/src/theme/src/components/sider/components/basic-menu/menu-item-content.d.ts +0 -26
- package/es/packages/ui/src/theme/src/components/sider/components/drag-bar.d.ts +0 -14
- package/es/packages/ui/src/theme/src/components/sider/components/layout-menu.d.ts +0 -22
- package/es/packages/ui/src/theme/src/components/sider/components/props.d.ts +0 -69
- package/es/packages/ui/src/theme/src/components/sider/components/sider-trigger.d.ts +0 -17
- package/es/packages/ui/src/theme/src/components/sider/helper/sider.d.ts +0 -12
- package/es/packages/ui/src/theme/src/components/sider/helper/split-menu.d.ts +0 -10
- package/es/packages/ui/src/theme/src/components/sider/index.d.ts +0 -235
- package/es/packages/ui/src/theme/src/components/sider/mix-sider.d.ts +0 -167
- package/es/packages/ui/src/theme/src/components/tabs/components/TabContent.d.ts +0 -6
- package/es/packages/ui/src/theme/src/components/tabs/components/TabRedo.d.ts +0 -21
- package/es/packages/ui/src/theme/src/components/tabs/components/index.d.ts +0 -3
- package/es/packages/ui/src/theme/src/components/tabs/hooks/useMultifyTabs.d.ts +0 -7
- package/es/packages/ui/src/theme/src/components/tabs/hooks/useTabDropdown.d.ts +0 -6
- package/es/packages/ui/src/theme/src/components/tabs/index.d.ts +0 -63
- package/es/packages/ui/src/theme/src/components/tabs/types/tabs.type.d.ts +0 -7
- package/es/packages/ui/src/theme/src/enums/index.d.ts +0 -1
- package/es/packages/ui/src/theme/src/enums/theme.enum.d.ts +0 -34
- package/es/packages/ui/src/theme/src/hooks/index.d.ts +0 -6
- package/es/packages/ui/src/theme/src/hooks/useDragLine.d.ts +0 -2
- package/es/packages/ui/src/theme/src/hooks/useHeader.d.ts +0 -25
- package/es/packages/ui/src/theme/src/hooks/useMenu.d.ts +0 -29
- package/es/packages/ui/src/theme/src/hooks/useMultifyTab.d.ts +0 -8
- package/es/packages/ui/src/theme/src/hooks/useOpenKeys.d.ts +0 -7
- package/es/packages/ui/src/theme/src/hooks/useTheme.d.ts +0 -9
- package/es/packages/ui/src/theme/src/index.d.ts +0 -1851
- package/es/packages/ui/src/theme/src/setting/theme.setting.d.ts +0 -2
- package/es/packages/ui/src/theme/src/stores/index.d.ts +0 -3
- package/es/packages/ui/src/theme/src/stores/routeReuse.store.d.ts +0 -23
- package/es/packages/ui/src/theme/src/stores/theme.store.d.ts +0 -18
- package/es/packages/ui/src/theme/src/types/index.d.ts +0 -3
- package/es/packages/ui/src/theme/src/types/menu.type.d.ts +0 -15
- package/es/packages/ui/src/theme/src/types/theme.type.d.ts +0 -62
- 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,
|
|
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:
|
|
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
|
-
|
|
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.
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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 {
|
|
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
|
|
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 {
|
|
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: () =>
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
818
|
+
onClick: closeAll,
|
|
737
819
|
disabled
|
|
738
820
|
}
|
|
739
821
|
];
|
|
740
822
|
return dropMenuList;
|
|
741
823
|
});
|
|
742
|
-
function
|
|
743
|
-
e
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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,
|
|
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
|
-
}),
|
|
900
|
+
}), 256))
|
|
799
901
|
]),
|
|
800
902
|
_: 1
|
|
801
903
|
})
|
|
802
904
|
]),
|
|
803
905
|
default: withCtx(() => [
|
|
804
|
-
|
|
805
|
-
|
|
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.
|
|
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
|
-
|
|
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), {
|
|
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
|
-
"
|
|
3432
|
-
"
|
|
3433
|
-
"
|
|
3434
|
-
"
|
|
3435
|
-
"
|
|
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",
|
package/es/theme/index.less
CHANGED
|
@@ -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(
|
|
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(
|
|
17
|
-
closeRightTabs(
|
|
18
|
-
closeOtherTabs(
|
|
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[]>;
|