@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).
42 lines • 10 kB
JavaScript
import { CommonModule } from '@angular/common';
import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core';
import { RouterModule } from '@angular/router';
import { HeadingComponent, newUniqueId } from '../../shared';
import { ItemLinkComponent } from '../link/item-link.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
export class DsfrSummaryComponent {
constructor() {
/** Les entrées du sommaire (required) */
this.entries = [];
/** Événement sur lien avec la valeur de l'ancre. */
this.entrySelect = new EventEmitter();
/** @internal */ this.headingId = newUniqueId();
}
/**
* Emission de la valeur de l'ancre (fragment ou link) au clic sur un lien
* @internal
*/
/** @internal */
onLinkSelect(entry) {
// on propage l'output, pas besoin de gérer ici le preventDefault, c'est géré en amont
if (entry.route) {
this.entrySelect.emit(entry.route);
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DsfrSummaryComponent, isStandalone: true, selector: "dsfr-summary", inputs: { heading: "heading", headingLevel: "headingLevel", entries: "entries" }, outputs: { entrySelect: "entrySelect" }, ngImport: i0, template: "<nav class=\"fr-summary\" role=\"navigation\" [attr.aria-labelledby]=\"headingId\">\n <!-- FIXME probleme binding outerHTML -->\n <edu-heading\n [headingId]=\"headingId\"\n customClass=\"fr-summary__title\"\n [heading]=\"heading\"\n [level]=\"headingLevel\"\n defaultLevel=\"P\">\n </edu-heading>\n <!-- TODO defaultLevel=\"H2\" en 2.0 pour \u00EAtre compatible avec le DSFR 1.9, 1.10, ... -->\n <ng-container [ngTemplateOutlet]=\"summaryTemplate\" [ngTemplateOutletContext]=\"{ summary: entries }\"></ng-container>\n</nav>\n\n<ng-template #summaryTemplate let-summary=\"summary\">\n <ol>\n @for (entry of summary; track entry) {\n <li>\n <edu-item-link [item]=\"entry\" customClass=\"fr-summary__link\" (linkSelect)=\"onLinkSelect(entry)\"></edu-item-link>\n @if (entry.subEntries?.length > 0) {\n <ng-container\n [ngTemplateOutlet]=\"summaryTemplate\"\n [ngTemplateOutletContext]=\"{ summary: entry.subEntries }\"></ng-container>\n }\n </li>\n }\n </ol>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: RouterModule }, { kind: "component", type: HeadingComponent, selector: "edu-heading", inputs: ["customClass", "heading", "headingId", "level", "defaultLevel"] }, { kind: "component", type: ItemLinkComponent, selector: "edu-item-link", inputs: ["defaultIconPosition", "item"] }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DsfrSummaryComponent, decorators: [{
type: Component,
args: [{ selector: 'dsfr-summary', encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, RouterModule, HeadingComponent, ItemLinkComponent], template: "<nav class=\"fr-summary\" role=\"navigation\" [attr.aria-labelledby]=\"headingId\">\n <!-- FIXME probleme binding outerHTML -->\n <edu-heading\n [headingId]=\"headingId\"\n customClass=\"fr-summary__title\"\n [heading]=\"heading\"\n [level]=\"headingLevel\"\n defaultLevel=\"P\">\n </edu-heading>\n <!-- TODO defaultLevel=\"H2\" en 2.0 pour \u00EAtre compatible avec le DSFR 1.9, 1.10, ... -->\n <ng-container [ngTemplateOutlet]=\"summaryTemplate\" [ngTemplateOutletContext]=\"{ summary: entries }\"></ng-container>\n</nav>\n\n<ng-template #summaryTemplate let-summary=\"summary\">\n <ol>\n @for (entry of summary; track entry) {\n <li>\n <edu-item-link [item]=\"entry\" customClass=\"fr-summary__link\" (linkSelect)=\"onLinkSelect(entry)\"></edu-item-link>\n @if (entry.subEntries?.length > 0) {\n <ng-container\n [ngTemplateOutlet]=\"summaryTemplate\"\n [ngTemplateOutletContext]=\"{ summary: entry.subEntries }\"></ng-container>\n }\n </li>\n }\n </ol>\n</ng-template>\n" }]
}], propDecorators: { heading: [{
type: Input
}], headingLevel: [{
type: Input
}], entries: [{
type: Input
}], entrySelect: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zdW1tYXJ5L3N1bW1hcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3VtbWFyeS9zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7O0FBVWhFLE1BQU0sT0FBTyxvQkFBb0I7SUFQakM7UUFjRSx5Q0FBeUM7UUFDaEMsWUFBTyxHQUFnQixFQUFFLENBQUM7UUFFbkMsb0RBQW9EO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVuRCxnQkFBZ0IsQ0FBQyxjQUFTLEdBQUcsV0FBVyxFQUFFLENBQUM7S0FhNUM7SUFYQzs7O09BR0c7SUFDSCxnQkFBZ0I7SUFDaEIsWUFBWSxDQUFDLEtBQXNCO1FBQ2pDLHNGQUFzRjtRQUN0RixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7K0dBekJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLG1NQ2RqQyx5aUNBMkJBLDJDRGZZLFlBQVkscU1BQUUsWUFBWSwrQkFBRSxnQkFBZ0Isa0lBQUUsaUJBQWlCOzs0RkFFOUQsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGNBQWMsaUJBRVQsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixDQUFDOzhCQUlqRSxPQUFPO3NCQUFmLEtBQUs7Z0JBR0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBEc2ZySGVhZGluZ0xldmVsLCBIZWFkaW5nQ29tcG9uZW50LCBuZXdVbmlxdWVJZCB9IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBJdGVtTGlua0NvbXBvbmVudCB9IGZyb20gJy4uL2xpbmsvaXRlbS1saW5rLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEc2ZyU3VtbWFyeSwgRHNmclN1bW1hcnlMaW5rIH0gZnJvbSAnLi9zdW1tYXJ5Lm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZHNmci1zdW1tYXJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3N1bW1hcnkuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUsIEhlYWRpbmdDb21wb25lbnQsIEl0ZW1MaW5rQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgRHNmclN1bW1hcnlDb21wb25lbnQge1xuICAvKiogTGUgdGl0cmUgZHUgY29tcG9zYW50LiAqL1xuICBASW5wdXQoKSBoZWFkaW5nOiBzdHJpbmc7XG5cbiAgLyoqIExlIG5pdmVhdSBkZSB0aXRyZSBkZXZhbnQgw6p0cmUgdXRpbGlzw6ksIHVuZSBiYWxpc2UgYHBgIHNlcmEgdXRpbGlzw6llIHNpIGxhIHByb3ByacOpdMOpIG4nZXN0IHBhcyByZW5zZWlnbsOpZS4gKi9cbiAgQElucHV0KCkgaGVhZGluZ0xldmVsOiBEc2ZySGVhZGluZ0xldmVsO1xuXG4gIC8qKiBMZXMgZW50csOpZXMgZHUgc29tbWFpcmUgKHJlcXVpcmVkKSAqL1xuICBASW5wdXQoKSBlbnRyaWVzOiBEc2ZyU3VtbWFyeSA9IFtdO1xuXG4gIC8qKiDDiXbDqW5lbWVudCBzdXIgbGllbiBhdmVjIGxhIHZhbGV1ciBkZSBsJ2FuY3JlLiAqL1xuICBAT3V0cHV0KCkgZW50cnlTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKiogQGludGVybmFsICovIGhlYWRpbmdJZCA9IG5ld1VuaXF1ZUlkKCk7XG5cbiAgLyoqXG4gICAqIEVtaXNzaW9uIGRlIGxhIHZhbGV1ciBkZSBsJ2FuY3JlIChmcmFnbWVudCBvdSBsaW5rKSBhdSBjbGljIHN1ciB1biBsaWVuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBvbkxpbmtTZWxlY3QoZW50cnk6IERzZnJTdW1tYXJ5TGluayk6IHZvaWQge1xuICAgIC8vIG9uIHByb3BhZ2UgbCdvdXRwdXQsIHBhcyBiZXNvaW4gZGUgZ8OpcmVyIGljaSBsZSBwcmV2ZW50RGVmYXVsdCwgYydlc3QgZ8OpcsOpIGVuIGFtb250XG4gICAgaWYgKGVudHJ5LnJvdXRlKSB7XG4gICAgICB0aGlzLmVudHJ5U2VsZWN0LmVtaXQoZW50cnkucm91dGUpO1xuICAgIH1cbiAgfVxufVxuIiwiPG5hdiBjbGFzcz1cImZyLXN1bW1hcnlcIiByb2xlPVwibmF2aWdhdGlvblwiIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJoZWFkaW5nSWRcIj5cbiAgPCEtLSBGSVhNRSBwcm9ibGVtZSBiaW5kaW5nIG91dGVySFRNTCAtLT5cbiAgPGVkdS1oZWFkaW5nXG4gICAgW2hlYWRpbmdJZF09XCJoZWFkaW5nSWRcIlxuICAgIGN1c3RvbUNsYXNzPVwiZnItc3VtbWFyeV9fdGl0bGVcIlxuICAgIFtoZWFkaW5nXT1cImhlYWRpbmdcIlxuICAgIFtsZXZlbF09XCJoZWFkaW5nTGV2ZWxcIlxuICAgIGRlZmF1bHRMZXZlbD1cIlBcIj5cbiAgPC9lZHUtaGVhZGluZz5cbiAgPCEtLSBUT0RPIGRlZmF1bHRMZXZlbD1cIkgyXCIgZW4gMi4wIHBvdXIgw6p0cmUgY29tcGF0aWJsZSBhdmVjIGxlIERTRlIgMS45LCAxLjEwLCAuLi4gLS0+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3VtbWFyeVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc3VtbWFyeTogZW50cmllcyB9XCI+PC9uZy1jb250YWluZXI+XG48L25hdj5cblxuPG5nLXRlbXBsYXRlICNzdW1tYXJ5VGVtcGxhdGUgbGV0LXN1bW1hcnk9XCJzdW1tYXJ5XCI+XG4gIDxvbD5cbiAgICBAZm9yIChlbnRyeSBvZiBzdW1tYXJ5OyB0cmFjayBlbnRyeSkge1xuICAgICAgPGxpPlxuICAgICAgICA8ZWR1LWl0ZW0tbGluayBbaXRlbV09XCJlbnRyeVwiIGN1c3RvbUNsYXNzPVwiZnItc3VtbWFyeV9fbGlua1wiIChsaW5rU2VsZWN0KT1cIm9uTGlua1NlbGVjdChlbnRyeSlcIj48L2VkdS1pdGVtLWxpbms+XG4gICAgICAgIEBpZiAoZW50cnkuc3ViRW50cmllcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInN1bW1hcnlUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBzdW1tYXJ5OiBlbnRyeS5zdWJFbnRyaWVzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgPC9saT5cbiAgICB9XG4gIDwvb2w+XG48L25nLXRlbXBsYXRlPlxuIl19