UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

47 lines 6.15 kB
import { Directive, EventEmitter, HostListener, Output, } from '@angular/core'; import { PersistFocusDirective } from '../persist/persist-focus.directive'; import * as i0 from "@angular/core"; import * as i1 from "./escape-focus.service"; /** * Directive to focus the host element whenever the `escape` key is captured. * UiEvents bubble up by nature, which is why the `cxEscGroup` can be used * on a tree of elements. Each time the escape key is used, the focus will * move up in the DOM tree. * */ export class EscapeFocusDirective extends PersistFocusDirective { constructor(elementRef, service) { super(elementRef, service); this.elementRef = elementRef; this.service = service; this.defaultConfig = { focusOnEscape: true }; this.esc = new EventEmitter(); } /** * Handles the escape key event. * @param event the native keyboard event which contains the escape keydown event */ handleEscape(event) { if (this.service.shouldFocus(this.config)) { this.service.handleEscape(this.host, this.config, event); } this.esc.emit(this.service.shouldFocus(this.config)); } ngOnInit() { if (this.service.shouldFocus(this.config)) { this.requiredTabindex = -1; } super.ngOnInit(); } } EscapeFocusDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: EscapeFocusDirective, deps: [{ token: i0.ElementRef }, { token: i1.EscapeFocusService }], target: i0.ɵɵFactoryTarget.Directive }); EscapeFocusDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.5", type: EscapeFocusDirective, outputs: { esc: "esc" }, host: { listeners: { "keydown.escape": "handleEscape($event)" } }, usesInheritance: true, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: EscapeFocusDirective, decorators: [{ type: Directive }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.EscapeFocusService }]; }, propDecorators: { esc: [{ type: Output }], handleEscape: [{ type: HostListener, args: ['keydown.escape', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlLWZvY3VzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvbGF5b3V0L2ExMXkva2V5Ym9hcmQtZm9jdXMvZXNjYXBlL2VzY2FwZS1mb2N1cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUVaLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7O0FBRzNFOzs7Ozs7R0FNRztBQUVILE1BQU0sT0FBTyxvQkFDWCxTQUFRLHFCQUFxQjtJQXNCN0IsWUFDWSxVQUFzQixFQUN0QixPQUEyQjtRQUVyQyxLQUFLLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBSGpCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7UUFyQjdCLGtCQUFhLEdBQXNCLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDO1FBSzNELFFBQUcsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO0lBbUI1QyxDQUFDO0lBakJEOzs7T0FHRztJQUVILFlBQVksQ0FBQyxLQUFvQjtRQUMvQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBU0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM1QjtRQUNELEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDOztpSEFuQ1Usb0JBQW9CO3FHQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsU0FBUztrSUFVRSxHQUFHO3NCQUFaLE1BQU07Z0JBT1AsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXNjYXBlRm9jdXNDb25maWcgfSBmcm9tICcuLi9rZXlib2FyZC1mb2N1cy5tb2RlbCc7XG5pbXBvcnQgeyBQZXJzaXN0Rm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuLi9wZXJzaXN0L3BlcnNpc3QtZm9jdXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IEVzY2FwZUZvY3VzU2VydmljZSB9IGZyb20gJy4vZXNjYXBlLWZvY3VzLnNlcnZpY2UnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBmb2N1cyB0aGUgaG9zdCBlbGVtZW50IHdoZW5ldmVyIHRoZSBgZXNjYXBlYCBrZXkgaXMgY2FwdHVyZWQuXG4gKiBVaUV2ZW50cyBidWJibGUgdXAgYnkgbmF0dXJlLCB3aGljaCBpcyB3aHkgdGhlIGBjeEVzY0dyb3VwYCBjYW4gYmUgdXNlZFxuICogb24gYSB0cmVlIG9mIGVsZW1lbnRzLiBFYWNoIHRpbWUgdGhlIGVzY2FwZSBrZXkgaXMgdXNlZCwgdGhlIGZvY3VzIHdpbGxcbiAqIG1vdmUgdXAgaW4gdGhlIERPTSB0cmVlLlxuICpcbiAqL1xuQERpcmVjdGl2ZSgpIC8vIHNlbGVjdG9yOiAnW2N4RXNjRm9jdXNdJyxcbmV4cG9ydCBjbGFzcyBFc2NhcGVGb2N1c0RpcmVjdGl2ZVxuICBleHRlbmRzIFBlcnNpc3RGb2N1c0RpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdFxue1xuICBwcm90ZWN0ZWQgZGVmYXVsdENvbmZpZzogRXNjYXBlRm9jdXNDb25maWcgPSB7IGZvY3VzT25Fc2NhcGU6IHRydWUgfTtcblxuICAvLyBASW5wdXQoJ2N4RXNjRm9jdXMnKVxuICBwcm90ZWN0ZWQgY29uZmlnOiBFc2NhcGVGb2N1c0NvbmZpZztcblxuICBAT3V0cHV0KCkgZXNjID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSBlc2NhcGUga2V5IGV2ZW50LlxuICAgKiBAcGFyYW0gZXZlbnQgdGhlIG5hdGl2ZSBrZXlib2FyZCBldmVudCB3aGljaCBjb250YWlucyB0aGUgZXNjYXBlIGtleWRvd24gZXZlbnRcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgaGFuZGxlRXNjYXBlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VydmljZS5zaG91bGRGb2N1cyh0aGlzLmNvbmZpZykpIHtcbiAgICAgIHRoaXMuc2VydmljZS5oYW5kbGVFc2NhcGUodGhpcy5ob3N0LCB0aGlzLmNvbmZpZywgZXZlbnQpO1xuICAgIH1cbiAgICB0aGlzLmVzYy5lbWl0KHRoaXMuc2VydmljZS5zaG91bGRGb2N1cyh0aGlzLmNvbmZpZykpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJvdGVjdGVkIHNlcnZpY2U6IEVzY2FwZUZvY3VzU2VydmljZVxuICApIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCBzZXJ2aWNlKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnNlcnZpY2Uuc2hvdWxkRm9jdXModGhpcy5jb25maWcpKSB7XG4gICAgICB0aGlzLnJlcXVpcmVkVGFiaW5kZXggPSAtMTtcbiAgICB9XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxufVxuIl19