@spartacus/storefront
Version:
Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.
38 lines • 4.72 kB
JavaScript
import { Injectable } from '@angular/core';
import { PersistFocusService } from '../persist/persist-focus.service';
import * as i0 from "@angular/core";
import * as i1 from "../services/select-focus.util";
export class EscapeFocusService extends PersistFocusService {
constructor(selectFocusUtil) {
super();
this.selectFocusUtil = selectFocusUtil;
}
shouldFocus(config) {
return !!(config === null || config === void 0 ? void 0 : config.focusOnEscape);
}
handleEscape(host, config, event) {
var _a;
if (this.shouldFocus(config)) {
if (host !== event.target) {
host.focus({ preventScroll: true });
event.preventDefault();
event.stopPropagation();
}
else {
if (config === null || config === void 0 ? void 0 : config.focusOnDoubleEscape) {
(_a = this.selectFocusUtil
.findFirstFocusable(host, { autofocus: true })) === null || _a === void 0 ? void 0 : _a.focus();
}
}
}
}
}
EscapeFocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: EscapeFocusService, deps: [{ token: i1.SelectFocusUtility }], target: i0.ɵɵFactoryTarget.Injectable });
EscapeFocusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: EscapeFocusService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: EscapeFocusService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.SelectFocusUtility }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlLWZvY3VzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2xheW91dC9hMTF5L2tleWJvYXJkLWZvY3VzL2VzY2FwZS9lc2NhcGUtZm9jdXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7QUFNdkUsTUFBTSxPQUFPLGtCQUFtQixTQUFRLG1CQUFtQjtJQUN6RCxZQUFzQixlQUFtQztRQUN2RCxLQUFLLEVBQUUsQ0FBQztRQURZLG9CQUFlLEdBQWYsZUFBZSxDQUFvQjtJQUV6RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQXlCO1FBQ25DLE9BQU8sQ0FBQyxDQUFDLENBQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLGFBQWEsQ0FBQSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxZQUFZLENBQ1YsSUFBaUIsRUFDakIsTUFBeUIsRUFDekIsS0FBb0I7O1FBRXBCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM1QixJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxFQUFFO2dCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ3BDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3pCO2lCQUFNO2dCQUNMLElBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLG1CQUFtQixFQUFFO29CQUMvQixNQUFBLElBQUksQ0FBQyxlQUFlO3lCQUNqQixrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsMENBQzVDLEtBQUssRUFBRSxDQUFDO2lCQUNiO2FBQ0Y7U0FDRjtJQUNILENBQUM7OytHQTNCVSxrQkFBa0I7bUhBQWxCLGtCQUFrQixjQUZqQixNQUFNOzJGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFc2NhcGVGb2N1c0NvbmZpZyB9IGZyb20gJy4uL2tleWJvYXJkLWZvY3VzLm1vZGVsJztcbmltcG9ydCB7IFBlcnNpc3RGb2N1c1NlcnZpY2UgfSBmcm9tICcuLi9wZXJzaXN0L3BlcnNpc3QtZm9jdXMuc2VydmljZSc7XG5pbXBvcnQgeyBTZWxlY3RGb2N1c1V0aWxpdHkgfSBmcm9tICcuLi9zZXJ2aWNlcy9zZWxlY3QtZm9jdXMudXRpbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBFc2NhcGVGb2N1c1NlcnZpY2UgZXh0ZW5kcyBQZXJzaXN0Rm9jdXNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNlbGVjdEZvY3VzVXRpbDogU2VsZWN0Rm9jdXNVdGlsaXR5KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHNob3VsZEZvY3VzKGNvbmZpZzogRXNjYXBlRm9jdXNDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFjb25maWc/LmZvY3VzT25Fc2NhcGU7XG4gIH1cblxuICBoYW5kbGVFc2NhcGUoXG4gICAgaG9zdDogSFRNTEVsZW1lbnQsXG4gICAgY29uZmlnOiBFc2NhcGVGb2N1c0NvbmZpZyxcbiAgICBldmVudDogS2V5Ym9hcmRFdmVudFxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG91bGRGb2N1cyhjb25maWcpKSB7XG4gICAgICBpZiAoaG9zdCAhPT0gZXZlbnQudGFyZ2V0KSB7XG4gICAgICAgIGhvc3QuZm9jdXMoeyBwcmV2ZW50U2Nyb2xsOiB0cnVlIH0pO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChjb25maWc/LmZvY3VzT25Eb3VibGVFc2NhcGUpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdEZvY3VzVXRpbFxuICAgICAgICAgICAgLmZpbmRGaXJzdEZvY3VzYWJsZShob3N0LCB7IGF1dG9mb2N1czogdHJ1ZSB9KVxuICAgICAgICAgICAgPy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=