@lucca-front/ng 22.1.0-rc.2 → 22.1.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-filter-pills.mjs","sources":["../../../packages/ng/filter-pills/translations.ts","../../../packages/ng/filter-pills/filter-pills.translate.ts","../../../packages/ng/filter-pills/filter-pill/filter-pill.component.ts","../../../packages/ng/filter-pills/filter-pill/filter-pill.component.html","../../../packages/ng/filter-pills/filter-bar/filter-bar.token.ts","../../../packages/ng/filter-pills/filter-bar/filter-bar.component.ts","../../../packages/ng/filter-pills/filter-bar/filter-bar.component.html","../../../packages/ng/filter-pills/filter-view-selector/filter-view-selector.component.ts","../../../packages/ng/filter-pills/filter-view-selector/filter-view-selector.component.html","../../../packages/ng/filter-pills/filter-bar/filter-pill-addon.directive.ts","../../../packages/ng/filter-pills/lucca-front-ng-filter-pills.ts"],"sourcesContent":["export const Translations = {\n\tfr: {\n\t\tclear: 'Vider ce champ',\n\t\tplaceholder: 'Aucune valeur sélectionnée',\n\t\tadditionalFilters: 'Filtres supplémentaires',\n\t\tautoApplyAnnouncement: 'La liste des résultats se met à jour automatiquement.',\n\t\tselectView: 'Sélectionner une vue',\n\t\tviewOptions: 'Options de la vue : {{viewName}}',\n\t\trenameView: 'Modifier le nom',\n\t\tdeleteView: 'Supprimer',\n\t\tsaveView: 'Enregistrer la vue',\n\t\tsaveModification: 'Enregistrer les modifications',\n\t\tsaveNewView: 'Enregistrer en tant que nouvelle vue',\n\t},\n\tpt: {\n\t\tclear: 'Esvaziar este campo',\n\t\tplaceholder: 'Nenhum valor selecionado',\n\t\tadditionalFilters: 'Filtros adicionais',\n\t\tautoApplyAnnouncement: 'A lista de resultados é atualizada automaticamente.',\n\t\tselectView: 'Selecionar uma vista',\n\t\tviewOptions: 'Opções da visualização: {{viewName}}',\n\t\trenameView: 'Alterar o nome',\n\t\tdeleteView: 'Eliminar',\n\t\tsaveView: 'Guardar a vista',\n\t\tsaveModification: 'Guardar as alterações',\n\t\tsaveNewView: 'Guardar como nova vista',\n\t},\n\tes: {\n\t\tclear: 'Vaciar este campo',\n\t\tplaceholder: 'Ningún valor seleccionado',\n\t\tadditionalFilters: 'Filtros adicionales',\n\t\tautoApplyAnnouncement: 'La lista de resultados se actualiza automáticamente.',\n\t\tselectView: 'Seleccionar una vista',\n\t\tviewOptions: 'Opciones de la vista: {{viewName}}',\n\t\trenameView: 'Editar el nombre',\n\t\tdeleteView: 'Eliminar',\n\t\tsaveView: 'Guardar vista',\n\t\tsaveModification: 'Guardar los cambios',\n\t\tsaveNewView: 'Guardar como vista nueva',\n\t},\n\t'nl-BE': {\n\t\tclear: 'Dit veld leegmaken',\n\t\tplaceholder: 'Geen waarde geselecteerd',\n\t\tadditionalFilters: 'Extra filters',\n\t\tautoApplyAnnouncement: 'De resultatenlijst wordt automatisch bijgewerkt.',\n\t\tselectView: 'Selecteer een weergave',\n\t\tviewOptions: 'Opties van de weergave: {{viewName}}',\n\t\trenameView: 'De naam wijzigen',\n\t\tdeleteView: 'Verwijderen',\n\t\tsaveView: 'De weergave opslaan',\n\t\tsaveModification: 'Wijzigingen opslaan',\n\t\tsaveNewView: 'Opslaan als nieuwe weergave',\n\t},\n\tnl: {\n\t\tclear: 'Dit veld leegmaken',\n\t\tplaceholder: 'Geen waarde geselecteerd',\n\t\tadditionalFilters: 'Extra filters',\n\t\tautoApplyAnnouncement: 'De resultatenlijst wordt automatisch bijgewerkt.',\n\t\tselectView: 'Selecteer een weergave',\n\t\tviewOptions: 'Opties van de weergave: {{viewName}}',\n\t\trenameView: 'De naam wijzigen',\n\t\tdeleteView: 'Verwijderen',\n\t\tsaveView: 'De weergave opslaan',\n\t\tsaveModification: 'Wijzigingen opslaan',\n\t\tsaveNewView: 'Opslaan als nieuwe weergave',\n\t},\n\tit: {\n\t\tclear: 'Vuotare questo campo',\n\t\tplaceholder: 'Nessun valore selezionato',\n\t\tadditionalFilters: 'Filtri aggiuntivi',\n\t\tautoApplyAnnouncement: \"L'elenco dei risultati si aggiorna automaticamente.\",\n\t\tselectView: 'Selezionare una vista',\n\t\tviewOptions: 'Opzioni della vista: {{viewName}}',\n\t\trenameView: 'Modificare il nome',\n\t\tdeleteView: 'Elimina',\n\t\tsaveView: 'Salva la vista',\n\t\tsaveModification: 'Salva le modifiche',\n\t\tsaveNewView: 'Salva come nuova vista',\n\t},\n\tde: {\n\t\tclear: 'Den Inhalt aus diesem Feld entfernen',\n\t\tplaceholder: 'Kein Wert ausgewählt',\n\t\tadditionalFilters: 'Zusätzliche Filter',\n\t\tautoApplyAnnouncement: 'Die Ergebnisliste wird automatisch aktualisiert.',\n\t\tselectView: 'Eine Ansicht auswählen',\n\t\tviewOptions: 'Ansichtsoptionen: {{viewName}}',\n\t\trenameView: 'Name bearbeiten',\n\t\tdeleteView: 'Löschen',\n\t\tsaveView: 'Ansicht speichern',\n\t\tsaveModification: 'Änderungen speichern',\n\t\tsaveNewView: 'Als neue Ansicht speichern',\n\t},\n\ten: {\n\t\tclear: 'Empty this field',\n\t\tplaceholder: 'No value selected',\n\t\tadditionalFilters: 'Additional filters',\n\t\tautoApplyAnnouncement: 'The results list updates automatically.',\n\t\tselectView: 'Select a view',\n\t\tviewOptions: 'View options: {{viewName}}',\n\t\trenameView: 'Edit name',\n\t\tdeleteView: 'Delete',\n\t\tsaveView: 'Save view',\n\t\tsaveModification: 'Save changes',\n\t\tsaveNewView: 'Save as new view',\n\t},\n\tpl: {\n\t\tclear: 'Wyczyść to pole',\n\t\tplaceholder: 'Nie wybrano żadnej wartości',\n\t\tadditionalFilters: 'Dodatkowe filtry',\n\t\tautoApplyAnnouncement: 'Lista wyników aktualizuje się automatycznie.',\n\t\tselectView: 'Wybierz widok',\n\t\tviewOptions: 'Opcje widoku: {{viewName}}',\n\t\trenameView: 'Zmień nazwę',\n\t\tdeleteView: 'Usuń',\n\t\tsaveView: 'Save view',\n\t\tsaveModification: 'Save changes',\n\t\tsaveNewView: 'Save as new view',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_FILTER_PILLS_TRANSLATIONS = new InjectionToken('LuFilterPillsTranslations', {\n\tfactory: () => luFilterPillsTranslations,\n});\n\nexport interface LuFilterPillsLabel {\n\tclear: string;\n\tplaceholder: string;\n\tadditionalFilters: string;\n\tautoApplyAnnouncement: string;\n\tselectView: string;\n\tviewOptions: string;\n\trenameView: string;\n\tdeleteView: string;\n}\n\nexport const luFilterPillsTranslations: LuTranslation<LuFilterPillsLabel> = Translations;\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tinput,\n\tLOCALE_ID,\n\tmodel,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ClearComponent } from '@lucca-front/ng/clear';\nimport { intlInputOptions, luBooleanAttribute } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { PopoverDirective } from '@lucca-front/ng/popover2';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { FILTER_PILL_HOST_COMPONENT, FILTER_PILL_INPUT_COMPONENT, FilterPillHostComponent, FilterPillInputComponent } from '@lucca-front/ng/filter-pills/core';\nimport { LU_FILTER_PILLS_TRANSLATIONS } from '../filter-pills.translate';\n\n@Component({\n\tselector: 'lu-filter-pill',\n\timports: [PopoverDirective, FormsModule, IconComponent, NgTemplateOutlet, LuTooltipModule, ClearComponent],\n\ttemplateUrl: './filter-pill.component.html',\n\tstyleUrl: './filter-pill.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: FILTER_PILL_HOST_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => FilterPillComponent),\n\t\t},\n\t],\n\thost: {\n\t\tclass: 'filterPillWrapper',\n\t\t'[class.is-hidden]': 'isHiddenClass',\n\t\t'[class.mod-checkbox]': 'isModCheckbox',\n\t\t'[class.is-filled]': 'isFilled',\n\t\t'[class.is-comboboxHidden]': 'hideCombobox',\n\t\t'(click)': 'hostClick()',\n\t},\n})\nexport class FilterPillComponent implements FilterPillHostComponent {\n\treadonly intl = input(...intlInputOptions(LU_FILTER_PILLS_TRANSLATIONS));\n\n\t#locale = inject(LOCALE_ID);\n\n\treadonly elementRef = inject(ElementRef);\n\n\treadonly layout = computed(() => this.inputComponentRef()?.filterPillLayout?.() || 'default');\n\n\t// The easy way to grab input component, will work in most cases\n\treadonly childInputComponentRef = contentChild(FILTER_PILL_INPUT_COMPONENT);\n\n\t// The harder way, because child has to register itself to the host, might become the default approach if this is required too much\n\t// (like when child isn't created when component inits or it's too deep)\n\treadonly registeredInputComponentRef = signal<FilterPillInputComponent | null>(null);\n\n\treadonly inputComponentRef = computed(() => this.registeredInputComponentRef() || this.childInputComponentRef());\n\n\treadonly popoverRef = viewChild(PopoverDirective);\n\n\tpillTpl: TemplateRef<unknown>;\n\n\treadonly labelTpl = computed(() => this.customLabelTpl() || this.defaultLabelTpl());\n\n\treadonly defaultLabelTpl = viewChild<TemplateRef<unknown>>('defaultLabel');\n\n\treadonly customLabelTpl = signal<TemplateRef<unknown> | null>(null);\n\n\treadonly name = input<string>();\n\n\treadonly optional = input(false, { transform: luBooleanAttribute });\n\n\t/** Groups the pill with the ones sharing the same value in the filter bar's optional filters list. Empty means no group. */\n\treadonly grouping = input('');\n\n\t/** Renders the pill as an icon-only button, its label being carried by a tooltip. */\n\treadonly iconOnly = input(false, { transform: luBooleanAttribute });\n\n\t/** Catches the click that closes the popover instead of letting it through to the page. */\n\treadonly backdrop = input(false, { transform: luBooleanAttribute });\n\n\treadonly disabled = computed(() => this.inputComponentRef()?.filterPillDisabled?.() || false);\n\n\tget isHiddenClass() {\n\t\treturn this.isHidden();\n\t}\n\n\treadonly displayed = model(false);\n\n\tprotected readonly isHidden = computed(() => this.optional() && !this.displayed());\n\n\tpopoverPositions: ConnectionPositionPair[] = [\n\t\tnew ConnectionPositionPair(\n\t\t\t{ originX: 'start', originY: 'bottom' },\n\t\t\t{\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'top',\n\t\t\t},\n\t\t\t-4,\n\t\t\t0,\n\t\t),\n\t\tnew ConnectionPositionPair(\n\t\t\t{ originX: 'start', originY: 'top' },\n\t\t\t{\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t},\n\t\t\t-4,\n\t\t\t0,\n\t\t),\n\t];\n\n\treadonly label = input.required<string>();\n\n\treadonly placeholder = computed(() => this.placeholderOverride() ?? this.intl().placeholder);\n\treadonly placeholderOverride = input<string | null>(null, { alias: 'placeholder' });\n\n\treadonly icon = input<LuccaIcon>();\n\n\treadonly defaultIcon = computed<LuccaIcon>(() => this.inputComponentRef()?.getDefaultFilterPillIcon?.() ?? 'arrowChevronBottom');\n\n\treadonly displayedIcon = computed(() => this.icon() || this.defaultIcon());\n\n\treadonly shouldHideCombobox = computed(() => this.inputComponentRef()?.hideCombobox?.() ?? false);\n\n\treadonly inputIsEmpty = computed(() => this.inputComponentRef()?.isFilterPillEmpty() ?? true);\n\treadonly inputIsClearable = computed(() => this.inputComponentRef()?.isFilterPillClearable() ?? false);\n\n\treadonly shouldShowColon = computed(() => this.inputComponentRef()?.showColon?.() || !this.inputIsEmpty());\n\n\treadonly colonDisplay = computed(() => {\n\t\tif (!this.shouldShowColon()) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this.#locale.split('-')[0] === 'fr') {\n\t\t\treturn ' :';\n\t\t}\n\t\treturn ':';\n\t});\n\n\treadonly modCheckbox = computed(() => this.layout() === 'checkable');\n\n\tget isModCheckbox() {\n\t\treturn this.modCheckbox();\n\t}\n\n\tget isFilled() {\n\t\treturn !this.inputIsEmpty();\n\t}\n\n\tget hideCombobox() {\n\t\treturn this.shouldHideCombobox();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst ref = this.inputComponentRef();\n\t\t\tif (ref) {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tref.enableFilterPillMode?.();\n\t\t\t\t\tref.registerFilterPillClosePopover(this.closePopover);\n\t\t\t\t\tref.registerFilterPillUpdatePosition?.(this.updatePosition);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\t// When an optional filter pill has a value, it must be displayed\n\t\t\tif (this.optional() && !this.inputIsEmpty() && !untracked(this.displayed)) {\n\t\t\t\tthis.displayed.set(true);\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\t// When an optional filter pill is hidden, its value must be clear\n\t\t\tif (this.optional() && !this.displayed() && !untracked(this.inputIsEmpty)) {\n\t\t\t\tthis.clear();\n\t\t\t}\n\t\t});\n\t}\n\n\thostClick(): void {\n\t\tthis.inputComponentRef()?.onFilterPillClick?.();\n\t}\n\n\tpopoverOpened(): void {\n\t\tthis.inputComponentRef()?.onFilterPillOpened?.();\n\t}\n\n\tpopoverClosed(): void {\n\t\tthis.inputComponentRef()?.onFilterPillClosed?.();\n\t}\n\n\tclosePopover = () => {\n\t\t// `onFilterPillClosed` is notified by the `luPopoverClosed` binding, which also covers\n\t\t// closes the input never asked for (outside click, Escape handled by the popover)\n\t\tthis.popoverRef()?.close();\n\t};\n\n\tupdatePosition = () => {\n\t\tthis.popoverRef()?.updatePosition();\n\t};\n\n\tclear(): void {\n\t\tthis.inputComponentRef()?.clearFilterPillValue();\n\t}\n\n\tregisterInput(input: FilterPillInputComponent): void {\n\t\tthis.registeredInputComponentRef.set(input);\n\t}\n}\n","@if (!isHidden()) {\n\t@if (iconOnly()) {\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass=\"filterPill mod-button\"\n\t\t\t[attr.disabled]=\"disabled() ? 'disabled' : null\"\n\t\t\t[attr.aria-expanded]=\"popoverRef.opened()\"\n\t\t\t[luTooltip]=\"label()\"\n\t\t\tluTooltipOnlyForDisplay\n\t\t\t(keydown.arrowDown)=\"$event.preventDefault(); popoverRef.openPopover()\"\n\t\t\t(keydown.arrowUp)=\"$event.preventDefault(); popoverRef.openPopover()\"\n\t\t\t[luPopover2]=\"pillContent\"\n\t\t\t[luPopoverAnchor]=\"elementRef\"\n\t\t\t[luPopoverNoCloseButton]=\"true\"\n\t\t\t[luPopoverBackdrop]=\"backdrop()\"\n\t\t\t[customPositions]=\"popoverPositions\"\n\t\t\t(luPopoverOpened)=\"popoverOpened()\"\n\t\t\t(luPopoverClosed)=\"popoverClosed()\"\n\t\t\t#popoverRef=\"luPopover2\"\n\t\t>\n\t\t\t<lu-icon class=\"filterPill-icon\" [icon]=\"displayedIcon()\" [alt]=\"label()\" />\n\t\t</button>\n\t} @else if (layout() === \"default\") {\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass=\"filterPill\"\n\t\t\t[attr.disabled]=\"disabled() ? 'disabled' : null\"\n\t\t\t[class.is-filled]=\"!this.inputIsEmpty()\"\n\t\t\t[attr.aria-expanded]=\"popoverRef.opened()\"\n\t\t\t(keydown.arrowDown)=\"$event.preventDefault(); popoverRef.openPopover(true)\"\n\t\t\t(keydown.arrowUp)=\"$event.preventDefault(); popoverRef.openPopover(true)\"\n\t\t\t[luPopover2]=\"pillContent\"\n\t\t\t[luPopoverAnchor]=\"elementRef\"\n\t\t\t[luPopoverNoCloseButton]=\"true\"\n\t\t\t[luPopoverBackdrop]=\"backdrop()\"\n\t\t\t[customPositions]=\"popoverPositions\"\n\t\t\t(luPopoverOpened)=\"popoverOpened()\"\n\t\t\t(luPopoverClosed)=\"popoverClosed()\"\n\t\t\t#filterPillRef\n\t\t\t#popoverRef=\"luPopover2\"\n\t\t>\n\t\t\t<span class=\"filterPill-label\">\n\t\t\t\t<ng-container\n\t\t\t\t\t*ngTemplateOutlet=\"\n\t\t\t\t\t\tlabelTpl();\n\t\t\t\t\t\tcontext: { label: label(), isEmpty: inputIsEmpty(), placeholder: placeholder(), colon: colonDisplay() }\n\t\t\t\t\t\"\n\t\t\t\t/>\n\t\t\t</span>\n\t\t\t<span\n\t\t\t\tclass=\"filterPill-value\"\n\t\t\t\tluTooltip\n\t\t\t\tluTooltipWhenEllipsis\n\t\t\t\t[luTooltipDisabled]=\"inputIsEmpty()\"\n\t\t\t\t[luTooltipTriggerAnchor]=\"filterPillRef\"\n\t\t\t>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"pillTpl; context: { label: label(), isEmpty: inputIsEmpty() }\" />\n\t\t\t\t@if (inputIsEmpty() && !disabled()) {\n\t\t\t\t\t{{ placeholder() }}\n\t\t\t\t}\n\t\t\t</span>\n\t\t\t<span class=\"filterPill-toggle\">\n\t\t\t\t<lu-icon [icon]=\"displayedIcon()\" size=\"S\" />\n\t\t\t</span>\n\t\t</button>\n\t\t@if (inputIsClearable()) {\n\t\t\t<lu-clear class=\"filterPill_clear\" (onClear)=\"clear(); popoverRef.opened() ? null : filterPillRef.focus()\">{{\n\t\t\t\tintl().clear\n\t\t\t}}</lu-clear>\n\t\t}\n\t} @else {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\tlabelTpl();\n\t\t\t\tcontext: { label: label(), isEmpty: inputIsEmpty(), placeholder: placeholder(), colon: colonDisplay() }\n\t\t\t\"\n\t\t/>\n\t}\n}\n<ng-template #pillContent>\n\t<div class=\"filterPill_popover-content popover-contentOptional\">\n\t\t<ng-content />\n\t</div>\n</ng-template>\n<ng-template #defaultLabel>{{ label() }}{{ colonDisplay() }}</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { FilterBarComponent } from './filter-bar.component';\n\nexport const LU_FILTER_BAR_INSTANCE = new InjectionToken<FilterBarComponent>('LU_FILTER_BAR_INSTANCE');\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, effect, forwardRef, input, signal, TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { intlInputOptions, luBooleanAttribute } from '@lucca-front/ng/core';\nimport { LuOptionComparer, LuOptionDirective, LuOptionGroupByContext, LuOptionGrouping } from '@lucca-front/ng/core-select';\nimport { DividerComponent } from '@lucca-front/ng/divider';\nimport { LuMultiSelectInputComponent } from '@lucca-front/ng/multi-select';\nimport { ScrollBoxComponent } from '@lucca-front/ng/scroll-box';\nimport { FilterPillComponent } from '../filter-pill/filter-pill.component';\nimport { LU_FILTER_PILLS_TRANSLATIONS } from '../filter-pills.translate';\nimport { LU_FILTER_BAR_INSTANCE } from './filter-bar.token';\n\nlet nextId = 0;\n\n/** Case and accent insensitive, so searching `periode` matches a `Période` pill. */\nfunction normalizeSearch(value: string): string {\n\treturn value\n\t\t.normalize('NFD')\n\t\t.replace(/\\p{Diacritic}/gu, '')\n\t\t.toLowerCase();\n}\n\n@Component({\n\tselector: 'lu-filter-bar',\n\timports: [DividerComponent, ScrollBoxComponent, FormsModule, NgTemplateOutlet, FilterPillComponent, LuMultiSelectInputComponent, LuOptionDirective],\n\ttemplateUrl: './filter-bar.component.html',\n\tstyleUrl: './filter-bar.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'filterBar',\n\t\t'[attr.aria-describedby]': 'manualApply() ? null : autoApplyAnnouncementId',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: LU_FILTER_BAR_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => FilterBarComponent),\n\t\t},\n\t],\n})\nexport class FilterBarComponent {\n\treadonly intl = input(...intlInputOptions(LU_FILTER_PILLS_TRANSLATIONS));\n\n\t/**\n\t * Set when results only update after an explicit \"Apply\" action, to remove the hidden message\n\t * telling assistive technology users that the results list updates automatically\n\t */\n\treadonly manualApply = input(false, { transform: luBooleanAttribute });\n\n\treadonly autoApplyAnnouncementId = `filterBar-autoApplyAnnouncement-${nextId++}`;\n\n\treadonly addonBefore = signal<TemplateRef<unknown> | null>(null);\n\treadonly addonAfter = signal<TemplateRef<unknown> | null>(null);\n\n\treadonly pills = contentChildren(FilterPillComponent, { descendants: true });\n\n\treadonly optionalPills = computed(() => this.pills().filter((pill) => pill.optional()));\n\n\tprotected readonly displayedOptionalPills = computed(() => this.optionalPills().filter((pill) => pill.displayed()));\n\n\t/** Mirrors the search clue of the optional filters select, which filters its options on its own. */\n\tprotected readonly clue = signal('');\n\n\t/**\n\t * The panel builds a group out of each run of consecutive options, so the pills of a same group\n\t * have to be listed together. Groups keep the order of their first pill, ungrouped pills come first.\n\t */\n\tprotected readonly optionalPillOptions = computed(() => {\n\t\tconst clue = normalizeSearch(this.clue());\n\t\tconst pillsByGroup = new Map<string, FilterPillComponent[]>([['', []]]);\n\t\tthis.optionalPills()\n\t\t\t.filter((pill) => normalizeSearch(pill.label()).includes(clue))\n\t\t\t.forEach((pill) => {\n\t\t\t\tconst groupPills = pillsByGroup.get(pill.grouping());\n\t\t\t\tif (groupPills) {\n\t\t\t\t\tgroupPills.push(pill);\n\t\t\t\t} else {\n\t\t\t\t\tpillsByGroup.set(pill.grouping(), [pill]);\n\t\t\t\t}\n\t\t\t});\n\t\treturn [...pillsByGroup.values()].flat();\n\t});\n\n\t/** Optional pills are identified by their instance, they have no serializable value to compare. */\n\tprotected readonly optionalPillComparer: LuOptionComparer<FilterPillComponent> = (pill1, pill2) => pill1 === pill2;\n\n\t// `viewChild` can't be declared on an ES private field\n\tprivate readonly optionalPillsSelect = viewChild(LuMultiSelectInputComponent);\n\n\tprivate readonly optionalPillsGroupTpl = viewChild<TemplateRef<LuOptionGroupByContext<unknown, unknown>>>('optionalPillsGroup');\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\t// Grouping stays off until a pill declares one, so a bar without groups keeps a flat option list\n\t\t\tconst grouped = this.optionalPills().some((pill) => pill.grouping().length > 0);\n\t\t\tconst content = this.optionalPillsGroupTpl();\n\t\t\tconst grouping: LuOptionGrouping<unknown, unknown> | undefined = grouped && content ? { selector: (pill: unknown) => (pill as FilterPillComponent).grouping(), content } : undefined;\n\t\t\tthis.optionalPillsSelect()?.groupingSignal.set(grouping);\n\t\t});\n\t}\n\n\tprotected displayOptionalPills(pills: FilterPillComponent[]): void {\n\t\tthis.optionalPills().forEach((pill) => pill.displayed.set(pills.includes(pill)));\n\t}\n}\n","@if (!manualApply()) {\n\t<span class=\"pr-u-mask\" [attr.id]=\"autoApplyAnnouncementId\">{{ intl().autoApplyAnnouncement }}</span>\n}\n<lu-scroll-box class=\"filterBar-scrollBox\">\n\t<div class=\"filterBar-scrollBox-group\">\n\t\t@if (addonBefore()) {\n\t\t\t<ng-container *ngTemplateOutlet=\"addonBefore()\" />\n\n\t\t\t<lu-divider class=\"filterBar-divider\" />\n\t\t}\n\t\t@if (optionalPills().length > 0) {\n\t\t\t<lu-filter-pill [label]=\"intl().additionalFilters\" icon=\"filtersDescending\" iconOnly backdrop>\n\t\t\t\t<lu-multi-select\n\t\t\t\t\t#optionalPillsSelect\n\t\t\t\t\t[options]=\"optionalPillOptions()\"\n\t\t\t\t\t[optionComparer]=\"optionalPillComparer\"\n\t\t\t\t\t[ngModel]=\"displayedOptionalPills()\"\n\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t(ngModelChange)=\"displayOptionalPills($event)\"\n\t\t\t\t\t(clueChange)=\"clue.set($event)\"\n\t\t\t\t>\n\t\t\t\t\t<ng-container *luOption=\"let pill; select: optionalPillsSelect\">{{ pill.label() }}</ng-container>\n\t\t\t\t\t<ng-template #optionalPillsGroup let-group>{{ group.key }}</ng-template>\n\t\t\t\t</lu-multi-select>\n\t\t\t</lu-filter-pill>\n\t\t}\n\n\t\t<ng-content />\n\t</div>\n\n\t@if (addonAfter()) {\n\t\t<div class=\"filterBar-scrollBox-export\">\n\t\t\t<ng-container *ngTemplateOutlet=\"addonAfter()\" />\n\t\t</div>\n\t}\n</lu-scroll-box>\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { intlInputOptions, IntlParamsPipe } from '@lucca-front/ng/core';\nimport { DropdownActionComponent, DropdownItemComponent, DropdownMenuComponent, LuDropdownTriggerDirective } from '@lucca-front/ng/dropdown';\nimport { FormLabelComponent } from '@lucca-front/ng/form-label';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { PopoverDirective } from '@lucca-front/ng/popover2';\nimport { LU_FILTER_PILLS_TRANSLATIONS } from '../filter-pills.translate';\n\n// Same convention as `lu-select` (see @lucca-front/ng/core-select). Duplicated locally because core-select\n// depends on filter-pills, so importing it here would introduce a circular dependency between entry points.\nexport type LuOptionComparer<T> = (a: T, b: T) => boolean;\nexport const filterViewDefaultOptionComparer: LuOptionComparer<unknown> = (a, b) => JSON.stringify(a) === JSON.stringify(b);\nexport const filterViewDefaultOptionKey: (option: unknown) => unknown = (option) => option;\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-filter-view-selector',\n\timports: [ButtonComponent, IconComponent, PopoverDirective, FormLabelComponent, LuDropdownTriggerDirective, DropdownMenuComponent, DropdownItemComponent, DropdownActionComponent, IntlParamsPipe],\n\ttemplateUrl: './filter-view-selector.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'filterBar-viewSelector',\n\t\t'(keydown.arrowDown)': 'popoverRef()?.openPopover()',\n\t},\n})\nexport class FilterViewSelectorComponent<T> {\n\treadonly intl = input(...intlInputOptions(LU_FILTER_PILLS_TRANSLATIONS));\n\n\treadonly popoverRef = viewChild(PopoverDirective);\n\n\t/** The list of saved views to pick from. */\n\treadonly views = input.required<T[]>();\n\n\t/** The currently selected view (two-way bindable). */\n\treadonly selectedView = model<T | null>(null);\n\n\t/** How to display a view. Defaults to reading its `name` property. */\n\treadonly viewLabel = input<(view: T) => string>((view) => (view as { name: string }).name);\n\n\t/** How to compare two views for selection. Same convention as `lu-select` — defaults to a structural comparison. */\n\treadonly optionComparer = input<LuOptionComparer<T>>(filterViewDefaultOptionComparer);\n\n\t/** Stable identity used for `@for` tracking. Same convention as `lu-select` — defaults to identity. */\n\treadonly optionKey = input<(view: T) => unknown>(filterViewDefaultOptionKey);\n\n\t/** Emitted when the user asks to rename a view. */\n\treadonly renameView = output<T>();\n\n\t/** Emitted when the user asks to delete a view. */\n\treadonly deleteView = output<T>();\n\n\t/** Aligns the popover under the trigger, like the filter pills do. */\n\tprotected readonly popoverPositions: ConnectionPositionPair[] = [\n\t\tnew ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, -4, 0),\n\t\tnew ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, -4, 0),\n\t];\n\n\t/** Shared `name` so all the radios of a given selector belong to the same group. */\n\tprotected readonly groupName = `filterViewSelector-${nextId++}`;\n\n\tprotected readonly selectedLabel = computed(() => {\n\t\tconst selected = this.selectedView();\n\t\treturn selected != null ? this.viewLabel()(selected) : null;\n\t});\n\n\tprotected isSelected(view: T): boolean {\n\t\tconst selected = this.selectedView();\n\t\tif (selected == null) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.optionComparer()(selected, view);\n\t}\n\n\tprotected inputId(index: number): string {\n\t\treturn `${this.groupName}-${index}`;\n\t}\n\n\tprotected viewOptionsLabel(view: T): string {\n\t\treturn `${this.intl().viewOptions} : ${this.viewLabel()(view)}`;\n\t}\n\n\tprotected selectView(view: T): void {\n\t\tthis.selectedView.set(view);\n\t\tthis.popoverRef()?.close();\n\t}\n}\n","<button\n\ttype=\"button\"\n\tluButton=\"outlined\"\n\tsize=\"S\"\n\tdisclosure\n\tluPopoverNoCloseButton\n\t[luPopover2]=\"viewsPopover\"\n\t[customPositions]=\"popoverPositions\"\n>\n\t@if (selectedLabel(); as label) {\n\t\t<span class=\"pr-u-mask\">{{ intl().selectView }} - </span>\n\t\t{{ label }}\n\t} @else {\n\t\t{{ intl().selectView }}\n\t}\n\t<lu-icon icon=\"arrowChevronBottom\" />\n</button>\n\n<ng-template #viewsPopover>\n\t<div class=\"filterPill_popover-content popover-contentOptional\">\n\t\t@for (view of views(); track optionKey()(view); let index = $index) {\n\t\t\t<div class=\"filterPill_popover-content-option\">\n\t\t\t\t<label luFormLabel [attr.for]=\"inputId(index)\">{{ viewLabel()(view) }}</label>\n\t\t\t\t<span class=\"filterPill_popover-content-option-input\">\n\t\t\t\t\t<input type=\"radio\" [attr.id]=\"inputId(index)\" [attr.name]=\"groupName\" [checked]=\"isSelected(view)\" (change)=\"selectView(view)\" />\n\t\t\t\t</span>\n\t\t\t\t<button type=\"button\" class=\"filterPill_popover-content-option-actions\" size=\"XS\" luButton=\"ghost\" [luDropdown]=\"optionsDropdown\">\n\t\t\t\t\t<lu-icon icon=\"menuDots\" [alt]=\"intl().viewOptions | intlParams: { viewName: viewLabel()(view) }\" />\n\t\t\t\t</button>\n\n\t\t\t\t<ng-template #optionsDropdown>\n\t\t\t\t\t<lu-dropdown-menu>\n\t\t\t\t\t\t<lu-dropdown-item>\n\t\t\t\t\t\t\t<button type=\"button\" lu-dropdown-action (click)=\"renameView.emit(view); popoverRef()?.close()\">\n\t\t\t\t\t\t\t\t<lu-icon icon=\"edit\" />\n\t\t\t\t\t\t\t\t{{ intl().renameView }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</lu-dropdown-item>\n\t\t\t\t\t\t<lu-dropdown-item>\n\t\t\t\t\t\t\t<button type=\"button\" lu-dropdown-action critical (click)=\"deleteView.emit(view); popoverRef()?.close()\">\n\t\t\t\t\t\t\t\t<lu-icon icon=\"trash\" />\n\t\t\t\t\t\t\t\t{{ intl().deleteView }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</lu-dropdown-item>\n\t\t\t\t\t</lu-dropdown-menu>\n\t\t\t\t</ng-template>\n\t\t\t</div>\n\t\t}\n\t</div>\n</ng-template>\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { FilterBarComponent } from './filter-bar.component';\n\n@Directive({\n\tselector: '[luFilterPillAddonBefore]',\n})\nexport class FilterPillAddonBeforeDirective {\n\tconstructor() {\n\t\tinject(FilterBarComponent).addonBefore.set(inject(TemplateRef));\n\t}\n\n\tpublic static ngTemplateContextGuard(_dir: FilterPillAddonBeforeDirective, _ctx: unknown): _ctx is void {\n\t\treturn true;\n\t}\n}\n\n@Directive({\n\tselector: '[luFilterPillAddonAfter]',\n})\nexport class FilterPillAddonAfterDirective {\n\tconstructor() {\n\t\tinject(FilterBarComponent).addonAfter.set(inject(TemplateRef));\n\t}\n\n\tpublic static ngTemplateContextGuard(_dir: FilterPillAddonAfterDirective, _ctx: unknown): _ctx is void {\n\t\treturn true;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-filter-pills.mjs","sources":["../../../packages/ng/filter-pills/translations.ts","../../../packages/ng/filter-pills/filter-pills.translate.ts","../../../packages/ng/filter-pills/filter-pill/filter-pill.component.ts","../../../packages/ng/filter-pills/filter-pill/filter-pill.component.html","../../../packages/ng/filter-pills/filter-bar/filter-bar.token.ts","../../../packages/ng/filter-pills/filter-bar/filter-bar.component.ts","../../../packages/ng/filter-pills/filter-bar/filter-bar.component.html","../../../packages/ng/filter-pills/filter-view-selector/filter-view-selector.component.ts","../../../packages/ng/filter-pills/filter-view-selector/filter-view-selector.component.html","../../../packages/ng/filter-pills/filter-bar/filter-pill-addon.directive.ts","../../../packages/ng/filter-pills/lucca-front-ng-filter-pills.ts"],"sourcesContent":["export const Translations = {\n\tfr: {\n\t\tclear: 'Vider ce champ',\n\t\tplaceholder: 'Aucune valeur sélectionnée',\n\t\tadditionalFilters: 'Filtres supplémentaires',\n\t\tautoApplyAnnouncement: 'La liste des résultats se met à jour automatiquement.',\n\t\tselectView: 'Sélectionner une vue',\n\t\tviewOptions: 'Options de la vue : {{viewName}}',\n\t\trenameView: 'Modifier le nom',\n\t\tdeleteView: 'Supprimer',\n\t\tsaveView: 'Enregistrer la vue',\n\t\tsaveModification: 'Enregistrer les modifications',\n\t\tsaveNewView: 'Enregistrer en tant que nouvelle vue',\n\t},\n\tpt: {\n\t\tclear: 'Esvaziar este campo',\n\t\tplaceholder: 'Nenhum valor selecionado',\n\t\tadditionalFilters: 'Filtros adicionais',\n\t\tautoApplyAnnouncement: 'A lista de resultados é atualizada automaticamente.',\n\t\tselectView: 'Selecionar uma vista',\n\t\tviewOptions: 'Opções da visualização: {{viewName}}',\n\t\trenameView: 'Alterar o nome',\n\t\tdeleteView: 'Eliminar',\n\t\tsaveView: 'Guardar a vista',\n\t\tsaveModification: 'Guardar as alterações',\n\t\tsaveNewView: 'Guardar como nova vista',\n\t},\n\tes: {\n\t\tclear: 'Vaciar este campo',\n\t\tplaceholder: 'Ningún valor seleccionado',\n\t\tadditionalFilters: 'Filtros adicionales',\n\t\tautoApplyAnnouncement: 'La lista de resultados se actualiza automáticamente.',\n\t\tselectView: 'Seleccionar una vista',\n\t\tviewOptions: 'Opciones de la vista: {{viewName}}',\n\t\trenameView: 'Editar el nombre',\n\t\tdeleteView: 'Eliminar',\n\t\tsaveView: 'Guardar vista',\n\t\tsaveModification: 'Guardar los cambios',\n\t\tsaveNewView: 'Guardar como vista nueva',\n\t},\n\t'nl-BE': {\n\t\tclear: 'Dit veld leegmaken',\n\t\tplaceholder: 'Geen waarde geselecteerd',\n\t\tadditionalFilters: 'Extra filters',\n\t\tautoApplyAnnouncement: 'De resultatenlijst wordt automatisch bijgewerkt.',\n\t\tselectView: 'Selecteer een weergave',\n\t\tviewOptions: 'Opties van de weergave: {{viewName}}',\n\t\trenameView: 'De naam wijzigen',\n\t\tdeleteView: 'Verwijderen',\n\t\tsaveView: 'De weergave opslaan',\n\t\tsaveModification: 'Wijzigingen opslaan',\n\t\tsaveNewView: 'Opslaan als nieuwe weergave',\n\t},\n\tnl: {\n\t\tclear: 'Dit veld leegmaken',\n\t\tplaceholder: 'Geen waarde geselecteerd',\n\t\tadditionalFilters: 'Extra filters',\n\t\tautoApplyAnnouncement: 'De resultatenlijst wordt automatisch bijgewerkt.',\n\t\tselectView: 'Selecteer een weergave',\n\t\tviewOptions: 'Opties van de weergave: {{viewName}}',\n\t\trenameView: 'De naam wijzigen',\n\t\tdeleteView: 'Verwijderen',\n\t\tsaveView: 'De weergave opslaan',\n\t\tsaveModification: 'Wijzigingen opslaan',\n\t\tsaveNewView: 'Opslaan als nieuwe weergave',\n\t},\n\tit: {\n\t\tclear: 'Vuotare questo campo',\n\t\tplaceholder: 'Nessun valore selezionato',\n\t\tadditionalFilters: 'Filtri aggiuntivi',\n\t\tautoApplyAnnouncement: \"L'elenco dei risultati si aggiorna automaticamente.\",\n\t\tselectView: 'Selezionare una vista',\n\t\tviewOptions: 'Opzioni della vista: {{viewName}}',\n\t\trenameView: 'Modificare il nome',\n\t\tdeleteView: 'Elimina',\n\t\tsaveView: 'Salva la vista',\n\t\tsaveModification: 'Salva le modifiche',\n\t\tsaveNewView: 'Salva come nuova vista',\n\t},\n\tde: {\n\t\tclear: 'Den Inhalt aus diesem Feld entfernen',\n\t\tplaceholder: 'Kein Wert ausgewählt',\n\t\tadditionalFilters: 'Zusätzliche Filter',\n\t\tautoApplyAnnouncement: 'Die Ergebnisliste wird automatisch aktualisiert.',\n\t\tselectView: 'Eine Ansicht auswählen',\n\t\tviewOptions: 'Ansichtsoptionen: {{viewName}}',\n\t\trenameView: 'Name bearbeiten',\n\t\tdeleteView: 'Löschen',\n\t\tsaveView: 'Ansicht speichern',\n\t\tsaveModification: 'Änderungen speichern',\n\t\tsaveNewView: 'Als neue Ansicht speichern',\n\t},\n\ten: {\n\t\tclear: 'Empty this field',\n\t\tplaceholder: 'No value selected',\n\t\tadditionalFilters: 'Additional filters',\n\t\tautoApplyAnnouncement: 'The results list updates automatically.',\n\t\tselectView: 'Select a view',\n\t\tviewOptions: 'View options: {{viewName}}',\n\t\trenameView: 'Edit name',\n\t\tdeleteView: 'Delete',\n\t\tsaveView: 'Save view',\n\t\tsaveModification: 'Save changes',\n\t\tsaveNewView: 'Save as new view',\n\t},\n\tpl: {\n\t\tclear: 'Wyczyść to pole',\n\t\tplaceholder: 'Nie wybrano żadnej wartości',\n\t\tadditionalFilters: 'Dodatkowe filtry',\n\t\tautoApplyAnnouncement: 'Lista wyników aktualizuje się automatycznie.',\n\t\tselectView: 'Wybierz widok',\n\t\tviewOptions: 'Opcje widoku: {{viewName}}',\n\t\trenameView: 'Zmień nazwę',\n\t\tdeleteView: 'Usuń',\n\t\tsaveView: 'Save view',\n\t\tsaveModification: 'Save changes',\n\t\tsaveNewView: 'Save as new view',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_FILTER_PILLS_TRANSLATIONS = new InjectionToken('LuFilterPillsTranslations', {\n\tfactory: () => luFilterPillsTranslations,\n});\n\nexport interface LuFilterPillsLabel {\n\tclear: string;\n\tplaceholder: string;\n\tadditionalFilters: string;\n\tautoApplyAnnouncement: string;\n\tselectView: string;\n\tviewOptions: string;\n\trenameView: string;\n\tdeleteView: string;\n}\n\nexport const luFilterPillsTranslations: LuTranslation<LuFilterPillsLabel> = Translations;\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChild,\n\teffect,\n\tElementRef,\n\tforwardRef,\n\tinject,\n\tinput,\n\tLOCALE_ID,\n\tmodel,\n\tsignal,\n\tTemplateRef,\n\tuntracked,\n\tviewChild,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { ClearComponent } from '@lucca-front/ng/clear';\nimport { intlInputOptions, luBooleanAttribute } from '@lucca-front/ng/core';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { PopoverDirective } from '@lucca-front/ng/popover2';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { FILTER_PILL_HOST_COMPONENT, FILTER_PILL_INPUT_COMPONENT, FilterPillHostComponent, FilterPillInputComponent } from '@lucca-front/ng/filter-pills/core';\nimport { LU_FILTER_PILLS_TRANSLATIONS } from '../filter-pills.translate';\n\n@Component({\n\tselector: 'lu-filter-pill',\n\timports: [PopoverDirective, FormsModule, IconComponent, NgTemplateOutlet, LuTooltipModule, ClearComponent],\n\ttemplateUrl: './filter-pill.component.html',\n\tstyleUrl: './filter-pill.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\t{\n\t\t\tprovide: FILTER_PILL_HOST_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => FilterPillComponent),\n\t\t},\n\t],\n\thost: {\n\t\tclass: 'filterPillWrapper',\n\t\t'[class.is-hidden]': 'isHiddenClass',\n\t\t'[class.mod-checkbox]': 'isModCheckbox',\n\t\t'[class.is-filled]': 'isFilled',\n\t\t'[class.is-comboboxHidden]': 'hideCombobox',\n\t\t'(click)': 'hostClick()',\n\t},\n})\nexport class FilterPillComponent implements FilterPillHostComponent {\n\treadonly intl = input(...intlInputOptions(LU_FILTER_PILLS_TRANSLATIONS));\n\n\t#locale = inject(LOCALE_ID);\n\n\treadonly elementRef = inject(ElementRef);\n\n\treadonly layout = computed(() => this.inputComponentRef()?.filterPillLayout?.() || 'default');\n\n\t// The easy way to grab input component, will work in most cases\n\treadonly childInputComponentRef = contentChild(FILTER_PILL_INPUT_COMPONENT);\n\n\t// The harder way, because child has to register itself to the host, might become the default approach if this is required too much\n\t// (like when child isn't created when component inits or it's too deep)\n\treadonly registeredInputComponentRef = signal<FilterPillInputComponent | null>(null);\n\n\treadonly inputComponentRef = computed(() => this.registeredInputComponentRef() || this.childInputComponentRef());\n\n\treadonly popoverRef = viewChild(PopoverDirective);\n\n\tpillTpl: TemplateRef<unknown>;\n\n\treadonly labelTpl = computed(() => this.customLabelTpl() || this.defaultLabelTpl());\n\n\treadonly defaultLabelTpl = viewChild<TemplateRef<unknown>>('defaultLabel');\n\n\treadonly customLabelTpl = signal<TemplateRef<unknown> | null>(null);\n\n\treadonly name = input<string>();\n\n\treadonly optional = input(false, { transform: luBooleanAttribute });\n\n\t/** Groups the pill with the ones sharing the same value in the filter bar's optional filters list. Empty means no group. */\n\treadonly grouping = input('');\n\n\t/** Renders the pill as an icon-only button, its label being carried by a tooltip. */\n\treadonly iconOnly = input(false, { transform: luBooleanAttribute });\n\n\t/** Catches the click that closes the popover instead of letting it through to the page. */\n\treadonly backdrop = input(false, { transform: luBooleanAttribute });\n\n\treadonly disabled = computed(() => this.inputComponentRef()?.filterPillDisabled?.() || false);\n\n\tget isHiddenClass() {\n\t\treturn this.isHidden();\n\t}\n\n\treadonly displayed = model(false);\n\n\tprotected readonly isHidden = computed(() => this.optional() && !this.displayed());\n\n\tpopoverPositions: ConnectionPositionPair[] = [\n\t\tnew ConnectionPositionPair(\n\t\t\t{ originX: 'start', originY: 'bottom' },\n\t\t\t{\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'top',\n\t\t\t},\n\t\t\t-4,\n\t\t\t0,\n\t\t),\n\t\tnew ConnectionPositionPair(\n\t\t\t{ originX: 'start', originY: 'top' },\n\t\t\t{\n\t\t\t\toverlayX: 'start',\n\t\t\t\toverlayY: 'bottom',\n\t\t\t},\n\t\t\t-4,\n\t\t\t0,\n\t\t),\n\t];\n\n\treadonly label = input.required<string>();\n\n\treadonly placeholder = computed(() => this.placeholderOverride() ?? this.intl().placeholder);\n\treadonly placeholderOverride = input<string | null>(null, { alias: 'placeholder' });\n\n\treadonly icon = input<LuccaIcon>();\n\n\treadonly defaultIcon = computed<LuccaIcon>(() => this.inputComponentRef()?.getDefaultFilterPillIcon?.() ?? 'arrowChevronBottom');\n\n\treadonly displayedIcon = computed(() => this.icon() || this.defaultIcon());\n\n\treadonly shouldHideCombobox = computed(() => this.inputComponentRef()?.hideCombobox?.() ?? false);\n\n\treadonly inputIsEmpty = computed(() => this.inputComponentRef()?.isFilterPillEmpty() ?? true);\n\treadonly inputIsClearable = computed(() => this.inputComponentRef()?.isFilterPillClearable() ?? false);\n\n\treadonly shouldShowColon = computed(() => this.inputComponentRef()?.showColon?.() || !this.inputIsEmpty());\n\n\treadonly colonDisplay = computed(() => {\n\t\tif (!this.shouldShowColon()) {\n\t\t\treturn '';\n\t\t}\n\t\tif (this.#locale.split('-')[0] === 'fr') {\n\t\t\treturn ' :';\n\t\t}\n\t\treturn ':';\n\t});\n\n\treadonly modCheckbox = computed(() => this.layout() === 'checkable');\n\n\tget isModCheckbox() {\n\t\treturn this.modCheckbox();\n\t}\n\n\tget isFilled() {\n\t\treturn !this.inputIsEmpty();\n\t}\n\n\tget hideCombobox() {\n\t\treturn this.shouldHideCombobox();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst ref = this.inputComponentRef();\n\t\t\tif (ref) {\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tref.enableFilterPillMode?.();\n\t\t\t\t\tref.registerFilterPillClosePopover(this.closePopover);\n\t\t\t\t\tref.registerFilterPillUpdatePosition?.(this.updatePosition);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\t// When an optional filter pill has a value, it must be displayed\n\t\t\tif (this.optional() && !this.inputIsEmpty() && !untracked(this.displayed)) {\n\t\t\t\tthis.displayed.set(true);\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\t// When an optional filter pill is hidden, its value must be clear\n\t\t\tif (this.optional() && !this.displayed() && !untracked(this.inputIsEmpty)) {\n\t\t\t\tthis.clear();\n\t\t\t}\n\t\t});\n\t}\n\n\thostClick(): void {\n\t\tthis.inputComponentRef()?.onFilterPillClick?.();\n\t}\n\n\tpopoverOpened(): void {\n\t\tthis.inputComponentRef()?.onFilterPillOpened?.();\n\t}\n\n\tpopoverClosed(): void {\n\t\tthis.inputComponentRef()?.onFilterPillClosed?.();\n\t}\n\n\tclosePopover = () => {\n\t\t// `onFilterPillClosed` is notified by the `luPopoverClosed` binding, which also covers\n\t\t// closes the input never asked for (outside click, Escape handled by the popover)\n\t\tthis.popoverRef()?.close();\n\t};\n\n\tupdatePosition = () => {\n\t\tthis.popoverRef()?.updatePosition();\n\t};\n\n\tclear(): void {\n\t\tthis.inputComponentRef()?.clearFilterPillValue();\n\t}\n\n\tregisterInput(input: FilterPillInputComponent): void {\n\t\tthis.registeredInputComponentRef.set(input);\n\t}\n}\n","@if (!isHidden()) {\n\t@if (iconOnly()) {\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass=\"filterPill mod-button\"\n\t\t\t[attr.disabled]=\"disabled() ? 'disabled' : null\"\n\t\t\t[attr.aria-expanded]=\"popoverRef.opened()\"\n\t\t\t[luTooltip]=\"label()\"\n\t\t\tluTooltipOnlyForDisplay\n\t\t\t(keydown.arrowDown)=\"$event.preventDefault(); popoverRef.openPopover()\"\n\t\t\t(keydown.arrowUp)=\"$event.preventDefault(); popoverRef.openPopover()\"\n\t\t\t[luPopover2]=\"pillContent\"\n\t\t\t[luPopoverAnchor]=\"elementRef\"\n\t\t\t[luPopoverNoCloseButton]=\"true\"\n\t\t\t[luPopoverBackdrop]=\"backdrop()\"\n\t\t\t[customPositions]=\"popoverPositions\"\n\t\t\t(luPopoverOpened)=\"popoverOpened()\"\n\t\t\t(luPopoverClosed)=\"popoverClosed()\"\n\t\t\t#popoverRef=\"luPopover2\"\n\t\t>\n\t\t\t<lu-icon class=\"filterPill-icon\" [icon]=\"displayedIcon()\" [alt]=\"label()\" />\n\t\t</button>\n\t} @else if (layout() === \"default\") {\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass=\"filterPill\"\n\t\t\t[attr.disabled]=\"disabled() ? 'disabled' : null\"\n\t\t\t[class.is-filled]=\"!this.inputIsEmpty()\"\n\t\t\t[attr.aria-expanded]=\"popoverRef.opened()\"\n\t\t\t(keydown.arrowDown)=\"$event.preventDefault(); popoverRef.openPopover(true)\"\n\t\t\t(keydown.arrowUp)=\"$event.preventDefault(); popoverRef.openPopover(true)\"\n\t\t\t[luPopover2]=\"pillContent\"\n\t\t\t[luPopoverAnchor]=\"elementRef\"\n\t\t\t[luPopoverNoCloseButton]=\"true\"\n\t\t\t[luPopoverBackdrop]=\"backdrop()\"\n\t\t\t[customPositions]=\"popoverPositions\"\n\t\t\t(luPopoverOpened)=\"popoverOpened()\"\n\t\t\t(luPopoverClosed)=\"popoverClosed()\"\n\t\t\t#filterPillRef\n\t\t\t#popoverRef=\"luPopover2\"\n\t\t>\n\t\t\t<span class=\"filterPill-label\">\n\t\t\t\t<ng-container\n\t\t\t\t\t*ngTemplateOutlet=\"\n\t\t\t\t\t\tlabelTpl();\n\t\t\t\t\t\tcontext: { label: label(), isEmpty: inputIsEmpty(), placeholder: placeholder(), colon: colonDisplay() }\n\t\t\t\t\t\"\n\t\t\t\t/>\n\t\t\t</span>\n\t\t\t<span\n\t\t\t\tclass=\"filterPill-value\"\n\t\t\t\tluTooltip\n\t\t\t\tluTooltipWhenEllipsis\n\t\t\t\t[luTooltipDisabled]=\"inputIsEmpty()\"\n\t\t\t\t[luTooltipTriggerAnchor]=\"filterPillRef\"\n\t\t\t>\n\t\t\t\t<ng-container *ngTemplateOutlet=\"pillTpl; context: { label: label(), isEmpty: inputIsEmpty() }\" />\n\t\t\t\t@if (inputIsEmpty() && !disabled()) {\n\t\t\t\t\t{{ placeholder() }}\n\t\t\t\t}\n\t\t\t</span>\n\t\t\t<span class=\"filterPill-toggle\">\n\t\t\t\t<lu-icon [icon]=\"displayedIcon()\" size=\"S\" />\n\t\t\t</span>\n\t\t</button>\n\t\t@if (inputIsClearable()) {\n\t\t\t<lu-clear class=\"filterPill_clear\" (onClear)=\"clear(); popoverRef.opened() ? null : filterPillRef.focus()\">{{\n\t\t\t\tintl().clear\n\t\t\t}}</lu-clear>\n\t\t}\n\t} @else {\n\t\t<ng-container\n\t\t\t*ngTemplateOutlet=\"\n\t\t\t\tlabelTpl();\n\t\t\t\tcontext: { label: label(), isEmpty: inputIsEmpty(), placeholder: placeholder(), colon: colonDisplay() }\n\t\t\t\"\n\t\t/>\n\t}\n}\n<ng-template #pillContent>\n\t<div class=\"filterPill_popover-content popover-contentOptional\">\n\t\t<ng-content />\n\t</div>\n</ng-template>\n<ng-template #defaultLabel>{{ label() }}{{ colonDisplay() }}</ng-template>\n","import { InjectionToken } from '@angular/core';\nimport { FilterBarComponent } from './filter-bar.component';\n\nexport const LU_FILTER_BAR_INSTANCE = new InjectionToken<FilterBarComponent>('LU_FILTER_BAR_INSTANCE');\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, effect, forwardRef, input, Signal, signal, TemplateRef, viewChild, ViewEncapsulation, WritableSignal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { intlInputOptions, luBooleanAttribute } from '@lucca-front/ng/core';\nimport { LuOptionComparer, LuOptionDirective, LuOptionGroupByContext, LuOptionGrouping } from '@lucca-front/ng/core-select';\nimport { DividerComponent } from '@lucca-front/ng/divider';\nimport { LuMultiSelectInputComponent } from '@lucca-front/ng/multi-select';\nimport { ScrollBoxComponent } from '@lucca-front/ng/scroll-box';\nimport { FilterPillComponent } from '../filter-pill/filter-pill.component';\nimport { LU_FILTER_PILLS_TRANSLATIONS } from '../filter-pills.translate';\nimport { LU_FILTER_BAR_INSTANCE } from './filter-bar.token';\n\nlet nextId = 0;\n\n/** Case and accent insensitive, so searching `periode` matches a `Période` pill. */\nfunction normalizeSearch(value: string): string {\n\treturn value\n\t\t.normalize('NFD')\n\t\t.replace(/\\p{Diacritic}/gu, '')\n\t\t.toLowerCase();\n}\n\n/**\n * Shape of `lu-segmented-control-tabs` used by the filter bar, typed structurally\n * since importing the component would create a cycle between entrypoints\n */\nexport interface FilterBarSegmentedControlTabs {\n\treadonly tablistTemplate: Signal<TemplateRef<unknown>>;\n\treadonly externalTablist: WritableSignal<boolean>;\n}\n\n@Component({\n\tselector: 'lu-filter-bar',\n\timports: [DividerComponent, ScrollBoxComponent, FormsModule, NgTemplateOutlet, FilterPillComponent, LuMultiSelectInputComponent, LuOptionDirective],\n\ttemplateUrl: './filter-bar.component.html',\n\tstyleUrl: './filter-bar.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'filterBar',\n\t\t'[attr.aria-describedby]': 'manualApply() ? null : autoApplyAnnouncementId',\n\t},\n\tproviders: [\n\t\t{\n\t\t\tprovide: LU_FILTER_BAR_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => FilterBarComponent),\n\t\t},\n\t],\n})\nexport class FilterBarComponent {\n\treadonly intl = input(...intlInputOptions(LU_FILTER_PILLS_TRANSLATIONS));\n\n\t/**\n\t * Set when results only update after an explicit \"Apply\" action, to remove the hidden message\n\t * telling assistive technology users that the results list updates automatically\n\t */\n\treadonly manualApply = input(false, { transform: luBooleanAttribute });\n\n\t/**\n\t * Segmented control tabs whose tablist is displayed at the end of the filter bar, in its scroll box.\n\t * Its panels stay where the `lu-segmented-control-tabs` is declared.\n\t * The `luFilterPillAddonAfter` addon is displayed after the tabs, separated by a divider.\n\t */\n\treadonly segmentedControlTabs = input<FilterBarSegmentedControlTabs | null>(null);\n\n\treadonly autoApplyAnnouncementId = `filterBar-autoApplyAnnouncement-${nextId++}`;\n\n\treadonly addonBefore = signal<TemplateRef<unknown> | null>(null);\n\treadonly addonAfter = signal<TemplateRef<unknown> | null>(null);\n\n\treadonly pills = contentChildren(FilterPillComponent, { descendants: true });\n\n\treadonly optionalPills = computed(() => this.pills().filter((pill) => pill.optional()));\n\n\tprotected readonly displayedOptionalPills = computed(() => this.optionalPills().filter((pill) => pill.displayed()));\n\n\t/** Mirrors the search clue of the optional filters select, which filters its options on its own. */\n\tprotected readonly clue = signal('');\n\n\t/**\n\t * The panel builds a group out of each run of consecutive options, so the pills of a same group\n\t * have to be listed together. Groups keep the order of their first pill, ungrouped pills come first.\n\t */\n\tprotected readonly optionalPillOptions = computed(() => {\n\t\tconst clue = normalizeSearch(this.clue());\n\t\tconst pillsByGroup = new Map<string, FilterPillComponent[]>([['', []]]);\n\t\tthis.optionalPills()\n\t\t\t.filter((pill) => normalizeSearch(pill.label()).includes(clue))\n\t\t\t.forEach((pill) => {\n\t\t\t\tconst groupPills = pillsByGroup.get(pill.grouping());\n\t\t\t\tif (groupPills) {\n\t\t\t\t\tgroupPills.push(pill);\n\t\t\t\t} else {\n\t\t\t\t\tpillsByGroup.set(pill.grouping(), [pill]);\n\t\t\t\t}\n\t\t\t});\n\t\treturn [...pillsByGroup.values()].flat();\n\t});\n\n\t/** Optional pills are identified by their instance, they have no serializable value to compare. */\n\tprotected readonly optionalPillComparer: LuOptionComparer<FilterPillComponent> = (pill1, pill2) => pill1 === pill2;\n\n\t// `viewChild` can't be declared on an ES private field\n\tprivate readonly optionalPillsSelect = viewChild(LuMultiSelectInputComponent);\n\n\tprivate readonly optionalPillsGroupTpl = viewChild<TemplateRef<LuOptionGroupByContext<unknown, unknown>>>('optionalPillsGroup');\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\t// Grouping stays off until a pill declares one, so a bar without groups keeps a flat option list\n\t\t\tconst grouped = this.optionalPills().some((pill) => pill.grouping().length > 0);\n\t\t\tconst content = this.optionalPillsGroupTpl();\n\t\t\tconst grouping: LuOptionGrouping<unknown, unknown> | undefined = grouped && content ? { selector: (pill: unknown) => (pill as FilterPillComponent).grouping(), content } : undefined;\n\t\t\tthis.optionalPillsSelect()?.groupingSignal.set(grouping);\n\t\t});\n\n\t\teffect((onCleanup) => {\n\t\t\tconst segmentedControlTabs = this.segmentedControlTabs();\n\t\t\tif (segmentedControlTabs) {\n\t\t\t\tsegmentedControlTabs.externalTablist.set(true);\n\t\t\t\tonCleanup(() => segmentedControlTabs.externalTablist.set(false));\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected displayOptionalPills(pills: FilterPillComponent[]): void {\n\t\tthis.optionalPills().forEach((pill) => pill.displayed.set(pills.includes(pill)));\n\t}\n}\n","@if (!manualApply()) {\n\t<span class=\"pr-u-mask\" [attr.id]=\"autoApplyAnnouncementId\">{{ intl().autoApplyAnnouncement }}</span>\n}\n<lu-scroll-box class=\"filterBar-scrollBox\">\n\t<div class=\"filterBar-scrollBox-group\">\n\t\t@if (addonBefore()) {\n\t\t\t<ng-container *ngTemplateOutlet=\"addonBefore()\" />\n\n\t\t\t<lu-divider class=\"filterBar-divider\" />\n\t\t}\n\t\t@if (optionalPills().length > 0) {\n\t\t\t<lu-filter-pill [label]=\"intl().additionalFilters\" icon=\"filtersDescending\" iconOnly backdrop>\n\t\t\t\t<lu-multi-select\n\t\t\t\t\t#optionalPillsSelect\n\t\t\t\t\t[options]=\"optionalPillOptions()\"\n\t\t\t\t\t[optionComparer]=\"optionalPillComparer\"\n\t\t\t\t\t[ngModel]=\"displayedOptionalPills()\"\n\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t(ngModelChange)=\"displayOptionalPills($event)\"\n\t\t\t\t\t(clueChange)=\"clue.set($event)\"\n\t\t\t\t>\n\t\t\t\t\t<ng-container *luOption=\"let pill; select: optionalPillsSelect\">{{ pill.label() }}</ng-container>\n\t\t\t\t\t<ng-template #optionalPillsGroup let-group>{{ group.key }}</ng-template>\n\t\t\t\t</lu-multi-select>\n\t\t\t</lu-filter-pill>\n\t\t}\n\n\t\t<ng-content />\n\t</div>\n\n\t@if (segmentedControlTabs(); as segmentedControlTabs) {\n\t\t<div class=\"filterBar-scrollBox-tabs\">\n\t\t\t<ng-container *ngTemplateOutlet=\"segmentedControlTabs.tablistTemplate()\" />\n\t\t</div>\n\t\t<lu-divider class=\"filterBar-scrollBox-divider\" />\n\t}\n\t@if (addonAfter()) {\n\t\t<div class=\"filterBar-scrollBox-export\">\n\t\t\t<ng-container *ngTemplateOutlet=\"addonAfter()\" />\n\t\t</div>\n\t}\n</lu-scroll-box>\n","import { ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, computed, input, model, output, viewChild, ViewEncapsulation } from '@angular/core';\nimport { ButtonComponent } from '@lucca-front/ng/button';\nimport { intlInputOptions, IntlParamsPipe } from '@lucca-front/ng/core';\nimport { DropdownActionComponent, DropdownItemComponent, DropdownMenuComponent, LuDropdownTriggerDirective } from '@lucca-front/ng/dropdown';\nimport { FormLabelComponent } from '@lucca-front/ng/form-label';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { PopoverDirective } from '@lucca-front/ng/popover2';\nimport { LU_FILTER_PILLS_TRANSLATIONS } from '../filter-pills.translate';\n\n// Same convention as `lu-select` (see @lucca-front/ng/core-select). Duplicated locally because core-select\n// depends on filter-pills, so importing it here would introduce a circular dependency between entry points.\nexport type LuOptionComparer<T> = (a: T, b: T) => boolean;\nexport const filterViewDefaultOptionComparer: LuOptionComparer<unknown> = (a, b) => JSON.stringify(a) === JSON.stringify(b);\nexport const filterViewDefaultOptionKey: (option: unknown) => unknown = (option) => option;\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-filter-view-selector',\n\timports: [ButtonComponent, IconComponent, PopoverDirective, FormLabelComponent, LuDropdownTriggerDirective, DropdownMenuComponent, DropdownItemComponent, DropdownActionComponent, IntlParamsPipe],\n\ttemplateUrl: './filter-view-selector.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\thost: {\n\t\tclass: 'filterBar-viewSelector',\n\t\t'(keydown.arrowDown)': 'popoverRef()?.openPopover()',\n\t},\n})\nexport class FilterViewSelectorComponent<T> {\n\treadonly intl = input(...intlInputOptions(LU_FILTER_PILLS_TRANSLATIONS));\n\n\treadonly popoverRef = viewChild(PopoverDirective);\n\n\t/** The list of saved views to pick from. */\n\treadonly views = input.required<T[]>();\n\n\t/** The currently selected view (two-way bindable). */\n\treadonly selectedView = model<T | null>(null);\n\n\t/** How to display a view. Defaults to reading its `name` property. */\n\treadonly viewLabel = input<(view: T) => string>((view) => (view as { name: string }).name);\n\n\t/** How to compare two views for selection. Same convention as `lu-select` — defaults to a structural comparison. */\n\treadonly optionComparer = input<LuOptionComparer<T>>(filterViewDefaultOptionComparer);\n\n\t/** Stable identity used for `@for` tracking. Same convention as `lu-select` — defaults to identity. */\n\treadonly optionKey = input<(view: T) => unknown>(filterViewDefaultOptionKey);\n\n\t/** Emitted when the user asks to rename a view. */\n\treadonly renameView = output<T>();\n\n\t/** Emitted when the user asks to delete a view. */\n\treadonly deleteView = output<T>();\n\n\t/** Aligns the popover under the trigger, like the filter pills do. */\n\tprotected readonly popoverPositions: ConnectionPositionPair[] = [\n\t\tnew ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, -4, 0),\n\t\tnew ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, -4, 0),\n\t];\n\n\t/** Shared `name` so all the radios of a given selector belong to the same group. */\n\tprotected readonly groupName = `filterViewSelector-${nextId++}`;\n\n\tprotected readonly selectedLabel = computed(() => {\n\t\tconst selected = this.selectedView();\n\t\treturn selected != null ? this.viewLabel()(selected) : null;\n\t});\n\n\tprotected isSelected(view: T): boolean {\n\t\tconst selected = this.selectedView();\n\t\tif (selected == null) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this.optionComparer()(selected, view);\n\t}\n\n\tprotected inputId(index: number): string {\n\t\treturn `${this.groupName}-${index}`;\n\t}\n\n\tprotected viewOptionsLabel(view: T): string {\n\t\treturn `${this.intl().viewOptions} : ${this.viewLabel()(view)}`;\n\t}\n\n\tprotected selectView(view: T): void {\n\t\tthis.selectedView.set(view);\n\t\tthis.popoverRef()?.close();\n\t}\n}\n","<button\n\ttype=\"button\"\n\tluButton=\"outlined\"\n\tsize=\"S\"\n\tdisclosure\n\tluPopoverNoCloseButton\n\t[luPopover2]=\"viewsPopover\"\n\t[customPositions]=\"popoverPositions\"\n>\n\t@if (selectedLabel(); as label) {\n\t\t<span class=\"pr-u-mask\">{{ intl().selectView }} - </span>\n\t\t{{ label }}\n\t} @else {\n\t\t{{ intl().selectView }}\n\t}\n\t<lu-icon icon=\"arrowChevronBottom\" />\n</button>\n\n<ng-template #viewsPopover>\n\t<div class=\"filterPill_popover-content popover-contentOptional\">\n\t\t@for (view of views(); track optionKey()(view); let index = $index) {\n\t\t\t<div class=\"filterPill_popover-content-option\">\n\t\t\t\t<label luFormLabel [attr.for]=\"inputId(index)\">{{ viewLabel()(view) }}</label>\n\t\t\t\t<span class=\"filterPill_popover-content-option-input\">\n\t\t\t\t\t<input type=\"radio\" [attr.id]=\"inputId(index)\" [attr.name]=\"groupName\" [checked]=\"isSelected(view)\" (change)=\"selectView(view)\" />\n\t\t\t\t</span>\n\t\t\t\t<button type=\"button\" class=\"filterPill_popover-content-option-actions\" size=\"XS\" luButton=\"ghost\" [luDropdown]=\"optionsDropdown\">\n\t\t\t\t\t<lu-icon icon=\"menuDots\" [alt]=\"intl().viewOptions | intlParams: { viewName: viewLabel()(view) }\" />\n\t\t\t\t</button>\n\n\t\t\t\t<ng-template #optionsDropdown>\n\t\t\t\t\t<lu-dropdown-menu>\n\t\t\t\t\t\t<lu-dropdown-item>\n\t\t\t\t\t\t\t<button type=\"button\" lu-dropdown-action (click)=\"renameView.emit(view); popoverRef()?.close()\">\n\t\t\t\t\t\t\t\t<lu-icon icon=\"edit\" />\n\t\t\t\t\t\t\t\t{{ intl().renameView }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</lu-dropdown-item>\n\t\t\t\t\t\t<lu-dropdown-item>\n\t\t\t\t\t\t\t<button type=\"button\" lu-dropdown-action critical (click)=\"deleteView.emit(view); popoverRef()?.close()\">\n\t\t\t\t\t\t\t\t<lu-icon icon=\"trash\" />\n\t\t\t\t\t\t\t\t{{ intl().deleteView }}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</lu-dropdown-item>\n\t\t\t\t\t</lu-dropdown-menu>\n\t\t\t\t</ng-template>\n\t\t\t</div>\n\t\t}\n\t</div>\n</ng-template>\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { FilterBarComponent } from './filter-bar.component';\n\n@Directive({\n\tselector: '[luFilterPillAddonBefore]',\n})\nexport class FilterPillAddonBeforeDirective {\n\tconstructor() {\n\t\tinject(FilterBarComponent).addonBefore.set(inject(TemplateRef));\n\t}\n\n\tpublic static ngTemplateContextGuard(_dir: FilterPillAddonBeforeDirective, _ctx: unknown): _ctx is void {\n\t\treturn true;\n\t}\n}\n\n@Directive({\n\tselector: '[luFilterPillAddonAfter]',\n})\nexport class FilterPillAddonAfterDirective {\n\tconstructor() {\n\t\tinject(FilterBarComponent).addonAfter.set(inject(TemplateRef));\n\t}\n\n\tpublic static ngTemplateContextGuard(_dir: FilterPillAddonAfterDirective, _ctx: unknown): _ctx is void {\n\t\treturn true;\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId"],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, input, ChangeDetectionStrategy, ViewEncapsulation, Component, model, contentChildren, viewChildren, computed, forwardRef } from '@angular/core';
3
- import { ReactiveFormsModule } from '@angular/forms';
2
+ import { InjectionToken, inject, input, computed, ChangeDetectionStrategy, ViewEncapsulation, Component, model, contentChildren, viewChildren, viewChild, signal, forwardRef } from '@angular/core';
4
3
  import { luBooleanAttribute, PortalDirective } from '@lucca-front/ng/core';
4
+ import { NgTemplateOutlet } from '@angular/common';
5
+ import { ReactiveFormsModule } from '@angular/forms';
5
6
  import * as i1 from '@lucca-front/ng/forms';
6
7
  import { NoopValueAccessorDirective } from '@lucca-front/ng/forms';
8
+ import { IconComponent } from '@lucca-front/ng/icon';
9
+ import { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';
7
10
 
8
11
  const LU_SEGMENTEDCONTROLTABS_INSTANCE = new InjectionToken('LU_SEGMENTEDCONTROLTABS_INSTANCE');
9
12
 
@@ -13,6 +16,24 @@ class SegmentedControlTabsPanelComponent {
13
16
  this.segmentedControlTabsRef = inject(LU_SEGMENTEDCONTROLTABS_INSTANCE);
14
17
  this.label = input(/* @ts-ignore */
15
18
  ...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
19
+ /**
20
+ * Icon displayed before the tab label
21
+ */
22
+ this.icon = input(/* @ts-ignore */
23
+ ...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
24
+ /**
25
+ * Hide the tab label, while keeping it in DOM for screen readers, and display it as a tooltip on hover and focus of the tab.
26
+ * Requires a text label, ignored otherwise.
27
+ */
28
+ this.hiddenLabel = input(false, { ...(ngDevMode ? { debugName: "hiddenLabel" } : /* istanbul ignore next */ {}), transform: luBooleanAttribute });
29
+ /**
30
+ * Text label of a tab whose label is hidden, null otherwise
31
+ */
32
+ this.hiddenLabelText = computed(() => {
33
+ const label = this.label();
34
+ return this.hiddenLabel() && typeof label === 'string' ? label : null;
35
+ }, /* @ts-ignore */
36
+ ...(ngDevMode ? [{ debugName: "hiddenLabelText" }] : /* istanbul ignore next */ []));
16
37
  this.value = input.required(/* @ts-ignore */
17
38
  ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
18
39
  this.id = nextId$1++;
@@ -20,7 +41,7 @@ class SegmentedControlTabsPanelComponent {
20
41
  this.labelId = `tab${this.id}`;
21
42
  }
22
43
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SegmentedControlTabsPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
23
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SegmentedControlTabsPanelComponent, isStandalone: true, selector: "lu-segmented-control-tabs-panel", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "tabpanel" }, properties: { "tabindex": "0", "class.is-active": "segmentedControlTabsRef.active() === value()", "id": "panelId", "attr.aria-labelledby": "labelId" }, classAttribute: "segmentedControl_panel" }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: SegmentedControlTabsPanelComponent, isStandalone: true, selector: "lu-segmented-control-tabs-panel", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, hiddenLabel: { classPropertyName: "hiddenLabel", publicName: "hiddenLabel", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "tabpanel" }, properties: { "tabindex": "0", "class.is-active": "segmentedControlTabsRef.active() === value()", "id": "panelId", "attr.aria-labelledby": "labelId" }, classAttribute: "segmentedControl_panel" }, ngImport: i0, template: '<ng-content />', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
24
45
  }
25
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SegmentedControlTabsPanelComponent, decorators: [{
26
47
  type: Component,
@@ -38,7 +59,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
38
59
  '[attr.aria-labelledby]': 'labelId',
39
60
  },
40
61
  }]
41
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
62
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], hiddenLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "hiddenLabel", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }] } });
42
63
 
