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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/fesm2022/lucca-front-ng-a11y.mjs +9 -9
  2. package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
  3. package/fesm2022/lucca-front-ng-activity-feed.mjs +12 -12
  4. package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
  5. package/fesm2022/lucca-front-ng-animations.mjs.map +1 -1
  6. package/fesm2022/lucca-front-ng-api.mjs +40 -40
  7. package/fesm2022/lucca-front-ng-api.mjs.map +1 -1
  8. package/fesm2022/lucca-front-ng-app-layout.mjs +3 -3
  9. package/fesm2022/lucca-front-ng-app-layout.mjs.map +1 -1
  10. package/fesm2022/lucca-front-ng-approbation-inbox.mjs +30 -30
  11. package/fesm2022/lucca-front-ng-approbation-inbox.mjs.map +1 -1
  12. package/fesm2022/lucca-front-ng-box.mjs +3 -3
  13. package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
  14. package/fesm2022/lucca-front-ng-breadcrumbs.mjs +6 -6
  15. package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
  16. package/fesm2022/lucca-front-ng-bubble-icon.mjs +3 -3
  17. package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
  18. package/fesm2022/lucca-front-ng-bubble-illustration.mjs +3 -3
  19. package/fesm2022/lucca-front-ng-bubble-illustration.mjs.map +1 -1
  20. package/fesm2022/lucca-front-ng-callout.mjs +24 -24
  21. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  22. package/fesm2022/lucca-front-ng-chip.mjs +3 -3
  23. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  24. package/fesm2022/lucca-front-ng-clear.mjs +3 -3
  25. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
  26. package/fesm2022/lucca-front-ng-code.mjs +3 -3
  27. package/fesm2022/lucca-front-ng-code.mjs.map +1 -1
  28. package/fesm2022/lucca-front-ng-color.mjs +3 -3
  29. package/fesm2022/lucca-front-ng-color.mjs.map +1 -1
  30. package/fesm2022/lucca-front-ng-comment.mjs +9 -9
  31. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  32. package/fesm2022/lucca-front-ng-container.mjs +3 -3
  33. package/fesm2022/lucca-front-ng-container.mjs.map +1 -1
  34. package/fesm2022/lucca-front-ng-core-select-api.mjs +17 -9
  35. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
  36. package/fesm2022/lucca-front-ng-core-select-department.mjs +6 -6
  37. package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
  38. package/fesm2022/lucca-front-ng-core-select-establishment.mjs +9 -9
  39. package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
  40. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +6 -6
  41. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
  42. package/fesm2022/lucca-front-ng-core-select-legal-units.mjs +6 -6
  43. package/fesm2022/lucca-front-ng-core-select-legal-units.mjs.map +1 -1
  44. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +3 -3
  45. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -1
  46. package/fesm2022/lucca-front-ng-core-select-user.mjs +28 -23
  47. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  48. package/fesm2022/lucca-front-ng-core-select.mjs +68 -58
  49. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  50. package/fesm2022/lucca-front-ng-core.mjs +18 -18
  51. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  52. package/fesm2022/lucca-front-ng-data-table.mjs +30 -27
  53. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  54. package/fesm2022/lucca-front-ng-date.mjs +40 -40
  55. package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
  56. package/fesm2022/lucca-front-ng-date2.mjs +18 -18
  57. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  58. package/fesm2022/lucca-front-ng-department.mjs +24 -24
  59. package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
  60. package/fesm2022/lucca-front-ng-dialog-testing.mjs.map +1 -1
  61. package/fesm2022/lucca-front-ng-dialog.mjs +36 -34
  62. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  63. package/fesm2022/lucca-front-ng-divider.mjs +3 -3
  64. package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
  65. package/fesm2022/lucca-front-ng-dropdown.mjs +40 -40
  66. package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
  67. package/fesm2022/lucca-front-ng-empty-state.mjs +9 -9
  68. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  69. package/fesm2022/lucca-front-ng-error-page.mjs +3 -3
  70. package/fesm2022/lucca-front-ng-error-page.mjs.map +1 -1
  71. package/fesm2022/lucca-front-ng-establishment.mjs +33 -33
  72. package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
  73. package/fesm2022/lucca-front-ng-fancy-box.mjs +3 -3
  74. package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
  75. package/fesm2022/lucca-front-ng-file-upload.mjs +18 -18
  76. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  77. package/fesm2022/lucca-front-ng-filter-pills.mjs +48 -21
  78. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  79. package/fesm2022/lucca-front-ng-footer.mjs +3 -3
  80. package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
  81. package/fesm2022/lucca-front-ng-form-field.mjs +18 -18
  82. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  83. package/fesm2022/lucca-front-ng-form-header.mjs +3 -3
  84. package/fesm2022/lucca-front-ng-form-header.mjs.map +1 -1
  85. package/fesm2022/lucca-front-ng-form-label.mjs +3 -3
  86. package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
  87. package/fesm2022/lucca-front-ng-form.mjs +3 -3
  88. package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
  89. package/fesm2022/lucca-front-ng-formly.mjs +58 -58
  90. package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
  91. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +6 -6
  92. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
  93. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +3 -3
  94. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs.map +1 -1
  95. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +6 -6
  96. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs.map +1 -1
  97. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +3 -3
  98. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs.map +1 -1
  99. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +35 -35
  100. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  101. package/fesm2022/lucca-front-ng-forms.mjs +39 -39
  102. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  103. package/fesm2022/lucca-front-ng-gauge.mjs +3 -3
  104. package/fesm2022/lucca-front-ng-gauge.mjs.map +1 -1
  105. package/fesm2022/lucca-front-ng-grid.mjs +6 -6
  106. package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
  107. package/fesm2022/lucca-front-ng-highlight-data.mjs +3 -3
  108. package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
  109. package/fesm2022/lucca-front-ng-highlight-section.mjs +3 -3
  110. package/fesm2022/lucca-front-ng-highlight-section.mjs.map +1 -1
  111. package/fesm2022/lucca-front-ng-highlight-text.mjs +3 -3
  112. package/fesm2022/lucca-front-ng-highlight-text.mjs.map +1 -1
  113. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +9 -9
  114. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
  115. package/fesm2022/lucca-front-ng-impersonation.mjs +3 -3
  116. package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
  117. package/fesm2022/lucca-front-ng-index-table.mjs +32 -32
  118. package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
  119. package/fesm2022/lucca-front-ng-inline-message.mjs +3 -3
  120. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  121. package/fesm2022/lucca-front-ng-input.mjs +21 -21
  122. package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
  123. package/fesm2022/lucca-front-ng-link.mjs +6 -6
  124. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  125. package/fesm2022/lucca-front-ng-listbox.mjs +9 -9
  126. package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
  127. package/fesm2022/lucca-front-ng-listing.mjs +6 -6
  128. package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
  129. package/fesm2022/lucca-front-ng-loading.mjs +3 -3
  130. package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
  131. package/fesm2022/lucca-front-ng-main-layout.mjs +6 -6
  132. package/fesm2022/lucca-front-ng-main-layout.mjs.map +1 -1
  133. package/fesm2022/lucca-front-ng-mobile-push.mjs +3 -3
  134. package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
  135. package/fesm2022/lucca-front-ng-modal.mjs +29 -24
  136. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  137. package/fesm2022/lucca-front-ng-multi-select.mjs +37 -37
  138. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  139. package/fesm2022/lucca-front-ng-new-badge.mjs +3 -3
  140. package/fesm2022/lucca-front-ng-new-badge.mjs.map +1 -1
  141. package/fesm2022/lucca-front-ng-number-format.mjs +6 -6
  142. package/fesm2022/lucca-front-ng-number-format.mjs.map +1 -1
  143. package/fesm2022/lucca-front-ng-number.mjs +7 -7
  144. package/fesm2022/lucca-front-ng-number.mjs.map +1 -1
  145. package/fesm2022/lucca-front-ng-option.mjs +126 -126
  146. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  147. package/fesm2022/lucca-front-ng-page-header.mjs +3 -3
  148. package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
  149. package/fesm2022/lucca-front-ng-pagination.mjs +3 -3
  150. package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
  151. package/fesm2022/lucca-front-ng-picker.mjs.map +1 -1
  152. package/fesm2022/lucca-front-ng-plg-push.mjs +3 -3
  153. package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
  154. package/fesm2022/lucca-front-ng-popover.mjs +17 -17
  155. package/fesm2022/lucca-front-ng-popover.mjs.map +1 -1
  156. package/fesm2022/lucca-front-ng-popover2.mjs +6 -6
  157. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  158. package/fesm2022/lucca-front-ng-popup.mjs +10 -10
  159. package/fesm2022/lucca-front-ng-popup.mjs.map +1 -1
  160. package/fesm2022/lucca-front-ng-progress-bar.mjs +3 -3
  161. package/fesm2022/lucca-front-ng-progress-bar.mjs.map +1 -1
  162. package/fesm2022/lucca-front-ng-progress-stepper.mjs +6 -6
  163. package/fesm2022/lucca-front-ng-progress-stepper.mjs.map +1 -1
  164. package/fesm2022/lucca-front-ng-read-more.mjs +3 -3
  165. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  166. package/fesm2022/lucca-front-ng-resource-card.mjs +12 -12
  167. package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
  168. package/fesm2022/lucca-front-ng-safe-content.mjs +10 -10
  169. package/fesm2022/lucca-front-ng-safe-content.mjs.map +1 -1
  170. package/fesm2022/lucca-front-ng-scroll-box.mjs +3 -3
  171. package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
  172. package/fesm2022/lucca-front-ng-scroll.mjs +7 -7
  173. package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
  174. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +6 -6
  175. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
  176. package/fesm2022/lucca-front-ng-segmented-control.mjs +6 -6
  177. package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -1
  178. package/fesm2022/lucca-front-ng-select.mjs +14 -14
  179. package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
  180. package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
  181. package/fesm2022/lucca-front-ng-sidepanel.mjs.map +1 -1
  182. package/fesm2022/lucca-front-ng-simple-select-api.mjs.map +1 -1
  183. package/fesm2022/lucca-front-ng-simple-select.mjs +12 -12
  184. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  185. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +6 -6
  186. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs.map +1 -1
  187. package/fesm2022/lucca-front-ng-software-icon.mjs +3 -3
  188. package/fesm2022/lucca-front-ng-software-icon.mjs.map +1 -1
  189. package/fesm2022/lucca-front-ng-sortable-list.mjs +6 -6
  190. package/fesm2022/lucca-front-ng-sortable-list.mjs.map +1 -1
  191. package/fesm2022/lucca-front-ng-status-badge.mjs +3 -3
  192. package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
  193. package/fesm2022/lucca-front-ng-table-of-content.mjs +6 -6
  194. package/fesm2022/lucca-front-ng-table-of-content.mjs.map +1 -1
  195. package/fesm2022/lucca-front-ng-text-flow.mjs +3 -3
  196. package/fesm2022/lucca-front-ng-text-flow.mjs.map +1 -1
  197. package/fesm2022/lucca-front-ng-time.mjs +18 -18
  198. package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
  199. package/fesm2022/lucca-front-ng-title.mjs +10 -10
  200. package/fesm2022/lucca-front-ng-title.mjs.map +1 -1
  201. package/fesm2022/lucca-front-ng-toast.mjs +10 -10
  202. package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
  203. package/fesm2022/lucca-front-ng-tree-select.mjs +6 -6
  204. package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
  205. package/fesm2022/lucca-front-ng-user-popover.mjs +18 -18
  206. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  207. package/fesm2022/lucca-front-ng-user.mjs +59 -59
  208. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  209. package/fesm2022/lucca-front-ng-vertical-navigation.mjs +12 -12
  210. package/fesm2022/lucca-front-ng-vertical-navigation.mjs.map +1 -1
  211. package/package.json +4 -4
  212. package/schematics/lib/local-deps/package-lock.json +8 -8
  213. package/schematics/lib/local-deps/package.json +1 -1
  214. package/types/lucca-front-ng-core-select-api.d.ts +5 -0
  215. package/types/lucca-front-ng-core-select-user.d.ts +6 -0
  216. package/types/lucca-front-ng-core-select.d.ts +6 -0
  217. package/types/lucca-front-ng-data-table.d.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-multi-select.mjs","sources":["../../../packages/ng/multi-select/translations.ts","../../../packages/ng/multi-select/select.translate.ts","../../../packages/ng/multi-select/select.utils.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.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: 'Selezionare 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: 'Seleccionar 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\tpl: {\n\t\tplaceholder: 'Wybierz…',\n\t\tsearch: 'Szukaj',\n\t\tclear: 'Wyczyść zaznaczenie',\n\t\tclearSearch: 'Wyczyść wyszukiwanie',\n\t\temptyResults: 'Wyszukiwanie nie przyniosło żadnych rezultatów.',\n\t\temptySelection: 'Wybierz elementy z listy po lewej stronie, aby rozpocząć',\n\t\texpand: 'Rozwiń',\n\t\treduce: 'Zmniejsz',\n\t\tselectAll: 'Zaznacz wszystko',\n\t\tunselectAll: 'Odznacz wszystko',\n\t\tloading: 'Trwa ładowanie…',\n\t\temptyOptions: 'Brak dostępnych wartości. Aby uzyskać więcej informacji, skontaktuj się z administratorem.',\n\t\tselectCountOptions: 'Zaznacz wszystkie wyniki ({{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 { LuMultiSelection } from './select.model';\n\n/**\n * Returns the `itemCount - 1` separators `Intl.ListFormat` puts between `itemCount` items, so they can be\n * interleaved with values rendered by a template rather than by `format()`.\n *\n * @example\n * ```ts\n * listSeparators(new Intl.ListFormat('fr-FR'), 3); // [', ', ' et ']\n * ```\n */\nexport function listSeparators(listFormat: Intl.ListFormat, itemCount: number): string[] {\n\treturn listFormat\n\t\t.formatToParts(Array.from({ length: itemCount }, (_, index) => `${index}`))\n\t\t.filter(({ type }) => type === 'literal')\n\t\t.map(({ value }) => value);\n}\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 { 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 { NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, AfterViewInit, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, inject, Injector, signal } from '@angular/core';\nimport { 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\tLuSelectPanelLayoutComponent,\n\tSELECT_ID,\n\tSELECT_PANEL_INSTANCE,\n\tTreeDisplayPipe,\n\tɵCoreSelectPanelElement,\n\tɵgetGroupTemplateLocation,\n\tɵinjectPointerNavigation,\n\tɵLuOptionComponent,\n\tɵLuOptionGroupPipe,\n} from '@lucca-front/ng/core-select';\nimport { ListboxComponent, ListboxState, OptionComponent as ListboxOptionComponent } from '@lucca-front/ng/listbox';\nimport { TreeBranchComponent } from '@lucca-front/ng/tree-select';\nimport { EMPTY, firstValueFrom } 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\thost: {\n\t\tclass: 'selectPanel',\n\t\t'[class.is-pointerNavigation]': 'pointerNavigation()',\n\t},\n\timports: [\n\t\tLuSelectPanelLayoutComponent,\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\tListboxComponent,\n\t\tListboxOptionComponent,\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 dataSourceOptions = this.selectInput.dataSourceOptions;\n\treadonly grouping = this.selectInput.groupingSignal;\n\ttreeGenerator = this.selectInput.treeGenerator;\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\tselectedOptions: T[] = this.selectInput.value || [];\n\treadonly optionTpl = this.selectInput.optionTpl;\n\n\treadonly options = signal<ɵCoreSelectPanelElement<T>[]>([]);\n\treadonly pointerNavigation = ɵinjectPointerNavigation(inject<ElementRef<HTMLElement>>(ElementRef).nativeElement);\n\n\treadonly keyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\treadonly #injector = inject(Injector);\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 groupLoadingKeys = signal<Set<unknown>>(new Set());\n\n\treadonly hasGrouping = computed(() => !!this.grouping());\n\tpublic readonly clue = toSignal(this.selectInput.clue$.pipe(map((clue) => clue ?? '')), { initialValue: '' });\n\tpublic readonly shouldDisplayAddOption = this.selectInput.shouldDisplayAddOption;\n\n\treadonly groupTemplateLocation = ɵgetGroupTemplateLocation(this.hasGrouping, this.clue, this.dataSourceOptions, this.searchable);\n\n\t// Loading takes precedence over empty so the \"no result\" message never flashes during a fetch\n\treadonly listboxState = computed<ListboxState | null>(() => (this.loading() ? 'loading' : this.dataSourceOptions().length === 0 ? 'empty' : null));\n\n\treadonly listboxStatusMsg = computed(() => {\n\t\tif (this.loading()) {\n\t\t\treturn this.intl().loading;\n\t\t}\n\t\treturn this.clue().length ? this.intl().emptyResults : this.intl().emptyOptions;\n\t});\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.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\tafterNextRender(() => this.panelRef.updatePosition(), { injector: this.#injector });\n\t}\n\n\ttoggleOptions(notSelectedOptions: T[], groupOptions: T[], groupKey?: unknown): void {\n\t\tconst dataSource = this.selectInput.dataSource();\n\t\tif (groupKey !== undefined && dataSource.getGroupOptions) {\n\t\t\tthis.groupLoadingKeys.update((keys) => new Set(keys).add(groupKey));\n\t\t\tvoid firstValueFrom(dataSource.getGroupOptions(groupKey))\n\t\t\t\t.then((allGroupOptions) => {\n\t\t\t\t\tthis.groupLoadingKeys.update((keys) => {\n\t\t\t\t\t\tconst s = new Set(keys);\n\t\t\t\t\t\ts.delete(groupKey);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\t\t\t\t\tconst notSelectedOptions = allGroupOptions.filter((o) => !this.selectedOptions.some((so) => this.optionComparer()(so, o)));\n\t\t\t\t\tthis.#applyGroupToggle(notSelectedOptions, allGroupOptions);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.groupLoadingKeys.update((keys) => {\n\t\t\t\t\t\tconst s = new Set(keys);\n\t\t\t\t\t\ts.delete(groupKey);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.#applyGroupToggle(notSelectedOptions, groupOptions);\n\t}\n\n\t#applyGroupToggle(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\tafterNextRender(() => this.panelRef.updatePosition(), { injector: this.#injector });\n\t}\n\n\tprotected initKeyManager(): void {\n\t\tthis.keyManager.init({\n\t\t\tqueryList: this.options,\n\t\t\toptions: this.dataSourceOptions,\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","<lu-select-panel-layout\n\tclass=\"lu-option-picker-panel mod-multiple\"\n\tdata-testid=\"dialog-panel\"\n\t[loading]=\"loading()\"\n\t[contentTabIndex]=\"0\"\n\t(scrolled)=\"onScroll($event)\"\n>\n\t<lu-listbox multiple [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\t(e.g. the select-all checkbox) that are referenced by aria-activedescendant -->\n\t\t<ng-container ngProjectAs=\"[listbox-header]\">\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</ng-container>\n\t\t@if (grouping() && groupTemplateLocation() === \"group-header\") {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: grouping().selector; track group.key; let groupIndex = $index) {\n\t\t\t\t<lu-listbox-option group [groupId]=\"selectId + '-group-' + group.key\" [elementId]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t<span #groupingTitleRef>\n\t\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t@if (someGroupOptionEnabled()(group.options)) {\n\t\t\t\t\t\t@let groupCtx = group.options | luOptionsGroupContext: selectedOptions : optionComparer();\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tgroup-action\n\t\t\t\t\t\t\tclass=\"link\"\n\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\t[elementId]=\"selectId + '-group-' + group.key + '-action'\"\n\t\t\t\t\t\t\t(selected)=\"toggleOptions(groupCtx.notSelectedOptions, group.options, group.key)\"\n\t\t\t\t\t\t\t[disabled]=\"groupLoadingKeys().has(group.key)\"\n\t\t\t\t\t\t\t(click)=\"toggleOptions(groupCtx.notSelectedOptions, group.options, group.key)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t@if (groupLoadingKeys().has(group.key)) {\n\t\t\t\t\t\t\t\t<span class=\"loading\"></span>\n\t\t\t\t\t\t\t} @else {\n\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>{{ groupCtx.isGroupSelected ? intl().unselectAll : intl().selectAll }}\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\t<div optgroup class=\"listboxOptionWrapper\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</lu-listbox-option>\n\t\t\t}\n\t\t}\n\t\t@if (!grouping() || groupTemplateLocation() !== \"group-header\") {\n\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: dataSourceOptions() }\" />\n\t\t}\n\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t@if (treeGenerator) {\n\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track optionKey()(branch.node)) {\n\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions\"\n\t\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"toggleOption($event)\"\n\t\t\t\t\t\t(selectMany)=\"toggleOptions($event, [])\"\n\t\t\t\t\t\t(unselectMany)=\"toggleOptions([], $event)\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t} @else {\n\t\t\t\t@for (option of options; track optionKey()(option); let index = $index) {\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[grouping]=\"groupTemplateLocation() === 'option' ? grouping() : undefined\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selectedOptions\"\n\t\t\t\t\t\t(selected)=\"toggleOption(option)\"\n\t\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t</lu-listbox>\n\t@if (shouldDisplayAddOption()) {\n\t\t<lu-listbox-option\n\t\t\tadd\n\t\t\tclass=\"palette-product\"\n\t\t\tluCoreSelectPanelElement\n\t\t\t#addOptionElement=\"luCoreSelectPanelElement\"\n\t\t\telementId=\"picker-content-add\"\n\t\t\t[hovered]=\"addOptionElement.isHighlighted()\"\n\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t>\n\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t</lu-listbox-option>\n\t}\n</lu-select-panel-layout>\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 { getPushPanelViewportMargin } from '@lucca-front/ng/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(getPushPanelViewportMargin(this.elementRef.nativeElement, 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\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tinject,\n\tinput,\n\tLOCALE_ID,\n\tmodel,\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 { getIntlPluralLabel, intlInputOptions, LOCALE_PLURAL_RULES, luBooleanAttribute, luNumberAttribute, LuPluralForms } 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 { ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { IconComponent } from '@lucca/prisme/icon';\nimport { Subject } from 'rxjs';\nimport { LuMultiSelectDefaultDisplayerComponent } from '../displayer';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { listSeparators } from '../select.utils';\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\tCommonModule,\n\t\tɵPresentationDisplayDefaultDirective,\n\t\tIconComponent,\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: luNumberAttribute });\n\n\treadonly keepSearchAfterSelection = input(false, { transform: luBooleanAttribute });\n\n\tprivate readonly pluralRules = inject(LOCALE_PLURAL_RULES);\n\n\t/**\n\t * @deprecated use filterPillLabelPluralFn\n\t */\n\treadonly filterPillLabelPlural = input<string>();\n\treadonly filterPillLabelPluralFn = input<(count: number) => string | LuPluralForms>();\n\n\treadonly filterPillLabelPluralValue = computed(() => {\n\t\tconst label = this.filterPillLabelPluralFn();\n\t\tconst count = this.valueLength();\n\t\tif (label) {\n\t\t\tconst result = label(count);\n\t\t\treturn typeof result === 'string' ? result : getIntlPluralLabel(this.pluralRules, result, count);\n\t\t}\n\t\treturn `${count} ${this.filterPillLabelPlural()}`;\n\t});\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\tpublic singleOptionForDisplay: Signal<T | undefined> = computed(() => this.valueSignal()?.[0]);\n\toverride _value: T[] = [];\n\n\t#listFormat = new Intl.ListFormat(inject(LOCALE_ID));\n\n\tprotected readonly presentationSeparators = computed(() => listSeparators(this.#listFormat, this.valueSignal()?.length ?? 0));\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<lu-icon icon=\"arrowChevronBottom\" class=\"multipleSelect-arrow\" />\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"multipleSelect-searchIcon\" />\n}\n\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<div class=\"multipleSelect-displayer-filter\">\n\t\t@if (useSingleOptionDisplayer() && valueLength() === 1 && singleOptionForDisplay() !== undefined) {\n\t\t\t<div class=\"multipleSelect-pill-displayer-chip\">\n\t\t\t\t<ng-container *luOptionOutlet=\"displayerTpl(); value: singleOptionForDisplay()\" />\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\">{{ filterPillLabelPluralValue() }}</span>\n\t} @else {\n\t\t{{ label }}{{ valueLength() === 1 ? colon : \"\" }}\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<ng-container *luOptionOutlet=\"displayerTpl(); value: v\" />\n\n\t\t\t@let separator = presentationSeparators()[$index];\n\n\t\t\t@if (separator) {\n\t\t\t\t<ng-container>{{ separator }}</ng-container>\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","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\tpl: {\n\t\totherResult: 'inny wynik',\n\t\totherResults: 'inne wyniki',\n\t\tshowResultsDetails: 'Zobacz szczegóły',\n\t\tremoveOption: 'Usuń opcję',\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\tdisplayerLabelValue: 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 { afterNextRender, computed, DestroyRef, Directive, ElementRef, inject, Injector, 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\treadonly #injector = inject(Injector);\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 ? null : true;\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\t// When the displayer swaps variants while the panel is open (e.g. the content-displayer\n\t\t// gives way to the default displayer on the first selection), the previously focused input\n\t\t// is destroyed. focusInput$ is a plain Subject, so its emission fires before this new input\n\t\t// has subscribed and is lost — focus falls back to <body> and keyboard navigation dies.\n\t\t// A freshly mounted displayer input owns focus whenever the panel is open.\n\t\tif (this.select.isPanelOpen) {\n\t\t\tafterNextRender(() => this.elementRef.nativeElement.focus(), { injector: this.#injector });\n\t\t}\n\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 { afterNextRender, ChangeDetectionStrategy, Component, computed, ElementRef, inject, Injector, 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 (displayedSingleOption(); as singleOption) {\n\t\t\t\t\t\t<lu-chip withEllipsis (kill)=\"unselectOption(singleOption, $event)\" class=\"multipleSelect-displayer-chip\" [unkillable]=\"disabled() ?? false\">\n\t\t\t\t\t\t\t<ng-template *luOptionOutlet=\"select.displayerTpl(); value: singleOption\" />\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>{{ displayerLabelValue() }}</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 displayerLabelValue = this.selectAllContext.displayerLabelValue;\n\treadonly displayerCount = this.selectAllContext.displayerCount;\n\n\treadonly displayedSingleOption = this.select.singleOptionForDisplay;\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\treadonly #injector = inject(Injector);\n\n\tunselectOption(option: TValue, $event: Event): void {\n\t\t$event.stopPropagation();\n\t\t$event.preventDefault();\n\t\tthis.select.updateValue(this.isIncludeMode() ? (this.select.value?.filter((o) => o !== option) ?? []) : [...(this.select.value ?? []), option], true);\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\t\tthis.inputElementRef().nativeElement.focus();\n\t\t\t},\n\t\t\t{ injector: this.#injector },\n\t\t);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, Injector } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ɵCoreSelectPanelElement, ɵscrollIntoViewOnceReady } 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\" role=\"option\">\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\treadonly #injector = inject(Injector);\n\n\tconstructor() {\n\t\tthis.#selectableItem.id.set(`multi-select-select-all`);\n\t\teffect((onCleanup) => {\n\t\t\tif (this.#selectableItem.isHighlighted()) {\n\t\t\t\t// Wait for the panel layout to settle (opening animation) before scrolling,\n\t\t\t\t// otherwise the browser computes a bogus scroll position.\n\t\t\t\tonCleanup(ɵscrollIntoViewOnceReady(this.#elementRef.nativeElement, this.#injector));\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 { getIntlPluralLabel, isNil, LOCALE_PLURAL_RULES, LuPluralForms } from '@lucca-front/ng/core';\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\tprivate readonly pluralRules = inject(LOCALE_PLURAL_RULES);\n\n\t/**\n\t * @deprecated use withSelectAllDisplayerLabelFn\n\t */\n\treadonly displayerLabel = input<string>(undefined, { alias: 'withSelectAllDisplayerLabel' });\n\treadonly displayerLabelFn = input<(count: number) => string | LuPluralForms>(undefined, { alias: 'withSelectAllDisplayerLabelFn' });\n\n\treadonly displayerLabelValue = computed(() => {\n\t\tconst label = this.displayerLabelFn();\n\t\tconst count = this.displayerCount();\n\t\tif (label) {\n\t\t\tconst result = label(count);\n\t\t\treturn typeof result === 'string' ? result : getIntlPluralLabel(this.pluralRules, result, count ?? 0);\n\t\t}\n\t\treturn `${count} ${this.displayerLabel()}`;\n\t});\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\treadonly clueChange = toSignal(this.select.clueChange$);\n\treadonly #options = computed<readonly TValue[]>(() => this.select.options() ?? []);\n\n\treadonly singleRemainingOption = computed<TValue | undefined>(() => {\n\t\tconst options = this.#options();\n\n\t\tconst excludedValues = this.#values();\n\n\t\tif (this.#mode() !== 'exclude' || options.length !== this.totalCount() || options.length - excludedValues.length !== 1) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn options.find((option) => !excludedValues.some((excluded) => this.select.optionComparer()(excluded, option)));\n\t});\n\n\t// only show panel header when no clue && values not empty\n\treadonly #showPanelHeader = computed(() => isNil(this.clueChange()) || (this.clueChange()?.length === 0 && this.totalCount() !== 0));\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\teffect(() => {\n\t\t\tif (this.#showPanelHeader()) {\n\t\t\t\tthis.select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\t\t} else {\n\t\t\t\tthis.select.panelHeaderTpl.set(undefined);\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' || this.singleRemainingOption() !== undefined);\n\t\tthis.select.singleOptionForDisplay = computed(() => (this.#mode() === 'include' && this.#valuesCount() === 1 ? this.select.valueSignal()?.[0] : this.singleRemainingOption()));\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) > 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 ?? 0) > 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 { afterNextRender, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Injector, 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 { IconComponent } from '@lucca/prisme/icon';\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\nlet nextID = 0;\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective, ChipComponent, IconComponent],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer\">\n\t\t\t<div class=\"multipleSelect-displayer-suffix\">\n\t\t\t\t<input [attr.aria-labelledby]=\"valueID\" autocomplete=\"off\" #inputElement (keydown.backspace)=\"inputBackspace()\" (keydown.space)=\"inputSpace($event)\" luMultiSelectDisplayerInput />\n\t\t\t\t@if (select.filterPillMode) {\n\t\t\t\t\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"multiSelect-field-icon mod-search\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div [attr.id]=\"valueID\" class=\"pr-u-mask\">\n\t\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: option\" />&ngsp;\n\t\t\t\t}\n\t\t\t\t@if (overflowOptions$ | async; as overflow) {\n\t\t\t\t\t+ {{ overflow }}\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t<lu-chip aria-hidden=\"true\" class=\"multipleSelect-displayer-chip\" withEllipsis (kill)=\"unselectOption(option, $event)\" [unkillable]=\"(select.disabled$ | async) ?? false\">\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 aria-hidden=\"true\" 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\tvalueID = `value-${++nextID}`;\n\n\tprotected destroyRef = inject(DestroyRef);\n\treadonly #injector = inject(Injector);\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\tconst maxValuesShown = this.select.maxValuesShown();\n\t\t\tif (maxValuesShown) {\n\t\t\t\treturn (options || []).slice(0, 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\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\t\tthis.select.updatePosition();\n\t\t\t\tthis.inputElementRef()?.nativeElement.focus();\n\t\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t\t},\n\t\t\t{ injector: this.#injector },\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 { 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","ɵinjectPointerNavigation","ɵgetGroupTemplateLocation","ɵLuOptionComponent","ɵCoreSelectPanelElement","ListboxOptionComponent","ɵLuOptionGroupPipe","ɵLuOptionOutletDirective","ɵPresentationDisplayDefaultDirective","ɵeffectWithDeps","ɵscrollIntoViewOnceReady","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/select.utils.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.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: 'Selezionare 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: 'Seleccionar 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\tpl: {\n\t\tplaceholder: 'Wybierz…',\n\t\tsearch: 'Szukaj',\n\t\tclear: 'Wyczyść zaznaczenie',\n\t\tclearSearch: 'Wyczyść wyszukiwanie',\n\t\temptyResults: 'Wyszukiwanie nie przyniosło żadnych rezultatów.',\n\t\temptySelection: 'Wybierz elementy z listy po lewej stronie, aby rozpocząć',\n\t\texpand: 'Rozwiń',\n\t\treduce: 'Zmniejsz',\n\t\tselectAll: 'Zaznacz wszystko',\n\t\tunselectAll: 'Odznacz wszystko',\n\t\tloading: 'Trwa ładowanie…',\n\t\temptyOptions: 'Brak dostępnych wartości. Aby uzyskać więcej informacji, skontaktuj się z administratorem.',\n\t\tselectCountOptions: 'Zaznacz wszystkie wyniki ({{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 { LuMultiSelection } from './select.model';\n\n/**\n * Returns the `itemCount - 1` separators `Intl.ListFormat` puts between `itemCount` items, so they can be\n * interleaved with values rendered by a template rather than by `format()`.\n *\n * @example\n * ```ts\n * listSeparators(new Intl.ListFormat('fr-FR'), 3); // [', ', ' et ']\n * ```\n */\nexport function listSeparators(listFormat: Intl.ListFormat, itemCount: number): string[] {\n\treturn listFormat\n\t\t.formatToParts(Array.from({ length: itemCount }, (_, index) => `${index}`))\n\t\t.filter(({ type }) => type === 'literal')\n\t\t.map(({ value }) => value);\n}\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 { 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 { NgTemplateOutlet } from '@angular/common';\nimport { afterNextRender, AfterViewInit, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, inject, Injector, signal } from '@angular/core';\nimport { 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\tLuSelectPanelLayoutComponent,\n\tSELECT_ID,\n\tSELECT_PANEL_INSTANCE,\n\tTreeDisplayPipe,\n\tɵCoreSelectPanelElement,\n\tɵgetGroupTemplateLocation,\n\tɵinjectPointerNavigation,\n\tɵLuOptionComponent,\n\tɵLuOptionGroupPipe,\n} from '@lucca-front/ng/core-select';\nimport { ListboxComponent, ListboxState, OptionComponent as ListboxOptionComponent } from '@lucca-front/ng/listbox';\nimport { TreeBranchComponent } from '@lucca-front/ng/tree-select';\nimport { EMPTY, firstValueFrom } 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\thost: {\n\t\tclass: 'selectPanel',\n\t\t'[class.is-pointerNavigation]': 'pointerNavigation()',\n\t},\n\timports: [\n\t\tLuSelectPanelLayoutComponent,\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\tListboxComponent,\n\t\tListboxOptionComponent,\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 dataSourceOptions = this.selectInput.dataSourceOptions;\n\treadonly grouping = this.selectInput.groupingSignal;\n\ttreeGenerator = this.selectInput.treeGenerator;\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\tselectedOptions: T[] = this.selectInput.value || [];\n\treadonly optionTpl = this.selectInput.optionTpl;\n\n\treadonly options = signal<ɵCoreSelectPanelElement<T>[]>([]);\n\treadonly pointerNavigation = ɵinjectPointerNavigation(inject<ElementRef<HTMLElement>>(ElementRef).nativeElement);\n\n\treadonly keyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\treadonly #injector = inject(Injector);\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 groupLoadingKeys = signal<Set<unknown>>(new Set());\n\n\treadonly hasGrouping = computed(() => !!this.grouping());\n\tpublic readonly clue = toSignal(this.selectInput.clue$.pipe(map((clue) => clue ?? '')), { initialValue: '' });\n\tpublic readonly shouldDisplayAddOption = this.selectInput.shouldDisplayAddOption;\n\n\treadonly groupTemplateLocation = ɵgetGroupTemplateLocation(this.hasGrouping, this.clue, this.dataSourceOptions, this.searchable);\n\n\t// Loading takes precedence over empty so the \"no result\" message never flashes during a fetch\n\treadonly listboxState = computed<ListboxState | null>(() => (this.loading() ? 'loading' : this.dataSourceOptions().length === 0 ? 'empty' : null));\n\n\treadonly listboxStatusMsg = computed(() => {\n\t\tif (this.loading()) {\n\t\t\treturn this.intl().loading;\n\t\t}\n\t\treturn this.clue().length ? this.intl().emptyResults : this.intl().emptyOptions;\n\t});\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.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\tafterNextRender(() => this.panelRef.updatePosition(), { injector: this.#injector });\n\t}\n\n\ttoggleOptions(notSelectedOptions: T[], groupOptions: T[], groupKey?: unknown): void {\n\t\tconst dataSource = this.selectInput.dataSource();\n\t\tif (groupKey !== undefined && dataSource.getGroupOptions) {\n\t\t\tthis.groupLoadingKeys.update((keys) => new Set(keys).add(groupKey));\n\t\t\tvoid firstValueFrom(dataSource.getGroupOptions(groupKey))\n\t\t\t\t.then((allGroupOptions) => {\n\t\t\t\t\tthis.groupLoadingKeys.update((keys) => {\n\t\t\t\t\t\tconst s = new Set(keys);\n\t\t\t\t\t\ts.delete(groupKey);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\t\t\t\t\tconst notSelectedOptions = allGroupOptions.filter((o) => !this.selectedOptions.some((so) => this.optionComparer()(so, o)));\n\t\t\t\t\tthis.#applyGroupToggle(notSelectedOptions, allGroupOptions);\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tthis.groupLoadingKeys.update((keys) => {\n\t\t\t\t\t\tconst s = new Set(keys);\n\t\t\t\t\t\ts.delete(groupKey);\n\t\t\t\t\t\treturn s;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tthis.#applyGroupToggle(notSelectedOptions, groupOptions);\n\t}\n\n\t#applyGroupToggle(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\tafterNextRender(() => this.panelRef.updatePosition(), { injector: this.#injector });\n\t}\n\n\tprotected initKeyManager(): void {\n\t\tthis.keyManager.init({\n\t\t\tqueryList: this.options,\n\t\t\toptions: this.dataSourceOptions,\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","<lu-select-panel-layout\n\tclass=\"lu-option-picker-panel mod-multiple\"\n\tdata-testid=\"dialog-panel\"\n\t[loading]=\"loading()\"\n\t[contentTabIndex]=\"0\"\n\t(scrolled)=\"onScroll($event)\"\n>\n\t<lu-listbox multiple [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\t(e.g. the select-all checkbox) that are referenced by aria-activedescendant -->\n\t\t<ng-container ngProjectAs=\"[listbox-header]\">\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</ng-container>\n\t\t@if (grouping() && groupTemplateLocation() === \"group-header\") {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: grouping().selector; track group.key; let groupIndex = $index) {\n\t\t\t\t<lu-listbox-option group [groupId]=\"selectId + '-group-' + group.key\" [elementId]=\"selectId + '-group-' + group.key\">\n\t\t\t\t\t<span #groupingTitleRef>\n\t\t\t\t\t\t<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t@if (someGroupOptionEnabled()(group.options)) {\n\t\t\t\t\t\t@let groupCtx = group.options | luOptionsGroupContext: selectedOptions : optionComparer();\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tgroup-action\n\t\t\t\t\t\t\tclass=\"link\"\n\t\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t\t[elementId]=\"selectId + '-group-' + group.key + '-action'\"\n\t\t\t\t\t\t\t(selected)=\"toggleOptions(groupCtx.notSelectedOptions, group.options, group.key)\"\n\t\t\t\t\t\t\t[disabled]=\"groupLoadingKeys().has(group.key)\"\n\t\t\t\t\t\t\t(click)=\"toggleOptions(groupCtx.notSelectedOptions, group.options, group.key)\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t@if (groupLoadingKeys().has(group.key)) {\n\t\t\t\t\t\t\t\t<span class=\"loading\"></span>\n\t\t\t\t\t\t\t} @else {\n\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>{{ groupCtx.isGroupSelected ? intl().unselectAll : intl().selectAll }}\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\t<div optgroup class=\"listboxOptionWrapper\">\n\t\t\t\t\t\t<ng-template\n\t\t\t\t\t\t\t[ngTemplateOutlet]=\"optionsList\"\n\t\t\t\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: group.options, groupIndex: groupIndex }\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</lu-listbox-option>\n\t\t\t}\n\t\t}\n\t\t@if (!grouping() || groupTemplateLocation() !== \"group-header\") {\n\t\t\t<ng-template [ngTemplateOutlet]=\"optionsList\" [ngTemplateOutletContext]=\"{ $implicit: dataSourceOptions() }\" />\n\t\t}\n\t\t<ng-template #optionsList let-options let-groupIndex=\"groupIndex\">\n\t\t\t@if (treeGenerator) {\n\t\t\t\t@for (branch of options | luTreeDisplay: treeGenerator; let index = $index; track optionKey()(branch.node)) {\n\t\t\t\t\t<lu-tree-branch\n\t\t\t\t\t\t[branch]=\"branch\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions\"\n\t\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"toggleOption($event)\"\n\t\t\t\t\t\t(selectMany)=\"toggleOptions($event, [])\"\n\t\t\t\t\t\t(unselectMany)=\"toggleOptions([], $event)\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t} @else {\n\t\t\t\t@for (option of options; track optionKey()(option); let index = $index) {\n\t\t\t\t\t<lu-select-option\n\t\t\t\t\t\tluCoreSelectPanelElement\n\t\t\t\t\t\t[option]=\"option\"\n\t\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t[grouping]=\"groupTemplateLocation() === 'option' ? grouping() : undefined\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selectedOptions\"\n\t\t\t\t\t\t(selected)=\"toggleOption(option)\"\n\t\t\t\t\t\t(click)=\"toggleOption(option)\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t}\n\t\t</ng-template>\n\t</lu-listbox>\n\t@if (shouldDisplayAddOption()) {\n\t\t<lu-listbox-option\n\t\t\tadd\n\t\t\tclass=\"palette-product\"\n\t\t\tluCoreSelectPanelElement\n\t\t\t#addOptionElement=\"luCoreSelectPanelElement\"\n\t\t\telementId=\"picker-content-add\"\n\t\t\t[hovered]=\"addOptionElement.isHighlighted()\"\n\t\t\t(click)=\"selectInput.emitAddOption()\"\n\t\t\t(selected)=\"selectInput.emitAddOption()\"\n\t\t>\n\t\t\t<ng-container *luPortal=\"selectInput.addOptionLabel\" />\n\t\t</lu-listbox-option>\n\t}\n</lu-select-panel-layout>\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 { getPushPanelViewportMargin } from '@lucca-front/ng/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(getPushPanelViewportMargin(this.elementRef.nativeElement, 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\tChangeDetectionStrategy,\n\tComponent,\n\tcomputed,\n\tforwardRef,\n\tinject,\n\tinput,\n\tLOCALE_ID,\n\tmodel,\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 { getIntlPluralLabel, intlInputOptions, LOCALE_PLURAL_RULES, luBooleanAttribute, luNumberAttribute, LuPluralForms } 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 { ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\nimport { LuTooltipModule } from '@lucca-front/ng/tooltip';\nimport { IconComponent } from '@lucca/prisme/icon';\nimport { Subject } from 'rxjs';\nimport { LuMultiSelectDefaultDisplayerComponent } from '../displayer';\nimport { LU_MULTI_SELECT_TRANSLATIONS } from '../select.translate';\nimport { listSeparators } from '../select.utils';\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\tCommonModule,\n\t\tɵPresentationDisplayDefaultDirective,\n\t\tIconComponent,\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: luNumberAttribute });\n\n\treadonly keepSearchAfterSelection = input(false, { transform: luBooleanAttribute });\n\n\tprivate readonly pluralRules = inject(LOCALE_PLURAL_RULES);\n\n\t/**\n\t * @deprecated use filterPillLabelPluralFn\n\t */\n\treadonly filterPillLabelPlural = input<string>();\n\treadonly filterPillLabelPluralFn = input<(count: number) => string | LuPluralForms>();\n\n\treadonly filterPillLabelPluralValue = computed(() => {\n\t\tconst label = this.filterPillLabelPluralFn();\n\t\tconst count = this.valueLength();\n\t\tif (label) {\n\t\t\tconst result = label(count);\n\t\t\treturn typeof result === 'string' ? result : getIntlPluralLabel(this.pluralRules, result, count);\n\t\t}\n\t\treturn `${count} ${this.filterPillLabelPlural()}`;\n\t});\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\tpublic singleOptionForDisplay: Signal<T | undefined> = computed(() => this.valueSignal()?.[0]);\n\toverride _value: T[] = [];\n\n\t#listFormat = new Intl.ListFormat(inject(LOCALE_ID));\n\n\tprotected readonly presentationSeparators = computed(() => listSeparators(this.#listFormat, this.valueSignal()?.length ?? 0));\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<lu-icon icon=\"arrowChevronBottom\" class=\"multipleSelect-arrow\" />\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"multipleSelect-searchIcon\" />\n}\n\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<div class=\"multipleSelect-displayer-filter\">\n\t\t@if (useSingleOptionDisplayer() && valueLength() === 1 && singleOptionForDisplay() !== undefined) {\n\t\t\t<div class=\"multipleSelect-pill-displayer-chip\">\n\t\t\t\t<ng-container *luOptionOutlet=\"displayerTpl(); value: singleOptionForDisplay()\" />\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\">{{ filterPillLabelPluralValue() }}</span>\n\t} @else {\n\t\t{{ label }}{{ valueLength() === 1 ? colon : \"\" }}\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<ng-container *luOptionOutlet=\"displayerTpl(); value: v\" />\n\n\t\t\t@let separator = presentationSeparators()[$index];\n\n\t\t\t@if (separator) {\n\t\t\t\t<ng-container>{{ separator }}</ng-container>\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","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\tpl: {\n\t\totherResult: 'inny wynik',\n\t\totherResults: 'inne wyniki',\n\t\tshowResultsDetails: 'Zobacz szczegóły',\n\t\tremoveOption: 'Usuń opcję',\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\tdisplayerLabelValue: 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 { afterNextRender, computed, DestroyRef, Directive, ElementRef, inject, Injector, 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\treadonly #injector = inject(Injector);\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 ? null : true;\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\t// When the displayer swaps variants while the panel is open (e.g. the content-displayer\n\t\t// gives way to the default displayer on the first selection), the previously focused input\n\t\t// is destroyed. focusInput$ is a plain Subject, so its emission fires before this new input\n\t\t// has subscribed and is lost — focus falls back to <body> and keyboard navigation dies.\n\t\t// A freshly mounted displayer input owns focus whenever the panel is open.\n\t\tif (this.select.isPanelOpen) {\n\t\t\tafterNextRender(() => this.elementRef.nativeElement.focus(), { injector: this.#injector });\n\t\t}\n\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 { afterNextRender, ChangeDetectionStrategy, Component, computed, ElementRef, inject, Injector, 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 (displayedSingleOption(); as singleOption) {\n\t\t\t\t\t\t<lu-chip withEllipsis (kill)=\"unselectOption(singleOption, $event)\" class=\"multipleSelect-displayer-chip\" [unkillable]=\"disabled() ?? false\">\n\t\t\t\t\t\t\t<ng-template *luOptionOutlet=\"select.displayerTpl(); value: singleOption\" />\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>{{ displayerLabelValue() }}</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 displayerLabelValue = this.selectAllContext.displayerLabelValue;\n\treadonly displayerCount = this.selectAllContext.displayerCount;\n\n\treadonly displayedSingleOption = this.select.singleOptionForDisplay;\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\treadonly #injector = inject(Injector);\n\n\tunselectOption(option: TValue, $event: Event): void {\n\t\t$event.stopPropagation();\n\t\t$event.preventDefault();\n\t\tthis.select.updateValue(this.isIncludeMode() ? (this.select.value?.filter((o) => o !== option) ?? []) : [...(this.select.value ?? []), option], true);\n\t\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\t\tthis.inputElementRef().nativeElement.focus();\n\t\t\t},\n\t\t\t{ injector: this.#injector },\n\t\t);\n\t}\n}\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, Injector } from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FormsModule } from '@angular/forms';\nimport { ɵCoreSelectPanelElement, ɵscrollIntoViewOnceReady } 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\" role=\"option\">\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\treadonly #injector = inject(Injector);\n\n\tconstructor() {\n\t\tthis.#selectableItem.id.set(`multi-select-select-all`);\n\t\teffect((onCleanup) => {\n\t\t\tif (this.#selectableItem.isHighlighted()) {\n\t\t\t\t// Wait for the panel layout to settle (opening animation) before scrolling,\n\t\t\t\t// otherwise the browser computes a bogus scroll position.\n\t\t\t\tonCleanup(ɵscrollIntoViewOnceReady(this.#elementRef.nativeElement, this.#injector));\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 { getIntlPluralLabel, isNil, LOCALE_PLURAL_RULES, LuPluralForms } from '@lucca-front/ng/core';\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\tprivate readonly pluralRules = inject(LOCALE_PLURAL_RULES);\n\n\t/**\n\t * @deprecated use withSelectAllDisplayerLabelFn\n\t */\n\treadonly displayerLabel = input<string>(undefined, { alias: 'withSelectAllDisplayerLabel' });\n\treadonly displayerLabelFn = input<(count: number) => string | LuPluralForms>(undefined, { alias: 'withSelectAllDisplayerLabelFn' });\n\n\treadonly displayerLabelValue = computed(() => {\n\t\tconst label = this.displayerLabelFn();\n\t\tconst count = this.displayerCount();\n\t\tif (label) {\n\t\t\tconst result = label(count);\n\t\t\treturn typeof result === 'string' ? result : getIntlPluralLabel(this.pluralRules, result, count ?? 0);\n\t\t}\n\t\treturn `${count} ${this.displayerLabel()}`;\n\t});\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\treadonly clueChange = toSignal(this.select.clue$);\n\treadonly #options = computed<readonly TValue[]>(() => this.select.options() ?? []);\n\n\treadonly singleRemainingOption = computed<TValue | undefined>(() => {\n\t\tconst options = this.#options();\n\n\t\tconst excludedValues = this.#values();\n\n\t\tif (this.#mode() !== 'exclude' || options.length !== this.totalCount() || options.length - excludedValues.length !== 1) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn options.find((option) => !excludedValues.some((excluded) => this.select.optionComparer()(excluded, option)));\n\t});\n\n\t// only show panel header when no clue && values not empty\n\treadonly #showPanelHeader = computed(() => isNil(this.clueChange()) || (this.clueChange()?.length === 0 && this.totalCount() !== 0));\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\teffect(() => {\n\t\t\tif (this.#showPanelHeader()) {\n\t\t\t\tthis.select.panelHeaderTpl.set(LuMultiSelectAllHeaderComponent);\n\t\t\t} else {\n\t\t\t\tthis.select.panelHeaderTpl.set(undefined);\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' || this.singleRemainingOption() !== undefined);\n\t\tthis.select.singleOptionForDisplay = computed(() => (this.#mode() === 'include' && this.#valuesCount() === 1 ? this.select.valueSignal()?.[0] : this.singleRemainingOption()));\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) > 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 ?? 0) > 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 { afterNextRender, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Injector, 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 { IconComponent } from '@lucca/prisme/icon';\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\nlet nextID = 0;\n\n@Component({\n\tselector: 'lu-multi-select-default-displayer',\n\timports: [AsyncPipe, LuTooltipModule, ɵLuOptionOutletDirective, FormsModule, LuMultiSelectDisplayerInputDirective, ChipComponent, IconComponent],\n\ttemplate: `\n\t\t<div class=\"multipleSelect-displayer\">\n\t\t\t<div class=\"multipleSelect-displayer-suffix\">\n\t\t\t\t<input [attr.aria-labelledby]=\"valueID\" autocomplete=\"off\" #inputElement (keydown.backspace)=\"inputBackspace()\" (keydown.space)=\"inputSpace($event)\" luMultiSelectDisplayerInput />\n\t\t\t\t@if (select.filterPillMode) {\n\t\t\t\t\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"multiSelect-field-icon mod-search\" />\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div [attr.id]=\"valueID\" class=\"pr-u-mask\">\n\t\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t\t<ng-container *luOptionOutlet=\"select.displayerTpl(); value: option\" />&ngsp;\n\t\t\t\t}\n\t\t\t\t@if (overflowOptions$ | async; as overflow) {\n\t\t\t\t\t+ {{ overflow }}\n\t\t\t\t}\n\t\t\t</div>\n\n\t\t\t@for (option of displayedOptions$ | async; track option; let index = $index) {\n\t\t\t\t<lu-chip aria-hidden=\"true\" class=\"multipleSelect-displayer-chip\" withEllipsis (kill)=\"unselectOption(option, $event)\" [unkillable]=\"(select.disabled$ | async) ?? false\">\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 aria-hidden=\"true\" 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\tvalueID = `value-${++nextID}`;\n\n\tprotected destroyRef = inject(DestroyRef);\n\treadonly #injector = inject(Injector);\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\tconst maxValuesShown = this.select.maxValuesShown();\n\t\t\tif (maxValuesShown) {\n\t\t\t\treturn (options || []).slice(0, 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\tafterNextRender(\n\t\t\t() => {\n\t\t\t\tthis.select.panelRef?.updatePosition();\n\t\t\t\tthis.select.updatePosition();\n\t\t\t\tthis.inputElementRef()?.nativeElement.focus();\n\t\t\t\tthis.select.panelRef?.updateSelectedOptions(this.value);\n\t\t\t},\n\t\t\t{ injector: this.#injector },\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 { 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","ɵinjectPointerNavigation","ɵgetGroupTemplateLocation","ɵLuOptionComponent","ɵCoreSelectPanelElement","ListboxOptionComponent","ɵLuOptionGroupPipe","ɵLuOptionOutletDirective","ɵPresentationDisplayDefaultDirective","ɵeffectWithDeps","ɵscrollIntoViewOnceReady","i1"],"mappings":"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"}