/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { TabsHost, BaseTabsController } from './base.controller.js'; import { ReactiveControllerHost } from 'lit'; /** * Keyboard controller interface for tabs components */ export interface KeyboardController { handleKeyDown(event: KeyboardEvent): void; handleTabKeyDown(event: KeyboardEvent, tabIndex: number): void; isActivationKey(event: KeyboardEvent): boolean; isArrowKey(event: KeyboardEvent): boolean; } /** * Enhanced tabs host interface for keyboard functionality */ export interface TabsKeyboardHost extends TabsHost { orientation: string; setActiveTab(index: number, event?: Event): void; } /** * Keyboard controller manages keyboard navigation for tabs components * Handles Tab/Shift+Tab, Arrow keys, Enter/Space activation following ARIA best practices */ export declare class TabsKeyboardController extends BaseTabsController implements KeyboardController { protected _host: TabsKeyboardHost & ReactiveControllerHost; private keyboardHandler; constructor(host: TabsKeyboardHost & ReactiveControllerHost); get host(): TabsKeyboardHost & ReactiveControllerHost; hostConnected(): void; hostDisconnected(): void; /** * Handle keyboard events for tabs navigation * @param event - The keyboard event */ handleKeyDown(event: KeyboardEvent): void; /** * Handle keyboard events for specific tab * @param event - The keyboard event * @param tabIndex - The tab index */ handleTabKeyDown(event: KeyboardEvent, tabIndex: number): void; /** * Check if key is activation key (Enter or Space) * @param event - The keyboard event */ isActivationKey(event: KeyboardEvent): boolean; /** * Check if key is arrow key * @param event - The keyboard event */ isArrowKey(event: KeyboardEvent): boolean; /** * Activate tab and dispatch events */ private activateTab; /** * Navigate to previous enabled tab */ private navigateToPreviousTab; /** * Navigate to next enabled tab */ private navigateToNextTab; /** * Navigate to first enabled tab */ private navigateToFirstTab; /** * Navigate to last enabled tab */ private navigateToLastTab; /** * Focus specific tab element */ private focusTab; /** * Get indices of enabled tabs */ private getEnabledTabIndices; } //# sourceMappingURL=keyboard.controller.d.ts.map