43
64
  let nextId = 0;
44
65
  class SegmentedControlTabsComponent {
@@ -63,6 +84,16 @@ class SegmentedControlTabsComponent {
63
84
  ...(ngDevMode ? [{ debugName: "tabs" }] : /* istanbul ignore next */ []));
64
85
  this.tabButtons = viewChildren('tabButton', /* @ts-ignore */
65
86
  ...(ngDevMode ? [{ debugName: "tabButtons" }] : /* istanbul ignore next */ []));
87
+ /**
88
+ * Tablist template, rendered by the component itself unless a host (e.g. `lu-filter-bar`) renders it elsewhere
89
+ */
90
+ this.tablistTemplate = viewChild.required('tablist', /* @ts-ignore */
91
+ ...(ngDevMode ? [{ debugName: "tablistTemplate" }] : /* istanbul ignore next */ []));
92
+ /**
93
+ * Set by a host rendering the tablist itself, so the component only renders its panels
94
+ */
95
+ this.externalTablist = signal(false, /* @ts-ignore */
96
+ ...(ngDevMode ? [{ debugName: "externalTablist" }] : /* istanbul ignore next */ []));
66
97
  this.currentIndex = computed(() => this.tabs().findIndex((tab) => tab.value() === this.active()), /* @ts-ignore */
67
98
  ...(ngDevMode ? [{ debugName: "currentIndex" }] : /* istanbul ignore next */ []));
68
99
  }
