UNPKG

@edugouvfr/ngx-dsfr-ext

Version:

NgxDsfrExt est une extension au package @edugouvfr/ngx-dsfr (portage Angular des éléments DSFR)

40 lines 5.8 kB
import { Directive, Input } from '@angular/core'; import * as i0 from "@angular/core"; /** * Permet de rendre l'élément déonoté par le sélecteur explicitement non-focusable. Cela sert au niveau de la toolbar * sur les dsfr-bouton et les dsfr-form-select qui embarquent des éléments nativement focusable tels que button et * select. */ //TODO: (RPA) à réfléchir s'il ne faudrait pas plutôt prévoir d'ajouter un input `'unfocusable' permettant de gérer ça // directement aux niveaux des composants eux-même (?) export class UnfocusableDirective { constructor(_elementRef, _renderer) { this._elementRef = _elementRef; this._renderer = _renderer; } // RPA: Je me mets sur AfterViewInit car sur OnInit je n'ai pas encore le select lorsque je requête le DOM // (pour le bouton par contre cela fonctionnait avec OnInit) ngAfterViewInit() { let el = this._elementRef.nativeElement.querySelector(this.selector); if (el) { this._renderer.setAttribute(el, 'tabindex', '-1'); } else { //FIXME: (RPA) utiliser LoggerService lorsque celui-ci sera exporté depuis ngx-dsfr console.warn('UnfocusableDirective > aucun élément remontée par le sélecteur', this.selector); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnfocusableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: UnfocusableDirective, isStandalone: true, selector: "[unfocusable]", inputs: { selector: ["unfocusable", "selector"] }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UnfocusableDirective, decorators: [{ type: Directive, args: [{ selector: '[unfocusable]', standalone: true, }] }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { selector: [{ type: Input, args: ['unfocusable'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5mb2N1c2FibGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItZXh0L2VkaXRvci9zcmMvbGliL2RpcmVjdGl2ZXMvdW5mb2N1c2FibGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQzs7QUFFdkY7Ozs7R0FJRztBQUNILHNIQUFzSDtBQUN0SCx1REFBdUQ7QUFLdkQsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixZQUNVLFdBQXVCLEVBQ3ZCLFNBQW9CO1FBRHBCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQVc7SUFDM0IsQ0FBQztJQUVKLDBHQUEwRztJQUMxRyw0REFBNEQ7SUFDNUQsZUFBZTtRQUNiLElBQUksRUFBRSxHQUFnQixJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xGLElBQUksRUFBRSxFQUFFLENBQUM7WUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BELENBQUM7YUFBTSxDQUFDO1lBQ04sbUZBQW1GO1lBQ25GLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0VBQWdFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hHLENBQUM7SUFDSCxDQUFDOytHQXhCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFKaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCO3VHQVFRLFFBQVE7c0JBRGQsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogUGVybWV0IGRlIHJlbmRyZSBsJ8OpbMOpbWVudCBkw6lvbm90w6kgcGFyIGxlIHPDqWxlY3RldXIgZXhwbGljaXRlbWVudCBub24tZm9jdXNhYmxlLiBDZWxhIHNlcnQgYXUgbml2ZWF1IGRlIGxhIHRvb2xiYXJcbiAqIHN1ciBsZXMgZHNmci1ib3V0b24gZXQgbGVzIGRzZnItZm9ybS1zZWxlY3QgcXVpIGVtYmFycXVlbnQgZGVzIMOpbMOpbWVudHMgbmF0aXZlbWVudCBmb2N1c2FibGUgdGVscyBxdWUgYnV0dG9uIGV0XG4gKiBzZWxlY3QuXG4gKi9cbi8vVE9ETzogKFJQQSkgw6AgcsOpZmzDqWNoaXIgcydpbCBuZSBmYXVkcmFpdCBwYXMgcGx1dMO0dCBwcsOpdm9pciBkJ2Fqb3V0ZXIgdW4gaW5wdXQgYCd1bmZvY3VzYWJsZScgcGVybWV0dGFudCBkZSBnw6lyZXIgw6dhXG4vLyBkaXJlY3RlbWVudCAgYXV4IG5pdmVhdXggZGVzIGNvbXBvc2FudHMgZXV4LW3Dqm1lICg/KVxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3VuZm9jdXNhYmxlXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFVuZm9jdXNhYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBMZSBzw6lsZWN0ZXVyIMOgIHV0aWxpc2VyIHBvdXIgcsOpY3Vww6lyZXIgbCfDqWzDqW1lbnQgw6AgcmVuZHJlIG5vbiBmb2N1c2FibGUuXG4gICAqL1xuICAvLyBSUEE6IGondXRpbGlzZSBsJ2FsaWFzIGR1IG3Dqm1lIG5vbSBxdWUgbGEgZGlyZWN0aXZlIHBvdXIgcG91dm9pciBwYXJhbcOpdHJlciBkaXJlY3RlbWVudCBsYSBkaXJlY3RpdmUgZWxsZS1tw6ptZVxuICAvLyB0b3V0IGVuIGRpc3Bvc2FudCBkJ3VuIG5vbSBwbHVzIGV4cGxpY2l0ZSAoc2VsZWN0b3IpIGVuIGludGVybmUuXG4gIEBJbnB1dCgndW5mb2N1c2FibGUnKVxuICBwdWJsaWMgc2VsZWN0b3I6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICkge31cblxuICAvLyBSUEE6IEplIG1lIG1ldHMgc3VyIEFmdGVyVmlld0luaXQgY2FyIHN1ciBPbkluaXQgamUgbidhaSBwYXMgZW5jb3JlIGxlIHNlbGVjdCBsb3JzcXVlIGplIHJlcXXDqnRlIGxlIERPTVxuICAvLyAocG91ciBsZSBib3V0b24gcGFyIGNvbnRyZSBjZWxhIGZvbmN0aW9ubmFpdCBhdmVjIE9uSW5pdClcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGxldCBlbDogSFRNTEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcih0aGlzLnNlbGVjdG9yKTtcbiAgICBpZiAoZWwpIHtcbiAgICAgIHRoaXMuX3JlbmRlcmVyLnNldEF0dHJpYnV0ZShlbCwgJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vRklYTUU6IChSUEEpIHV0aWxpc2VyIExvZ2dlclNlcnZpY2UgbG9yc3F1ZSBjZWx1aS1jaSBzZXJhIGV4cG9ydMOpIGRlcHVpcyBuZ3gtZHNmclxuICAgICAgY29uc29sZS53YXJuKCdVbmZvY3VzYWJsZURpcmVjdGl2ZSA+IGF1Y3VuIMOpbMOpbWVudCByZW1vbnTDqWUgcGFyIGxlIHPDqWxlY3RldXInLCB0aGlzLnNlbGVjdG9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==