UNPKG

@edugouvfr/ngx-dsfr-ext

Version:

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

108 lines 14.9 kB
import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, inject, Input, Output, Renderer2, ViewEncapsulation, } from '@angular/core'; import { DsfrButtonComponent, DsfrLinkComponent } from '@edugouvfr/ngx-dsfr'; import * as i0 from "@angular/core"; /** * Composant affichage d'un menuitem ou d'un menuitemcheckbox du composant dropdown-menu */ export class DsfrDropdownMenuItemComponent { constructor() { this.selectItem = new EventEmitter(); // Événement pour l'utilisateur this._checked = false; // si type = checkbox this.elementRef = inject(ElementRef); this.renderer = inject(Renderer2); } get checked() { return this._checked; } set checked(value) { this._checked = value; if (this._anchorElement && this.type === 'checkbox') { this._anchorElement.setAttribute('aria-checked', '' + this._checked); } } /** * Positionner les classes CSS si dsfr-button ou dsfr-link */ ngAfterContentInit() { if (this.button) { this.button.customClass = this.button.customClass ? this.button.customClass + ' dsfrx-menu-item' : 'dsfrx-menu-item'; this.button.variant = 'tertiary'; } if (this.link) { this.link.customClass = this.link.customClass ? this.link.customClass + ' fr-sidemenu__link' : 'fr-sidemenu__link'; } } /** * Positionnement des éléments dans le DOM pour l'accessibilité * - ajout d'un élément wrapper li * - récupération de l'élément _anchorElement comme élément focusable (dsfr-link, dsfr-button ou li) * - ajout de l'attribut [role] menuitem sur l'élément focusable si type est undefined * - ajout de [aria-checked] et [role] menuitemcheckbox sur sur l'élément focusable si le type est checkbox */ ngAfterViewInit() { // surround element with li const elem = this.elementRef.nativeElement; const li = document.createElement('li'); li.setAttribute('role', 'presentation'); elem.replaceWith(li); // Ne remplace pas l'élément en lui même mais modifie la Node parent de l'élément li.appendChild(elem); this._unlistenFn = this.renderer.listen(li, 'click', (event) => { this.selectItem.emit(event); }); // get anchor element if (this.link) { this._anchorElement = this.elementRef.nativeElement.querySelector('a'); } else if (this.button) { this._anchorElement = this.elementRef.nativeElement.querySelector('button'); } else { li.className = 'interactive'; this._anchorElement = li; } // add role if (this.type) { this._anchorElement.setAttribute('role', this.type === 'checkbox' ? 'menuitemcheckbox' : 'menuitemradio'); this._anchorElement.setAttribute('aria-checked', '' + this._checked); } else { this._anchorElement.setAttribute('role', 'menuitem'); } this._anchorElement.setAttribute('tabindex', '-1'); } ngOnDestroy() { if (this._unlistenFn) this._unlistenFn(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrDropdownMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DsfrDropdownMenuItemComponent, isStandalone: true, selector: "dsfrx-dropdownmenu-item, dsfr-ext-dropdownmenu-item", inputs: { type: "type", checked: "checked" }, outputs: { selectItem: "selectItem" }, queries: [{ propertyName: "button", first: true, predicate: DsfrButtonComponent, descendants: true }, { propertyName: "link", first: true, predicate: DsfrLinkComponent, descendants: true }], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrDropdownMenuItemComponent, decorators: [{ type: Component, args: [{ selector: 'dsfrx-dropdownmenu-item, dsfr-ext-dropdownmenu-item', standalone: true, imports: [CommonModule], template: `<ng-content></ng-content>`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, }] }], propDecorators: { type: [{ type: Input }], selectItem: [{ type: Output }], button: [{ type: ContentChild, args: [DsfrButtonComponent, { static: false }] }], link: [{ type: ContentChild, args: [DsfrLinkComponent, { static: false }] }], checked: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd25tZW51LWl0ZW0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItZXh0L3NyYy9saWIvZHJvcGRvd25tZW51L2NvbXBvbmVudC9kcm9wZG93bm1lbnUtaXRlbS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBRTdFOztHQUVHO0FBU0gsTUFBTSxPQUFPLDZCQUE2QjtJQVIxQztRQVVZLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDLENBQUMsK0JBQStCO1FBTWpGLGFBQVEsR0FBWSxLQUFLLENBQUMsQ0FBQyxxQkFBcUI7UUFFL0IsZUFBVSxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1QyxhQUFRLEdBQWMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBNEUxRDtJQXpFQyxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQ0ksT0FBTyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxJ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QyxDQUFDOytHQXRGVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qix3T0FJMUIsbUJBQW1CLHVFQUNuQixpQkFBaUIsZ0RBVHJCLDJCQUEyQiwyREFEM0IsWUFBWTs7NEZBS1gsNkJBQTZCO2tCQVJ6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxxREFBcUQ7b0JBQy9ELFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFFBQVEsRUFBRSwyQkFBMkI7b0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtpQkFDdEM7OEJBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU07Z0JBRStDLE1BQU07c0JBQTNELFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNBLElBQUk7c0JBQXZELFlBQVk7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQWM5QyxPQUFPO3NCQURWLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERzZnJCdXR0b25Db21wb25lbnQsIERzZnJMaW5rQ29tcG9uZW50IH0gZnJvbSAnQGVkdWdvdXZmci9uZ3gtZHNmcic7XG5cbi8qKlxuICogQ29tcG9zYW50IGFmZmljaGFnZSBkJ3VuIG1lbnVpdGVtIG91IGQndW4gbWVudWl0ZW1jaGVja2JveCBkdSBjb21wb3NhbnQgZHJvcGRvd24tbWVudVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkc2ZyeC1kcm9wZG93bm1lbnUtaXRlbSwgZHNmci1leHQtZHJvcGRvd25tZW51LWl0ZW0nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGA8bmctY29udGVudD48L25nLWNvbnRlbnQ+YCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERzZnJEcm9wZG93bk1lbnVJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdHlwZTogdW5kZWZpbmVkIHwgJ2NoZWNrYm94JyB8ICdyYWRpbyc7XG4gIEBPdXRwdXQoKSBzZWxlY3RJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTsgLy8gw4l2w6luZW1lbnQgcG91ciBsJ3V0aWxpc2F0ZXVyXG5cbiAgQENvbnRlbnRDaGlsZChEc2ZyQnV0dG9uQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgYnV0dG9uOiBEc2ZyQnV0dG9uQ29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICBAQ29udGVudENoaWxkKERzZnJMaW5rQ29tcG9uZW50LCB7IHN0YXRpYzogZmFsc2UgfSkgbGluazogRHNmckxpbmtDb21wb25lbnQgfCB1bmRlZmluZWQ7XG5cbiAgX2FuY2hvckVsZW1lbnQ6IEhUTUxFbGVtZW50OyAvLyDDqWzDqW1lbnQgZm9jdXNhYmxlIChyb2xlID0gbWVudWl0ZW0gLyBtZW51aXRlbWNoZWNrYm94KVxuICBfY2hlY2tlZDogYm9vbGVhbiA9IGZhbHNlOyAvLyBzaSB0eXBlID0gY2hlY2tib3hcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXI6IFJlbmRlcmVyMiA9IGluamVjdChSZW5kZXJlcjIpO1xuICBwcml2YXRlIF91bmxpc3RlbkZuOiBGdW5jdGlvbjtcblxuICBnZXQgY2hlY2tlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tlZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fY2hlY2tlZCA9IHZhbHVlO1xuICAgIGlmICh0aGlzLl9hbmNob3JFbGVtZW50ICYmIHRoaXMudHlwZSA9PT0gJ2NoZWNrYm94Jykge1xuICAgICAgdGhpcy5fYW5jaG9yRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtY2hlY2tlZCcsICcnICsgdGhpcy5fY2hlY2tlZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBvc2l0aW9ubmVyIGxlcyBjbGFzc2VzIENTUyBzaSBkc2ZyLWJ1dHRvbiBvdSBkc2ZyLWxpbmtcbiAgICovXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYnV0dG9uKSB7XG4gICAgICB0aGlzLmJ1dHRvbi5jdXN0b21DbGFzcyA9IHRoaXMuYnV0dG9uLmN1c3RvbUNsYXNzXG4gICAgICAgID8gdGhpcy5idXR0b24uY3VzdG9tQ2xhc3MgKyAnIGRzZnJ4LW1lbnUtaXRlbSdcbiAgICAgICAgOiAnZHNmcngtbWVudS1pdGVtJztcbiAgICAgIHRoaXMuYnV0dG9uLnZhcmlhbnQgPSAndGVydGlhcnknO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpbmspIHtcbiAgICAgIHRoaXMubGluay5jdXN0b21DbGFzcyA9IHRoaXMubGluay5jdXN0b21DbGFzc1xuICAgICAgICA/IHRoaXMubGluay5jdXN0b21DbGFzcyArICcgZnItc2lkZW1lbnVfX2xpbmsnXG4gICAgICAgIDogJ2ZyLXNpZGVtZW51X19saW5rJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUG9zaXRpb25uZW1lbnQgZGVzIMOpbMOpbWVudHMgZGFucyBsZSBET00gcG91ciBsJ2FjY2Vzc2liaWxpdMOpXG4gICAqIC0gYWpvdXQgZCd1biDDqWzDqW1lbnQgd3JhcHBlciBsaVxuICAgKiAtIHLDqWN1cMOpcmF0aW9uIGRlIGwnw6lsw6ltZW50IF9hbmNob3JFbGVtZW50IGNvbW1lIMOpbMOpbWVudCBmb2N1c2FibGUgKGRzZnItbGluaywgZHNmci1idXR0b24gb3UgbGkpXG4gICAqIC0gYWpvdXQgZGUgbCdhdHRyaWJ1dCBbcm9sZV0gbWVudWl0ZW0gc3VyIGwnw6lsw6ltZW50IGZvY3VzYWJsZSBzaSB0eXBlIGVzdCB1bmRlZmluZWRcbiAgICogLSBham91dCBkZSBbYXJpYS1jaGVja2VkXSBldCBbcm9sZV0gbWVudWl0ZW1jaGVja2JveCBzdXIgc3VyIGwnw6lsw6ltZW50IGZvY3VzYWJsZSBzaSBsZSB0eXBlIGVzdCBjaGVja2JveFxuICAgKi9cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBzdXJyb3VuZCBlbGVtZW50IHdpdGggbGlcbiAgICBjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICAgIGxpLnNldEF0dHJpYnV0ZSgncm9sZScsICdwcmVzZW50YXRpb24nKTtcbiAgICBlbGVtLnJlcGxhY2VXaXRoKGxpKTsgLy8gTmUgcmVtcGxhY2UgcGFzIGwnw6lsw6ltZW50IGVuIGx1aSBtw6ptZSBtYWlzIG1vZGlmaWUgbGEgTm9kZSBwYXJlbnQgZGUgbCfDqWzDqW1lbnRcbiAgICBsaS5hcHBlbmRDaGlsZChlbGVtKTtcblxuICAgIHRoaXMuX3VubGlzdGVuRm4gPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihsaSwgJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdEl0ZW0uZW1pdChldmVudCk7XG4gICAgfSk7XG5cbiAgICAvLyBnZXQgYW5jaG9yIGVsZW1lbnRcbiAgICBpZiAodGhpcy5saW5rKSB7XG4gICAgICB0aGlzLl9hbmNob3JFbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignYScpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5idXR0b24pIHtcbiAgICAgIHRoaXMuX2FuY2hvckVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGkuY2xhc3NOYW1lID0gJ2ludGVyYWN0aXZlJztcbiAgICAgIHRoaXMuX2FuY2hvckVsZW1lbnQgPSBsaTtcbiAgICB9XG5cbiAgICAvLyBhZGQgcm9sZVxuICAgIGlmICh0aGlzLnR5cGUpIHtcbiAgICAgIHRoaXMuX2FuY2hvckVsZW1lbnQuc2V0QXR0cmlidXRlKCdyb2xlJywgdGhpcy50eXBlID09PSAnY2hlY2tib3gnID8gJ21lbnVpdGVtY2hlY2tib3gnIDogJ21lbnVpdGVtcmFkaW8nKTtcbiAgICAgIHRoaXMuX2FuY2hvckVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWNoZWNrZWQnLCAnJyArIHRoaXMuX2NoZWNrZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hbmNob3JFbGVtZW50LnNldEF0dHJpYnV0ZSgncm9sZScsICdtZW51aXRlbScpO1xuICAgIH1cblxuICAgIHRoaXMuX2FuY2hvckVsZW1lbnQuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3VubGlzdGVuRm4pIHRoaXMuX3VubGlzdGVuRm4oKTtcbiAgfVxufVxuIl19