@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).
34 lines • 5.04 kB
JavaScript
export class DomUtils {
constructor() { }
static surroundElementsWithLi(container, elements) {
DomUtils.removeEmptyLi(container);
for (const elem of elements) {
if (elem.nativeElement?.parentElement?.tagName !== 'LI') {
DomUtils.insertNodeInLi(elem.nativeElement);
}
}
}
static surroundNativeElementsWithLi(container, elements) {
DomUtils.removeEmptyLi(container);
for (const elem of elements) {
if (elem?.parentElement?.tagName !== 'LI' && elem?.tagName !== 'LI') {
DomUtils.insertNodeInLi(elem);
}
}
}
static removeEmptyLi({ nativeElement }) {
const nonProgrammaticLiElements = nativeElement.querySelectorAll('li[data-ngx-dsfr-li]');
nonProgrammaticLiElements.forEach((li) => {
if (li.childElementCount === 0) {
li.remove();
}
});
}
static insertNodeInLi(child) {
const li = document.createElement('li');
li.setAttribute('data-ngx-dsfr-li', 'true');
child.replaceWith(li); // Ne remplace pas l'élément en lui même mais modifie la Node parent de l'élément: https://developer.mozilla.org/fr/docs/Web/API/Element/replaceWith
li.appendChild(child);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC91dGlscy9kb20tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLFFBQVE7SUFDbkIsZ0JBQXVCLENBQUM7SUFFeEIsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFNBQTBCLEVBQUUsUUFBb0M7UUFDNUYsUUFBUSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVsQyxLQUFLLE1BQU0sSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUN4RCxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5QyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsNEJBQTRCLENBQUMsU0FBMEIsRUFBRSxRQUE0QjtRQUMxRixRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRWxDLEtBQUssTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sS0FBSyxJQUFJLElBQUksSUFBSSxFQUFFLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDcEUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsYUFBYSxFQUEyQjtRQUNyRSxNQUFNLHlCQUF5QixHQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBRXpGLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3ZDLElBQUksRUFBRSxDQUFDLGlCQUFpQixLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMvQixFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFjO1FBQzFDLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMsRUFBRSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1QyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0pBQW9KO1FBQzNLLEVBQUUsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgRG9tVXRpbHMge1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cblxuICBzdGF0aWMgc3Vycm91bmRFbGVtZW50c1dpdGhMaShjb250YWluZXI6IEVsZW1lbnRSZWY8YW55PiwgZWxlbWVudHM6IHJlYWRvbmx5IEVsZW1lbnRSZWY8YW55PltdKTogdm9pZCB7XG4gICAgRG9tVXRpbHMucmVtb3ZlRW1wdHlMaShjb250YWluZXIpO1xuXG4gICAgZm9yIChjb25zdCBlbGVtIG9mIGVsZW1lbnRzKSB7XG4gICAgICBpZiAoZWxlbS5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Py50YWdOYW1lICE9PSAnTEknKSB7XG4gICAgICAgIERvbVV0aWxzLmluc2VydE5vZGVJbkxpKGVsZW0ubmF0aXZlRWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHN1cnJvdW5kTmF0aXZlRWxlbWVudHNXaXRoTGkoY29udGFpbmVyOiBFbGVtZW50UmVmPGFueT4sIGVsZW1lbnRzOiByZWFkb25seSBFbGVtZW50W10pOiB2b2lkIHtcbiAgICBEb21VdGlscy5yZW1vdmVFbXB0eUxpKGNvbnRhaW5lcik7XG5cbiAgICBmb3IgKGNvbnN0IGVsZW0gb2YgZWxlbWVudHMpIHtcbiAgICAgIGlmIChlbGVtPy5wYXJlbnRFbGVtZW50Py50YWdOYW1lICE9PSAnTEknICYmIGVsZW0/LnRhZ05hbWUgIT09ICdMSScpIHtcbiAgICAgICAgRG9tVXRpbHMuaW5zZXJ0Tm9kZUluTGkoZWxlbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVtb3ZlRW1wdHlMaSh7IG5hdGl2ZUVsZW1lbnQgfTogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pOiB2b2lkIHtcbiAgICBjb25zdCBub25Qcm9ncmFtbWF0aWNMaUVsZW1lbnRzID0gbmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaVtkYXRhLW5neC1kc2ZyLWxpXScpO1xuXG4gICAgbm9uUHJvZ3JhbW1hdGljTGlFbGVtZW50cy5mb3JFYWNoKChsaSkgPT4ge1xuICAgICAgaWYgKGxpLmNoaWxkRWxlbWVudENvdW50ID09PSAwKSB7XG4gICAgICAgIGxpLnJlbW92ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaW5zZXJ0Tm9kZUluTGkoY2hpbGQ6IEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBsaSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7XG4gICAgbGkuc2V0QXR0cmlidXRlKCdkYXRhLW5neC1kc2ZyLWxpJywgJ3RydWUnKTtcbiAgICBjaGlsZC5yZXBsYWNlV2l0aChsaSk7IC8vIE5lIHJlbXBsYWNlIHBhcyBsJ8OpbMOpbWVudCBlbiBsdWkgbcOqbWUgbWFpcyBtb2RpZmllIGxhIE5vZGUgcGFyZW50IGRlIGwnw6lsw6ltZW50OiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9mci9kb2NzL1dlYi9BUEkvRWxlbWVudC9yZXBsYWNlV2l0aFxuICAgIGxpLmFwcGVuZENoaWxkKGNoaWxkKTtcbiAgfVxufVxuIl19