import { type TypeaheadPredicate } from '@aracna/core'; import { type CSSResultGroup, type PropertyDeclarations } from 'lit'; import { AriaMenuButtonController, AriaMenuController, AriaMenuItemController, AriaMenuSubMenuController } from '../../controllers/aria-menu-controller.js'; import { ElementSlug } from '../../definitions/enums.js'; import type { AriaMenuButtonElementEventMap, AriaMenuElementEventMap, AriaMenuItemElementEventMap, AriaMenuSubMenuElementEventMap } from '../../definitions/events.js'; import type { QueryDeclarations } from '../../definitions/interfaces.js'; import { AracnaBaseElement as BaseElement } from '../core/base-element.js'; import { AracnaFloatingElement as FloatingElement } from '../core/floating-element.js'; declare global { interface HTMLElementTagNameMap { 'aracna-aria-menu': AriaMenuElement; 'aracna-aria-menu-button': AriaMenuButtonElement; 'aracna-aria-menu-item': AriaMenuItemElement; 'aracna-aria-menu-submenu': AriaMenuSubMenuElement; } } declare class AriaMenuElement extends BaseElement { protected aria: AriaMenuController; /** * Properties */ /** */ collapseDebounceTime?: number; collapseOnPointerLeave?: boolean; expandOnPointerEnter?: boolean; typeaheadDebounceTime?: number; typeaheadPredicate?: TypeaheadPredicate; /** * Queries */ /** */ buttonElement?: AriaMenuButtonElement; expandedSubMenuElement?: AriaMenuSubMenuElement; expandedSubMenuElements: AriaMenuSubMenuElement[]; focusedItemElement?: AriaMenuItemElement; itemElements: AriaMenuItemElement[]; shallowFocusedItemElement?: AriaMenuItemElement; shallowItemElements: AriaMenuItemElement[]; subMenuElement?: AriaMenuSubMenuElement; /** * Internals */ /** */ expanded?: boolean; focused?: boolean; constructor(); connectedCallback(): void; disconnectedCallback(): void; onFocusIn(): void; onFocusOut(): void; onFocusOutDebounce: () => void; onKeyDown(event: KeyboardEvent): void; onTypeaheadMatch: (item: AriaMenuItemElement) => void; collapse(): void; expand(): void; blur(): void; focus(): void; get collapsed(): boolean; get slug(): ElementSlug; get shallowFocusedItemElementIndex(): number; static properties: PropertyDeclarations; static queries: QueryDeclarations; } declare class AriaMenuButtonElement extends BaseElement { protected arai: AriaMenuButtonController; /** * Queries */ /** */ rootElement?: AriaMenuElement; /** * Internals */ /** */ pointerEntered?: boolean; connectedCallback(): void; disconnectedCallback(): void; onClick(): void; onPointerEnter(): void; onPointerLeave(): void; onPointerLeaveDebounce: () => void; get slug(): ElementSlug; static queries: QueryDeclarations; static styles: CSSResultGroup; } declare class AriaMenuItemElement extends BaseElement { protected aria: AriaMenuItemController; /** * Properties */ /** */ focused?: boolean; headline?: string; /** * Queries */ /** */ anchorElement?: HTMLAnchorElement; rootElement?: AriaMenuElement; subMenuElement?: AriaMenuSubMenuElement; /** * Internals */ /** */ pointerEntered?: boolean; connectedCallback(): void; disconnectedCallback(): void; attributeChangedCallback(name: string, _old: string | null, value: string | null): void; onBlur(): void; onFocus(): void; onClick(event: MouseEvent): void; onPointerEnter(): void; onPointerLeave(): void; onPointerLeaveDebounce: () => void; blur(): void; focus(options?: FocusOptions | undefined): void; get deep(): boolean; get depth(): number; get index(): number; get slug(): ElementSlug; get sameDepthItemElements(): NodeListOf; get sameDepthFocusedItemElement(): AriaMenuItemElement | null; get sameDepthFocusedItemElements(): NodeListOf; get sameDepthExpandedSubMenuElement(): AriaMenuSubMenuElement | null; get shallow(): boolean; static properties: PropertyDeclarations; static queries: QueryDeclarations; static styles: CSSResultGroup; } declare class AriaMenuSubMenuElement extends FloatingElement { protected aria: AriaMenuSubMenuController; /** * Properties */ /** */ expanded?: boolean; /** * Queries */ /** */ itemElements: AriaMenuItemElement[]; parentItemElement?: AriaMenuItemElement; parentSubMenuElement?: AriaMenuSubMenuElement; rootElement?: AriaMenuElement; connectedCallback(): void; disconnectedCallback(): void; onKeyDown(event: KeyboardEvent): void; onTypeaheadMatch: (item: AriaMenuItemElement) => void; toggle(): void; collapse(): void; expand(): void; get collapsed(): boolean; get deep(): boolean; get depth(): number; get slug(): ElementSlug; get referenceElement(): HTMLElement | undefined; get shallow(): boolean; get shallowFocusedItemElement(): AriaMenuItemElement | null; get shallowFocusedItemElementIndex(): number; get shallowItemElements(): NodeListOf; static properties: PropertyDeclarations; static queries: QueryDeclarations; static styles: CSSResultGroup; } export { AriaMenuButtonElement as AracnaAriaMenuButtonElement, AriaMenuElement as AracnaAriaMenuElement, AriaMenuItemElement as AracnaAriaMenuItemElement, AriaMenuSubMenuElement as AracnaAriaMenuSubMenuElement };