UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

65 lines (64 loc) 2.59 kB
import { IconProps } from "../Icon/type.mjs"; import { MenuCheckboxItemType } from "./checkboxItem.mjs"; import { MenuSwitchItemType } from "./switchItem.mjs"; import { MenuDividerType, MenuItemType, SubMenuType } from "./type.mjs"; import { ComponentPropsWithRef, Key, MouseEventHandler, ReactNode } from "react"; import { MenuSubmenuRoot } from "@base-ui/react/menu"; //#region src/Menu/baseItem.d.ts /** * Group type for Base UI driven menus (DropdownMenu / ContextMenu). * Unlike MenuItemGroupType, this supports checkbox/switch items in children. */ interface BaseMenuItemGroupType { children?: BaseMenuItemType[]; key?: Key; label?: ReactNode; type: 'group'; } /** * Submenu type for Base UI driven menus (DropdownMenu / ContextMenu). * Unlike rc-menu's SubMenuType, this maps to @base-ui's Menu.SubmenuRoot + Menu.SubmenuTrigger. */ interface BaseSubMenuType { children?: BaseMenuItemType[]; /** Hover-close delay in ms. Requires `openOnHover`. */ closeDelay?: number; danger?: boolean; /** Initial open state when uncontrolled. */ defaultOpen?: boolean; /** Hover-open delay in ms. Requires `openOnHover`. */ delay?: number; desc?: ReactNode; disabled?: boolean; /** Pinned footer slot, rendered below the scrollable submenu items with a divider border. */ footer?: ReactNode; /** Pinned header slot, rendered above the scrollable submenu items with a divider border. */ header?: ReactNode; icon?: IconProps['icon']; key?: Key; label?: ReactNode; /** Click handler on the trigger. */ onClick?: MouseEventHandler<HTMLElement>; /** Fired when the submenu opens or closes. */ onOpenChange?: (open: boolean, eventDetails: MenuSubmenuRoot.ChangeEventDetails) => void; /** Controlled open state of the submenu. */ open?: boolean; /** Open the submenu when the trigger is hovered. */ openOnHover?: boolean; /** * Extra DOM props spread onto the trigger element. * Use for `ref`, `id`, `style`, `data-*`, `aria-*`, mouse/focus events, etc. */ triggerProps?: ComponentPropsWithRef<'div'>; type?: 'submenu'; } /** * Base item union for Base UI driven menus (DropdownMenu / ContextMenu). * * Note: This intentionally does NOT change `GenericItemType` itself, * because `GenericItemType` maps to rc-menu/antd Menu item types. */ type BaseMenuItemType = MenuItemType | BaseSubMenuType | SubMenuType | BaseMenuItemGroupType | MenuDividerType | MenuCheckboxItemType | MenuSwitchItemType | null; //#endregion export { BaseMenuItemGroupType, BaseMenuItemType, BaseSubMenuType }; //# sourceMappingURL=baseItem.d.mts.map