import { CSSProperties, PropType, VNode } from 'vue'; import { BaseProps } from '../_base/baseComponent'; import type { SubNavProps, ToggleIcon } from './SubNav'; import SubNav from './SubNav'; import type { NavItemProps, ItemKey } from './Item'; import Item from './Item'; import type { NavFooterProps } from './Footer'; import Footer from './Footer'; import type { NavHeaderProps } from './Header'; import Header from './Header'; import '@douyinfe/semi-foundation/lib/es/navigation/navigation.css'; import { DropdownProps } from '../dropdown'; import { Motion } from '../_base/base'; import { CombineProps, VueJsxNode } from '../interface'; export type Mode = 'vertical' | 'horizontal'; export { NavFooterProps, NavHeaderProps, ToggleIcon, ItemKey, SubNavProps, NavItemProps }; export interface OnSelectedData { itemKey: ItemKey; selectedKeys: (string | number)[]; selectedItems: (NavItemProps | SubNavProps)[]; domEvent: MouseEvent; isOpen: boolean; } export interface SubNavPropsWithItems extends SubNavProps { items?: (SubNavPropsWithItems | string)[]; } export interface NavItemPropsWithItems extends NavItemProps { items?: (NavItemPropsWithItems | string)[]; } export type NavItems = (string | SubNavPropsWithItems | NavItemPropsWithItems)[]; export interface NavProps extends BaseProps { bodyStyle?: CSSProperties; children?: VNode[]; defaultIsCollapsed?: boolean; defaultOpenKeys?: string[]; defaultSelectedKeys?: string[]; subDropdownProps?: DropdownProps; expandIcon?: VueJsxNode; footer?: VNode | NavFooterProps; header?: VNode | NavHeaderProps; isCollapsed?: boolean; items?: NavItems; limitIndent?: boolean; mode?: Mode; multiple?: boolean; openKeys?: string[]; prefixCls?: string; selectedKeys?: string[]; subNavCloseDelay?: number; subNavMotion?: Motion; subNavOpenDelay?: number; toggleIconPosition?: string; tooltipHideDelay?: number; tooltipShowDelay?: number; getPopupContainer?: () => HTMLElement; onClick?: (data: { itemKey: ItemKey; domEvent: MouseEvent; isOpen: boolean; }) => void; onCollapseChange?: (isCollapse: boolean) => void; onDeselect?: (data?: any) => void; onOpenChange?: (data: { itemKey: ItemKey; openKeys: ItemKey[]; domEvent: MouseEvent; isOpen: boolean; }) => void; onSelect?: (data: OnSelectedData) => void; renderWrapper?: ({ itemElement, isSubNav, isInSubNav, props, }: { itemElement: VNode; isInSubNav: boolean; isSubNav: boolean; props: NavItemProps | SubNavProps; }) => VNode; } export interface NavState { isCollapsed: boolean; openKeys: ItemKey[]; items: any[]; itemKeysMap: { [itemKey: string]: ItemKey[]; }; selectedKeys: ItemKey[]; } export declare const vuePropsType: CombineProps; declare const Nav: import("vue").DefineComponent | { type: PropType; default?: any; required?: false; }; children: PropType[]> | { type: PropType[]>; default?: any; required?: false; }; defaultIsCollapsed: PropType | { type: PropType; default?: any; required?: false; }; defaultOpenKeys: PropType | { type: PropType; default?: any; required?: false; }; defaultSelectedKeys: PropType | { type: PropType; default?: any; required?: false; }; subDropdownProps: PropType | { type: PropType; default?: any; required?: false; }; expandIcon: PropType | { type: PropType; default?: any; required?: false; }; footer: PropType | NavFooterProps> | { type: PropType | NavFooterProps>; default?: any; required?: false; }; header: PropType | NavHeaderProps> | { type: PropType | NavHeaderProps>; default?: any; required?: false; }; isCollapsed: PropType | { type: PropType; default?: any; required?: false; }; items: PropType | { type: PropType; default?: any; required?: false; }; limitIndent: PropType | { type: PropType; default?: any; required?: false; }; mode: PropType | { type: PropType; default?: any; required?: false; }; multiple: PropType | { type: PropType; default?: any; required?: false; }; openKeys: PropType | { type: PropType; default?: any; required?: false; }; prefixCls: PropType | { type: PropType; default?: any; required?: false; }; selectedKeys: PropType | { type: PropType; default?: any; required?: false; }; subNavCloseDelay: PropType | { type: PropType; default?: any; required?: false; }; subNavMotion: PropType | { type: PropType; default?: any; required?: false; }; subNavOpenDelay: PropType | { type: PropType; default?: any; required?: false; }; toggleIconPosition: PropType | { type: PropType; default?: any; required?: false; }; tooltipHideDelay: PropType | { type: PropType; default?: any; required?: false; }; tooltipShowDelay: PropType | { type: PropType; default?: any; required?: false; }; getPopupContainer: PropType<() => HTMLElement> | { type: PropType<() => HTMLElement>; default?: any; required?: false; }; onClick: PropType<(data: { itemKey: ItemKey; domEvent: MouseEvent; isOpen: boolean; }) => void> | { type: PropType<(data: { itemKey: ItemKey; domEvent: MouseEvent; isOpen: boolean; }) => void>; default?: any; required?: false; }; onCollapseChange: PropType<(isCollapse: boolean) => void> | { type: PropType<(isCollapse: boolean) => void>; default?: any; required?: false; }; onDeselect: PropType<(data?: any) => void> | { type: PropType<(data?: any) => void>; default?: any; required?: false; }; onOpenChange: PropType<(data: { itemKey: ItemKey; openKeys: ItemKey[]; domEvent: MouseEvent; isOpen: boolean; }) => void> | { type: PropType<(data: { itemKey: ItemKey; openKeys: ItemKey[]; domEvent: MouseEvent; isOpen: boolean; }) => void>; default?: any; required?: false; }; onSelect: PropType<(data: OnSelectedData) => void> | { type: PropType<(data: OnSelectedData) => void>; default?: any; required?: false; }; renderWrapper: PropType<({ itemElement, isSubNav, isInSubNav, props, }: { itemElement: VNode; isInSubNav: boolean; isSubNav: boolean; props: NavItemProps | SubNavProps; }) => VNode> | { type: PropType<({ itemElement, isSubNav, isInSubNav, props, }: { itemElement: VNode; isInSubNav: boolean; isSubNav: boolean; props: NavItemProps | SubNavProps; }) => VNode>; default?: any; required?: false; }; style: PropType | { type: PropType; default?: any; required?: false; }; className: PropType | { type: PropType; default?: any; required?: false; }; }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly | { type: PropType; default?: any; required?: false; }; children: PropType[]> | { type: PropType[]>; default?: any; required?: false; }; defaultIsCollapsed: PropType | { type: PropType; default?: any; required?: false; }; defaultOpenKeys: PropType | { type: PropType; default?: any; required?: false; }; defaultSelectedKeys: PropType | { type: PropType; default?: any; required?: false; }; subDropdownProps: PropType | { type: PropType; default?: any; required?: false; }; expandIcon: PropType | { type: PropType; default?: any; required?: false; }; footer: PropType | NavFooterProps> | { type: PropType | NavFooterProps>; default?: any; required?: false; }; header: PropType | NavHeaderProps> | { type: PropType | NavHeaderProps>; default?: any; required?: false; }; isCollapsed: PropType | { type: PropType; default?: any; required?: false; }; items: PropType | { type: PropType; default?: any; required?: false; }; limitIndent: PropType | { type: PropType; default?: any; required?: false; }; mode: PropType | { type: PropType; default?: any; required?: false; }; multiple: PropType | { type: PropType; default?: any; required?: false; }; openKeys: PropType | { type: PropType; default?: any; required?: false; }; prefixCls: PropType | { type: PropType; default?: any; required?: false; }; selectedKeys: PropType | { type: PropType; default?: any; required?: false; }; subNavCloseDelay: PropType | { type: PropType; default?: any; required?: false; }; subNavMotion: PropType | { type: PropType; default?: any; required?: false; }; subNavOpenDelay: PropType | { type: PropType; default?: any; required?: false; }; toggleIconPosition: PropType | { type: PropType; default?: any; required?: false; }; tooltipHideDelay: PropType | { type: PropType; default?: any; required?: false; }; tooltipShowDelay: PropType | { type: PropType; default?: any; required?: false; }; getPopupContainer: PropType<() => HTMLElement> | { type: PropType<() => HTMLElement>; default?: any; required?: false; }; onClick: PropType<(data: { itemKey: ItemKey; domEvent: MouseEvent; isOpen: boolean; }) => void> | { type: PropType<(data: { itemKey: ItemKey; domEvent: MouseEvent; isOpen: boolean; }) => void>; default?: any; required?: false; }; onCollapseChange: PropType<(isCollapse: boolean) => void> | { type: PropType<(isCollapse: boolean) => void>; default?: any; required?: false; }; onDeselect: PropType<(data?: any) => void> | { type: PropType<(data?: any) => void>; default?: any; required?: false; }; onOpenChange: PropType<(data: { itemKey: ItemKey; openKeys: ItemKey[]; domEvent: MouseEvent; isOpen: boolean; }) => void> | { type: PropType<(data: { itemKey: ItemKey; openKeys: ItemKey[]; domEvent: MouseEvent; isOpen: boolean; }) => void>; default?: any; required?: false; }; onSelect: PropType<(data: OnSelectedData) => void> | { type: PropType<(data: OnSelectedData) => void>; default?: any; required?: false; }; renderWrapper: PropType<({ itemElement, isSubNav, isInSubNav, props, }: { itemElement: VNode; isInSubNav: boolean; isSubNav: boolean; props: NavItemProps | SubNavProps; }) => VNode> | { type: PropType<({ itemElement, isSubNav, isInSubNav, props, }: { itemElement: VNode; isInSubNav: boolean; isSubNav: boolean; props: NavItemProps | SubNavProps; }) => VNode>; default?: any; required?: false; }; style: PropType | { type: PropType; default?: any; required?: false; }; className: PropType | { type: PropType; default?: any; required?: false; }; }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>; export type NavType = typeof Nav & { Item: typeof Item; Header: typeof Header; Footer: typeof Footer; SubNav: typeof SubNav; }; declare const BaseNav: NavType; export default BaseNav;