UNPKG

@spartacus/storefront

Version:

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

53 lines 5.97 kB
import { Injectable } from '@angular/core'; import { BaseFocusService } from '../base/base-focus.service'; import { FOCUS_GROUP_ATTR } from '../keyboard-focus.model'; import * as i0 from "@angular/core"; const GLOBAL_GROUP = '_g_'; /** * Shared service to persist the focus for an element or a group * of elements. The persisted element focus can be used to persist * the focus for a DOM tree, so that the focus remains after a repaint * or reoccurs when a DOM tree is "unlocked". */ export class PersistFocusService extends BaseFocusService { constructor() { super(...arguments); // this is going to fail as we have sub services. They will al have their own map. // We must bring this to a singleton map. this.focus = new Map(); } get(group) { return this.focus.get(group || GLOBAL_GROUP); } /** * Persist the keyboard focus state for the given key. The focus is stored globally * or for the given group. */ set(key, group) { if (key) { this.focus.set(group || GLOBAL_GROUP, key); } } /** * Clears the persisted keyboard focus state globally or for the given group. */ clear(group) { this.focus.delete(group || GLOBAL_GROUP); } /** * Returns the group for the host element based on the configured group or * by the `data-cx-focus-group` attribute stored on the host. */ getPersistenceGroup(host, config) { return (config === null || config === void 0 ? void 0 : config.group) ? config.group : host.getAttribute(FOCUS_GROUP_ATTR); } } PersistFocusService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: PersistFocusService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); PersistFocusService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: PersistFocusService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: PersistFocusService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVyc2lzdC1mb2N1cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmVmcm9udGxpYi9sYXlvdXQvYTExeS9rZXlib2FyZC1mb2N1cy9wZXJzaXN0L3BlcnNpc3QtZm9jdXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFL0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDO0FBRTNCOzs7OztHQUtHO0FBSUgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGdCQUFnQjtJQUh6RDs7UUFJRSxrRkFBa0Y7UUFDbEYseUNBQXlDO1FBQy9CLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBa0IsQ0FBQztLQThCN0M7SUE1QkMsR0FBRyxDQUFDLEtBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYztRQUM3QixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBYztRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILG1CQUFtQixDQUFDLElBQWlCLEVBQUUsTUFBMkI7UUFDaEUsT0FBTyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM1RSxDQUFDOztnSEFoQ1UsbUJBQW1CO29IQUFuQixtQkFBbUIsY0FGbEIsTUFBTTsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUZvY3VzU2VydmljZSB9IGZyb20gJy4uL2Jhc2UvYmFzZS1mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IEZPQ1VTX0dST1VQX0FUVFIsIFBlcnNpc3RGb2N1c0NvbmZpZyB9IGZyb20gJy4uL2tleWJvYXJkLWZvY3VzLm1vZGVsJztcblxuY29uc3QgR0xPQkFMX0dST1VQID0gJ19nXyc7XG5cbi8qKlxuICogU2hhcmVkIHNlcnZpY2UgdG8gcGVyc2lzdCB0aGUgZm9jdXMgZm9yIGFuIGVsZW1lbnQgb3IgYSBncm91cFxuICogb2YgZWxlbWVudHMuIFRoZSBwZXJzaXN0ZWQgZWxlbWVudCBmb2N1cyBjYW4gYmUgdXNlZCB0byBwZXJzaXN0XG4gKiB0aGUgZm9jdXMgZm9yIGEgRE9NIHRyZWUsIHNvIHRoYXQgdGhlIGZvY3VzIHJlbWFpbnMgYWZ0ZXIgYSByZXBhaW50XG4gKiBvciByZW9jY3VycyB3aGVuIGEgRE9NIHRyZWUgaXMgXCJ1bmxvY2tlZFwiLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUGVyc2lzdEZvY3VzU2VydmljZSBleHRlbmRzIEJhc2VGb2N1c1NlcnZpY2Uge1xuICAvLyB0aGlzIGlzIGdvaW5nIHRvIGZhaWwgYXMgd2UgaGF2ZSBzdWIgc2VydmljZXMuIFRoZXkgd2lsbCBhbCBoYXZlIHRoZWlyIG93biBtYXAuXG4gIC8vIFdlIG11c3QgYnJpbmcgdGhpcyB0byBhIHNpbmdsZXRvbiBtYXAuXG4gIHByb3RlY3RlZCBmb2N1cyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgZ2V0KGdyb3VwPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb2N1cy5nZXQoZ3JvdXAgfHwgR0xPQkFMX0dST1VQKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJzaXN0IHRoZSBrZXlib2FyZCBmb2N1cyBzdGF0ZSBmb3IgdGhlIGdpdmVuIGtleS4gVGhlIGZvY3VzIGlzIHN0b3JlZCBnbG9iYWxseVxuICAgKiBvciBmb3IgdGhlIGdpdmVuIGdyb3VwLlxuICAgKi9cbiAgc2V0KGtleTogc3RyaW5nLCBncm91cD86IHN0cmluZykge1xuICAgIGlmIChrZXkpIHtcbiAgICAgIHRoaXMuZm9jdXMuc2V0KGdyb3VwIHx8IEdMT0JBTF9HUk9VUCwga2V5KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBwZXJzaXN0ZWQga2V5Ym9hcmQgZm9jdXMgc3RhdGUgZ2xvYmFsbHkgb3IgZm9yIHRoZSBnaXZlbiBncm91cC5cbiAgICovXG4gIGNsZWFyKGdyb3VwPzogc3RyaW5nKSB7XG4gICAgdGhpcy5mb2N1cy5kZWxldGUoZ3JvdXAgfHwgR0xPQkFMX0dST1VQKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBncm91cCBmb3IgdGhlIGhvc3QgZWxlbWVudCBiYXNlZCBvbiB0aGUgY29uZmlndXJlZCBncm91cCBvclxuICAgKiBieSB0aGUgYGRhdGEtY3gtZm9jdXMtZ3JvdXBgIGF0dHJpYnV0ZSBzdG9yZWQgb24gdGhlIGhvc3QuXG4gICAqL1xuICBnZXRQZXJzaXN0ZW5jZUdyb3VwKGhvc3Q6IEhUTUxFbGVtZW50LCBjb25maWc/OiBQZXJzaXN0Rm9jdXNDb25maWcpOiBzdHJpbmcge1xuICAgIHJldHVybiBjb25maWc/Lmdyb3VwID8gY29uZmlnLmdyb3VwIDogaG9zdC5nZXRBdHRyaWJ1dGUoRk9DVVNfR1JPVVBfQVRUUik7XG4gIH1cbn1cbiJdfQ==