import { LitElement } from "lit"; import { FocusClass, FocusClassInterface, FocusMixinReturnType } from "./FocusMixin"; export type AnyConstructor = new (...args: any[]) => A; /** * Interface describing the public properties added by FocusTrapMixin. * Protected methods are intentionally omitted to allow subclasses to override with protected visibility. */ export interface FocusTrapClassInterface extends FocusClassInterface { activeFocusTrap: boolean; preventClickOutside: boolean; preventScroll: boolean; focusTrapIndex: number; handleKeydownFocusTrap: (event: KeyboardEvent) => void; } /** * Abstract class used internally for super calls within the mixin implementation. * Also used in tests via bracket notation to access protected methods. */ export declare abstract class FocusTrapClass extends FocusClass { activeFocusTrap: boolean; preventClickOutside: boolean; preventScroll: boolean; focusTrapIndex: number; handleKeydownFocusTrap: (event: KeyboardEvent) => void; protected focusableElements?: HTMLElement[]; protected initialFocusComplete?: boolean; protected deactivateFocusTrap?(): void; protected activateFocusTrap?(): void; protected setFocusableElements?(): void; protected setInitialFocus?(prefferableElement?: HTMLElement | number, ignoreAutoFocus?: boolean): void; protected setFocusOnTrigger?(triggerElement?: HTMLElement): void; protected setFocusOnDeepestNestedElement?(element?: HTMLElement): void; } export type FocusTrapMixinReturnType> = FocusMixinReturnType & AnyConstructor; export declare const FocusTrapMixin: >(base: T) => FocusTrapMixinReturnType;