Skip to content

Commit f95d773

Browse files
author
yuanwj
committed
feat(tabs): 支持动态函数作为标签标题
修改 `setTabTitle` 和 `tabsView` 逻辑,允许传入函数作为标签标题,以便动态生成标题内容
1 parent 9e67929 commit f95d773

File tree

4 files changed

+8
-4
lines changed

4 files changed

+8
-4
lines changed

packages/@core/ui-kit/tabs-ui/src/components/tabs-chrome/tabs.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ const tabsView = computed(() => {
4242
return props.tabs.map((tab) => {
4343
const { fullPath, meta, name, path } = tab || {};
4444
const { affixTab, icon, newTabTitle, tabClosable, title } = meta || {};
45+
const newTabTitle2 =
46+
newTabTitle instanceof Function ? newTabTitle() : newTabTitle;
4547
return {
4648
affixTab: !!affixTab,
4749
closable: Reflect.has(meta, 'tabClosable') ? !!tabClosable : true,
@@ -51,7 +53,7 @@ const tabsView = computed(() => {
5153
meta,
5254
name,
5355
path,
54-
title: (newTabTitle || title || name) as string,
56+
title: (newTabTitle2 || title || name) as string,
5557
} as TabConfig;
5658
});
5759
});

packages/@core/ui-kit/tabs-ui/src/components/tabs/tabs.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ const tabsView = computed(() => {
4949
return props.tabs.map((tab) => {
5050
const { fullPath, meta, name, path } = tab || {};
5151
const { affixTab, icon, newTabTitle, tabClosable, title } = meta || {};
52+
const newTabTitle2 =
53+
newTabTitle instanceof Function ? newTabTitle() : newTabTitle;
5254
return {
5355
affixTab: !!affixTab,
5456
closable: Reflect.has(meta, 'tabClosable') ? !!tabClosable : true,
@@ -58,7 +60,7 @@ const tabsView = computed(() => {
5860
meta,
5961
name,
6062
path,
61-
title: (newTabTitle || title || name) as string,
63+
title: (newTabTitle2 || title || name) as string,
6264
} as TabConfig;
6365
});
6466
});

packages/effects/hooks/src/use-tabs.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export function useTabs() {
5353
await tabbarStore.closeTabByKey(key, router);
5454
}
5555

56-
async function setTabTitle(title: string) {
56+
async function setTabTitle(title: (() => string) | string) {
5757
tabbarStore.setUpdateTime();
5858
await tabbarStore.setTabTitle(route, title);
5959
}

packages/stores/src/modules/tabbar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ export const useTabbarStore = defineStore('core-tabbar', {
404404
* @param tab
405405
* @param title
406406
*/
407-
async setTabTitle(tab: TabDefinition, title: string) {
407+
async setTabTitle(tab: TabDefinition, title: (() => string) | string) {
408408
const findTab = this.tabs.find(
409409
(item) => getTabPath(item) === getTabPath(tab),
410410
);

0 commit comments

Comments
 (0)