/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { TabsHost, BaseTabsController } from './base.controller.js'; import { ReactiveControllerHost } from 'lit'; import { TabItem } from '../tabs.types.js'; /** * Event controller interface for tabs components */ export interface EventController { handleTabClick(tabIndex: number, event: MouseEvent): void; handleTabFocus(tabIndex: number, event: FocusEvent): void; handleTabBlur(tabIndex: number, event: FocusEvent): void; dispatchTabEvent(eventName: string, detail: any): void; } /** * Enhanced tabs host interface for event functionality */ export interface TabsEventHost extends TabsHost { dispatchEventWithMetadata(eventName: string, detail: any): void; setActiveTab(index: number, event?: Event): void; } /** * Event controller manages event handling and dispatching for tabs components * Handles click, focus, blur, and custom event dispatching */ export declare class TabsEventController extends BaseTabsController implements EventController { protected _host: TabsEventHost & ReactiveControllerHost; constructor(host: TabsEventHost & ReactiveControllerHost); get host(): TabsEventHost & ReactiveControllerHost; /** * Handle tab click events * @param tabIndex - Index of clicked tab * @param event - Click event */ handleTabClick(tabIndex: number, event: MouseEvent): void; /** * Handle tab focus events * @param tabIndex - Index of focused tab * @param event - Focus event */ handleTabFocus(tabIndex: number, event: FocusEvent): void; /** * Handle tab blur events * @param tabIndex - Index of blurred tab * @param event - Blur event */ handleTabBlur(tabIndex: number, event: FocusEvent): void; /** * Dispatch custom tab events * @param eventName - Name of the event * @param detail - Event detail data */ dispatchTabEvent(eventName: string, detail: any): void; /** * Handle tab change events (when active tab changes) * @param newTabIndex - New active tab index * @param previousTabIndex - Previous active tab index * @param event - Original event that triggered the change */ handleTabChange(newTabIndex: number, previousTabIndex: number, event?: Event): void; /** * Handle tab activation events (for keyboard and programmatic activation) * @param tabIndex - Index of activated tab * @param activationType - Type of activation (click, keyboard, programmatic) * @param event - Original event */ handleTabActivation(tabIndex: number, activationType: 'click' | 'keyboard' | 'programmatic', event?: Event): void; /** * Handle tab hover events * @param tabIndex - Index of hovered tab * @param event - Mouse event * @param isEnter - Whether mouse is entering (true) or leaving (false) */ handleTabHover(tabIndex: number, event: MouseEvent, isEnter: boolean): void; /** * Get event listeners for a tab element * @param tabIndex - Index of the tab */ getTabEventListeners(tabIndex: number): { click: (event: MouseEvent) => void; focus: (event: FocusEvent) => void; blur: (event: FocusEvent) => void; mouseenter: (event: MouseEvent) => void; mouseleave: (event: MouseEvent) => void; }; /** * Validate if tab can be activated * @param tab - Tab to validate */ canActivateTab(tab: TabItem): boolean; /** * Get tab interaction state * @param tabIndex - Index of tab */ getTabInteractionState(tabIndex: number): { isActive: boolean; isDisabled: boolean; canActivate: boolean; }; } //# sourceMappingURL=event.controller.d.ts.map