UNPKG

@lishangpei/nav-sidebar

Version:

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

162 lines (132 loc) 2.67 kB
/** * Type definitions for React wrapper of NavSidebar Web Component */ import React from 'react'; import { Site, NavSidebarElement } from './nav-sidebar-wc'; export interface NavSidebarProps { /** * 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; /** * Children (for passing sites as JSON) */ children?: React.ReactNode; /** * Other HTML attributes */ [key: string]: any; } export interface NavSidebarRef { /** * 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; } /** * React component for NavSidebar */ declare const NavSidebarReact: React.ForwardRefExoticComponent< NavSidebarProps & React.RefAttributes<NavSidebarRef> >; export default NavSidebarReact;