@lucca-front/ng 21.0.0-rc.1 → 21.0.0-rc.2

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.
Files changed (49) hide show
  1. package/callout/index.d.ts +38 -49
  2. package/chip/index.d.ts +11 -2
  3. package/clear/index.d.ts +5 -2
  4. package/code/index.d.ts +4 -4
  5. package/data-table/index.d.ts +3 -2
  6. package/fesm2022/lucca-front-ng-api.mjs +1 -1
  7. package/fesm2022/lucca-front-ng-callout.mjs +60 -155
  8. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  9. package/fesm2022/lucca-front-ng-chip.mjs +31 -5
  10. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  11. package/fesm2022/lucca-front-ng-clear.mjs +22 -10
  12. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
  13. package/fesm2022/lucca-front-ng-code.mjs +5 -5
  14. package/fesm2022/lucca-front-ng-code.mjs.map +1 -1
  15. package/fesm2022/lucca-front-ng-data-table.mjs +9 -4
  16. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  17. package/fesm2022/lucca-front-ng-date.mjs +1 -1
  18. package/fesm2022/lucca-front-ng-date2.mjs +6 -6
  19. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  20. package/fesm2022/lucca-front-ng-department.mjs +1 -1
  21. package/fesm2022/lucca-front-ng-establishment.mjs +1 -1
  22. package/fesm2022/lucca-front-ng-filter-pills.mjs +2 -2
  23. package/fesm2022/lucca-front-ng-form-field.mjs +2 -2
  24. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  25. package/fesm2022/lucca-front-ng-form.mjs +2 -2
  26. package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-formly.mjs +1 -1
  28. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +4 -4
  29. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  30. package/fesm2022/lucca-front-ng-forms.mjs +6 -5
  31. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  32. package/fesm2022/lucca-front-ng-grid.mjs +20 -5
  33. package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
  34. package/fesm2022/lucca-front-ng-multi-select.mjs +5 -5
  35. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  36. package/fesm2022/lucca-front-ng-popover2.mjs +2 -2
  37. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  38. package/fesm2022/lucca-front-ng-read-more.mjs +16 -12
  39. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  40. package/fesm2022/lucca-front-ng-simple-select.mjs +2 -2
  41. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  42. package/fesm2022/lucca-front-ng-skeleton.mjs +2 -2
  43. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  44. package/fesm2022/lucca-front-ng-sortable-list.mjs +1 -1
  45. package/fesm2022/lucca-front-ng-user.mjs +1 -1
  46. package/forms/index.d.ts +2 -1
  47. package/grid/index.d.ts +9 -5
  48. package/package.json +11 -11
  49. package/read-more/index.d.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-multi-select.mjs","sources":["../../../packages/ng/multi-select/translations.ts","../../../packages/ng/multi-select/select.translate.ts","../../../packages/ng/multi-select/input/panel.model.ts","../../../packages/ng/multi-select/select.model.ts","../../../packages/ng/multi-select/panel/option-group-context.pipe.ts","../../../packages/ng/multi-select/panel/panel.component.ts","../../../packages/ng/multi-select/panel/panel.component.html","../../../packages/ng/multi-select/input/panel-ref.factory.ts","../../../packages/ng/multi-select/input/select-input.component.ts","../../../packages/ng/multi-select/input/select-input.component.html","../../../packages/ng/multi-select/displayer/translations.ts","../../../packages/ng/multi-select/displayer/default-displayer.translate.ts","../../../packages/ng/multi-select/input/select-all/select-all.models.ts","../../../packages/ng/multi-select/displayer/displayer-input.directive.ts","../../../packages/ng/multi-select/input/select-all/multi-select-all-displayer.component.ts","../../../packages/ng/multi-select/input/select-all/multi-select-all-header.component.ts","../../../packages/ng/multi-select/input/select-all/with-select-all.directive.ts","../../../packages/ng/multi-select/displayer/content-displayer/content-displayer.component.ts","../../../packages/ng/multi-select/displayer/counter-displayer/counter-displayer.component.ts","../../../packages/ng/multi-select/displayer/default-displayer.component.ts","../../../packages/ng/multi-select/displayer/displayer.directive.ts","../../../packages/ng/multi-select/select.utils.ts","../../../packages/ng/multi-select/select.validators.ts","../../../packages/ng/multi-select/lucca-front-ng-multi-select.ts"],"sourcesContent":["export const Translations = {\n\t'nl-BE': {\n\t\tplaceholder: 'Selecteren...',\n\t\tsearch: 'Zoeken',\n\t\tclear: 'Selectie leegmaken',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\n\t\temptySelection: 'Selecteer elementen uit de lijst aan de linkerkant om te beginnen',\n\t\texpand: 'Vergroten',\n\t\treduce: 'Verkleinen',\n\t\tselectAll: 'Alles selecteren',\n\t\tunselectAll: 'Alles deselecteren',\n\t\tloading: 'Bezig met laden...',\n\t\temptyOptions: 'Er zijn geen waarden beschikbaar. Neem contact op met uw beheerder voor meer informatie.',\n\t\tselectCountOptions: 'Selecteer alle resultaten ({{optionsCount}})',\n\t},\n\tnl: {\n\t\tplaceholder: 'Selecteren...',\n\t\tsearch: 'Zoeken',\n\t\tclear: 'Selectie leegmaken',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\n\t\temptySelection: 'Selecteer elementen uit de lijst aan de linkerkant om te beginnen',\n\t\texpand: 'Vergroten',\n\t\treduce: 'Verkleinen',\n\t\tselectAll: 'Alles selecteren',\n\t\tunselectAll: 'Alles deselecteren',\n\t\tloading: 'Bezig met laden...',\n\t\temptyOptions: 'Er zijn geen waarden beschikbaar. Neem contact op met uw beheerder voor meer informatie.',\n\t\tselectCountOptions: 'Selecteer alle resultaten ({{optionsCount}})',\n\t},\n\tit: {\n\t\tplaceholder: 'Selezionare...',\n\t\tsearch: 'Cercare',\n\t\tclear: 'Cancellare la selezione',\n\t\tclearSearch: 'Cancellare la ricerca',\n\t\temptyResults: 'La ricerca non ha prodotto risultati.',\n\t\temptySelection: 'Per iniziare, seleziona gli elementi dall’elenco a sinistra',\n\t\texpand: 'Estendere',\n\t\treduce: 'Ridurre',\n\t\tselectAll: 'Selezionare tutto',\n\t\tunselectAll: 'Deselezionare tutto',\n\t\tloading: 'Caricamento in corso...',\n\t\temptyOptions: 'Nessun valore è disponibile. Contatta l’amministratore per maggiori informazioni.',\n\t\tselectCountOptions: 'Seleziona tutti i risultati ({{optionsCount}})',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionner…',\n\t\tsearch: 'Rechercher',\n\t\tclear: 'Vider la sélection',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptyResults: \"Votre recherche n'a donné aucun résultat.\",\n\t\temptySelection: 'Sélectionnez les éléments dans la liste de gauche pour commencer',\n\t\texpand: 'Étendre',\n\t\treduce: 'Réduire',\n\t\tselectAll: 'Tout sélectionner',\n\t\tunselectAll: 'Tout désélectionner',\n\t\tloading: 'Chargement en cours...',\n\t\temptyOptions: \"Aucune valeur n'est disponible. Contactez votre administrateur pour plus d'informations.\",\n\t\tselectCountOptions: 'Sélectionner tous les résultats ({{optionsCount}})',\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecionar..',\n\t\tsearch: 'Pesquisar',\n\t\tclear: 'Limpar seleção',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'A sua pesquisa não produziu resultados.',\n\t\temptySelection: 'Selecione itens na lista à esquerda para começar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reduzir',\n\t\tselectAll: 'Selecionar tudo',\n\t\tunselectAll: 'Desmarcar tudo',\n\t\tloading: 'Carregando...',\n\t\temptyOptions: 'Não existe nenhum valor disponível. Contacte o seu administrador para obter mais informações.',\n\t\tselectCountOptions: 'Selecionar todos os resultados ({{optionsCount}})',\n\t},\n\tes: {\n\t\tplaceholder: 'Seleccionar…',\n\t\tsearch: 'Buscar',\n\t\tclear: 'Vaciar la selección',\n\t\tclearSearch: 'Vaciar la búsqueda',\n\t\temptyResults: 'La búsqueda no ha dado ningún resultado.',\n\t\temptySelection: 'Seleccione los elementos de la lista de la izquierda para empezar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reducir',\n\t\tselectAll: 'Seleccionar todo',\n\t\tunselectAll: 'Desmarcar todo',\n\t\tloading: 'Cargando...',\n\t\temptyOptions: 'No hay ningún valor disponible. Ponte en contacto con tu administrador para obtener más información.',\n\t\tselectCountOptions: 'Seleccione todos los resultados ({{optionsCount}})',\n\t},\n\tde: {\n\t\tplaceholder: 'Auswählen…',\n\t\tsearch: 'Suchen',\n\t\tclear: 'Auswahl leeren',\n\t\tclearSearch: 'Suche leeren',\n\t\temptyResults: 'Ihre Suche hat keinen Treffer ergeben.',\n\t\temptySelection: 'Wählen Sie zuerst die Items in der Liste links aus.',\n\t\texpand: 'Erweitern',\n\t\treduce: 'Reduzieren',\n\t\tselectAll: 'Alles auswählen',\n\t\tunselectAll: 'Alles abwählen',\n\t\tloading: 'Lädt...',\n\t\temptyOptions: 'Es ist kein Wert verfügbar. Wenden Sie sich für weitere Informationen an Ihre:n Administrator:in.',\n\t\tselectCountOptions: 'Alle Ergebnisse auswählen ({{optionsCount}})',\n\t},\n\ten: {\n\t\tplaceholder: 'Select…',\n\t\tsearch: 'Search',\n\t\tclear: 'Clear selection',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'We couldn’t find any results that match your search.',\n\t\temptySelection: 'Select items from the list on the left to start',\n\t\texpand: 'Expand',\n\t\treduce: 'Collapse',\n\t\tselectAll: 'Select all',\n\t\tunselectAll: 'Deselect all',\n\t\tloading: 'Loading...',\n\t\temptyOptions: 'There are no values available. Contact your administrator for more information.',\n\t\tselectCountOptions: 'Select all results ({{optionsCount}})',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_MULTI_SELECT_TRANSLATIONS = new InjectionToken('LuMultiSelectTranslations', {\n\tfactory: () => luMultiSelectTranslations,\n});\n\nexport interface ILuMultiSelectLabel {\n\tplaceholder: string;\n\tsearch: string;\n\tclear: string;\n\tclearSearch: string;\n\temptyResults: string;\n\temptyOptions: string;\n\temptySelection: string;\n\texpand: string;\n\treduce: string;\n\tselectAll: string;\n\tunselectAll: string;\n\tloading: string;\n}\n\nexport const luMultiSelectTranslations: LuTranslation<ILuMultiSelectLabel> = Translations;\n","import { ChangeDetectorRef } from '@angular/core';\nimport { LuSelectPanelRef } from '@lucca-front/ng/core-select';\n\nexport abstract class LuMultiSelectPanelRef<T> extends LuSelectPanelRef<T, T[]> {\n\tabstract changeDetectorRef?: ChangeDetectorRef;\n\n\tabstract updateSelectedOptions(selectedOptions: T[]): void;\n\n\tabstract useDefaultPosition(): void;\n}\n","import { InjectionToken } from '@angular/core';\nimport type { LuMultiSelectInputComponent } from './input';\n\nexport const MULTI_SELECT_INPUT = new InjectionToken<LuMultiSelectInputComponent<unknown>>('MultiSelectInput');\n\nexport type LuMultiSelection<T> = { mode: 'include'; values: T[] } | { mode: 'exclude'; values: T[] } | { mode: 'none' } | { mode: 'all' };\n\nexport type LuMultiSelectionMode = LuMultiSelection<unknown>['mode'];\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ɵIsSelectedStrategy } from '@lucca-front/ng/core-select';\n\n@Pipe({\n\tname: 'luOptionsGroupContext',\n\tpure: true,\n})\nexport class LuOptionsGroupContextPipe<T> implements PipeTransform {\n\t#selectionStrategy = inject<ɵIsSelectedStrategy<T>>(ɵIsSelectedStrategy);\n\n\ttransform(groupOptions: T[], selectedOptions: T[], optionComparer: (option1: T, option2: T) => boolean): { notSelectedOptions: T[]; isGroupSelected: boolean } {\n\t\tconst notSelectedOptions = groupOptions.filter((o) => !selectedOptions.some((so) => optionComparer(so, o)));\n\n\t\treturn {\n\t\t\tnotSelectedOptions,\n\t\t\tisGroupSelected: this.#selectionStrategy.isGroupSelected(groupOptions, notSelectedOptions),\n\t\t};\n\t}\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, computed, forwardRef, inject, signal, TrackByFunction } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl, PortalDirective } from '@lucca-front/ng/core';\nimport {\n\tCoreSelectKeyManager,\n\tCoreSelectPanelInstance,\n\tLuIsOptionSelectedPipe,\n\tLuOptionGroup,\n\tSELECT_ID,\n\tSELECT_PANEL_INSTANCE,\n\tTreeDisplayPipe,\n\tTreeNode,\n\tɵCoreSelectPanelElement,\n\tɵgetGroupTemplateLocation,\n\tɵLuOptionComponent,\n\tɵLuOptionGroupPipe,\n} from '@lucca-front/ng/core-select';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { TreeBranchComponent } from '@lucca-front/ng/tree-select';\nimport { EMPTY } from 'rxjs';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LuMultiSelectPanelRef } from '../input/panel.model';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuOptionsGroupContextPipe } from './option-group-context.pipe';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs/operators';\n\n@Component({\n\tselector: 'lu-select-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrl: './panel.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tA11yModule,\n\t\tAsyncPipe,\n\t\tFormsModule,\n\t\tLuIsOptionSelectedPipe,\n\t\tɵLuOptionComponent,\n\t\tɵLuOptionGroupPipe,\n\t\tNgTemplateOutlet,\n\t\tPortalDirective,\n\t\tLuOptionsGroupContextPipe,\n\t\tɵCoreSelectPanelElement,\n\t\tIconComponent,\n\t\tTreeDisplayPipe,\n\t\tTreeBranchComponent,\n\t],\n\tproviders: [\n\t\tCoreSelectKeyManager,\n\t\t{\n\t\t\tprovide: SELECT_PANEL_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectPanelComponent),\n\t\t},\n\t],\n})\nexport class LuMultiSelectPanelComponent<T> implements AfterViewInit, CoreSelectPanelInstance {\n\tprotected selectInput = inject<LuMultiSelectInputComponent<T>>(MULTI_SELECT_INPUT);\n\tpanelRef = inject<LuMultiSelectPanelRef<T>>(LuMultiSelectPanelRef);\n\tselectId = inject(SELECT_ID);\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\toptions$ = this.selectInput.options$;\n\tgrouping = this.selectInput.groupingSignal;\n\ttreeGenerator = this.selectInput.treeGenerator;\n\tloading$ = this.selectInput.loading$;\n\tsearchable = this.selectInput.searchable;\n\toptionComparer = this.selectInput.optionComparer;\n\toptionKey = this.selectInput.optionKey;\n\n\ttrackOptionsBy: TrackByFunction<T> = (_, option) => this.optionKey(option);\n\ttrackGroupsBy: TrackByFunction<LuOptionGroup<T, unknown>> = (_, group) => group.key;\n\ttrackBranchesBy: TrackByFunction<TreeNode<T>> = (_, option) => this.optionKey(option.node);\n\n\tselectedOptions: T[] = this.selectInput.value || [];\n\toptionTpl = this.selectInput.optionTpl;\n\n\toptions = signal<ɵCoreSelectPanelElement<T>[]>([]);\n\tkeyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\n\tsomeGroupOptionEnabled = computed(() => {\n\t\treturn (groupOptions: T[]) => {\n\t\t\tconst disabledOptionIds = this.options()\n\t\t\t\t.filter((o) => o.disabled)\n\t\t\t\t.map((o) => this.optionKey(o.option()));\n\t\t\treturn groupOptions.some((option) => !disabledOptionIds.includes(this.optionKey(option)));\n\t\t};\n\t});\n\n\thasGrouping$ = toObservable(this.grouping).pipe(map((grouping) => !!grouping));\n\tpublic clueChange$ = this.selectInput.clue$;\n\tpublic shouldDisplayAddOption$ = this.selectInput.shouldDisplayAddOption$;\n\n\tgroupTemplateLocation$ = ɵgetGroupTemplateLocation(this.hasGrouping$, this.clueChange$, this.options$, this.searchable);\n\n\tonScroll(evt: Event): void {\n\t\tif (!(evt.target instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.target.scrollTop === 0) {\n\t\t\tthis.panelRef.previousPage.emit();\n\t\t}\n\n\t\tif (evt.target.scrollHeight - evt.target.scrollTop - evt.target.clientHeight < 1) {\n\t\t\tthis.panelRef.nextPage.emit();\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (!this.options()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initKeyManager();\n\t\tthis.panelRef.useDefaultPosition();\n\t}\n\n\ttoggleOption(option: T): void {\n\t\tconst matchingOption = this.selectedOptions.find((o) => this.optionComparer(o, option));\n\t\tthis.selectedOptions = matchingOption && option ? this.selectedOptions.filter((o) => o !== matchingOption) : [...this.selectedOptions, option];\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tsetTimeout(() => this.panelRef.updatePosition());\n\t}\n\n\ttoggleOptions(notSelectedOptions: T[], groupOptions: T[]): void {\n\t\t// Filter out disabled options\n\t\tconst disabledOptionIds = this.options()\n\t\t\t.filter((o) => o.disabled)\n\t\t\t.map((o) => this.optionKey(o.option()));\n\t\tconst enabledNotSelectedOptions = notSelectedOptions.filter((o) => !disabledOptionIds.includes(this.optionKey(o)));\n\t\tconst enabledGroupOptions = groupOptions.filter((o) => !disabledOptionIds.includes(this.optionKey(o)));\n\n\t\tif (enabledNotSelectedOptions.length) {\n\t\t\t// If some options are not selected, select them all\n\t\t\tthis.selectedOptions = [...this.selectedOptions, ...enabledNotSelectedOptions];\n\t\t} else {\n\t\t\t// If all options are already selected, unselect them all\n\t\t\tthis.selectedOptions = this.selectedOptions.filter((o) => !enabledGroupOptions.some((so) => this.optionComparer(so, o)));\n\t\t}\n\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tsetTimeout(() => this.panelRef.updatePosition());\n\t}\n\n\tprotected initKeyManager(): void {\n\t\tthis.keyManager.init({\n\t\t\tqueryList: this.options,\n\t\t\toptions$: this.options$,\n\t\t\toptionComparer: this.optionComparer,\n\t\t\tactiveOptionIdChanged$: this.panelRef.activeOptionIdChanged,\n\t\t\tclueChange$: this.selectInput.searchable ? this.selectInput.clueChange : EMPTY,\n\t\t});\n\n\t\tif (this.selectedOptions?.length) {\n\t\t\tthis.keyManager.highlightOption(this.selectedOptions[0]);\n\t\t}\n\t}\n}\n","@if (\n\t{\n\t\toptions: (options$ | async) || [],\n\t\tclueChange: (clueChange$ | async) || \"\",\n\t\tgroupTemplateLocation: groupTemplateLocation$ | async,\n\t\tshouldDisplayAddOption: shouldDisplayAddOption$ | async,\n\t};\n\tas ctx\n) {\n\t<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" data-testid=\"dialog-panel\">\n\t\t<div\n\t\t\tclass=\"lu-picker-content\"\n\t\t\t[class.is-loading]=\"loading$ | async\"\n\t\t\t[class.is-filled]=\"ctx.options.length > 0\"\n\t\t\ttabindex=\"0\"\n\t\t\trole=\"listbox\"\n\t\t\taria-multiselectable=\"true\"\n\t\t\t(scroll)=\"onScroll($event)\"\n\t\t>\n\t\t\t@if (selectInput.panelHeaderTpl(); as tpl) {\n\t\t\t\t<div>\n\t\t\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"lu-picker-content-option\">\n\t\t\t\t@if (grouping() && ctx.groupTemplateLocation === \"group-header\") {\n\t\t\t\t\t@for (\n\t\t\t\t\t\tgroup of ctx.options | luOptionGroup: grouping().selector;\n\t\t\t\t\t\ttrack trackGroupsBy(groupIndex, group);\n\t\t\t\t\t\tlet groupIndex = $index\n\t\t\t\t\t) {\n\t\t\t\t\t\t<div class=\"lu-picker-content-group\" role=\"group\" attr.aria-labelledby=\"lu-select-{{ selectId }}-group-{{ groupIndex }}\">\n\t\t\t\t\t\t\t@let groupCtx = group.options | luOptionsGroupContext: selectedOptions : optionComparer;\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\t\telementId=\"lu-select-{{ selectId }}-group-{{ groupIndex }}\"\n\t\t\t\t\t\t\t\tclass=\"lu-picker-content-option-group-title\"\n\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t\t(selected)=\"toggleOptions(groupCtx.notSelectedOptions, group.options)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span #groupingTitleRef>\n\t\t\t\t\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\t@if (someGroupOptionEnabled()(group.options)) {\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclass=\"link\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"toggleOptions(groupCtx.notSelectedOptions, group.options)\"\n\t\t\t\t\t\t\t\t\t\t[id]=\"selectId + '-group-' + group.key\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span class=\"pr-u-mask\">{{ groupingTitleRef.innerText }}&nbsp;– </span\n\t\t\t\t\t\t\t\t\t\t>{{ groupCtx.isGroupSelected ? intl.unselectAll : intl.selectAll }}\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@if (!grouping() || ctx.groupTemplateLocation !== \"group-header\") {\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\" />\n\t\t\t\t}\n\t\t\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t\t\t@if (treeGenerator) {\n\t\t\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track trackBranchesBy(index, branch)) {\n\t\t\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t\t\t[selectedOptions]=\"selectedOptions\"\n\t\t\t\t\t\t\t\t[optionComparer]=\"optionComparer\"\n\t\t\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t\t\t(toggleOne)=\"toggleOption($event)\"\n\t\t\t\t\t\t\t\t(selectMany)=\"toggleOptions($event, [])\"\n\t\t\t\t\t\t\t\t(unselectMany)=\"toggleOptions([], $event)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t@for (option of options; track trackOptionsBy(index, option); let index = $index) {\n\t\t\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t\t\t[grouping]=\"ctx.groupTemplateLocation === 'option' ? grouping() : undefined\"\n\t\t\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t\t\t[groupTemplateLocation]=\"ctx.groupTemplateLocation\"\n\t\t\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer : selectedOptions\"\n\t\t\t\t\t\t\t\t(selected)=\"toggleOption(option)\"\n\t\t\t\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t\t\t\t\t[class.withAddOption]=\"ctx.shouldDisplayAddOption\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t</ng-template>\n\t\t\t\t@if (ctx.options.length === 0 && (loading$ | async) === false) {\n\t\t\t\t\t<div class=\"lu-picker-content-option-emptyState\">\n\t\t\t\t\t\t{{ ctx.clueChange.length ? intl.emptyResults : intl.emptyOptions }}\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t@if (loading$ | async) {\n\t\t\t\t<div class=\"lu-picker-content-loading\">\n\t\t\t\t\t<div class=\"loading\">{{ intl.loading }}</div>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (ctx.shouldDisplayAddOption) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"addOption palette-product\"\n\t\t\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t\t\t\telementId=\"picker-content-add\"\n\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t>\n\t\t\t\t\t<lu-icon icon=\"mathsPlus\" />\n\t\t\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n}\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectorRef, ComponentRef, ElementRef, inject, Injectable, Injector, ViewContainerRef } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport { LuMultiSelectPanelComponent } from '../panel';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuMultiSelectPanelRef } from './panel.model';\nimport { LuMultiSelectInputComponent } from './select-input.component';\nimport { addAttributesOnCdkContainer, SELECT_ID, SELECT_LABEL_ID } from '@lucca-front/ng/core-select';\n\nabstract class BaseMultiSelectPanelRef<T> extends LuMultiSelectPanelRef<T> {\n\tprotected readonly portalRef: ComponentPortal<LuMultiSelectPanelComponent<T>>;\n\tinstance: LuMultiSelectPanelComponent<T>;\n\n\tprotected panelRef: ComponentRef<LuMultiSelectPanelComponent<T>>;\n\n\tprotected constructor(parentInjector: Injector, selectInput: LuMultiSelectInputComponent<T>) {\n\t\tsuper();\n\n\t\tconst injector = Injector.create({\n\t\t\tproviders: [\n\t\t\t\t{ provide: LuMultiSelectPanelRef, useValue: this },\n\t\t\t\t{ provide: MULTI_SELECT_INPUT, useValue: selectInput },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\n\t\tthis.portalRef = new ComponentPortal<LuMultiSelectPanelComponent<T>>(LuMultiSelectPanelComponent, undefined, injector);\n\t}\n\n\toverride handleKeyManagerEvent(event: KeyboardEvent) {\n\t\tthis.instance.keyManager.onKeydown(event);\n\t}\n\n\temitValue(value: T[]): void {\n\t\tthis.valueChanged.emit(value);\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.instance.keyManager.activeItem?.selected.emit();\n\t}\n\n\tupdateSelectedOptions(selectedOptions: T[]): void {\n\t\tthis.instance.selectedOptions = selectedOptions;\n\t\t// Run change detection on the panel component\n\t\tthis.panelRef.injector.get(ChangeDetectorRef).markForCheck();\n\t}\n}\n\nclass MultiSelectPanelRef<T> extends BaseMultiSelectPanelRef<T> {\n\tchangeDetectorRef: ChangeDetectorRef;\n\n\tconstructor(\n\t\tprivate overlayRef: OverlayRef,\n\t\tparentInjector: Injector,\n\t\tselectInput: LuMultiSelectInputComponent<T>,\n\t\tprotected defaultPositionStrategy: PositionStrategy,\n\t) {\n\t\tsuper(parentInjector, selectInput);\n\t\tthis.panelRef = overlayRef.attach(this.portalRef);\n\t\tthis.instance = this.panelRef.instance;\n\t\tthis.changeDetectorRef = this.panelRef.changeDetectorRef;\n\n\t\toverlayRef\n\t\t\t.backdropClick()\n\t\t\t.pipe(takeUntil(this.closed))\n\t\t\t.subscribe(() => this.close());\n\t}\n\n\tuseDefaultPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.defaultPositionStrategy);\n\t}\n\n\tupdatePosition(): void {\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t}\n}\n\nclass MultiSelectPanelDOMHostRef<T> extends BaseMultiSelectPanelRef<T> {\n\toverride changeDetectorRef?: ChangeDetectorRef;\n\n\tconstructor(host: ViewContainerRef, parentInjector: Injector, selectInput: LuMultiSelectInputComponent<T>) {\n\t\tsuper(parentInjector, selectInput);\n\t\tthis.panelRef = host.createComponent(this.portalRef.component, {\n\t\t\tinjector: this.portalRef.injector,\n\t\t\tprojectableNodes: this.portalRef.projectableNodes,\n\t\t});\n\t\tthis.instance = this.panelRef.instance;\n\t}\n\n\toverride updatePosition() {\n\t\t// do nothing, this is not a panel so repositioning is handled by the input.\n\t}\n\n\toverride close(): void {\n\t\tthis.closed.emit();\n\t}\n\n\tuseDefaultPosition(): void {\n\t\t// do nothing, this is not a panel so repositioning is handled by the input.\n\t}\n}\n\n@Injectable()\nexport class LuMultiSelectPanelRefFactory {\n\tprotected overlay = inject(Overlay);\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected positionBuilder = inject(OverlayPositionBuilder);\n\tprotected scrollStrategies = inject(ScrollStrategyOptions);\n\tprotected parentInjector = inject(Injector);\n\tprivate selectLabelId = inject(SELECT_LABEL_ID);\n\tprivate selectId = inject(SELECT_ID);\n\n\tbuildPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, defaultOverlayConfigOverride: OverlayConfig = {}): LuMultiSelectPanelRef<T> {\n\t\tconst defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);\n\n\t\tconst overlayRef = this.overlay.create(defaultOverlayConfig);\n\n\t\toverlayRef.hostElement.style.transitionProperty = 'height';\n\t\toverlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)';\n\n\t\taddAttributesOnCdkContainer(overlayRef, this.selectLabelId, this.selectId);\n\n\t\treturn new MultiSelectPanelRef(overlayRef, this.parentInjector, selectInput, defaultOverlayConfig.positionStrategy);\n\t}\n\n\tbuildAndAttachPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, host: ViewContainerRef): LuMultiSelectPanelRef<T> {\n\t\treturn new MultiSelectPanelDOMHostRef(host, this.parentInjector, selectInput);\n\t}\n\n\tprotected buildDefaultOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig {\n\t\tconst overlayConfig: OverlayConfig = { ...overlayConfigOverride };\n\n\t\tconst config = { overlapInput: false, offsetY: 2 };\n\t\toverlayConfig.positionStrategy = this.positionBuilder\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t.withGrowAfterOpen(true)\n\t\t\t.withLockedPosition(false)\n\t\t\t.withViewportMargin(10)\n\t\t\t.withPositions([\n\t\t\t\tthis.buildPosition('bottom', 'right', config),\n\t\t\t\tthis.buildPosition('bottom', 'left', config),\n\t\t\t\tthis.buildPosition('top', 'right', config),\n\t\t\t\tthis.buildPosition('top', 'left', config),\n\t\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n\n\tprotected buildPosition(\n\t\tyDirection: 'top' | 'bottom',\n\t\txDirection: 'left' | 'right',\n\t\tconfig: {\n\t\t\toffsetX?: number;\n\t\t\toffsetY?: number;\n\t\t\toverlapInput: boolean;\n\t\t},\n\t): ConnectedPosition {\n\t\tconst originX = xDirection === 'right' ? 'start' : 'end';\n\t\tconst overlayX = originX;\n\n\t\tconst oppositeYDirection = yDirection === 'top' ? 'bottom' : 'top';\n\t\tconst { originY, overlayY } = config.overlapInput\n\t\t\t? ({\n\t\t\t\t\toriginY: oppositeYDirection,\n\t\t\t\t\toverlayY: oppositeYDirection,\n\t\t\t\t} as const)\n\t\t\t: ({ originY: yDirection, overlayY: oppositeYDirection } as const);\n\n\t\treturn {\n\t\t\toriginX,\n\t\t\toriginY,\n\t\t\toverlayX,\n\t\t\toverlayY,\n\t\t\t...(config.offsetX ? { offsetX: xDirection === 'right' ? config.offsetX : -config.offsetX } : {}),\n\t\t\t...(config.offsetY ? { offsetY: yDirection === 'bottom' ? config.offsetY : -config.offsetY } : {}),\n\t\t};\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tHostBinding,\n\tHostListener,\n\tinject,\n\tInput,\n\tmodel,\n\tnumberAttribute,\n\tOnDestroy,\n\tOnInit,\n\tSignal,\n\tsignal,\n\tTemplateRef,\n\tType,\n\tviewChild,\n\tViewContainerRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ClearComponent } from '@lucca-front/ng/clear';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LuOptionContext, provideLuSelectLabelsAndIds, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective, FilterPillLabelDirective } from '@lucca-front/ng/filter-pills';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { Subject } from 'rxjs';\nimport { LuMultiSelectDefaultDisplayerComponent } from '../displayer';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuMultiSelectPanelRefFactory } from './panel-ref.factory';\nimport { LuMultiSelectPanelRef } from './panel.model';\n\n@Component({\n\tselector: 'lu-multi-select',\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrl: './select-input.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [AsyncPipe, LuTooltipModule, ɵLuOptionOutletDirective, FilterPillDisplayerDirective, FilterPillLabelDirective, ClearComponent],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuSelectInputComponent,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t},\n\t\tprovideLuSelectLabelsAndIds(),\n\t\tLuMultiSelectPanelRefFactory,\n\t\t{\n\t\t\tprovide: FILTER_PILL_INPUT_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t},\n\t],\n\thost: {\n\t\tclass: 'multiSelect',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor, OnDestroy, OnInit {\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\tshowColon: false;\n\n\tvaluesTpl = model<TemplateRef<LuOptionContext<T[]>> | Type<unknown>>(LuMultiSelectDefaultDisplayerComponent);\n\n\t@Input({ transform: numberAttribute })\n\tmaxValuesShown = 500;\n\n\t@Input({ transform: booleanAttribute })\n\tkeepSearchAfterSelection = false;\n\n\t@Input()\n\tfilterPillLabelPlural: string;\n\n\toverride selectParent$ = new Subject<void>();\n\toverride selectChildren$ = new Subject<void>();\n\n\t@HostBinding('class.mod-filterPill')\n\tpublic get filterPillClass() {\n\t\treturn this.filterPillMode;\n\t}\n\n\thideCombobox = computed(() => this.valueSignal()?.length > 1);\n\n\tfilterPillPanelAnchorRef = viewChild('filterPillPanelAnchor', { read: ViewContainerRef });\n\n\toverride isFilterPillEmpty = computed(() => {\n\t\tconst valueSignal = this.valueSignal();\n\t\treturn !valueSignal || valueSignal.length === 0;\n\t});\n\n\tpublic valueLength = computed(() => this.valueSignal()?.length ?? 0);\n\tpublic useSingleOptionDisplayer: Signal<boolean> = signal(true);\n\toverride _value: T[] = [];\n\n\tpublic override get panelRef(): LuMultiSelectPanelRef<T> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected override _panelRef?: LuMultiSelectPanelRef<T>;\n\n\tprotected panelRefFactory = inject(LuMultiSelectPanelRefFactory);\n\n\t/**\n\t * This is used to tell the displayer to focus on the input element\n\t * keepClue is used to avoid triggering an update which would open the panel,\n\t * mainly for when we want to focus without opening the panel\n\t */\n\tpublic readonly focusInput$ = new Subject<void | { keepClue: boolean }>();\n\n\tpublic readonly emptyClue$ = new Subject<void>();\n\n\t@HostListener('keydown.control.enter')\n\tpublic selectParentOnly() {\n\t\tthis.selectParent$.next();\n\t}\n\n\t@HostListener('keydown.shift.enter')\n\tpublic selectChildrenOnly() {\n\t\tthis.selectChildren$.next();\n\t}\n\n\tpublic override focusInput(): void {\n\t\tthis.focusInput$.next({ keepClue: true });\n\t}\n\n\tpublic override emptyClue(): void {\n\t\tthis.emptyClue$.next();\n\t}\n\n\tpublic override writeValue(value: T[]): void {\n\t\tsuper.writeValue(value);\n\t\tthis.panelRef?.updateSelectedOptions(value);\n\t}\n\n\tpublic override updateValue(value: T[], skipFocus = false): void {\n\t\tsuper.updateValue(value, skipFocus, this.keepSearchAfterSelection);\n\t\tif (!skipFocus) {\n\t\t\tthis.focusInput();\n\t\t}\n\t}\n\n\tupdatePosition() {\n\t\tthis.updatePositionFn?.();\n\t}\n\n\tprotected override buildPanelRef(): LuMultiSelectPanelRef<T> {\n\t\treturn this.panelRefFactory.buildPanelRef(this, this.overlayConfig);\n\t}\n\n\tprotected override bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.bindInputToPanelRefEvents();\n\t}\n\n\toverride enableFilterPillMode() {\n\t\tthis._panelRef = this.panelRefFactory.buildAndAttachPanelRef(this, this.filterPillPanelAnchorRef());\n\t\tsuper.enableFilterPillMode();\n\t}\n\n\thasValue(): boolean {\n\t\treturn !!this.value?.length;\n\t}\n\n\toverride clearValue(event?: Event): void {\n\t\tevent?.stopPropagation();\n\t\tthis.onChange?.([]);\n\t\tthis.value = [];\n\t\tthis.focusInput$.next({ keepClue: true });\n\t\tthis.panelRef?.updateSelectedOptions([]);\n\t}\n\n\toverride ngOnDestroy() {\n\t\tsuper.ngOnDestroy();\n\t\tthis.focusInput$.complete();\n\t}\n}\n","<ng-container *luOptionOutlet=\"valuesTpl(); value: value || []\" />\n\n@if (!filterPillMode) {\n\t@if (hasValue() && clearable && (disabled$ | async) === false) {\n\t\t<lu-clear class=\"multipleSelect-clear\" (onClear)=\"clearValue($event)\">{{ intl.clear }}</lu-clear>\n\t}\n\n\t<span aria-hidden=\"true\" class=\"multipleSelect-arrow lucca-icon icon-arrowChevronBottom\"></span>\n\t<span aria-hidden=\"true\" class=\"multipleSelect-searchIcon lucca-icon icon-searchMagnifyingGlass\"></span>\n}\n\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<div class=\"multipleSelect-displayer-filter\">\n\t\t@if (useSingleOptionDisplayer() && valueLength() === 1) {\n\t\t\t<div class=\"multipleSelect-pill-displayer-chip\">\n\t\t\t\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value[0]\" />\n\t\t\t</div>\n\t\t}\n\t</div>\n</ng-container>\n<ng-container *luFilterPillLabel=\"let label = label; let colon = colon\">\n\t@let minCount = useSingleOptionDisplayer() ? 1 : 0;\n\t@if (valueLength() > minCount) {\n\t\t<span class=\"multipleSelect-pill-displayer-label\">{{ valueLength() }}&nbsp;{{ filterPillLabelPlural }}</span>\n\t} @else {\n\t\t{{ label }}\n\t\t@if (valueLength() === 1) {\n\t\t\t{{ colon }}\n\t\t}\n\t}\n</ng-container>\n","export const Translations = {\n\t'nl-BE': {\n\t\totherResult: 'ander resultaat',\n\t\totherResults: 'andere resultaten',\n\t\tshowResultsDetails: 'Zie details',\n\t\tremoveOption: 'Optie verwijderen',\n\t},\n\tnl: {\n\t\totherResult: 'ander resultaat',\n\t\totherResults: 'andere resultaten',\n\t\tshowResultsDetails: 'Zie details',\n\t\tremoveOption: 'Optie verwijderen',\n\t},\n\tit: {\n\t\totherResult: 'altro risultato',\n\t\totherResults: 'altri risultati',\n\t\tshowResultsDetails: 'Vedere il dettaglio',\n\t\tremoveOption: 'Cancellare l’opzione',\n\t},\n\tfr: {\n\t\totherResult: 'autre résultat',\n\t\totherResults: 'autres résultats',\n\t\tshowResultsDetails: 'Voir le détail',\n\t\tremoveOption: \"Supprimer l'option\",\n\t},\n\tpt: {\n\t\totherResult: 'outro resultado',\n\t\totherResults: 'outros resultados',\n\t\tshowResultsDetails: 'Mostrar detalhes',\n\t\tremoveOption: 'Remove option',\n\t},\n\tes: {\n\t\totherResult: 'otro resultado',\n\t\totherResults: 'otros resultados',\n\t\tshowResultsDetails: 'Ver los detalles',\n\t\tremoveOption: 'Eliminar la opción',\n\t},\n\tde: {\n\t\totherResult: 'anderes Ergebnis',\n\t\totherResults: 'andere Ergebnisse',\n\t\tshowResultsDetails: 'Details anzeigen ',\n\t\tremoveOption: 'Option löschen',\n\t},\n\ten: {\n\t\totherResult: 'other result',\n\t\totherResults: 'other results',\n\t\tshowResultsDetails: 'Show details',\n\t\tremoveOption: 'Remove option',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS = new InjectionToken('LuMultiSelectDisplayerTranslations', {\n\tfactory: () => luMultiSelectDisplayerTranslations,\n});\n\nexport interface ILuMultiSelectDisplayerLabel {\n\totherResult: string;\n\totherResults: string;\n\tshowResultsDetails: string;\n\tremoveOption: string;\n}\n\nexport const luMultiSelectDisplayerTranslations: LuTranslation<ILuMultiSelectDisplayerLabel> = Translations;\n","import { InjectionToken, Signal } from '@angular/core';\nimport { LuMultiSelectionMode } from '../../select.model';\n\nexport interface LuMultiSelectWithSelectAllContext {\n\tsetSelectAll(value: boolean): void;\n\tmode: Signal<LuMultiSelectionMode>;\n\tvalues: Signal<unknown[]>;\n\tdisplayerLabel: Signal<string>;\n\ttotalCount: Signal<number>;\n\tdisplayerCount: Signal<number>;\n}\n\nexport const MULTI_SELECT_WITH_SELECT_ALL_CONTEXT = new InjectionToken<LuMultiSelectWithSelectAllContext>('LuMultiSelectWithSelectAllContext');\n","import { DestroyRef, Directive, ElementRef, HostBinding, HostListener, inject, OnInit } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { getIntl, isNotNil, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { of } from 'rxjs';\nimport { map, startWith, switchMap } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from '../input/select-all/select-all.models';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuMultiSelectContentDisplayerComponent } from './content-displayer/content-displayer.component';\n\n@Directive({\n\tselector: '[luMultiSelectDisplayerInput]',\n\thost: {\n\t\t'aria-haspopup': 'listbox',\n\t\trole: 'combobox',\n\t\tclass: 'multipleSelect-displayer-search',\n\t\ttype: 'text',\n\t},\n\thostDirectives: [InputDirective],\n})\nexport class LuMultiSelectDisplayerInputDirective<T> implements OnInit {\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT, { optional: true });\n\tcontentDisplayer = inject(LuMultiSelectContentDisplayerComponent, { optional: true });\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\telementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\tdestroyRef = inject(DestroyRef);\n\n\t@HostBinding('attr.aria-expanded')\n\tget panelOpen() {\n\t\treturn this.#panelOpen();\n\t}\n\n\t@HostBinding('attr.aria-activedescendant')\n\tget activeDescendant() {\n\t\treturn this.#activeDescendant();\n\t}\n\n\t@HostBinding('attr.aria-controls')\n\tget controls() {\n\t\treturn this.select.ariaControls;\n\t}\n\n\t@HostBinding('disabled')\n\tget disabled() {\n\t\treturn this.#disabled();\n\t}\n\n\t@HostBinding('placeholder')\n\tget placeholder() {\n\t\treturn this.#placeholder();\n\t}\n\n\t@HostBinding('readonly')\n\tget readonly() {\n\t\treturn !this.select.searchable;\n\t}\n\n\t@HostListener('input')\n\tonInput() {\n\t\tthis.select.clueChanged(this.elementRef.nativeElement.value);\n\t}\n\n\t#panelOpen = toSignal(this.select.isPanelOpen$);\n\t#activeDescendant = toSignal(this.select.activeDescendant$);\n\t#disabled = toSignal(this.select.disabled$);\n\t#placeholder = toSignal(\n\t\tthis.context.option$.pipe(\n\t\t\tstartWith([]),\n\t\t\tswitchMap((options) => {\n\t\t\t\tif ((options || []).length > 0) {\n\t\t\t\t\treturn of('');\n\t\t\t\t}\n\t\t\t\treturn this.select.placeholder$.pipe(map((placeholder) => ((isNotNil(placeholder) && placeholder.length > 0) || this.contentDisplayer ? placeholder : this.intl.placeholder)));\n\t\t\t}),\n\t\t),\n\t);\n\n\tconstructor() {\n\t\tif (this.selectAllContext) {\n\t\t\tɵeffectWithDeps([this.selectAllContext.mode], (mode) => {\n\t\t\t\tif (mode === 'all') {\n\t\t\t\t\tthis.#clearText();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: boolean }) => {\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.#clearText();\n\t\t\t}\n\t\t\tthis.elementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t});\n\t}\n\n\t#clearText() {\n\t\tthis.elementRef.nativeElement.value = '';\n\t\tthis.select.clueChanged('');\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from '../../displayer/default-displayer.translate';\nimport { LuMultiSelectDisplayerInputDirective } from '../../displayer/displayer-input.directive';\nimport { LuMultiSelectInputComponent } from '../select-input.component';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Component({\n\tselector: 'lu-multi-select-all-displayer',\n\timports: [LuMultiSelectDisplayerInputDirective, ɵLuOptionOutletDirective, ChipComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\" [class.is-filled]=\"isFilled()\">\n\t\t\t<input type=\"text\" luMultiSelectDisplayerInput />\n\n\t\t\t@if (displayerCount() !== null) {\n\t\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t\t@if (displayerCount() === 1 && isIncludeMode()) {\n\t\t\t\t\t\t<lu-chip withEllipsis (kill)=\"unselectOption(select.value[0], $event)\" class=\"multipleSelect-displayer-chip\" [unkillable]=\"disabled()\">\n\t\t\t\t\t\t\t<ng-template *luOptionOutlet=\"select.displayerTpl(); value: select.value[0]\" />\n\t\t\t\t\t\t</lu-chip>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>{{ displayerCount() }} {{ displayerLabel() }}</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tinline-size: 100%;\n\t\t}\n\t`,\n})\nexport class LuMultiSelectAllDisplayerComponent<TValue> {\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly select = inject<LuMultiSelectInputComponent<TValue>>(LuMultiSelectInputComponent);\n\n\treadonly isFilled = computed(() => this.selectAllContext.mode() !== 'none');\n\treadonly isIncludeMode = computed(() => this.selectAllContext.mode() === 'include');\n\treadonly displayerLabel = this.selectAllContext.displayerLabel;\n\treadonly displayerCount = this.selectAllContext.displayerCount;\n\n\treadonly intl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS);\n\treadonly disabled = toSignal(this.select.disabled$);\n\n\treadonly inputElementRef = viewChild.required<LuMultiSelectDisplayerInputDirective<TValue>, ElementRef<HTMLInputElement>>(LuMultiSelectDisplayerInputDirective, { read: ElementRef });\n\n\tunselectOption(option: TValue, $event: Event): void {\n\t\t$event.stopPropagation();\n\t\t$event.preventDefault();\n\t\tthis.select.updateValue(\n\t\t\tthis.select.value.filter((o) => o !== option),\n\t\t\ttrue,\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\tthis.inputElementRef().nativeElement.focus();\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ɵCoreSelectPanelElement } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { CheckboxInputComponent } from '@lucca-front/ng/forms';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../../select.translate';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Component({\n\tselector: 'lu-multi-select-all-header',\n\timports: [FormsModule, CheckboxInputComponent, FormFieldComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [ɵCoreSelectPanelElement],\n\tstyleUrl: './multi-select-all-header.component.scss',\n\ttemplate: `\n\t\t<div class=\"multiSelectAllDisplayer\">\n\t\t\t<lu-form-field [label]=\"intl.selectAll\">\n\t\t\t\t<lu-checkbox-input\n\t\t\t\t\tclass=\"multiSelectAllDisplayer-checkbox\"\n\t\t\t\t\t[ngModel]=\"isSelected()\"\n\t\t\t\t\t(ngModelChange)=\"selectAllContext.setSelectAll($event)\"\n\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t[mixed]=\"mixed()\"\n\t\t\t\t/>\n\t\t\t</lu-form-field>\n\t\t</div>\n\t`,\n})\nexport class LuMultiSelectAllHeaderComponent {\n\treadonly intl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly mixed = computed(() => this.selectAllContext.mode() === 'exclude' || this.selectAllContext.mode() === 'include');\n\treadonly isSelected = computed(() => this.selectAllContext.mode() === 'all' || this.mixed());\n\treadonly #selectableItem = inject(ɵCoreSelectPanelElement);\n\treadonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tconstructor() {\n\t\tthis.#selectableItem.id.set(`multi-select-select-all`);\n\t\teffect(() => {\n\t\t\tif (this.#selectableItem.isHighlighted()) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.#elementRef.nativeElement.scrollIntoView();\n\t\t\t\t}, 50);\n\t\t\t}\n\t\t\tif (this.isSelected()) {\n\t\t\t\tthis.#selectableItem.isSelected.set(true);\n\t\t\t}\n\t\t});\n\t\toutputToObservable(this.#selectableItem.selected)\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.selectAllContext.setSelectAll(!this.isSelected());\n\t\t\t});\n\t}\n}\n","import { computed, Directive, forwardRef, inject, input, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, ɵIsSelectedStrategy } from '@lucca-front/ng/core-select';\nimport { LuOptionComparer } from '@lucca-front/ng/option';\nimport { LuMultiSelection, LuMultiSelectionMode } from '../../select.model';\nimport { LuMultiSelectInputComponent } from '../select-input.component';\nimport { LuMultiSelectAllDisplayerComponent } from './multi-select-all-displayer.component';\nimport { LuMultiSelectAllHeaderComponent } from './multi-select-all-header.component';\nimport { LuMultiSelectWithSelectAllContext, MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-multi-select[withSelectAll]',\n\tproviders: [\n\t\t{\n\t\t\tprovide: ɵIsSelectedStrategy,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectWithSelectAllDirective),\n\t\t},\n\t\t{\n\t\t\tprovide: MULTI_SELECT_WITH_SELECT_ALL_CONTEXT,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectWithSelectAllDirective),\n\t\t},\n\t],\n})\nexport class LuMultiSelectWithSelectAllDirective<TValue> extends ɵIsSelectedStrategy<TValue> implements LuMultiSelectWithSelectAllContext {\n\treadonly #select = inject<LuMultiSelectInputComponent<TValue>>(LuMultiSelectInputComponent);\n\n\treadonly displayerLabel = input.required<string>({ alias: 'withSelectAllDisplayerLabel' });\n\n\treadonly #mode = signal<LuMultiSelectionMode>('none');\n\treadonly #values = signal<TValue[]>([]);\n\n\treadonly mode = this.#mode.asReadonly();\n\treadonly values = this.#values.asReadonly();\n\treadonly totalCount = toSignal(inject(CORE_SELECT_API_TOTAL_COUNT_PROVIDER).totalCount$);\n\n\treadonly #hasValue = computed(() => this.mode() !== 'none');\n\n\treadonly #valuesCount = computed(() => this.values().length);\n\treadonly displayerCount = computed(() => {\n\t\tswitch (this.mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn this.totalCount();\n\t\t\tcase 'include':\n\t\t\t\treturn this.#valuesCount();\n\t\t\tcase 'exclude':\n\t\t\t\treturn this.totalCount() - this.#valuesCount();\n\t\t\tcase 'none':\n\t\t\t\treturn null;\n\t\t}\n\t});\n\n\treadonly #selectAllValue = computed<LuMultiSelection<TValue>>(() => {\n\t\tconst mode = this.#mode();\n\t\treturn mode === 'all' || mode === 'none' ? { mode } : { mode, values: this.#values() };\n\t});\n\n\t// Keep the original registerOnChange / writeValue / clearValye methods\n\treadonly #selectRegisterOnChange = this.#select.registerOnChange.bind(this.#select) as LuMultiSelectInputComponent<TValue>['registerOnChange'];\n\treadonly #selectWriteValue = this.#select.writeValue.bind(this.#select) as LuMultiSelectInputComponent<TValue>['writeValue'];\n\treadonly #selectClearValue = this.#select.clearValue.bind(this.#select) as LuMultiSelectInputComponent<TValue>['clearValue'];\n\n\t#onChange?: (values: LuMultiSelection<TValue>) => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.#select.registerOnChange = (fn) => this.registerOnChange(fn);\n\t\tthis.#select.writeValue = (value) => this.writeValue(value);\n\t\tthis.#select.clearValue = ($event) => this.clearValue($event);\n\n\t\tthis.#select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\tthis.#select.valuesTpl.set(LuMultiSelectAllDisplayerComponent);\n\t\tthis.#select.hasValue = () => this.#hasValue();\n\t\tthis.#select.isFilterPillEmpty = computed(() => !this.#hasValue());\n\t\tthis.#select.useSingleOptionDisplayer = computed(() => this.#mode() === 'include');\n\t\tthis.#select.valueLength = this.displayerCount;\n\t}\n\n\tsetSelectAll(selectAll: boolean): void {\n\t\tthis.#selectWriteValue([]);\n\n\t\tif (this.#values().length) {\n\t\t\tthis.#values.set([]);\n\t\t}\n\t\tthis.#mode.set(selectAll ? 'all' : 'none');\n\t\tthis.#onChange?.(this.#selectAllValue());\n\t}\n\n\toverride isSelected(option: TValue, selectedOptions: TValue[], optionComparer: LuOptionComparer<TValue>): boolean {\n\t\tswitch (this.#mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn true;\n\t\t\tcase 'include':\n\t\t\t\treturn selectedOptions.some((o) => optionComparer(o, option));\n\t\t\tcase 'exclude':\n\t\t\t\treturn !selectedOptions.some((o) => optionComparer(o, option));\n\t\t\tcase 'none':\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\toverride isGroupSelected(_options: TValue[], notSelectedOptions: TValue[]): boolean {\n\t\tswitch (this.#mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn true;\n\t\t\tcase 'include':\n\t\t\t\treturn notSelectedOptions.length === 0;\n\t\t\tcase 'exclude':\n\t\t\t\treturn notSelectedOptions.length > 0;\n\t\t\tcase 'none':\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: TValue[] | LuMultiSelection<TValue>) => void): void {\n\t\tthis.#onChange = fn;\n\n\t\tthis.#selectRegisterOnChange((values: TValue[]) => {\n\t\t\tthis.#values.set(values);\n\t\t\tconst oldMode = this.#mode();\n\t\t\tthis.#mode.set(this.#getNextMode(oldMode, values));\n\t\t\tthis.#onChange?.(this.#selectAllValue());\n\n\t\t\t// When all values are selected/unselected one by one, we should reset internal select value to avoid weird behavior when selecting/unselecting after that\n\t\t\tif (values.length && (this.#mode() === 'all' || this.#mode() === 'none')) {\n\t\t\t\tthis.#selectWriteValue([]);\n\t\t\t}\n\t\t});\n\t}\n\n\twriteValue(value: TValue[] | LuMultiSelection<TValue>): void {\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new Error('MultiSelectWithSelectAllDirective does not support array values. The form value or ngModel must be a LuMultiSelection<TValue>.');\n\t\t}\n\n\t\tlet mode: LuMultiSelectionMode;\n\t\tlet values: TValue[];\n\n\t\tif (!value) {\n\t\t\tvalues = [];\n\t\t\tmode = 'none';\n\t\t} else {\n\t\t\tvalues = value.mode === 'exclude' || value.mode === 'include' ? value.values : [];\n\t\t\tmode = value.mode;\n\t\t}\n\n\t\tthis.#selectWriteValue(values);\n\t\tthis.#mode.set(mode);\n\t\tthis.#values.set(values);\n\t}\n\n\tclearValue($event: Event): void {\n\t\tthis.#mode.set('none');\n\t\tthis.#selectClearValue($event);\n\t}\n\n\t#getNextMode(fromMode: LuMultiSelectionMode, values: TValue[]): LuMultiSelectionMode {\n\t\t// When none selected, \"include\" -> \"none\" and \"exclude\" -> \"all\"\n\t\tif (values.length === 0) {\n\t\t\treturn fromMode === 'include' || fromMode === 'none' ? 'none' : 'all';\n\t\t}\n\n\t\tconst allSelected = values.length === this.totalCount();\n\n\t\t// When all selected, \"include\" -> \"all\" and \"exclude\" -> \"none\"\n\t\tif (allSelected) {\n\t\t\treturn fromMode === 'include' || fromMode === 'none' ? 'all' : 'none';\n\t\t}\n\n\t\t// The first value selected will transition from \"all\" to \"exclude\"\n\t\tif (fromMode === 'all') {\n\t\t\treturn 'exclude';\n\t\t}\n\n\t\t// The first value selected will transition from \"none\" to \"include\"\n\t\tif (fromMode === 'none') {\n\t\t\treturn 'include';\n\t\t}\n\n\t\t// No match, keep the same mode\n\t\treturn fromMode;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { LuMultiSelectInputComponent } from '../../input';\nimport { LuMultiSelectDisplayerInputDirective } from '../displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-content-displayer',\n\timports: [LuMultiSelectDisplayerInputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\">\n\t\t\t<input type=\"text\" autocomplete=\"off\" #inputElement luMultiSelectDisplayerInput />\n\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyleUrl: './content-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectContentDisplayerComponent<T> {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Input, OnInit, ViewChild, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { BehaviorSubject } from 'rxjs';\nimport { LuMultiSelectInputComponent } from '../../input';\nimport { LuMultiSelectDisplayerInputDirective } from '../displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-counter-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ChipComponent, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\" [class.is-filled]=\"(selectedOptions$ | async)?.length > 0\">\n\t\t\t<input type=\"text\" autocomplete=\"off\" #inputElement luMultiSelectDisplayerInput />\n\t\t\t@if (selectedOptions$ | async; as selectedOptions) {\n\t\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t\t@if (selectedOptions?.length === 1) {\n\t\t\t\t\t\t<div class=\"multipleSelect-displayer-chip chip mod-unkillable\">\n\t\t\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: selectedOptions[0]\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t@if (selectedOptions?.length > 1) {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>{{ selectedOptions?.length }} {{ label }}</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyleUrl: './counter-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectCounterDisplayerComponent<T> implements OnInit {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\t@ViewChild('inputElement')\n\tinputElementRef: ElementRef<HTMLInputElement>;\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\tselectedOptions$ = new BehaviorSubject<T[]>([]);\n\n\t@Input()\n\tset selected(options: T[]) {\n\t\tthis.selectedOptions$.next(options);\n\t\tthis.context.option$.next(options);\n\t}\n\n\t@Input({ required: true })\n\tlabel: string;\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t\t\tthis.select.clueChanged('');\n\t\t\t}\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t});\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, OnInit, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input/select-input.component';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate';\nimport { LuMultiSelectDisplayerInputDirective } from './displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective, ChipComponent],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer\">\n\t\t\t<input autocomplete=\"off\" #inputElement (keydown.backspace)=\"inputBackspace()\" (keydown.space)=\"inputSpace($event)\" luMultiSelectDisplayerInput />\n\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" withEllipsis (kill)=\"unselectOption(option, $event)\" [unkillable]=\"select.disabled$ | async\">\n\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: option\" />\n\t\t\t\t</lu-chip>\n\t\t\t}\n\t\t\t@if (overflowOptions$ | async; as overflow) {\n\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>+ {{ overflow }}</lu-chip>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyleUrl: './default-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectDefaultDisplayerComponent<T> implements OnInit {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\tintl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\t@ViewChild('inputElement')\n\tinputElementRef: ElementRef<HTMLInputElement>;\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tdisplayedOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\tif (this.select.maxValuesShown) {\n\t\t\t\treturn (options || []).slice(0, this.select.maxValuesShown);\n\t\t\t}\n\t\t\treturn options;\n\t\t}),\n\t);\n\n\toverflowOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\treturn Math.max(0, (options || []).length - this.select.maxValuesShown);\n\t\t}),\n\t);\n\n\tunselectOption(option: T, $event?: Event): void {\n\t\tif ($event) {\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t\tthis.select.updateValue(\n\t\t\tthis.value.filter((o) => o !== option),\n\t\t\ttrue,\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\tthis.select.updatePosition();\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t});\n\t}\n\n\tinputBackspace(): void {\n\t\tif (this.value.length > 0 && this.inputElementRef.nativeElement.value.length === 0) {\n\t\t\tthis.unselectOption(this.value[this.value.length - 1]);\n\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t}\n\t}\n\n\tinputSpace(event: Event): void {\n\t\tif (this.inputElementRef.nativeElement.value?.length === 0) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.select.panelRef?.selectCurrentlyHighlightedValue();\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t\t\tthis.select.clueChanged('');\n\t\t\t}\n\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t});\n\t}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { LuOptionContext } from '@lucca-front/ng/core-select';\nimport { LuMultiSelectInputComponent } from '../input';\n\n@Directive({\n\tselector: '[luMultiDisplayer]',\n})\nexport class LuMultiDisplayerDirective<T> {\n\t@Input('luMultiDisplayerSelect') set select(select: LuMultiSelectInputComponent<T>) {\n\t\tselect.valuesTpl.set(this.templateRef);\n\t}\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<T[]>>) {}\n\n\tpublic static ngTemplateContextGuard<T>(_dir: LuMultiDisplayerDirective<T>, ctx: unknown): ctx is LuOptionContext<T[]> {\n\t\treturn true;\n\t}\n}\n","import { LuMultiSelection } from './select.model';\n\nexport function selectionToQueryParams<T, Key extends string>(key: Key, value: LuMultiSelection<T>, selector: (value: T) => unknown): Partial<Record<Key | `-${Key}`, string>> {\n\tif (value.mode === 'all' || value.mode === 'none') {\n\t\treturn {};\n\t}\n\treturn { [value.mode === 'include' ? key : `-${key}`]: value.values.map(selector).join(',') } as Record<Key | `-${Key}`, string>;\n}\n\n/**\n * Transforms a selection from withSelectAll, the complete list of options and a getKey function to a list of options.\n *\n * @example\n * ```ts\n * const selection = { mode: 'exclude', values: [{ id: 1, name: 'foo' }] };\n * const allOptions = [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'baz' }];\n *\n * const selectedOptions = selectionToOptions(selection, allOptions, (o) => o.id);\n * ```\n */\nexport function selectionToOptions<T>(selection: LuMultiSelection<T>, options: T[], getKeyFn: (value: T) => unknown): T[] {\n\tswitch (selection.mode) {\n\t\tcase 'include':\n\t\t\treturn selection.values;\n\t\tcase 'exclude': {\n\t\t\tconst excludedKeys = new Set(selection.values.map(getKeyFn));\n\t\t\treturn options.filter((o) => !excludedKeys.has(getKeyFn(o)));\n\t\t}\n\t\tcase 'all':\n\t\t\treturn options;\n\t\tcase 'none':\n\t\t\treturn [];\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { LuMultiSelection } from './select.model';\n\nconst required = (control: AbstractControl<LuMultiSelection<unknown>>): ValidationErrors | null => {\n\tif (!control.value || control.value.mode === 'none') {\n\t\treturn { required: true };\n\t}\n\treturn null;\n};\n\nexport const LuMultiSelectionValidators = {\n\trequired,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Translations","ɵIsSelectedStrategy","ɵgetGroupTemplateLocation","ɵLuOptionComponent","ɵLuOptionGroupPipe","ɵCoreSelectPanelElement","ɵLuOptionOutletDirective","ɵeffectWithDeps","i1"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-multi-select.mjs","sources":["../../../packages/ng/multi-select/translations.ts","../../../packages/ng/multi-select/select.translate.ts","../../../packages/ng/multi-select/input/panel.model.ts","../../../packages/ng/multi-select/select.model.ts","../../../packages/ng/multi-select/panel/option-group-context.pipe.ts","../../../packages/ng/multi-select/panel/panel.component.ts","../../../packages/ng/multi-select/panel/panel.component.html","../../../packages/ng/multi-select/input/panel-ref.factory.ts","../../../packages/ng/multi-select/input/select-input.component.ts","../../../packages/ng/multi-select/input/select-input.component.html","../../../packages/ng/multi-select/displayer/translations.ts","../../../packages/ng/multi-select/displayer/default-displayer.translate.ts","../../../packages/ng/multi-select/input/select-all/select-all.models.ts","../../../packages/ng/multi-select/displayer/displayer-input.directive.ts","../../../packages/ng/multi-select/input/select-all/multi-select-all-displayer.component.ts","../../../packages/ng/multi-select/input/select-all/multi-select-all-header.component.ts","../../../packages/ng/multi-select/input/select-all/with-select-all.directive.ts","../../../packages/ng/multi-select/displayer/content-displayer/content-displayer.component.ts","../../../packages/ng/multi-select/displayer/counter-displayer/counter-displayer.component.ts","../../../packages/ng/multi-select/displayer/default-displayer.component.ts","../../../packages/ng/multi-select/displayer/displayer.directive.ts","../../../packages/ng/multi-select/select.utils.ts","../../../packages/ng/multi-select/select.validators.ts","../../../packages/ng/multi-select/lucca-front-ng-multi-select.ts"],"sourcesContent":["export const Translations = {\n\t'nl-BE': {\n\t\tplaceholder: 'Selecteren...',\n\t\tsearch: 'Zoeken',\n\t\tclear: 'Selectie leegmaken',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\n\t\temptySelection: 'Selecteer elementen uit de lijst aan de linkerkant om te beginnen',\n\t\texpand: 'Vergroten',\n\t\treduce: 'Verkleinen',\n\t\tselectAll: 'Alles selecteren',\n\t\tunselectAll: 'Alles deselecteren',\n\t\tloading: 'Bezig met laden...',\n\t\temptyOptions: 'Er zijn geen waarden beschikbaar. Neem contact op met uw beheerder voor meer informatie.',\n\t\tselectCountOptions: 'Selecteer alle resultaten ({{optionsCount}})',\n\t},\n\tnl: {\n\t\tplaceholder: 'Selecteren...',\n\t\tsearch: 'Zoeken',\n\t\tclear: 'Selectie leegmaken',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\n\t\temptySelection: 'Selecteer elementen uit de lijst aan de linkerkant om te beginnen',\n\t\texpand: 'Vergroten',\n\t\treduce: 'Verkleinen',\n\t\tselectAll: 'Alles selecteren',\n\t\tunselectAll: 'Alles deselecteren',\n\t\tloading: 'Bezig met laden...',\n\t\temptyOptions: 'Er zijn geen waarden beschikbaar. Neem contact op met uw beheerder voor meer informatie.',\n\t\tselectCountOptions: 'Selecteer alle resultaten ({{optionsCount}})',\n\t},\n\tit: {\n\t\tplaceholder: 'Selezionare...',\n\t\tsearch: 'Cercare',\n\t\tclear: 'Cancellare la selezione',\n\t\tclearSearch: 'Cancellare la ricerca',\n\t\temptyResults: 'La ricerca non ha prodotto risultati.',\n\t\temptySelection: 'Per iniziare, seleziona gli elementi dall’elenco a sinistra',\n\t\texpand: 'Estendere',\n\t\treduce: 'Ridurre',\n\t\tselectAll: 'Selezionare tutto',\n\t\tunselectAll: 'Deselezionare tutto',\n\t\tloading: 'Caricamento in corso...',\n\t\temptyOptions: 'Nessun valore è disponibile. Contatta l’amministratore per maggiori informazioni.',\n\t\tselectCountOptions: 'Seleziona tutti i risultati ({{optionsCount}})',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionner…',\n\t\tsearch: 'Rechercher',\n\t\tclear: 'Vider la sélection',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptyResults: \"Votre recherche n'a donné aucun résultat.\",\n\t\temptySelection: 'Sélectionnez les éléments dans la liste de gauche pour commencer',\n\t\texpand: 'Étendre',\n\t\treduce: 'Réduire',\n\t\tselectAll: 'Tout sélectionner',\n\t\tunselectAll: 'Tout désélectionner',\n\t\tloading: 'Chargement en cours...',\n\t\temptyOptions: \"Aucune valeur n'est disponible. Contactez votre administrateur pour plus d'informations.\",\n\t\tselectCountOptions: 'Sélectionner tous les résultats ({{optionsCount}})',\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecionar..',\n\t\tsearch: 'Pesquisar',\n\t\tclear: 'Limpar seleção',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'A sua pesquisa não produziu resultados.',\n\t\temptySelection: 'Selecione itens na lista à esquerda para começar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reduzir',\n\t\tselectAll: 'Selecionar tudo',\n\t\tunselectAll: 'Desmarcar tudo',\n\t\tloading: 'Carregando...',\n\t\temptyOptions: 'Não existe nenhum valor disponível. Contacte o seu administrador para obter mais informações.',\n\t\tselectCountOptions: 'Selecionar todos os resultados ({{optionsCount}})',\n\t},\n\tes: {\n\t\tplaceholder: 'Seleccionar…',\n\t\tsearch: 'Buscar',\n\t\tclear: 'Vaciar la selección',\n\t\tclearSearch: 'Vaciar la búsqueda',\n\t\temptyResults: 'La búsqueda no ha dado ningún resultado.',\n\t\temptySelection: 'Seleccione los elementos de la lista de la izquierda para empezar',\n\t\texpand: 'Expandir',\n\t\treduce: 'Reducir',\n\t\tselectAll: 'Seleccionar todo',\n\t\tunselectAll: 'Desmarcar todo',\n\t\tloading: 'Cargando...',\n\t\temptyOptions: 'No hay ningún valor disponible. Ponte en contacto con tu administrador para obtener más información.',\n\t\tselectCountOptions: 'Seleccione todos los resultados ({{optionsCount}})',\n\t},\n\tde: {\n\t\tplaceholder: 'Auswählen…',\n\t\tsearch: 'Suchen',\n\t\tclear: 'Auswahl leeren',\n\t\tclearSearch: 'Suche leeren',\n\t\temptyResults: 'Ihre Suche hat keinen Treffer ergeben.',\n\t\temptySelection: 'Wählen Sie zuerst die Items in der Liste links aus.',\n\t\texpand: 'Erweitern',\n\t\treduce: 'Reduzieren',\n\t\tselectAll: 'Alles auswählen',\n\t\tunselectAll: 'Alles abwählen',\n\t\tloading: 'Lädt...',\n\t\temptyOptions: 'Es ist kein Wert verfügbar. Wenden Sie sich für weitere Informationen an Ihre:n Administrator:in.',\n\t\tselectCountOptions: 'Alle Ergebnisse auswählen ({{optionsCount}})',\n\t},\n\ten: {\n\t\tplaceholder: 'Select…',\n\t\tsearch: 'Search',\n\t\tclear: 'Clear selection',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'We couldn’t find any results that match your search.',\n\t\temptySelection: 'Select items from the list on the left to start',\n\t\texpand: 'Expand',\n\t\treduce: 'Collapse',\n\t\tselectAll: 'Select all',\n\t\tunselectAll: 'Deselect all',\n\t\tloading: 'Loading...',\n\t\temptyOptions: 'There are no values available. Contact your administrator for more information.',\n\t\tselectCountOptions: 'Select all results ({{optionsCount}})',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_MULTI_SELECT_TRANSLATIONS = new InjectionToken('LuMultiSelectTranslations', {\n\tfactory: () => luMultiSelectTranslations,\n});\n\nexport interface ILuMultiSelectLabel {\n\tplaceholder: string;\n\tsearch: string;\n\tclear: string;\n\tclearSearch: string;\n\temptyResults: string;\n\temptyOptions: string;\n\temptySelection: string;\n\texpand: string;\n\treduce: string;\n\tselectAll: string;\n\tunselectAll: string;\n\tloading: string;\n}\n\nexport const luMultiSelectTranslations: LuTranslation<ILuMultiSelectLabel> = Translations;\n","import { ChangeDetectorRef } from '@angular/core';\nimport { LuSelectPanelRef } from '@lucca-front/ng/core-select';\n\nexport abstract class LuMultiSelectPanelRef<T> extends LuSelectPanelRef<T, T[]> {\n\tabstract changeDetectorRef?: ChangeDetectorRef;\n\n\tabstract updateSelectedOptions(selectedOptions: T[]): void;\n\n\tabstract useDefaultPosition(): void;\n}\n","import { InjectionToken } from '@angular/core';\nimport type { LuMultiSelectInputComponent } from './input';\n\nexport const MULTI_SELECT_INPUT = new InjectionToken<LuMultiSelectInputComponent<unknown>>('MultiSelectInput');\n\nexport type LuMultiSelection<T> = { mode: 'include'; values: T[] } | { mode: 'exclude'; values: T[] } | { mode: 'none' } | { mode: 'all' };\n\nexport type LuMultiSelectionMode = LuMultiSelection<unknown>['mode'];\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ɵIsSelectedStrategy } from '@lucca-front/ng/core-select';\n\n@Pipe({\n\tname: 'luOptionsGroupContext',\n\tpure: true,\n})\nexport class LuOptionsGroupContextPipe<T> implements PipeTransform {\n\t#selectionStrategy = inject<ɵIsSelectedStrategy<T>>(ɵIsSelectedStrategy);\n\n\ttransform(groupOptions: T[], selectedOptions: T[], optionComparer: (option1: T, option2: T) => boolean): { notSelectedOptions: T[]; isGroupSelected: boolean } {\n\t\tconst notSelectedOptions = groupOptions.filter((o) => !selectedOptions.some((so) => optionComparer(so, o)));\n\n\t\treturn {\n\t\t\tnotSelectedOptions,\n\t\t\tisGroupSelected: this.#selectionStrategy.isGroupSelected(groupOptions, notSelectedOptions),\n\t\t};\n\t}\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, computed, forwardRef, inject, signal, TrackByFunction } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl, PortalDirective } from '@lucca-front/ng/core';\nimport {\n\tCoreSelectKeyManager,\n\tCoreSelectPanelInstance,\n\tLuIsOptionSelectedPipe,\n\tLuOptionGroup,\n\tSELECT_ID,\n\tSELECT_PANEL_INSTANCE,\n\tTreeDisplayPipe,\n\tTreeNode,\n\tɵCoreSelectPanelElement,\n\tɵgetGroupTemplateLocation,\n\tɵLuOptionComponent,\n\tɵLuOptionGroupPipe,\n} from '@lucca-front/ng/core-select';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { TreeBranchComponent } from '@lucca-front/ng/tree-select';\nimport { EMPTY } from 'rxjs';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LuMultiSelectPanelRef } from '../input/panel.model';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuOptionsGroupContextPipe } from './option-group-context.pipe';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs/operators';\n\n@Component({\n\tselector: 'lu-select-panel',\n\ttemplateUrl: './panel.component.html',\n\tstyleUrl: './panel.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tA11yModule,\n\t\tAsyncPipe,\n\t\tFormsModule,\n\t\tLuIsOptionSelectedPipe,\n\t\tɵLuOptionComponent,\n\t\tɵLuOptionGroupPipe,\n\t\tNgTemplateOutlet,\n\t\tPortalDirective,\n\t\tLuOptionsGroupContextPipe,\n\t\tɵCoreSelectPanelElement,\n\t\tIconComponent,\n\t\tTreeDisplayPipe,\n\t\tTreeBranchComponent,\n\t],\n\tproviders: [\n\t\tCoreSelectKeyManager,\n\t\t{\n\t\t\tprovide: SELECT_PANEL_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectPanelComponent),\n\t\t},\n\t],\n})\nexport class LuMultiSelectPanelComponent<T> implements AfterViewInit, CoreSelectPanelInstance {\n\tprotected selectInput = inject<LuMultiSelectInputComponent<T>>(MULTI_SELECT_INPUT);\n\tpanelRef = inject<LuMultiSelectPanelRef<T>>(LuMultiSelectPanelRef);\n\tselectId = inject(SELECT_ID);\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\toptions$ = this.selectInput.options$;\n\tgrouping = this.selectInput.groupingSignal;\n\ttreeGenerator = this.selectInput.treeGenerator;\n\tloading$ = this.selectInput.loading$;\n\tsearchable = this.selectInput.searchable;\n\toptionComparer = this.selectInput.optionComparer;\n\toptionKey = this.selectInput.optionKey;\n\n\ttrackOptionsBy: TrackByFunction<T> = (_, option) => this.optionKey(option);\n\ttrackGroupsBy: TrackByFunction<LuOptionGroup<T, unknown>> = (_, group) => group.key;\n\ttrackBranchesBy: TrackByFunction<TreeNode<T>> = (_, option) => this.optionKey(option.node);\n\n\tselectedOptions: T[] = this.selectInput.value || [];\n\toptionTpl = this.selectInput.optionTpl;\n\n\toptions = signal<ɵCoreSelectPanelElement<T>[]>([]);\n\tkeyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\n\tsomeGroupOptionEnabled = computed(() => {\n\t\treturn (groupOptions: T[]) => {\n\t\t\tconst disabledOptionIds = this.options()\n\t\t\t\t.filter((o) => o.disabled)\n\t\t\t\t.map((o) => this.optionKey(o.option()));\n\t\t\treturn groupOptions.some((option) => !disabledOptionIds.includes(this.optionKey(option)));\n\t\t};\n\t});\n\n\thasGrouping$ = toObservable(this.grouping).pipe(map((grouping) => !!grouping));\n\tpublic clueChange$ = this.selectInput.clue$;\n\tpublic shouldDisplayAddOption$ = this.selectInput.shouldDisplayAddOption$;\n\n\tgroupTemplateLocation$ = ɵgetGroupTemplateLocation(this.hasGrouping$, this.clueChange$, this.options$, this.searchable);\n\n\tonScroll(evt: Event): void {\n\t\tif (!(evt.target instanceof HTMLElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.target.scrollTop === 0) {\n\t\t\tthis.panelRef.previousPage.emit();\n\t\t}\n\n\t\tif (evt.target.scrollHeight - evt.target.scrollTop - evt.target.clientHeight < 1) {\n\t\t\tthis.panelRef.nextPage.emit();\n\t\t}\n\t}\n\n\tngAfterViewInit(): void {\n\t\tif (!this.options()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.initKeyManager();\n\t\tthis.panelRef.useDefaultPosition();\n\t}\n\n\ttoggleOption(option: T): void {\n\t\tconst matchingOption = this.selectedOptions.find((o) => this.optionComparer(o, option));\n\t\tthis.selectedOptions = matchingOption && option ? this.selectedOptions.filter((o) => o !== matchingOption) : [...this.selectedOptions, option];\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tsetTimeout(() => this.panelRef.updatePosition());\n\t}\n\n\ttoggleOptions(notSelectedOptions: T[], groupOptions: T[]): void {\n\t\t// Filter out disabled options\n\t\tconst disabledOptionIds = this.options()\n\t\t\t.filter((o) => o.disabled)\n\t\t\t.map((o) => this.optionKey(o.option()));\n\t\tconst enabledNotSelectedOptions = notSelectedOptions.filter((o) => !disabledOptionIds.includes(this.optionKey(o)));\n\t\tconst enabledGroupOptions = groupOptions.filter((o) => !disabledOptionIds.includes(this.optionKey(o)));\n\n\t\tif (enabledNotSelectedOptions.length) {\n\t\t\t// If some options are not selected, select them all\n\t\t\tthis.selectedOptions = [...this.selectedOptions, ...enabledNotSelectedOptions];\n\t\t} else {\n\t\t\t// If all options are already selected, unselect them all\n\t\t\tthis.selectedOptions = this.selectedOptions.filter((o) => !enabledGroupOptions.some((so) => this.optionComparer(so, o)));\n\t\t}\n\n\t\tthis.panelRef.emitValue(this.selectedOptions);\n\t\tsetTimeout(() => this.panelRef.updatePosition());\n\t}\n\n\tprotected initKeyManager(): void {\n\t\tthis.keyManager.init({\n\t\t\tqueryList: this.options,\n\t\t\toptions$: this.options$,\n\t\t\toptionComparer: this.optionComparer,\n\t\t\tactiveOptionIdChanged$: this.panelRef.activeOptionIdChanged,\n\t\t\tclueChange$: this.selectInput.searchable ? this.selectInput.clueChange : EMPTY,\n\t\t});\n\n\t\tif (this.selectedOptions?.length) {\n\t\t\tthis.keyManager.highlightOption(this.selectedOptions[0]);\n\t\t}\n\t}\n}\n","@if (\n\t{\n\t\toptions: (options$ | async) || [],\n\t\tclueChange: (clueChange$ | async) || \"\",\n\t\tgroupTemplateLocation: groupTemplateLocation$ | async,\n\t\tshouldDisplayAddOption: shouldDisplayAddOption$ | async,\n\t};\n\tas ctx\n) {\n\t<div class=\"lu-picker-panel lu-option-picker-panel mod-multiple\" data-testid=\"dialog-panel\">\n\t\t<div\n\t\t\tclass=\"lu-picker-content\"\n\t\t\t[class.is-loading]=\"loading$ | async\"\n\t\t\t[class.is-filled]=\"ctx.options.length > 0\"\n\t\t\ttabindex=\"0\"\n\t\t\trole=\"listbox\"\n\t\t\taria-multiselectable=\"true\"\n\t\t\t(scroll)=\"onScroll($event)\"\n\t\t>\n\t\t\t@if (selectInput.panelHeaderTpl(); as tpl) {\n\t\t\t\t<div>\n\t\t\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<div class=\"lu-picker-content-option\">\n\t\t\t\t@if (grouping() && ctx.groupTemplateLocation === \"group-header\") {\n\t\t\t\t\t@for (\n\t\t\t\t\t\tgroup of ctx.options | luOptionGroup: grouping().selector;\n\t\t\t\t\t\ttrack trackGroupsBy(groupIndex, group);\n\t\t\t\t\t\tlet groupIndex = $index\n\t\t\t\t\t) {\n\t\t\t\t\t\t<div class=\"lu-picker-content-group\" role=\"group\" attr.aria-labelledby=\"lu-select-{{ selectId }}-group-{{ groupIndex }}\">\n\t\t\t\t\t\t\t@let groupCtx = group.options | luOptionsGroupContext: selectedOptions : optionComparer;\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\t\telementId=\"lu-select-{{ selectId }}-group-{{ groupIndex }}\"\n\t\t\t\t\t\t\t\tclass=\"lu-picker-content-option-group-title\"\n\t\t\t\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t\t\t\t(selected)=\"toggleOptions(groupCtx.notSelectedOptions, group.options)\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span #groupingTitleRef>\n\t\t\t\t\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t\t\t\t</span>\n\n\t\t\t\t\t\t\t\t@if (someGroupOptionEnabled()(group.options)) {\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclass=\"link\"\n\t\t\t\t\t\t\t\t\t\t(click)=\"toggleOptions(groupCtx.notSelectedOptions, group.options)\"\n\t\t\t\t\t\t\t\t\t\t[id]=\"selectId + '-group-' + group.key\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span class=\"pr-u-mask\">{{ groupingTitleRef.innerText }}&nbsp;– </span\n\t\t\t\t\t\t\t\t\t\t>{{ groupCtx.isGroupSelected ? intl.unselectAll : intl.selectAll }}\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t@if (!grouping() || ctx.groupTemplateLocation !== \"group-header\") {\n\t\t\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: ctx.options }\" />\n\t\t\t\t}\n\t\t\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t\t\t@if (treeGenerator) {\n\t\t\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track trackBranchesBy(index, branch)) {\n\t\t\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t\t\t[selectedOptions]=\"selectedOptions\"\n\t\t\t\t\t\t\t\t[optionComparer]=\"optionComparer\"\n\t\t\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t\t\t(toggleOne)=\"toggleOption($event)\"\n\t\t\t\t\t\t\t\t(selectMany)=\"toggleOptions($event, [])\"\n\t\t\t\t\t\t\t\t(unselectMany)=\"toggleOptions([], $event)\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t@for (option of options; track trackOptionsBy(index, option); let index = $index) {\n\t\t\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t\t\t[grouping]=\"ctx.groupTemplateLocation === 'option' ? grouping() : undefined\"\n\t\t\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t\t\t[groupTemplateLocation]=\"ctx.groupTemplateLocation\"\n\t\t\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer : selectedOptions\"\n\t\t\t\t\t\t\t\t(selected)=\"toggleOption(option)\"\n\t\t\t\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t\t\t\t\t[class.withAddOption]=\"ctx.shouldDisplayAddOption\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t</ng-template>\n\t\t\t\t@if (ctx.options.length === 0 && (loading$ | async) === false) {\n\t\t\t\t\t<div class=\"lu-picker-content-option-emptyState\">\n\t\t\t\t\t\t{{ ctx.clueChange.length ? intl.emptyResults : intl.emptyOptions }}\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t@if (loading$ | async) {\n\t\t\t\t<div class=\"lu-picker-content-loading\">\n\t\t\t\t\t<div class=\"loading\">{{ intl.loading }}</div>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (ctx.shouldDisplayAddOption) {\n\t\t\t\t<div\n\t\t\t\t\tclass=\"addOption palette-product\"\n\t\t\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t\t\t\telementId=\"picker-content-add\"\n\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t>\n\t\t\t\t\t<lu-icon icon=\"mathsPlus\" />\n\t\t\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n}\n","import { ConnectedPosition, Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, PositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectorRef, ComponentRef, ElementRef, inject, Injectable, Injector, ViewContainerRef } from '@angular/core';\nimport { takeUntil } from 'rxjs';\nimport { LuMultiSelectPanelComponent } from '../panel';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuMultiSelectPanelRef } from './panel.model';\nimport { LuMultiSelectInputComponent } from './select-input.component';\nimport { addAttributesOnCdkContainer, SELECT_ID, SELECT_LABEL_ID } from '@lucca-front/ng/core-select';\n\nabstract class BaseMultiSelectPanelRef<T> extends LuMultiSelectPanelRef<T> {\n\tprotected readonly portalRef: ComponentPortal<LuMultiSelectPanelComponent<T>>;\n\tinstance: LuMultiSelectPanelComponent<T>;\n\n\tprotected panelRef: ComponentRef<LuMultiSelectPanelComponent<T>>;\n\n\tprotected constructor(parentInjector: Injector, selectInput: LuMultiSelectInputComponent<T>) {\n\t\tsuper();\n\n\t\tconst injector = Injector.create({\n\t\t\tproviders: [\n\t\t\t\t{ provide: LuMultiSelectPanelRef, useValue: this },\n\t\t\t\t{ provide: MULTI_SELECT_INPUT, useValue: selectInput },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\n\t\tthis.portalRef = new ComponentPortal<LuMultiSelectPanelComponent<T>>(LuMultiSelectPanelComponent, undefined, injector);\n\t}\n\n\toverride handleKeyManagerEvent(event: KeyboardEvent) {\n\t\tthis.instance.keyManager.onKeydown(event);\n\t}\n\n\temitValue(value: T[]): void {\n\t\tthis.valueChanged.emit(value);\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.instance.keyManager.activeItem?.selected.emit();\n\t}\n\n\tupdateSelectedOptions(selectedOptions: T[]): void {\n\t\tthis.instance.selectedOptions = selectedOptions;\n\t\t// Run change detection on the panel component\n\t\tthis.panelRef.injector.get(ChangeDetectorRef).markForCheck();\n\t}\n}\n\nclass MultiSelectPanelRef<T> extends BaseMultiSelectPanelRef<T> {\n\tchangeDetectorRef: ChangeDetectorRef;\n\n\tconstructor(\n\t\tprivate overlayRef: OverlayRef,\n\t\tparentInjector: Injector,\n\t\tselectInput: LuMultiSelectInputComponent<T>,\n\t\tprotected defaultPositionStrategy: PositionStrategy,\n\t) {\n\t\tsuper(parentInjector, selectInput);\n\t\tthis.panelRef = overlayRef.attach(this.portalRef);\n\t\tthis.instance = this.panelRef.instance;\n\t\tthis.changeDetectorRef = this.panelRef.changeDetectorRef;\n\n\t\toverlayRef\n\t\t\t.backdropClick()\n\t\t\t.pipe(takeUntil(this.closed))\n\t\t\t.subscribe(() => this.close());\n\t}\n\n\tuseDefaultPosition(): void {\n\t\tthis.overlayRef.updatePositionStrategy(this.defaultPositionStrategy);\n\t}\n\n\tupdatePosition(): void {\n\t\tthis.overlayRef.updatePosition();\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t}\n}\n\nclass MultiSelectPanelDOMHostRef<T> extends BaseMultiSelectPanelRef<T> {\n\toverride changeDetectorRef?: ChangeDetectorRef;\n\n\tconstructor(host: ViewContainerRef, parentInjector: Injector, selectInput: LuMultiSelectInputComponent<T>) {\n\t\tsuper(parentInjector, selectInput);\n\t\tthis.panelRef = host.createComponent(this.portalRef.component, {\n\t\t\tinjector: this.portalRef.injector,\n\t\t\tprojectableNodes: this.portalRef.projectableNodes,\n\t\t});\n\t\tthis.instance = this.panelRef.instance;\n\t}\n\n\toverride updatePosition() {\n\t\t// do nothing, this is not a panel so repositioning is handled by the input.\n\t}\n\n\toverride close(): void {\n\t\tthis.closed.emit();\n\t}\n\n\tuseDefaultPosition(): void {\n\t\t// do nothing, this is not a panel so repositioning is handled by the input.\n\t}\n}\n\n@Injectable()\nexport class LuMultiSelectPanelRefFactory {\n\tprotected overlay = inject(Overlay);\n\tprotected elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprotected positionBuilder = inject(OverlayPositionBuilder);\n\tprotected scrollStrategies = inject(ScrollStrategyOptions);\n\tprotected parentInjector = inject(Injector);\n\tprivate selectLabelId = inject(SELECT_LABEL_ID);\n\tprivate selectId = inject(SELECT_ID);\n\n\tbuildPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, defaultOverlayConfigOverride: OverlayConfig = {}): LuMultiSelectPanelRef<T> {\n\t\tconst defaultOverlayConfig = this.buildDefaultOverlayConfig(defaultOverlayConfigOverride);\n\n\t\tconst overlayRef = this.overlay.create(defaultOverlayConfig);\n\n\t\toverlayRef.hostElement.style.transitionProperty = 'height';\n\t\toverlayRef.hostElement.style.transitionDuration = 'var(--commons-animations-durations-standard)';\n\n\t\taddAttributesOnCdkContainer(overlayRef, this.selectLabelId, this.selectId);\n\n\t\treturn new MultiSelectPanelRef(overlayRef, this.parentInjector, selectInput, defaultOverlayConfig.positionStrategy);\n\t}\n\n\tbuildAndAttachPanelRef<T>(selectInput: LuMultiSelectInputComponent<T>, host: ViewContainerRef): LuMultiSelectPanelRef<T> {\n\t\treturn new MultiSelectPanelDOMHostRef(host, this.parentInjector, selectInput);\n\t}\n\n\tprotected buildDefaultOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig {\n\t\tconst overlayConfig: OverlayConfig = { ...overlayConfigOverride };\n\n\t\tconst config = { overlapInput: false, offsetY: 2 };\n\t\toverlayConfig.positionStrategy = this.positionBuilder\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t.withGrowAfterOpen(true)\n\t\t\t.withLockedPosition(false)\n\t\t\t.withViewportMargin(10)\n\t\t\t.withPositions([\n\t\t\t\tthis.buildPosition('bottom', 'right', config),\n\t\t\t\tthis.buildPosition('bottom', 'left', config),\n\t\t\t\tthis.buildPosition('top', 'right', config),\n\t\t\t\tthis.buildPosition('top', 'left', config),\n\t\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n\n\tprotected buildPosition(\n\t\tyDirection: 'top' | 'bottom',\n\t\txDirection: 'left' | 'right',\n\t\tconfig: {\n\t\t\toffsetX?: number;\n\t\t\toffsetY?: number;\n\t\t\toverlapInput: boolean;\n\t\t},\n\t): ConnectedPosition {\n\t\tconst originX = xDirection === 'right' ? 'start' : 'end';\n\t\tconst overlayX = originX;\n\n\t\tconst oppositeYDirection = yDirection === 'top' ? 'bottom' : 'top';\n\t\tconst { originY, overlayY } = config.overlapInput\n\t\t\t? ({\n\t\t\t\t\toriginY: oppositeYDirection,\n\t\t\t\t\toverlayY: oppositeYDirection,\n\t\t\t\t} as const)\n\t\t\t: ({ originY: yDirection, overlayY: oppositeYDirection } as const);\n\n\t\treturn {\n\t\t\toriginX,\n\t\t\toriginY,\n\t\t\toverlayX,\n\t\t\toverlayY,\n\t\t\t...(config.offsetX ? { offsetX: xDirection === 'right' ? config.offsetX : -config.offsetX } : {}),\n\t\t\t...(config.offsetY ? { offsetY: yDirection === 'bottom' ? config.offsetY : -config.offsetY } : {}),\n\t\t};\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tHostBinding,\n\tHostListener,\n\tinject,\n\tInput,\n\tmodel,\n\tnumberAttribute,\n\tOnDestroy,\n\tOnInit,\n\tSignal,\n\tsignal,\n\tTemplateRef,\n\tType,\n\tviewChild,\n\tViewContainerRef,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ClearComponent } from '@lucca-front/ng/clear';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LuOptionContext, provideLuSelectLabelsAndIds, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective, FilterPillLabelDirective } from '@lucca-front/ng/filter-pills';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { Subject } from 'rxjs';\nimport { LuMultiSelectDefaultDisplayerComponent } from '../displayer';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuMultiSelectPanelRefFactory } from './panel-ref.factory';\nimport { LuMultiSelectPanelRef } from './panel.model';\n\n@Component({\n\tselector: 'lu-multi-select',\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrl: './select-input.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [AsyncPipe, LuTooltipModule, ɵLuOptionOutletDirective, FilterPillDisplayerDirective, FilterPillLabelDirective, ClearComponent],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuSelectInputComponent,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t},\n\t\tprovideLuSelectLabelsAndIds(),\n\t\tLuMultiSelectPanelRefFactory,\n\t\t{\n\t\t\tprovide: FILTER_PILL_INPUT_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectInputComponent),\n\t\t},\n\t],\n\thost: {\n\t\tclass: 'multiSelect',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor, OnDestroy, OnInit {\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\n\tshowColon: false;\n\n\tvaluesTpl = model<TemplateRef<LuOptionContext<T[]>> | Type<unknown>>(LuMultiSelectDefaultDisplayerComponent);\n\n\t@Input({ transform: numberAttribute })\n\tmaxValuesShown = 500;\n\n\t@Input({ transform: booleanAttribute })\n\tkeepSearchAfterSelection = false;\n\n\t@Input()\n\tfilterPillLabelPlural: string;\n\n\toverride selectParent$ = new Subject<void>();\n\toverride selectChildren$ = new Subject<void>();\n\n\t@HostBinding('class.mod-filterPill')\n\tpublic get filterPillClass() {\n\t\treturn this.filterPillMode;\n\t}\n\n\thideCombobox = computed(() => this.valueSignal()?.length > 1);\n\n\tfilterPillPanelAnchorRef = viewChild('filterPillPanelAnchor', { read: ViewContainerRef });\n\n\toverride isFilterPillEmpty = computed(() => {\n\t\tconst valueSignal = this.valueSignal();\n\t\treturn !valueSignal || valueSignal.length === 0;\n\t});\n\n\tpublic valueLength = computed(() => this.valueSignal()?.length ?? 0);\n\tpublic useSingleOptionDisplayer: Signal<boolean> = signal(true);\n\toverride _value: T[] = [];\n\n\tpublic override get panelRef(): LuMultiSelectPanelRef<T> | undefined {\n\t\treturn this._panelRef;\n\t}\n\n\tprotected override _panelRef?: LuMultiSelectPanelRef<T>;\n\n\tprotected panelRefFactory = inject(LuMultiSelectPanelRefFactory);\n\n\t/**\n\t * This is used to tell the displayer to focus on the input element\n\t * keepClue is used to avoid triggering an update which would open the panel,\n\t * mainly for when we want to focus without opening the panel\n\t */\n\tpublic readonly focusInput$ = new Subject<void | { keepClue: boolean }>();\n\n\tpublic readonly emptyClue$ = new Subject<void>();\n\n\t@HostListener('keydown.control.enter')\n\tpublic selectParentOnly() {\n\t\tthis.selectParent$.next();\n\t}\n\n\t@HostListener('keydown.shift.enter')\n\tpublic selectChildrenOnly() {\n\t\tthis.selectChildren$.next();\n\t}\n\n\tpublic override focusInput(): void {\n\t\tthis.focusInput$.next({ keepClue: true });\n\t}\n\n\tpublic override emptyClue(): void {\n\t\tthis.emptyClue$.next();\n\t}\n\n\tpublic override writeValue(value: T[]): void {\n\t\tsuper.writeValue(value);\n\t\tthis.panelRef?.updateSelectedOptions(value);\n\t}\n\n\tpublic override updateValue(value: T[], skipFocus = false): void {\n\t\tsuper.updateValue(value, skipFocus, this.keepSearchAfterSelection);\n\t\tif (!skipFocus) {\n\t\t\tthis.focusInput();\n\t\t}\n\t}\n\n\tupdatePosition() {\n\t\tthis.updatePositionFn?.();\n\t}\n\n\tprotected override buildPanelRef(): LuMultiSelectPanelRef<T> {\n\t\treturn this.panelRefFactory.buildPanelRef(this, this.overlayConfig);\n\t}\n\n\tprotected override bindInputToPanelRefEvents(): void {\n\t\tif (!this.panelRef) {\n\t\t\treturn;\n\t\t}\n\n\t\tsuper.bindInputToPanelRefEvents();\n\t}\n\n\toverride enableFilterPillMode() {\n\t\tthis._panelRef = this.panelRefFactory.buildAndAttachPanelRef(this, this.filterPillPanelAnchorRef());\n\t\tsuper.enableFilterPillMode();\n\t}\n\n\thasValue(): boolean {\n\t\treturn !!this.value?.length;\n\t}\n\n\toverride clearValue(event?: Event): void {\n\t\tevent?.stopPropagation();\n\t\tthis.onChange?.([]);\n\t\tthis.value = [];\n\t\tthis.focusInput$.next({ keepClue: true });\n\t\tthis.panelRef?.updateSelectedOptions([]);\n\t}\n\n\toverride ngOnDestroy() {\n\t\tsuper.ngOnDestroy();\n\t\tthis.focusInput$.complete();\n\t}\n}\n","<ng-container *luOptionOutlet=\"valuesTpl(); value: value || []\" />\n\n@if (!filterPillMode) {\n\t@if (hasValue() && clearable && (disabled$ | async) === false) {\n\t\t<lu-clear class=\"multipleSelect-clear\" (onClear)=\"clearValue($event)\">{{ intl.clear }}</lu-clear>\n\t}\n\n\t<span aria-hidden=\"true\" class=\"multipleSelect-arrow lucca-icon icon-arrowChevronBottom\"></span>\n\t<span aria-hidden=\"true\" class=\"multipleSelect-searchIcon lucca-icon icon-searchMagnifyingGlass\"></span>\n}\n\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<div class=\"multipleSelect-displayer-filter\">\n\t\t@if (useSingleOptionDisplayer() && valueLength() === 1) {\n\t\t\t<div class=\"multipleSelect-pill-displayer-chip\">\n\t\t\t\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value[0]\" />\n\t\t\t</div>\n\t\t}\n\t</div>\n</ng-container>\n<ng-container *luFilterPillLabel=\"let label = label; let colon = colon\">\n\t@let minCount = useSingleOptionDisplayer() ? 1 : 0;\n\t@if (valueLength() > minCount) {\n\t\t<span class=\"multipleSelect-pill-displayer-label\">{{ valueLength() }}&nbsp;{{ filterPillLabelPlural }}</span>\n\t} @else {\n\t\t{{ label }}\n\t\t@if (valueLength() === 1) {\n\t\t\t{{ colon }}\n\t\t}\n\t}\n</ng-container>\n","export const Translations = {\n\t'nl-BE': {\n\t\totherResult: 'ander resultaat',\n\t\totherResults: 'andere resultaten',\n\t\tshowResultsDetails: 'Zie details',\n\t\tremoveOption: 'Optie verwijderen',\n\t},\n\tnl: {\n\t\totherResult: 'ander resultaat',\n\t\totherResults: 'andere resultaten',\n\t\tshowResultsDetails: 'Zie details',\n\t\tremoveOption: 'Optie verwijderen',\n\t},\n\tit: {\n\t\totherResult: 'altro risultato',\n\t\totherResults: 'altri risultati',\n\t\tshowResultsDetails: 'Vedere il dettaglio',\n\t\tremoveOption: 'Cancellare l’opzione',\n\t},\n\tfr: {\n\t\totherResult: 'autre résultat',\n\t\totherResults: 'autres résultats',\n\t\tshowResultsDetails: 'Voir le détail',\n\t\tremoveOption: \"Supprimer l'option\",\n\t},\n\tpt: {\n\t\totherResult: 'outro resultado',\n\t\totherResults: 'outros resultados',\n\t\tshowResultsDetails: 'Mostrar detalhes',\n\t\tremoveOption: 'Remove option',\n\t},\n\tes: {\n\t\totherResult: 'otro resultado',\n\t\totherResults: 'otros resultados',\n\t\tshowResultsDetails: 'Ver los detalles',\n\t\tremoveOption: 'Eliminar la opción',\n\t},\n\tde: {\n\t\totherResult: 'anderes Ergebnis',\n\t\totherResults: 'andere Ergebnisse',\n\t\tshowResultsDetails: 'Details anzeigen ',\n\t\tremoveOption: 'Option löschen',\n\t},\n\ten: {\n\t\totherResult: 'other result',\n\t\totherResults: 'other results',\n\t\tshowResultsDetails: 'Show details',\n\t\tremoveOption: 'Remove option',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS = new InjectionToken('LuMultiSelectDisplayerTranslations', {\n\tfactory: () => luMultiSelectDisplayerTranslations,\n});\n\nexport interface ILuMultiSelectDisplayerLabel {\n\totherResult: string;\n\totherResults: string;\n\tshowResultsDetails: string;\n\tremoveOption: string;\n}\n\nexport const luMultiSelectDisplayerTranslations: LuTranslation<ILuMultiSelectDisplayerLabel> = Translations;\n","import { InjectionToken, Signal } from '@angular/core';\nimport { LuMultiSelectionMode } from '../../select.model';\n\nexport interface LuMultiSelectWithSelectAllContext {\n\tsetSelectAll(value: boolean): void;\n\tmode: Signal<LuMultiSelectionMode>;\n\tvalues: Signal<unknown[]>;\n\tdisplayerLabel: Signal<string>;\n\ttotalCount: Signal<number>;\n\tdisplayerCount: Signal<number>;\n}\n\nexport const MULTI_SELECT_WITH_SELECT_ALL_CONTEXT = new InjectionToken<LuMultiSelectWithSelectAllContext>('LuMultiSelectWithSelectAllContext');\n","import { DestroyRef, Directive, ElementRef, HostBinding, HostListener, inject, OnInit } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { getIntl, isNotNil, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT } from '@lucca-front/ng/core-select';\nimport { InputDirective } from '@lucca-front/ng/form-field';\nimport { of } from 'rxjs';\nimport { map, startWith, switchMap } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from '../input/select-all/select-all.models';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuMultiSelectContentDisplayerComponent } from './content-displayer/content-displayer.component';\n\n@Directive({\n\tselector: '[luMultiSelectDisplayerInput]',\n\thost: {\n\t\t'aria-haspopup': 'listbox',\n\t\trole: 'combobox',\n\t\tclass: 'multipleSelect-displayer-search',\n\t\ttype: 'text',\n\t},\n\thostDirectives: [InputDirective],\n})\nexport class LuMultiSelectDisplayerInputDirective<T> implements OnInit {\n\tintl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT, { optional: true });\n\tcontentDisplayer = inject(LuMultiSelectContentDisplayerComponent, { optional: true });\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\telementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\tdestroyRef = inject(DestroyRef);\n\n\t@HostBinding('attr.aria-expanded')\n\tget panelOpen() {\n\t\treturn this.#panelOpen();\n\t}\n\n\t@HostBinding('attr.aria-activedescendant')\n\tget activeDescendant() {\n\t\treturn this.#activeDescendant();\n\t}\n\n\t@HostBinding('attr.aria-controls')\n\tget controls() {\n\t\treturn this.select.ariaControls;\n\t}\n\n\t@HostBinding('disabled')\n\tget disabled() {\n\t\treturn this.#disabled();\n\t}\n\n\t@HostBinding('placeholder')\n\tget placeholder() {\n\t\treturn this.#placeholder();\n\t}\n\n\t@HostBinding('readonly')\n\tget readonly() {\n\t\treturn !this.select.searchable;\n\t}\n\n\t@HostListener('input')\n\tonInput() {\n\t\tthis.select.clueChanged(this.elementRef.nativeElement.value);\n\t}\n\n\t#panelOpen = toSignal(this.select.isPanelOpen$);\n\t#activeDescendant = toSignal(this.select.activeDescendant$);\n\t#disabled = toSignal(this.select.disabled$);\n\t#placeholder = toSignal(\n\t\tthis.context.option$.pipe(\n\t\t\tstartWith([]),\n\t\t\tswitchMap((options) => {\n\t\t\t\tif ((options || []).length > 0) {\n\t\t\t\t\treturn of('');\n\t\t\t\t}\n\t\t\t\treturn this.select.placeholder$.pipe(map((placeholder) => ((isNotNil(placeholder) && placeholder.length > 0) || this.contentDisplayer ? placeholder : this.intl.placeholder)));\n\t\t\t}),\n\t\t),\n\t);\n\n\tconstructor() {\n\t\tif (this.selectAllContext) {\n\t\t\tɵeffectWithDeps([this.selectAllContext.mode], (mode) => {\n\t\t\t\tif (mode === 'all') {\n\t\t\t\t\tthis.#clearText();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: boolean }) => {\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.#clearText();\n\t\t\t}\n\t\t\tthis.elementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t});\n\t}\n\n\t#clearText() {\n\t\tthis.elementRef.nativeElement.value = '';\n\t\tthis.select.clueChanged('');\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from '../../displayer/default-displayer.translate';\nimport { LuMultiSelectDisplayerInputDirective } from '../../displayer/displayer-input.directive';\nimport { LuMultiSelectInputComponent } from '../select-input.component';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Component({\n\tselector: 'lu-multi-select-all-displayer',\n\timports: [LuMultiSelectDisplayerInputDirective, ɵLuOptionOutletDirective, ChipComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\" [class.is-filled]=\"isFilled()\">\n\t\t\t<input type=\"text\" luMultiSelectDisplayerInput />\n\n\t\t\t@if (displayerCount() !== null) {\n\t\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t\t@if (displayerCount() === 1 && isIncludeMode()) {\n\t\t\t\t\t\t<lu-chip withEllipsis (kill)=\"unselectOption(select.value[0], $event)\" class=\"multipleSelect-displayer-chip\" [unkillable]=\"disabled()\">\n\t\t\t\t\t\t\t<ng-template *luOptionOutlet=\"select.displayerTpl(); value: select.value[0]\" />\n\t\t\t\t\t\t</lu-chip>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>{{ displayerCount() }} {{ displayerLabel() }}</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyles: `\n\t\t:host {\n\t\t\tdisplay: block;\n\t\t\tinline-size: 100%;\n\t\t}\n\t`,\n})\nexport class LuMultiSelectAllDisplayerComponent<TValue> {\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly select = inject<LuMultiSelectInputComponent<TValue>>(LuMultiSelectInputComponent);\n\n\treadonly isFilled = computed(() => this.selectAllContext.mode() !== 'none');\n\treadonly isIncludeMode = computed(() => this.selectAllContext.mode() === 'include');\n\treadonly displayerLabel = this.selectAllContext.displayerLabel;\n\treadonly displayerCount = this.selectAllContext.displayerCount;\n\n\treadonly intl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS);\n\treadonly disabled = toSignal(this.select.disabled$);\n\n\treadonly inputElementRef = viewChild.required<LuMultiSelectDisplayerInputDirective<TValue>, ElementRef<HTMLInputElement>>(LuMultiSelectDisplayerInputDirective, { read: ElementRef });\n\n\tunselectOption(option: TValue, $event: Event): void {\n\t\t$event.stopPropagation();\n\t\t$event.preventDefault();\n\t\tthis.select.updateValue(\n\t\t\tthis.select.value.filter((o) => o !== option),\n\t\t\ttrue,\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\tthis.inputElementRef().nativeElement.focus();\n\t\t});\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ɵCoreSelectPanelElement } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { CheckboxInputComponent } from '@lucca-front/ng/forms';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../../select.translate';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Component({\n\tselector: 'lu-multi-select-all-header',\n\timports: [FormsModule, CheckboxInputComponent, FormFieldComponent],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thostDirectives: [ɵCoreSelectPanelElement],\n\tstyleUrl: './multi-select-all-header.component.scss',\n\ttemplate: `\n\t\t<div class=\"multiSelectAllDisplayer\">\n\t\t\t<lu-form-field [label]=\"intl.selectAll\">\n\t\t\t\t<lu-checkbox-input\n\t\t\t\t\tclass=\"multiSelectAllDisplayer-checkbox\"\n\t\t\t\t\t[ngModel]=\"isSelected()\"\n\t\t\t\t\t(ngModelChange)=\"selectAllContext.setSelectAll($event)\"\n\t\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t\t[mixed]=\"mixed()\"\n\t\t\t\t/>\n\t\t\t</lu-form-field>\n\t\t</div>\n\t`,\n})\nexport class LuMultiSelectAllHeaderComponent {\n\treadonly intl = getIntl(LU_MULTI_SELECT_TRANSLATIONS);\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly mixed = computed(() => this.selectAllContext.mode() === 'exclude' || this.selectAllContext.mode() === 'include');\n\treadonly isSelected = computed(() => this.selectAllContext.mode() === 'all' || this.mixed());\n\treadonly #selectableItem = inject(ɵCoreSelectPanelElement);\n\treadonly #elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tconstructor() {\n\t\tthis.#selectableItem.id.set(`multi-select-select-all`);\n\t\teffect(() => {\n\t\t\tif (this.#selectableItem.isHighlighted()) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.#elementRef.nativeElement.scrollIntoView();\n\t\t\t\t}, 50);\n\t\t\t}\n\t\t\tif (this.isSelected()) {\n\t\t\t\tthis.#selectableItem.isSelected.set(true);\n\t\t\t}\n\t\t});\n\t\toutputToObservable(this.#selectableItem.selected)\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.selectAllContext.setSelectAll(!this.isSelected());\n\t\t\t});\n\t}\n}\n","import { computed, Directive, forwardRef, inject, input, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { CORE_SELECT_API_TOTAL_COUNT_PROVIDER, ɵIsSelectedStrategy } from '@lucca-front/ng/core-select';\nimport { LuOptionComparer } from '@lucca-front/ng/option';\nimport { LuMultiSelection, LuMultiSelectionMode } from '../../select.model';\nimport { LuMultiSelectInputComponent } from '../select-input.component';\nimport { LuMultiSelectAllDisplayerComponent } from './multi-select-all-displayer.component';\nimport { LuMultiSelectAllHeaderComponent } from './multi-select-all-header.component';\nimport { LuMultiSelectWithSelectAllContext, MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from './select-all.models';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-multi-select[withSelectAll]',\n\tproviders: [\n\t\t{\n\t\t\tprovide: ɵIsSelectedStrategy,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectWithSelectAllDirective),\n\t\t},\n\t\t{\n\t\t\tprovide: MULTI_SELECT_WITH_SELECT_ALL_CONTEXT,\n\t\t\tuseExisting: forwardRef(() => LuMultiSelectWithSelectAllDirective),\n\t\t},\n\t],\n})\nexport class LuMultiSelectWithSelectAllDirective<TValue> extends ɵIsSelectedStrategy<TValue> implements LuMultiSelectWithSelectAllContext {\n\treadonly #select = inject<LuMultiSelectInputComponent<TValue>>(LuMultiSelectInputComponent);\n\n\treadonly displayerLabel = input.required<string>({ alias: 'withSelectAllDisplayerLabel' });\n\n\treadonly #mode = signal<LuMultiSelectionMode>('none');\n\treadonly #values = signal<TValue[]>([]);\n\n\treadonly mode = this.#mode.asReadonly();\n\treadonly values = this.#values.asReadonly();\n\treadonly totalCount = toSignal(inject(CORE_SELECT_API_TOTAL_COUNT_PROVIDER).totalCount$);\n\n\treadonly #hasValue = computed(() => this.mode() !== 'none');\n\n\treadonly #valuesCount = computed(() => this.values().length);\n\treadonly displayerCount = computed(() => {\n\t\tswitch (this.mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn this.totalCount();\n\t\t\tcase 'include':\n\t\t\t\treturn this.#valuesCount();\n\t\t\tcase 'exclude':\n\t\t\t\treturn this.totalCount() - this.#valuesCount();\n\t\t\tcase 'none':\n\t\t\t\treturn null;\n\t\t}\n\t});\n\n\treadonly #selectAllValue = computed<LuMultiSelection<TValue>>(() => {\n\t\tconst mode = this.#mode();\n\t\treturn mode === 'all' || mode === 'none' ? { mode } : { mode, values: this.#values() };\n\t});\n\n\t// Keep the original registerOnChange / writeValue / clearValye methods\n\treadonly #selectRegisterOnChange = this.#select.registerOnChange.bind(this.#select) as LuMultiSelectInputComponent<TValue>['registerOnChange'];\n\treadonly #selectWriteValue = this.#select.writeValue.bind(this.#select) as LuMultiSelectInputComponent<TValue>['writeValue'];\n\treadonly #selectClearValue = this.#select.clearValue.bind(this.#select) as LuMultiSelectInputComponent<TValue>['clearValue'];\n\n\t#onChange?: (values: LuMultiSelection<TValue>) => void;\n\n\tconstructor() {\n\t\tsuper();\n\n\t\tthis.#select.registerOnChange = (fn) => this.registerOnChange(fn);\n\t\tthis.#select.writeValue = (value) => this.writeValue(value);\n\t\tthis.#select.clearValue = ($event) => this.clearValue($event);\n\n\t\tthis.#select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\tthis.#select.valuesTpl.set(LuMultiSelectAllDisplayerComponent);\n\t\tthis.#select.hasValue = () => this.#hasValue();\n\t\tthis.#select.isFilterPillEmpty = computed(() => !this.#hasValue());\n\t\tthis.#select.useSingleOptionDisplayer = computed(() => this.#mode() === 'include');\n\t\tthis.#select.valueLength = this.displayerCount;\n\t}\n\n\tsetSelectAll(selectAll: boolean): void {\n\t\tthis.#selectWriteValue([]);\n\n\t\tif (this.#values().length) {\n\t\t\tthis.#values.set([]);\n\t\t}\n\t\tthis.#mode.set(selectAll ? 'all' : 'none');\n\t\tthis.#onChange?.(this.#selectAllValue());\n\t}\n\n\toverride isSelected(option: TValue, selectedOptions: TValue[], optionComparer: LuOptionComparer<TValue>): boolean {\n\t\tswitch (this.#mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn true;\n\t\t\tcase 'include':\n\t\t\t\treturn selectedOptions.some((o) => optionComparer(o, option));\n\t\t\tcase 'exclude':\n\t\t\t\treturn !selectedOptions.some((o) => optionComparer(o, option));\n\t\t\tcase 'none':\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\toverride isGroupSelected(_options: TValue[], notSelectedOptions: TValue[]): boolean {\n\t\tswitch (this.#mode()) {\n\t\t\tcase 'all':\n\t\t\t\treturn true;\n\t\t\tcase 'include':\n\t\t\t\treturn notSelectedOptions.length === 0;\n\t\t\tcase 'exclude':\n\t\t\t\treturn notSelectedOptions.length > 0;\n\t\t\tcase 'none':\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tregisterOnChange(fn: (value: TValue[] | LuMultiSelection<TValue>) => void): void {\n\t\tthis.#onChange = fn;\n\n\t\tthis.#selectRegisterOnChange((values: TValue[]) => {\n\t\t\tthis.#values.set(values);\n\t\t\tconst oldMode = this.#mode();\n\t\t\tthis.#mode.set(this.#getNextMode(oldMode, values));\n\t\t\tthis.#onChange?.(this.#selectAllValue());\n\n\t\t\t// When all values are selected/unselected one by one, we should reset internal select value to avoid weird behavior when selecting/unselecting after that\n\t\t\tif (values.length && (this.#mode() === 'all' || this.#mode() === 'none')) {\n\t\t\t\tthis.#selectWriteValue([]);\n\t\t\t}\n\t\t});\n\t}\n\n\twriteValue(value: TValue[] | LuMultiSelection<TValue>): void {\n\t\tif (Array.isArray(value)) {\n\t\t\tthrow new Error('MultiSelectWithSelectAllDirective does not support array values. The form value or ngModel must be a LuMultiSelection<TValue>.');\n\t\t}\n\n\t\tlet mode: LuMultiSelectionMode;\n\t\tlet values: TValue[];\n\n\t\tif (!value) {\n\t\t\tvalues = [];\n\t\t\tmode = 'none';\n\t\t} else {\n\t\t\tvalues = value.mode === 'exclude' || value.mode === 'include' ? value.values : [];\n\t\t\tmode = value.mode;\n\t\t}\n\n\t\tthis.#selectWriteValue(values);\n\t\tthis.#mode.set(mode);\n\t\tthis.#values.set(values);\n\t}\n\n\tclearValue($event: Event): void {\n\t\tthis.#mode.set('none');\n\t\tthis.#selectClearValue($event);\n\t}\n\n\t#getNextMode(fromMode: LuMultiSelectionMode, values: TValue[]): LuMultiSelectionMode {\n\t\t// When none selected, \"include\" -> \"none\" and \"exclude\" -> \"all\"\n\t\tif (values.length === 0) {\n\t\t\treturn fromMode === 'include' || fromMode === 'none' ? 'none' : 'all';\n\t\t}\n\n\t\tconst allSelected = values.length === this.totalCount();\n\n\t\t// When all selected, \"include\" -> \"all\" and \"exclude\" -> \"none\"\n\t\tif (allSelected) {\n\t\t\treturn fromMode === 'include' || fromMode === 'none' ? 'all' : 'none';\n\t\t}\n\n\t\t// The first value selected will transition from \"all\" to \"exclude\"\n\t\tif (fromMode === 'all') {\n\t\t\treturn 'exclude';\n\t\t}\n\n\t\t// The first value selected will transition from \"none\" to \"include\"\n\t\tif (fromMode === 'none') {\n\t\t\treturn 'include';\n\t\t}\n\n\t\t// No match, keep the same mode\n\t\treturn fromMode;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { LuMultiSelectInputComponent } from '../../input';\nimport { LuMultiSelectDisplayerInputDirective } from '../displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-content-displayer',\n\timports: [LuMultiSelectDisplayerInputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\">\n\t\t\t<input type=\"text\" autocomplete=\"off\" #inputElement luMultiSelectDisplayerInput />\n\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t<ng-content />\n\t\t\t</div>\n\t\t</div>\n\t`,\n\tstyleUrl: './content-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectContentDisplayerComponent<T> {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, Input, OnInit, ViewChild, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { BehaviorSubject } from 'rxjs';\nimport { LuMultiSelectInputComponent } from '../../input';\nimport { LuMultiSelectDisplayerInputDirective } from '../displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-counter-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ChipComponent, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer mod-filter\" [class.is-filled]=\"(selectedOptions$ | async)?.length > 0\">\n\t\t\t<input type=\"text\" autocomplete=\"off\" #inputElement luMultiSelectDisplayerInput />\n\t\t\t@if (selectedOptions$ | async; as selectedOptions) {\n\t\t\t\t<div class=\"multipleSelect-displayer-filter\">\n\t\t\t\t\t@if (selectedOptions?.length === 1) {\n\t\t\t\t\t\t<div class=\"multipleSelect-displayer-chip chip mod-unkillable\">\n\t\t\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: selectedOptions[0]\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t\t@if (selectedOptions?.length > 1) {\n\t\t\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>{{ selectedOptions?.length }} {{ label }}</lu-chip>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyleUrl: './counter-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectCounterDisplayerComponent<T> implements OnInit {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\t@ViewChild('inputElement')\n\tinputElementRef: ElementRef<HTMLInputElement>;\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\tselectedOptions$ = new BehaviorSubject<T[]>([]);\n\n\t@Input()\n\tset selected(options: T[]) {\n\t\tthis.selectedOptions$.next(options);\n\t\tthis.context.option$.next(options);\n\t}\n\n\t@Input({ required: true })\n\tlabel: string;\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t\t\tthis.select.clueChanged('');\n\t\t\t}\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t});\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, OnInit, ViewChild } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { getIntl } from '@lucca-front/ng/core';\nimport { ILuOptionContext, LU_OPTION_CONTEXT, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input/select-input.component';\nimport { LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS } from './default-displayer.translate';\nimport { LuMultiSelectDisplayerInputDirective } from './displayer-input.directive';\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective, ChipComponent],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer\">\n\t\t\t<input autocomplete=\"off\" #inputElement (keydown.backspace)=\"inputBackspace()\" (keydown.space)=\"inputSpace($event)\" luMultiSelectDisplayerInput />\n\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" withEllipsis (kill)=\"unselectOption(option, $event)\" [unkillable]=\"select.disabled$ | async\">\n\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: option\" />\n\t\t\t\t</lu-chip>\n\t\t\t}\n\t\t\t@if (overflowOptions$ | async; as overflow) {\n\t\t\t\t<lu-chip class=\"multipleSelect-displayer-chip\" unkillable>+ {{ overflow }}</lu-chip>\n\t\t\t}\n\t\t</div>\n\t`,\n\tstyleUrl: './default-displayer.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuMultiSelectDefaultDisplayerComponent<T> implements OnInit {\n\tselect = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\tintl = getIntl(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\t@ViewChild('inputElement')\n\tinputElementRef: ElementRef<HTMLInputElement>;\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\tcontext = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tdisplayedOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\tif (this.select.maxValuesShown) {\n\t\t\t\treturn (options || []).slice(0, this.select.maxValuesShown);\n\t\t\t}\n\t\t\treturn options;\n\t\t}),\n\t);\n\n\toverflowOptions$ = this.context.option$.pipe(\n\t\tmap((options) => {\n\t\t\treturn Math.max(0, (options || []).length - this.select.maxValuesShown);\n\t\t}),\n\t);\n\n\tunselectOption(option: T, $event?: Event): void {\n\t\tif ($event) {\n\t\t\t$event.stopPropagation();\n\t\t\t$event.preventDefault();\n\t\t}\n\t\tthis.select.updateValue(\n\t\t\tthis.value.filter((o) => o !== option),\n\t\t\ttrue,\n\t\t);\n\t\tsetTimeout(() => {\n\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\tthis.select.updatePosition();\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t});\n\t}\n\n\tinputBackspace(): void {\n\t\tif (this.value.length > 0 && this.inputElementRef.nativeElement.value.length === 0) {\n\t\t\tthis.unselectOption(this.value[this.value.length - 1]);\n\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t}\n\t}\n\n\tinputSpace(event: Event): void {\n\t\tif (this.inputElementRef.nativeElement.value?.length === 0) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.select.panelRef?.selectCurrentlyHighlightedValue();\n\t\t}\n\t}\n\n\tngOnInit(): void {\n\t\tthis.select.focusInput$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data?: { keepClue: true }) => {\n\t\t\t// Everytime we want to focus, we need to reset the input\n\t\t\t// This is done when a value is selected and when panel is opened.\n\t\t\tif (!data?.keepClue) {\n\t\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t\t\tthis.select.clueChanged('');\n\t\t\t}\n\n\t\t\tthis.inputElementRef.nativeElement.focus();\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tthis.inputElementRef.nativeElement.value = '';\n\t\t});\n\t}\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport { LuOptionContext } from '@lucca-front/ng/core-select';\nimport { LuMultiSelectInputComponent } from '../input';\n\n@Directive({\n\tselector: '[luMultiDisplayer]',\n})\nexport class LuMultiDisplayerDirective<T> {\n\t@Input('luMultiDisplayerSelect') set select(select: LuMultiSelectInputComponent<T>) {\n\t\tselect.valuesTpl.set(this.templateRef);\n\t}\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<T[]>>) {}\n\n\tpublic static ngTemplateContextGuard<T>(_dir: LuMultiDisplayerDirective<T>, ctx: unknown): ctx is LuOptionContext<T[]> {\n\t\treturn true;\n\t}\n}\n","import { LuMultiSelection } from './select.model';\n\nexport function selectionToQueryParams<T, Key extends string>(key: Key, value: LuMultiSelection<T>, selector: (value: T) => unknown): Partial<Record<Key | `-${Key}`, string>> {\n\tif (value.mode === 'all' || value.mode === 'none') {\n\t\treturn {};\n\t}\n\treturn { [value.mode === 'include' ? key : `-${key}`]: value.values.map(selector).join(',') } as Record<Key | `-${Key}`, string>;\n}\n\n/**\n * Transforms a selection from withSelectAll, the complete list of options and a getKey function to a list of options.\n *\n * @example\n * ```ts\n * const selection = { mode: 'exclude', values: [{ id: 1, name: 'foo' }] };\n * const allOptions = [{ id: 1, name: 'foo' }, { id: 2, name: 'bar' }, { id: 3, name: 'baz' }];\n *\n * const selectedOptions = selectionToOptions(selection, allOptions, (o) => o.id);\n * ```\n */\nexport function selectionToOptions<T>(selection: LuMultiSelection<T>, options: T[], getKeyFn: (value: T) => unknown): T[] {\n\tswitch (selection.mode) {\n\t\tcase 'include':\n\t\t\treturn selection.values;\n\t\tcase 'exclude': {\n\t\t\tconst excludedKeys = new Set(selection.values.map(getKeyFn));\n\t\t\treturn options.filter((o) => !excludedKeys.has(getKeyFn(o)));\n\t\t}\n\t\tcase 'all':\n\t\t\treturn options;\n\t\tcase 'none':\n\t\t\treturn [];\n\t}\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport { LuMultiSelection } from './select.model';\n\nconst required = (control: AbstractControl<LuMultiSelection<unknown>>): ValidationErrors | null => {\n\tif (!control.value || control.value.mode === 'none') {\n\t\treturn { required: true };\n\t}\n\treturn null;\n};\n\nexport const LuMultiSelectionValidators = {\n\trequired,\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Translations","ɵIsSelectedStrategy","ɵgetGroupTemplateLocation","ɵLuOptionComponent","ɵLuOptionGroupPipe","ɵCoreSelectPanelElement","ɵLuOptionOutletDirective","ɵeffectWithDeps","i1"],"mappings":"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"}