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

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 (238) hide show
  1. package/README.md +6 -0
  2. package/fesm2022/lucca-front-ng-a11y.mjs +9 -9
  3. package/fesm2022/lucca-front-ng-activity-feed.mjs +19 -15
  4. package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
  5. package/fesm2022/lucca-front-ng-api.mjs +40 -40
  6. package/fesm2022/lucca-front-ng-app-layout.mjs +3 -3
  7. package/fesm2022/lucca-front-ng-approbation-inbox.mjs +78 -56
  8. package/fesm2022/lucca-front-ng-approbation-inbox.mjs.map +1 -1
  9. package/fesm2022/lucca-front-ng-box.mjs +3 -3
  10. package/fesm2022/lucca-front-ng-breadcrumbs.mjs +6 -6
  11. package/fesm2022/lucca-front-ng-bubble-icon.mjs +12 -7
  12. package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
  13. package/fesm2022/lucca-front-ng-bubble-illustration.mjs +3 -3
  14. package/fesm2022/lucca-front-ng-callout.mjs +24 -24
  15. package/fesm2022/lucca-front-ng-chip.mjs +4 -4
  16. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  17. package/fesm2022/lucca-front-ng-clear.mjs +4 -4
  18. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
  19. package/fesm2022/lucca-front-ng-code.mjs +3 -3
  20. package/fesm2022/lucca-front-ng-color.mjs +3 -3
  21. package/fesm2022/lucca-front-ng-comment.mjs +12 -12
  22. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  23. package/fesm2022/lucca-front-ng-container.mjs +3 -3
  24. package/fesm2022/lucca-front-ng-core-select-api.mjs +9 -9
  25. package/fesm2022/lucca-front-ng-core-select-department.mjs +8 -6
  26. package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-core-select-establishment.mjs +11 -9
  28. package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +6 -6
  30. package/fesm2022/lucca-front-ng-core-select-legal-units.mjs +8 -8
  31. package/fesm2022/lucca-front-ng-core-select-legal-units.mjs.map +1 -1
  32. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +3 -3
  33. package/fesm2022/lucca-front-ng-core-select-user.mjs +22 -20
  34. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-core-select.mjs +77 -62
  36. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-core.mjs +19 -19
  38. package/fesm2022/lucca-front-ng-data-table.mjs +40 -32
  39. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  40. package/fesm2022/lucca-front-ng-date.mjs +40 -40
  41. package/fesm2022/lucca-front-ng-date2.mjs +93 -40
  42. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-department.mjs +24 -24
  44. package/fesm2022/lucca-front-ng-dialog.mjs +56 -48
  45. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  46. package/fesm2022/lucca-front-ng-divider.mjs +3 -3
  47. package/fesm2022/lucca-front-ng-dropdown.mjs +42 -42
  48. package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
  49. package/fesm2022/lucca-front-ng-empty-state.mjs +9 -9
  50. package/fesm2022/lucca-front-ng-error-page.mjs +3 -3
  51. package/fesm2022/lucca-front-ng-establishment.mjs +33 -33
  52. package/fesm2022/lucca-front-ng-fancy-box.mjs +3 -3
  53. package/fesm2022/lucca-front-ng-file-upload.mjs +33 -26
  54. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  55. package/fesm2022/lucca-front-ng-filter-pills-core.mjs +6 -6
  56. package/fesm2022/lucca-front-ng-filter-pills.mjs +90 -21
  57. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  58. package/fesm2022/lucca-front-ng-footer.mjs +3 -3
  59. package/fesm2022/lucca-front-ng-form-field.mjs +24 -20
  60. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  61. package/fesm2022/lucca-front-ng-form-header.mjs +3 -3
  62. package/fesm2022/lucca-front-ng-form-label.mjs +3 -3
  63. package/fesm2022/lucca-front-ng-form.mjs +3 -3
  64. package/fesm2022/lucca-front-ng-formly.mjs +58 -58
  65. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +6 -6
  66. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +3 -3
  67. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +6 -6
  68. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +3 -3
  69. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +38 -37
  70. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  71. package/fesm2022/lucca-front-ng-forms.mjs +68 -48
  72. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  73. package/fesm2022/lucca-front-ng-gauge.mjs +3 -3
  74. package/fesm2022/lucca-front-ng-grid.mjs +6 -6
  75. package/fesm2022/lucca-front-ng-highlight-data.mjs +3 -3
  76. package/fesm2022/lucca-front-ng-highlight-section.mjs +6 -3
  77. package/fesm2022/lucca-front-ng-highlight-section.mjs.map +1 -1
  78. package/fesm2022/lucca-front-ng-highlight-text.mjs +3 -3
  79. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +9 -9
  80. package/fesm2022/lucca-front-ng-impersonation.mjs +5 -3
  81. package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
  82. package/fesm2022/lucca-front-ng-index-table.mjs +44 -38
  83. package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
  84. package/fesm2022/lucca-front-ng-inline-message.mjs +3 -3
  85. package/fesm2022/lucca-front-ng-input.mjs +21 -21
  86. package/fesm2022/lucca-front-ng-kbd.mjs +306 -0
  87. package/fesm2022/lucca-front-ng-kbd.mjs.map +1 -0
  88. package/fesm2022/lucca-front-ng-link.mjs +38 -14
  89. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  90. package/fesm2022/lucca-front-ng-listbox.mjs +13 -10
  91. package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
  92. package/fesm2022/lucca-front-ng-listing.mjs +21 -11
  93. package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
  94. package/fesm2022/lucca-front-ng-loading.mjs +51 -10
  95. package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
  96. package/fesm2022/lucca-front-ng-main-layout.mjs +6 -6
  97. package/fesm2022/lucca-front-ng-markdown.mjs +3 -3
  98. package/fesm2022/lucca-front-ng-mobile-push.mjs +3 -3
  99. package/fesm2022/lucca-front-ng-modal.mjs +22 -22
  100. package/fesm2022/lucca-front-ng-multi-select.mjs +42 -42
  101. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  102. package/fesm2022/lucca-front-ng-new-badge.mjs +3 -3
  103. package/fesm2022/lucca-front-ng-number-format.mjs +6 -6
  104. package/fesm2022/lucca-front-ng-number.mjs +7 -7
  105. package/fesm2022/lucca-front-ng-option.mjs +130 -130
  106. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  107. package/fesm2022/lucca-front-ng-page-header.mjs +3 -3
  108. package/fesm2022/lucca-front-ng-pagination.mjs +3 -3
  109. package/fesm2022/lucca-front-ng-plg-push.mjs +3 -3
  110. package/fesm2022/lucca-front-ng-popover.mjs +17 -17
  111. package/fesm2022/lucca-front-ng-popover2.mjs +54 -21
  112. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  113. package/fesm2022/lucca-front-ng-popup.mjs +10 -10
  114. package/fesm2022/lucca-front-ng-priority-level.mjs +128 -0
  115. package/fesm2022/lucca-front-ng-priority-level.mjs.map +1 -0
  116. package/fesm2022/lucca-front-ng-progress-bar.mjs +3 -3
  117. package/fesm2022/lucca-front-ng-progress-stepper.mjs +6 -6
  118. package/fesm2022/lucca-front-ng-read-more.mjs +6 -6
  119. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  120. package/fesm2022/lucca-front-ng-resource-card.mjs +12 -12
  121. package/fesm2022/lucca-front-ng-safe-content.mjs +10 -10
  122. package/fesm2022/lucca-front-ng-scroll-box.mjs +4 -4
  123. package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
  124. package/fesm2022/lucca-front-ng-scroll.mjs +9 -10
  125. package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
  126. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +8 -8
  127. package/fesm2022/lucca-front-ng-segmented-control.mjs +8 -8
  128. package/fesm2022/lucca-front-ng-select.mjs +14 -14
  129. package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
  130. package/fesm2022/lucca-front-ng-simple-select.mjs +16 -16
  131. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  132. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +6 -6
  133. package/fesm2022/lucca-front-ng-software-icon.mjs +3 -3
  134. package/fesm2022/lucca-front-ng-sortable-list.mjs +6 -6
  135. package/fesm2022/lucca-front-ng-status-badge.mjs +3 -3
  136. package/fesm2022/lucca-front-ng-table-of-content.mjs +6 -6
  137. package/fesm2022/lucca-front-ng-text-flow.mjs +4 -4
  138. package/fesm2022/lucca-front-ng-text-flow.mjs.map +1 -1
  139. package/fesm2022/lucca-front-ng-time.mjs +18 -18
  140. package/fesm2022/lucca-front-ng-title.mjs +10 -10
  141. package/fesm2022/lucca-front-ng-toast.mjs +10 -10
  142. package/fesm2022/lucca-front-ng-tree-select.mjs +7 -7
  143. package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
  144. package/fesm2022/lucca-front-ng-user-popover.mjs +22 -22
  145. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  146. package/fesm2022/lucca-front-ng-user.mjs +68 -61
  147. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  148. package/fesm2022/lucca-front-ng-vertical-navigation.mjs +12 -12
  149. package/package.json +23 -10
  150. package/schematics/lib/local-deps/package-lock.json +7 -7
  151. package/schematics/lib/local-deps/package.json +1 -1
  152. package/schematics/lu-button/migration.js +59 -33
  153. package/src/components/_sidepanel.scss +2 -2
  154. package/src/components/cdk/_global.scss +4 -0
  155. package/src/components/cdk/_overlay.scss +1 -1
  156. package/src/definitions/option/_option-item.scss +7 -4
  157. package/types/lucca-front-ng-a11y.d.ts +1 -1
  158. package/types/lucca-front-ng-activity-feed.d.ts +13 -9
  159. package/types/lucca-front-ng-api.d.ts +31 -31
  160. package/types/lucca-front-ng-approbation-inbox.d.ts +22 -14
  161. package/types/lucca-front-ng-bubble-icon.d.ts +5 -2
  162. package/types/lucca-front-ng-callout.d.ts +17 -17
  163. package/types/lucca-front-ng-chip.d.ts +7 -7
  164. package/types/lucca-front-ng-clear.d.ts +2 -2
  165. package/types/lucca-front-ng-color.d.ts +3 -3
  166. package/types/lucca-front-ng-comment.d.ts +14 -14
  167. package/types/lucca-front-ng-container.d.ts +1 -1
  168. package/types/lucca-front-ng-core-select-api.d.ts +7 -7
  169. package/types/lucca-front-ng-core-select-department.d.ts +7 -5
  170. package/types/lucca-front-ng-core-select-establishment.d.ts +8 -6
  171. package/types/lucca-front-ng-core-select-job-qualification.d.ts +2 -2
  172. package/types/lucca-front-ng-core-select-legal-units.d.ts +3 -3
  173. package/types/lucca-front-ng-core-select-occupation-category.d.ts +2 -2
  174. package/types/lucca-front-ng-core-select-user.d.ts +14 -12
  175. package/types/lucca-front-ng-core-select.d.ts +56 -41
  176. package/types/lucca-front-ng-core.d.ts +5 -5
  177. package/types/lucca-front-ng-data-table.d.ts +38 -33
  178. package/types/lucca-front-ng-date.d.ts +13 -13
  179. package/types/lucca-front-ng-date2.d.ts +56 -37
  180. package/types/lucca-front-ng-department.d.ts +2 -2
  181. package/types/lucca-front-ng-dialog.d.ts +9 -9
  182. package/types/lucca-front-ng-divider.d.ts +2 -2
  183. package/types/lucca-front-ng-dropdown.d.ts +2 -2
  184. package/types/lucca-front-ng-empty-state.d.ts +20 -20
  185. package/types/lucca-front-ng-establishment.d.ts +15 -15
  186. package/types/lucca-front-ng-fancy-box.d.ts +12 -12
  187. package/types/lucca-front-ng-file-upload.d.ts +21 -15
  188. package/types/lucca-front-ng-filter-pills.d.ts +27 -18
  189. package/types/lucca-front-ng-footer.d.ts +1 -1
  190. package/types/lucca-front-ng-form-field.d.ts +19 -19
  191. package/types/lucca-front-ng-form-label.d.ts +4 -4
  192. package/types/lucca-front-ng-form.d.ts +1 -1
  193. package/types/lucca-front-ng-forms-phone-number-input.d.ts +11 -11
  194. package/types/lucca-front-ng-forms-rich-text-input.d.ts +11 -11
  195. package/types/lucca-front-ng-forms.d.ts +59 -49
  196. package/types/lucca-front-ng-grid.d.ts +23 -23
  197. package/types/lucca-front-ng-highlight-data.d.ts +5 -5
  198. package/types/lucca-front-ng-highlight-section.d.ts +6 -3
  199. package/types/lucca-front-ng-horizontal-navigation.d.ts +4 -4
  200. package/types/lucca-front-ng-impersonation.d.ts +8 -6
  201. package/types/lucca-front-ng-index-table.d.ts +20 -18
  202. package/types/lucca-front-ng-inline-message.d.ts +2 -2
  203. package/types/lucca-front-ng-kbd.d.ts +59 -0
  204. package/types/lucca-front-ng-link.d.ts +17 -4
  205. package/types/lucca-front-ng-listbox.d.ts +10 -9
  206. package/types/lucca-front-ng-listing.d.ts +14 -3
  207. package/types/lucca-front-ng-loading.d.ts +18 -6
  208. package/types/lucca-front-ng-main-layout.d.ts +9 -9
  209. package/types/lucca-front-ng-modal.d.ts +4 -4
  210. package/types/lucca-front-ng-multi-select.d.ts +21 -21
  211. package/types/lucca-front-ng-option.d.ts +3 -3
  212. package/types/lucca-front-ng-page-header.d.ts +2 -2
  213. package/types/lucca-front-ng-pagination.d.ts +3 -3
  214. package/types/lucca-front-ng-popover.d.ts +18 -18
  215. package/types/lucca-front-ng-popover2.d.ts +9 -8
  216. package/types/lucca-front-ng-popup.d.ts +4 -4
  217. package/types/{lucca-front-ng-priority-levels.d.ts → lucca-front-ng-priority-level.d.ts} +11 -11
  218. package/types/lucca-front-ng-progress-bar.d.ts +1 -1
  219. package/types/lucca-front-ng-progress-stepper.d.ts +2 -2
  220. package/types/lucca-front-ng-read-more.d.ts +6 -6
  221. package/types/lucca-front-ng-resource-card.d.ts +3 -3
  222. package/types/lucca-front-ng-segmented-control-tabs.d.ts +5 -5
  223. package/types/lucca-front-ng-segmented-control.d.ts +3 -3
  224. package/types/lucca-front-ng-select.d.ts +9 -9
  225. package/types/lucca-front-ng-sidepanel.d.ts +1 -1
  226. package/types/lucca-front-ng-simple-select.d.ts +9 -9
  227. package/types/lucca-front-ng-software-icon.d.ts +1 -1
  228. package/types/lucca-front-ng-sortable-list.d.ts +1 -1
  229. package/types/lucca-front-ng-status-badge.d.ts +1 -1
  230. package/types/lucca-front-ng-time.d.ts +19 -19
  231. package/types/lucca-front-ng-title.d.ts +2 -2
  232. package/types/lucca-front-ng-toast.d.ts +2 -2
  233. package/types/lucca-front-ng-tree-select.d.ts +2 -2
  234. package/types/lucca-front-ng-user-popover.d.ts +1 -2
  235. package/types/lucca-front-ng-user.d.ts +26 -20
  236. package/types/lucca-front-ng-vertical-navigation.d.ts +5 -5
  237. package/fesm2022/lucca-front-ng-priority-levels.mjs +0 -128
  238. package/fesm2022/lucca-front-ng-priority-levels.mjs.map +0 -1
@@ -104,10 +104,10 @@ class LuIsOptionSelectedPipe {
104
104
  transform(option, comparer, selectedOption) {
105
105
  return !!selectedOption && comparer(option, selectedOption);
106
106
  }
107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuIsOptionSelectedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
108
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.4", ngImport: i0, type: LuIsOptionSelectedPipe, isStandalone: true, name: "luIsOptionSelected" }); }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuIsOptionSelectedPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
108
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.2.1", ngImport: i0, type: LuIsOptionSelectedPipe, isStandalone: true, name: "luIsOptionSelected" }); }
109
109
  }