@@ -101,17 +132,17 @@ class SegmentedControlTabsComponent {
101
132
  provide: LU_SEGMENTEDCONTROLTABS_INSTANCE,
102
133
  useExisting: forwardRef(() => SegmentedControlTabsComponent),
103
134
  },
104
- ], queries: [{ propertyName: "tabs", predicate: SegmentedControlTabsPanelComponent, isSignal: true }], viewQueries: [{ propertyName: "tabButtons", predicate: ["tabButton"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.NoopValueAccessorDirective }], ngImport: i0, template: "<ul class=\"segmentedControl\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\" [class.mod-S]=\"small()\" [class.mod-vertical]=\"vertical()\">\n\t@for (panel of tabs(); track panel.id) {\n\t\t<li class=\"segmentedControl-item\" role=\"presentation\">\n\t\t\t<button\n\t\t\t\t#tabButton\n\t\t\t\tclass=\"segmentedControl-item-action\"\n\t\t\t\ttype=\"button\"\n\t\t\t\trole=\"tab\"\n\t\t\t\t[attr.id]=\"panel.labelId\"\n\t\t\t\t[attr.aria-controls]=\"panel.panelId\"\n\t\t\t\t[attr.aria-selected]=\"active() === panel.value()\"\n\t\t\t\t[attr.tabindex]=\"active() !== panel.value() ? '-1' : null\"\n\t\t\t\t(click)=\"active.set(panel.value())\"\n\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); previous()\"\n\t\t\t\t(keydown.arrowup)=\"$event.preventDefault(); previous()\"\n\t\t\t\t(keydown.arrowright)=\"$event.preventDefault(); next()\"\n\t\t\t\t(keydown.arrowdown)=\"$event.preventDefault(); next()\"\n\t\t\t\t(keydown.home)=\"$event.preventDefault(); first()\"\n\t\t\t\t(keydown.end)=\"$event.preventDefault(); last()\"\n\t\t\t>\n\t\t\t\t@if (panel.label(); as label) {\n\t\t\t\t\t<ng-container *luPortal=\"label\" />\n\t\t\t\t}\n\t\t\t</button>\n\t\t</li>\n\t}\n</ul>\n<ng-content />\n", styles: ["@layer components{.segmentedControl,.viewTabs{--components-segmentedControl-borderRadius: var(--pr-t-border-radius-default);--components-segmentedControl-padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);--components-segmentedControl-font: var(--pr-t-font-body-M);--components-segmentedControl-background: transparent;--components-segmentedControl-shadow: none;--components-segmentedControl-color: var(--pr-t-color-text);--components-segmentedControl-cursor: pointer;--components-segmentedControl-dividerInset: var(--pr-t-spacings-100);--components-segmentedControl-direction: row;--components-segmentedControl-width: fit-content;--components-segmentedControl-zIndex: 0;--components-segmentedControl-wrap: wrap;--components-segmentedControl-whiteSpace: normal;padding:0;margin:0;list-style-type:none;display:flex;flex-wrap:var(--components-segmentedControl-wrap);inline-size:var(--components-segmentedControl-width);flex-direction:var(--components-segmentedControl-direction);box-shadow:0 0 0 var(--commons-divider-width) var(--palettes-neutral-100);border-radius:var(--components-segmentedControl-borderRadius);background-color:var(--palettes-neutral-0);font:var(--components-segmentedControl-font);gap:var(--commons-divider-width);white-space:var(--components-segmentedControl-whiteSpace)}.segmentedControl .button.mod-disclosure,.viewTabs .button.mod-disclosure{margin-block:calc(var(--pr-t-spacings-25) * -1)}.segmentedControl .button.mod-disclosure:focus-visible,.viewTabs .button.mod-disclosure:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:0}.segmentedControl .button.mod-disclosure:last-child,.viewTabs .button.mod-disclosure:last-child{margin-inline-end:calc(var(--pr-t-spacings-100) * -1)}.segmentedControl-item-input{border:0;clip-path:rect(1px 1px 1px 1px);margin:-1px;overflow:hidden;padding:0;position:absolute;block-size:1px;inline-size:1px;white-space:nowrap;contain:paint}.segmentedControl-item-input:focus-visible+.segmentedControl-item-action{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.segmentedControl-item,.viewTabs-item{flex-grow:1;position:relative;z-index:1}.segmentedControl-item:before,.segmentedControl-item:after,.viewTabs-item:before,.viewTabs-item:after{content:\"\";border-width:0;inset:var(--components-segmentedControl-dividerInset);border-color:var(--palettes-neutral-100);position:absolute;border-style:solid}.segmentedControl-item:before,.viewTabs-item:before{inset-inline-end:calc(var(--commons-divider-width) * -1);border-inline-start-width:var(--commons-divider-width);inset-inline-start:auto}.segmentedControl-item:after,.viewTabs-item:after{inset-block-end:calc(var(--commons-divider-width) * -1);border-block-start-width:var(--commons-divider-width);inset-block-start:auto}.segmentedControl-item-action,.viewTabs-item-tab{inline-size:100%;border:0;margin:0;padding:var(--components-segmentedControl-padding);background-color:var(--components-segmentedControl-background);box-shadow:var(--components-segmentedControl-shadow);border-radius:var(--components-segmentedControl-borderRadius);gap:var(--pr-t-spacings-100);color:var(--components-segmentedControl-color);text-align:center;justify-content:center;display:flex;align-items:center;position:relative;cursor:var(--components-segmentedControl-cursor);z-index:var(--components-segmentedControl-zIndex);font:inherit;transition-property:box-shadow;transition-duration:var(--commons-animations-durations-fast)}.segmentedControl-item-action:focus-visible,.viewTabs-item-tab:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.segmentedControl-item-action:hover,.viewTabs-item-tab:hover{--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-400, var(--palettes-product-400)), var(--pr-t-elevation-shadow-raised);--components-segmentedControl-zIndex: 1}.segmentedControl-item-action:active,.viewTabs-item-tab:active{--components-segmentedControl-background: var(--palettes-neutral-0);--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-500, var(--palettes-product-500)), var(--pr-t-elevation-shadow-raised)}.segmentedControl_panel,.viewTabs_panel{display:var(--components-segmentedControl-display, block);border-radius:var(--pr-t-border-radius-default)}.segmentedControl_panel:focus-visible,.viewTabs_panel:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px}}@layer mods{.segmentedControl.mod-S,.viewTabs.mod-S{--components-segmentedControl-padding: var(--pr-t-spacings-75) var(--pr-t-spacings-150);--components-segmentedControl-font: var(--pr-t-font-body-S);--components-segmentedControl-dividerInset: var(--pr-t-spacings-75)}.segmentedControl.mod-S .numericBadge,.viewTabs.mod-S .numericBadge{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: var(--pr-t-border-radius-small);--components-numericBadge-font: var(--pr-t-font-body-XS)}.segmentedControl.mod-vertical,.viewTabs.mod-vertical{--components-segmentedControl-direction: column;--components-segmentedControl-width: auto}@media not all and (min-width:30em){.segmentedControl,.viewTabs{--components-segmentedControl-direction: column;--components-segmentedControl-width: auto}}}@layer mods{.segmentedControl-item-input:checked+.segmentedControl-item-action,.segmentedControl-item-action[aria-selected=true],.segmentedControl-item-input:checked+.viewTabs-item-tab,.viewTabs-item-tab[aria-selected=true]{--components-segmentedControl-background: var(--palettes-50, var(--palettes-product-50));--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-500, var(--palettes-product-500));--components-segmentedControl-color: var(--palettes-800, var(--palettes-product-800));--components-segmentedControl-cursor: default;--components-segmentedControl-backgroundContent: none;--components-segmentedControl-zIndex: 1}.segmentedControl-item-input:checked+.segmentedControl-item-action .numericBadge,.segmentedControl-item-action[aria-selected=true] .numericBadge,.segmentedControl-item-input:checked+.viewTabs-item-tab .numericBadge,.viewTabs-item-tab[aria-selected=true] .numericBadge{--components-numericBadge-background: var(--palettes-200, var(--palettes-product-200));--components-numericBadge-color: var(--palettes-800, var(--palettes-product-800))}.segmentedControl-item-input:checked+.segmentedControl-item-action .numericBadge.is-loading,.segmentedControl-item-action[aria-selected=true] .numericBadge.is-loading,.segmentedControl-item-input:checked+.viewTabs-item-tab .numericBadge.is-loading,.viewTabs-item-tab[aria-selected=true] .numericBadge.is-loading{--components-numericBadge-loadingColor: var(--palettes-500, var(--palettes-product-500));--components-numericBadge-color: transparent}.segmentedControl-item-action:disabled,.segmentedControl-item-input:disabled~.segmentedControl-item-action{--components-segmentedControl-background: var(--palettes-neutral-100);--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-neutral-200);--components-segmentedControl-color: var(--pr-t-color-text-disabled);--components-segmentedControl-cursor: default}.segmentedControl-item-action:disabled .numericBadge,.segmentedControl-item-input:disabled~.segmentedControl-item-action .numericBadge{--components-numericBadge-background: var(--palettes-neutral-200);--components-numericBadge-color: var(--palettes-neutral-500)}.segmentedControl-item-action:disabled .numericBadge.is-loading,.segmentedControl-item-input:disabled~.segmentedControl-item-action .numericBadge.is-loading{--components-numericBadge-color: transparent}.segmentedControl_panel:not(.is-active,.active),.viewTabs_panel:not(.is-active,.active){--components-segmentedControl-display: none}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
135
+ ], queries: [{ propertyName: "tabs", predicate: SegmentedControlTabsPanelComponent, isSignal: true }], viewQueries: [{ propertyName: "tabButtons", predicate: ["tabButton"], descendants: true, isSignal: true }, { propertyName: "tablistTemplate", first: true, predicate: ["tablist"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.NoopValueAccessorDirective }], ngImport: i0, template: "@if (!externalTablist()) {\n\t<ng-container *ngTemplateOutlet=\"tablistTemplate()\" />\n}\n<ng-content />\n\n<ng-template #tablist>\n\t<ul class=\"segmentedControl\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\" [class.mod-S]=\"small()\" [class.mod-vertical]=\"vertical()\">\n\t\t@for (panel of tabs(); track panel.id) {\n\t\t\t<li class=\"segmentedControl-item\" role=\"presentation\">\n\t\t\t\t<button\n\t\t\t\t\t#tabButton\n\t\t\t\t\tclass=\"segmentedControl-item-action\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t[attr.id]=\"panel.labelId\"\n\t\t\t\t\t[attr.aria-controls]=\"panel.panelId\"\n\t\t\t\t\t[attr.aria-selected]=\"active() === panel.value()\"\n\t\t\t\t\t[attr.tabindex]=\"active() !== panel.value() ? '-1' : null\"\n\t\t\t\t\t(click)=\"active.set(panel.value())\"\n\t\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); previous()\"\n\t\t\t\t\t(keydown.arrowup)=\"$event.preventDefault(); previous()\"\n\t\t\t\t\t(keydown.arrowright)=\"$event.preventDefault(); next()\"\n\t\t\t\t\t(keydown.arrowdown)=\"$event.preventDefault(); next()\"\n\t\t\t\t\t(keydown.home)=\"$event.preventDefault(); first()\"\n\t\t\t\t\t(keydown.end)=\"$event.preventDefault(); last()\"\n\t\t\t\t>\n\t\t\t\t\t@if (panel.icon(); as icon) {\n\t\t\t\t\t\t<lu-icon [icon]=\"icon\" />\n\t\t\t\t\t}\n\t\t\t\t\t@if (panel.hiddenLabelText(); as hiddenLabelText) {\n\t\t\t\t\t\t<span class=\"pr-u-mask\">{{ hiddenLabelText }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"segmentedControl-item-action-tooltip\"\n\t\t\t\t\t\t\t[luTooltip]=\"hiddenLabelText\"\n\t\t\t\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t\t\t\t\t[luTooltipAnchor]=\"tabButton\"\n\t\t\t\t\t\t\t[luTooltipTriggerAnchor]=\"tabButton\"\n\t\t\t\t\t\t></span>\n\t\t\t\t\t} @else if (panel.label(); as label) {\n\t\t\t\t\t\t<ng-container *luPortal=\"label\" />\n\t\t\t\t\t}\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t}\n\t</ul>\n</ng-template>\n", styles: ["@layer components{.segmentedControl,.viewTabs{--components-segmentedControl-borderRadius: var(--pr-t-border-radius-default);--components-segmentedControl-padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);--components-segmentedControl-font: var(--pr-t-font-body-M);--components-segmentedControl-background: transparent;--components-segmentedControl-shadow: none;--components-segmentedControl-color: var(--pr-t-color-text);--components-segmentedControl-cursor: pointer;--components-segmentedControl-dividerInset: var(--pr-t-spacings-100);--components-segmentedControl-direction: row;--components-segmentedControl-width: fit-content;--components-segmentedControl-zIndex: 0;--components-segmentedControl-wrap: wrap;--components-segmentedControl-whiteSpace: normal;padding:0;margin:0;list-style-type:none;display:flex;flex-wrap:var(--components-segmentedControl-wrap);inline-size:var(--components-segmentedControl-width);flex-direction:var(--components-segmentedControl-direction);box-shadow:0 0 0 var(--commons-divider-width) var(--palettes-neutral-100);border-radius:var(--components-segmentedControl-borderRadius);background-color:var(--palettes-neutral-0);font:var(--components-segmentedControl-font);gap:var(--commons-divider-width);white-space:var(--components-segmentedControl-whiteSpace)}.segmentedControl .button.mod-disclosure,.viewTabs .button.mod-disclosure{margin-block:calc(var(--pr-t-spacings-25) * -1)}.segmentedControl .button.mod-disclosure:focus-visible,.viewTabs .button.mod-disclosure:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:0}.segmentedControl .button.mod-disclosure:last-child,.viewTabs .button.mod-disclosure:last-child{margin-inline-end:calc(var(--pr-t-spacings-100) * -1)}.segmentedControl-item-input{border:0;clip-path:rect(1px 1px 1px 1px);margin:-1px;overflow:hidden;padding:0;position:absolute;block-size:1px;inline-size:1px;white-space:nowrap;contain:paint}.segmentedControl-item-input:focus-visible+.segmentedControl-item-action{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.segmentedControl-item,.viewTabs-item{flex-grow:1;position:relative;z-index:1}.segmentedControl-item:before,.segmentedControl-item:after,.viewTabs-item:before,.viewTabs-item:after{content:\"\";border-width:0;inset:var(--components-segmentedControl-dividerInset);border-color:var(--palettes-neutral-100);position:absolute;border-style:solid}.segmentedControl-item:before,.viewTabs-item:before{inset-inline-end:calc(var(--commons-divider-width) * -1);border-inline-start-width:var(--commons-divider-width);inset-inline-start:auto}.segmentedControl-item:after,.viewTabs-item:after{inset-block-end:calc(var(--commons-divider-width) * -1);border-block-start-width:var(--commons-divider-width);inset-block-start:auto}.segmentedControl-item-action,.viewTabs-item-tab{inline-size:100%;border:0;margin:0;padding:var(--components-segmentedControl-padding);background-color:var(--components-segmentedControl-background);box-shadow:var(--components-segmentedControl-shadow);border-radius:var(--components-segmentedControl-borderRadius);gap:var(--pr-t-spacings-100);color:var(--components-segmentedControl-color);text-align:center;justify-content:center;display:flex;align-items:center;position:relative;cursor:var(--components-segmentedControl-cursor);z-index:var(--components-segmentedControl-zIndex);font:inherit;transition-property:box-shadow;transition-duration:var(--commons-animations-durations-fast)}.segmentedControl-item-action:focus-visible,.viewTabs-item-tab:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.segmentedControl-item-action:hover,.viewTabs-item-tab:hover{--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-400, var(--palettes-product-400)), var(--pr-t-elevation-shadow-raised);--components-segmentedControl-zIndex: 1}.segmentedControl-item-action:active,.viewTabs-item-tab:active{--components-segmentedControl-background: var(--palettes-neutral-0);--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-500, var(--palettes-product-500)), var(--pr-t-elevation-shadow-raised)}.segmentedControl-item-action-tooltip{display:contents}.segmentedControl_panel,.viewTabs_panel{display:var(--components-segmentedControl-display, block);border-radius:var(--pr-t-border-radius-default)}.segmentedControl_panel:focus-visible,.viewTabs_panel:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px}}@layer mods{.segmentedControl.mod-S,.viewTabs.mod-S{--icon-size: 1.25rem;--components-segmentedControl-padding: var(--pr-t-spacings-75) var(--pr-t-spacings-150);--components-segmentedControl-font: var(--pr-t-font-body-S);--components-segmentedControl-dividerInset: var(--pr-t-spacings-75)}.segmentedControl.mod-S .numericBadge,.viewTabs.mod-S .numericBadge{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: var(--pr-t-border-radius-small);--components-numericBadge-font: var(--pr-t-font-body-XS)}.segmentedControl.mod-vertical,.viewTabs.mod-vertical{--components-segmentedControl-direction: column;--components-segmentedControl-width: auto}@media not all and (min-width:30em){.segmentedControl,.viewTabs{--components-segmentedControl-direction: column;--components-segmentedControl-width: auto}}}@layer mods{.segmentedControl-item-input:checked+.segmentedControl-item-action,.segmentedControl-item-action[aria-selected=true],.segmentedControl-item-input:checked+.viewTabs-item-tab,.viewTabs-item-tab[aria-selected=true]{--components-segmentedControl-background: var(--palettes-50, var(--palettes-product-50));--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-500, var(--palettes-product-500));--components-segmentedControl-color: var(--palettes-800, var(--palettes-product-800));--components-segmentedControl-cursor: default;--components-segmentedControl-backgroundContent: none;--components-segmentedControl-zIndex: 1}.segmentedControl-item-input:checked+.segmentedControl-item-action .numericBadge,.segmentedControl-item-action[aria-selected=true] .numericBadge,.segmentedControl-item-input:checked+.viewTabs-item-tab .numericBadge,.viewTabs-item-tab[aria-selected=true] .numericBadge{--components-numericBadge-background: var(--palettes-200, var(--palettes-product-200));--components-numericBadge-color: var(--palettes-800, var(--palettes-product-800))}.segmentedControl-item-input:checked+.segmentedControl-item-action .numericBadge.is-loading,.segmentedControl-item-action[aria-selected=true] .numericBadge.is-loading,.segmentedControl-item-input:checked+.viewTabs-item-tab .numericBadge.is-loading,.viewTabs-item-tab[aria-selected=true] .numericBadge.is-loading{--components-numericBadge-loadingColor: var(--palettes-500, var(--palettes-product-500));--components-numericBadge-color: transparent}.segmentedControl-item-action:disabled,.segmentedControl-item-input:disabled~.segmentedControl-item-action{--components-segmentedControl-background: var(--palettes-neutral-100);--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-neutral-200);--components-segmentedControl-color: var(--pr-t-color-text-disabled);--components-segmentedControl-cursor: default}.segmentedControl-item-action:disabled .numericBadge,.segmentedControl-item-input:disabled~.segmentedControl-item-action .numericBadge{--components-numericBadge-background: var(--palettes-neutral-200);--components-numericBadge-color: var(--palettes-neutral-500)}.segmentedControl-item-action:disabled .numericBadge.is-loading,.segmentedControl-item-input:disabled~.segmentedControl-item-action .numericBadge.is-loading{--components-numericBadge-color: transparent}.segmentedControl_panel:not(.is-active,.active),.viewTabs_panel:not(.is-active,.active){--components-segmentedControl-display: none}}\n"], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: LuTooltipTriggerDirective, selector: "[luTooltip],[prTooltip]", inputs: ["luTooltip", "prTooltip", "luTooltipEnterDelay", "prTooltipEnterDelay", "luTooltipLeaveDelay", "prTooltipLeaveDelay", "luTooltipDisabled", "prTooltipDisabled", "luTooltipOnlyForDisplay", "prTooltipOnlyForDisplay", "luTooltipPosition", "prTooltipPosition", "luTooltipWhenEllipsis", "prTooltipWhenEllipsis", "luTooltipAnchor", "prTooltipAnchor", "luTooltipTriggerAnchor", "prTooltipTriggerAnchor", "id"], exportAs: ["luTooltip"] }, { kind: "component", type: IconComponent, selector: "lu-icon, pr-icon", inputs: ["icon", "alt", "size", "color", "AI"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
105
136
  }
106
137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SegmentedControlTabsComponent, decorators: [{
107
138
  type: Component,
108
- args: [{ selector: 'lu-segmented-control-tabs', encapsulation: ViewEncapsulation.None, imports: [ReactiveFormsModule, PortalDirective], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [NoopValueAccessorDirective], providers: [
139
+ args: [{ selector: 'lu-segmented-control-tabs', encapsulation: ViewEncapsulation.None, imports: [ReactiveFormsModule, PortalDirective, NgTemplateOutlet, LuTooltipTriggerDirective, IconComponent], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [NoopValueAccessorDirective], providers: [
109
140
  {
110
141
  provide: LU_SEGMENTEDCONTROLTABS_INSTANCE,
111
142
  useExisting: forwardRef(() => SegmentedControlTabsComponent),
112
143
  },
113
- ], template: "<ul class=\"segmentedControl\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\" [class.mod-S]=\"small()\" [class.mod-vertical]=\"vertical()\">\n\t@for (panel of tabs(); track panel.id) {\n\t\t<li class=\"segmentedControl-item\" role=\"presentation\">\n\t\t\t<button\n\t\t\t\t#tabButton\n\t\t\t\tclass=\"segmentedControl-item-action\"\n\t\t\t\ttype=\"button\"\n\t\t\t\trole=\"tab\"\n\t\t\t\t[attr.id]=\"panel.labelId\"\n\t\t\t\t[attr.aria-controls]=\"panel.panelId\"\n\t\t\t\t[attr.aria-selected]=\"active() === panel.value()\"\n\t\t\t\t[attr.tabindex]=\"active() !== panel.value() ? '-1' : null\"\n\t\t\t\t(click)=\"active.set(panel.value())\"\n\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); previous()\"\n\t\t\t\t(keydown.arrowup)=\"$event.preventDefault(); previous()\"\n\t\t\t\t(keydown.arrowright)=\"$event.preventDefault(); next()\"\n\t\t\t\t(keydown.arrowdown)=\"$event.preventDefault(); next()\"\n\t\t\t\t(keydown.home)=\"$event.preventDefault(); first()\"\n\t\t\t\t(keydown.end)=\"$event.preventDefault(); last()\"\n\t\t\t>\n\t\t\t\t@if (panel.label(); as label) {\n\t\t\t\t\t<ng-container *luPortal=\"label\" />\n\t\t\t\t}\n\t\t\t</button>\n\t\t</li>\n\t}\n</ul>\n<ng-content />\n", styles: ["@layer components{.segmentedControl,.viewTabs{--components-segmentedControl-borderRadius: var(--pr-t-border-radius-default);--components-segmentedControl-padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);--components-segmentedControl-font: var(--pr-t-font-body-M);--components-segmentedControl-background: transparent;--components-segmentedControl-shadow: none;--components-segmentedControl-color: var(--pr-t-color-text);--components-segmentedControl-cursor: pointer;--components-segmentedControl-dividerInset: var(--pr-t-spacings-100);--components-segmentedControl-direction: row;--components-segmentedControl-width: fit-content;--components-segmentedControl-zIndex: 0;--components-segmentedControl-wrap: wrap;--components-segmentedControl-whiteSpace: normal;padding:0;margin:0;list-style-type:none;display:flex;flex-wrap:var(--components-segmentedControl-wrap);inline-size:var(--components-segmentedControl-width);flex-direction:var(--components-segmentedControl-direction);box-shadow:0 0 0 var(--commons-divider-width) var(--palettes-neutral-100);border-radius:var(--components-segmentedControl-borderRadius);background-color:var(--palettes-neutral-0);font:var(--components-segmentedControl-font);gap:var(--commons-divider-width);white-space:var(--components-segmentedControl-whiteSpace)}.segmentedControl .button.mod-disclosure,.viewTabs .button.mod-disclosure{margin-block:calc(var(--pr-t-spacings-25) * -1)}.segmentedControl .button.mod-disclosure:focus-visible,.viewTabs .button.mod-disclosure:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:0}.segmentedControl .button.mod-disclosure:last-child,.viewTabs .button.mod-disclosure:last-child{margin-inline-end:calc(var(--pr-t-spacings-100) * -1)}.segmentedControl-item-input{border:0;clip-path:rect(1px 1px 1px 1px);margin:-1px;overflow:hidden;padding:0;position:absolute;block-size:1px;inline-size:1px;white-space:nowrap;contain:paint}.segmentedControl-item-input:focus-visible+.segmentedControl-item-action{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.segmentedControl-item,.viewTabs-item{flex-grow:1;position:relative;z-index:1}.segmentedControl-item:before,.segmentedControl-item:after,.viewTabs-item:before,.viewTabs-item:after{content:\"\";border-width:0;inset:var(--components-segmentedControl-dividerInset);border-color:var(--palettes-neutral-100);position:absolute;border-style:solid}.segmentedControl-item:before,.viewTabs-item:before{inset-inline-end:calc(var(--commons-divider-width) * -1);border-inline-start-width:var(--commons-divider-width);inset-inline-start:auto}.segmentedControl-item:after,.viewTabs-item:after{inset-block-end:calc(var(--commons-divider-width) * -1);border-block-start-width:var(--commons-divider-width);inset-block-start:auto}.segmentedControl-item-action,.viewTabs-item-tab{inline-size:100%;border:0;margin:0;padding:var(--components-segmentedControl-padding);background-color:var(--components-segmentedControl-background);box-shadow:var(--components-segmentedControl-shadow);border-radius:var(--components-segmentedControl-borderRadius);gap:var(--pr-t-spacings-100);color:var(--components-segmentedControl-color);text-align:center;justify-content:center;display:flex;align-items:center;position:relative;cursor:var(--components-segmentedControl-cursor);z-index:var(--components-segmentedControl-zIndex);font:inherit;transition-property:box-shadow;transition-duration:var(--commons-animations-durations-fast)}.segmentedControl-item-action:focus-visible,.viewTabs-item-tab:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.segmentedControl-item-action:hover,.viewTabs-item-tab:hover{--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-400, var(--palettes-product-400)), var(--pr-t-elevation-shadow-raised);--components-segmentedControl-zIndex: 1}.segmentedControl-item-action:active,.viewTabs-item-tab:active{--components-segmentedControl-background: var(--palettes-neutral-0);--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-500, var(--palettes-product-500)), var(--pr-t-elevation-shadow-raised)}.segmentedControl_panel,.viewTabs_panel{display:var(--components-segmentedControl-display, block);border-radius:var(--pr-t-border-radius-default)}.segmentedControl_panel:focus-visible,.viewTabs_panel:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px}}@layer mods{.segmentedControl.mod-S,.viewTabs.mod-S{--components-segmentedControl-padding: var(--pr-t-spacings-75) var(--pr-t-spacings-150);--components-segmentedControl-font: var(--pr-t-font-body-S);--components-segmentedControl-dividerInset: var(--pr-t-spacings-75)}.segmentedControl.mod-S .numericBadge,.viewTabs.mod-S .numericBadge{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: var(--pr-t-border-radius-small);--components-numericBadge-font: var(--pr-t-font-body-XS)}.segmentedControl.mod-vertical,.viewTabs.mod-vertical{--components-segmentedControl-direction: column;--components-segmentedControl-width: auto}@media not all and (min-width:30em){.segmentedControl,.viewTabs{--components-segmentedControl-direction: column;--components-segmentedControl-width: auto}}}@layer mods{.segmentedControl-item-input:checked+.segmentedControl-item-action,.segmentedControl-item-action[aria-selected=true],.segmentedControl-item-input:checked+.viewTabs-item-tab,.viewTabs-item-tab[aria-selected=true]{--components-segmentedControl-background: var(--palettes-50, var(--palettes-product-50));--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-500, var(--palettes-product-500));--components-segmentedControl-color: var(--palettes-800, var(--palettes-product-800));--components-segmentedControl-cursor: default;--components-segmentedControl-backgroundContent: none;--components-segmentedControl-zIndex: 1}.segmentedControl-item-input:checked+.segmentedControl-item-action .numericBadge,.segmentedControl-item-action[aria-selected=true] .numericBadge,.segmentedControl-item-input:checked+.viewTabs-item-tab .numericBadge,.viewTabs-item-tab[aria-selected=true] .numericBadge{--components-numericBadge-background: var(--palettes-200, var(--palettes-product-200));--components-numericBadge-color: var(--palettes-800, var(--palettes-product-800))}.segmentedControl-item-input:checked+.segmentedControl-item-action .numericBadge.is-loading,.segmentedControl-item-action[aria-selected=true] .numericBadge.is-loading,.segmentedControl-item-input:checked+.viewTabs-item-tab .numericBadge.is-loading,.viewTabs-item-tab[aria-selected=true] .numericBadge.is-loading{--components-numericBadge-loadingColor: var(--palettes-500, var(--palettes-product-500));--components-numericBadge-color: transparent}.segmentedControl-item-action:disabled,.segmentedControl-item-input:disabled~.segmentedControl-item-action{--components-segmentedControl-background: var(--palettes-neutral-100);--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-neutral-200);--components-segmentedControl-color: var(--pr-t-color-text-disabled);--components-segmentedControl-cursor: default}.segmentedControl-item-action:disabled .numericBadge,.segmentedControl-item-input:disabled~.segmentedControl-item-action .numericBadge{--components-numericBadge-background: var(--palettes-neutral-200);--components-numericBadge-color: var(--palettes-neutral-500)}.segmentedControl-item-action:disabled .numericBadge.is-loading,.segmentedControl-item-input:disabled~.segmentedControl-item-action .numericBadge.is-loading{--components-numericBadge-color: transparent}.segmentedControl_panel:not(.is-active,.active),.viewTabs_panel:not(.is-active,.active){--components-segmentedControl-display: none}}\n"] }]
114
- }], propDecorators: { small: [{ type: i0.Input, args: [{ isSignal: true, alias: "small", required: false }] }], vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }, { type: i0.Output, args: ["activeChange"] }], tabs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SegmentedControlTabsPanelComponent), { isSignal: true }] }], tabButtons: [{ type: i0.ViewChildren, args: ['tabButton', { isSignal: true }] }] } });
144
+ ], template: "@if (!externalTablist()) {\n\t<ng-container *ngTemplateOutlet=\"tablistTemplate()\" />\n}\n<ng-content />\n\n<ng-template #tablist>\n\t<ul class=\"segmentedControl\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\" [class.mod-S]=\"small()\" [class.mod-vertical]=\"vertical()\">\n\t\t@for (panel of tabs(); track panel.id) {\n\t\t\t<li class=\"segmentedControl-item\" role=\"presentation\">\n\t\t\t\t<button\n\t\t\t\t\t#tabButton\n\t\t\t\t\tclass=\"segmentedControl-item-action\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t[attr.id]=\"panel.labelId\"\n\t\t\t\t\t[attr.aria-controls]=\"panel.panelId\"\n\t\t\t\t\t[attr.aria-selected]=\"active() === panel.value()\"\n\t\t\t\t\t[attr.tabindex]=\"active() !== panel.value() ? '-1' : null\"\n\t\t\t\t\t(click)=\"active.set(panel.value())\"\n\t\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); previous()\"\n\t\t\t\t\t(keydown.arrowup)=\"$event.preventDefault(); previous()\"\n\t\t\t\t\t(keydown.arrowright)=\"$event.preventDefault(); next()\"\n\t\t\t\t\t(keydown.arrowdown)=\"$event.preventDefault(); next()\"\n\t\t\t\t\t(keydown.home)=\"$event.preventDefault(); first()\"\n\t\t\t\t\t(keydown.end)=\"$event.preventDefault(); last()\"\n\t\t\t\t>\n\t\t\t\t\t@if (panel.icon(); as icon) {\n\t\t\t\t\t\t<lu-icon [icon]=\"icon\" />\n\t\t\t\t\t}\n\t\t\t\t\t@if (panel.hiddenLabelText(); as hiddenLabelText) {\n\t\t\t\t\t\t<span class=\"pr-u-mask\">{{ hiddenLabelText }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"segmentedControl-item-action-tooltip\"\n\t\t\t\t\t\t\t[luTooltip]=\"hiddenLabelText\"\n\t\t\t\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t\t\t\t\t[luTooltipAnchor]=\"tabButton\"\n\t\t\t\t\t\t\t[luTooltipTriggerAnchor]=\"tabButton\"\n\t\t\t\t\t\t></span>\n\t\t\t\t\t} @else if (panel.label(); as label) {\n\t\t\t\t\t\t<ng-container *luPortal=\"label\" />\n\t\t\t\t\t}\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t}\n\t</ul>\n</ng-template>\n", styles: ["@layer components{.segmentedControl,.viewTabs{--components-segmentedControl-borderRadius: var(--pr-t-border-radius-default);--components-segmentedControl-padding: var(--pr-t-spacings-100) var(--pr-t-spacings-200);--components-segmentedControl-font: var(--pr-t-font-body-M);--components-segmentedControl-background: transparent;--components-segmentedControl-shadow: none;--components-segmentedControl-color: var(--pr-t-color-text);--components-segmentedControl-cursor: pointer;--components-segmentedControl-dividerInset: var(--pr-t-spacings-100);--components-segmentedControl-direction: row;--components-segmentedControl-width: fit-content;--components-segmentedControl-zIndex: 0;--components-segmentedControl-wrap: wrap;--components-segmentedControl-whiteSpace: normal;padding:0;margin:0;list-style-type:none;display:flex;flex-wrap:var(--components-segmentedControl-wrap);inline-size:var(--components-segmentedControl-width);flex-direction:var(--components-segmentedControl-direction);box-shadow:0 0 0 var(--commons-divider-width) var(--palettes-neutral-100);border-radius:var(--components-segmentedControl-borderRadius);background-color:var(--palettes-neutral-0);font:var(--components-segmentedControl-font);gap:var(--commons-divider-width);white-space:var(--components-segmentedControl-whiteSpace)}.segmentedControl .button.mod-disclosure,.viewTabs .button.mod-disclosure{margin-block:calc(var(--pr-t-spacings-25) * -1)}.segmentedControl .button.mod-disclosure:focus-visible,.viewTabs .button.mod-disclosure:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:0}.segmentedControl .button.mod-disclosure:last-child,.viewTabs .button.mod-disclosure:last-child{margin-inline-end:calc(var(--pr-t-spacings-100) * -1)}.segmentedControl-item-input{border:0;clip-path:rect(1px 1px 1px 1px);margin:-1px;overflow:hidden;padding:0;position:absolute;block-size:1px;inline-size:1px;white-space:nowrap;contain:paint}.segmentedControl-item-input:focus-visible+.segmentedControl-item-action{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.segmentedControl-item,.viewTabs-item{flex-grow:1;position:relative;z-index:1}.segmentedControl-item:before,.segmentedControl-item:after,.viewTabs-item:before,.viewTabs-item:after{content:\"\";border-width:0;inset:var(--components-segmentedControl-dividerInset);border-color:var(--palettes-neutral-100);position:absolute;border-style:solid}.segmentedControl-item:before,.viewTabs-item:before{inset-inline-end:calc(var(--commons-divider-width) * -1);border-inline-start-width:var(--commons-divider-width);inset-inline-start:auto}.segmentedControl-item:after,.viewTabs-item:after{inset-block-end:calc(var(--commons-divider-width) * -1);border-block-start-width:var(--commons-divider-width);inset-block-start:auto}.segmentedControl-item-action,.viewTabs-item-tab{inline-size:100%;border:0;margin:0;padding:var(--components-segmentedControl-padding);background-color:var(--components-segmentedControl-background);box-shadow:var(--components-segmentedControl-shadow);border-radius:var(--components-segmentedControl-borderRadius);gap:var(--pr-t-spacings-100);color:var(--components-segmentedControl-color);text-align:center;justify-content:center;display:flex;align-items:center;position:relative;cursor:var(--components-segmentedControl-cursor);z-index:var(--components-segmentedControl-zIndex);font:inherit;transition-property:box-shadow;transition-duration:var(--commons-animations-durations-fast)}.segmentedControl-item-action:focus-visible,.viewTabs-item-tab:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.segmentedControl-item-action:hover,.viewTabs-item-tab:hover{--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-400, var(--palettes-product-400)), var(--pr-t-elevation-shadow-raised);--components-segmentedControl-zIndex: 1}.segmentedControl-item-action:active,.viewTabs-item-tab:active{--components-segmentedControl-background: var(--palettes-neutral-0);--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-500, var(--palettes-product-500)), var(--pr-t-elevation-shadow-raised)}.segmentedControl-item-action-tooltip{display:contents}.segmentedControl_panel,.viewTabs_panel{display:var(--components-segmentedControl-display, block);border-radius:var(--pr-t-border-radius-default)}.segmentedControl_panel:focus-visible,.viewTabs_panel:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px}}@layer mods{.segmentedControl.mod-S,.viewTabs.mod-S{--icon-size: 1.25rem;--components-segmentedControl-padding: var(--pr-t-spacings-75) var(--pr-t-spacings-150);--components-segmentedControl-font: var(--pr-t-font-body-S);--components-segmentedControl-dividerInset: var(--pr-t-spacings-75)}.segmentedControl.mod-S .numericBadge,.viewTabs.mod-S .numericBadge{--components-numericBadge-size: 1.25rem;--components-numericBadge-borderRadius: var(--pr-t-border-radius-small);--components-numericBadge-font: var(--pr-t-font-body-XS)}.segmentedControl.mod-vertical,.viewTabs.mod-vertical{--components-segmentedControl-direction: column;--components-segmentedControl-width: auto}@media not all and (min-width:30em){.segmentedControl,.viewTabs{--components-segmentedControl-direction: column;--components-segmentedControl-width: auto}}}@layer mods{.segmentedControl-item-input:checked+.segmentedControl-item-action,.segmentedControl-item-action[aria-selected=true],.segmentedControl-item-input:checked+.viewTabs-item-tab,.viewTabs-item-tab[aria-selected=true]{--components-segmentedControl-background: var(--palettes-50, var(--palettes-product-50));--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-500, var(--palettes-product-500));--components-segmentedControl-color: var(--palettes-800, var(--palettes-product-800));--components-segmentedControl-cursor: default;--components-segmentedControl-backgroundContent: none;--components-segmentedControl-zIndex: 1}.segmentedControl-item-input:checked+.segmentedControl-item-action .numericBadge,.segmentedControl-item-action[aria-selected=true] .numericBadge,.segmentedControl-item-input:checked+.viewTabs-item-tab .numericBadge,.viewTabs-item-tab[aria-selected=true] .numericBadge{--components-numericBadge-background: var(--palettes-200, var(--palettes-product-200));--components-numericBadge-color: var(--palettes-800, var(--palettes-product-800))}.segmentedControl-item-input:checked+.segmentedControl-item-action .numericBadge.is-loading,.segmentedControl-item-action[aria-selected=true] .numericBadge.is-loading,.segmentedControl-item-input:checked+.viewTabs-item-tab .numericBadge.is-loading,.viewTabs-item-tab[aria-selected=true] .numericBadge.is-loading{--components-numericBadge-loadingColor: var(--palettes-500, var(--palettes-product-500));--components-numericBadge-color: transparent}.segmentedControl-item-action:disabled,.segmentedControl-item-input:disabled~.segmentedControl-item-action{--components-segmentedControl-background: var(--palettes-neutral-100);--components-segmentedControl-shadow: 0 0 0 var(--commons-divider-width) var(--palettes-neutral-200);--components-segmentedControl-color: var(--pr-t-color-text-disabled);--components-segmentedControl-cursor: default}.segmentedControl-item-action:disabled .numericBadge,.segmentedControl-item-input:disabled~.segmentedControl-item-action .numericBadge{--components-numericBadge-background: var(--palettes-neutral-200);--components-numericBadge-color: var(--palettes-neutral-500)}.segmentedControl-item-action:disabled .numericBadge.is-loading,.segmentedControl-item-input:disabled~.segmentedControl-item-action .numericBadge.is-loading{--components-numericBadge-color: transparent}.segmentedControl_panel:not(.is-active,.active),.viewTabs_panel:not(.is-active,.active){--components-segmentedControl-display: none}}\n"] }]
145
+ }], propDecorators: { small: [{ type: i0.Input, args: [{ isSignal: true, alias: "small", required: false }] }], vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }, { type: i0.Output, args: ["activeChange"] }], tabs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SegmentedControlTabsPanelComponent), { isSignal: true }] }], tabButtons: [{ type: i0.ViewChildren, args: ['tabButton', { isSignal: true }] }], tablistTemplate: [{ type: i0.ViewChild, args: ['tablist', { isSignal: true }] }] } });
115
146
 
