diff --git a/apps/backend-mock/utils/mock-data.ts b/apps/backend-mock/utils/mock-data.ts index d4ecdc053..10076ac9e 100644 --- a/apps/backend-mock/utils/mock-data.ts +++ b/apps/backend-mock/utils/mock-data.ts @@ -114,7 +114,7 @@ const createDemosMenus = (role: 'admin' | 'super' | 'user') => { }, name: 'Demos', path: '/demos', - redirect: '/access', + redirect: '/demos/access', children: [ { name: 'Access', @@ -173,6 +173,6 @@ export const MOCK_MENUS = [ }, { menus: [...dashboardMenus, ...createDemosMenus('user')], - username: 'user', + username: 'jack', }, ]; diff --git a/apps/web-antd/src/views/demos/features/tabs/index.vue b/apps/web-antd/src/views/demos/features/tabs/index.vue index 74393f1ed..df98a4b8b 100644 --- a/apps/web-antd/src/views/demos/features/tabs/index.vue +++ b/apps/web-antd/src/views/demos/features/tabs/index.vue @@ -1,14 +1,16 @@ diff --git a/internal/tailwind-config/package.json b/internal/tailwind-config/package.json index a6959f269..291488665 100644 --- a/internal/tailwind-config/package.json +++ b/internal/tailwind-config/package.json @@ -49,7 +49,6 @@ "dependencies": { "@iconify/json": "^2.2.229", "@iconify/tailwind": "^1.1.1", - "@tailwindcss/forms": "^0.5.7", "@tailwindcss/nesting": "0.0.0-insiders.565cd3e", "@tailwindcss/typography": "^0.5.13", "autoprefixer": "^10.4.19", diff --git a/internal/tailwind-config/src/index.ts b/internal/tailwind-config/src/index.ts index 9c5eeab88..9da0e1cd7 100644 --- a/internal/tailwind-config/src/index.ts +++ b/internal/tailwind-config/src/index.ts @@ -5,7 +5,6 @@ import path from 'node:path'; import { fs, getPackagesSync } from '@vben/node-utils'; import { addDynamicIconSelectors } from '@iconify/tailwind'; -import formsPlugin from '@tailwindcss/forms'; import typographyPlugin from '@tailwindcss/typography'; import animate from 'tailwindcss-animate'; @@ -123,7 +122,6 @@ export default { darkMode: 'selector', plugins: [ animate, - formsPlugin, typographyPlugin, addDynamicIconSelectors(), enterAnimationPlugin, diff --git a/packages/@core/forward/stores/src/modules/tabbar.ts b/packages/@core/forward/stores/src/modules/tabbar.ts index 45199bea7..53dcbdae6 100644 --- a/packages/@core/forward/stores/src/modules/tabbar.ts +++ b/packages/@core/forward/stores/src/modules/tabbar.ts @@ -28,6 +28,10 @@ interface TabsState { * @zh_CN 当前打开的标签页列表 */ tabs: TabDefinition[]; + /** + * @zh_CN 更新时间,用于一些更新场景,使用watch深度监听的话,会损耗性能 + */ + updateTime?: number; } /** @@ -306,11 +310,17 @@ const useCoreTabbarStore = defineStore('core-tabbar', { const findTab = this.tabs.find( (item) => getTabPath(item) === getTabPath(tab), ); + if (findTab) { findTab.meta.newTabTitle = title; + await this.updateCacheTab(); } }, + + async setUpdateTime() { + this.updateTime = Date.now(); + }, /** * @zh_CN 设置标签页顺序 * @param oldIndex @@ -399,6 +409,7 @@ const useCoreTabbarStore = defineStore('core-tabbar', { excludeCachedTabs: new Set(), renderRouteView: true, tabs: [], + updateTime: Date.now(), }), }); diff --git a/packages/@core/hooks/src/use-tabs.ts b/packages/@core/hooks/src/use-tabs.ts index 830a0664b..ca6daf393 100644 --- a/packages/@core/hooks/src/use-tabs.ts +++ b/packages/@core/hooks/src/use-tabs.ts @@ -52,10 +52,12 @@ export function useTabs() { } async function setTabTitle(title: string) { + coreTabbarStore.setUpdateTime(); await coreTabbarStore.setTabTitle(route, title); } async function resetTabTitle() { + coreTabbarStore.setUpdateTime(); await coreTabbarStore.resetTabTitle(route); } diff --git a/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue b/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue index 73a3f459a..9b61d94c5 100644 --- a/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue +++ b/packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue @@ -49,7 +49,7 @@ const tabsView = computed((): TabConfig[] => { : true, icon: tab.meta.icon as string, key: tab.fullPath || tab.path, - title: (tab.meta?.title || tab.name) as string, + title: (tab.meta?.newTabTitle || tab.meta?.title || tab.name) as string, }; }); }); diff --git a/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue b/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue index e37ed7ee2..bb5907e65 100644 --- a/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue +++ b/packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue @@ -50,7 +50,7 @@ const tabsView = computed((): TabConfig[] => { : true, icon: tab.meta.icon as string, key: tab.fullPath || tab.path, - title: (tab.meta?.title || tab.name) as string, + title: (tab.meta?.newTabTitle || tab.meta?.title || tab.name) as string, }; }); }); diff --git a/packages/effects/layouts/src/basic/tabbar/use-tabbar.ts b/packages/effects/layouts/src/basic/tabbar/use-tabbar.ts index 6fba77364..6aaca73b4 100644 --- a/packages/effects/layouts/src/basic/tabbar/use-tabbar.ts +++ b/packages/effects/layouts/src/basic/tabbar/use-tabbar.ts @@ -55,9 +55,16 @@ export function useTabbar() { const { locale } = useI18n(); const currentTabs = ref(); - watch([() => coreTabbarStore.getTabs, () => locale.value], ([tabs, _]) => { - currentTabs.value = tabs.map((item) => wrapperTabLocale(item)); - }); + watch( + [ + () => coreTabbarStore.getTabs, + () => coreTabbarStore.updateTime, + () => locale.value, + ], + ([tabs]) => { + currentTabs.value = tabs.map((item) => wrapperTabLocale(item)); + }, + ); /** * 初始化固定标签页 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d65f4de36..5b76addf8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -368,9 +368,6 @@ importers: '@iconify/tailwind': specifier: ^1.1.1 version: 1.1.1 - '@tailwindcss/forms': - specifier: ^0.5.7 - version: 0.5.7(tailwindcss@3.4.6(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3))) '@tailwindcss/nesting': specifier: 0.0.0-insiders.565cd3e version: 0.0.0-insiders.565cd3e(postcss@8.4.39) @@ -3498,11 +3495,6 @@ packages: '@swc/helpers@0.5.12': resolution: {integrity: sha512-KMZNXiGibsW9kvZAO1Pam2JPTDBm+KSHMMHWdsyI/1DbIZjT2A6Gy3hblVXUMEDvUAKq+e0vL0X0o54owWji7g==} - '@tailwindcss/forms@0.5.7': - resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} - peerDependencies: - tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' - '@tailwindcss/nesting@0.0.0-insiders.565cd3e': resolution: {integrity: sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==} peerDependencies: @@ -6511,10 +6503,6 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - mini-svg-data-uri@1.4.4: - resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} - hasBin: true - minimatch@10.0.1: resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} engines: {node: 20 || >=22} @@ -11971,11 +11959,6 @@ snapshots: dependencies: tslib: 2.6.3 - '@tailwindcss/forms@0.5.7(tailwindcss@3.4.6(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)))': - dependencies: - mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.6(ts-node@10.9.2(@types/node@20.14.11)(typescript@5.5.3)) - '@tailwindcss/nesting@0.0.0-insiders.565cd3e(postcss@8.4.39)': dependencies: postcss: 8.4.39 @@ -15417,8 +15400,6 @@ snapshots: min-indent@1.0.1: {} - mini-svg-data-uri@1.4.4: {} - minimatch@10.0.1: dependencies: brace-expansion: 2.0.1