110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuIsOptionSelectedPipe, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuIsOptionSelectedPipe, decorators: [{
111
111
  type: Pipe,
112
112
  args: [{
113
113
  name: 'luIsOptionSelected',
@@ -193,16 +193,16 @@ class LuSelectPanelComponent {
193
193
  this.keyManager.highlightOption(this.initialValue);
194
194
  }
195
195
  }
196
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSelectPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
197
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: LuSelectPanelComponent, isStandalone: true, selector: "lu-select-panel", host: { properties: { "class.colorPanel": "colorPanel()", "class.is-pointerNavigation": "pointerNavigation()" }, classAttribute: "selectPanel" }, providers: [
196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuSelectPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
197
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.1", type: LuSelectPanelComponent, isStandalone: true, selector: "lu-select-panel", host: { properties: { "class.colorPanel": "colorPanel()", "class.is-pointerNavigation": "pointerNavigation()" }, classAttribute: "selectPanel" }, providers: [
198
198
  CoreSelectKeyManager,
199
199
  {
200
200
  provide: SELECT_PANEL_INSTANCE,
201
201
  useExisting: forwardRef(() => LuSelectPanelComponent),
202
202
  },
203
- ], viewQueries: [{ propertyName: "sheetViewport", first: true, predicate: ["sheetViewport"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (selectInput.panelBottomSheetMode()) {\n\t<!-- Below the S breakpoint the panel is a dialog in `sheet` mode: the surface, the backdrop, the focus\n\ttrap, the close button and the focus restoration all come from the dialog, so the panel only fills in\n\tits title, its own search input \u2014 the field it covers is no longer reachable \u2014 and its content. -->\n\t<lu-dialog>\n\t\t<lu-dialog-header>\n\t\t\t@if (selectInput.panelTitle(); as title) {\n\t\t\t\t<!-- The interpolation and the marker must stay adjacent in the source: any whitespace between\n\t\t\t\tthem (even just a line break) renders as a literal space, pushing the asterisk away from the\n\t\t\t\ttitle instead of hugging it the way `.formLabel-required`'s own margin expects. -->\n\t\t\t\t@if (selectInput.panelTitleRequired()) {\n\t\t\t\t\t<h1>{{ title }}<sup class=\"formLabel-required\" aria-hidden=\"true\">*</sup></h1>\n\t\t\t\t} @else {\n\t\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t\t}\n\t\t\t}\n\t\t\t<div dialogHeaderContent>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"sheetSearch\" />\n\t\t\t</div>\n\t\t</lu-dialog-header>\n\t\t<lu-dialog-content #sheetViewport (scroll)=\"onScroll($event)\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t\t</lu-dialog-content>\n\t</lu-dialog>\n} @else {\n\t<lu-select-panel-layout [loading]=\"loading()\" trapFocus (scrolled)=\"onScroll($event)\">\n\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t</lu-select-panel-layout>\n}\n\n<ng-template #sheetSearch>\n\t<div class=\"textField\">\n\t\t<div class=\"textField-input\">\n\t\t\t<input\n\t\t\t\tclass=\"textField-input-value\"\n\t\t\t\ttype=\"text\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t[attr.aria-expanded]=\"true\"\n\t\t\t\t[attr.aria-controls]=\"selectId\"\n\t\t\t\t[attr.placeholder]=\"intl().placeholder\"\n\t\t\t\t[ngModel]=\"clue()\"\n\t\t\t\t(ngModelChange)=\"selectInput.clueChanged($event)\"\n\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t[readonly]=\"!searchable\"\n\t\t\t\t(keydown)=\"selectInput.onKeyDownNavigation($event)\"\n\t\t\t/>\n\t\t\t<div class=\"textField-input-affix\">\n\t\t\t\t<lu-icon class=\"textField-input-affix-icon\" icon=\"searchMagnifyingGlass\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #panelContent>\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat 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<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\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[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\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[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\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\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</ng-template>\n", styles: ["@layer base{:root{--components-options-item-padding-vertical: var(--pr-t-spacings-50);--components-options-item-padding-horizontal: var(--pr-t-spacings-100);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-neutral-800);--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-700, var(--palettes-product-700));--components-options-checkbox-border-radius: var(--pr-t-border-radius-small);--components-options-checkbox-border-color: var(--palettes-neutral-700);--components-options-establishment-multiple-padding: 2rem}}@layer reset,base,components,mods,product,utils;@layer mods{.textfield.mod-search{inline-size:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding-block:var(--pr-t-spacings-50);padding-inline:var(--components-options-item-padding-horizontal);border-block-end:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-neutral-50);font-style:italic}}@layer components{.optionPlaceholder{display:block;padding-block:var(--components-options-item-padding-vertical);padding-inline:var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-neutral-600)}}\n"], dependencies: [{ kind: "component", type: LuSelectPanelLayoutComponent, selector: "lu-select-panel-layout", inputs: ["loading", "trapFocus", "contentTabIndex"], outputs: ["scrolled"] }, { kind: "component", type: DialogComponent, selector: "lu-dialog", inputs: ["stacked", "fancyIllustration", "fancyIllustrationUrl"] }, { kind: "component", type: DialogHeaderComponent, selector: "lu-dialog-header", inputs: ["intl"] }, { kind: "component", type: DialogContentComponent, selector: "lu-dialog-content" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: _LuOptionComponent, selector: "lu-select-option", inputs: ["intl", "optionTpl", "option", "grouping", "hasChildren", "groupIndex", "optionIndex", "scrollIntoViewOptions", "groupTemplateLocation"], outputs: ["onlyParent", "onlyChildren"] }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "directive", type: _CoreSelectPanelElement, selector: "[luCoreSelectPanelElement]", inputs: ["elementId", "isSelected", "option", "disabled"], outputs: ["isSelectedChange", "selected"], exportAs: ["luCoreSelectPanelElement"] }, { kind: "component", type: ListboxComponent, selector: "lu-listbox", inputs: ["multiple", "tree", "state", "statusMsg"] }, { kind: "component", type: OptionComponent, selector: "lu-listbox-option", inputs: ["elementId", "checked", "mixed", "disabled", "hovered", "add", "group", "groupId", "select", "selectAll", "treeitemLevel"] }, { kind: "component", type: IconComponent, selector: "lu-icon, pr-icon", inputs: ["icon", "alt", "size", "color", "AI"] }, { kind: "component", type: TreeBranchComponent, selector: "lu-tree-branch", inputs: ["branch", "optionTpl", "optionIndex", "optionComparer", "selectedOptions", "simpleMode"], outputs: ["toggleOne", "selectMany", "unselectMany"] }, { kind: "pipe", type: _LuOptionGroupPipe, name: "luOptionGroup" }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }, { kind: "pipe", type: TreeDisplayPipe, name: "luTreeDisplay" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
203
+ ], viewQueries: [{ propertyName: "sheetViewport", first: true, predicate: ["sheetViewport"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (selectInput.panelBottomSheetMode()) {\n\t<!-- Below the XS breakpoint the panel is a dialog in `sheet` mode: the surface, the backdrop, the focus\n\ttrap, the close button and the focus restoration all come from the dialog, so the panel only fills in\n\tits title, its own search input \u2014 the field it covers is no longer reachable \u2014 and its content. -->\n\t<lu-dialog>\n\t\t<lu-dialog-header>\n\t\t\t@if (selectInput.panelTitle(); as title) {\n\t\t\t\t<!-- The interpolation and the marker must stay adjacent in the source: any whitespace between\n\t\t\t\tthem (even just a line break) renders as a literal space, pushing the asterisk away from the\n\t\t\t\ttitle instead of hugging it the way `.formLabel-required`'s own margin expects. -->\n\t\t\t\t@if (selectInput.panelTitleRequired()) {\n\t\t\t\t\t<h1>{{ title }}<sup class=\"formLabel-required\" aria-hidden=\"true\">*</sup></h1>\n\t\t\t\t} @else {\n\t\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t\t}\n\t\t\t}\n\t\t\t<div dialogHeaderContent>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"sheetSearch\" />\n\t\t\t</div>\n\t\t</lu-dialog-header>\n\t\t<lu-dialog-content #sheetViewport (scroll)=\"onScroll($event)\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t\t</lu-dialog-content>\n\t</lu-dialog>\n} @else {\n\t<lu-select-panel-layout [loading]=\"loading()\" trapFocus (scrolled)=\"onScroll($event)\">\n\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t</lu-select-panel-layout>\n}\n\n<ng-template #sheetSearch>\n\t<!-- A select with no search has nothing to type into, so its field is masked rather than rendered as a\n\tdead read-only input. It stays in the DOM: it carries the combobox semantics, it is the element\n\t`openSelectPanelSheet` focuses, and its `keydown` handler is what drives keyboard navigation. -->\n\t<div class=\"textField\" [class.pr-u-mask]=\"!searchable\">\n\t\t<div class=\"textField-input\">\n\t\t\t<input\n\t\t\t\tclass=\"textField-input-value\"\n\t\t\t\ttype=\"text\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t[attr.aria-expanded]=\"true\"\n\t\t\t\t[attr.aria-controls]=\"selectId\"\n\t\t\t\t[attr.placeholder]=\"intl().placeholder\"\n\t\t\t\t[ngModel]=\"clue()\"\n\t\t\t\t(ngModelChange)=\"selectInput.clueChanged($event)\"\n\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t[readonly]=\"!searchable\"\n\t\t\t\t(keydown)=\"selectInput.onKeyDownNavigation($event)\"\n\t\t\t/>\n\t\t\t<div class=\"textField-input-affix\">\n\t\t\t\t<lu-icon class=\"textField-input-affix-icon\" icon=\"searchMagnifyingGlass\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #panelContent>\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat 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 (groupTemplateLocation() === \"group-header\" && grouping(); as groupingConfig) {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: groupingConfig.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<ng-container *luPortal=\"groupingConfig.content; context: { $implicit: group }\" />\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[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\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[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\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\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</ng-template>\n", styles: ["@layer base{:root{--components-options-item-padding-vertical: var(--pr-t-spacings-50);--components-options-item-padding-horizontal: var(--pr-t-spacings-100);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-neutral-800);--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-700, var(--palettes-product-700));--components-options-checkbox-border-radius: var(--pr-t-border-radius-small);--components-options-checkbox-border-color: var(--palettes-neutral-700);--components-options-establishment-multiple-padding: 2rem}}@layer reset,base,components,mods,product,utils;@layer mods{.textfield.mod-search{inline-size:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding-block:var(--pr-t-spacings-50);padding-inline:var(--components-options-item-padding-horizontal);border-block-end:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-neutral-50);font-style:italic}}@layer components{.optionPlaceholder{display:block;padding-block:var(--components-options-item-padding-vertical);padding-inline:var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-neutral-600)}}\n"], dependencies: [{ kind: "component", type: LuSelectPanelLayoutComponent, selector: "lu-select-panel-layout", inputs: ["loading", "trapFocus", "contentTabIndex"], outputs: ["scrolled"] }, { kind: "component", type: DialogComponent, selector: "lu-dialog", inputs: ["stacked", "fancyIllustration", "fancyIllustrationUrl"] }, { kind: "component", type: DialogHeaderComponent, selector: "lu-dialog-header", inputs: ["intl"] }, { kind: "component", type: DialogContentComponent, selector: "lu-dialog-content" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: _LuOptionComponent, selector: "lu-select-option", inputs: ["intl", "optionTpl", "option", "grouping", "hasChildren", "groupIndex", "optionIndex", "scrollIntoViewOptions", "groupTemplateLocation"], outputs: ["onlyParent", "onlyChildren"] }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "directive", type: _CoreSelectPanelElement, selector: "[luCoreSelectPanelElement]", inputs: ["elementId", "isSelected", "option", "disabled"], outputs: ["isSelectedChange", "selected"], exportAs: ["luCoreSelectPanelElement"] }, { kind: "component", type: ListboxComponent, selector: "lu-listbox", inputs: ["multiple", "tree", "state", "statusMsg"] }, { kind: "component", type: OptionComponent, selector: "lu-listbox-option", inputs: ["elementId", "checked", "mixed", "disabled", "hovered", "add", "group", "groupId", "select", "selectAll", "treeitemLevel"] }, { kind: "component", type: IconComponent, selector: "lu-icon, pr-icon", inputs: ["icon", "alt", "size", "color", "AI"] }, { kind: "component", type: TreeBranchComponent, selector: "lu-tree-branch", inputs: ["branch", "optionTpl", "optionIndex", "optionComparer", "selectedOptions", "simpleMode"], outputs: ["toggleOne", "selectMany", "unselectMany"] }, { kind: "pipe", type: _LuOptionGroupPipe, name: "luOptionGroup" }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }, { kind: "pipe", type: TreeDisplayPipe, name: "luTreeDisplay" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
204
204
  }
205
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSelectPanelComponent, decorators: [{
205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuSelectPanelComponent, decorators: [{
206
206
  type: Component,
207
207
  args: [{ selector: 'lu-select-panel', changeDetection: ChangeDetectionStrategy.OnPush, host: {
208
208
  class: 'selectPanel',
@@ -231,7 +231,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
231
231
  provide: SELECT_PANEL_INSTANCE,
232
232
  useExisting: forwardRef(() => LuSelectPanelComponent),
233
233
  },
234
- ], template: "@if (selectInput.panelBottomSheetMode()) {\n\t<!-- Below the S breakpoint the panel is a dialog in `sheet` mode: the surface, the backdrop, the focus\n\ttrap, the close button and the focus restoration all come from the dialog, so the panel only fills in\n\tits title, its own search input \u2014 the field it covers is no longer reachable \u2014 and its content. -->\n\t<lu-dialog>\n\t\t<lu-dialog-header>\n\t\t\t@if (selectInput.panelTitle(); as title) {\n\t\t\t\t<!-- The interpolation and the marker must stay adjacent in the source: any whitespace between\n\t\t\t\tthem (even just a line break) renders as a literal space, pushing the asterisk away from the\n\t\t\t\ttitle instead of hugging it the way `.formLabel-required`'s own margin expects. -->\n\t\t\t\t@if (selectInput.panelTitleRequired()) {\n\t\t\t\t\t<h1>{{ title }}<sup class=\"formLabel-required\" aria-hidden=\"true\">*</sup></h1>\n\t\t\t\t} @else {\n\t\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t\t}\n\t\t\t}\n\t\t\t<div dialogHeaderContent>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"sheetSearch\" />\n\t\t\t</div>\n\t\t</lu-dialog-header>\n\t\t<lu-dialog-content #sheetViewport (scroll)=\"onScroll($event)\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t\t</lu-dialog-content>\n\t</lu-dialog>\n} @else {\n\t<lu-select-panel-layout [loading]=\"loading()\" trapFocus (scrolled)=\"onScroll($event)\">\n\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t</lu-select-panel-layout>\n}\n\n<ng-template #sheetSearch>\n\t<div class=\"textField\">\n\t\t<div class=\"textField-input\">\n\t\t\t<input\n\t\t\t\tclass=\"textField-input-value\"\n\t\t\t\ttype=\"text\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t[attr.aria-expanded]=\"true\"\n\t\t\t\t[attr.aria-controls]=\"selectId\"\n\t\t\t\t[attr.placeholder]=\"intl().placeholder\"\n\t\t\t\t[ngModel]=\"clue()\"\n\t\t\t\t(ngModelChange)=\"selectInput.clueChanged($event)\"\n\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t[readonly]=\"!searchable\"\n\t\t\t\t(keydown)=\"selectInput.onKeyDownNavigation($event)\"\n\t\t\t/>\n\t\t\t<div class=\"textField-input-affix\">\n\t\t\t\t<lu-icon class=\"textField-input-affix-icon\" icon=\"searchMagnifyingGlass\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #panelContent>\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat 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<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\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[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\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[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\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\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</ng-template>\n", styles: ["@layer base{:root{--components-options-item-padding-vertical: var(--pr-t-spacings-50);--components-options-item-padding-horizontal: var(--pr-t-spacings-100);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-neutral-800);--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-700, var(--palettes-product-700));--components-options-checkbox-border-radius: var(--pr-t-border-radius-small);--components-options-checkbox-border-color: var(--palettes-neutral-700);--components-options-establishment-multiple-padding: 2rem}}@layer reset,base,components,mods,product,utils;@layer mods{.textfield.mod-search{inline-size:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding-block:var(--pr-t-spacings-50);padding-inline:var(--components-options-item-padding-horizontal);border-block-end:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-neutral-50);font-style:italic}}@layer components{.optionPlaceholder{display:block;padding-block:var(--components-options-item-padding-vertical);padding-inline:var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-neutral-600)}}\n"] }]
234
+ ], template: "@if (selectInput.panelBottomSheetMode()) {\n\t<!-- Below the XS breakpoint the panel is a dialog in `sheet` mode: the surface, the backdrop, the focus\n\ttrap, the close button and the focus restoration all come from the dialog, so the panel only fills in\n\tits title, its own search input \u2014 the field it covers is no longer reachable \u2014 and its content. -->\n\t<lu-dialog>\n\t\t<lu-dialog-header>\n\t\t\t@if (selectInput.panelTitle(); as title) {\n\t\t\t\t<!-- The interpolation and the marker must stay adjacent in the source: any whitespace between\n\t\t\t\tthem (even just a line break) renders as a literal space, pushing the asterisk away from the\n\t\t\t\ttitle instead of hugging it the way `.formLabel-required`'s own margin expects. -->\n\t\t\t\t@if (selectInput.panelTitleRequired()) {\n\t\t\t\t\t<h1>{{ title }}<sup class=\"formLabel-required\" aria-hidden=\"true\">*</sup></h1>\n\t\t\t\t} @else {\n\t\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t\t}\n\t\t\t}\n\t\t\t<div dialogHeaderContent>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"sheetSearch\" />\n\t\t\t</div>\n\t\t</lu-dialog-header>\n\t\t<lu-dialog-content #sheetViewport (scroll)=\"onScroll($event)\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t\t</lu-dialog-content>\n\t</lu-dialog>\n} @else {\n\t<lu-select-panel-layout [loading]=\"loading()\" trapFocus (scrolled)=\"onScroll($event)\">\n\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t</lu-select-panel-layout>\n}\n\n<ng-template #sheetSearch>\n\t<!-- A select with no search has nothing to type into, so its field is masked rather than rendered as a\n\tdead read-only input. It stays in the DOM: it carries the combobox semantics, it is the element\n\t`openSelectPanelSheet` focuses, and its `keydown` handler is what drives keyboard navigation. -->\n\t<div class=\"textField\" [class.pr-u-mask]=\"!searchable\">\n\t\t<div class=\"textField-input\">\n\t\t\t<input\n\t\t\t\tclass=\"textField-input-value\"\n\t\t\t\ttype=\"text\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t[attr.aria-expanded]=\"true\"\n\t\t\t\t[attr.aria-controls]=\"selectId\"\n\t\t\t\t[attr.placeholder]=\"intl().placeholder\"\n\t\t\t\t[ngModel]=\"clue()\"\n\t\t\t\t(ngModelChange)=\"selectInput.clueChanged($event)\"\n\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t[readonly]=\"!searchable\"\n\t\t\t\t(keydown)=\"selectInput.onKeyDownNavigation($event)\"\n\t\t\t/>\n\t\t\t<div class=\"textField-input-affix\">\n\t\t\t\t<lu-icon class=\"textField-input-affix-icon\" icon=\"searchMagnifyingGlass\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #panelContent>\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat 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 (groupTemplateLocation() === \"group-header\" && grouping(); as groupingConfig) {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: groupingConfig.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<ng-container *luPortal=\"groupingConfig.content; context: { $implicit: group }\" />\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[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\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[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\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\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</ng-template>\n", styles: ["@layer base{:root{--components-options-item-padding-vertical: var(--pr-t-spacings-50);--components-options-item-padding-horizontal: var(--pr-t-spacings-100);--components-options-item-multiple-padding: 2.25rem;--components-options-item-icon-color: var(--palettes-neutral-800);--components-options-checkbox-size: 1.25rem;--components-options-checkbox-color: var(--palettes-700, var(--palettes-product-700));--components-options-checkbox-border-radius: var(--pr-t-border-radius-small);--components-options-checkbox-border-color: var(--palettes-neutral-700);--components-options-establishment-multiple-padding: 2rem}}@layer reset,base,components,mods,product,utils;@layer mods{.textfield.mod-search{inline-size:100%}.textfield-input{outline:none}.checkbox.mod-formerEmployee{padding-block:var(--pr-t-spacings-50);padding-inline:var(--components-options-item-padding-horizontal);border-block-end:var(--commons-divider-width) solid var(--commons-divider-color);background-color:var(--palettes-neutral-50);font-style:italic}}@layer components{.optionPlaceholder{display:block;padding-block:var(--components-options-item-padding-vertical);padding-inline:var(--components-options-item-padding-horizontal);font-style:italic;color:var(--palettes-neutral-600)}}\n"] }]
235
235
  }], ctorParameters: () => [], propDecorators: { sheetViewport: [{ type: i0.ViewChild, args: ['sheetViewport', { ...{ read: ElementRef }, isSignal: true }] }] } });
236
236
 
237
237
  class BaseSelectPanelRef extends LuSelectPanelRef {
@@ -388,10 +388,10 @@ class LuSimpleSelectPanelRefFactory {
388
388
  overlayConfig.maxWidth = '100vw';
389
389
  return overlayConfig;
390
390
  }
391
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSimpleSelectPanelRefFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
392
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSimpleSelectPanelRefFactory }); }
391
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuSimpleSelectPanelRefFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
392
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuSimpleSelectPanelRefFactory }); }
393
393
  }
394
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSimpleSelectPanelRefFactory, decorators: [{
394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuSimpleSelectPanelRefFactory, decorators: [{
395
395
  type: Injectable
396
396
  }] });
397
397
 
@@ -429,8 +429,8 @@ class LuSimpleSelectInputComponent extends ALuSelectInputComponent {
429
429
  }
430
430
  super.enableFilterPillMode();
431
431
  }
