File

projects/storefrontlib/shared/components/popover/popover.service.ts

Index

Methods

Methods

getFocusConfig
getFocusConfig(event: PopoverEvent, appendToBody: boolean)

For a11y improvements method returns different FocusConfig based on which event popover was triggered.

Parameters :
Name Type Optional
event PopoverEvent No
appendToBody boolean No
Returns : FocusConfig
setFocusOnElement
setFocusOnElement(element: ElementRef, focusConfig: FocusConfig, appendToBody?: boolean)
Parameters :
Name Type Optional
element ElementRef No
focusConfig FocusConfig No
appendToBody boolean Yes
Returns : void
import { ElementRef, Injectable } from '@angular/core';
import { FocusConfig } from '../../../layout/a11y/keyboard-focus/keyboard-focus.model';
import { PopoverEvent } from './popover.model';

@Injectable({
  providedIn: 'root',
})
export class PopoverService {
  /**
   * For a11y improvements method returns different `FocusConfig`
   * based on which event popover was triggered.
   */
  getFocusConfig(event: PopoverEvent, appendToBody: boolean): FocusConfig {
    let config = {};

    if (event === PopoverEvent.OPEN_BY_KEYBOARD && appendToBody) {
      config = {
        trap: true,
        block: true,
        focusOnEscape: false,
        autofocus: true,
      };
    }

    return config;
  }

  setFocusOnElement(
    element: ElementRef,
    focusConfig: FocusConfig,
    appendToBody?: boolean
  ) {
    if (focusConfig && appendToBody) {
      element.nativeElement.focus();
    }
  }
}

result-matching ""

    No results matching ""