@wikimedia/codex
Version:
Codex Design System for Wikimedia
26 lines (25 loc) • 1.03 kB
TypeScript
import { ComponentPublicInstance, Ref } from 'vue';
interface UseFocusTrapOptions {
containerRef: Ref<HTMLElement | undefined>;
bodyRef?: Ref<HTMLElement | undefined>;
/**
* Optional anchor/trigger element. If the previously focused element is the anchor,
* focus will not be moved away from it to prevent triggering blur events.
*/
anchorRef?: Ref<HTMLElement | ComponentPublicInstance | null | undefined>;
/**
* Whether to prevent scrolling when focusing elements.
* Defaults to false.
*/
preventScroll?: boolean;
}
export default function useFocusTrap(options: UseFocusTrapOptions): {
focusTrapStart: Ref<HTMLDivElement | undefined, HTMLDivElement | undefined>;
focusTrapEnd: Ref<HTMLDivElement | undefined, HTMLDivElement | undefined>;
focusHolder: Ref<HTMLDivElement | undefined, HTMLDivElement | undefined>;
focusFirst: () => void;
focusLast: () => void;
activateFocusTrap: () => Promise<void>;
deactivateFocusTrap: () => void;
};
export {};