Accessibility Module

The Accessibility module provides WCAG 2.1 AA compliance features that are automatically initialized when AdminLTE loads.

Features
FeatureWCAG CriterionDescription
Skip Links2.4.1 Bypass BlocksAdds “Skip to main content” and “Skip to navigation” links.
Focus Management2.4.3 & 2.4.7Modal focus restoration to the triggering element and Escape handling.
Keyboard Navigation2.1.1 KeyboardArrow key navigation in menus, Enter/Space for custom buttons.
Reduced Motion2.3.3 AnimationRespects prefers-reduced-motion by disabling animations.
Live Announcements4.1.3 Status MessagesAnnounces errors and success messages to screen readers.
Error Identification3.3.1 & 3.3.2Auto-labels unlabelled inputs, announces form validation errors.
Table Accessibility1.3.1 Info & RelationshipsAdds scope attributes to table headers automatically.
Configuration

The module is initialized in adminlte.ts with all features enabled by default:

initAccessibility({
  announcements: true,
  skipLinks: true,
  focusManagement: true,
  keyboardNavigation: true,
  reducedMotion: true
})

Set any option to false to disable that feature.

Public API
import { initAccessibility } from 'admin-lte'

const a11y = initAccessibility()

// Announce a message to screen readers
a11y.announce('Item saved successfully', 'polite')
a11y.announce('Form has errors', 'assertive')

// Focus a specific element
a11y.focusElement('#my-input')

// Trap focus inside a container (useful for custom modals/dialogs)
a11y.trapFocus(document.querySelector('.my-dialog'))

// Add semantic landmarks to the page
a11y.addLandmarks()
Utility Functions
import { accessibilityUtils } from 'admin-lte'

// Check color contrast ratio (WCAG 1.4.3)
const result = accessibilityUtils.checkColorContrast('rgb(0,0,0)', 'rgb(255,255,255)')
// { ratio: 21, passes: true }

// Check if an element is focusable
accessibilityUtils.isFocusable(element)

// Generate a unique ID for ARIA attributes
accessibilityUtils.generateId('modal') // "modal-x7k2m9p4q"
CSS Classes
ClassDescription
skip-linksContainer for skip navigation links.
skip-linkIndividual skip link, visible only on focus.
reduce-motionAdded to <body> when user prefers reduced motion.
sr-onlyScreen reader only content (visually hidden).
live-regionARIA live region for dynamic announcements.
Notes
  • The module integrates with Bootstrap’s modal and dropdown events for focus management.
  • Modal Escape key handling is deferred to Bootstrap to respect keyboard: false and stacked modals.
  • Form validation announcements work automatically for any input with HTML5 validation attributes.