432
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSimpleSelectInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
433
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: LuSimpleSelectInputComponent, isStandalone: true, selector: "lu-simple-select", inputs: { intl: { classPropertyName: "intl", publicName: "intl", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, impersonation: { classPropertyName: "impersonation", publicName: "impersonation", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.mod-filterPill": "this.filterPillMode && !this.impersonation()", "class.mod-impersonation": "this.impersonation()" }, classAttribute: "simpleSelect" }, providers: [
432
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuSimpleSelectInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
433
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.1", type: LuSimpleSelectInputComponent, isStandalone: true, selector: "lu-simple-select", inputs: { intl: { classPropertyName: "intl", publicName: "intl", isSignal: true, isRequired: false, transformFunction: null }, autocomplete: { classPropertyName: "autocomplete", publicName: "autocomplete", isSignal: true, isRequired: false, transformFunction: null }, impersonation: { classPropertyName: "impersonation", publicName: "impersonation", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.mod-filterPill": "this.filterPillMode && !this.impersonation()", "class.mod-impersonation": "this.impersonation()" }, classAttribute: "simpleSelect" }, providers: [
434
434
  {
435
435
  provide: NG_VALUE_ACCESSOR,
436
436
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
@@ -441,7 +441,7 @@ class LuSimpleSelectInputComponent extends ALuSelectInputComponent {
441
441
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
442
442
  },
443
443
  LuSimpleSelectPanelRefFactory,
444
- // Below the `S` breakpoint the panel opens as a dialog in `sheet` mode.
444
+ // Below the `XS` breakpoint the panel opens as a dialog in `sheet` mode.
445
445
  provideLuDialog(),
446
446
  provideLuSelectLabelsAndIds(),
447
447
  {
@@ -450,7 +450,7 @@ class LuSimpleSelectInputComponent extends ALuSelectInputComponent {
450
450
  },
451
451
  ], viewQueries: [{ propertyName: "filterPillPanelAnchorRef", first: true, predicate: ["filterPillPanelAnchor"], descendants: true, read: ViewContainerRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"simpleSelect-field\">\n\t<span class=\"simpleSelect-field-prefix\">\n\t\t@if (prefix(); as prefix) {\n\t\t\t<ng-container *luPortal=\"prefix\" />\n\t\t}\n\t</span>\n\t@if (bottomSheetMode()) {\n\t\t<!--\n\t\t\tThe panel opens as a modal sheet that embeds its own search input, so the field itself is only ever\n\t\t\ta trigger. Keeping a text input here makes iOS focus it and raise the software keyboard on a field\n\t\t\tthat is about to be covered by the sheet; a button is both what this control actually is and what\n\t\t\tmobile browsers treat as a tap target rather than a text entry.\n\t\t-->\n\t\t<button\n\t\t\tclass=\"simpleSelect-field-input mod-button\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t>\n\t\t\t@if (!hasValue()) {\n\t\t\t\t<span class=\"simpleSelect-field-placeholder\">{{ inputPlaceholder ? inputPlaceholder : intl().placeholder }}</span>\n\t\t\t}\n\t\t</button>\n\t} @else {\n\t\t<input\n\t\t\tclass=\"simpleSelect-field-input\"\n\t\t\ttype=\"text\"\n\t\t\trole=\"combobox\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[attr.placeholder]=\"inputPlaceholder ? inputPlaceholder : intl().placeholder\"\n\t\t\t[ngModel]=\"clue\"\n\t\t\t(ngModelChange)=\"clueChanged($event)\"\n\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t[readonly]=\"!searchable\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\t(keyup.space)=\"inputSpace($event)\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.autocomplete]=\"autocomplete()\"\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t/>\n\t}\n\t<div class=\"simpleSelect-field-value\" [attr.id]=\"valueID\">\n\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t</div>\n\t@if (!filterPillMode && !impersonation()) {\n\t\t@if (clearable() && hasValue() && (disabled$ | async) === false) {\n\t\t\t<lu-clear class=\"simpleSelect-field-clear\" (onClear)=\"clearValue($event)\">{{ intl().clear }}</lu-clear>\n\t\t}\n\t\t<lu-icon icon=\"arrowChevronBottom\" class=\"simpleSelect-field-icon\" />\n\t}\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"simpleSelect-field-icon mod-search\" />\n</div>\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n</ng-container>\n\n<ng-template #currentValueDisplayerTpl>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\n\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@if (value) {\n\t\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t\t} @else {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"\u2013\"></span>\n\t\t}\n\t</ng-container>\n}\n", styles: ["@layer components{.simpleSelect{--components-simpleSelect-width: auto;--components-simpleSelect-font: var(--pr-t-font-body-M);--components-simpleSelect-padding: var(--pr-t-spacings-100);--components-simpleSelect-gap: var(--pr-t-spacings-100);--components-simpleSelect-background: var(--pr-t-color-input-background);--components-simpleSelect-value-color: var(--pr-t-color-input-text);--components-simpleSelect-border-color: var(--pr-t-color-input-border);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon);display:block;inline-size:var(--components-simpleSelect-width)}.simpleSelect-field{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;box-shadow:0 0 0 1px var(--components-simpleSelect-border-color);background-color:var(--components-simpleSelect-background);border-radius:var(--pr-t-border-radius-input);padding:var(--components-simpleSelect-padding);overflow:hidden;outline:none;cursor:pointer}.simpleSelect-field:hover{--components-simpleSelect-border-color: var(--pr-t-color-input-border-hover)}.simpleSelect-field-prefix{display:none}.simpleSelect-field-prefix:not(:empty){display:flex;margin-inline-end:var(--pr-t-spacings-50)}.simpleSelect-field-input{grid-column-start:2;grid-row-start:1;font:var(--components-simpleSelect-font);padding:0;background-color:transparent;color:var(--components-simpleSelect-value-color);border:0;outline:none;position:relative;z-index:1;min-inline-size:0;cursor:pointer}.simpleSelect-field-input::placeholder{color:var(--components-simpleSelect-placeholder)}.simpleSelect-field-input.mod-button{appearance:none;text-align:start;align-self:stretch;display:flex;align-items:center}.simpleSelect-field-placeholder{color:var(--components-simpleSelect-placeholder);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.simpleSelect-field-value{grid-column-start:2;grid-row-start:1;inline-size:100%;font:var(--components-simpleSelect-font);color:var(--components-simpleSelect-value-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color var(--commons-animations-durations-fast) ease}.simpleSelect-field-clear{grid-column-start:-2;margin-inline-start:var(--components-simpleSelect-gap)}.simpleSelect-field-icon{grid-column-start:-1;margin-inline-start:var(--components-simpleSelect-gap);color:var(--components-simpleSelect-arrow-color);transition:transform var(--commons-animations-durations-standard) ease}.simpleSelect-field-icon .lucca-icon{--icon-size: 1.5rem}.simpleSelect-field-icon.mod-search{display:none}}@layer mods{.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:3px}.simpleSelect:has(.simpleSelect-field-input:focus-visible) .simpleSelect-field-value{color:var(--components-simpleSelect-value-color)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-value{color:var(--components-simpleSelect-placeholder)}.simpleSelect:has(.simpleSelect-field-input:focus-visible):has(.simpleSelect-field-input[aria-expanded=true]) .simpleSelect-field-icon{transform:rotate(180deg)}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon{display:none}.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input:focus-visible):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search,.simpleSelect:not(.mod-noClueIcon):has(.simpleSelect-field-input[aria-expanded=true]):not(:has(.simpleSelect-field-input:read-only)) .simpleSelect-field-icon.mod-search{display:inline-flex;transform:none}.simpleSelect:has(.simpleSelect-field-input[aria-invalid=true]){--components-simpleSelect-border-color: var(--pr-t-color-input-border-critical);--components-simpleSelect-background: var(--pr-t-color-input-background-critical);--components-simpleSelect-placeholder: var(--pr-t-color-input-text-placeholder-critical)}.simpleSelect:has(.simpleSelect-field-input[aria-invalid=true]) .simpleSelect-field:hover{--components-simpleSelect-border-color: var(--pr-t-color-input-border-critical-hover)}.simpleSelect:has(.simpleSelect-field-input:disabled){--components-simpleSelect-background: var(--pr-t-color-input-background-disabled);--components-simpleSelect-placeholder: var(--commons-disabled-placeholder);--components-simpleSelect-value-color: var(--pr-t-color-input-text-disabled);--components-simpleSelect-arrow-color: var(--pr-t-color-input-icon-disabled)}.simpleSelect:has(.simpleSelect-field-input:disabled) .simpleSelect-field{pointer-events:none}.simpleSelect.mod-width10{--components-simpleSelect-width: 5rem}.simpleSelect.mod-width20{--components-simpleSelect-width: 10rem}.simpleSelect.mod-width30{--components-simpleSelect-width: 15rem}.simpleSelect.mod-width40{--components-simpleSelect-width: 20rem}.simpleSelect.mod-width50{--components-simpleSelect-width: 25rem}.simpleSelect.mod-width60{--components-simpleSelect-width: 30rem}.simpleSelect.mod-S{--components-simpleSelect-font: var(--pr-t-font-body-S);--components-simpleSelect-padding: var(--pr-t-spacings-75);--components-simpleSelect-gap: var(--pr-t-spacings-75)}.simpleSelect.mod-S .simpleSelect-field-icon .lucca-icon{--icon-size: 1.25rem}.simpleSelect.mod-S .simpleSelect-field-clear.clear,.simpleSelect.mod-S .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-XS{--components-simpleSelect-font: var(--pr-t-font-body-XS);--components-simpleSelect-padding: var(--pr-t-spacings-50);--components-simpleSelect-gap: var(--pr-t-spacings-50)}.simpleSelect.mod-XS .simpleSelect-field-icon .lucca-icon{--icon-size: 1rem}.simpleSelect.mod-XS .simpleSelect-field-clear.clear,.simpleSelect.mod-XS .simpleSelect-field-clear:not(.clear){--components-clear-size: .75rem;--icon-size: .75rem}.simpleSelect.mod-impersonation,.simpleSelect.mod-filterPill{inline-size:26.5rem;max-inline-size:calc(100vi - 2.5rem)}.simpleSelect.mod-impersonation .simpleSelect-field,.simpleSelect.mod-filterPill .simpleSelect-field{position:relative;z-index:1}.simpleSelect.mod-impersonation lu-simple-select-default-option.pr-u-ellipsis,.simpleSelect.mod-filterPill lu-simple-select-default-option.pr-u-ellipsis{white-space:normal!important}.simpleSelect.mod-impersonation .lu-picker-content,.simpleSelect.mod-filterPill .lu-picker-content{animation:none;box-shadow:none;border-radius:0;background-color:transparent;padding:var(--pr-t-spacings-50);margin:var(--pr-t-spacings-75) calc(var(--pr-t-spacings-100) * -1) calc(var(--pr-t-spacings-100) * -1)}.simpleSelect.is-searchFilled .simpleSelect-field-value{display:none}.simpleSelect.is-selected .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-input::placeholder{opacity:0}.simpleSelect.is-selected.is-searchFilled .simpleSelect-field-value{display:none}}@layer mods{.dialog.mod-select{--components-dialog-animationDuration: 0s;--components-dialog-insideHeaderTitleAlign: center;--components-dialog-insideHeaderTitleFont: var(--pr-t-font-heading-4);--components-dialog-insideHeaderColumns: 1fr auto 1fr;--components-dialog-inside-header-button-justifySelf: end;--components-dialog-insideHeaderAreas: \"spacer container close \" \"content content content\";--components-dialog-inside-header-paddingInline: var(--pr-t-spacings-200);--components-dialog-inside-header-content-paddingBlockStart: var(--pr-t-spacings-100);--components-dialog-insideContent-paddingInline: var(--pr-t-spacings-50);--components-dialog-insideContent-paddingBlock: var(--pr-t-spacings-50)}}@layer components{.clear{--components-clear-display: grid;--components-clear-size: 1rem;--components-clear-background: var(--palettes-800, var(--palettes-neutral-800));--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='16' width='16' fill='none'%3E%3Cpath d='M5.80473 4.86192C5.54438 4.60157 5.12227 4.60157 4.86192 4.86192C4.60157 5.12227 4.60157 5.54438 4.86192 5.80473L7.05718 7.99999L4.86192 10.1953C4.60157 10.4556 4.60157 10.8777 4.86192 11.1381C5.12227 11.3984 5.54438 11.3984 5.80473 11.1381L7.99999 8.9428L10.1953 11.1381C10.4556 11.3984 10.8777 11.3984 11.1381 11.1381C11.3984 10.8777 11.3984 10.4556 11.1381 10.1953L8.9428 7.99999L11.1381 5.80473C11.3984 5.54438 11.3984 5.12227 11.1381 4.86192C10.8777 4.60157 10.4556 4.60157 10.1953 4.86192L7.99999 7.05718L5.80473 4.86192Z' fill='currentColor'/%3E%3C/svg%3E\");padding:0;border:0;inline-size:100%;background-color:transparent;color:inherit;text-align:start;display:block;font:inherit;cursor:pointer;display:var(--components-clear-display);grid-template-columns:1fr;grid-template-rows:1fr;grid-template-areas:\"main\";align-items:normal;flex-shrink:0;inline-size:var(--components-clear-size);block-size:var(--components-clear-size);border-radius:var(--pr-t-border-radius-full)}.clear:before,.clear:after{content:\"\";grid-area:main}.clear:before{border-radius:var(--pr-t-border-radius-full);background-color:var(--components-clear-background)}.clear:after{-webkit-mask-image:var(--components-clear-background-image);mask-image:var(--components-clear-background-image);-webkit-mask-size:var(--components-clear-size);mask-size:var(--components-clear-size);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;background-color:var(--components-clear-cross-color)}.clear:hover{--components-clear-cross-color: var(--palettes-0, var(--palettes-neutral-0));--components-clear-background: var(--palettes-700, var(--palettes-neutral-700))}.clear:focus-visible{outline:2px solid var(--palettes-700, var(--palettes-product-700));outline-offset:2px;border-radius:50%}.clear:active{--components-clear-background: var(--palettes-900, var(--palettes-neutral-900))}.clear .lucca-icon{display:none}}@layer mods{.clear.mod-S{--components-clear-size: .75rem;--icon-size: .75rem}.clear.mod-inverted{--components-clear-cross-color: var(--palettes-800, var(--palettes-neutral-800));--components-clear-background: var(--palettes-0, var(--palettes-neutral-0))}.clear.mod-inverted:hover{--components-clear-background: var(--palettes-50, var(--palettes-neutral-50))}.clear.mod-inverted:active{--components-clear-background: var(--palettes-100, var(--palettes-neutral-100))}.clear[disabled]{cursor:default;--components-clear-cross-color: var(--palettes-neutral-500)}.clear[disabled],.clear[disabled]:hover,.clear[disabled]:active{--components-clear-background: var(--palettes-neutral-300)}.clear[hidden],.filterPill[disabled] .clear,.filterPill:not(.is-filled) .clear,.textfield-input[disabled] .clear,.textfield-input:not(.is-filled) .clear{--components-clear-display: none}.multiSelect.is-selected:has(.multipleSelect-clear) .clear{--components-clear-display: grid}}\n"], dependencies: [{ kind: "directive", type: _LuOptionOutletDirective, selector: "[luOptionOutlet]", inputs: ["luOptionOutlet", "luOptionOutletValue", "luOptionShowNull"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox]):not([ngNoCva])[formControlName],textarea:not([ngNoCva])[formControlName],input:not([type=checkbox]):not([ngNoCva])[formControl],textarea:not([ngNoCva])[formControl],input:not([type=checkbox]):not([ngNoCva])[ngModel],textarea:not([ngNoCva])[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: InputDirective, selector: "[luInput]", inputs: ["luInputStandalone", "luInputLabelledBy", "luInputDescribedBy"] }, { kind: "directive", type: FilterPillDisplayerDirective, selector: "[luFilterPillDisplayer]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconComponent, selector: "lu-icon, pr-icon", inputs: ["icon", "alt", "size", "color", "AI"] }, { kind: "component", type: ClearComponent, selector: "lu-clear", inputs: ["intl", "size", "disabled", "palette", "inverted"], outputs: ["onClear"], exportAs: ["luClearer"] }, { kind: "directive", type: PortalDirective, selector: "[luPortal]", inputs: ["luPortal", "luPortalContext"] }, { kind: "directive", type: _PresentationDisplayDefaultDirective, selector: "[luPresentationDisplayDefault]" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
452
452
  }
453
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSimpleSelectInputComponent, decorators: [{
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: LuSimpleSelectInputComponent, decorators: [{
454
454
  type: Component,
455
455
  args: [{ selector: 'lu-simple-select', host: {
456
456
  class: 'simpleSelect',
@@ -480,7 +480,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImpor
480
480
  useExisting: forwardRef(() => LuSimpleSelectInputComponent),
481
481
  },
482
482
  LuSimpleSelectPanelRefFactory,
483
- // Below the `S` breakpoint the panel opens as a dialog in `sheet` mode.
483
+ // Below the `XS` breakpoint the panel opens as a dialog in `sheet` mode.
484
484
  provideLuDialog(),
485
485
  provideLuSelectLabelsAndIds(),
486
486
  {
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-simple-select.mjs","sources":["../../../packages/ng/simple-select/translations.ts","../../../packages/ng/simple-select/select.translate.ts","../../../packages/ng/simple-select/select.model.ts","../../../packages/ng/simple-select/panel/option-selected.pipe.ts","../../../packages/ng/simple-select/panel/panel.component.ts","../../../packages/ng/simple-select/panel/panel.component.html","../../../packages/ng/simple-select/input/panel-ref.factory.ts","../../../packages/ng/simple-select/input/select-input.component.ts","../../../packages/ng/simple-select/input/select-input.component.html","../../../packages/ng/simple-select/lucca-front-ng-simple-select.ts"],"sourcesContent":["export const Translations = {\n\t'nl-BE': {\n\t\tplaceholder: 'Selecteren ...',\n\t\tclear: 'Wissen',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\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},\n\tnl: {\n\t\tplaceholder: 'Selecteren ...',\n\t\tclear: 'Wissen',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\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},\n\tit: {\n\t\tplaceholder: 'Selezionare…',\n\t\tclear: 'Cancellare',\n\t\tclearSearch: 'Cancellare la ricerca',\n\t\temptyResults: 'La ricerca non ha prodotto risultati.',\n\t\tloading: 'Caricamento in corso...',\n\t\temptyOptions: 'Nessun valore è disponibile. Contatta l’amministratore per maggiori informazioni.',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionner…',\n\t\tclear: 'Effacer',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptyResults: \"Votre recherche n'a donné aucun résultat.\",\n\t\tloading: 'Chargement en cours...',\n\t\temptyOptions: \"Aucune valeur n'est disponible. Contactez votre administrateur pour plus d'informations.\",\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecionar..',\n\t\tclear: 'Limpar',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'A sua pesquisa não produziu resultados.',\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},\n\tes: {\n\t\tplaceholder: 'Seleccionar...',\n\t\tclear: 'Eliminar',\n\t\tclearSearch: 'Vaciar la búsqueda',\n\t\temptyResults: 'La búsqueda no ha dado ningún resultado.',\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},\n\tde: {\n\t\tplaceholder: 'Auswählen ...',\n\t\tclear: 'Löschen',\n\t\tclearSearch: 'Suche leeren',\n\t\temptyResults: 'Ihre Suche hat keinen Treffer ergeben.',\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},\n\ten: {\n\t\tplaceholder: 'Select…',\n\t\tclear: 'Clear',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'We couldn’t find any results that match your search.',\n\t\tloading: 'Loading...',\n\t\temptyOptions: 'There are no values available. Contact your administrator for more information.',\n\t},\n\tpl: {\n\t\tplaceholder: 'Wybierz…',\n\t\tclear: 'Usuń',\n\t\tclearSearch: 'Wyczyść wyszukiwanie',\n\t\temptyResults: 'Wyszukiwanie nie przyniosło żadnych rezultatów.',\n\t\tloading: 'Trwa ładowanie…',\n\t\temptyOptions: 'Brak dostępnych wartości. Aby uzyskać więcej informacji, skontaktuj się z administratorem.',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_SIMPLE_SELECT_TRANSLATIONS = new InjectionToken('LuSimpleSelectTranslations', {\n\tfactory: () => luSimpleSelectTranslations,\n});\n\nexport interface ILuSimpleSelectLabel {\n\tplaceholder: string;\n\tclear: string;\n\tclearSearch: string;\n\temptyResults: string;\n\temptyOptions: string;\n\tloading: string;\n}\n\nexport const luSimpleSelectTranslations: LuTranslation<ILuSimpleSelectLabel> = Translations;\n","import { InjectionToken } from '@angular/core';\nimport type { LuSimpleSelectInputComponent } from './input';\n\nexport const SIMPLE_SELECT_INPUT = new InjectionToken<LuSimpleSelectInputComponent<unknown>>('SimpleSelectInput');\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LuOptionComparer } from '@lucca-front/ng/core-select';\n\n@Pipe({\n\tname: 'luIsOptionSelected',\n})\nexport class LuIsOptionSelectedPipe implements PipeTransform {\n\ttransform<T>(option: T, comparer: LuOptionComparer<T>, selectedOption: T): boolean {\n\t\treturn !!selectedOption && comparer(option, selectedOption);\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, inject, signal, viewChild } 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\tLuSelectPanelLayoutComponent,\n\tLuSelectPanelRef,\n\tSELECT_ID,\n\tSELECT_PANEL_INSTANCE,\n\tTreeDisplayPipe,\n\tɵCoreSelectPanelElement,\n\tɵfillScrollViewport,\n\tɵgetGroupTemplateLocation,\n\tɵinjectPointerNavigation,\n\tɵLuOptionComponent,\n\tɵLuOptionGroupPipe,\n} from '@lucca-front/ng/core-select';\nimport { DialogComponent, DialogContentComponent, DialogHeaderComponent } from '@lucca-front/ng/dialog';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { ListboxComponent, ListboxState, OptionComponent as ListboxOptionComponent } from '@lucca-front/ng/listbox';\nimport { TreeBranchComponent } from '@lucca-front/ng/tree-select';\nimport { EMPTY } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LuSimpleSelectInputComponent } from '../input/select-input.component';\nimport { SIMPLE_SELECT_INPUT } from '../select.model';\nimport { LuIsOptionSelectedPipe } from './option-selected.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.colorPanel]': 'colorPanel()',\n\t\t'[class.is-pointerNavigation]': 'pointerNavigation()',\n\t},\n\timports: [\n\t\tLuSelectPanelLayoutComponent,\n\t\tDialogComponent,\n\t\tDialogHeaderComponent,\n\t\tDialogContentComponent,\n\t\tFormsModule,\n\t\tNgTemplateOutlet,\n\t\tɵLuOptionGroupPipe,\n\t\tɵLuOptionComponent,\n\t\tLuIsOptionSelectedPipe,\n\t\tPortalDirective,\n\t\tɵCoreSelectPanelElement,\n\t\tListboxComponent,\n\t\tListboxOptionComponent,\n\t\tIconComponent,\n\t\tTreeBranchComponent,\n\t\tTreeDisplayPipe,\n\t],\n\tproviders: [\n\t\tCoreSelectKeyManager,\n\t\t{\n\t\t\tprovide: SELECT_PANEL_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => LuSelectPanelComponent),\n\t\t},\n\t],\n})\nexport class LuSelectPanelComponent<T> implements AfterViewInit, CoreSelectPanelInstance<T> {\n\tpublic selectInput = inject<LuSimpleSelectInputComponent<T>>(SIMPLE_SELECT_INPUT);\n\tpublic panelRef = inject<LuSelectPanelRef<T, T>>(LuSelectPanelRef);\n\tpublic selectId = inject(SELECT_ID);\n\tpublic intl = this.selectInput.intl;\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\tcolorPanel = this.selectInput.colorPicker;\n\n\t// `undefined` despite the select's own type when the control was written with no value,\n\t// and the key manager forwards it to the public option comparer, which only accepts options\n\tinitialValue: T | null | undefined = 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\tpublic readonly keyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\n\tpublic readonly selected = computed(() => this.selectInput.valueSignal());\n\n\t// Kept free of nil so it doesn't widen `TreeBranchComponent`'s generic, which would in turn\n\t// make its `toggleOne` output nullable and force a guard on `emitValue` — and so the public\n\t// option comparer, which only accepts options, never receives an empty value.\n\tprotected readonly selectedOptions = computed(() => {\n\t\tconst selected = this.selected();\n\t\treturn isNotNil(selected) ? [selected] : [];\n\t});\n\n\treadonly hasGrouping = computed(() => !!this.grouping());\n\tpublic readonly clue = toSignal(this.selectInput.clue$.pipe(map((clue) => clue ?? '')), { initialValue: '' });\n\tpublic shouldDisplayAddOption = this.selectInput.shouldDisplayAddOption;\n\tpublic 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\tprivate readonly sheetViewport = viewChild<unknown, ElementRef<HTMLElement>>('sheetViewport', { read: ElementRef });\n\n\tconstructor() {\n\t\t// Only the sheet needs the viewport filled by hand: it is sized to its own content, so a first\n\t\t// page that doesn't reach its maximum height leaves nothing to scroll and `onScroll` — the only\n\t\t// thing that asks for the next page — never fires. The popover panel caps its content at 20rem,\n\t\t// which a page of options always overflows, so there it already works on its own.\n\t\tɵfillScrollViewport({\n\t\t\tviewport: computed(() => this.sheetViewport()?.nativeElement),\n\t\t\toptionCount: computed(() => this.dataSourceOptions().length),\n\t\t\tloading: this.loading,\n\t\t\tnextPage: () => this.panelRef.nextPage.emit(),\n\t\t});\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\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 (isNotNil(this.initialValue) && !this.selectInput.clue) {\n\t\t\tthis.keyManager.highlightOption(this.initialValue);\n\t\t}\n\t}\n}\n","@if (selectInput.panelBottomSheetMode()) {\n\t<!-- Below the S breakpoint the panel is a dialog in `sheet` mode: the surface, the backdrop, the focus\n\ttrap, the close button and the focus restoration all come from the dialog, so the panel only fills in\n\tits title, its own search input — the field it covers is no longer reachable — and its content. -->\n\t<lu-dialog>\n\t\t<lu-dialog-header>\n\t\t\t@if (selectInput.panelTitle(); as title) {\n\t\t\t\t<!-- The interpolation and the marker must stay adjacent in the source: any whitespace between\n\t\t\t\tthem (even just a line break) renders as a literal space, pushing the asterisk away from the\n\t\t\t\ttitle instead of hugging it the way `.formLabel-required`'s own margin expects. -->\n\t\t\t\t@if (selectInput.panelTitleRequired()) {\n\t\t\t\t\t<h1>{{ title }}<sup class=\"formLabel-required\" aria-hidden=\"true\">*</sup></h1>\n\t\t\t\t} @else {\n\t\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t\t}\n\t\t\t}\n\t\t\t<div dialogHeaderContent>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"sheetSearch\" />\n\t\t\t</div>\n\t\t</lu-dialog-header>\n\t\t<lu-dialog-content #sheetViewport (scroll)=\"onScroll($event)\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t\t</lu-dialog-content>\n\t</lu-dialog>\n} @else {\n\t<lu-select-panel-layout [loading]=\"loading()\" trapFocus (scrolled)=\"onScroll($event)\">\n\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t</lu-select-panel-layout>\n}\n\n<ng-template #sheetSearch>\n\t<div class=\"textField\">\n\t\t<div class=\"textField-input\">\n\t\t\t<input\n\t\t\t\tclass=\"textField-input-value\"\n\t\t\t\ttype=\"text\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t[attr.aria-expanded]=\"true\"\n\t\t\t\t[attr.aria-controls]=\"selectId\"\n\t\t\t\t[attr.placeholder]=\"intl().placeholder\"\n\t\t\t\t[ngModel]=\"clue()\"\n\t\t\t\t(ngModelChange)=\"selectInput.clueChanged($event)\"\n\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t[readonly]=\"!searchable\"\n\t\t\t\t(keydown)=\"selectInput.onKeyDownNavigation($event)\"\n\t\t\t/>\n\t\t\t<div class=\"textField-input-affix\">\n\t\t\t\t<lu-icon class=\"textField-input-affix-icon\" icon=\"searchMagnifyingGlass\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #panelContent>\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat 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<ng-container *luPortal=\"grouping().content; context: { $implicit: group }\" />\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[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\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[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\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\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</ng-template>\n","import { Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, ElementRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { getPushPanelViewportMargin } from '@lucca-front/ng/core';\nimport { addAttributesOnCdkContainer, LuSelectPanelRef, SELECT_ID, SELECT_LABEL_ID, ɵopenSelectPanelSheet } from '@lucca-front/ng/core-select';\nimport { LuDialogRef, LuDialogService } from '@lucca-front/ng/dialog';\nimport { takeUntil } from 'rxjs';\nimport { LuSelectPanelComponent } from '../panel';\nimport { SIMPLE_SELECT_INPUT } from '../select.model';\nimport { LuSimpleSelectInputComponent } from './select-input.component';\n\nabstract class BaseSelectPanelRef<T> extends LuSelectPanelRef<T, T> {\n\t/** Carries this ref and the select input down to the panel, however it ends up being rendered. */\n\tprotected readonly panelInjector: Injector;\n\n\tinstance: LuSelectPanelComponent<T>;\n\n\tprotected panelRef: ComponentRef<LuSelectPanelComponent<T>>;\n\n\tprotected constructor(\n\t\tparentInjector: Injector,\n\t\tprotected selectInput: LuSimpleSelectInputComponent<T>,\n\t) {\n\t\tsuper();\n\n\t\tthis.panelInjector = this.createInjector(selectInput, parentInjector);\n\t}\n\n\tprotected createInjector(selectInput: LuSimpleSelectInputComponent<T>, parentInjector: Injector): Injector {\n\t\treturn Injector.create({\n\t\t\tproviders: [\n\t\t\t\t{ provide: LuSelectPanelRef, useValue: this },\n\t\t\t\t{ provide: SIMPLE_SELECT_INPUT, useValue: selectInput },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\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\tthis.close();\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.instance.keyManager.activeItem?.selected.emit();\n\t}\n}\n\nclass SelectPanelRef<T> extends BaseSelectPanelRef<T> {\n\tconstructor(\n\t\tprivate overlayRef: OverlayRef,\n\t\tparentInjector: Injector,\n\t\tselectInput: LuSimpleSelectInputComponent<T>,\n\t) {\n\t\tsuper(parentInjector, selectInput);\n\t\tthis.panelRef = overlayRef.attach(new ComponentPortal<LuSelectPanelComponent<T>>(LuSelectPanelComponent, undefined, this.panelInjector));\n\t\tthis.instance = this.panelRef.instance;\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\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t\tthis.selectInput.focusInput();\n\t}\n\n\tupdatePosition(): void {\n\t\tthis.overlayRef.updatePosition();\n\t}\n}\n\nclass SelectPanelSheetRef<T> extends BaseSelectPanelRef<T> {\n\tprivate readonly dialogRef: LuDialogRef<LuSelectPanelComponent<T>, never>;\n\n\t// The sheet can be closed from either side (a selection here, the backdrop/Escape/close button there);\n\t// this keeps the two from bouncing the close back at each other.\n\tprivate dialogClosed = false;\n\n\tconstructor(dialogService: LuDialogService, parentInjector: Injector, selectInput: LuSimpleSelectInputComponent<T>) {\n\t\tsuper(parentInjector, selectInput);\n\n\t\tconst panelComponent: Type<LuSelectPanelComponent<T>> = LuSelectPanelComponent;\n\n\t\tthis.dialogRef = ɵopenSelectPanelSheet(dialogService, panelComponent, this.panelInjector, selectInput.panelTitle());\n\t\tthis.panelRef = this.dialogRef.cdkRef.componentRef!;\n\t\tthis.instance = this.panelRef.instance;\n\n\t\tthis.dialogRef.closed$.pipe(takeUntil(this.closed)).subscribe(() => {\n\t\t\tthis.dialogClosed = true;\n\t\t\tthis.close();\n\t\t});\n\t}\n\n\tupdatePosition(): void {\n\t\t// The sheet is pinned to the viewport, it never follows the field.\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\n\t\tif (!this.dialogClosed) {\n\t\t\tthis.dialogClosed = true;\n\t\t\tthis.dialogRef.dismiss();\n\t\t}\n\t\t// Focus goes back to the field through the dialog's own `restoreFocus`.\n\t}\n}\n\nclass SelectPanelDOMHostRef<T> extends BaseSelectPanelRef<T> {\n\tconstructor(host: ViewContainerRef, parentInjector: Injector, selectInput: LuSimpleSelectInputComponent<T>) {\n\t\tsuper(parentInjector, selectInput);\n\n\t\tconst panelComponent: Type<LuSelectPanelComponent<T>> = LuSelectPanelComponent;\n\n\t\tthis.panelRef = host.createComponent(panelComponent, {\n\t\t\tinjector: this.panelInjector,\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\n@Injectable()\nexport class LuSimpleSelectPanelRefFactory {\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\tprotected dialogService = inject(LuDialogService);\n\tprivate selectLabelId = inject(SELECT_LABEL_ID);\n\tprivate selectId = inject(SELECT_ID);\n\n\tbuildPanelRef<T>(selectInput: LuSimpleSelectInputComponent<T>, overlayConfigOverride: OverlayConfig = {}): LuSelectPanelRef<T, T> {\n\t\tif (selectInput.bottomSheetMode()) {\n\t\t\treturn new SelectPanelSheetRef(this.dialogService, this.parentInjector, selectInput);\n\t\t}\n\n\t\tconst overlayConfig = this.buildOverlayConfig(overlayConfigOverride);\n\t\tconst overlayRef = this.overlay.create(overlayConfig);\n\n\t\taddAttributesOnCdkContainer(overlayRef, this.selectLabelId, this.selectId);\n\n\t\treturn new SelectPanelRef(overlayRef, this.parentInjector, selectInput);\n\t}\n\n\tbuildAndAttachPanelRef<T>(selectInput: LuSimpleSelectInputComponent<T>, host: ViewContainerRef): LuSelectPanelRef<T, T> {\n\t\treturn new SelectPanelDOMHostRef(host, this.parentInjector, selectInput);\n\t}\n\n\tprotected buildOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig {\n\t\tconst overlayConfig: OverlayConfig = overlayConfigOverride || {};\n\t\toverlayConfig.positionStrategy = this.positionBuilder\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t// Options usually arrive after the panel has been opened: without this, every reposition is\n\t\t\t// capped to the bounding box computed while the panel was still empty, so a panel opened in a\n\t\t\t// tight space below the field can never grow nor flip above once its options are there.\n\t\t\t.withGrowAfterOpen(true)\n\t\t\t.withViewportMargin(getPushPanelViewportMargin(this.elementRef.nativeElement, 8))\n\t\t\t.withPositions([\n\t\t\t\t{\n\t\t\t\t\toriginX: 'start',\n\t\t\t\t\toriginY: 'bottom',\n\t\t\t\t\toverlayX: 'start',\n\t\t\t\t\toverlayY: 'top',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: 'end',\n\t\t\t\t\toriginY: 'bottom',\n\t\t\t\t\toverlayX: 'end',\n\t\t\t\t\toverlayY: 'top',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: 'start',\n\t\t\t\t\toriginY: 'top',\n\t\t\t\t\toverlayX: 'start',\n\t\t\t\t\toverlayY: 'bottom',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: 'end',\n\t\t\t\t\toriginY: 'top',\n\t\t\t\t\toverlayX: 'end',\n\t\t\t\t\toverlayY: 'bottom',\n\t\t\t\t},\n\t\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxHeight = '100vh';\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, viewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ClearComponent } from '@lucca-front/ng/clear';\nimport { intlInputOptions, isNotNil, luBooleanAttribute, PortalDirective } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LU_CORE_SELECT_TRANSLATIONS, LuSelectPanelRef, provideLuSelectLabelsAndIds, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { provideLuDialog } from '@lucca-front/ng/dialog';\nimport { FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective } from '@lucca-front/ng/filter-pills/core';\nimport { InputDirective, PresentationDisplayDirective, ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuSimpleSelectPanelRefFactory } from './panel-ref.factory';\n\nlet nextID = 0;\n\n@Component({\n\tselector: 'lu-simple-select',\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrl: './select-input.component.scss',\n\thost: {\n\t\tclass: 'simpleSelect',\n\t\t'[class.mod-filterPill]': 'this.filterPillMode && !this.impersonation()',\n\t\t'[class.mod-impersonation]': 'this.impersonation()',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tAsyncPipe,\n\t\tɵLuOptionOutletDirective,\n\t\tOverlayModule,\n\t\tFormsModule,\n\t\tInputDirective,\n\t\tFilterPillDisplayerDirective,\n\t\tNgTemplateOutlet,\n\t\tIconComponent,\n\t\tClearComponent,\n\t\tPortalDirective,\n\t\tPresentationDisplayDirective,\n\t\tɵPresentationDisplayDefaultDirective,\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuSelectInputComponent,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t},\n\t\tLuSimpleSelectPanelRefFactory,\n\t\t// Below the `S` breakpoint the panel opens as a dialog in `sheet` mode.\n\t\tprovideLuDialog(),\n\t\tprovideLuSelectLabelsAndIds(),\n\t\t{\n\t\t\tprovide: FILTER_PILL_INPUT_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t},\n\t],\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuSimpleSelectInputComponent<T> extends ALuSelectInputComponent<T, T> implements ControlValueAccessor {\n\treadonly intl = input(...intlInputOptions(LU_CORE_SELECT_TRANSLATIONS, LU_SIMPLE_SELECT_TRANSLATIONS));\n\n\tvalueID = `value-${++nextID}`;\n\n\treadonly autocomplete = input<AutoFill | null>('off');\n\n\treadonly impersonation = input(false, { transform: luBooleanAttribute });\n\n\treadonly filterPillPanelAnchorRef = viewChild('filterPillPanelAnchor', { read: ViewContainerRef });\n\n\tprotected panelRefFactory = inject(LuSimpleSelectPanelRefFactory);\n\n\tprotected buildPanelRef(): LuSelectPanelRef<T, T> {\n\t\treturn this.panelRefFactory.buildPanelRef(this, this.overlayConfig());\n\t}\n\n\tinputSpace(event: Event): void {\n\t\tif (this.filterPillMode || this.impersonation()) {\n\t\t\tif (this.clue?.length === 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.panelRef?.selectCurrentlyHighlightedValue();\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected hasValue(): boolean {\n\t\treturn isNotNil(this.value);\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","<div class=\"simpleSelect-field\">\n\t<span class=\"simpleSelect-field-prefix\">\n\t\t@if (prefix(); as prefix) {\n\t\t\t<ng-container *luPortal=\"prefix\" />\n\t\t}\n\t</span>\n\t@if (bottomSheetMode()) {\n\t\t<!--\n\t\t\tThe panel opens as a modal sheet that embeds its own search input, so the field itself is only ever\n\t\t\ta trigger. Keeping a text input here makes iOS focus it and raise the software keyboard on a field\n\t\t\tthat is about to be covered by the sheet; a button is both what this control actually is and what\n\t\t\tmobile browsers treat as a tap target rather than a text entry.\n\t\t-->\n\t\t<button\n\t\t\tclass=\"simpleSelect-field-input mod-button\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t>\n\t\t\t@if (!hasValue()) {\n\t\t\t\t<span class=\"simpleSelect-field-placeholder\">{{ inputPlaceholder ? inputPlaceholder : intl().placeholder }}</span>\n\t\t\t}\n\t\t</button>\n\t} @else {\n\t\t<input\n\t\t\tclass=\"simpleSelect-field-input\"\n\t\t\ttype=\"text\"\n\t\t\trole=\"combobox\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[attr.placeholder]=\"inputPlaceholder ? inputPlaceholder : intl().placeholder\"\n\t\t\t[ngModel]=\"clue\"\n\t\t\t(ngModelChange)=\"clueChanged($event)\"\n\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t[readonly]=\"!searchable\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\t(keyup.space)=\"inputSpace($event)\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.autocomplete]=\"autocomplete()\"\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t/>\n\t}\n\t<div class=\"simpleSelect-field-value\" [attr.id]=\"valueID\">\n\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t</div>\n\t@if (!filterPillMode && !impersonation()) {\n\t\t@if (clearable() && hasValue() && (disabled$ | async) === false) {\n\t\t\t<lu-clear class=\"simpleSelect-field-clear\" (onClear)=\"clearValue($event)\">{{ intl().clear }}</lu-clear>\n\t\t}\n\t\t<lu-icon icon=\"arrowChevronBottom\" class=\"simpleSelect-field-icon\" />\n\t}\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"simpleSelect-field-icon mod-search\" />\n</div>\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n</ng-container>\n\n<ng-template #currentValueDisplayerTpl>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\n\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@if (value) {\n\t\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t\t} @else {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"–\"></span>\n\t\t}\n\t</ng-container>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵinjectPointerNavigation","ɵgetGroupTemplateLocation","ɵfillScrollViewport","ɵLuOptionComponent","ɵCoreSelectPanelElement","ListboxOptionComponent","ɵLuOptionGroupPipe","ɵopenSelectPanelSheet","ɵLuOptionOutletDirective","ɵPresentationDisplayDefaultDirective"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-simple-select.mjs","sources":["../../../packages/ng/simple-select/translations.ts","../../../packages/ng/simple-select/select.translate.ts","../../../packages/ng/simple-select/select.model.ts","../../../packages/ng/simple-select/panel/option-selected.pipe.ts","../../../packages/ng/simple-select/panel/panel.component.ts","../../../packages/ng/simple-select/panel/panel.component.html","../../../packages/ng/simple-select/input/panel-ref.factory.ts","../../../packages/ng/simple-select/input/select-input.component.ts","../../../packages/ng/simple-select/input/select-input.component.html","../../../packages/ng/simple-select/lucca-front-ng-simple-select.ts"],"sourcesContent":["export const Translations = {\n\t'nl-BE': {\n\t\tplaceholder: 'Selecteren ...',\n\t\tclear: 'Wissen',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\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},\n\tnl: {\n\t\tplaceholder: 'Selecteren ...',\n\t\tclear: 'Wissen',\n\t\tclearSearch: 'Zoekopdracht leegmaken',\n\t\temptyResults: 'Uw zoekopdracht heeft geen resultaat opgeleverd.',\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},\n\tit: {\n\t\tplaceholder: 'Selezionare…',\n\t\tclear: 'Cancellare',\n\t\tclearSearch: 'Cancellare la ricerca',\n\t\temptyResults: 'La ricerca non ha prodotto risultati.',\n\t\tloading: 'Caricamento in corso...',\n\t\temptyOptions: 'Nessun valore è disponibile. Contatta l’amministratore per maggiori informazioni.',\n\t},\n\tfr: {\n\t\tplaceholder: 'Sélectionner…',\n\t\tclear: 'Effacer',\n\t\tclearSearch: 'Vider la recherche',\n\t\temptyResults: \"Votre recherche n'a donné aucun résultat.\",\n\t\tloading: 'Chargement en cours...',\n\t\temptyOptions: \"Aucune valeur n'est disponible. Contactez votre administrateur pour plus d'informations.\",\n\t},\n\tpt: {\n\t\tplaceholder: 'Selecionar..',\n\t\tclear: 'Limpar',\n\t\tclearSearch: 'Limpar pesquisa',\n\t\temptyResults: 'A sua pesquisa não produziu resultados.',\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},\n\tes: {\n\t\tplaceholder: 'Seleccionar...',\n\t\tclear: 'Eliminar',\n\t\tclearSearch: 'Vaciar la búsqueda',\n\t\temptyResults: 'La búsqueda no ha dado ningún resultado.',\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},\n\tde: {\n\t\tplaceholder: 'Auswählen ...',\n\t\tclear: 'Löschen',\n\t\tclearSearch: 'Suche leeren',\n\t\temptyResults: 'Ihre Suche hat keinen Treffer ergeben.',\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},\n\ten: {\n\t\tplaceholder: 'Select…',\n\t\tclear: 'Clear',\n\t\tclearSearch: 'Clear search',\n\t\temptyResults: 'We couldn’t find any results that match your search.',\n\t\tloading: 'Loading...',\n\t\temptyOptions: 'There are no values available. Contact your administrator for more information.',\n\t},\n\tpl: {\n\t\tplaceholder: 'Wybierz…',\n\t\tclear: 'Usuń',\n\t\tclearSearch: 'Wyczyść wyszukiwanie',\n\t\temptyResults: 'Wyszukiwanie nie przyniosło żadnych rezultatów.',\n\t\tloading: 'Trwa ładowanie…',\n\t\temptyOptions: 'Brak dostępnych wartości. Aby uzyskać więcej informacji, skontaktuj się z administratorem.',\n\t},\n};\n","import { InjectionToken } from '@angular/core';\nimport { LuTranslation } from '@lucca-front/ng/core';\nimport { Translations } from './translations';\n\nexport const LU_SIMPLE_SELECT_TRANSLATIONS = new InjectionToken('LuSimpleSelectTranslations', {\n\tfactory: () => luSimpleSelectTranslations,\n});\n\nexport interface ILuSimpleSelectLabel {\n\tplaceholder: string;\n\tclear: string;\n\tclearSearch: string;\n\temptyResults: string;\n\temptyOptions: string;\n\tloading: string;\n}\n\nexport const luSimpleSelectTranslations: LuTranslation<ILuSimpleSelectLabel> = Translations;\n","import { InjectionToken } from '@angular/core';\nimport type { LuSimpleSelectInputComponent } from './input';\n\nexport const SIMPLE_SELECT_INPUT = new InjectionToken<LuSimpleSelectInputComponent<unknown>>('SimpleSelectInput');\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { LuOptionComparer } from '@lucca-front/ng/core-select';\n\n@Pipe({\n\tname: 'luIsOptionSelected',\n})\nexport class LuIsOptionSelectedPipe implements PipeTransform {\n\ttransform<T>(option: T, comparer: LuOptionComparer<T>, selectedOption: T): boolean {\n\t\treturn !!selectedOption && comparer(option, selectedOption);\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, computed, ElementRef, forwardRef, inject, signal, viewChild } 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\tLuSelectPanelLayoutComponent,\n\tLuSelectPanelRef,\n\tSELECT_ID,\n\tSELECT_PANEL_INSTANCE,\n\tTreeDisplayPipe,\n\tɵCoreSelectPanelElement,\n\tɵfillScrollViewport,\n\tɵgetGroupTemplateLocation,\n\tɵinjectPointerNavigation,\n\tɵLuOptionComponent,\n\tɵLuOptionGroupPipe,\n} from '@lucca-front/ng/core-select';\nimport { DialogComponent, DialogContentComponent, DialogHeaderComponent } from '@lucca-front/ng/dialog';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { ListboxComponent, ListboxState, OptionComponent as ListboxOptionComponent } from '@lucca-front/ng/listbox';\nimport { TreeBranchComponent } from '@lucca-front/ng/tree-select';\nimport { EMPTY } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LuSimpleSelectInputComponent } from '../input/select-input.component';\nimport { SIMPLE_SELECT_INPUT } from '../select.model';\nimport { LuIsOptionSelectedPipe } from './option-selected.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.colorPanel]': 'colorPanel()',\n\t\t'[class.is-pointerNavigation]': 'pointerNavigation()',\n\t},\n\timports: [\n\t\tLuSelectPanelLayoutComponent,\n\t\tDialogComponent,\n\t\tDialogHeaderComponent,\n\t\tDialogContentComponent,\n\t\tFormsModule,\n\t\tNgTemplateOutlet,\n\t\tɵLuOptionGroupPipe,\n\t\tɵLuOptionComponent,\n\t\tLuIsOptionSelectedPipe,\n\t\tPortalDirective,\n\t\tɵCoreSelectPanelElement,\n\t\tListboxComponent,\n\t\tListboxOptionComponent,\n\t\tIconComponent,\n\t\tTreeBranchComponent,\n\t\tTreeDisplayPipe,\n\t],\n\tproviders: [\n\t\tCoreSelectKeyManager,\n\t\t{\n\t\t\tprovide: SELECT_PANEL_INSTANCE,\n\t\t\tuseExisting: forwardRef(() => LuSelectPanelComponent),\n\t\t},\n\t],\n})\nexport class LuSelectPanelComponent<T> implements AfterViewInit, CoreSelectPanelInstance<T> {\n\tpublic selectInput = inject<LuSimpleSelectInputComponent<T>>(SIMPLE_SELECT_INPUT);\n\tpublic panelRef = inject<LuSelectPanelRef<T, T>>(LuSelectPanelRef);\n\tpublic selectId = inject(SELECT_ID);\n\tpublic intl = this.selectInput.intl;\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\tcolorPanel = this.selectInput.colorPicker;\n\n\t// `undefined` despite the select's own type when the control was written with no value,\n\t// and the key manager forwards it to the public option comparer, which only accepts options\n\tinitialValue: T | null | undefined = 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\tpublic readonly keyManager = inject<CoreSelectKeyManager<T>>(CoreSelectKeyManager);\n\n\tpublic readonly selected = computed(() => this.selectInput.valueSignal());\n\n\t// Kept free of nil so it doesn't widen `TreeBranchComponent`'s generic, which would in turn\n\t// make its `toggleOne` output nullable and force a guard on `emitValue` — and so the public\n\t// option comparer, which only accepts options, never receives an empty value.\n\tprotected readonly selectedOptions = computed(() => {\n\t\tconst selected = this.selected();\n\t\treturn isNotNil(selected) ? [selected] : [];\n\t});\n\n\treadonly hasGrouping = computed(() => !!this.grouping());\n\tpublic readonly clue = toSignal(this.selectInput.clue$.pipe(map((clue) => clue ?? '')), { initialValue: '' });\n\tpublic shouldDisplayAddOption = this.selectInput.shouldDisplayAddOption;\n\tpublic 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\tprivate readonly sheetViewport = viewChild<unknown, ElementRef<HTMLElement>>('sheetViewport', { read: ElementRef });\n\n\tconstructor() {\n\t\t// Only the sheet needs the viewport filled by hand: it is sized to its own content, so a first\n\t\t// page that doesn't reach its maximum height leaves nothing to scroll and `onScroll` — the only\n\t\t// thing that asks for the next page — never fires. The popover panel caps its content at 20rem,\n\t\t// which a page of options always overflows, so there it already works on its own.\n\t\tɵfillScrollViewport({\n\t\t\tviewport: computed(() => this.sheetViewport()?.nativeElement),\n\t\t\toptionCount: computed(() => this.dataSourceOptions().length),\n\t\t\tloading: this.loading,\n\t\t\tnextPage: () => this.panelRef.nextPage.emit(),\n\t\t});\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\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 (isNotNil(this.initialValue) && !this.selectInput.clue) {\n\t\t\tthis.keyManager.highlightOption(this.initialValue);\n\t\t}\n\t}\n}\n","@if (selectInput.panelBottomSheetMode()) {\n\t<!-- Below the XS breakpoint the panel is a dialog in `sheet` mode: the surface, the backdrop, the focus\n\ttrap, the close button and the focus restoration all come from the dialog, so the panel only fills in\n\tits title, its own search input — the field it covers is no longer reachable — and its content. -->\n\t<lu-dialog>\n\t\t<lu-dialog-header>\n\t\t\t@if (selectInput.panelTitle(); as title) {\n\t\t\t\t<!-- The interpolation and the marker must stay adjacent in the source: any whitespace between\n\t\t\t\tthem (even just a line break) renders as a literal space, pushing the asterisk away from the\n\t\t\t\ttitle instead of hugging it the way `.formLabel-required`'s own margin expects. -->\n\t\t\t\t@if (selectInput.panelTitleRequired()) {\n\t\t\t\t\t<h1>{{ title }}<sup class=\"formLabel-required\" aria-hidden=\"true\">*</sup></h1>\n\t\t\t\t} @else {\n\t\t\t\t\t<h1>{{ title }}</h1>\n\t\t\t\t}\n\t\t\t}\n\t\t\t<div dialogHeaderContent>\n\t\t\t\t<ng-container [ngTemplateOutlet]=\"sheetSearch\" />\n\t\t\t</div>\n\t\t</lu-dialog-header>\n\t\t<lu-dialog-content #sheetViewport (scroll)=\"onScroll($event)\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t\t</lu-dialog-content>\n\t</lu-dialog>\n} @else {\n\t<lu-select-panel-layout [loading]=\"loading()\" trapFocus (scrolled)=\"onScroll($event)\">\n\t\t<ng-container [ngTemplateOutlet]=\"panelContent\" />\n\t</lu-select-panel-layout>\n}\n\n<ng-template #sheetSearch>\n\t<!-- A select with no search has nothing to type into, so its field is masked rather than rendered as a\n\tdead read-only input. It stays in the DOM: it carries the combobox semantics, it is the element\n\t`openSelectPanelSheet` focuses, and its `keydown` handler is what drives keyboard navigation. -->\n\t<div class=\"textField\" [class.pr-u-mask]=\"!searchable\">\n\t\t<div class=\"textField-input\">\n\t\t\t<input\n\t\t\t\tclass=\"textField-input-value\"\n\t\t\t\ttype=\"text\"\n\t\t\t\trole=\"combobox\"\n\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t[attr.aria-expanded]=\"true\"\n\t\t\t\t[attr.aria-controls]=\"selectId\"\n\t\t\t\t[attr.placeholder]=\"intl().placeholder\"\n\t\t\t\t[ngModel]=\"clue()\"\n\t\t\t\t(ngModelChange)=\"selectInput.clueChanged($event)\"\n\t\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t\t[readonly]=\"!searchable\"\n\t\t\t\t(keydown)=\"selectInput.onKeyDownNavigation($event)\"\n\t\t\t/>\n\t\t\t<div class=\"textField-input-affix\">\n\t\t\t\t<lu-icon class=\"textField-input-affix-icon\" icon=\"searchMagnifyingGlass\" />\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</ng-template>\n\n<ng-template #panelContent>\n\t<lu-listbox [tree]=\"!!treeGenerator\" [state]=\"listboxState()\" [statusMsg]=\"listboxStatusMsg()\">\n\t\t<!-- The header is projected inside the listbox because it can contain selectable elements\n\t\tthat 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 (groupTemplateLocation() === \"group-header\" && grouping(); as groupingConfig) {\n\t\t\t@for (group of dataSourceOptions() | luOptionGroup: groupingConfig.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<ng-container *luPortal=\"groupingConfig.content; context: { $implicit: group }\" />\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[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t\t[optionIndex]=\"index\"\n\t\t\t\t\t\t(toggleOne)=\"panelRef.emitValue($event)\"\n\t\t\t\t\t\tsimpleMode\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[groupTemplateLocation]=\"groupTemplateLocation()\"\n\t\t\t\t\t\t[groupIndex]=\"groupIndex\"\n\t\t\t\t\t\t[grouping]=\"grouping()\"\n\t\t\t\t\t\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t\t\t\t\t\t[isSelected]=\"option | luIsOptionSelected: optionComparer() : selected()\"\n\t\t\t\t\t\t[class.withAddOption]=\"shouldDisplayAddOption()\"\n\t\t\t\t\t\t(selected)=\"panelRef.emitValue(option)\"\n\t\t\t\t\t\t(click)=\"panelRef.emitValue(option)\"\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\t@if (selectInput.panelFooterTpl(); as tpl) {\n\t\t<div>\n\t\t\t<ng-container *luPortal=\"tpl\" />\n\t\t</div>\n\t}\n</ng-template>\n","import { Overlay, OverlayConfig, OverlayPositionBuilder, OverlayRef, ScrollStrategyOptions } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, ElementRef, inject, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { getPushPanelViewportMargin } from '@lucca-front/ng/core';\nimport { addAttributesOnCdkContainer, LuSelectPanelRef, SELECT_ID, SELECT_LABEL_ID, ɵopenSelectPanelSheet } from '@lucca-front/ng/core-select';\nimport { LuDialogRef, LuDialogService } from '@lucca-front/ng/dialog';\nimport { takeUntil } from 'rxjs';\nimport { LuSelectPanelComponent } from '../panel';\nimport { SIMPLE_SELECT_INPUT } from '../select.model';\nimport { LuSimpleSelectInputComponent } from './select-input.component';\n\nabstract class BaseSelectPanelRef<T> extends LuSelectPanelRef<T, T> {\n\t/** Carries this ref and the select input down to the panel, however it ends up being rendered. */\n\tprotected readonly panelInjector: Injector;\n\n\tinstance: LuSelectPanelComponent<T>;\n\n\tprotected panelRef: ComponentRef<LuSelectPanelComponent<T>>;\n\n\tprotected constructor(\n\t\tparentInjector: Injector,\n\t\tprotected selectInput: LuSimpleSelectInputComponent<T>,\n\t) {\n\t\tsuper();\n\n\t\tthis.panelInjector = this.createInjector(selectInput, parentInjector);\n\t}\n\n\tprotected createInjector(selectInput: LuSimpleSelectInputComponent<T>, parentInjector: Injector): Injector {\n\t\treturn Injector.create({\n\t\t\tproviders: [\n\t\t\t\t{ provide: LuSelectPanelRef, useValue: this },\n\t\t\t\t{ provide: SIMPLE_SELECT_INPUT, useValue: selectInput },\n\t\t\t],\n\t\t\tparent: parentInjector,\n\t\t});\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\tthis.close();\n\t}\n\n\tselectCurrentlyHighlightedValue(): void {\n\t\tthis.instance.keyManager.activeItem?.selected.emit();\n\t}\n}\n\nclass SelectPanelRef<T> extends BaseSelectPanelRef<T> {\n\tconstructor(\n\t\tprivate overlayRef: OverlayRef,\n\t\tparentInjector: Injector,\n\t\tselectInput: LuSimpleSelectInputComponent<T>,\n\t) {\n\t\tsuper(parentInjector, selectInput);\n\t\tthis.panelRef = overlayRef.attach(new ComponentPortal<LuSelectPanelComponent<T>>(LuSelectPanelComponent, undefined, this.panelInjector));\n\t\tthis.instance = this.panelRef.instance;\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\toverride close(): void {\n\t\tsuper.close();\n\t\tthis.panelRef.destroy();\n\t\tthis.overlayRef.detach();\n\t\tthis.selectInput.focusInput();\n\t}\n\n\tupdatePosition(): void {\n\t\tthis.overlayRef.updatePosition();\n\t}\n}\n\nclass SelectPanelSheetRef<T> extends BaseSelectPanelRef<T> {\n\tprivate readonly dialogRef: LuDialogRef<LuSelectPanelComponent<T>, never>;\n\n\t// The sheet can be closed from either side (a selection here, the backdrop/Escape/close button there);\n\t// this keeps the two from bouncing the close back at each other.\n\tprivate dialogClosed = false;\n\n\tconstructor(dialogService: LuDialogService, parentInjector: Injector, selectInput: LuSimpleSelectInputComponent<T>) {\n\t\tsuper(parentInjector, selectInput);\n\n\t\tconst panelComponent: Type<LuSelectPanelComponent<T>> = LuSelectPanelComponent;\n\n\t\tthis.dialogRef = ɵopenSelectPanelSheet(dialogService, panelComponent, this.panelInjector, selectInput.panelTitle());\n\t\tthis.panelRef = this.dialogRef.cdkRef.componentRef!;\n\t\tthis.instance = this.panelRef.instance;\n\n\t\tthis.dialogRef.closed$.pipe(takeUntil(this.closed)).subscribe(() => {\n\t\t\tthis.dialogClosed = true;\n\t\t\tthis.close();\n\t\t});\n\t}\n\n\tupdatePosition(): void {\n\t\t// The sheet is pinned to the viewport, it never follows the field.\n\t}\n\n\toverride close(): void {\n\t\tsuper.close();\n\n\t\tif (!this.dialogClosed) {\n\t\t\tthis.dialogClosed = true;\n\t\t\tthis.dialogRef.dismiss();\n\t\t}\n\t\t// Focus goes back to the field through the dialog's own `restoreFocus`.\n\t}\n}\n\nclass SelectPanelDOMHostRef<T> extends BaseSelectPanelRef<T> {\n\tconstructor(host: ViewContainerRef, parentInjector: Injector, selectInput: LuSimpleSelectInputComponent<T>) {\n\t\tsuper(parentInjector, selectInput);\n\n\t\tconst panelComponent: Type<LuSelectPanelComponent<T>> = LuSelectPanelComponent;\n\n\t\tthis.panelRef = host.createComponent(panelComponent, {\n\t\t\tinjector: this.panelInjector,\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\n@Injectable()\nexport class LuSimpleSelectPanelRefFactory {\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\tprotected dialogService = inject(LuDialogService);\n\tprivate selectLabelId = inject(SELECT_LABEL_ID);\n\tprivate selectId = inject(SELECT_ID);\n\n\tbuildPanelRef<T>(selectInput: LuSimpleSelectInputComponent<T>, overlayConfigOverride: OverlayConfig = {}): LuSelectPanelRef<T, T> {\n\t\tif (selectInput.bottomSheetMode()) {\n\t\t\treturn new SelectPanelSheetRef(this.dialogService, this.parentInjector, selectInput);\n\t\t}\n\n\t\tconst overlayConfig = this.buildOverlayConfig(overlayConfigOverride);\n\t\tconst overlayRef = this.overlay.create(overlayConfig);\n\n\t\taddAttributesOnCdkContainer(overlayRef, this.selectLabelId, this.selectId);\n\n\t\treturn new SelectPanelRef(overlayRef, this.parentInjector, selectInput);\n\t}\n\n\tbuildAndAttachPanelRef<T>(selectInput: LuSimpleSelectInputComponent<T>, host: ViewContainerRef): LuSelectPanelRef<T, T> {\n\t\treturn new SelectPanelDOMHostRef(host, this.parentInjector, selectInput);\n\t}\n\n\tprotected buildOverlayConfig(overlayConfigOverride: OverlayConfig = {}): OverlayConfig {\n\t\tconst overlayConfig: OverlayConfig = overlayConfigOverride || {};\n\t\toverlayConfig.positionStrategy = this.positionBuilder\n\t\t\t.flexibleConnectedTo(this.elementRef)\n\t\t\t// Options usually arrive after the panel has been opened: without this, every reposition is\n\t\t\t// capped to the bounding box computed while the panel was still empty, so a panel opened in a\n\t\t\t// tight space below the field can never grow nor flip above once its options are there.\n\t\t\t.withGrowAfterOpen(true)\n\t\t\t.withViewportMargin(getPushPanelViewportMargin(this.elementRef.nativeElement, 8))\n\t\t\t.withPositions([\n\t\t\t\t{\n\t\t\t\t\toriginX: 'start',\n\t\t\t\t\toriginY: 'bottom',\n\t\t\t\t\toverlayX: 'start',\n\t\t\t\t\toverlayY: 'top',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: 'end',\n\t\t\t\t\toriginY: 'bottom',\n\t\t\t\t\toverlayX: 'end',\n\t\t\t\t\toverlayY: 'top',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: 'start',\n\t\t\t\t\toriginY: 'top',\n\t\t\t\t\toverlayX: 'start',\n\t\t\t\t\toverlayY: 'bottom',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: 'end',\n\t\t\t\t\toriginY: 'top',\n\t\t\t\t\toverlayX: 'end',\n\t\t\t\t\toverlayY: 'bottom',\n\t\t\t\t},\n\t\t\t]);\n\t\toverlayConfig.scrollStrategy = this.scrollStrategies.reposition();\n\t\toverlayConfig.minWidth = this.elementRef.nativeElement.clientWidth;\n\t\toverlayConfig.maxHeight = '100vh';\n\t\toverlayConfig.maxWidth = '100vw';\n\n\t\treturn overlayConfig;\n\t}\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, forwardRef, inject, input, viewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ClearComponent } from '@lucca-front/ng/clear';\nimport { intlInputOptions, isNotNil, luBooleanAttribute, PortalDirective } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LU_CORE_SELECT_TRANSLATIONS, LuSelectPanelRef, provideLuSelectLabelsAndIds, ɵLuOptionOutletDirective } from '@lucca-front/ng/core-select';\nimport { provideLuDialog } from '@lucca-front/ng/dialog';\nimport { FILTER_PILL_INPUT_COMPONENT, FilterPillDisplayerDirective } from '@lucca-front/ng/filter-pills/core';\nimport { InputDirective, PresentationDisplayDirective, ɵPresentationDisplayDefaultDirective } from '@lucca-front/ng/form-field';\nimport { IconComponent } from '@lucca-front/ng/icon';\nimport { LU_SIMPLE_SELECT_TRANSLATIONS } from '../select.translate';\nimport { LuSimpleSelectPanelRefFactory } from './panel-ref.factory';\n\nlet nextID = 0;\n\n@Component({\n\tselector: 'lu-simple-select',\n\ttemplateUrl: './select-input.component.html',\n\tstyleUrl: './select-input.component.scss',\n\thost: {\n\t\tclass: 'simpleSelect',\n\t\t'[class.mod-filterPill]': 'this.filterPillMode && !this.impersonation()',\n\t\t'[class.mod-impersonation]': 'this.impersonation()',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\timports: [\n\t\tAsyncPipe,\n\t\tɵLuOptionOutletDirective,\n\t\tOverlayModule,\n\t\tFormsModule,\n\t\tInputDirective,\n\t\tFilterPillDisplayerDirective,\n\t\tNgTemplateOutlet,\n\t\tIconComponent,\n\t\tClearComponent,\n\t\tPortalDirective,\n\t\tPresentationDisplayDirective,\n\t\tɵPresentationDisplayDefaultDirective,\n\t],\n\tproviders: [\n\t\t{\n\t\t\tprovide: NG_VALUE_ACCESSOR,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t\tmulti: true,\n\t\t},\n\t\t{\n\t\t\tprovide: ALuSelectInputComponent,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t},\n\t\tLuSimpleSelectPanelRefFactory,\n\t\t// Below the `XS` breakpoint the panel opens as a dialog in `sheet` mode.\n\t\tprovideLuDialog(),\n\t\tprovideLuSelectLabelsAndIds(),\n\t\t{\n\t\t\tprovide: FILTER_PILL_INPUT_COMPONENT,\n\t\t\tuseExisting: forwardRef(() => LuSimpleSelectInputComponent),\n\t\t},\n\t],\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class LuSimpleSelectInputComponent<T> extends ALuSelectInputComponent<T, T> implements ControlValueAccessor {\n\treadonly intl = input(...intlInputOptions(LU_CORE_SELECT_TRANSLATIONS, LU_SIMPLE_SELECT_TRANSLATIONS));\n\n\tvalueID = `value-${++nextID}`;\n\n\treadonly autocomplete = input<AutoFill | null>('off');\n\n\treadonly impersonation = input(false, { transform: luBooleanAttribute });\n\n\treadonly filterPillPanelAnchorRef = viewChild('filterPillPanelAnchor', { read: ViewContainerRef });\n\n\tprotected panelRefFactory = inject(LuSimpleSelectPanelRefFactory);\n\n\tprotected buildPanelRef(): LuSelectPanelRef<T, T> {\n\t\treturn this.panelRefFactory.buildPanelRef(this, this.overlayConfig());\n\t}\n\n\tinputSpace(event: Event): void {\n\t\tif (this.filterPillMode || this.impersonation()) {\n\t\t\tif (this.clue?.length === 0) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.panelRef?.selectCurrentlyHighlightedValue();\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected hasValue(): boolean {\n\t\treturn isNotNil(this.value);\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","<div class=\"simpleSelect-field\">\n\t<span class=\"simpleSelect-field-prefix\">\n\t\t@if (prefix(); as prefix) {\n\t\t\t<ng-container *luPortal=\"prefix\" />\n\t\t}\n\t</span>\n\t@if (bottomSheetMode()) {\n\t\t<!--\n\t\t\tThe panel opens as a modal sheet that embeds its own search input, so the field itself is only ever\n\t\t\ta trigger. Keeping a text input here makes iOS focus it and raise the software keyboard on a field\n\t\t\tthat is about to be covered by the sheet; a button is both what this control actually is and what\n\t\t\tmobile browsers treat as a tap target rather than a text entry.\n\t\t-->\n\t\t<button\n\t\t\tclass=\"simpleSelect-field-input mod-button\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t>\n\t\t\t@if (!hasValue()) {\n\t\t\t\t<span class=\"simpleSelect-field-placeholder\">{{ inputPlaceholder ? inputPlaceholder : intl().placeholder }}</span>\n\t\t\t}\n\t\t</button>\n\t} @else {\n\t\t<input\n\t\t\tclass=\"simpleSelect-field-input\"\n\t\t\ttype=\"text\"\n\t\t\trole=\"combobox\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\t[attr.aria-activedescendant]=\"activeDescendant$ | async\"\n\t\t\t[attr.aria-expanded]=\"panelOpenSignal()\"\n\t\t\t[attr.aria-controls]=\"ariaControls\"\n\t\t\t[attr.placeholder]=\"inputPlaceholder ? inputPlaceholder : intl().placeholder\"\n\t\t\t[ngModel]=\"clue\"\n\t\t\t(ngModelChange)=\"clueChanged($event)\"\n\t\t\t[ngModelOptions]=\"{ standalone: true }\"\n\t\t\t[readonly]=\"!searchable\"\n\t\t\t[disabled]=\"(disabled$ | async) ?? false\"\n\t\t\t(keyup.space)=\"inputSpace($event)\"\n\t\t\tluInput\n\t\t\t#inputElement\n\t\t\t[attr.autocomplete]=\"autocomplete()\"\n\t\t\t[attr.tabindex]=\"inputTabindex()\"\n\t\t\t[luInputLabelledBy]=\"valueID\"\n\t\t/>\n\t}\n\t<div class=\"simpleSelect-field-value\" [attr.id]=\"valueID\">\n\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t</div>\n\t@if (!filterPillMode && !impersonation()) {\n\t\t@if (clearable() && hasValue() && (disabled$ | async) === false) {\n\t\t\t<lu-clear class=\"simpleSelect-field-clear\" (onClear)=\"clearValue($event)\">{{ intl().clear }}</lu-clear>\n\t\t}\n\t\t<lu-icon icon=\"arrowChevronBottom\" class=\"simpleSelect-field-icon\" />\n\t}\n\t<lu-icon icon=\"searchMagnifyingGlass\" class=\"simpleSelect-field-icon mod-search\" />\n</div>\n<ng-container #filterPillPanelAnchor />\n<ng-container *luFilterPillDisplayer>\n\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n</ng-container>\n\n<ng-template #currentValueDisplayerTpl>\n\t<ng-container *luOptionOutlet=\"displayerTpl(); value: value\" />\n</ng-template>\n\n@if (!ignorePresentation()) {\n\t<ng-container *luPresentationDisplayDefault>\n\t\t@if (value) {\n\t\t\t<ng-container *ngTemplateOutlet=\"currentValueDisplayerTpl\" />\n\t\t} @else {\n\t\t\t<span aria-hidden=\"true\" data-content-before=\"–\"></span>\n\t\t}\n\t</ng-container>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵinjectPointerNavigation","ɵgetGroupTemplateLocation","ɵfillScrollViewport","ɵLuOptionComponent","ɵCoreSelectPanelElement","ListboxOptionComponent","ɵLuOptionGroupPipe","ɵopenSelectPanelSheet","ɵLuOptionOutletDirective","ɵPresentationDisplayDefaultDirective"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAO,MAAM,YAAY,GAAG;AAC3B,IAAA,OAAO,EAAE;AACR,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,YAAY,EAAE,kDAAkD;AAChE,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,YAAY,EAAE,0FAA0F;AACxG,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,wBAAwB;AACrC,QAAA,YAAY,EAAE,kDAAkD;AAChE,QAAA,OAAO,EAAE,oBAAoB;AAC7B,QAAA,YAAY,EAAE,0FAA0F;AACxG,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,WAAW,EAAE,uBAAuB;AACpC,QAAA,YAAY,EAAE,uCAAuC;AACrD,QAAA,OAAO,EAAE,yBAAyB;AAClC,QAAA,YAAY,EAAE,mFAAmF;AACjG,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,YAAY,EAAE,2CAA2C;AACzD,QAAA,OAAO,EAAE,wBAAwB;AACjC,QAAA,YAAY,EAAE,0FAA0F;AACxG,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,YAAY,EAAE,yCAAyC;AACvD,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,YAAY,EAAE,+FAA+F;AAC7G,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,WAAW,EAAE,oBAAoB;AACjC,QAAA,YAAY,EAAE,0CAA0C;AACxD,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,YAAY,EAAE,sGAAsG;AACpH,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,YAAY,EAAE,wCAAwC;AACtD,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,YAAY,EAAE,mGAAmG;AACjH,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,YAAY,EAAE,sDAAsD;AACpE,QAAA,OAAO,EAAE,YAAY;AACrB,QAAA,YAAY,EAAE,iFAAiF;AAC/F,KAAA;AACD,IAAA,EAAE,EAAE;AACH,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,WAAW,EAAE,sBAAsB;AACnC,QAAA,YAAY,EAAE,iDAAiD;AAC/D,QAAA,OAAO,EAAE,iBAAiB;AAC1B,QAAA,YAAY,EAAE,4FAA4F;AAC1G,KAAA;CACD;;MCrEY,6BAA6B,GAAG,IAAI,cAAc,CAAC,4BAA4B,EAAE;AAC7F,IAAA,OAAO,EAAE,MAAM,0BAA0B;AACzC,CAAA;AAWM,MAAM,0BAA0B,GAAwC;;ACdxE,MAAM,mBAAmB,GAAG,IAAI,cAAc,CAAwC,mBAAmB,CAAC;;MCGpG,sBAAsB,CAAA;AAClC,IAAA,SAAS,CAAI,MAAS,EAAE,QAA6B,EAAE,cAAiB,EAAA;QACvE,OAAO,CAAC,CAAC,cAAc,IAAI,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAC5D;8GAHY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,oBAAA,EAAA,CAAA,CAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,oBAAoB;AAC1B,iBAAA;;;MC6DY,sBAAsB,CAAA;AAoDlC,IAAA,WAAA,GAAA;AAnDO,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAkC,mBAAmB,CAAC;AAC1E,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAyB,gBAAgB,CAAC;AAC3D,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI;AAE1B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB;AACtD,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc;AACnD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;AAC3C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc;AAChD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS;AAC/C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW;;;AAIzC,QAAA,IAAA,CAAA,YAAY,GAAyB,IAAI,CAAC,WAAW,CAAC,KAAK;AAClD,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS;QAEtC,IAAA,CAAA,OAAO,GAAG,MAAM,CAA+B,EAAE;oFAAC;QAClD,IAAA,CAAA,iBAAiB,GAAGA,wBAAwB,CAAC,MAAM,CAA0B,UAAU,CAAC,CAAC,aAAa,CAAC;AAEhG,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,oBAAoB,CAAC;QAElE,IAAA,CAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;qFAAC;;;;AAKtD,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAK;AAClD,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE;AAChC,YAAA,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE;QAC5C,CAAC;4FAAC;QAEO,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE;wFAAC;AACxC,QAAA,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACtG,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,sBAAsB;AAChE,QAAA,IAAA,CAAA,qBAAqB,GAAGC,yBAAyB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC;;AAGrH,QAAA,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAsB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC;yFAAC;AAEzI,QAAA,IAAA,CAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AACzC,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACnB,gBAAA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO;YAC3B;YACA,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,YAAY;QAChF,CAAC;6FAAC;QAEe,IAAA,CAAA,aAAa,GAAG,SAAS,CAAmC,eAAe,qFAAI,IAAI,EAAE,UAAU,EAAA,CAAG;;;;;AAOlH,QAAAC,mBAAmB,CAAC;AACnB,YAAA,QAAQ,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC;AAC7D,YAAA,WAAW,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC;YAC5D,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;AAC7C,SAAA,CAAC;IACH;AAEA,IAAA,QAAQ,CAAC,GAAU,EAAA;QAClB,IAAI,EAAE,GAAG,CAAC,MAAM,YAAY,WAAW,CAAC,EAAE;YACzC;QACD;QAEA,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE;AACjF,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC9B;IACD;IAEA,eAAe,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACpB,SAAS,EAAE,IAAI,CAAC,OAAO;YACvB,OAAO,EAAE,IAAI,CAAC,iBAAiB;AAC/B,YAAA,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE;AACrC,YAAA,sBAAsB,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB;AAC3D,YAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAK;AAC/E,SAAA,CAAC;AAEF,QAAA,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YAC1D,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;QACnD;IACD;8GAvFY,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,EAAA,cAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EARvB;YACV,oBAAoB;AACpB,YAAA;AACC,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,sBAAsB,CAAC;AACrD,aAAA;AACD,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAoDqG,UAAU,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpHjH,m8LAyIA,EAAA,MAAA,EAAA,CAAA,quCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhGE,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,eAAe,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,qBAAqB,+EACrB,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACtB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEhBC,kBAAkB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,uBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAElB,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACfC,uBAAuB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,gBAAgB,2GAChBC,eAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,WAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,aAAa,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,mBAAmB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EARnBC,kBAAkB,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAElB,sBAAsB,sDAOtB,eAAe,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAUJ,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBApClC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,eAAA,EAGV,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACL,wBAAA,KAAK,EAAE,aAAa;AACpB,wBAAA,oBAAoB,EAAE,cAAc;AACpC,wBAAA,8BAA8B,EAAE,qBAAqB;qBACrD,EAAA,OAAA,EACQ;wBACR,4BAA4B;wBAC5B,eAAe;wBACf,qBAAqB;wBACrB,sBAAsB;wBACtB,WAAW;wBACX,gBAAgB;wBAChBA,kBAAkB;wBAClBH,kBAAkB;wBAClB,sBAAsB;wBACtB,eAAe;wBACfC,uBAAuB;wBACvB,gBAAgB;wBAChBC,eAAsB;wBACtB,aAAa;wBACb,mBAAmB;wBACnB,eAAe;qBACf,EAAA,SAAA,EACU;wBACV,oBAAoB;AACpB,wBAAA;AACC,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,WAAW,EAAE,UAAU,CAAC,4BAA4B,CAAC;AACrD,yBAAA;AACD,qBAAA,EAAA,QAAA,EAAA,m8LAAA,EAAA,MAAA,EAAA,CAAA,quCAAA,CAAA,EAAA;AAoD4E,SAAA,CAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,eAAe,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEzGnH,MAAe,kBAAsB,SAAQ,gBAAsB,CAAA;IAQlE,WAAA,CACC,cAAwB,EACd,WAA4C,EAAA;AAEtD,QAAA,KAAK,EAAE;QAFG,IAAA,CAAA,WAAW,GAAX,WAAW;QAIrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC;IACtE;IAEU,cAAc,CAAC,WAA4C,EAAE,cAAwB,EAAA;QAC9F,OAAO,QAAQ,CAAC,MAAM,CAAC;AACtB,YAAA,SAAS,EAAE;AACV,gBAAA,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE;AAC7C,gBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE;AACvD,aAAA;AACD,YAAA,MAAM,EAAE,cAAc;AACtB,SAAA,CAAC;IACH;AAES,IAAA,qBAAqB,CAAC,KAAoB,EAAA;QAClD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;IAC1C;AAEA,IAAA,SAAS,CAAC,KAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,EAAE;IACb;IAEA,+BAA+B,GAAA;QAC9B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE;IACrD;AACA;AAED,MAAM,cAAkB,SAAQ,kBAAqB,CAAA;AACpD,IAAA,WAAA,CACS,UAAsB,EAC9B,cAAwB,EACxB,WAA4C,EAAA;AAE5C,QAAA,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC;QAJ1B,IAAA,CAAA,UAAU,GAAV,UAAU;AAKlB,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,eAAe,CAA4B,sBAAsB,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACxI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;QAEtC;AACE,aAAA,aAAa;AACb,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3B,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IAChC;IAES,KAAK,GAAA;QACb,KAAK,CAAC,KAAK,EAAE;AACb,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;IAC9B;IAEA,cAAc,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;IACjC;AACA;AAED,MAAM,mBAAuB,SAAQ,kBAAqB,CAAA;AAOzD,IAAA,WAAA,CAAY,aAA8B,EAAE,cAAwB,EAAE,WAA4C,EAAA;AACjH,QAAA,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC;;;QAH3B,IAAA,CAAA,YAAY,GAAG,KAAK;QAK3B,MAAM,cAAc,GAAoC,sBAAsB;AAE9E,QAAA,IAAI,CAAC,SAAS,GAAGE,qBAAqB,CAAC,aAAa,EAAE,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC;QACnH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAa;QACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;AAEtC,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAClE,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;YACxB,IAAI,CAAC,KAAK,EAAE;AACb,QAAA,CAAC,CAAC;IACH;IAEA,cAAc,GAAA;;IAEd;IAES,KAAK,GAAA;QACb,KAAK,CAAC,KAAK,EAAE;AAEb,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;QACzB;;IAED;AACA;AAED,MAAM,qBAAyB,SAAQ,kBAAqB,CAAA;AAC3D,IAAA,WAAA,CAAY,IAAsB,EAAE,cAAwB,EAAE,WAA4C,EAAA;AACzG,QAAA,KAAK,CAAC,cAAc,EAAE,WAAW,CAAC;QAElC,MAAM,cAAc,GAAoC,sBAAsB;QAE9E,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;YACpD,QAAQ,EAAE,IAAI,CAAC,aAAa;AAC5B,SAAA,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;IACvC;IAES,cAAc,GAAA;;IAEvB;IAES,KAAK,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACnB;AACA;MAGY,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;AAEW,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACzB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAA0B,UAAU,CAAC;AACxD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAChD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAChD,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;AACvC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AA6DpC,IAAA;AA3DA,IAAA,aAAa,CAAI,WAA4C,EAAE,qBAAA,GAAuC,EAAE,EAAA;AACvG,QAAA,IAAI,WAAW,CAAC,eAAe,EAAE,EAAE;AAClC,YAAA,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;QACrF;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;QAErD,2BAA2B,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC;QAE1E,OAAO,IAAI,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;IACxE;IAEA,sBAAsB,CAAI,WAA4C,EAAE,IAAsB,EAAA;QAC7F,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC;IACzE;IAEU,kBAAkB,CAAC,wBAAuC,EAAE,EAAA;AACrE,QAAA,MAAM,aAAa,GAAkB,qBAAqB,IAAI,EAAE;AAChE,QAAA,aAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACpC,aAAA,mBAAmB,CAAC,IAAI,CAAC,UAAU;;;;aAInC,iBAAiB,CAAC,IAAI;aACtB,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;AAC/E,aAAA,aAAa,CAAC;AACd,YAAA;AACC,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,QAAQ;AACjB,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,KAAK;AACf,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,QAAQ,EAAE,QAAQ;AAClB,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,QAAQ,EAAE,QAAQ;AAClB,aAAA;AACD,SAAA,CAAC;QACH,aAAa,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;QACjE,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW;AAClE,QAAA,aAAa,CAAC,SAAS,GAAG,OAAO;AACjC,QAAA,aAAa,CAAC,QAAQ,GAAG,OAAO;AAEhC,QAAA,OAAO,aAAa;IACrB;8GApEY,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAA7B,6BAA6B,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC;;;AC5HD,IAAI,MAAM,GAAG,CAAC;AA+CR,MAAO,4BAAgC,SAAQ,uBAA6B,CAAA;AA7ClF,IAAA,WAAA,GAAA;;QA8CU,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,GAAG,gBAAgB,CAAC,2BAA2B,EAAE,6BAA6B,CAAC;iFAAC;AAEtG,QAAA,IAAA,CAAA,OAAO,GAAG,CAAA,MAAA,EAAS,EAAE,MAAM,EAAE;QAEpB,IAAA,CAAA,YAAY,GAAG,KAAK,CAAkB,KAAK;yFAAC;QAE5C,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC,KAAK,qFAAI,SAAS,EAAE,kBAAkB,EAAA,CAAG;QAE/D,IAAA,CAAA,wBAAwB,GAAG,SAAS,CAAC,uBAAuB,gGAAI,IAAI,EAAE,gBAAgB,EAAA,CAAG;AAExF,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,6BAA6B,CAAC;AA0BjE,IAAA;IAxBU,aAAa,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IACtE;AAEA,IAAA,UAAU,CAAC,KAAY,EAAA;QACtB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YAChD,IAAI,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE;gBAC5B,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,QAAQ,EAAE,+BAA+B,EAAE;YACjD;QACD;IACD;IAEU,QAAQ,GAAA;AACjB,QAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;IAES,oBAAoB,GAAA;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,wBAAwB,EAAE;QAC5C,IAAI,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC;QACzE;QACA,KAAK,CAAC,oBAAoB,EAAE;IAC7B;8GApCY,4BAA4B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,8CAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EArB7B;AACV,YAAA;AACC,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC3D,gBAAA,KAAK,EAAE,IAAI;AACX,aAAA;AACD,YAAA;AACC,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC3D,aAAA;YACD,6BAA6B;;AAE7B,YAAA,eAAe,EAAE;AACjB,YAAA,2BAA2B,EAAE;AAC7B,YAAA;AACC,gBAAA,OAAO,EAAE,2BAA2B;AACpC,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,4BAA4B,CAAC;AAC3D,aAAA;SACD,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAY8E,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtEhG,qlGAiFA,EAAA,MAAA,EAAA,CAAA,q6VAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrDEC,wBAAwB,mIACxB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,wSAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,4BAA4B,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAC5B,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,aAAa,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,cAAc,iKACd,eAAe,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAEfC,oCAAoC,EAAA,QAAA,EAAA,gCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAXpC,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAkCE,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBA7CxC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,IAAA,EAGtB;AACL,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,wBAAwB,EAAE,8CAA8C;AACxE,wBAAA,2BAA2B,EAAE,sBAAsB;qBACnD,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC;wBACR,SAAS;wBACTD,wBAAwB;wBACxB,aAAa;wBACb,WAAW;wBACX,cAAc;wBACd,4BAA4B;wBAC5B,gBAAgB;wBAChB,aAAa;wBACb,cAAc;wBACd,eAAe;wBACf,4BAA4B;wBAC5BC,oCAAoC;qBACpC,EAAA,SAAA,EACU;AACV,wBAAA;AACC,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,kCAAkC,CAAC;AAC3D,4BAAA,KAAK,EAAE,IAAI;AACX,yBAAA;AACD,wBAAA;AACC,4BAAA,OAAO,EAAE,uBAAuB;AAChC,4BAAA,WAAW,EAAE,UAAU,CAAC,kCAAkC,CAAC;AAC3D,yBAAA;wBACD,6BAA6B;;AAE7B,wBAAA,eAAe,EAAE;AACjB,wBAAA,2BAA2B,EAAE;AAC7B,wBAAA;AACC,4BAAA,OAAO,EAAE,2BAA2B;AACpC,4BAAA,WAAW,EAAE,UAAU,CAAC,kCAAkC,CAAC;AAC3D,yBAAA;qBACD,EAAA,aAAA,EACc,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qlGAAA,EAAA,MAAA,EAAA,CAAA,q6VAAA,CAAA,EAAA;AAWS,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,wBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAAA,uBAAuB,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AEtElG;;AAEG;;"}
@@ -9,10 +9,10 @@ class SoftwareIconWrapperItemDirective {
9
9
  constructor() {
10
10
  this.templateRef = inject(TemplateRef);
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SoftwareIconWrapperItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: SoftwareIconWrapperItemDirective, isStandalone: true, selector: "[SoftwareIconWrapperItem]", ngImport: i0 }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: SoftwareIconWrapperItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.2.1", type: SoftwareIconWrapperItemDirective, isStandalone: true, selector: "[SoftwareIconWrapperItem]", ngImport: i0 }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SoftwareIconWrapperItemDirective, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: SoftwareIconWrapperItemDirective, decorators: [{
16
16
  type: Directive,
17
17
  args: [{
18
18
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -69,10 +69,10 @@ class SoftwareIconWrapperComponent {
69
69
  this.hiddenCount = computed(() => this.hiddenIcons().length, /* @ts-ignore */
70
70
  ...(ngDevMode ? [{ debugName: "hiddenCount" }] : /* istanbul ignore next */ []));
71
71
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SoftwareIconWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: SoftwareIconWrapperComponent, isStandalone: true, selector: "lu-software-icon-wrapper", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, intl: { classPropertyName: "intl", publicName: "intl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.mod-XS": "size() === \"XS\"", "class.mod-S": "size() === \"S\"" }, classAttribute: "softwareIconWrapper" }, providers: [{ provide: LU_SOFTWARE_ICON_WRAPPER, useValue: true }], queries: [{ propertyName: "items", predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<ul class=\"softwareIconWrapper-list\">\n\t@for (icon of visibleIcons(); track icon) {\n\t\t<li class=\"softwareIconWrapper-list-item\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"icon\" />\n\t\t</li>\n\t}\n</ul>\n\n@if (hiddenCount() >= 2) {\n\t<button class=\"softwareIconWrapper-action\" type=\"button\" [luPopover2]=\"softwareIconWrapperPopover\" luPopoverTrigger=\"click+hover\">\n\t\t<div class=\"softwareIconWrapper-action-more\">\n\t\t\t<span aria-hidden=\"true\" [attr.data-content-before]=\"'+' + hiddenIcons().length\"></span>\n\t\t\t<span class=\"pr-u-mask\">{{ intl().seeMore | intlPluralLabel: hiddenCount() | intlParams: { count: hiddenIcons().length } }}</span>\n\t\t</div>\n\t</button>\n\n\t<ng-template #softwareIconWrapperPopover>\n\t\t<ul class=\"popover-contentOptional softwareIconWrapper_popover\" [class]=\"size() ? `mod-${size()}` : null\">\n\t\t\t@for (icon of hiddenIcons(); track icon) {\n\t\t\t\t<li class=\"softwareIconWrapper_popover-item\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"icon\" />\n\t\t\t\t</li>\n\t\t\t}\n\t\t</ul>\n\t</ng-template>\n}\n", dependencies: [{ kind: "directive", type: PopoverDirective, selector: "[luPopover2]", inputs: ["intl", "luPopover2", "luPopoverPosition", "luPopoverMaxBlockSize", "luPopoverMaxInlineSize", "overlayScrollStrategy", "luPopoverDisabled", "luPopoverTrigger", "customPositions", "luPopoverNoCloseButton", "luPopoverAnchor", "luPopoverBackdrop", "luPopoverIgnoredOutsidePointerTargets", "luPopoverOpenDelay", "luPopoverCloseDelay"], outputs: ["luPopoverTriggerChange", "luPopoverClosed", "luPopoverOpened"], exportAs: ["luPopover2"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: IntlParamsPipe, name: "intlParams" }, { kind: "pipe", type: IntlPluralLabelPipe, name: "intlPluralLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
72
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: SoftwareIconWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
73
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.2.1", type: SoftwareIconWrapperComponent, isStandalone: true, selector: "lu-software-icon-wrapper", inputs: { max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, intl: { classPropertyName: "intl", publicName: "intl", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.mod-XS": "size() === \"XS\"", "class.mod-S": "size() === \"S\"" }, classAttribute: "softwareIconWrapper" }, providers: [{ provide: LU_SOFTWARE_ICON_WRAPPER, useValue: true }], queries: [{ propertyName: "items", predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<ul class=\"softwareIconWrapper-list\">\n\t@for (icon of visibleIcons(); track icon) {\n\t\t<li class=\"softwareIconWrapper-list-item\">\n\t\t\t<ng-container [ngTemplateOutlet]=\"icon\" />\n\t\t</li>\n\t}\n</ul>\n\n@if (hiddenCount() >= 2) {\n\t<button class=\"softwareIconWrapper-action\" type=\"button\" [luPopover2]=\"softwareIconWrapperPopover\" luPopoverTrigger=\"click+hover\">\n\t\t<div class=\"softwareIconWrapper-action-more\">\n\t\t\t<span aria-hidden=\"true\" [attr.data-content-before]=\"'+' + hiddenIcons().length\"></span>\n\t\t\t<span class=\"pr-u-mask\">{{ intl().seeMore | intlPluralLabel: hiddenCount() | intlParams: { count: hiddenIcons().length } }}</span>\n\t\t</div>\n\t</button>\n\n\t<ng-template #softwareIconWrapperPopover>\n\t\t<ul class=\"popover-contentOptional softwareIconWrapper_popover\" [class]=\"size() ? `mod-${size()}` : null\">\n\t\t\t@for (icon of hiddenIcons(); track icon) {\n\t\t\t\t<li class=\"softwareIconWrapper_popover-item\">\n\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"icon\" />\n\t\t\t\t</li>\n\t\t\t}\n\t\t</ul>\n\t</ng-template>\n}\n", dependencies: [{ kind: "directive", type: PopoverDirective, selector: "[luPopover2]", inputs: ["intl", "luPopover2", "luPopoverPosition", "luPopoverMaxBlockSize", "luPopoverMaxInlineSize", "overlayScrollStrategy", "luPopoverDisabled", "luPopoverTrigger", "customPositions", "luPopoverNoCloseButton", "luPopoverAnchor", "luPopoverBackdrop", "luPopoverIgnoredOutsidePointerTargets", "luPopoverOpenDelay", "luPopoverCloseDelay"], outputs: ["luPopoverTriggerChange", "luPopoverClosed", "luPopoverOpened"], exportAs: ["luPopover2"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: IntlParamsPipe, name: "intlParams" }, { kind: "pipe", type: IntlPluralLabelPipe, name: "intlPluralLabel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
74
74
  }
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: SoftwareIconWrapperComponent, decorators: [{
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.2.1", ngImport: i0, type: SoftwareIconWrapperComponent, decorators: [{
76
76
  type: Component,
77
77
  args: [{ selector: 'lu-software-icon-wrapper', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [PopoverDirective, IntlParamsPipe, IntlPluralLabelPipe, NgTemplateOutlet], providers: [{ provide: LU_SOFTWARE_ICON_WRAPPER, useValue: true }], host: {
78
78
  class: 'softwareIconWrapper',