116
147
  /**
117
148
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-segmented-control-tabs.mjs","sources":["../../../packages/ng/segmented-control-tabs/segmented-control-tabs.token.ts","../../../packages/ng/segmented-control-tabs/panel/panel.component.ts","../../../packages/ng/segmented-control-tabs/segmented-control-tabs.component.ts","../../../packages/ng/segmented-control-tabs/segmented-control-tabs.component.html","../../../packages/ng/segmented-control-tabs/lucca-front-ng-segmented-control-tabs.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { SegmentedControlTabsComponent } from './segmented-control-tabs.component';\n\nexport const LU_SEGMENTEDCONTROLTABS_INSTANCE = new InjectionToken<SegmentedControlTabsComponent>('LU_SEGMENTEDCONTROLTABS_INSTANCE');\n","import { ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation } from '@angular/core';\nimport { PortalContent } from '@lucca-front/ng/core';\nimport { LU_SEGMENTEDCONTROLTABS_INSTANCE } from '../segmented-control-tabs.token';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-segmented-control-tabs-panel',\n\ttemplate: '<ng-content />',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'segmentedControl_panel',\n\t\trole: 'tabpanel',\n\t\t'[tabindex]': '0',\n\t\t'[class.is-active]': 'segmentedControlTabsRef.active() === value()',\n\t\t'[id]': 'panelId',\n\t\t'[attr.aria-labelledby]': 'labelId',\n\t},\n})\nexport class SegmentedControlTabsPanelComponent<T = unknown> {\n\tprotected segmentedControlTabsRef = inject(LU_SEGMENTEDCONTROLTABS_INSTANCE);\n\n\treadonly label = input<PortalContent>();\n\n\treadonly value = input.required<T>();\n\n\treadonly id = nextId++;\n\n\treadonly panelId = `panel${this.id}`;\n\treadonly labelId = `tab${this.id}`;\n}\n","import { AfterContentInit, ChangeDetectionStrategy, Component, computed, contentChildren, ElementRef, forwardRef, input, model, viewChildren, ViewEncapsulation } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { luBooleanAttribute, PortalDirective } from '@lucca-front/ng/core';\nimport { NoopValueAccessorDirective } from '@lucca-front/ng/forms';\nimport { SegmentedControlTabsPanelComponent } from './public-api';\nimport { LU_SEGMENTEDCONTROLTABS_INSTANCE } from './segmented-control-tabs.token';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-segmented-control-tabs',\n\ttemplateUrl: './segmented-control-tabs.component.html',\n\tstyleUrl: './segmented-control-tabs.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\timports: [ReactiveFormsModule, PortalDirective],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [NoopValueAccessorDirective],\n\tproviders: [\n\t\t{\n\t\t\tprovide: LU_SEGMENTEDCONTROLTABS_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => SegmentedControlTabsComponent),\n\t\t},\n\t],\n})\nexport class SegmentedControlTabsComponent<T = unknown> implements AfterContentInit {\n\t/**\n\t * Applies small size to segmented control tabs\n\t */\n\treadonly small = input(false, { transform: luBooleanAttribute });\n\n\t/**\n\t * Display segmented control tabs vertically\n\t */\n\treadonly vertical = input(false, { transform: luBooleanAttribute });\n\n\t/**\n\t * Accessible name for the tablist, exposed to assistive technologies\n\t */\n\treadonly ariaLabel = input<string | null>(null);\n\n\treadonly active = model<T | null>(null);\n\n\treadonly id = `segmentedControl${nextId++}`;\n\n\treadonly tabs = contentChildren<SegmentedControlTabsPanelComponent<T>>(SegmentedControlTabsPanelComponent);\n\treadonly tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n\n\treadonly currentIndex = computed(() => this.tabs().findIndex((tab) => tab.value() === this.active()));\n\n\tprevious() {\n\t\tlet newIndex = this.currentIndex() - 1;\n\t\tif (newIndex < 0) {\n\t\t\tnewIndex = this.tabs().length - 1;\n\t\t}\n\t\tthis.setActiveTab(newIndex);\n\t}\n\n\tnext() {\n\t\tlet newIndex = this.currentIndex() + 1;\n\t\tif (newIndex >= this.tabs().length) {\n\t\t\tnewIndex = 0;\n\t\t}\n\t\tthis.setActiveTab(newIndex);\n\t}\n\n\tfirst() {\n\t\tthis.setActiveTab(0);\n\t}\n\n\tlast() {\n\t\tthis.setActiveTab(this.tabs().length - 1);\n\t}\n\n\tsetActiveTab(index: number) {\n\t\tthis.active.set(this.tabs()[index].value());\n\t\tthis.tabButtons()[index].nativeElement.focus();\n\t}\n\n\tngAfterContentInit(): void {\n\t\tif (this.active() === null) {\n\t\t\tthis.active.set(this.tabs()[0].value());\n\t\t}\n\t}\n}\n","<ul class=\"segmentedControl\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\" [class.mod-S]=\"small()\" [class.mod-vertical]=\"vertical()\">\n\t@for (panel of tabs(); track panel.id) {\n\t\t<li class=\"segmentedControl-item\" role=\"presentation\">\n\t\t\t<button\n\t\t\t\t#tabButton\n\t\t\t\tclass=\"segmentedControl-item-action\"\n\t\t\t\ttype=\"button\"\n\t\t\t\trole=\"tab\"\n\t\t\t\t[attr.id]=\"panel.labelId\"\n\t\t\t\t[attr.aria-controls]=\"panel.panelId\"\n\t\t\t\t[attr.aria-selected]=\"active() === panel.value()\"\n\t\t\t\t[attr.tabindex]=\"active() !== panel.value() ? '-1' : null\"\n\t\t\t\t(click)=\"active.set(panel.value())\"\n\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); previous()\"\n\t\t\t\t(keydown.arrowup)=\"$event.preventDefault(); previous()\"\n\t\t\t\t(keydown.arrowright)=\"$event.preventDefault(); next()\"\n\t\t\t\t(keydown.arrowdown)=\"$event.preventDefault(); next()\"\n\t\t\t\t(keydown.home)=\"$event.preventDefault(); first()\"\n\t\t\t\t(keydown.end)=\"$event.preventDefault(); last()\"\n\t\t\t>\n\t\t\t\t@if (panel.label(); as label) {\n\t\t\t\t\t<ng-container *luPortal=\"label\" />\n\t\t\t\t}\n\t\t\t</button>\n\t\t</li>\n\t}\n</ul>\n<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-segmented-control-tabs.mjs","sources":["../../../packages/ng/segmented-control-tabs/segmented-control-tabs.token.ts","../../../packages/ng/segmented-control-tabs/panel/panel.component.ts","../../../packages/ng/segmented-control-tabs/segmented-control-tabs.component.ts","../../../packages/ng/segmented-control-tabs/segmented-control-tabs.component.html","../../../packages/ng/segmented-control-tabs/lucca-front-ng-segmented-control-tabs.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { SegmentedControlTabsComponent } from './segmented-control-tabs.component';\n\nexport const LU_SEGMENTEDCONTROLTABS_INSTANCE = new InjectionToken<SegmentedControlTabsComponent>('LU_SEGMENTEDCONTROLTABS_INSTANCE');\n","import { ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { LuccaIcon } from '@lucca-front/icons';\nimport { luBooleanAttribute, PortalContent } from '@lucca-front/ng/core';\nimport { LU_SEGMENTEDCONTROLTABS_INSTANCE } from '../segmented-control-tabs.token';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-segmented-control-tabs-panel',\n\ttemplate: '<ng-content />',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\tclass: 'segmentedControl_panel',\n\t\trole: 'tabpanel',\n\t\t'[tabindex]': '0',\n\t\t'[class.is-active]': 'segmentedControlTabsRef.active() === value()',\n\t\t'[id]': 'panelId',\n\t\t'[attr.aria-labelledby]': 'labelId',\n\t},\n})\nexport class SegmentedControlTabsPanelComponent<T = unknown> {\n\tprotected segmentedControlTabsRef = inject(LU_SEGMENTEDCONTROLTABS_INSTANCE);\n\n\treadonly label = input<PortalContent>();\n\n\t/**\n\t * Icon displayed before the tab label\n\t */\n\treadonly icon = input<LuccaIcon>();\n\n\t/**\n\t * Hide the tab label, while keeping it in DOM for screen readers, and display it as a tooltip on hover and focus of the tab.\n\t * Requires a text label, ignored otherwise.\n\t */\n\treadonly hiddenLabel = input(false, { transform: luBooleanAttribute });\n\n\t/**\n\t * Text label of a tab whose label is hidden, null otherwise\n\t */\n\treadonly hiddenLabelText = computed(() => {\n\t\tconst label = this.label();\n\t\treturn this.hiddenLabel() && typeof label === 'string' ? label : null;\n\t});\n\n\treadonly value = input.required<T>();\n\n\treadonly id = nextId++;\n\n\treadonly panelId = `panel${this.id}`;\n\treadonly labelId = `tab${this.id}`;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tcontentChildren,\n\tElementRef,\n\tforwardRef,\n\tinput,\n\tmodel,\n\tsignal,\n\tTemplateRef,\n\tviewChild,\n\tviewChildren,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { luBooleanAttribute, PortalDirective } from '@lucca-front/ng/core';\nimport { NoopValueAccessorDirective } from '@lucca-front/ng/forms';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LuTooltipTriggerDirective } from '@lucca-front/ng/tooltip';\nimport { SegmentedControlTabsPanelComponent } from './public-api';\nimport { LU_SEGMENTEDCONTROLTABS_INSTANCE } from './segmented-control-tabs.token';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'lu-segmented-control-tabs',\n\ttemplateUrl: './segmented-control-tabs.component.html',\n\tstyleUrl: './segmented-control-tabs.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\timports: [ReactiveFormsModule, PortalDirective, NgTemplateOutlet, LuTooltipTriggerDirective, IconComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [NoopValueAccessorDirective],\n\tproviders: [\n\t\t{\n\t\t\tprovide: LU_SEGMENTEDCONTROLTABS_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => SegmentedControlTabsComponent),\n\t\t},\n\t],\n})\nexport class SegmentedControlTabsComponent<T = unknown> implements AfterContentInit {\n\t/**\n\t * Applies small size to segmented control tabs\n\t */\n\treadonly small = input(false, { transform: luBooleanAttribute });\n\n\t/**\n\t * Display segmented control tabs vertically\n\t */\n\treadonly vertical = input(false, { transform: luBooleanAttribute });\n\n\t/**\n\t * Accessible name for the tablist, exposed to assistive technologies\n\t */\n\treadonly ariaLabel = input<string | null>(null);\n\n\treadonly active = model<T | null>(null);\n\n\treadonly id = `segmentedControl${nextId++}`;\n\n\treadonly tabs = contentChildren<SegmentedControlTabsPanelComponent<T>>(SegmentedControlTabsPanelComponent);\n\treadonly tabButtons = viewChildren<ElementRef<HTMLButtonElement>>('tabButton');\n\n\t/**\n\t * Tablist template, rendered by the component itself unless a host (e.g. `lu-filter-bar`) renders it elsewhere\n\t */\n\treadonly tablistTemplate = viewChild.required<TemplateRef<unknown>>('tablist');\n\n\t/**\n\t * Set by a host rendering the tablist itself, so the component only renders its panels\n\t */\n\treadonly externalTablist = signal(false);\n\n\treadonly currentIndex = computed(() => this.tabs().findIndex((tab) => tab.value() === this.active()));\n\n\tprevious() {\n\t\tlet newIndex = this.currentIndex() - 1;\n\t\tif (newIndex < 0) {\n\t\t\tnewIndex = this.tabs().length - 1;\n\t\t}\n\t\tthis.setActiveTab(newIndex);\n\t}\n\n\tnext() {\n\t\tlet newIndex = this.currentIndex() + 1;\n\t\tif (newIndex >= this.tabs().length) {\n\t\t\tnewIndex = 0;\n\t\t}\n\t\tthis.setActiveTab(newIndex);\n\t}\n\n\tfirst() {\n\t\tthis.setActiveTab(0);\n\t}\n\n\tlast() {\n\t\tthis.setActiveTab(this.tabs().length - 1);\n\t}\n\n\tsetActiveTab(index: number) {\n\t\tthis.active.set(this.tabs()[index].value());\n\t\tthis.tabButtons()[index].nativeElement.focus();\n\t}\n\n\tngAfterContentInit(): void {\n\t\tif (this.active() === null) {\n\t\t\tthis.active.set(this.tabs()[0].value());\n\t\t}\n\t}\n}\n","@if (!externalTablist()) {\n\t<ng-container *ngTemplateOutlet=\"tablistTemplate()\" />\n}\n<ng-content />\n\n<ng-template #tablist>\n\t<ul class=\"segmentedControl\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\" [class.mod-S]=\"small()\" [class.mod-vertical]=\"vertical()\">\n\t\t@for (panel of tabs(); track panel.id) {\n\t\t\t<li class=\"segmentedControl-item\" role=\"presentation\">\n\t\t\t\t<button\n\t\t\t\t\t#tabButton\n\t\t\t\t\tclass=\"segmentedControl-item-action\"\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t[attr.id]=\"panel.labelId\"\n\t\t\t\t\t[attr.aria-controls]=\"panel.panelId\"\n\t\t\t\t\t[attr.aria-selected]=\"active() === panel.value()\"\n\t\t\t\t\t[attr.tabindex]=\"active() !== panel.value() ? '-1' : null\"\n\t\t\t\t\t(click)=\"active.set(panel.value())\"\n\t\t\t\t\t(keydown.arrowleft)=\"$event.preventDefault(); previous()\"\n\t\t\t\t\t(keydown.arrowup)=\"$event.preventDefault(); previous()\"\n\t\t\t\t\t(keydown.arrowright)=\"$event.preventDefault(); next()\"\n\t\t\t\t\t(keydown.arrowdown)=\"$event.preventDefault(); next()\"\n\t\t\t\t\t(keydown.home)=\"$event.preventDefault(); first()\"\n\t\t\t\t\t(keydown.end)=\"$event.preventDefault(); last()\"\n\t\t\t\t>\n\t\t\t\t\t@if (panel.icon(); as icon) {\n\t\t\t\t\t\t<lu-icon [icon]=\"icon\" />\n\t\t\t\t\t}\n\t\t\t\t\t@if (panel.hiddenLabelText(); as hiddenLabelText) {\n\t\t\t\t\t\t<span class=\"pr-u-mask\">{{ hiddenLabelText }}</span>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"segmentedControl-item-action-tooltip\"\n\t\t\t\t\t\t\t[luTooltip]=\"hiddenLabelText\"\n\t\t\t\t\t\t\tluTooltipOnlyForDisplay\n\t\t\t\t\t\t\t[luTooltipAnchor]=\"tabButton\"\n\t\t\t\t\t\t\t[luTooltipTriggerAnchor]=\"tabButton\"\n\t\t\t\t\t\t></span>\n\t\t\t\t\t} @else if (panel.label(); as label) {\n\t\t\t\t\t\t<ng-container *luPortal=\"label\" />\n\t\t\t\t\t}\n\t\t\t\t</button>\n\t\t\t</li>\n\t\t}\n\t</ul>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["nextId"],"mappings":"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"}