UNPKG

@lishangpei/nav-sidebar

Version:

企业级站点导航组件 - 基于 Web Components,真正的跨框架复用

191 lines (158 loc) 3.06 kB
/** * Type definitions for Vue wrapper of NavSidebar Web Component */ import { DefineComponent } from 'vue'; import { Site, NavSidebarElement } from './nav-sidebar-wc'; export interface NavSidebarVueProps { /** * URL to fetch sites list (can include {env} placeholder) */ apiUrl?: string; /** * Static sites list */ sites?: Site[]; /** * Sidebar title * @default "站点导航" */ title?: string; /** * Environment options (comma-separated string or array) * @default "ST,UAT,PRD" */ environments?: string | string[]; /** * Default environment * @default "PRD" */ defaultEnv?: string; /** * Float button icon * @default "🧭" */ floatIcon?: string; /** * Enable frequent visits tracking * @default true */ enableFrequentVisits?: boolean; /** * Number of frequent visits to show * @default 5 */ frequentVisitsLimit?: number; /** * Auto initialize on mount * @default true */ autoInit?: boolean; /** * Callback when component is ready */ onReady?: () => void; /** * Callback when sidebar is shown */ onShow?: () => void; /** * Callback when sidebar is hidden */ onHide?: () => void; /** * Callback when a site is clicked * Return false to prevent default navigation */ onSiteClick?: (site: Site, event: MouseEvent) => boolean | void; /** * Callback when environment changes */ onEnvChange?: (newEnv: string, oldEnv: string) => void; } export interface NavSidebarVueEmits { /** * Emitted when component is ready */ (e: 'ready'): void; /** * Emitted when sidebar is shown */ (e: 'show'): void; /** * Emitted when sidebar is hidden */ (e: 'hide'): void; /** * Emitted when a site is clicked */ (e: 'site-click', site: Site, event: MouseEvent): void; /** * Emitted when environment changes */ (e: 'env-change', newEnv: string, oldEnv: string): void; } export interface NavSidebarVueExposed { /** * Show the sidebar */ show(): void; /** * Hide the sidebar */ hide(): void; /** * Toggle sidebar visibility */ toggle(): void; /** * Refresh sites list */ refresh(): Promise<void>; /** * Switch environment */ switchEnvironment(env: string): Promise<void>; /** * Get current environment */ getCurrentEnvironment(): string; /** * Set sites programmatically */ setSites(sites: Site[]): void; /** * Get current sites */ getSites(): Site[]; /** * Clear visit statistics */ clearVisitStats(): void; /** * Get frequent visits */ getFrequentVisits(limit?: number): Site[]; /** * Get the underlying Web Component element */ readonly element: NavSidebarElement | null; } /** * Vue component for NavSidebar */ declare const NavSidebarVue: DefineComponent< NavSidebarVueProps, {}, {}, {}, {}, {}, {}, NavSidebarVueEmits, string, {}, {}, {}, NavSidebarVueExposed >; export default NavSidebarVue;