@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.76 kB
JavaScript
import { Directive } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Directive pour wrapper les éléments d'un container ul avec des li
* fixme : probleme lorsque les éléments sont générés dynamiquements et avec ng-template :
* Dans le cas ou des éléments sont supprimés dynamiquement, erreur insertBefore angular.
* Tests à refaire pour le cas du ng-content. Code commenté a supprimer si non concluant.
* On conserve la directive, pour ajouter des warning sur les éléments qui ne sont pas wrappés
*/
export class EduWrapWithLiDirective {
// private mutationObserver: MutationObserver;
constructor(el) {
this.el = el;
}
ngAfterViewInit() {
// this.wrapChildren();
this.warningChildren();
/*
// Observe les ajouts dynamiques (si ngTemplateOutlet, etc.)
this.mutationObserver = new MutationObserver(() => this.wrapChildren());
this.mutationObserver.observe(this.el.nativeElement, {
childList: true,
subtree: false,
});*/
}
warningChildren() {
const container = this.el.nativeElement;
for (const elem of Array.from(container?.children)) {
if (elem?.parentElement?.tagName !== 'LI' && elem?.tagName !== 'LI') {
console.warn('Chaque élément de toolLinksTemplate doit être contenu dans un <li>');
}
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EduWrapWithLiDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: EduWrapWithLiDirective, isStandalone: true, selector: "[eduWrapWithLi]", ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EduWrapWithLiDirective, decorators: [{
type: Directive,
args: [{
selector: '[eduWrapWithLi]',
standalone: true,
}]
}], ctorParameters: () => [{ type: i0.ElementRef }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcC1saS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL2RpcmVjdGl2ZXMvd3JhcC1saS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7O0FBRXJFOzs7Ozs7R0FNRztBQUtILE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsOENBQThDO0lBRTlDLFlBQW9CLEVBQTJCO1FBQTNCLE9BQUUsR0FBRixFQUFFLENBQXlCO0lBQUcsQ0FBQztJQUVuRCxlQUFlO1FBQ2IsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV2Qjs7Ozs7O2FBTUs7SUFDUCxDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUV4QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbkQsSUFBSSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDcEUsT0FBTyxDQUFDLElBQUksQ0FBQyxvRUFBb0UsQ0FBQyxDQUFDO1lBQ3JGLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0ExQlUsc0JBQXNCO21HQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBSmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRGlyZWN0aXZlIHBvdXIgd3JhcHBlciBsZXMgw6lsw6ltZW50cyBkJ3VuIGNvbnRhaW5lciB1bCBhdmVjIGRlcyBsaVxuICogZml4bWUgOiBwcm9ibGVtZSBsb3JzcXVlIGxlcyDDqWzDqW1lbnRzIHNvbnQgZ8OpbsOpcsOpcyBkeW5hbWlxdWVtZW50cyBldCBhdmVjIG5nLXRlbXBsYXRlIDpcbiAqIERhbnMgbGUgY2FzIG91IGRlcyDDqWzDqW1lbnRzIHNvbnQgc3VwcHJpbcOpcyBkeW5hbWlxdWVtZW50LCBlcnJldXIgaW5zZXJ0QmVmb3JlIGFuZ3VsYXIuXG4gKiBUZXN0cyDDoCByZWZhaXJlIHBvdXIgbGUgY2FzIGR1IG5nLWNvbnRlbnQuIENvZGUgY29tbWVudMOpIGEgc3VwcHJpbWVyIHNpIG5vbiBjb25jbHVhbnQuXG4gKiBPbiBjb25zZXJ2ZSBsYSBkaXJlY3RpdmUsIHBvdXIgYWpvdXRlciBkZXMgd2FybmluZyBzdXIgbGVzIMOpbMOpbWVudHMgcXVpIG5lIHNvbnQgcGFzIHdyYXBww6lzXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tlZHVXcmFwV2l0aExpXScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIEVkdVdyYXBXaXRoTGlEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgLy8gcHJpdmF0ZSBtdXRhdGlvbk9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyB0aGlzLndyYXBDaGlsZHJlbigpO1xuICAgIHRoaXMud2FybmluZ0NoaWxkcmVuKCk7XG5cbiAgICAvKiBcbiAgICAvLyBPYnNlcnZlIGxlcyBham91dHMgZHluYW1pcXVlcyAoc2kgbmdUZW1wbGF0ZU91dGxldCwgZXRjLilcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB0aGlzLndyYXBDaGlsZHJlbigpKTtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgIHN1YnRyZWU6IGZhbHNlLFxuICAgIH0pOyovXG4gIH1cblxuICBwcml2YXRlIHdhcm5pbmdDaGlsZHJlbigpIHtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBmb3IgKGNvbnN0IGVsZW0gb2YgQXJyYXkuZnJvbShjb250YWluZXI/LmNoaWxkcmVuKSkge1xuICAgICAgaWYgKGVsZW0/LnBhcmVudEVsZW1lbnQ/LnRhZ05hbWUgIT09ICdMSScgJiYgZWxlbT8udGFnTmFtZSAhPT0gJ0xJJykge1xuICAgICAgICBjb25zb2xlLndhcm4oJ0NoYXF1ZSDDqWzDqW1lbnQgZGUgdG9vbExpbmtzVGVtcGxhdGUgZG9pdCDDqnRyZSBjb250ZW51IGRhbnMgdW4gPGxpPicpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qXG4gIHByaXZhdGUgd3JhcENoaWxkcmVuKCkge1xuICAgICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuXG4gICAgRG9tVXRpbHMuc3Vycm91bmROYXRpdmVFbGVtZW50c1dpdGhMaSh0aGlzLmVsLCBBcnJheS5mcm9tKGNvbnRhaW5lcj8uY2hpbGRyZW4pKTtcblxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlcj8ub2JzZXJ2ZShjb250YWluZXIsIHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiBmYWxzZSB9KTtcbiAgfSovXG59XG4iXX0=