@lucca-front/ng 22.0.0-rc.2 → 22.0.0-rc.3

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 (80) hide show
  1. package/fesm2022/lucca-front-ng-api.mjs +160 -85
  2. package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
  3. package/fesm2022/lucca-front-ng-clear.mjs +7 -6
  4. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
  5. package/fesm2022/lucca-front-ng-core-select-api.mjs +37 -21
  6. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
  7. package/fesm2022/lucca-front-ng-core-select-user.mjs +2 -2
  8. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  9. package/fesm2022/lucca-front-ng-core-select.mjs +229 -135
  10. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  11. package/fesm2022/lucca-front-ng-core.mjs +1 -12
  12. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  13. package/fesm2022/lucca-front-ng-date.mjs +124 -100
  14. package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
  15. package/fesm2022/lucca-front-ng-date2.mjs +37 -25
  16. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  17. package/fesm2022/lucca-front-ng-department.mjs +0 -2
  18. package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
  19. package/fesm2022/lucca-front-ng-divider.mjs +6 -4
  20. package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
  21. package/fesm2022/lucca-front-ng-dropdown.mjs +34 -31
  22. package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
  23. package/fesm2022/lucca-front-ng-establishment.mjs +83 -49
  24. package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
  25. package/fesm2022/lucca-front-ng-filter-pills.mjs +18 -8
  26. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-form-field.mjs +10 -7
  28. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-formly.mjs +2 -3
  30. package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
  31. package/fesm2022/lucca-front-ng-forms.mjs +46 -5
  32. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-input.mjs +0 -1
  34. package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-modal.mjs +15 -11
  36. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-multi-select.mjs +115 -91
  38. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  39. package/fesm2022/lucca-front-ng-number-format.mjs +11 -7
  40. package/fesm2022/lucca-front-ng-number-format.mjs.map +1 -1
  41. package/fesm2022/lucca-front-ng-option.mjs +37 -30
  42. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-popover.mjs +238 -123
  44. package/fesm2022/lucca-front-ng-popover.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-popover2.mjs +65 -37
  46. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-select.mjs +123 -76
  48. package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
  49. package/fesm2022/lucca-front-ng-sidepanel.mjs.map +1 -1
  50. package/fesm2022/lucca-front-ng-simple-select.mjs +13 -13
  51. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  52. package/fesm2022/lucca-front-ng-time.mjs +8 -6
  53. package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
  54. package/fesm2022/lucca-front-ng-user-popover.mjs +13 -9
  55. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  56. package/fesm2022/lucca-front-ng-user.mjs +93 -59
  57. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  58. package/package.json +4 -4
  59. package/types/lucca-front-ng-api.d.ts +62 -62
  60. package/types/lucca-front-ng-clear.d.ts +2 -3
  61. package/types/lucca-front-ng-core-select-api.d.ts +22 -22
  62. package/types/lucca-front-ng-core-select.d.ts +139 -140
  63. package/types/lucca-front-ng-core.d.ts +2 -7
  64. package/types/lucca-front-ng-date.d.ts +26 -28
  65. package/types/lucca-front-ng-divider.d.ts +1 -1
  66. package/types/lucca-front-ng-dropdown.d.ts +4 -5
  67. package/types/lucca-front-ng-establishment.d.ts +19 -18
  68. package/types/lucca-front-ng-form-field.d.ts +3 -2
  69. package/types/lucca-front-ng-forms.d.ts +32 -12
  70. package/types/lucca-front-ng-modal.d.ts +2 -2
  71. package/types/lucca-front-ng-multi-select.d.ts +37 -36
  72. package/types/lucca-front-ng-option.d.ts +10 -10
  73. package/types/lucca-front-ng-popover.d.ts +46 -52
  74. package/types/lucca-front-ng-popover2.d.ts +11 -13
  75. package/types/lucca-front-ng-segmented-control.d.ts +4 -2
  76. package/types/lucca-front-ng-select.d.ts +28 -30
  77. package/types/lucca-front-ng-simple-select.d.ts +3 -3
  78. package/types/lucca-front-ng-time.d.ts +1 -1
  79. package/types/lucca-front-ng-user-popover.d.ts +3 -4
  80. package/types/lucca-front-ng-user.d.ts +20 -20
