import type { BindingEventService } from '@slickgrid-universal/binding'; /** * Configuration options for keyboard navigation, * some ARIA practices can be found here: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/menu_role */ export interface KeyboardNavigationOptions { /** CSS selector to find currently focused item (e.g., '[role="menuitem"]:focus' or '.list-item:focus') */ focusedItemSelector: string; /** CSS selector to find all focusable items (e.g., '[role="menuitem"]' or '.list-item') */ allItemsSelector: string; /** Optional filter function to exclude items (disabled, hidden, etc.) */ filterFn?: (item: HTMLElement) => boolean; /** Callback when Enter/Space is pressed on focused item */ onActivate?: (focusedItem: HTMLElement) => void; /** Callback when Escape is pressed */ onEscape?: () => void; /** Callback when Tab or Shift+Tab is pressed */ onTab?: (evt: KeyboardEvent, focusedItem: HTMLElement) => void; /** Callback when ArrowRight is pressed on a submenu item to open the submenu */ onOpenSubMenu?: (focusedItem: HTMLElement) => void; /** Callback when ArrowLeft is pressed in a submenu to close it and return to parent */ onCloseSubMenu?: (focusedItem: HTMLElement) => void; /** Key for binding event service (default: 'keyboard-navigation') */ eventServiceKey?: string; } /** * Generic keyboard navigation handler for list-like components * Supports arrow key navigation, Enter/Space activation, and Escape to close * Can be used for menus, lists, pickers, or any focusable item collections */ export declare function bindKeyboardNavigation(containerElm: HTMLElement, bindEventService: BindingEventService, options: KeyboardNavigationOptions): void; /** * Wire up keyboard navigation for the menu container using bindKeyboardNavigation. * Should be called after menu DOM is created for all non-GridMenu plugins. */ export declare function wireMenuKeyboardNavigation(menuElm: HTMLElement, bindEventService: any, options?: { onActivate?: (focusedItem: HTMLElement) => void; onEscape?: () => void; onTab?: (evt: KeyboardEvent, focusedItem: HTMLElement) => void; onOpenSubMenu?: (focusedItem: HTMLElement) => void; onCloseSubMenu?: (focusedItem: HTMLElement) => void; eventServiceKey?: string; allItemsSelector?: string; focusedItemSelector?: string; }): void; //# sourceMappingURL=keyboardNavigation.d.ts.map