UNPKG

@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).

41 lines 8.94 kB
import { Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; import { newUniqueId } from '../../shared'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "../../shared/components/heading/heading.component"; import * as i3 from "../link/item-link.component"; 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: "16.2.12", ngImport: i0, type: DsfrSummaryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DsfrSummaryComponent, 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 <edu-heading\n [headingId]=\"headingId\"\n customClass=\"fr-summary__title\"\n [heading]=\"heading\"\n [level]=\"headingLevel\"\n defaultLevel=\"P\"></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 <li *ngFor=\"let entry of summary\">\n <edu-item-link [item]=\"entry\" customClass=\"fr-summary__link\" (linkSelect)=\"onLinkSelect(entry)\"></edu-item-link>\n <ng-container\n *ngIf=\"entry.subEntries?.length > 0\"\n [ngTemplateOutlet]=\"summaryTemplate\"\n [ngTemplateOutletContext]=\"{ summary: entry.subEntries }\"></ng-container>\n </li>\n </ol>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.HeadingComponent, selector: "edu-heading", inputs: ["customClass", "heading", "headingId", "level", "defaultLevel"] }, { kind: "component", type: i3.ItemLinkComponent, selector: "edu-item-link", inputs: ["defaultIconPosition", "item"] }], encapsulation: i0.ViewEncapsulation.None }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DsfrSummaryComponent, decorators: [{ type: Component, args: [{ selector: 'dsfr-summary', encapsulation: ViewEncapsulation.None, template: "<nav class=\"fr-summary\" role=\"navigation\" [attr.aria-labelledby]=\"headingId\">\n <edu-heading\n [headingId]=\"headingId\"\n customClass=\"fr-summary__title\"\n [heading]=\"heading\"\n [level]=\"headingLevel\"\n defaultLevel=\"P\"></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 <li *ngFor=\"let entry of summary\">\n <edu-item-link [item]=\"entry\" customClass=\"fr-summary__link\" (linkSelect)=\"onLinkSelect(entry)\"></edu-item-link>\n <ng-container\n *ngIf=\"entry.subEntries?.length > 0\"\n [ngTemplateOutlet]=\"summaryTemplate\"\n [ngTemplateOutletContext]=\"{ summary: entry.subEntries }\"></ng-container>\n </li>\n </ol>\n</ng-template>\n" }] }], propDecorators: { heading: [{ type: Input }], headingLevel: [{ type: Input }], entries: [{ type: Input }], entrySelect: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VtbWFyeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zdW1tYXJ5L3N1bW1hcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc3VtbWFyeS9zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFvQixXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7O0FBUTdELE1BQU0sT0FBTyxvQkFBb0I7SUFMakM7UUFZRSx5Q0FBeUM7UUFDaEMsWUFBTyxHQUFnQixFQUFFLENBQUM7UUFFbkMsb0RBQW9EO1FBQzFDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVuRCxnQkFBZ0IsQ0FBQyxjQUFTLEdBQUcsV0FBVyxFQUFFLENBQUM7S0FhNUM7SUFYQzs7O09BR0c7SUFDSCxnQkFBZ0I7SUFDaEIsWUFBWSxDQUFDLEtBQXNCO1FBQ2pDLHNGQUFzRjtRQUN0RixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEM7SUFDSCxDQUFDOytHQXpCVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwrS0NUakMsMDhCQXNCQTs7NEZEYmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGNBQWMsaUJBRVQsaUJBQWlCLENBQUMsSUFBSTs4QkFJNUIsT0FBTztzQkFBZixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0csT0FBTztzQkFBZixLQUFLO2dCQUdJLFdBQVc7c0JBQXBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERzZnJIZWFkaW5nTGV2ZWwsIG5ld1VuaXF1ZUlkIH0gZnJvbSAnLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IERzZnJTdW1tYXJ5LCBEc2ZyU3VtbWFyeUxpbmsgfSBmcm9tICcuL3N1bW1hcnkubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdkc2ZyLXN1bW1hcnknLFxuICB0ZW1wbGF0ZVVybDogJy4vc3VtbWFyeS5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERzZnJTdW1tYXJ5Q29tcG9uZW50IHtcbiAgLyoqIExlIHRpdHJlIGR1IGNvbXBvc2FudC4gKi9cbiAgQElucHV0KCkgaGVhZGluZzogc3RyaW5nO1xuXG4gIC8qKiBMZSBuaXZlYXUgZGUgdGl0cmUgZGV2YW50IMOqdHJlIHV0aWxpc8OpLCB1bmUgYmFsaXNlIGBwYCBzZXJhIHV0aWxpc8OpZSBzaSBsYSBwcm9wcmnDqXTDqSBuJ2VzdCBwYXMgcmVuc2VpZ27DqWUuICovXG4gIEBJbnB1dCgpIGhlYWRpbmdMZXZlbDogRHNmckhlYWRpbmdMZXZlbDtcblxuICAvKiogTGVzIGVudHLDqWVzIGR1IHNvbW1haXJlIChyZXF1aXJlZCkgKi9cbiAgQElucHV0KCkgZW50cmllczogRHNmclN1bW1hcnkgPSBbXTtcblxuICAvKiogw4l2w6luZW1lbnQgc3VyIGxpZW4gYXZlYyBsYSB2YWxldXIgZGUgbCdhbmNyZS4gKi9cbiAgQE91dHB1dCgpIGVudHJ5U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqLyBoZWFkaW5nSWQgPSBuZXdVbmlxdWVJZCgpO1xuXG4gIC8qKlxuICAgKiBFbWlzc2lvbiBkZSBsYSB2YWxldXIgZGUgbCdhbmNyZSAoZnJhZ21lbnQgb3UgbGluaykgYXUgY2xpYyBzdXIgdW4gbGllblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgb25MaW5rU2VsZWN0KGVudHJ5OiBEc2ZyU3VtbWFyeUxpbmspOiB2b2lkIHtcbiAgICAvLyBvbiBwcm9wYWdlIGwnb3V0cHV0LCBwYXMgYmVzb2luIGRlIGfDqXJlciBpY2kgbGUgcHJldmVudERlZmF1bHQsIGMnZXN0IGfDqXLDqSBlbiBhbW9udFxuICAgIGlmIChlbnRyeS5yb3V0ZSkge1xuICAgICAgdGhpcy5lbnRyeVNlbGVjdC5lbWl0KGVudHJ5LnJvdXRlKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxuYXYgY2xhc3M9XCJmci1zdW1tYXJ5XCIgcm9sZT1cIm5hdmlnYXRpb25cIiBbYXR0ci5hcmlhLWxhYmVsbGVkYnldPVwiaGVhZGluZ0lkXCI+XG4gIDxlZHUtaGVhZGluZ1xuICAgIFtoZWFkaW5nSWRdPVwiaGVhZGluZ0lkXCJcbiAgICBjdXN0b21DbGFzcz1cImZyLXN1bW1hcnlfX3RpdGxlXCJcbiAgICBbaGVhZGluZ109XCJoZWFkaW5nXCJcbiAgICBbbGV2ZWxdPVwiaGVhZGluZ0xldmVsXCJcbiAgICBkZWZhdWx0TGV2ZWw9XCJQXCI+PC9lZHUtaGVhZGluZz5cbiAgPCEtLSBUT0RPIGRlZmF1bHRMZXZlbD1cIkgyXCIgZW4gMi4wIHBvdXIgw6p0cmUgY29tcGF0aWJsZSBhdmVjIGxlIERTRlIgMS45LCAxLjEwLCAuLi4gLS0+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic3VtbWFyeVRlbXBsYXRlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc3VtbWFyeTogZW50cmllcyB9XCI+PC9uZy1jb250YWluZXI+XG48L25hdj5cblxuPG5nLXRlbXBsYXRlICNzdW1tYXJ5VGVtcGxhdGUgbGV0LXN1bW1hcnk9XCJzdW1tYXJ5XCI+XG4gIDxvbD5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGVudHJ5IG9mIHN1bW1hcnlcIj5cbiAgICAgIDxlZHUtaXRlbS1saW5rIFtpdGVtXT1cImVudHJ5XCIgY3VzdG9tQ2xhc3M9XCJmci1zdW1tYXJ5X19saW5rXCIgKGxpbmtTZWxlY3QpPVwib25MaW5rU2VsZWN0KGVudHJ5KVwiPjwvZWR1LWl0ZW0tbGluaz5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJlbnRyeS5zdWJFbnRyaWVzPy5sZW5ndGggPiAwXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwic3VtbWFyeVRlbXBsYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgc3VtbWFyeTogZW50cnkuc3ViRW50cmllcyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9saT5cbiAgPC9vbD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=