@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
JavaScript
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==