@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
46 lines (45 loc) • 1.42 kB
TypeScript
import { InjectionKey } from 'vue';
export type TabNavAlign = 'left' | 'center' | 'right';
export type TabNavPlacement = 'top' | 'right' | 'bottom' | 'left';
export interface TabNavItemOptions {
label: string | number;
content?: string;
icon?: Record<string, any>;
disabled?: boolean;
closable?: boolean;
onToggle?: (active: boolean) => void;
}
export type TabNavOptions = TabNavItemOptions | string | number;
export interface ItemState {
el?: HTMLElement | null;
label: string | number;
index: number;
total: number;
}
export interface TabNavState {
currentActive: string | number;
closable: boolean;
increaseItem: (item: ItemState) => void;
decreaseItem: (item: ItemState) => void;
handleActive: (label: string | number) => void;
handleClose: (label: string | number) => void;
refreshLabels: () => void;
}
export type ChangeEvent = (label: string | number) => void;
export interface TabNavSlots {
prefix?: () => any;
suffix?: () => any;
add?: () => any;
marker?: () => any;
/**
* @internal
*/
default?: () => any;
}
export declare const TAB_NAV_STATE: InjectionKey<TabNavState>;
export declare const trackStyleMap: Readonly<{
readonly top: readonly ["left", "width"];
readonly right: readonly ["top", "height"];
readonly bottom: readonly ["left", "width"];
readonly left: readonly ["top", "height"];
}>;