@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).
43 lines • 10.4 kB
JavaScript
import { CommonModule } from '@angular/common';
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, viewChild, ViewEncapsulation, } from '@angular/core';
import { DsfrI18nPipe } from '../../../shared';
import { EduWrapWithLiDirective } from '../../../shared/directives/wrap-li.directive';
import { DsfrTranslateComponent } from '../../translate';
import { DsfrToolLinkComponent } from './tool-link.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
/**
* Composant interne représentant le container des liens d'accès rapides du header
*/
export class EduToolsLinksComponent {
constructor() {
/** Nombre maximum de liens d'accès rapides (3) */
this.maxToolsLinks = 3;
/** Evènement émis au clic sur un lien */
this.linkSelect = new EventEmitter();
/* Référence du container depuis le composant header (pour duplication en mobile) */
this.toolsLinksListRef = viewChild('toolsLinksList');
}
onLinkSelect(link) {
this.linkSelect.emit(link);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EduToolsLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EduToolsLinksComponent, isStandalone: true, selector: "edu-tools-links", inputs: { toolsLinks: "toolsLinks", showDisplay: "showDisplay", displayId: "displayId", toolsLinksTemplate: "toolsLinksTemplate", maxToolsLinks: "maxToolsLinks" }, outputs: { linkSelect: "linkSelect" }, viewQueries: [{ propertyName: "toolsLinksListRef", first: true, predicate: ["toolsLinksList"], descendants: true, isSignal: true }], ngImport: i0, template: "@if ((toolsLinks && toolsLinks.length > 0) || showDisplay || toolsLinksTemplate) {\n <ul class=\"fr-btns-group\" eduWrapWithLi #toolsLinksList>\n @if (toolsLinks && toolsLinks.length > 0) {\n @for (item of toolsLinks; track item; let i = $index) {\n @if (i < maxToolsLinks) {\n <li><dsfr-tool-link (linkSelect)=\"onLinkSelect(item)\" [link]=\"item\"></dsfr-tool-link></li>\n }\n }\n }\n @if (toolsLinksTemplate) {\n <ng-container *ngTemplateOutlet=\"toolsLinksTemplate\"></ng-container>\n }\n @if (showDisplay) {\n <li>\n <button type=\"button\" class=\"fr-btn fr-icon-theme-fill\" [attr.aria-controls]=\"displayId\" data-fr-opened=\"false\">\n {{ 'display.heading' | dsfrI18n }}\n </button>\n </li>\n }\n </ul>\n}\n", styles: [".edu-tools-links.fr-header__tools-links{display:block}\n"], dependencies: [{ kind: "component", type: DsfrToolLinkComponent, selector: "dsfr-tool-link", inputs: ["link"], outputs: ["linkSelect"] }, { kind: "directive", type: EduWrapWithLiDirective, selector: "[eduWrapWithLi]" }, { kind: "pipe", type: DsfrI18nPipe, name: "dsfrI18n" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EduToolsLinksComponent, decorators: [{
type: Component,
args: [{ selector: 'edu-tools-links', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [DsfrToolLinkComponent, EduWrapWithLiDirective, DsfrI18nPipe, DsfrTranslateComponent, CommonModule], template: "@if ((toolsLinks && toolsLinks.length > 0) || showDisplay || toolsLinksTemplate) {\n <ul class=\"fr-btns-group\" eduWrapWithLi #toolsLinksList>\n @if (toolsLinks && toolsLinks.length > 0) {\n @for (item of toolsLinks; track item; let i = $index) {\n @if (i < maxToolsLinks) {\n <li><dsfr-tool-link (linkSelect)=\"onLinkSelect(item)\" [link]=\"item\"></dsfr-tool-link></li>\n }\n }\n }\n @if (toolsLinksTemplate) {\n <ng-container *ngTemplateOutlet=\"toolsLinksTemplate\"></ng-container>\n }\n @if (showDisplay) {\n <li>\n <button type=\"button\" class=\"fr-btn fr-icon-theme-fill\" [attr.aria-controls]=\"displayId\" data-fr-opened=\"false\">\n {{ 'display.heading' | dsfrI18n }}\n </button>\n </li>\n }\n </ul>\n}\n", styles: [".edu-tools-links.fr-header__tools-links{display:block}\n"] }]
}], propDecorators: { toolsLinks: [{
type: Input
}], showDisplay: [{
type: Input
}], displayId: [{
type: Input
}], toolsLinksTemplate: [{
type: Input
}], maxToolsLinks: [{
type: Input
}], linkSelect: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMtbGlua3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWRzZnItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvaGVhZGVyL2NvbXBvbmVudC90b29scy1saW5rcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZHNmci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9oZWFkZXIvY29tcG9uZW50L3Rvb2xzLWxpbmtzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQVksTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRTlEOztHQUVHO0FBVUgsTUFBTSxPQUFPLHNCQUFzQjtJQVRuQztRQXNCRSxtREFBbUQ7UUFDMUMsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFFM0IseUNBQXlDO1FBQ3RCLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBRTdELG9GQUFvRjtRQUMzRSxzQkFBaUIsR0FBRyxTQUFTLENBQTBCLGdCQUFnQixDQUFDLENBQUM7S0FLbkY7SUFIVyxZQUFZLENBQUMsSUFBYztRQUNuQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOytHQXhCVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyWkM3Qm5DLHl5QkFxQkEsa0hETVkscUJBQXFCLHNHQUFFLHNCQUFzQix1REFBRSxZQUFZLGdEQUEwQixZQUFZOzs0RkFFaEcsc0JBQXNCO2tCQVRsQyxTQUFTOytCQUNFLGlCQUFpQixjQUVmLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUU1QixDQUFDLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxZQUFZLENBQUM7OEJBSW5HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBR0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUdhLFVBQVU7c0JBQTVCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEc2ZySTE4blBpcGUsIERzZnJMaW5rIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkJztcbmltcG9ydCB7IEVkdVdyYXBXaXRoTGlEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZGlyZWN0aXZlcy93cmFwLWxpLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEc2ZyVHJhbnNsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlJztcbmltcG9ydCB7IERzZnJUb29sTGlua0NvbXBvbmVudCB9IGZyb20gJy4vdG9vbC1saW5rLmNvbXBvbmVudCc7XG5cbi8qKlxuICogQ29tcG9zYW50IGludGVybmUgcmVwcsOpc2VudGFudCBsZSBjb250YWluZXIgZGVzIGxpZW5zIGQnYWNjw6hzIHJhcGlkZXMgZHUgaGVhZGVyXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VkdS10b29scy1saW5rcycsXG4gIHRlbXBsYXRlVXJsOiAnLi90b29scy1saW5rcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdHlsZXM6IFsnIC5lZHUtdG9vbHMtbGlua3MuZnItaGVhZGVyX190b29scy1saW5rcyAgeyBkaXNwbGF5OiBibG9ja30nXSxcbiAgaW1wb3J0czogW0RzZnJUb29sTGlua0NvbXBvbmVudCwgRWR1V3JhcFdpdGhMaURpcmVjdGl2ZSwgRHNmckkxOG5QaXBlLCBEc2ZyVHJhbnNsYXRlQ29tcG9uZW50LCBDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBFZHVUb29sc0xpbmtzQ29tcG9uZW50IHtcbiAgLyoqIExpc3RlIGRlcyBsaWVucyByYXBpZGVzICovXG4gIEBJbnB1dCgpIHRvb2xzTGlua3M6IERzZnJMaW5rW107XG5cbiAgLyoqIENvbXBvc2FudCBkaXNwbGF5IMOgIGFmZmljaGVyICovXG4gIEBJbnB1dCgpIHNob3dEaXNwbGF5OiBib29sZWFuO1xuXG4gIC8qKiBpZGVudGlmaWFudCBkdSBkaXNwbGF5ICovXG4gIEBJbnB1dCgpIGRpc3BsYXlJZDogc3RyaW5nO1xuXG4gIC8qKiBUZW1wbGF0ZSBvcHRpb25uZWwgZGVzIGFjY8OocyByYXBpZGVzICovXG4gIEBJbnB1dCgpIHRvb2xzTGlua3NUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogTm9tYnJlIG1heGltdW0gZGUgbGllbnMgZCdhY2PDqHMgcmFwaWRlcyAoMykgICovXG4gIEBJbnB1dCgpIG1heFRvb2xzTGlua3MgPSAzO1xuXG4gIC8qKiBFdsOobmVtZW50IMOpbWlzIGF1IGNsaWMgc3VyIHVuIGxpZW4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGxpbmtTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPERzZnJMaW5rPigpO1xuXG4gIC8qIFLDqWbDqXJlbmNlIGR1IGNvbnRhaW5lciBkZXB1aXMgbGUgY29tcG9zYW50IGhlYWRlciAocG91ciBkdXBsaWNhdGlvbiBlbiBtb2JpbGUpICovXG4gIHJlYWRvbmx5IHRvb2xzTGlua3NMaXN0UmVmID0gdmlld0NoaWxkPEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PigndG9vbHNMaW5rc0xpc3QnKTtcblxuICBwcm90ZWN0ZWQgb25MaW5rU2VsZWN0KGxpbms6IERzZnJMaW5rKSB7XG4gICAgdGhpcy5saW5rU2VsZWN0LmVtaXQobGluayk7XG4gIH1cbn1cbiIsIkBpZiAoKHRvb2xzTGlua3MgJiYgdG9vbHNMaW5rcy5sZW5ndGggPiAwKSB8fCBzaG93RGlzcGxheSB8fCB0b29sc0xpbmtzVGVtcGxhdGUpIHtcbiAgPHVsIGNsYXNzPVwiZnItYnRucy1ncm91cFwiIGVkdVdyYXBXaXRoTGkgI3Rvb2xzTGlua3NMaXN0PlxuICAgIEBpZiAodG9vbHNMaW5rcyAmJiB0b29sc0xpbmtzLmxlbmd0aCA+IDApIHtcbiAgICAgIEBmb3IgKGl0ZW0gb2YgdG9vbHNMaW5rczsgdHJhY2sgaXRlbTsgbGV0IGkgPSAkaW5kZXgpIHtcbiAgICAgICAgQGlmIChpIDwgbWF4VG9vbHNMaW5rcykge1xuICAgICAgICAgIDxsaT48ZHNmci10b29sLWxpbmsgKGxpbmtTZWxlY3QpPVwib25MaW5rU2VsZWN0KGl0ZW0pXCIgW2xpbmtdPVwiaXRlbVwiPjwvZHNmci10b29sLWxpbms+PC9saT5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBAaWYgKHRvb2xzTGlua3NUZW1wbGF0ZSkge1xuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRvb2xzTGlua3NUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIH1cbiAgICBAaWYgKHNob3dEaXNwbGF5KSB7XG4gICAgICA8bGk+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZnItYnRuIGZyLWljb24tdGhlbWUtZmlsbFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiZGlzcGxheUlkXCIgZGF0YS1mci1vcGVuZWQ9XCJmYWxzZVwiPlxuICAgICAgICAgIHt7ICdkaXNwbGF5LmhlYWRpbmcnIHwgZHNmckkxOG4gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2xpPlxuICAgIH1cbiAgPC91bD5cbn1cbiJdfQ==