@lishangpei/nav-sidebar
Version:
企业级站点导航组件 - 基于 Web Components,真正的跨框架复用
191 lines (158 loc) • 3.06 kB
TypeScript
/**
* 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;