chatShellTabConfig
解析与管理 Chat 壳层 Tab 配置(page-config displays.chatShell.tabs),含默认 Tab、运行时过滤、Tabbar 项构建与路由高亮匹配。
函数签名
typescript
const DEFAULT_CHAT_SHELL_TABS: ChatShellTabConfig[]
class ChatShellTabsConfigError extends Error
function parseChatShellTabsFromDisplays(displays: unknown): ChatShellTabConfig[]
function filterChatShellTabsForRuntime(
tabs: ChatShellTabConfig[],
opts: { isElectron: boolean },
): ChatShellTabConfig[]
function buildChatShellNavTabbarItems(tabs: ChatShellTabConfig[]): ChatShellNavTabbarItem[]
function buildChatShellMobileTabbarItems(tabs: ChatShellTabConfig[]): ChatShellTabbarItem[]
function resolveChatShellTabRouteTarget(tab: ChatShellTabConfig): { name: string } | { path: string } | null
function tabMatchesRoute(
tab: ChatShellTabConfig,
route: { name?: string | symbol | null; path?: string },
): boolean
function resolveActiveTabKey(
tabs: ChatShellTabConfig[],
route: { name?: string | symbol | null; path?: string },
): string
function isChatShellTabHideTabbar(tabs: ChatShellTabConfig[], activeKey: string): boolean
function findChatShellDesktopFooterTab(tabs: ChatShellTabConfig[]): ChatShellTabConfig | undefined
function isChatShellMineTab(tab: { key?: string; useMineAvatar?: boolean }): boolean
function toChatShellTabbarItem(tab: ChatShellTabConfig): ChatShellTabbarItem类型定义见 zcw-shared/types/chat-shell-tab-config。
参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
displays | unknown | 是 | page-config 的 displays 字段,需含 chatShell.tabs |
tabs | ChatShellTabConfig[] | 是 | 已解析的 Tab 列表 |
opts.isElectron | boolean | 是 | 是否 Electron 壳;为 false 时过滤 electronOnly Tab |
route | { name?, path? } | 是 | Vue Router 当前路由,用于高亮匹配 |
activeKey | string | 是 | 当前激活 Tab 的 key |
返回值
| 类型 | 说明 |
|---|---|
ChatShellTabConfig[] | 解析或过滤后的 Tab 配置 |
ChatShellTabbarItem[] | 供 Tabbar 组件渲染的项(含 icon、label 等) |
string | resolveActiveTabKey 返回当前路由对应的 Tab key |
boolean | tabMatchesRoute / isChatShellTabHideTabbar 等布尔判断 |
工作原理
parseChatShellTabsFromDisplays:从displays.chatShell.tabs读取并归一化每项字段;缺失或无效时抛出ChatShellTabsConfigError(运行时无默认兜底)。DEFAULT_CHAT_SHELL_TABS:管理端编辑 page-config 时的初始值与「恢复默认」数据源,终端运行时须从 displays 解析。filterChatShellTabsForRuntime:按electronOnly等运行时条件过滤 Tab。buildChatShellNavTabbarItems/buildChatShellMobileTabbarItems:分别生成宽屏侧栏与移动端底栏项;侧栏默认隐藏 label 并附带 tooltip。tabMatchesRoute/resolveActiveTabKey:按routeName、routeNamePrefix、relatedRouteNames或routepath 匹配当前 Tab,无硬编码 key。resolveChatShellTabRouteTarget:由 Tab 配置解析 Router 跳转目标(name优先于path)。
异常
| 错误类型 | 触发条件 | 错误信息 |
|---|---|---|
ChatShellTabsConfigError | displays 缺失或 tabs 为空/无效 | page-config displays 缺失… 等 |