@feedal/embed
Version:
Feedal embed script to load feedback forms via JS or NPM
33 lines (32 loc) • 2.09 kB
TypeScript
export interface AccessibilityOptions {
ariaLabel?: string;
ariaDescribedBy?: string;
role?: string;
focusTrap?: boolean;
announceOnOpen?: boolean;
announceOnClose?: boolean;
highContrast?: boolean;
reducedMotion?: boolean;
}
export declare class AccessibilityManager {
private element;
private options;
private originalFocus;
private focusableElements;
private isTrappingFocus;
private isHandlingFocus;
constructor(element: HTMLElement, options?: AccessibilityOptions);
private setupAccessibility;
private respectUserPreferences;
enableFocusTrap(): void;
disableFocusTrap(): void;
private updateFocusableElements;
private handleKeyDown;
private handleEscapeKey;
private handleTabKey;
private handleFocusIn;
announceToScreenReader(message: string, priority?: 'polite' | 'assertive'): void;
addKeyboardShortcuts(): void;
destroy(): void;
}
export declare const ACCESSIBILITY_STYLES = "\n/* Accessibility styles */\n.feedal-reduced-motion * {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n}\n\n.feedal-high-contrast {\n border: 2px solid #000 !important;\n background: #fff !important;\n color: #000 !important;\n}\n\n.feedal-high-contrast button {\n border: 2px solid #000 !important;\n background: #fff !important;\n color: #000 !important;\n}\n\n.feedal-high-contrast button:hover,\n.feedal-high-contrast button:focus {\n background: #000 !important;\n color: #fff !important;\n}\n\n/* Focus indicators */\n.feedal-widget *:focus {\n outline: 2px solid #4A90E2;\n outline-offset: 2px;\n}\n\n.feedal-widget *:focus:not(:focus-visible) {\n outline: none;\n}\n\n/* Screen reader only text */\n.feedal-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0, 0, 0, 0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n";