@edugouvfr/ngx-dsfr
Version:
NgxDsfr est un portage Angular des éléments d'interface du Système de Design de l'État Français (DSFR).
44 lines • 5.44 kB
JavaScript
import { Directive, EventEmitter, Input, Output } from '@angular/core';
import * as i0 from "@angular/core";
export class WatchAttrDirective {
constructor(elementRef) {
this.elementRef = elementRef;
// /**
// * Obligatoire : permet d'indiquer quel attribut on souhaite observer.
// */
// @Input() attrObserver: string;
this.watchAttrName = undefined;
this.watchAttr = new EventEmitter();
const element = this.elementRef.nativeElement;
this._changes = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (this.watchAttrName === undefined ||
(this.watchAttrName.trim().length > 0 && this.watchAttrName.trim() === mutation.attributeName)) {
this.watchAttr.emit(mutation);
}
});
});
this._changes.observe(element, {
attributes: true,
childList: false,
characterData: false,
});
}
ngOnDestroy() {
this._changes.disconnect();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WatchAttrDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: WatchAttrDirective, isStandalone: true, selector: "[watchAttr]", inputs: { watchAttrName: "watchAttrName" }, outputs: { watchAttr: "watchAttr" }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WatchAttrDirective, decorators: [{
type: Directive,
args: [{
selector: '[watchAttr]',
standalone: true,
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { watchAttrName: [{
type: Input
}], watchAttr: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2gtYXR0ci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvd2F0Y2gtYXR0ci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNOUYsTUFBTSxPQUFPLGtCQUFrQjtJQWM3QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBYjFDLE1BQU07UUFDTix5RUFBeUU7UUFDekUsTUFBTTtRQUNOLGlDQUFpQztRQUcxQixrQkFBYSxHQUF1QixTQUFTLENBQUM7UUFHOUMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBS3BELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBRTlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLFNBQTJCLEVBQUUsRUFBRTtZQUNuRSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBd0IsRUFBRSxFQUFFO2dCQUM3QyxJQUNFLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUztvQkFDaEMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQzlGO29CQUNBLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMvQjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDN0IsVUFBVSxFQUFFLElBQUk7WUFDaEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsYUFBYSxFQUFFLEtBQUs7U0FDckIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzdCLENBQUM7K0dBckNVLGtCQUFrQjttR0FBbEIsa0JBQWtCOzs0RkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxhQUFhO29CQUN2QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7aUdBUVEsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxTQUFTO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1t3YXRjaEF0dHJdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgV2F0Y2hBdHRyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLy8gLyoqXG4gIC8vICAqIE9ibGlnYXRvaXJlIDogcGVybWV0IGQnaW5kaXF1ZXIgcXVlbCBhdHRyaWJ1dCBvbiBzb3VoYWl0ZSBvYnNlcnZlci5cbiAgLy8gICovXG4gIC8vIEBJbnB1dCgpIGF0dHJPYnNlcnZlcjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3YXRjaEF0dHJOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB3YXRjaEF0dHIgPSBuZXcgRXZlbnRFbWl0dGVyPE11dGF0aW9uUmVjb3JkPigpO1xuXG4gIHByaXZhdGUgX2NoYW5nZXM6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgdGhpcy5fY2hhbmdlcyA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKChtdXRhdGlvbnM6IE11dGF0aW9uUmVjb3JkW10pID0+IHtcbiAgICAgIG11dGF0aW9ucy5mb3JFYWNoKChtdXRhdGlvbjogTXV0YXRpb25SZWNvcmQpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMud2F0Y2hBdHRyTmFtZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgKHRoaXMud2F0Y2hBdHRyTmFtZS50cmltKCkubGVuZ3RoID4gMCAmJiB0aGlzLndhdGNoQXR0ck5hbWUudHJpbSgpID09PSBtdXRhdGlvbi5hdHRyaWJ1dGVOYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLndhdGNoQXR0ci5lbWl0KG11dGF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9jaGFuZ2VzLm9ic2VydmUoZWxlbWVudCwge1xuICAgICAgYXR0cmlidXRlczogdHJ1ZSxcbiAgICAgIGNoaWxkTGlzdDogZmFsc2UsXG4gICAgICBjaGFyYWN0ZXJEYXRhOiBmYWxzZSxcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2NoYW5nZXMuZGlzY29ubmVjdCgpO1xuICB9XG59XG4iXX0=