@@ -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 { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { isNotNil, 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 { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LuMultiSelectPanelRef } from '../input/panel.model';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuOptionsGroupContextPipe } from './option-group-context.pipe';\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 readonly selectInput = inject<LuMultiSelectInputComponent<T>>(MULTI_SELECT_INPUT);\n\treadonly panelRef = inject<LuMultiSelectPanelRef<T>>(LuMultiSelectPanelRef);\n\treadonly selectId = inject(SELECT_ID);\n\n\treadonly options$ = this.selectInput.options$;\n\treadonly grouping = this.selectInput.groupingSignal;\n\ttreeGenerator = this.selectInput.treeGenerator;\n\treadonly loading = toSignal(this.selectInput.loading$);\n\treadonly loading$ = this.selectInput.loading$;\n\tsearchable = this.selectInput.searchable;\n\treadonly optionComparer = this.selectInput.optionComparer;\n\treadonly optionKey = this.selectInput.optionKey;\n\tintl = this.selectInput.intl;\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\treadonly optionTpl = this.selectInput.optionTpl;\n\n\treadonly options = signal<ɵCoreSelectPanelElement<T>[]>([]);\n\tkeyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\n\treadonly someGroupOptionEnabled = 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) => o.option())\n\t\t\t\t.filter(isNotNil)\n\t\t\t\t.map((option) => this.optionKey()(option));\n\t\t\treturn groupOptions.some((option) => !disabledOptionIds.includes(this.optionKey()(option)));\n\t\t};\n\t});\n\n\treadonly hasGrouping$ = toObservable(this.grouping).pipe(map((grouping) => !!grouping));\n\tpublic readonly clueChange$ = this.selectInput.clue$.pipe(map((clue) => clue ?? ''));\n\tpublic readonly shouldDisplayAddOption$ = this.selectInput.shouldDisplayAddOption$;\n\n\treadonly groupTemplateLocation$ = ɵ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) => o.option())\n\t\t\t.filter(isNotNil)\n\t\t\t.map((option) => this.optionKey()(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\tconst firstSelectedOption = this.selectedOptions[0];\n\t\t\tif (firstSelectedOption !== undefined) {\n\t\t\t\tthis.keyManager.highlightOption(firstSelectedOption);\n\t\t\t}\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()\"\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()) {\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()) {\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[class.is-stuck]=\"true\"\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<div class=\"addOption-content\">\n\t\t\t\t\t\t<lu-icon icon=\"mathsPlus\" />\n\t\t\t\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t\t\t\t</div>\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, Type, ViewContainerRef } from '@angular/core';\nimport { addAttributesOnCdkContainer, SELECT_ID, SELECT_LABEL_ID } from '@lucca-front/ng/core-select';\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';\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\tconst panelComponent = this.portalRef.component as Type<LuMultiSelectPanelComponent<T>>;\n\n\t\tthis.panelRef = host.createComponent(panelComponent, {\n\t\t\tinjector: this.portalRef.injector ?? undefined,\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(8)\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, CommonModule } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\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 { intlInputOptions } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LU_CORE_SELECT_TRANSLATIONS, LuOptionContext, provideLuSelectLabelsAndIds, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective, FilterPillLabelDirective } from '@lucca-front/ng/filter-pills';\nimport { PresentationDisplayDirective, ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\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: [\n\t\tAsyncPipe,\n\t\tLuTooltipModule,\n\t\tɵLuOptionOutletDirective,\n\t\tFilterPillDisplayerDirective,\n\t\tFilterPillLabelDirective,\n\t\tClearComponent,\n\t\tPresentationDisplayDirective,\n\t\tCommonModule,\n\t\tɵPresentationDisplayDefaultDirective,\n\t],\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\t'[class.mod-filterPill]': 'filterPillClass',\n\t\t'(keydown.control.enter)': 'selectParentOnly()',\n\t\t'(keydown.shift.enter)': 'selectChildrenOnly()',\n\t},\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuMultiSelectInputComponent<T> extends ALuSelectInputComponent<T, T[]> implements ControlValueAccessor, OnDestroy, OnInit {\n\treadonly intl = input(...intlInputOptions(LU_CORE_SELECT_TRANSLATIONS, LU_MULTI_SELECT_TRANSLATIONS));\n\n\tshowColon: false;\n\n\treadonly valuesTpl = model<TemplateRef<LuOptionContext<T[]>> | Type<unknown>>(LuMultiSelectDefaultDisplayerComponent);\n\n\treadonly maxValuesShown = input(500, { transform: numberAttribute });\n\n\treadonly keepSearchAfterSelection = input(false, { transform: booleanAttribute });\n\n\treadonly filterPillLabelPlural = input<string>();\n\n\toverride readonly selectParent$ = new Subject<void>();\n\toverride readonly selectChildren$ = new Subject<void>();\n\n\tpublic get filterPillClass() {\n\t\treturn this.filterPillMode;\n\t}\n\n\treadonly hideCombobox = computed(() => (this.valueSignal()?.length ?? 0) > 1);\n\n\treadonly filterPillPanelAnchorRef = viewChild('filterPillPanelAnchor', { read: ViewContainerRef });\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\toverride isFilterPillEmpty = computed(() => {\n\t\tconst valueSignal = this.valueSignal();\n\t\treturn !valueSignal || valueSignal.length === 0;\n\t});\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\tpublic valueLength = computed(() => this.valueSignal()?.length ?? 0);\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\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\tpublic selectParentOnly() {\n\t\tthis.selectParent$.next();\n\t}\n\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\tconst host = this.filterPillPanelAnchorRef();\n\t\tif (host) {\n\t\t\tthis._panelRef = this.panelRefFactory.buildAndAttachPanelRef(this, host);\n\t\t}\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@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@for (v of value; track $index) {\n\t\t\t@if ($last) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"noComma; context: { $implicit: v }\" />\n\t\t\t} @else {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"comma; context: { $implicit: v }\" />\n\t\t\t}\n\t\t} @empty {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"–\"></span>\n\t\t}\n\t</ng-container>\n}\n\n<ng-template #comma let-value><ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />, </ng-template>\n\n<ng-template #noComma let-value>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\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';\nimport { ILuMultiSelectLabel } from '../../select.translate';\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 | null>;\n\tintl: Signal<ILuMultiSelectLabel>;\n}\n\nexport const MULTI_SELECT_WITH_SELECT_ALL_CONTEXT = new InjectionToken<LuMultiSelectWithSelectAllContext>('LuMultiSelectWithSelectAllContext');\n","import { computed, DestroyRef, Directive, ElementRef, inject, OnInit } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { 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 { LuMultiSelectInputComponent } from '../input';\nimport { MULTI_SELECT_WITH_SELECT_ALL_CONTEXT } from '../input/select-all/select-all.models';\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\t'[attr.aria-expanded]': 'panelOpen',\n\t\t'[attr.aria-activedescendant]': 'activeDescendant',\n\t\t'[attr.aria-controls]': 'controls',\n\t\t'[attr.disabled]': 'disabled',\n\t\t'[attr.placeholder]': 'placeholder',\n\t\t'[attr.readonly]': 'readonly',\n\t\t'(input)': 'onInput()',\n\t},\n\thostDirectives: [InputDirective],\n})\nexport class LuMultiSelectDisplayerInputDirective<T> implements OnInit {\n\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT, { optional: true });\n\treadonly contentDisplayer = inject(LuMultiSelectContentDisplayerComponent, { optional: true });\n\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\treadonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\treadonly destroyRef = inject(DestroyRef);\n\n\tget panelOpen() {\n\t\treturn this.#panelOpen();\n\t}\n\n\tget activeDescendant() {\n\t\treturn this.#activeDescendant();\n\t}\n\n\tget controls() {\n\t\treturn this.select.ariaControls;\n\t}\n\n\tget disabled() {\n\t\treturn this.#disabled() || null;\n\t}\n\n\tget placeholder() {\n\t\treturn this.#placeholder();\n\t}\n\n\tget readonly() {\n\t\treturn !this.select.searchable;\n\t}\n\n\tonInput() {\n\t\tthis.select.clueChanged(this.elementRef.nativeElement.value);\n\t}\n\n\treadonly #panelOpen = toSignal(this.select.isPanelOpen$);\n\treadonly #activeDescendant = toSignal(this.select.activeDescendant$);\n\treadonly #disabled = toSignal(this.select.disabled$);\n\treadonly #options = toSignal(this.context.option$, { initialValue: [] as T[] });\n\treadonly #placeholder = computed(() => {\n\t\tconst options = this.#options();\n\t\tif ((options || []).length > 0 || this.selectAllContext?.mode() === 'all') {\n\t\t\treturn '';\n\t\t}\n\t\tconst placeholder = this.select.placeholder();\n\t\treturn (isNotNil(placeholder) && placeholder.length > 0) || this.contentDisplayer ? placeholder : this.select.intl().placeholder;\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\tif (this.elementRef.nativeElement.value) {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t\tthis.select.clueChanged('');\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { intlInputOptions } 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 = input(...intlInputOptions(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(this.select.value?.filter((o) => o !== option) ?? [], true);\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 { ɵCoreSelectPanelElement } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { CheckboxInputComponent } from '@lucca-front/ng/forms';\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 selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly intl = this.selectAllContext.intl;\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, effect, 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\treadonly intl = this.select.intl;\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$, { initialValue: 0 });\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\tconst clueChange = toSignal(this.select.clueChange$);\n\t\teffect(() => {\n\t\t\tif (clueChange()) {\n\t\t\t\tthis.select.panelHeaderTpl.set(undefined);\n\t\t\t} else {\n\t\t\t\tthis.select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\t\t}\n\t\t});\n\n\t\t(this.select as { registerOnChange: (fn: (value: TValue[] | LuMultiSelection<TValue>) => void) => void }).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 = computed(() => this.displayerCount() ?? 0);\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\n\t\tif (selectAll) {\n\t\t\tthis.select.focusInput$.next({ keepClue: true });\n\t\t}\n\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\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, input, 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 { isNotNil, syncInputSignal } 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 { 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<lu-chip class=\"multipleSelect-displayer-chip\" unkillable withEllipsis>\n\t\t\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: selectedOptions[0]\" />\n\t\t\t\t\t\t</lu-chip>\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\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\treadonly inputElementRef = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\treadonly selectedOptions$ = new BehaviorSubject<T[]>([]);\n\n\treadonly selected = input<T[]>([]);\n\n\treadonly label = input.required<string>();\n\n\tconstructor() {\n\t\tsyncInputSignal(this.selected, (options) => {\n\t\t\tthis.selectedOptions$.next(options);\n\t\t\tthis.context.option$.next(options);\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\tconst inputElementRef = this.inputElementRef();\n\t\t\tif (isNotNil(inputElementRef)) {\n\t\t\t\tif (!data?.keepClue) {\n\t\t\t\t\tinputElementRef.nativeElement.value = '';\n\t\t\t\t\tthis.select.clueChanged('');\n\t\t\t\t}\n\t\t\t\tinputElementRef.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t\tthis.select.emptyClue$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n\t\t\tconst inputElementRef = this.inputElementRef();\n\t\t\tif (isNotNil(inputElementRef)) {\n\t\t\t\tinputElementRef.nativeElement.value = '';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, input, 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 { intlInputOptions } 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\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly intl = input(...intlInputOptions(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS));\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\treadonly inputElementRef = viewChild<ElementRef<HTMLInputElement>>('inputElement');\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\treadonly displayedOptions$ = 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\treadonly overflowOptions$ = 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 && this.inputElementRef()?.nativeElement) {\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\tif (this.inputElementRef()?.nativeElement) {\n\t\t\t\tthis.inputElementRef()!.nativeElement.value = '';\n\t\t\t}\n\t\t});\n\t}\n}\n","import { Directive, input, TemplateRef } from '@angular/core';\nimport { syncInputSignal } from '@lucca-front/ng/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\treadonly select = input<LuMultiSelectInputComponent<T>>(undefined, { alias: 'luMultiDisplayerSelect' });\n\n\tpublic constructor(private templateRef: TemplateRef<LuOptionContext<T[]>>) {\n\t\tsyncInputSignal(this.select, (select) => {\n\t\t\tselect.valuesTpl.set(this.templateRef);\n\t\t});\n\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","ɵCoreSelectPanelElement","ɵLuOptionGroupPipe","ɵLuOptionOutletDirective","ɵPresentationDisplayDefaultDirective","ɵ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 { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { isNotNil, 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 { map } from 'rxjs/operators';\nimport { LuMultiSelectInputComponent } from '../input';\nimport { LuMultiSelectPanelRef } from '../input/panel.model';\nimport { MULTI_SELECT_INPUT } from '../select.model';\nimport { LuOptionsGroupContextPipe } from './option-group-context.pipe';\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 readonly selectInput = inject<LuMultiSelectInputComponent<T>>(MULTI_SELECT_INPUT);\n\treadonly panelRef = inject<LuMultiSelectPanelRef<T>>(LuMultiSelectPanelRef);\n\treadonly selectId = inject(SELECT_ID);\n\n\treadonly options$ = this.selectInput.options$;\n\treadonly grouping = this.selectInput.groupingSignal;\n\ttreeGenerator = this.selectInput.treeGenerator;\n\treadonly loading = toSignal(this.selectInput.loading$);\n\treadonly loading$ = this.selectInput.loading$;\n\tsearchable = this.selectInput.searchable;\n\toptionComparer = this.selectInput.optionComparer;\n\toptionKey = this.selectInput.optionKey;\n\tintl = this.selectInput.intl;\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\treadonly optionTpl = this.selectInput.optionTpl;\n\n\treadonly options = signal<ɵCoreSelectPanelElement<T>[]>([]);\n\tkeyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\n\treadonly someGroupOptionEnabled = 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) => o.option())\n\t\t\t\t.filter(isNotNil)\n\t\t\t\t.map((option) => this.optionKey(option));\n\t\t\treturn groupOptions.some((option) => !disabledOptionIds.includes(this.optionKey(option)));\n\t\t};\n\t});\n\n\treadonly hasGrouping$ = toObservable(this.grouping).pipe(map((grouping) => !!grouping));\n\tpublic readonly clueChange$ = this.selectInput.clue$.pipe(map((clue) => clue ?? ''));\n\tpublic readonly shouldDisplayAddOption$ = this.selectInput.shouldDisplayAddOption$;\n\n\treadonly groupTemplateLocation$ = ɵ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) => o.option())\n\t\t\t.filter(isNotNil)\n\t\t\t.map((option) => this.optionKey(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\tconst firstSelectedOption = this.selectedOptions[0];\n\t\t\tif (firstSelectedOption !== undefined) {\n\t\t\t\tthis.keyManager.highlightOption(firstSelectedOption);\n\t\t\t}\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()\"\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()) {\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()) {\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[class.is-stuck]=\"true\"\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<div class=\"addOption-content\">\n\t\t\t\t\t\t<lu-icon icon=\"mathsPlus\" />\n\t\t\t\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t\t\t\t</div>\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, Type, ViewContainerRef } from '@angular/core';\nimport { addAttributesOnCdkContainer, SELECT_ID, SELECT_LABEL_ID } from '@lucca-front/ng/core-select';\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';\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\tconst panelComponent = this.portalRef.component as Type<LuMultiSelectPanelComponent<T>>;\n\n\t\tthis.panelRef = host.createComponent(panelComponent, {\n\t\t\tinjector: this.portalRef.injector ?? undefined,\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(8)\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, CommonModule } from '@angular/common';\nimport {\n\tbooleanAttribute,\n\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tHostBinding,\n\tHostListener,\n\tinject,\n\tinput,\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 { intlInputOptions } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LU_CORE_SELECT_TRANSLATIONS, LuOptionContext, provideLuSelectLabelsAndIds, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective, FilterPillLabelDirective } from '@lucca-front/ng/filter-pills';\nimport { PresentationDisplayDirective, ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\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: [\n\t\tAsyncPipe,\n\t\tLuTooltipModule,\n\t\tɵLuOptionOutletDirective,\n\t\tFilterPillDisplayerDirective,\n\t\tFilterPillLabelDirective,\n\t\tClearComponent,\n\t\tPresentationDisplayDirective,\n\t\tCommonModule,\n\t\tɵPresentationDisplayDefaultDirective,\n\t],\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\treadonly intl = input(...intlInputOptions(LU_CORE_SELECT_TRANSLATIONS, LU_MULTI_SELECT_TRANSLATIONS));\n\n\tshowColon: false;\n\n\treadonly valuesTpl = 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 readonly selectParent$ = new Subject<void>();\n\toverride readonly selectChildren$ = new Subject<void>();\n\n\t@HostBinding('class.mod-filterPill')\n\tpublic get filterPillClass() {\n\t\treturn this.filterPillMode;\n\t}\n\n\treadonly hideCombobox = computed(() => (this.valueSignal()?.length ?? 0) > 1);\n\n\treadonly filterPillPanelAnchorRef = viewChild('filterPillPanelAnchor', { read: ViewContainerRef });\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\toverride isFilterPillEmpty = computed(() => {\n\t\tconst valueSignal = this.valueSignal();\n\t\treturn !valueSignal || valueSignal.length === 0;\n\t});\n\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\n\tpublic valueLength = computed(() => this.valueSignal()?.length ?? 0);\n\t// eslint-disable-next-line @angular-eslint/prefer-signals\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\tconst host = this.filterPillPanelAnchorRef();\n\t\tif (host) {\n\t\t\tthis._panelRef = this.panelRefFactory.buildAndAttachPanelRef(this, host);\n\t\t}\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@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@for (v of value; track $index) {\n\t\t\t@if ($last) {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"noComma; context: { $implicit: v }\" />\n\t\t\t} @else {\n\t\t\t\t<ng-container *ngTemplateOutlet=\"comma; context: { $implicit: v }\" />\n\t\t\t}\n\t\t} @empty {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"–\"></span>\n\t\t}\n\t</ng-container>\n}\n\n<ng-template #comma let-value><ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />, </ng-template>\n\n<ng-template #noComma let-value>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\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';\nimport { ILuMultiSelectLabel } from '../../select.translate';\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 | null>;\n\tintl: Signal<ILuMultiSelectLabel>;\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 { 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 { 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\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT, { optional: true });\n\treadonly contentDisplayer = inject(LuMultiSelectContentDisplayerComponent, { optional: true });\n\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\treadonly elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n\treadonly destroyRef = 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\treadonly #panelOpen = toSignal(this.select.isPanelOpen$);\n\treadonly #activeDescendant = toSignal(this.select.activeDescendant$);\n\treadonly #disabled = toSignal(this.select.disabled$);\n\treadonly #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 || this.selectAllContext?.mode() === 'all') {\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.select.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\tif (this.elementRef.nativeElement.value) {\n\t\t\tthis.elementRef.nativeElement.value = '';\n\t\t\tthis.select.clueChanged('');\n\t\t}\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ChipComponent } from '@lucca-front/ng/chip';\nimport { intlInputOptions } 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 = input(...intlInputOptions(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(this.select.value?.filter((o) => o !== option) ?? [], true);\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 { ɵCoreSelectPanelElement } from '@lucca-front/ng/core-select';\nimport { FormFieldComponent } from '@lucca-front/ng/form-field';\nimport { CheckboxInputComponent } from '@lucca-front/ng/forms';\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 selectAllContext = inject(MULTI_SELECT_WITH_SELECT_ALL_CONTEXT);\n\treadonly intl = this.selectAllContext.intl;\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, effect, 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\treadonly intl = this.select.intl;\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$, { initialValue: 0 });\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\tconst clueChange = toSignal(this.select.clueChange$);\n\t\teffect(() => {\n\t\t\tif (clueChange()) {\n\t\t\t\tthis.select.panelHeaderTpl.set(undefined);\n\t\t\t} else {\n\t\t\t\tthis.select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\t\t}\n\t\t});\n\n\t\t(this.select as { registerOnChange: (fn: (value: TValue[] | LuMultiSelection<TValue>) => void) => void }).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 = computed(() => this.displayerCount() ?? 0);\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\n\t\tif (selectAll) {\n\t\t\tthis.select.focusInput$.next({ keepClue: true });\n\t\t}\n\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\treadonly select = 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<lu-chip class=\"multipleSelect-displayer-chip\" unkillable withEllipsis>\n\t\t\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: selectedOptions[0]\" />\n\t\t\t\t\t\t</lu-chip>\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\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\t@ViewChild('inputElement')\n\treadonly inputElementRef: ElementRef<HTMLInputElement>;\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\treadonly selectedOptions$ = 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, input, 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 { intlInputOptions } 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\treadonly select = inject<LuMultiSelectInputComponent<T>>(LuMultiSelectInputComponent);\n\treadonly intl = input(...intlInputOptions(LU_MULTI_SELECT_DISPLAYER_TRANSLATIONS));\n\n\tprotected destroyRef = inject(DestroyRef);\n\n\t@ViewChild('inputElement')\n\treadonly inputElementRef: ElementRef<HTMLInputElement>;\n\n\tget value(): T[] {\n\t\treturn this.select.value || [];\n\t}\n\n\treadonly context = inject<ILuOptionContext<T[]>>(LU_OPTION_CONTEXT);\n\n\treadonly displayedOptions$ = 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\treadonly overflowOptions$ = 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","ɵCoreSelectPanelElement","ɵLuOptionGroupPipe","ɵLuOptionOutletDirective","ɵPresentationDisplayDefaultDirective","ɵeffectWithDeps","i1"],"mappings":"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"}