| /** |
| * -------------------------------------------------------------------------- |
| * Bootstrap menu.ts |
| * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) |
| * -------------------------------------------------------------------------- |
| */ |
| import { type Middleware, type MiddlewareState, type Placement, type ReferenceElement, type Strategy } from '@floating-ui/dom'; |
| import BaseComponent from './base-component.js'; |
| import { type BootstrapEvent } from './dom/event-handler.js'; |
| import type { ComponentConfig } from './util/config.js'; |
| import { type BreakpointListener, type ResponsivePlacements, type FloatingOffsetOption, type FloatingConfigOption } from './util/floating-ui.js'; |
| type Point = { |
| x: number; |
| y: number; |
| }; |
| type MenuConfig = { |
| autoClose: boolean | 'inside' | 'outside'; |
| boundary: string | Element; |
| container: string | Element | boolean; |
| display: string; |
| offset: FloatingOffsetOption; |
| floatingConfig: FloatingConfigOption; |
| menu: HTMLElement | null; |
| placement: string; |
| reference: string | Element | Record<string, any>; |
| strategy: string; |
| submenuTrigger: string; |
| submenuDelay: number; |
| }; |
| /** |
| * Class definition |
| */ |
| declare class Menu extends BaseComponent { |
| static _openInstances: Set<Menu>; |
| protected _config: MenuConfig; |
| protected _floatingCleanup: (() => void) | null; |
| protected _mediaQueryListeners: BreakpointListener[]; |
| protected _responsivePlacements: ResponsivePlacements | null; |
| protected _parent: HTMLElement; |
| protected _openSubmenus: Map<HTMLElement, () => void>; |
| protected _submenuCloseTimeouts: Map<HTMLElement, number>; |
| protected _hoverIntentData: { |
| x: number; |
| y: number; |
| timestamp: number; |
| } | null; |
| protected _menu: HTMLElement; |
| protected _isSubmenu: boolean; |
| protected _menuOriginalParent: ParentNode | null; |
| constructor(element?: string | Element | null, config?: Partial<MenuConfig> | null); |
| static get Default(): MenuConfig; |
| static get DefaultType(): Record<string, string>; |
| static get NAME(): string; |
| toggle(): Promise<void>; |
| show(): Promise<void>; |
| hide(): Promise<void>; |
| dispose(): void; |
| update(): void; |
| protected _findMenu(): Element | null; |
| protected _findWrapper(menu: HTMLElement): HTMLElement; |
| protected _completeHide(relatedTarget: Record<string, unknown>): Promise<void>; |
| protected _getConfig(config?: ComponentConfig | null): ComponentConfig; |
| protected _createFloating(): void; |
| protected _updateFloatingPosition(referenceElement?: ReferenceElement | null): Promise<void>; |
| protected _isShown(): boolean; |
| protected _isAnimated(): boolean; |
| protected _getPlacement(): string; |
| protected _parseResponsivePlacements(): void; |
| protected _setupMediaQueryListeners(): void; |
| protected _disposeMediaQueryListeners(): void; |
| protected _getOffset(): number[] | ((state: MiddlewareState) => any); |
| protected _getFloatingMiddleware(): Middleware[]; |
| protected _getFallbackPlacements(): Placement[]; |
| protected _getFloatingConfig(placement: string, middleware: Middleware[]): Record<string, any>; |
| protected _disposeFloating(): void; |
| protected _getContainer(): HTMLElement | null; |
| protected _moveMenuToContainer(): void; |
| protected _restoreMenuToOriginalParent(): void; |
| protected _applyFloatingPosition(reference: ReferenceElement, floating: HTMLElement, placement: Placement, middleware: Middleware[], strategy?: Strategy): Promise<string | null>; |
| protected _setupSubmenuListeners(): void; |
| protected _onSubmenuTriggerEnter(event: BootstrapEvent): void; |
| protected _onSubmenuLeave(event: BootstrapEvent): void; |
| protected _onSubmenuTriggerClick(event: BootstrapEvent): void; |
| protected _initSubmenuTriggers(): void; |
| protected _openSubmenu(trigger: HTMLElement, submenu: HTMLElement, submenuWrapper: Element): void; |
| protected _closeSubmenu(submenu: HTMLElement, submenuWrapper: Element): void; |
| protected _closeAllSubmenus(): void; |
| protected _closeSiblingSubmenus(currentSubmenuWrapper: Element): void; |
| protected _createSubmenuFloating(trigger: HTMLElement, submenu: HTMLElement, submenuWrapper: Element): () => void; |
| protected _scheduleSubmenuClose(submenu: HTMLElement, submenuWrapper: Element): void; |
| protected _cancelSubmenuCloseTimeout(submenu: HTMLElement): void; |
| protected _clearAllSubmenuTimeouts(): void; |
| protected _trackMousePosition(event: BootstrapEvent): void; |
| protected _isMovingTowardSubmenu(event: BootstrapEvent, submenu: HTMLElement): boolean; |
| protected _pointInTriangle(point: Point, v1: Point, v2: Point, v3: Point): boolean; |
| protected _getItemsInMenu(menu: Element): HTMLElement[]; |
| protected _selectMenuItem({ key, target }: BootstrapEvent): void; |
| protected _closeUnrelatedSubmenus(currentMenu: Element, focusedElement: HTMLElement): void; |
| protected _handleSubmenuKeydown(event: BootstrapEvent): boolean; |
| static clearMenus(event: BootstrapEvent): void; |
| protected static _getToggleFromKeydownContext(element: HTMLElement, event: BootstrapEvent): HTMLElement | null; |
| static dataApiKeydownHandler(this: HTMLElement, event: BootstrapEvent): void; |
| } |
| export default Menu; |
| export type { MenuConfig }; |
| //# sourceMappingURL=menu.d.ts.map |