@ux-aspects/ux-aspects
Version:
Open source user interface framework for building modern, responsive, mobile big data applications
28 lines • 6.14 kB
JavaScript
import { FocusMonitor } from '@angular/cdk/a11y';
import { inject, Injectable, RendererFactory2 } from '@angular/core';
import { AccessibilityOptionsService } from '../options/accessibility-options.service';
import { ACCESSIBILITY_OPTIONS_TOKEN } from '../options/accessibility-options.token';
import { FocusIndicator } from './focus-indicator';
import { FocusIndicatorOriginService } from './focus-indicator-origin/focus-indicator-origin.service';
import * as i0 from "@angular/core";
export class FocusIndicatorService {
constructor() {
this._localOptions = inject(ACCESSIBILITY_OPTIONS_TOKEN, { optional: true });
this.rendererFactory = inject(RendererFactory2);
this._focusMonitor = inject(FocusMonitor);
this._globalOptions = inject(AccessibilityOptionsService);
this._focusIndicatorOrigin = inject(FocusIndicatorOriginService);
// programmatically create a renderer as it can't be injected into a service
this._renderer = this.rendererFactory.createRenderer(null, null);
}
/** This is essentially just a factory method to prevent the user having to pass in focus monitor, renderer and global options each time */
monitor(element, options = { ...this._globalOptions.options, ...this._localOptions, checkChildren: false }) {
return new FocusIndicator(element, this._focusMonitor, this._renderer, { ...this._globalOptions.options, ...this._localOptions, ...options }, this._focusIndicatorOrigin);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FocusIndicatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FocusIndicatorService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: FocusIndicatorService, decorators: [{
type: Injectable
}], ctorParameters: () => [] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtaW5kaWNhdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvZGlyZWN0aXZlcy9hY2Nlc3NpYmlsaXR5L2ZvY3VzLWluZGljYXRvci9mb2N1cy1pbmRpY2F0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQWEsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRW5ELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHlEQUF5RCxDQUFDOztBQUd0RyxNQUFNLE9BQU8scUJBQXFCO0lBYzlCO1FBYmlCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFaEYsb0JBQWUsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUVuQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBRXJELDBCQUFxQixHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBTXpFLDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsMklBQTJJO0lBQzNJLE9BQU8sQ0FBQyxPQUFvQixFQUFFLFVBQWlDLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRTtRQUMxSSxPQUFPLElBQUksY0FBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlLLENBQUM7K0dBdEJRLHFCQUFxQjttSEFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlLCBSZW5kZXJlcjIsIFJlbmRlcmVyRmFjdG9yeTIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjY2Vzc2liaWxpdHlPcHRpb25zU2VydmljZSB9IGZyb20gJy4uL29wdGlvbnMvYWNjZXNzaWJpbGl0eS1vcHRpb25zLnNlcnZpY2UnO1xuaW1wb3J0IHsgQUNDRVNTSUJJTElUWV9PUFRJT05TX1RPS0VOIH0gZnJvbSAnLi4vb3B0aW9ucy9hY2Nlc3NpYmlsaXR5LW9wdGlvbnMudG9rZW4nO1xuaW1wb3J0IHsgRm9jdXNJbmRpY2F0b3IgfSBmcm9tICcuL2ZvY3VzLWluZGljYXRvcic7XG5pbXBvcnQgeyBGb2N1c0luZGljYXRvck9wdGlvbnMgfSBmcm9tICcuL2ZvY3VzLWluZGljYXRvci1vcHRpb25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBGb2N1c0luZGljYXRvck9yaWdpblNlcnZpY2UgfSBmcm9tICcuL2ZvY3VzLWluZGljYXRvci1vcmlnaW4vZm9jdXMtaW5kaWNhdG9yLW9yaWdpbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvY3VzSW5kaWNhdG9yU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbG9jYWxPcHRpb25zID0gaW5qZWN0KEFDQ0VTU0lCSUxJVFlfT1BUSU9OU19UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAgIHJlYWRvbmx5IHJlbmRlcmVyRmFjdG9yeSA9IGluamVjdChSZW5kZXJlckZhY3RvcnkyKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzTW9uaXRvciA9IGluamVjdChGb2N1c01vbml0b3IpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZ2xvYmFsT3B0aW9ucyA9IGluamVjdChBY2Nlc3NpYmlsaXR5T3B0aW9uc1NlcnZpY2UpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNJbmRpY2F0b3JPcmlnaW4gPSBpbmplY3QoRm9jdXNJbmRpY2F0b3JPcmlnaW5TZXJ2aWNlKTtcblxuICAgIC8qKiBXZSBuZWVkIHRoZSByZW5kZXJlciB0byBhZGQgYW5kIHJlbW92ZSBjbGFzc2VzICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcmVuZGVyZXI6IFJlbmRlcmVyMjtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyBwcm9ncmFtbWF0aWNhbGx5IGNyZWF0ZSBhIHJlbmRlcmVyIGFzIGl0IGNhbid0IGJlIGluamVjdGVkIGludG8gYSBzZXJ2aWNlXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyID0gdGhpcy5yZW5kZXJlckZhY3RvcnkuY3JlYXRlUmVuZGVyZXIobnVsbCwgbnVsbCk7XG4gICAgfVxuXG4gICAgLyoqIFRoaXMgaXMgZXNzZW50aWFsbHkganVzdCBhIGZhY3RvcnkgbWV0aG9kIHRvIHByZXZlbnQgdGhlIHVzZXIgaGF2aW5nIHRvIHBhc3MgaW4gZm9jdXMgbW9uaXRvciwgcmVuZGVyZXIgYW5kIGdsb2JhbCBvcHRpb25zIGVhY2ggdGltZSAqL1xuICAgIG1vbml0b3IoZWxlbWVudDogSFRNTEVsZW1lbnQsIG9wdGlvbnM6IEZvY3VzSW5kaWNhdG9yT3B0aW9ucyA9IHsgLi4udGhpcy5fZ2xvYmFsT3B0aW9ucy5vcHRpb25zLCAuLi50aGlzLl9sb2NhbE9wdGlvbnMsIGNoZWNrQ2hpbGRyZW46IGZhbHNlIH0pOiBGb2N1c0luZGljYXRvciB7XG4gICAgICAgIHJldHVybiBuZXcgRm9jdXNJbmRpY2F0b3IoZWxlbWVudCwgdGhpcy5fZm9jdXNNb25pdG9yLCB0aGlzLl9yZW5kZXJlciwgeyAuLi50aGlzLl9nbG9iYWxPcHRpb25zLm9wdGlvbnMsIC4uLnRoaXMuX2xvY2FsT3B0aW9ucywgLi4ub3B0aW9ucyB9LCB0aGlzLl9mb2N1c0luZGljYXRvck9yaWdpbik7XG4gICAgfVxuXG59Il19