UNPKG

@ordojs/core

Version:

Core compiler and runtime for OrdoJS framework

261 lines 6.83 kB
/** * @fileoverview OrdoJS Core - Accessibility Manager */ export interface AccessibilityConfig { enableAriaGeneration: boolean; enableKeyboardNavigation: boolean; enableFocusManagement: boolean; enableScreenReaderSupport: boolean; enableSemanticHTML: boolean; enableAccessibilityTesting: boolean; ariaLabels: Record<string, string>; keyboardShortcuts: Record<string, string>; focusOrder: string[]; } export interface AriaAttributes { 'aria-label'?: string; 'aria-labelledby'?: string; 'aria-describedby'?: string; 'aria-hidden'?: boolean; 'aria-expanded'?: boolean; 'aria-pressed'?: boolean; 'aria-checked'?: boolean; 'aria-disabled'?: boolean; 'aria-required'?: boolean; 'aria-invalid'?: boolean; 'aria-valuenow'?: number; 'aria-valuemin'?: number; 'aria-valuemax'?: number; 'aria-valuetext'?: string; 'aria-multiline'?: boolean; 'aria-readonly'?: boolean; 'aria-placeholder'?: string; 'aria-autocomplete'?: 'none' | 'inline' | 'list' | 'both'; 'aria-haspopup'?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'; 'aria-controls'?: string; 'aria-owns'?: string; 'aria-activedescendant'?: string; 'aria-selected'?: boolean; 'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false'; 'aria-live'?: 'off' | 'polite' | 'assertive'; 'aria-atomic'?: boolean; 'aria-relevant'?: 'additions' | 'additions text' | 'all' | 'removals' | 'text'; 'aria-busy'?: boolean; 'aria-grabbed'?: boolean; 'aria-dropeffect'?: 'none' | 'copy' | 'execute' | 'link' | 'move' | 'popup'; 'aria-dragged'?: boolean; 'aria-flowto'?: string; } export interface KeyboardNavigationConfig { enableTabNavigation: boolean; enableArrowKeys: boolean; enableEnterKey: boolean; enableEscapeKey: boolean; enableSpaceKey: boolean; customShortcuts: Record<string, () => void>; focusTraps: string[]; skipLinks: string[]; } export interface FocusManagementConfig { enableFocusTrapping: boolean; enableFocusRestoration: boolean; enableFocusIndicators: boolean; focusOrder: string[]; focusableSelectors: string[]; skipFocusSelectors: string[]; } /** * Accessibility Manager for OrdoJS applications */ export declare class AccessibilityManager { private config; private keyboardConfig; private focusConfig; private focusHistory; private currentFocusIndex; private ariaIdCounter; constructor(config?: Partial<AccessibilityConfig>); /** * Initialize accessibility features */ private initialize; /** * Generate ARIA attributes for an element */ private generateAriaAttributes; /** * Determine the appropriate ARIA role for an element */ private determineRole; /** * Generate appropriate label for an element */ private generateLabel; /** * Generate description for an element */ private generateDescription; /** * Check if element is interactive */ private isInteractiveElement; /** * Check if element is a form element */ private isFormElement; /** * Check if element is a navigation element */ private isNavigationElement; /** * Check if element is a list element */ private isListElement; /** * Add ARIA attributes for interactive elements */ private addInteractiveAriaAttributes; /** * Add ARIA attributes for form elements */ private addFormAriaAttributes; /** * Add ARIA attributes for navigation elements */ private addNavigationAriaAttributes; /** * Add ARIA attributes for list elements */ private addListAriaAttributes; /** * Setup keyboard navigation */ private setupKeyboardNavigation; /** * Handle keyboard navigation */ private handleKeyboardNavigation; /** * Handle Tab navigation */ private handleTabNavigation; /** * Handle Arrow key navigation */ private handleArrowKeyNavigation; /** * Handle Enter key */ private handleEnterKey; /** * Handle Escape key */ private handleEscapeKey; /** * Handle Space key */ private handleSpaceKey; /** * Handle custom shortcuts */ private handleCustomShortcuts; /** * Get key combination string */ private getKeyCombo; /** * Setup focus management */ private setupFocusManagement; /** * Handle focus in */ private handleFocusIn; /** * Handle focus out */ private handleFocusOut; /** * Setup screen reader support */ private setupScreenReaderSupport; /** * Setup accessibility testing */ private setupAccessibilityTesting; /** * Get focusable elements */ private getFocusableElements; /** * Move focus forward */ private moveFocusForward; /** * Move focus backward */ private moveFocusBackward; /** * Close dialog */ private closeDialog; /** * Generate unique ARIA ID */ private generateAriaId; /** * Check ARIA attributes */ private checkAriaAttributes; /** * Get required ARIA attributes for a role */ private getRequiredAriaAttributes; /** * Check keyboard navigation */ private checkKeyboardNavigation; /** * Check focus management */ private checkFocusManagement; /** * Check screen reader support */ private checkScreenReaderSupport; /** * Generate accessibility report */ private generateAccessibilityReport; /** * Announce to screen readers */ announce(message: string, priority?: 'polite' | 'assertive'): void; /** * Set focus to element */ setFocus(element: HTMLElement): void; /** * Restore previous focus */ restoreFocus(): void; /** * Add custom keyboard shortcut */ addKeyboardShortcut(keyCombo: string, callback: () => void): void; /** * Remove custom keyboard shortcut */ removeKeyboardShortcut(keyCombo: string): void; /** * Update configuration */ updateConfig(newConfig: Partial<AccessibilityConfig>): void; private navigateToNextItem; private navigateToPreviousItem; validateAccessibility(component: HTMLElement): AccessibilityIssue[]; validateKeyboardNavigation(component: HTMLElement): AccessibilityIssue[]; validateScreenReaderSupport(component: HTMLElement): AccessibilityIssue[]; validateSemanticHTML(component: HTMLElement): AccessibilityIssue[]; } //# sourceMappingURL=accessibility-manager.d.ts.map