import { Base } from '@studiometa/js-toolkit'; import type { BaseConfig, BaseProps, KeyServiceProps } from '@studiometa/js-toolkit'; import { MenuBtn } from './MenuBtn.js'; import { MenuList } from './MenuList.js'; export interface MenuProps extends BaseProps { $children: { Menu: Menu[]; MenuBtn: MenuBtn[]; MenuList: MenuList[]; }; $options: { mode: 'click' | 'hover'; }; } /** * Menu class. * @link https://ui.studiometa.dev/components/Menu/ */ export declare class Menu extends Base { /** * Config. */ static config: BaseConfig; /** * Get the first `MenuList` instance. */ get menuList(): MenuList; /** * Get the first `MenuBtn` instance. */ get menuBtn(): MenuBtn; /** * Test which mode to use. */ get shouldReactOnClick(): boolean; /** * Wether the button or the items are hovered. */ get isHover(): boolean; /** * Set attributes on mounted, destroy the component if it is missing required * child components. */ mounted(): Promise; /** * Keyboard management. */ keyed({ ENTER, ESC, isUp }: KeyServiceProps): void; /** * Close menu list on click outside. */ onDocumentClick({ event }: { event: MouseEvent; }): void; /** * Toggle menu items on button click. */ onMenuBtnClick({ event, target }: { event: MouseEvent; target: MenuBtn; }): void; /** * Open menu items on button mouse enter. */ onMenuBtnMouseenter({ target }: { target: MenuBtn; }): void; /** * Close menu items on button mouse leave. */ onMenuBtnMouseleave(): void; /** * Close menu items on button mouse leave. */ onMenuListMouseleave(): void; /** * Close other non-parent menu items on menu items open. */ onMenuListItemsOpen({ target }: { target: MenuList; }): void; /** * Close the menu. */ close(): void; /** * Open the menu. */ open(): void; /** * Toggle the menu. */ toggle(): void; }