@lucca-front/ng 22.0.0-rc.4 → 22.0.0

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 (319) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/lucca-front-ng-a11y.mjs +10 -10
  3. package/fesm2022/lucca-front-ng-a11y.mjs.map +1 -1
  4. package/fesm2022/lucca-front-ng-activity-feed.mjs +14 -14
  5. package/fesm2022/lucca-front-ng-activity-feed.mjs.map +1 -1
  6. package/fesm2022/lucca-front-ng-api.mjs +40 -40
  7. package/fesm2022/lucca-front-ng-app-layout.mjs +7 -6
  8. package/fesm2022/lucca-front-ng-app-layout.mjs.map +1 -1
  9. package/fesm2022/lucca-front-ng-approbation-inbox.mjs +517 -0
  10. package/fesm2022/lucca-front-ng-approbation-inbox.mjs.map +1 -0
  11. package/fesm2022/lucca-front-ng-box.mjs +12 -12
  12. package/fesm2022/lucca-front-ng-box.mjs.map +1 -1
  13. package/fesm2022/lucca-front-ng-breadcrumbs.mjs +9 -9
  14. package/fesm2022/lucca-front-ng-breadcrumbs.mjs.map +1 -1
  15. package/fesm2022/lucca-front-ng-bubble-icon.mjs +4 -4
  16. package/fesm2022/lucca-front-ng-bubble-icon.mjs.map +1 -1
  17. package/fesm2022/lucca-front-ng-bubble-illustration.mjs +7 -6
  18. package/fesm2022/lucca-front-ng-bubble-illustration.mjs.map +1 -1
  19. package/fesm2022/lucca-front-ng-callout.mjs +38 -38
  20. package/fesm2022/lucca-front-ng-callout.mjs.map +1 -1
  21. package/fesm2022/lucca-front-ng-chip.mjs +10 -10
  22. package/fesm2022/lucca-front-ng-chip.mjs.map +1 -1
  23. package/fesm2022/lucca-front-ng-clear.mjs +7 -7
  24. package/fesm2022/lucca-front-ng-clear.mjs.map +1 -1
  25. package/fesm2022/lucca-front-ng-code.mjs +6 -5
  26. package/fesm2022/lucca-front-ng-code.mjs.map +1 -1
  27. package/fesm2022/lucca-front-ng-color.mjs +7 -6
  28. package/fesm2022/lucca-front-ng-color.mjs.map +1 -1
  29. package/fesm2022/lucca-front-ng-comment.mjs +18 -17
  30. package/fesm2022/lucca-front-ng-comment.mjs.map +1 -1
  31. package/fesm2022/lucca-front-ng-container.mjs +8 -7
  32. package/fesm2022/lucca-front-ng-container.mjs.map +1 -1
  33. package/fesm2022/lucca-front-ng-core-select-api.mjs +17 -40
  34. package/fesm2022/lucca-front-ng-core-select-api.mjs.map +1 -1
  35. package/fesm2022/lucca-front-ng-core-select-department.mjs +18 -20
  36. package/fesm2022/lucca-front-ng-core-select-department.mjs.map +1 -1
  37. package/fesm2022/lucca-front-ng-core-select-establishment.mjs +28 -16
  38. package/fesm2022/lucca-front-ng-core-select-establishment.mjs.map +1 -1
  39. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs +19 -9
  40. package/fesm2022/lucca-front-ng-core-select-job-qualification.mjs.map +1 -1
  41. package/fesm2022/lucca-front-ng-core-select-legal-units.mjs +34 -21
  42. package/fesm2022/lucca-front-ng-core-select-legal-units.mjs.map +1 -1
  43. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs +16 -6
  44. package/fesm2022/lucca-front-ng-core-select-occupation-category.mjs.map +1 -1
  45. package/fesm2022/lucca-front-ng-core-select-user.mjs +41 -36
  46. package/fesm2022/lucca-front-ng-core-select-user.mjs.map +1 -1
  47. package/fesm2022/lucca-front-ng-core-select.mjs +252 -114
  48. package/fesm2022/lucca-front-ng-core-select.mjs.map +1 -1
  49. package/fesm2022/lucca-front-ng-core.mjs +113 -38
  50. package/fesm2022/lucca-front-ng-core.mjs.map +1 -1
  51. package/fesm2022/lucca-front-ng-data-table.mjs +50 -50
  52. package/fesm2022/lucca-front-ng-data-table.mjs.map +1 -1
  53. package/fesm2022/lucca-front-ng-date.mjs +42 -43
  54. package/fesm2022/lucca-front-ng-date.mjs.map +1 -1
  55. package/fesm2022/lucca-front-ng-date2.mjs +50 -48
  56. package/fesm2022/lucca-front-ng-date2.mjs.map +1 -1
  57. package/fesm2022/lucca-front-ng-department.mjs +28 -27
  58. package/fesm2022/lucca-front-ng-department.mjs.map +1 -1
  59. package/fesm2022/lucca-front-ng-dialog.mjs +85 -59
  60. package/fesm2022/lucca-front-ng-dialog.mjs.map +1 -1
  61. package/fesm2022/lucca-front-ng-divider.mjs +9 -9
  62. package/fesm2022/lucca-front-ng-divider.mjs.map +1 -1
  63. package/fesm2022/lucca-front-ng-dropdown.mjs +46 -46
  64. package/fesm2022/lucca-front-ng-dropdown.mjs.map +1 -1
  65. package/fesm2022/lucca-front-ng-empty-state.mjs +56 -31
  66. package/fesm2022/lucca-front-ng-empty-state.mjs.map +1 -1
  67. package/fesm2022/lucca-front-ng-error-page.mjs +4 -4
  68. package/fesm2022/lucca-front-ng-error-page.mjs.map +1 -1
  69. package/fesm2022/lucca-front-ng-establishment.mjs +38 -37
  70. package/fesm2022/lucca-front-ng-establishment.mjs.map +1 -1
  71. package/fesm2022/lucca-front-ng-fancy-box.mjs +4 -4
  72. package/fesm2022/lucca-front-ng-fancy-box.mjs.map +1 -1
  73. package/fesm2022/lucca-front-ng-file-upload.mjs +86 -48
  74. package/fesm2022/lucca-front-ng-file-upload.mjs.map +1 -1
  75. package/fesm2022/lucca-front-ng-filter-pills.mjs +150 -27
  76. package/fesm2022/lucca-front-ng-filter-pills.mjs.map +1 -1
  77. package/fesm2022/lucca-front-ng-footer.mjs +10 -9
  78. package/fesm2022/lucca-front-ng-footer.mjs.map +1 -1
  79. package/fesm2022/lucca-front-ng-form-field.mjs +35 -36
  80. package/fesm2022/lucca-front-ng-form-field.mjs.map +1 -1
  81. package/fesm2022/lucca-front-ng-form-header.mjs +5 -5
  82. package/fesm2022/lucca-front-ng-form-header.mjs.map +1 -1
  83. package/fesm2022/lucca-front-ng-form-label.mjs +19 -52
  84. package/fesm2022/lucca-front-ng-form-label.mjs.map +1 -1
  85. package/fesm2022/lucca-front-ng-form.mjs +9 -8
  86. package/fesm2022/lucca-front-ng-form.mjs.map +1 -1
  87. package/fesm2022/lucca-front-ng-formly.mjs +64 -64
  88. package/fesm2022/lucca-front-ng-formly.mjs.map +1 -1
  89. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs +8 -8
  90. package/fesm2022/lucca-front-ng-forms-phone-number-input.mjs.map +1 -1
  91. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-html.mjs +3 -3
  92. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-markdown.mjs +6 -6
  93. package/fesm2022/lucca-front-ng-forms-rich-text-input-formatters-plain-text.mjs +3 -3
  94. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs +68 -55
  95. package/fesm2022/lucca-front-ng-forms-rich-text-input.mjs.map +1 -1
  96. package/fesm2022/lucca-front-ng-forms.mjs +127 -113
  97. package/fesm2022/lucca-front-ng-forms.mjs.map +1 -1
  98. package/fesm2022/lucca-front-ng-gauge.mjs +11 -11
  99. package/fesm2022/lucca-front-ng-gauge.mjs.map +1 -1
  100. package/fesm2022/lucca-front-ng-grid.mjs +18 -17
  101. package/fesm2022/lucca-front-ng-grid.mjs.map +1 -1
  102. package/fesm2022/lucca-front-ng-highlight-data.mjs +11 -18
  103. package/fesm2022/lucca-front-ng-highlight-data.mjs.map +1 -1
  104. package/fesm2022/lucca-front-ng-highlight-section.mjs +85 -0
  105. package/fesm2022/lucca-front-ng-highlight-section.mjs.map +1 -0
  106. package/fesm2022/lucca-front-ng-highlight-text.mjs +3 -3
  107. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs +17 -17
  108. package/fesm2022/lucca-front-ng-horizontal-navigation.mjs.map +1 -1
  109. package/fesm2022/lucca-front-ng-impersonation.mjs +7 -7
  110. package/fesm2022/lucca-front-ng-impersonation.mjs.map +1 -1
  111. package/fesm2022/lucca-front-ng-index-table.mjs +50 -50
  112. package/fesm2022/lucca-front-ng-index-table.mjs.map +1 -1
  113. package/fesm2022/lucca-front-ng-inline-message.mjs +6 -6
  114. package/fesm2022/lucca-front-ng-inline-message.mjs.map +1 -1
  115. package/fesm2022/lucca-front-ng-input.mjs +22 -22
  116. package/fesm2022/lucca-front-ng-input.mjs.map +1 -1
  117. package/fesm2022/lucca-front-ng-link.mjs +24 -16
  118. package/fesm2022/lucca-front-ng-link.mjs.map +1 -1
  119. package/fesm2022/lucca-front-ng-listbox.mjs +67 -33
  120. package/fesm2022/lucca-front-ng-listbox.mjs.map +1 -1
  121. package/fesm2022/lucca-front-ng-listing.mjs +17 -16
  122. package/fesm2022/lucca-front-ng-listing.mjs.map +1 -1
  123. package/fesm2022/lucca-front-ng-loading.mjs +8 -8
  124. package/fesm2022/lucca-front-ng-loading.mjs.map +1 -1
  125. package/fesm2022/lucca-front-ng-main-layout.mjs +131 -15
  126. package/fesm2022/lucca-front-ng-main-layout.mjs.map +1 -1
  127. package/fesm2022/lucca-front-ng-mobile-push.mjs +3 -3
  128. package/fesm2022/lucca-front-ng-mobile-push.mjs.map +1 -1
  129. package/fesm2022/lucca-front-ng-modal.mjs +27 -27
  130. package/fesm2022/lucca-front-ng-modal.mjs.map +1 -1
  131. package/fesm2022/lucca-front-ng-multi-select.mjs +216 -135
  132. package/fesm2022/lucca-front-ng-multi-select.mjs.map +1 -1
  133. package/fesm2022/lucca-front-ng-new-badge.mjs +3 -3
  134. package/fesm2022/lucca-front-ng-number-format.mjs +6 -6
  135. package/fesm2022/lucca-front-ng-number.mjs +7 -7
  136. package/fesm2022/lucca-front-ng-numeric-badge.mjs +1 -84
  137. package/fesm2022/lucca-front-ng-numeric-badge.mjs.map +1 -1
  138. package/fesm2022/lucca-front-ng-option.mjs +145 -139
  139. package/fesm2022/lucca-front-ng-option.mjs.map +1 -1
  140. package/fesm2022/lucca-front-ng-page-header.mjs +8 -8
  141. package/fesm2022/lucca-front-ng-page-header.mjs.map +1 -1
  142. package/fesm2022/lucca-front-ng-pagination.mjs +13 -16
  143. package/fesm2022/lucca-front-ng-pagination.mjs.map +1 -1
  144. package/fesm2022/lucca-front-ng-plg-push.mjs +6 -6
  145. package/fesm2022/lucca-front-ng-plg-push.mjs.map +1 -1
  146. package/fesm2022/lucca-front-ng-popover.mjs +17 -17
  147. package/fesm2022/lucca-front-ng-popover2.mjs +15 -16
  148. package/fesm2022/lucca-front-ng-popover2.mjs.map +1 -1
  149. package/fesm2022/lucca-front-ng-popup.mjs +10 -10
  150. package/fesm2022/lucca-front-ng-progress-bar.mjs +8 -7
  151. package/fesm2022/lucca-front-ng-progress-bar.mjs.map +1 -1
  152. package/fesm2022/lucca-front-ng-progress-stepper.mjs +9 -9
  153. package/fesm2022/lucca-front-ng-progress-stepper.mjs.map +1 -1
  154. package/fesm2022/lucca-front-ng-read-more.mjs +17 -12
  155. package/fesm2022/lucca-front-ng-read-more.mjs.map +1 -1
  156. package/fesm2022/lucca-front-ng-resource-card.mjs +21 -20
  157. package/fesm2022/lucca-front-ng-resource-card.mjs.map +1 -1
  158. package/fesm2022/lucca-front-ng-safe-content.mjs +10 -10
  159. package/fesm2022/lucca-front-ng-scroll-box.mjs +6 -5
  160. package/fesm2022/lucca-front-ng-scroll-box.mjs.map +1 -1
  161. package/fesm2022/lucca-front-ng-scroll.mjs +9 -9
  162. package/fesm2022/lucca-front-ng-scroll.mjs.map +1 -1
  163. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs +12 -12
  164. package/fesm2022/lucca-front-ng-segmented-control-tabs.mjs.map +1 -1
  165. package/fesm2022/lucca-front-ng-segmented-control.mjs +17 -14
  166. package/fesm2022/lucca-front-ng-segmented-control.mjs.map +1 -1
  167. package/fesm2022/lucca-front-ng-select.mjs +22 -22
  168. package/fesm2022/lucca-front-ng-select.mjs.map +1 -1
  169. package/fesm2022/lucca-front-ng-sidepanel.mjs +7 -7
  170. package/fesm2022/lucca-front-ng-simple-select.mjs +53 -39
  171. package/fesm2022/lucca-front-ng-simple-select.mjs.map +1 -1
  172. package/fesm2022/lucca-front-ng-skeleton.mjs +1 -237
  173. package/fesm2022/lucca-front-ng-skeleton.mjs.map +1 -1
  174. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs +11 -11
  175. package/fesm2022/lucca-front-ng-software-icon-wrapper.mjs.map +1 -1
  176. package/fesm2022/lucca-front-ng-software-icon.mjs +8 -7
  177. package/fesm2022/lucca-front-ng-software-icon.mjs.map +1 -1
  178. package/fesm2022/lucca-front-ng-sortable-list.mjs +13 -13
  179. package/fesm2022/lucca-front-ng-sortable-list.mjs.map +1 -1
  180. package/fesm2022/lucca-front-ng-status-badge.mjs +6 -6
  181. package/fesm2022/lucca-front-ng-status-badge.mjs.map +1 -1
  182. package/fesm2022/lucca-front-ng-table-of-content.mjs +6 -6
  183. package/fesm2022/lucca-front-ng-tag.mjs +1 -72
  184. package/fesm2022/lucca-front-ng-tag.mjs.map +1 -1
  185. package/fesm2022/lucca-front-ng-text-flow.mjs +4 -4
  186. package/fesm2022/lucca-front-ng-text-flow.mjs.map +1 -1
  187. package/fesm2022/lucca-front-ng-time.mjs +46 -47
  188. package/fesm2022/lucca-front-ng-time.mjs.map +1 -1
  189. package/fesm2022/lucca-front-ng-title.mjs +24 -14
  190. package/fesm2022/lucca-front-ng-title.mjs.map +1 -1
  191. package/fesm2022/lucca-front-ng-toast.mjs +13 -14
  192. package/fesm2022/lucca-front-ng-toast.mjs.map +1 -1
  193. package/fesm2022/lucca-front-ng-tooltip.mjs +1 -556
  194. package/fesm2022/lucca-front-ng-tooltip.mjs.map +1 -1
  195. package/fesm2022/lucca-front-ng-tree-select.mjs +58 -42
  196. package/fesm2022/lucca-front-ng-tree-select.mjs.map +1 -1
  197. package/fesm2022/lucca-front-ng-user-popover.mjs +22 -19
  198. package/fesm2022/lucca-front-ng-user-popover.mjs.map +1 -1
  199. package/fesm2022/lucca-front-ng-user.mjs +75 -73
  200. package/fesm2022/lucca-front-ng-user.mjs.map +1 -1
  201. package/fesm2022/lucca-front-ng-vertical-navigation.mjs +21 -22
  202. package/fesm2022/lucca-front-ng-vertical-navigation.mjs.map +1 -1
  203. package/package.json +12 -4
  204. package/schematics/action-icon/migration.spec.js +2 -2
  205. package/schematics/alignment-utilities/migration.spec.js +2 -2
  206. package/schematics/cdn-urls/migration.spec.js +2 -2
  207. package/schematics/class-prefix/migration.spec.js +2 -2
  208. package/schematics/color-text/migration.spec.js +2 -2
  209. package/schematics/component-path/migration.spec.js +2 -2
  210. package/schematics/deprecated-resolver/migration.spec.js +1 -1
  211. package/schematics/empty-state-title/migration.spec.js +1 -1
  212. package/schematics/lib/migration-test.js +6 -1
  213. package/schematics/lu-button/migration.spec.js +1 -1
  214. package/schematics/lu-container/migration.spec.js +1 -1
  215. package/schematics/lu-grid/migration.js +24 -16
  216. package/schematics/lu-grid/migration.spec.js +1 -1
  217. package/schematics/lu-icon/migration.spec.js +1 -1
  218. package/schematics/lu-loading/migration.spec.js +1 -1
  219. package/schematics/lu-select/migration.spec.js +1 -1
  220. package/schematics/lu-text-input/migration.spec.js +1 -1
  221. package/schematics/new-icons/migration.spec.js +2 -2
  222. package/schematics/palettes/index.js +28 -8
  223. package/schematics/palettes/migration.spec.js +2 -2
  224. package/schematics/tokens-radius/migration.spec.js +2 -2
  225. package/schematics/tokens-spacing/migration.spec.js +2 -2
  226. package/schematics/tokens-typo/migration.spec.js +2 -2
  227. package/src/_components.scss +1 -0
  228. package/src/components/_listbox.scss +8 -0
  229. package/src/components/_picker.scss +0 -34
  230. package/src/components/_popover.scss +1 -1
  231. package/src/components/_popup.scss +6 -6
  232. package/src/components/_sidepanel.scss +1 -1
  233. package/src/definitions/option/_option-item.scss +1 -8
  234. package/title/README.md +22 -7
  235. package/types/lucca-front-ng-app-layout.d.ts +1 -1
  236. package/types/lucca-front-ng-approbation-inbox.d.ts +142 -0
  237. package/types/lucca-front-ng-box.d.ts +4 -4
  238. package/types/lucca-front-ng-breadcrumbs.d.ts +1 -1
  239. package/types/lucca-front-ng-bubble-icon.d.ts +1 -1
  240. package/types/lucca-front-ng-bubble-illustration.d.ts +1 -1
  241. package/types/lucca-front-ng-callout.d.ts +9 -9
  242. package/types/lucca-front-ng-chip.d.ts +3 -3
  243. package/types/lucca-front-ng-clear.d.ts +2 -2
  244. package/types/lucca-front-ng-code.d.ts +1 -1
  245. package/types/lucca-front-ng-color.d.ts +1 -1
  246. package/types/lucca-front-ng-comment.d.ts +6 -5
  247. package/types/lucca-front-ng-container.d.ts +2 -2
  248. package/types/lucca-front-ng-core-select-api.d.ts +10 -4
  249. package/types/lucca-front-ng-core-select-department.d.ts +2 -2
  250. package/types/lucca-front-ng-core-select-establishment.d.ts +3 -1
  251. package/types/lucca-front-ng-core-select-job-qualification.d.ts +2 -0
  252. package/types/lucca-front-ng-core-select-legal-units.d.ts +3 -1
  253. package/types/lucca-front-ng-core-select-occupation-category.d.ts +2 -0
  254. package/types/lucca-front-ng-core-select-user.d.ts +4 -3
  255. package/types/lucca-front-ng-core-select.d.ts +82 -16
  256. package/types/lucca-front-ng-core.d.ts +77 -3
  257. package/types/lucca-front-ng-data-table.d.ts +14 -14
  258. package/types/lucca-front-ng-date.d.ts +1 -1
  259. package/types/lucca-front-ng-date2.d.ts +19 -19
  260. package/types/lucca-front-ng-department.d.ts +2 -2
  261. package/types/lucca-front-ng-dialog.d.ts +7 -6
  262. package/types/lucca-front-ng-divider.d.ts +3 -3
  263. package/types/lucca-front-ng-dropdown.d.ts +2 -2
  264. package/types/lucca-front-ng-empty-state.d.ts +15 -6
  265. package/types/lucca-front-ng-establishment.d.ts +2 -2
  266. package/types/lucca-front-ng-file-upload.d.ts +22 -11
  267. package/types/lucca-front-ng-filter-pills.d.ts +43 -3
  268. package/types/lucca-front-ng-footer.d.ts +4 -4
  269. package/types/lucca-front-ng-form-field.d.ts +10 -10
  270. package/types/lucca-front-ng-form-header.d.ts +1 -1
  271. package/types/lucca-front-ng-form-label.d.ts +5 -9
  272. package/types/lucca-front-ng-form.d.ts +2 -2
  273. package/types/lucca-front-ng-forms-phone-number-input.d.ts +5 -5
  274. package/types/lucca-front-ng-forms-rich-text-input.d.ts +9 -5
  275. package/types/lucca-front-ng-forms.d.ts +50 -37
  276. package/types/lucca-front-ng-gauge.d.ts +6 -6
  277. package/types/lucca-front-ng-grid.d.ts +8 -8
  278. package/types/lucca-front-ng-highlight-data.d.ts +3 -5
  279. package/types/lucca-front-ng-highlight-section.d.ts +44 -0
  280. package/types/lucca-front-ng-horizontal-navigation.d.ts +4 -4
  281. package/types/lucca-front-ng-impersonation.d.ts +1 -1
  282. package/types/lucca-front-ng-index-table.d.ts +12 -12
  283. package/types/lucca-front-ng-inline-message.d.ts +1 -1
  284. package/types/lucca-front-ng-link.d.ts +4 -4
  285. package/types/lucca-front-ng-listbox.d.ts +33 -13
  286. package/types/lucca-front-ng-listing.d.ts +9 -9
  287. package/types/lucca-front-ng-loading.d.ts +3 -3
  288. package/types/lucca-front-ng-main-layout.d.ts +40 -9
  289. package/types/lucca-front-ng-modal.d.ts +1 -1
  290. package/types/lucca-front-ng-multi-select.d.ts +33 -7
  291. package/types/lucca-front-ng-numeric-badge.d.ts +1 -46
  292. package/types/lucca-front-ng-option.d.ts +2 -0
  293. package/types/lucca-front-ng-page-header.d.ts +2 -2
  294. package/types/lucca-front-ng-pagination.d.ts +5 -5
  295. package/types/lucca-front-ng-plg-push.d.ts +1 -1
  296. package/types/lucca-front-ng-popover2.d.ts +14 -14
  297. package/types/lucca-front-ng-progress-bar.d.ts +2 -2
  298. package/types/lucca-front-ng-progress-stepper.d.ts +1 -1
  299. package/types/lucca-front-ng-read-more.d.ts +9 -4
  300. package/types/lucca-front-ng-resource-card.d.ts +6 -6
  301. package/types/lucca-front-ng-scroll-box.d.ts +1 -1
  302. package/types/lucca-front-ng-scroll.d.ts +1 -1
  303. package/types/lucca-front-ng-segmented-control-tabs.d.ts +2 -2
  304. package/types/lucca-front-ng-segmented-control.d.ts +5 -3
  305. package/types/lucca-front-ng-select.d.ts +2 -1
  306. package/types/lucca-front-ng-simple-select.d.ts +6 -5
  307. package/types/lucca-front-ng-skeleton.d.ts +1 -158
  308. package/types/lucca-front-ng-software-icon-wrapper.d.ts +3 -3
  309. package/types/lucca-front-ng-software-icon.d.ts +2 -2
  310. package/types/lucca-front-ng-sortable-list.d.ts +5 -5
  311. package/types/lucca-front-ng-status-badge.d.ts +1 -1
  312. package/types/lucca-front-ng-tag.d.ts +1 -53
  313. package/types/lucca-front-ng-time.d.ts +17 -17
  314. package/types/lucca-front-ng-title.d.ts +4 -4
  315. package/types/lucca-front-ng-toast.d.ts +1 -1
  316. package/types/lucca-front-ng-tooltip.d.ts +1 -80
  317. package/types/lucca-front-ng-tree-select.d.ts +3 -4
  318. package/types/lucca-front-ng-user.d.ts +8 -6
  319. package/types/lucca-front-ng-vertical-navigation.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-tooltip.mjs","sources":["../../../packages/ng/tooltip/animation/tooltip.animation.ts","../../../packages/ng/tooltip/panel/tooltip-panel.component.ts","../../../packages/ng/tooltip/panel/tooltip-panel.component.html","../../../packages/ng/tooltip/trigger/tooltip-visibility.observer.ts","../../../packages/ng/tooltip/trigger/tooltip-trigger.directive.ts","../../../packages/ng/tooltip/trigger/tooltip-trigger.module.ts","../../../packages/ng/tooltip/tooltip.module.ts","../../../packages/ng/tooltip/lucca-front-ng-tooltip.ts"],"sourcesContent":["import { trigger, state, style, animate, transition, AnimationTriggerMetadata } from '@angular/animations';\n\nexport const luTransformTooltip: AnimationTriggerMetadata = trigger('transformTooltip', [\n\tstate(\n\t\t'enter',\n\t\tstyle({\n\t\t\topacity: 1,\n\t\t\ttransform: `scale(1)`,\n\t\t}),\n\t),\n\ttransition('void => *', [\n\t\tstyle({\n\t\t\topacity: 0,\n\t\t\ttransform: `scale(0)`,\n\t\t}),\n\t\tanimate(`150ms cubic-bezier(0.25, 0.8, 0.25, 1)`),\n\t]),\n\ttransition('* => void', [animate('50ms 100ms linear', style({ opacity: 0 }))]),\n]);\n","import { HorizontalConnectionPos, VerticalConnectionPos } from '@angular/cdk/overlay';\nimport { ChangeDetectionStrategy, Component, DestroyRef, inject, signal } from '@angular/core';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { Subject } from 'rxjs';\n\n@Component({\n\tselector: 'lu-tooltip-panel',\n\ttemplateUrl: './tooltip-panel.component.html',\n\tstyleUrl: './tooltip-panel.component.scss',\n\thost: {\n\t\trole: 'tooltip',\n\t\t'(mouseenter)': 'mouseEnter$.next()',\n\t\t'(mouseleave)': 'mouseLeave$.next()',\n\t},\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LuTooltipPanelComponent {\n\treadonly destroyRef = inject(DestroyRef);\n\n\treadonly mouseEnter$ = new Subject<void>();\n\treadonly mouseLeave$ = new Subject<void>();\n\n\treadonly content = signal<string | SafeHtml | null>(null);\n\n\treadonly contentPositionClasses = signal<Record<string, boolean>>({});\n\n\tsetPanelPosition(posX: HorizontalConnectionPos, posY: VerticalConnectionPos): void {\n\t\tthis.contentPositionClasses.set({\n\t\t\t'is-before': posX === 'end',\n\t\t\t'is-after': posX === 'start',\n\t\t\t'is-above': posY === 'bottom',\n\t\t\t'is-below': posY === 'top',\n\t\t});\n\t}\n}\n","@if (content(); as content) {\n\t<div class=\"tooltip\" [class]=\"contentPositionClasses()\" [innerHtml]=\"content\"></div>\n}\n","import { Injectable } from '@angular/core';\n\n/**\n * Single, shared IntersectionObserver used by every tooltip to defer its first ellipsis\n * measurement until the host element is near the viewport.\n *\n * One observer for the whole page is far cheaper than one IntersectionObserver per tooltip when\n * many tooltips are created at once (e.g. a large table being (re)rendered): the browser then\n * delivers a single batched callback instead of one per element.\n */\n@Injectable({ providedIn: 'root' })\nexport class TooltipVisibilityObserver {\n\t#observer?: IntersectionObserver;\n\treadonly #callbacks = new WeakMap<Element, () => void>();\n\n\t/** Calls `onVisible` once — the first time `element` comes near the viewport — then stops observing it. */\n\tobserveOnce(element: Element, onVisible: () => void): void {\n\t\tthis.#callbacks.set(element, onVisible);\n\t\tthis.#getObserver().observe(element);\n\t}\n\n\tunobserve(element: Element): void {\n\t\tthis.#callbacks.delete(element);\n\t\tthis.#observer?.unobserve(element);\n\t}\n\n\t// Created lazily so the observer is only instantiated in the browser, on first use.\n\t#getObserver(): IntersectionObserver {\n\t\treturn (this.#observer ??= new IntersectionObserver(\n\t\t\t(entries) => {\n\t\t\t\tfor (const entry of entries) {\n\t\t\t\t\tif (!entry.isIntersecting) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tconst onVisible = this.#callbacks.get(entry.target);\n\t\t\t\t\tthis.unobserve(entry.target);\n\t\t\t\t\tonVisible?.();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ rootMargin: '100px' },\n\t\t));\n\t}\n}\n","import {\n\tFlexibleConnectedPositionStrategy,\n\tFlexibleConnectedPositionStrategyOrigin,\n\tHorizontalConnectionPos,\n\tOriginConnectionPosition,\n\tOverlay,\n\tOverlayConnectionPosition,\n\tOverlayRef,\n\tVerticalConnectionPos,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n\tafterRenderEffect,\n\tbooleanAttribute,\n\tcomputed,\n\tDestroyRef,\n\tDirective,\n\teffect,\n\tEffectRef,\n\tElementRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tnumberAttribute,\n\tOnDestroy,\n\tRenderer2,\n\tsignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { SafeHtml } from '@angular/platform-browser';\nimport { getPushPanelViewportMargin, isNil, isNotNil, ɵeffectWithDeps } from '@lucca-front/ng/core';\nimport { LuPopoverPosition } from '@lucca-front/ng/popover';\nimport { startWith, timer } from 'rxjs';\nimport { debounce, filter, map, tap } from 'rxjs/operators';\nimport { LuTooltipPanelComponent } from '../panel';\nimport { TooltipVisibilityObserver } from './tooltip-visibility.observer';\n\nexport interface LuTooltipAnchorRef {\n\tgetElementRef(): ElementRef;\n}\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[luTooltip]',\n\texportAs: 'luTooltip',\n\thost: {\n\t\t'[attr.aria-describedby]': 'ariaDescribedBy()',\n\t\t'[attr.id]': 'id()',\n\t\t'(mouseenter)': 'onMouseEnter()',\n\t\t'(mouseleave)': 'onMouseLeave()',\n\t\t'(focus)': 'onFocus()',\n\t\t'(blur)': 'onBlur()',\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t},\n})\nexport class LuTooltipTriggerDirective implements OnDestroy {\n\treadonly #overlay = inject(Overlay);\n\treadonly #host = inject<ElementRef<HTMLElement>>(ElementRef);\n\treadonly #renderer = inject(Renderer2);\n\treadonly #document = inject(DOCUMENT);\n\treadonly #injector = inject(Injector);\n\treadonly #destroyRef = inject(DestroyRef);\n\treadonly #visibilityObserver = inject(TooltipVisibilityObserver);\n\n\treadonly luTooltipInput = input<string | SafeHtml>('', { alias: 'luTooltip' });\n\treadonly luTooltip = linkedSignal<string | SafeHtml>(() => this.luTooltipInput());\n\n\treadonly luTooltipEnterDelay = input(300, { transform: numberAttribute });\n\treadonly luTooltipLeaveDelay = input(100, { transform: numberAttribute });\n\treadonly luTooltipDisabled = input(false, { transform: booleanAttribute });\n\treadonly luTooltipOnlyForDisplay = input(false, { transform: booleanAttribute });\n\treadonly luTooltipPosition = input<LuPopoverPosition>('above');\n\n\treadonly luTooltipWhenEllipsisInput = input(false, { alias: 'luTooltipWhenEllipsis', transform: booleanAttribute });\n\treadonly luTooltipWhenEllipsis = linkedSignal(() => this.luTooltipWhenEllipsisInput());\n\n\treadonly luTooltipAnchor = input<FlexibleConnectedPositionStrategyOrigin | LuTooltipAnchorRef | null | undefined>(this.#host);\n\treadonly id = input<string>(`${this.#host.nativeElement.tagName.toLowerCase()}-tooltip-${nextId++}`);\n\n\treadonly ariaDescribedBy = computed(() => {\n\t\tif (this.luTooltipDisabled() || this.luTooltipWhenEllipsis() || this.luTooltipOnlyForDisplay()) {\n\t\t\treturn null;\n\t\t}\n\t\treturn `${this.id()}-panel`;\n\t});\n\n\toverlayRef?: OverlayRef;\n\n\t// 0 until the element first appears; bumped for the initial measurement and on every real\n\t// size/content change. Scrolling in and out of view does NOT bump it (see #armMeasurementObservers).\n\treadonly #measureTrigger = signal(0);\n\n\t// guards the one-time setup of the persistent resize/mutation observers\n\t#measurementObserversArmed = false;\n\n\t// the IntersectionObserver callback can fire after the view is destroyed; avoid touching\n\t// the destroyed injector (NG0911) when that happens\n\t#destroyed = false;\n\n\t// written only from the `read` phase of the afterRenderEffect below\n\treadonly #hasEllipsis = signal(false);\n\n\t// reusable hidden clone, one per directive, used to measure the unconstrained width\n\t#clone?: HTMLDivElement;\n\n\treadonly #action = signal<'open' | 'close' | null>(null);\n\treadonly #realAction = linkedSignal<'open' | 'close' | null, 'open' | 'close' | null>({\n\t\tsource: this.#action,\n\t\tcomputation: (action, previous): 'open' | 'close' | null => {\n\t\t\tif (!action || action === 'close') {\n\t\t\t\treturn action;\n\t\t\t}\n\n\t\t\t// We only filter open events because even if it's disabled while opened,\n\t\t\t// we want the tooltip to be able to close itself no matter what\n\t\t\tif (this.luTooltipDisabled()) {\n\t\t\t\treturn previous?.value ?? null;\n\t\t\t}\n\n\t\t\tif (this.luTooltipWhenEllipsis()) {\n\t\t\t\treturn this.#hasEllipsis() ? 'open' : (previous?.value ?? null);\n\t\t\t}\n\n\t\t\treturn 'open';\n\t\t},\n\t});\n\n\t#effectRef?: EffectRef;\n\n\tconstructor() {\n\t\tthis.#destroyRef.onDestroy(() => (this.#destroyed = true));\n\n\t\t// Action debounce pipeline — kept as Observable since signals can't debounce\n\t\ttoObservable(this.#realAction)\n\t\t\t.pipe(\n\t\t\t\tfilter(isNotNil),\n\t\t\t\tdebounce((action) => timer(action === 'open' ? this.luTooltipEnterDelay() : this.luTooltipLeaveDelay())),\n\t\t\t\ttap((event) => {\n\t\t\t\t\tif (event === 'open') {\n\t\t\t\t\t\tthis.openTooltip();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.closeTooltip();\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntilDestroyed(),\n\t\t\t)\n\t\t\t.subscribe();\n\n\t\teffect(() => {\n\t\t\tif (!this.luTooltipDisabled() && (!this.luTooltipWhenEllipsis() || this.#hasEllipsis())) {\n\t\t\t\tthis.setAccessibilityProperties(0);\n\t\t\t} else {\n\t\t\t\tthis.setAccessibilityProperties(null);\n\t\t\t}\n\t\t});\n\n\t\t// Defer the first measurement until the element is near the viewport, then stop tracking\n\t\t// visibility: scrolling must not re-measure, so we arm the resize/mutation observers once.\n\t\t// A single shared IntersectionObserver handles every tooltip (see TooltipVisibilityObserver).\n\t\teffect((onCleanup) => {\n\t\t\tif (!this.luTooltipWhenEllipsis() || this.luTooltipDisabled() || this.#measurementObserversArmed) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst el = this.#host.nativeElement;\n\t\t\tthis.#visibilityObserver.observeOnce(el, () => this.#armMeasurementObservers());\n\n\t\t\tonCleanup(() => this.#visibilityObserver.unobserve(el));\n\t\t});\n\n\t\t// Ellipsis measurement, split across afterRenderEffect phases so that — across every tooltip\n\t\t// on the page — all DOM writes happen together, then all geometry reads happen together.\n\t\t// This keeps the whole batch to a single forced reflow instead of one reflow per element.\n\t\tafterRenderEffect({\n\t\t\tearlyRead: () => {\n\t\t\t\t// reading the trigger registers the dependency; 0 means \"not measured yet\"\n\t\t\t\tconst measured = this.#measureTrigger() > 0;\n\t\t\t\tconst shouldMeasure = measured && !this.luTooltipDisabled() && this.luTooltipWhenEllipsis();\n\t\t\t\tif (!shouldMeasure) {\n\t\t\t\t\treturn { measure: false } as const;\n\t\t\t\t}\n\t\t\t\tconst host = this.#host.nativeElement;\n\t\t\t\tconst hostStyle = getComputedStyle(host);\n\t\t\t\tif (hostStyle.textOverflow !== 'ellipsis') {\n\t\t\t\t\treturn { measure: false } as const;\n\t\t\t\t}\n\t\t\t\treturn { measure: true, host, hostStyle } as const;\n\t\t\t},\n\t\t\twrite: (earlyReadResult) => {\n\t\t\t\tconst snapshot = earlyReadResult();\n\t\t\t\tif (!snapshot.measure) {\n\t\t\t\t\treturn { measure: false } as const;\n\t\t\t\t}\n\t\t\t\tconst clone = (this.#clone ??= this.#createClone());\n\t\t\t\tthis.#applyClonedStyles(clone, snapshot.hostStyle);\n\t\t\t\tclone.innerHTML = snapshot.host.innerHTML;\n\t\t\t\treturn { measure: true, host: snapshot.host, clone } as const;\n\t\t\t},\n\t\t\tread: (writeResult) => {\n\t\t\t\tconst measurement = writeResult();\n\t\t\t\tif (!measurement.measure) {\n\t\t\t\t\tthis.#hasEllipsis.set(false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst cloneWidth = measurement.clone.getBoundingClientRect().width;\n\t\t\t\tconst hostWidth = measurement.host.getBoundingClientRect().width;\n\t\t\t\t// rounded to 3 decimals to ignore sub-pixel noise\n\t\t\t\tthis.#hasEllipsis.set(Math.round(cloneWidth * 1000) > Math.round(hostWidth * 1000));\n\t\t\t},\n\t\t});\n\n\t\tthis.#destroyRef.onDestroy(() => this.#clone?.remove());\n\t}\n\n\t// Set up — once — the observers that ask for a re-measurement on real size/content changes.\n\t// They stay connected for the directive lifetime (even off-screen), so scrolling never\n\t// re-measures; only an actual resize/mutation does.\n\t#armMeasurementObservers(): void {\n\t\tif (this.#measurementObserversArmed || this.#destroyed) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#measurementObserversArmed = true;\n\n\t\tconst el = this.#host.nativeElement;\n\t\tconst bump = () => this.#measureTrigger.update((v) => v + 1);\n\n\t\tconst resizeObserver = new ResizeObserver(() => bump());\n\t\tresizeObserver.observe(el);\n\n\t\tconst mutationObserver = new MutationObserver(() => bump());\n\t\tmutationObserver.observe(el, { characterData: true, subtree: true, childList: true });\n\n\t\tthis.#destroyRef.onDestroy(() => {\n\t\t\tresizeObserver.disconnect();\n\t\t\tmutationObserver.disconnect();\n\t\t});\n\n\t\t// initial measurement now that the element has appeared\n\t\tbump();\n\t}\n\n\t#createClone(): HTMLDivElement {\n\t\tconst clone = this.#document.createElement('div');\n\t\tclone.setAttribute('aria-hidden', 'true');\n\t\tObject.assign(clone.style, {\n\t\t\tinlineSize: 'fit-content',\n\t\t\twhiteSpace: 'nowrap',\n\t\t\t// `fixed` + pinned origin keeps the (potentially very wide) clone out of the\n\t\t\t// document's scrollable overflow, so measuring never flashes a scrollbar.\n\t\t\tposition: 'fixed',\n\t\t\tinsetBlockStart: '0',\n\t\t\tinsetInlineStart: '0',\n\t\t\tvisibility: 'hidden',\n\t\t\tpointerEvents: 'none',\n\t\t\tcontain: 'layout',\n\t\t});\n\t\tthis.#document.body.appendChild(clone);\n\t\treturn clone;\n\t}\n\n\t#applyClonedStyles(clone: HTMLDivElement, hostStyle: CSSStyleDeclaration): void {\n\t\tconst { padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize } = hostStyle;\n\t\tObject.assign(clone.style, { padding, borderWidth, borderStyle, boxSizing, fontFamily, fontWeight, fontStyle, fontSize });\n\t}\n\n\tonMouseEnter() {\n\t\tthis.#action.set('open');\n\t}\n\n\tonMouseLeave() {\n\t\tthis.#action.set('close');\n\t}\n\n\tonFocus() {\n\t\tif (this.#host.nativeElement.getAttribute('aria-expanded') !== 'true') {\n\t\t\tthis.#action.set('open');\n\t\t}\n\t}\n\n\tonBlur() {\n\t\tthis.#action.set('close');\n\t}\n\n\tonEscape(event: Event) {\n\t\tevent.stopPropagation();\n\t\tthis.#action.set(null);\n\t\tthis.closeTooltip();\n\t}\n\n\trequestOpen() {\n\t\tthis.#action.set('open');\n\t}\n\n\trequestClose() {\n\t\tthis.#action.set('close');\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis.closeTooltip();\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.dispose();\n\t\t\tdelete this.overlayRef;\n\t\t}\n\t}\n\n\tprivate prepareOverlay(): void {\n\t\tif (this.overlayRef) {\n\t\t\treturn;\n\t\t}\n\t\tthis.overlayRef = this.#overlay.create({\n\t\t\tscrollStrategy: this.#overlay.scrollStrategies.close(),\n\t\t\tdisposeOnNavigation: true,\n\t\t});\n\t\tconst describedBy = this.ariaDescribedBy();\n\t\tif (describedBy !== null) {\n\t\t\tthis.overlayRef.overlayElement.id = describedBy;\n\t\t}\n\t}\n\n\tprivate openTooltip(): void {\n\t\tif (this.overlayRef?.hasAttached()) {\n\t\t\treturn;\n\t\t}\n\t\tconst position = this.legacyPositionBuilder();\n\t\tif (!this.overlayRef) {\n\t\t\tthis.overlayRef = this.#overlay.create({\n\t\t\t\tpositionStrategy: position,\n\t\t\t\tscrollStrategy: this.#overlay.scrollStrategies.close(),\n\t\t\t\tdisposeOnNavigation: true,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.overlayRef.updatePositionStrategy(position);\n\t\t}\n\t\tconst portal = new ComponentPortal(LuTooltipPanelComponent);\n\t\tconst ref = this.overlayRef.attach(portal);\n\t\tposition.positionChanges\n\t\t\t.pipe(\n\t\t\t\ttakeUntilDestroyed(this.#destroyRef),\n\t\t\t\tmap(({ connectionPair }) => connectionPair),\n\t\t\t\tstartWith(position.positions[0]),\n\t\t\t)\n\t\t\t.subscribe(({ overlayX, overlayY }) => {\n\t\t\t\tref.instance.setPanelPosition(overlayX, overlayY);\n\t\t\t});\n\n\t\tif (this.luTooltip()) {\n\t\t\tthis.#effectRef = ɵeffectWithDeps(\n\t\t\t\t[this.luTooltip],\n\t\t\t\t(luTooltip) => {\n\t\t\t\t\tref.instance.content.set(luTooltip);\n\t\t\t\t},\n\t\t\t\t{ injector: this.#injector },\n\t\t\t);\n\t\t} else if (this.luTooltipWhenEllipsis()) {\n\t\t\tref.instance.content.set(this.#host.nativeElement.innerText);\n\t\t} else {\n\t\t\tref.instance.content.set('');\n\t\t}\n\n\t\tref.instance.mouseLeave$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.#action.set('close'));\n\t\tref.instance.mouseEnter$.pipe(takeUntilDestroyed(ref.instance.destroyRef)).subscribe(() => this.#action.set('open'));\n\t}\n\n\tprivate closeTooltip(): void {\n\t\tif (this.overlayRef) {\n\t\t\tthis.overlayRef.detach();\n\t\t}\n\t\tthis.#effectRef?.destroy();\n\t}\n\n\tprivate setAccessibilityProperties(tabindex: number | null): void {\n\t\tif (tabindex === null) {\n\t\t\tthis.#renderer.removeAttribute(this.#host.nativeElement, 'tabindex');\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.luTooltipWhenEllipsis() && !this.luTooltipOnlyForDisplay()) {\n\t\t\tthis.prepareOverlay();\n\t\t}\n\n\t\tconst tag = this.#host.nativeElement.tagName.toLowerCase();\n\t\tconst nativelyFocusableTags = ['a', 'button', 'input', 'select', 'textarea'];\n\t\tconst isNativelyFocusableTag = nativelyFocusableTags.includes(tag);\n\n\t\tconst hasATabIndex = this.#host.nativeElement.getAttribute('tabindex') !== null;\n\n\t\tif (!isNativelyFocusableTag && !hasATabIndex) {\n\t\t\tthis.#renderer.setAttribute(this.#host.nativeElement, 'tabindex', tabindex.toString());\n\t\t}\n\n\t\tif (!isNativelyFocusableTag && !this.luTooltipWhenEllipsis() && !this.luTooltipOnlyForDisplay()) {\n\t\t\tthis.#renderer.setAttribute(this.#host.nativeElement, 'role', 'button');\n\t\t}\n\t}\n\n\t// Legacy position builder to handle existing position API\n\tprivate legacyPositionBuilder(): FlexibleConnectedPositionStrategy {\n\t\tconst connectionPosition: OriginConnectionPosition = {\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'top',\n\t\t};\n\n\t\t// Position\n\t\tconst position = this.luTooltipPosition();\n\t\tif (position === 'above') {\n\t\t\tconnectionPosition.originY = 'top';\n\t\t} else if (position === 'below') {\n\t\t\tconnectionPosition.originY = 'bottom';\n\t\t} else if (position === 'before') {\n\t\t\tconnectionPosition.originX = 'start';\n\t\t} else if (position === 'after') {\n\t\t\tconnectionPosition.originX = 'end';\n\t\t}\n\n\t\t// Alignment\n\t\tif (position === 'above' || position === 'below') {\n\t\t\tconnectionPosition.originX = 'center';\n\t\t} else {\n\t\t\tconnectionPosition.originY = 'center';\n\t\t}\n\n\t\tconst overlayPosition: OverlayConnectionPosition = {\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'top',\n\t\t};\n\n\t\tif (position === 'above' || position === 'below') {\n\t\t\toverlayPosition.overlayX = connectionPosition.originX;\n\t\t\toverlayPosition.overlayY = position === 'above' ? 'bottom' : 'top';\n\t\t} else {\n\t\t\toverlayPosition.overlayX = position === 'before' ? 'end' : 'start';\n\t\t\toverlayPosition.overlayY = connectionPosition.originY;\n\t\t}\n\n\t\treturn this.#overlay\n\t\t\t.position()\n\t\t\t.flexibleConnectedTo(this.#resolveAnchor())\n\t\t\t.withViewportMargin(getPushPanelViewportMargin(this.#host.nativeElement))\n\t\t\t.withPositions([\n\t\t\t\t{\n\t\t\t\t\toriginX: connectionPosition.originX,\n\t\t\t\t\toriginY: connectionPosition.originY,\n\t\t\t\t\toverlayX: overlayPosition.overlayX,\n\t\t\t\t\toverlayY: overlayPosition.overlayY,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: connectionPosition.originX,\n\t\t\t\t\toriginY: this.invertVerticalPos(connectionPosition.originY),\n\t\t\t\t\toverlayX: overlayPosition.overlayX,\n\t\t\t\t\toverlayY: this.invertVerticalPos(overlayPosition.overlayY),\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: this.invertHorizontalPos(connectionPosition.originX),\n\t\t\t\t\toriginY: connectionPosition.originY,\n\t\t\t\t\toverlayX: this.invertHorizontalPos(overlayPosition.overlayX),\n\t\t\t\t\toverlayY: overlayPosition.overlayY,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\toriginX: this.invertHorizontalPos(connectionPosition.originX),\n\t\t\t\t\toriginY: this.invertVerticalPos(connectionPosition.originY),\n\t\t\t\t\toverlayX: this.invertHorizontalPos(overlayPosition.overlayX),\n\t\t\t\t\toverlayY: this.invertVerticalPos(overlayPosition.overlayY),\n\t\t\t\t},\n\t\t\t]);\n\t}\n\n\t#resolveAnchor(): FlexibleConnectedPositionStrategyOrigin {\n\t\tconst anchor = this.luTooltipAnchor();\n\n\t\tif (isNil(anchor)) {\n\t\t\treturn this.#host;\n\t\t} else if ('getElementRef' in anchor) {\n\t\t\treturn anchor.getElementRef();\n\t\t} else {\n\t\t\treturn anchor;\n\t\t}\n\t}\n\n\tprivate invertVerticalPos(y: VerticalConnectionPos): VerticalConnectionPos {\n\t\tif (y === 'top') {\n\t\t\treturn 'bottom';\n\t\t} else if (y === 'bottom') {\n\t\t\treturn 'top';\n\t\t}\n\t\treturn y;\n\t}\n\n\tprivate invertHorizontalPos(x: HorizontalConnectionPos): HorizontalConnectionPos {\n\t\tif (x === 'end') {\n\t\t\treturn 'start';\n\t\t} else if (x === 'start') {\n\t\t\treturn 'end';\n\t\t}\n\t\treturn x;\n\t}\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { NgModule } from '@angular/core';\nimport { LuTooltipTriggerDirective } from './tooltip-trigger.directive';\n\n/**\n * @deprecated use `LuTooltipTriggerDirective` instead\n */\n@NgModule({\n\timports: [LuTooltipTriggerDirective, OverlayModule],\n\texports: [LuTooltipTriggerDirective],\n})\nexport class LuTooltipTriggerModule {}\n","import { NgModule } from '@angular/core';\nimport { LuTooltipPanelComponent } from './panel/index';\nimport { LuTooltipTriggerModule } from './trigger/index';\n\n/**\n * @deprecated use `LuTooltipTriggerDirective, LuTooltipPanelComponent` instead\n */\n@NgModule({\n\timports: [LuTooltipTriggerModule, LuTooltipPanelComponent],\n\texports: [LuTooltipTriggerModule, LuTooltipPanelComponent],\n})\nexport class LuTooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵeffectWithDeps"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-tooltip.mjs","sources":["../../../packages/ng/tooltip/lucca-front-ng-tooltip.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAAA;;AAEG"}
@@ -1,7 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, input, linkedSignal, Directive, viewChild, output, booleanAttribute, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
2
+ import { inject, input, linkedSignal, Directive, viewChild, output, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
3
3
  import { ALuSelectInputComponent, ɵCoreSelectPanelElement as _CoreSelectPanelElement, ɵLuOptionComponent as _LuOptionComponent, LuIsOptionSelectedPipe } from '@lucca-front/ng/core-select';
4
4
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { luBooleanAttribute } from '@lucca-front/ng/core';
6
+ import { Treeitem } from '@lucca-front/ng/listbox';
5
7
 
6
8
  class TreeSelectDirective {
7
9
  #select;
@@ -17,50 +19,63 @@ class TreeSelectDirective {
17
19
  // Keep a registry of what has been handled already
18
20
  const itemToNode = new Map();
19
21
  const parentCache = new Map();
20
- const handled = [];
22
+ // Items we are allowed to nest under, so a parent that is missing from `items` can be told
23
+ // apart from one we simply haven't reached yet. Also deduplicates `items`.
24
+ const knownItems = new Set(items);
25
+ const getParent = (item) => {
26
+ if (!parentCache.has(item)) {
27
+ parentCache.set(item, this.groupingFn()(item, items));
28
+ }
29
+ return parentCache.get(item) ?? null;
30
+ };
31
+ const createNode = (item) => {
32
+ const itemNode = {
33
+ node: item,
34
+ children: [],
35
+ };
36
+ itemToNode.set(item, itemNode);
37
+ return itemNode;
38
+ };
39
+ const addRoot = (item) => {
40
+ res.push(createNode(item));
41
+ };
42
+ // Items whose parent node doesn't exist in the resultset yet
43
+ let pending = [...knownItems];
21
44
  // While we haven't handled all the items
22
- while (items.length > handled.length) {
23
- for (const item of items) {
24
- if (itemToNode.has(item)) {
25
- // item already in resultset
45
+ while (pending.length) {
46
+ const stillPending = [];
47
+ for (const item of pending) {
48
+ const parent = getParent(item);
49
+ // Parent null or undefined means it's a root element, and so is an item whose parent
50
+ // isn't part of `items`: filtered out by a search, it will never show up to nest under.
51
+ if (!parent || !knownItems.has(parent)) {
52
+ addRoot(item);
26
53
  continue;
27
54
  }
28
- let parent = null;
29
- if (parentCache.has(item)) {
30
- parent = parentCache.get(item) ?? null;
55
+ const parentNode = itemToNode.get(parent);
56
+ // If the parent is already in the resultset, we can add this
57
+ if (parentNode) {
58
+ parentNode.children?.push(createNode(item));
31
59
  }
32
60
  else {
33
- parent = this.groupingFn()(item, items);
34
- parentCache.set(item, parent);
35
- }
36
- const itemNode = {
37
- node: item,
38
- children: [],
39
- };
40
- // Parent null or undefined means it's a root element
41
- if (!parent) {
42
- res.push(itemNode);
43
- itemToNode.set(item, itemNode);
44
- handled.push(item);
45
- }
46
- else {
47
- const parentNode = itemToNode.get(parent);
48
- // If the parent is already in the resultset, we can add this
49
- if (parentNode) {
50
- parentNode.children?.push(itemNode);
51
- itemToNode.set(item, itemNode);
52
- handled.push(item);
53
- }
54
61
  // Else, we fizzle till the next iteration
62
+ stillPending.push(item);
55
63
  }
56
64
  }
65
+ // A whole pass without progress means the remaining items form a parent cycle: they can
66
+ // never be nested, so display them as roots rather than looping forever.
67
+ if (stillPending.length === pending.length) {
68
+ stillPending.forEach(addRoot);
69
+ break;
70
+ }
71
+ pending = stillPending;
57
72
  }
58
73
  return res;
59
74
  }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
61
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: TreeSelectDirective, isStandalone: true, selector: "lu-simple-select[treeSelect],lu-multi-select[treeSelect]", inputs: { groupingFnInput: { classPropertyName: "groupingFnInput", publicName: "treeSelect", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TreeSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
76
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.8", type: TreeSelectDirective, isStandalone: true, selector: "lu-simple-select[treeSelect],lu-multi-select[treeSelect]", inputs: { groupingFnInput: { classPropertyName: "groupingFnInput", publicName: "treeSelect", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
62
77
  }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeSelectDirective, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TreeSelectDirective, decorators: [{
64
79
  type: Directive,
65
80
  args: [{
66
81
  // eslint-disable-next-line @angular-eslint/directive-selector
@@ -85,9 +100,7 @@ class TreeBranchComponent {
85
100
  this.toggleOne = output();
86
101
  this.selectMany = output();
87
102
  this.unselectMany = output();
88
- this.simpleMode = input(false, { ...(ngDevMode ? { debugName: "simpleMode" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
89
- this.depth = input(1, /* @ts-ignore */
90
- ...(ngDevMode ? [{ debugName: "depth" }] : /* istanbul ignore next */ []));
103
+ this.simpleMode = input(false, { ...(ngDevMode ? { debugName: "simpleMode" } : /* istanbul ignore next */ {}), transform: luBooleanAttribute });
91
104
  if (this.selectInputComponent.selectChildren$) {
92
105
  this.selectInputComponent.selectChildren$?.pipe(takeUntilDestroyed()).subscribe(() => {
93
106
  if (this.rootOptionRef()?.isHighlighted()) {
@@ -101,7 +114,10 @@ class TreeBranchComponent {
101
114
  });
102
115
  }
103
116
  }
104
- toggle(branchData) {
117
+ toggle(branchData, event) {
118
+ // Options are nested inside their parent's host, so a click bubbles up to every ancestor
119
+ // branch. Stop it here so clicking a child never toggles its parent.
120
+ event?.stopPropagation();
105
121
  if (this.simpleMode() || !branchData.children?.length) {
106
122
  this.toggleOne.emit(branchData.node);
107
123
  }
@@ -133,13 +149,13 @@ class TreeBranchComponent {
133
149
  }
134
150
  return result;
135
151
  }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeBranchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: TreeBranchComponent, isStandalone: true, selector: "lu-tree-branch", inputs: { branch: { classPropertyName: "branch", publicName: "branch", isSignal: true, isRequired: true, transformFunction: null }, optionTpl: { classPropertyName: "optionTpl", publicName: "optionTpl", isSignal: true, isRequired: true, transformFunction: null }, optionIndex: { classPropertyName: "optionIndex", publicName: "optionIndex", isSignal: true, isRequired: true, transformFunction: null }, optionComparer: { classPropertyName: "optionComparer", publicName: "optionComparer", isSignal: true, isRequired: true, transformFunction: null }, selectedOptions: { classPropertyName: "selectedOptions", publicName: "selectedOptions", isSignal: true, isRequired: false, transformFunction: null }, simpleMode: { classPropertyName: "simpleMode", publicName: "simpleMode", isSignal: true, isRequired: false, transformFunction: null }, depth: { classPropertyName: "depth", publicName: "depth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleOne: "toggleOne", selectMany: "selectMany", unselectMany: "unselectMany" }, viewQueries: [{ propertyName: "rootOptionRef", first: true, predicate: ["rootOption"], descendants: true, isSignal: true }], ngImport: i0, template: "<lu-select-option\n\tluCoreSelectPanelElement\n\t#rootOption=\"luCoreSelectPanelElement\"\n\t[style.--components-treeBranch-level]=\"depth()\"\n\t[option]=\"branch().node\"\n\t[optionTpl]=\"optionTpl()\"\n\t[optionIndex]=\"optionIndex()\"\n\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t[isSelected]=\"branch().node | luIsOptionSelected: optionComparer() : selectedOptions()\"\n\t(selected)=\"toggle(branch())\"\n\t(click)=\"toggle(branch())\"\n\t(onlyParent)=\"toggleOne.emit(branch().node)\"\n\t(onlyChildren)=\"selectOnlyChildren(branch())\"\n\t[hasChildren]=\"!simpleMode() && branch().children?.length > 0\"\n/>\n@for (child of branch().children; track $index) {\n\t<lu-tree-branch\n\t\t[depth]=\"depth() + 1\"\n\t\t[branch]=\"child\"\n\t\t[optionTpl]=\"optionTpl()\"\n\t\t[optionIndex]=\"optionIndex() + '-' + $index\"\n\t\t[optionComparer]=\"optionComparer()\"\n\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t[simpleMode]=\"simpleMode()\"\n\t\t(toggleOne)=\"toggleOne.emit($event)\"\n\t\t(selectMany)=\"selectMany.emit($event)\"\n\t\t(unselectMany)=\"unselectMany.emit($event)\"\n\t/>\n}\n", styles: ["@layer components{lu-tree-branch lu-tree-branch lu-select-option{--components-treeBranch-level: 1;--components-options-item-padding-horizontal: calc(var(--pr-t-spacings-100) + var(--pr-t-spacings-100) * var(--components-treeBranch-level)) var(--pr-t-spacings-100)}lu-tree-branch .optionItem-icons{opacity:0}lu-tree-branch .optionItem.is-highlighted .optionItem-icons,lu-tree-branch .optionItem-value:hover .optionItem-icons{opacity:1}}@layer mods{.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option{--components-treeBranch-level: 1;--components-options-item-multiple-padding: calc(1.75rem + var(--pr-t-spacings-100) * var(--components-treeBranch-level))}.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option .optionItem-value:before,.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option .optionItem-value:after{inset-inline-start:calc(var(--pr-t-spacings-100) * var(--components-treeBranch-level))}.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option{margin-block-start:var(--pr-t-spacings-50)}.lu-picker-panel.lu-option-picker-panel.mod-multiple .lu-picker-content-option{gap:0}.lu-picker-panel.lu-option-picker-panel.mod-multiple .lu-picker-content-option>lu-tree-branch:first-of-type>lu-select-option:first-of-type{margin-block-start:0}}\n"], dependencies: [{ kind: "component", type: TreeBranchComponent, selector: "lu-tree-branch", inputs: ["branch", "optionTpl", "optionIndex", "optionComparer", "selectedOptions", "simpleMode", "depth"], outputs: ["toggleOne", "selectMany", "unselectMany"] }, { kind: "directive", type: _CoreSelectPanelElement, selector: "[luCoreSelectPanelElement]", inputs: ["elementId", "isSelected", "option", "disabled"], outputs: ["isSelectedChange", "selected"], exportAs: ["luCoreSelectPanelElement"] }, { kind: "component", type: _LuOptionComponent, selector: "lu-select-option", inputs: ["intl", "optionTpl", "option", "grouping", "hasChildren", "groupIndex", "optionIndex", "scrollIntoViewOptions", "groupTemplateLocation"], outputs: ["onlyParent", "onlyChildren"] }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TreeBranchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: TreeBranchComponent, isStandalone: true, selector: "lu-tree-branch", inputs: { branch: { classPropertyName: "branch", publicName: "branch", isSignal: true, isRequired: true, transformFunction: null }, optionTpl: { classPropertyName: "optionTpl", publicName: "optionTpl", isSignal: true, isRequired: true, transformFunction: null }, optionIndex: { classPropertyName: "optionIndex", publicName: "optionIndex", isSignal: true, isRequired: true, transformFunction: null }, optionComparer: { classPropertyName: "optionComparer", publicName: "optionComparer", isSignal: true, isRequired: true, transformFunction: null }, selectedOptions: { classPropertyName: "selectedOptions", publicName: "selectedOptions", isSignal: true, isRequired: false, transformFunction: null }, simpleMode: { classPropertyName: "simpleMode", publicName: "simpleMode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggleOne: "toggleOne", selectMany: "selectMany", unselectMany: "unselectMany" }, viewQueries: [{ propertyName: "rootOptionRef", first: true, predicate: ["rootOption"], descendants: true, isSignal: true }], ngImport: i0, template: "<lu-select-option\n\tluCoreSelectPanelElement\n\t#rootOption=\"luCoreSelectPanelElement\"\n\t[option]=\"branch().node\"\n\t[optionTpl]=\"optionTpl()\"\n\t[optionIndex]=\"optionIndex()\"\n\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t[isSelected]=\"branch().node | luIsOptionSelected: optionComparer() : selectedOptions()\"\n\t(selected)=\"toggle(branch())\"\n\t(click)=\"toggle(branch(), $event)\"\n\t(onlyParent)=\"toggleOne.emit(branch().node)\"\n\t(onlyChildren)=\"selectOnlyChildren(branch())\"\n\t[hasChildren]=\"!simpleMode() && branch().children?.length > 0\"\n>\n\t@if (branch().children?.length) {\n\t\t<ng-container treeitem>\n\t\t\t@for (child of branch().children; track $index) {\n\t\t\t\t<lu-tree-branch\n\t\t\t\t\t[branch]=\"child\"\n\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t[optionIndex]=\"optionIndex() + '-' + $index\"\n\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t[simpleMode]=\"simpleMode()\"\n\t\t\t\t\t(toggleOne)=\"toggleOne.emit($event)\"\n\t\t\t\t\t(selectMany)=\"selectMany.emit($event)\"\n\t\t\t\t\t(unselectMany)=\"unselectMany.emit($event)\"\n\t\t\t\t/>\n\t\t\t}\n\t\t</ng-container>\n\t}\n</lu-select-option>\n", styles: ["@layer components{lu-tree-branch .optionItem-icons{opacity:0}lu-tree-branch .listboxOption-content .optionItem-icons{margin-inline-start:auto}lu-tree-branch .listboxOption-content:hover .optionItem-icons,lu-tree-branch .listboxOption-content.is-hovered .optionItem-icons{opacity:1}}\n"], dependencies: [{ kind: "component", type: TreeBranchComponent, selector: "lu-tree-branch", inputs: ["branch", "optionTpl", "optionIndex", "optionComparer", "selectedOptions", "simpleMode"], outputs: ["toggleOne", "selectMany", "unselectMany"] }, { kind: "directive", type: _CoreSelectPanelElement, selector: "[luCoreSelectPanelElement]", inputs: ["elementId", "isSelected", "option", "disabled"], outputs: ["isSelectedChange", "selected"], exportAs: ["luCoreSelectPanelElement"] }, { kind: "component", type: _LuOptionComponent, selector: "lu-select-option", inputs: ["intl", "optionTpl", "option", "grouping", "hasChildren", "groupIndex", "optionIndex", "scrollIntoViewOptions", "groupTemplateLocation"], outputs: ["onlyParent", "onlyChildren"] }, { kind: "directive", type: Treeitem, selector: "[treeitem]" }, { kind: "pipe", type: LuIsOptionSelectedPipe, name: "luIsOptionSelected" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
138
154
  }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: TreeBranchComponent, decorators: [{
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: TreeBranchComponent, decorators: [{
140
156
  type: Component,
141
- args: [{ selector: 'lu-tree-branch', imports: [_CoreSelectPanelElement, LuIsOptionSelectedPipe, _LuOptionComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<lu-select-option\n\tluCoreSelectPanelElement\n\t#rootOption=\"luCoreSelectPanelElement\"\n\t[style.--components-treeBranch-level]=\"depth()\"\n\t[option]=\"branch().node\"\n\t[optionTpl]=\"optionTpl()\"\n\t[optionIndex]=\"optionIndex()\"\n\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t[isSelected]=\"branch().node | luIsOptionSelected: optionComparer() : selectedOptions()\"\n\t(selected)=\"toggle(branch())\"\n\t(click)=\"toggle(branch())\"\n\t(onlyParent)=\"toggleOne.emit(branch().node)\"\n\t(onlyChildren)=\"selectOnlyChildren(branch())\"\n\t[hasChildren]=\"!simpleMode() && branch().children?.length > 0\"\n/>\n@for (child of branch().children; track $index) {\n\t<lu-tree-branch\n\t\t[depth]=\"depth() + 1\"\n\t\t[branch]=\"child\"\n\t\t[optionTpl]=\"optionTpl()\"\n\t\t[optionIndex]=\"optionIndex() + '-' + $index\"\n\t\t[optionComparer]=\"optionComparer()\"\n\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t[simpleMode]=\"simpleMode()\"\n\t\t(toggleOne)=\"toggleOne.emit($event)\"\n\t\t(selectMany)=\"selectMany.emit($event)\"\n\t\t(unselectMany)=\"unselectMany.emit($event)\"\n\t/>\n}\n", styles: ["@layer components{lu-tree-branch lu-tree-branch lu-select-option{--components-treeBranch-level: 1;--components-options-item-padding-horizontal: calc(var(--pr-t-spacings-100) + var(--pr-t-spacings-100) * var(--components-treeBranch-level)) var(--pr-t-spacings-100)}lu-tree-branch .optionItem-icons{opacity:0}lu-tree-branch .optionItem.is-highlighted .optionItem-icons,lu-tree-branch .optionItem-value:hover .optionItem-icons{opacity:1}}@layer mods{.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option{--components-treeBranch-level: 1;--components-options-item-multiple-padding: calc(1.75rem + var(--pr-t-spacings-100) * var(--components-treeBranch-level))}.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option .optionItem-value:before,.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option .optionItem-value:after{inset-inline-start:calc(var(--pr-t-spacings-100) * var(--components-treeBranch-level))}.lu-picker-panel.lu-option-picker-panel.mod-multiple lu-tree-branch lu-select-option{margin-block-start:var(--pr-t-spacings-50)}.lu-picker-panel.lu-option-picker-panel.mod-multiple .lu-picker-content-option{gap:0}.lu-picker-panel.lu-option-picker-panel.mod-multiple .lu-picker-content-option>lu-tree-branch:first-of-type>lu-select-option:first-of-type{margin-block-start:0}}\n"] }]
142
- }], ctorParameters: () => [], propDecorators: { rootOptionRef: [{ type: i0.ViewChild, args: ['rootOption', { isSignal: true }] }], branch: [{ type: i0.Input, args: [{ isSignal: true, alias: "branch", required: true }] }], optionTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionTpl", required: true }] }], optionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionIndex", required: true }] }], optionComparer: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionComparer", required: true }] }], selectedOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedOptions", required: false }] }], toggleOne: [{ type: i0.Output, args: ["toggleOne"] }], selectMany: [{ type: i0.Output, args: ["selectMany"] }], unselectMany: [{ type: i0.Output, args: ["unselectMany"] }], simpleMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "simpleMode", required: false }] }], depth: [{ type: i0.Input, args: [{ isSignal: true, alias: "depth", required: false }] }] } });
157
+ args: [{ selector: 'lu-tree-branch', imports: [_CoreSelectPanelElement, LuIsOptionSelectedPipe, _LuOptionComponent, Treeitem], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<lu-select-option\n\tluCoreSelectPanelElement\n\t#rootOption=\"luCoreSelectPanelElement\"\n\t[option]=\"branch().node\"\n\t[optionTpl]=\"optionTpl()\"\n\t[optionIndex]=\"optionIndex()\"\n\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t[isSelected]=\"branch().node | luIsOptionSelected: optionComparer() : selectedOptions()\"\n\t(selected)=\"toggle(branch())\"\n\t(click)=\"toggle(branch(), $event)\"\n\t(onlyParent)=\"toggleOne.emit(branch().node)\"\n\t(onlyChildren)=\"selectOnlyChildren(branch())\"\n\t[hasChildren]=\"!simpleMode() && branch().children?.length > 0\"\n>\n\t@if (branch().children?.length) {\n\t\t<ng-container treeitem>\n\t\t\t@for (child of branch().children; track $index) {\n\t\t\t\t<lu-tree-branch\n\t\t\t\t\t[branch]=\"child\"\n\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t[optionIndex]=\"optionIndex() + '-' + $index\"\n\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t[simpleMode]=\"simpleMode()\"\n\t\t\t\t\t(toggleOne)=\"toggleOne.emit($event)\"\n\t\t\t\t\t(selectMany)=\"selectMany.emit($event)\"\n\t\t\t\t\t(unselectMany)=\"unselectMany.emit($event)\"\n\t\t\t\t/>\n\t\t\t}\n\t\t</ng-container>\n\t}\n</lu-select-option>\n", styles: ["@layer components{lu-tree-branch .optionItem-icons{opacity:0}lu-tree-branch .listboxOption-content .optionItem-icons{margin-inline-start:auto}lu-tree-branch .listboxOption-content:hover .optionItem-icons,lu-tree-branch .listboxOption-content.is-hovered .optionItem-icons{opacity:1}}\n"] }]
158
+ }], ctorParameters: () => [], propDecorators: { rootOptionRef: [{ type: i0.ViewChild, args: ['rootOption', { isSignal: true }] }], branch: [{ type: i0.Input, args: [{ isSignal: true, alias: "branch", required: true }] }], optionTpl: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionTpl", required: true }] }], optionIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionIndex", required: true }] }], optionComparer: [{ type: i0.Input, args: [{ isSignal: true, alias: "optionComparer", required: true }] }], selectedOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedOptions", required: false }] }], toggleOne: [{ type: i0.Output, args: ["toggleOne"] }], selectMany: [{ type: i0.Output, args: ["selectMany"] }], unselectMany: [{ type: i0.Output, args: ["unselectMany"] }], simpleMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "simpleMode", required: false }] }] } });
143
159
 
144
160
  /**
145
161
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-front-ng-tree-select.mjs","sources":["../../../packages/ng/tree-select/tree-select.directive.ts","../../../packages/ng/tree-select/tree-branch/tree-branch.component.ts","../../../packages/ng/tree-select/tree-branch/tree-branch.component.html","../../../packages/ng/tree-select/lucca-front-ng-tree-select.ts"],"sourcesContent":["import { Directive, inject, input, linkedSignal } from '@angular/core';\nimport { ALuSelectInputComponent, TreeGenerator, TreeGroupingFn, TreeNode } from '@lucca-front/ng/core-select';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[treeSelect],lu-multi-select[treeSelect]',\n})\nexport class TreeSelectDirective<T, V> implements TreeGenerator<T, TreeNode<T>> {\n\t#select = inject<ALuSelectInputComponent<T, V>>(ALuSelectInputComponent);\n\n\treadonly groupingFnInput = input.required<TreeGroupingFn<T>>({ alias: 'treeSelect' });\n\n\treadonly groupingFn = linkedSignal(() => this.groupingFnInput());\n\n\tconstructor() {\n\t\tthis.#select.treeGenerator = this;\n\t}\n\n\tgenerateTrees(items: T[]): TreeNode<T>[] {\n\t\tconst res: TreeNode<T>[] = [];\n\t\t// Keep a registry of what has been handled already\n\t\tconst itemToNode = new Map<T, TreeNode<T>>();\n\t\tconst parentCache = new Map<T, T | null>();\n\t\tconst handled: T[] = [];\n\t\t// While we haven't handled all the items\n\t\twhile (items.length > handled.length) {\n\t\t\tfor (const item of items) {\n\t\t\t\tif (itemToNode.has(item)) {\n\t\t\t\t\t// item already in resultset\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tlet parent: T | null = null;\n\t\t\t\tif (parentCache.has(item)) {\n\t\t\t\t\tparent = parentCache.get(item) ?? null;\n\t\t\t\t} else {\n\t\t\t\t\tparent = this.groupingFn()(item, items);\n\t\t\t\t\tparentCache.set(item, parent);\n\t\t\t\t}\n\t\t\t\tconst itemNode: TreeNode<T> = {\n\t\t\t\t\tnode: item,\n\t\t\t\t\tchildren: [],\n\t\t\t\t};\n\t\t\t\t// Parent null or undefined means it's a root element\n\t\t\t\tif (!parent) {\n\t\t\t\t\tres.push(itemNode);\n\t\t\t\t\titemToNode.set(item, itemNode);\n\t\t\t\t\thandled.push(item);\n\t\t\t\t} else {\n\t\t\t\t\tconst parentNode = itemToNode.get(parent);\n\t\t\t\t\t// If the parent is already in the resultset, we can add this\n\t\t\t\t\tif (parentNode) {\n\t\t\t\t\t\tparentNode.children?.push(itemNode);\n\t\t\t\t\t\titemToNode.set(item, itemNode);\n\t\t\t\t\t\thandled.push(item);\n\t\t\t\t\t}\n\t\t\t\t\t// Else, we fizzle till the next iteration\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn res;\n\t}\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, inject, input, output, TemplateRef, Type, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ALuSelectInputComponent, LuIsOptionSelectedPipe, LuOptionComparer, LuOptionContext, TreeNode, ɵCoreSelectPanelElement, ɵLuOptionComponent } from '@lucca-front/ng/core-select';\n\n@Component({\n\tselector: 'lu-tree-branch',\n\timports: [ɵCoreSelectPanelElement, LuIsOptionSelectedPipe, ɵLuOptionComponent],\n\ttemplateUrl: './tree-branch.component.html',\n\tstyleUrl: './tree-branch.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TreeBranchComponent<T> {\n\treadonly selectInputComponent = inject(ALuSelectInputComponent);\n\n\treadonly rootOptionRef = viewChild<ɵCoreSelectPanelElement<T>>('rootOption');\n\n\treadonly branch = input.required<TreeNode<T>>();\n\n\treadonly optionTpl = input.required<TemplateRef<LuOptionContext<T>> | Type<unknown> | undefined>();\n\n\treadonly optionIndex = input.required({ transform: (value: string | number) => `${value}` });\n\n\treadonly optionComparer = input.required<LuOptionComparer<T>>();\n\n\treadonly selectedOptions = input<T[]>([]);\n\n\ttoggleOne = output<T>();\n\n\tselectMany = output<T[]>();\n\n\tunselectMany = output<T[]>();\n\n\treadonly simpleMode = input(false, { transform: booleanAttribute });\n\n\treadonly depth = input(1);\n\n\tconstructor() {\n\t\tif (this.selectInputComponent.selectChildren$) {\n\t\t\tthis.selectInputComponent.selectChildren$?.pipe(takeUntilDestroyed()).subscribe(() => {\n\t\t\t\tif (this.rootOptionRef()?.isHighlighted()) {\n\t\t\t\t\tthis.selectOnlyChildren(this.branch());\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.selectInputComponent.selectParent$?.pipe(takeUntilDestroyed()).subscribe(() => {\n\t\t\t\tif (this.rootOptionRef()?.isHighlighted()) {\n\t\t\t\t\tthis.toggleOne.emit(this.branch().node);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\ttoggle(branchData: TreeNode<T>): void {\n\t\tif (this.simpleMode() || !branchData.children?.length) {\n\t\t\tthis.toggleOne.emit(branchData.node);\n\t\t} else {\n\t\t\tconst flatOptions = this.flattenTree(branchData);\n\t\t\tconst options = flatOptions.filter((option) => !this.selectedOptions().some((so) => this.optionComparer()(so, option)));\n\t\t\tif (options.length > 0) {\n\t\t\t\tthis.selectMany.emit(options);\n\t\t\t} else {\n\t\t\t\tthis.unselectMany.emit(flatOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\tselectOnlyChildren(branchData: TreeNode<T>): void {\n\t\tconst flatOptions = this.flattenTree(branchData, true);\n\t\tconst options = flatOptions.filter((option) => !this.selectedOptions().some((so) => this.optionComparer()(so, option)));\n\t\tif (options.length > 0) {\n\t\t\tthis.selectMany.emit(options);\n\t\t} else {\n\t\t\tthis.unselectMany.emit(flatOptions);\n\t\t}\n\t}\n\n\tflattenTree(branch: TreeNode<T>, excludeRoot = false): T[] {\n\t\tconst result: T[] = excludeRoot ? [] : [branch.node];\n\t\tif (branch.children?.length) {\n\t\t\tresult.push(...branch.children.map((child) => this.flattenTree(child)).flat());\n\t\t}\n\t\treturn result;\n\t}\n}\n","<lu-select-option\n\tluCoreSelectPanelElement\n\t#rootOption=\"luCoreSelectPanelElement\"\n\t[style.--components-treeBranch-level]=\"depth()\"\n\t[option]=\"branch().node\"\n\t[optionTpl]=\"optionTpl()\"\n\t[optionIndex]=\"optionIndex()\"\n\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t[isSelected]=\"branch().node | luIsOptionSelected: optionComparer() : selectedOptions()\"\n\t(selected)=\"toggle(branch())\"\n\t(click)=\"toggle(branch())\"\n\t(onlyParent)=\"toggleOne.emit(branch().node)\"\n\t(onlyChildren)=\"selectOnlyChildren(branch())\"\n\t[hasChildren]=\"!simpleMode() && branch().children?.length > 0\"\n/>\n@for (child of branch().children; track $index) {\n\t<lu-tree-branch\n\t\t[depth]=\"depth() + 1\"\n\t\t[branch]=\"child\"\n\t\t[optionTpl]=\"optionTpl()\"\n\t\t[optionIndex]=\"optionIndex() + '-' + $index\"\n\t\t[optionComparer]=\"optionComparer()\"\n\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t[simpleMode]=\"simpleMode()\"\n\t\t(toggleOne)=\"toggleOne.emit($event)\"\n\t\t(selectMany)=\"selectMany.emit($event)\"\n\t\t(unselectMany)=\"unselectMany.emit($event)\"\n\t/>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵCoreSelectPanelElement","ɵLuOptionComponent"],"mappings":"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"}
1
+ {"version":3,"file":"lucca-front-ng-tree-select.mjs","sources":["../../../packages/ng/tree-select/tree-select.directive.ts","../../../packages/ng/tree-select/tree-branch/tree-branch.component.ts","../../../packages/ng/tree-select/tree-branch/tree-branch.component.html","../../../packages/ng/tree-select/lucca-front-ng-tree-select.ts"],"sourcesContent":["import { Directive, inject, input, linkedSignal } from '@angular/core';\nimport { ALuSelectInputComponent, TreeGenerator, TreeGroupingFn, TreeNode } from '@lucca-front/ng/core-select';\n\n@Directive({\n\t// eslint-disable-next-line @angular-eslint/directive-selector\n\tselector: 'lu-simple-select[treeSelect],lu-multi-select[treeSelect]',\n})\nexport class TreeSelectDirective<T, V> implements TreeGenerator<T, TreeNode<T>> {\n\t#select = inject<ALuSelectInputComponent<T, V>>(ALuSelectInputComponent);\n\n\treadonly groupingFnInput = input.required<TreeGroupingFn<T>>({ alias: 'treeSelect' });\n\n\treadonly groupingFn = linkedSignal(() => this.groupingFnInput());\n\n\tconstructor() {\n\t\tthis.#select.treeGenerator = this;\n\t}\n\n\tgenerateTrees(items: T[]): TreeNode<T>[] {\n\t\tconst res: TreeNode<T>[] = [];\n\t\t// Keep a registry of what has been handled already\n\t\tconst itemToNode = new Map<T, TreeNode<T>>();\n\t\tconst parentCache = new Map<T, T | null>();\n\t\t// Items we are allowed to nest under, so a parent that is missing from `items` can be told\n\t\t// apart from one we simply haven't reached yet. Also deduplicates `items`.\n\t\tconst knownItems = new Set(items);\n\t\tconst getParent = (item: T): T | null => {\n\t\t\tif (!parentCache.has(item)) {\n\t\t\t\tparentCache.set(item, this.groupingFn()(item, items));\n\t\t\t}\n\t\t\treturn parentCache.get(item) ?? null;\n\t\t};\n\t\tconst createNode = (item: T): TreeNode<T> => {\n\t\t\tconst itemNode: TreeNode<T> = {\n\t\t\t\tnode: item,\n\t\t\t\tchildren: [],\n\t\t\t};\n\t\t\titemToNode.set(item, itemNode);\n\t\t\treturn itemNode;\n\t\t};\n\t\tconst addRoot = (item: T): void => {\n\t\t\tres.push(createNode(item));\n\t\t};\n\t\t// Items whose parent node doesn't exist in the resultset yet\n\t\tlet pending = [...knownItems];\n\t\t// While we haven't handled all the items\n\t\twhile (pending.length) {\n\t\t\tconst stillPending: T[] = [];\n\t\t\tfor (const item of pending) {\n\t\t\t\tconst parent = getParent(item);\n\t\t\t\t// Parent null or undefined means it's a root element, and so is an item whose parent\n\t\t\t\t// isn't part of `items`: filtered out by a search, it will never show up to nest under.\n\t\t\t\tif (!parent || !knownItems.has(parent)) {\n\t\t\t\t\taddRoot(item);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst parentNode = itemToNode.get(parent);\n\t\t\t\t// If the parent is already in the resultset, we can add this\n\t\t\t\tif (parentNode) {\n\t\t\t\t\tparentNode.children?.push(createNode(item));\n\t\t\t\t} else {\n\t\t\t\t\t// Else, we fizzle till the next iteration\n\t\t\t\t\tstillPending.push(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// A whole pass without progress means the remaining items form a parent cycle: they can\n\t\t\t// never be nested, so display them as roots rather than looping forever.\n\t\t\tif (stillPending.length === pending.length) {\n\t\t\t\tstillPending.forEach(addRoot);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tpending = stillPending;\n\t\t}\n\t\treturn res;\n\t}\n}\n","import { ChangeDetectionStrategy, Component, inject, input, output, TemplateRef, Type, viewChild, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { luBooleanAttribute } from '@lucca-front/ng/core';\nimport { ALuSelectInputComponent, LuIsOptionSelectedPipe, LuOptionComparer, LuOptionContext, TreeNode, ɵCoreSelectPanelElement, ɵLuOptionComponent } from '@lucca-front/ng/core-select';\nimport { Treeitem } from '@lucca-front/ng/listbox';\n\n@Component({\n\tselector: 'lu-tree-branch',\n\timports: [ɵCoreSelectPanelElement, LuIsOptionSelectedPipe, ɵLuOptionComponent, Treeitem],\n\ttemplateUrl: './tree-branch.component.html',\n\tstyleUrl: './tree-branch.component.scss',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TreeBranchComponent<T> {\n\treadonly selectInputComponent = inject(ALuSelectInputComponent);\n\n\treadonly rootOptionRef = viewChild<ɵCoreSelectPanelElement<T>>('rootOption');\n\n\treadonly branch = input.required<TreeNode<T>>();\n\n\treadonly optionTpl = input.required<TemplateRef<LuOptionContext<T>> | Type<unknown> | undefined>();\n\n\treadonly optionIndex = input.required({ transform: (value: string | number) => `${value}` });\n\n\treadonly optionComparer = input.required<LuOptionComparer<T>>();\n\n\treadonly selectedOptions = input<T[]>([]);\n\n\ttoggleOne = output<T>();\n\n\tselectMany = output<T[]>();\n\n\tunselectMany = output<T[]>();\n\n\treadonly simpleMode = input(false, { transform: luBooleanAttribute });\n\n\tconstructor() {\n\t\tif (this.selectInputComponent.selectChildren$) {\n\t\t\tthis.selectInputComponent.selectChildren$?.pipe(takeUntilDestroyed()).subscribe(() => {\n\t\t\t\tif (this.rootOptionRef()?.isHighlighted()) {\n\t\t\t\t\tthis.selectOnlyChildren(this.branch());\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.selectInputComponent.selectParent$?.pipe(takeUntilDestroyed()).subscribe(() => {\n\t\t\t\tif (this.rootOptionRef()?.isHighlighted()) {\n\t\t\t\t\tthis.toggleOne.emit(this.branch().node);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\ttoggle(branchData: TreeNode<T>, event?: Event): void {\n\t\t// Options are nested inside their parent's host, so a click bubbles up to every ancestor\n\t\t// branch. Stop it here so clicking a child never toggles its parent.\n\t\tevent?.stopPropagation();\n\t\tif (this.simpleMode() || !branchData.children?.length) {\n\t\t\tthis.toggleOne.emit(branchData.node);\n\t\t} else {\n\t\t\tconst flatOptions = this.flattenTree(branchData);\n\t\t\tconst options = flatOptions.filter((option) => !this.selectedOptions().some((so) => this.optionComparer()(so, option)));\n\t\t\tif (options.length > 0) {\n\t\t\t\tthis.selectMany.emit(options);\n\t\t\t} else {\n\t\t\t\tthis.unselectMany.emit(flatOptions);\n\t\t\t}\n\t\t}\n\t}\n\n\tselectOnlyChildren(branchData: TreeNode<T>): void {\n\t\tconst flatOptions = this.flattenTree(branchData, true);\n\t\tconst options = flatOptions.filter((option) => !this.selectedOptions().some((so) => this.optionComparer()(so, option)));\n\t\tif (options.length > 0) {\n\t\t\tthis.selectMany.emit(options);\n\t\t} else {\n\t\t\tthis.unselectMany.emit(flatOptions);\n\t\t}\n\t}\n\n\tflattenTree(branch: TreeNode<T>, excludeRoot = false): T[] {\n\t\tconst result: T[] = excludeRoot ? [] : [branch.node];\n\t\tif (branch.children?.length) {\n\t\t\tresult.push(...branch.children.map((child) => this.flattenTree(child)).flat());\n\t\t}\n\t\treturn result;\n\t}\n}\n","<lu-select-option\n\tluCoreSelectPanelElement\n\t#rootOption=\"luCoreSelectPanelElement\"\n\t[option]=\"branch().node\"\n\t[optionTpl]=\"optionTpl()\"\n\t[optionIndex]=\"optionIndex()\"\n\t[scrollIntoViewOptions]=\"{ block: 'nearest' }\"\n\t[isSelected]=\"branch().node | luIsOptionSelected: optionComparer() : selectedOptions()\"\n\t(selected)=\"toggle(branch())\"\n\t(click)=\"toggle(branch(), $event)\"\n\t(onlyParent)=\"toggleOne.emit(branch().node)\"\n\t(onlyChildren)=\"selectOnlyChildren(branch())\"\n\t[hasChildren]=\"!simpleMode() && branch().children?.length > 0\"\n>\n\t@if (branch().children?.length) {\n\t\t<ng-container treeitem>\n\t\t\t@for (child of branch().children; track $index) {\n\t\t\t\t<lu-tree-branch\n\t\t\t\t\t[branch]=\"child\"\n\t\t\t\t\t[optionTpl]=\"optionTpl()\"\n\t\t\t\t\t[optionIndex]=\"optionIndex() + '-' + $index\"\n\t\t\t\t\t[optionComparer]=\"optionComparer()\"\n\t\t\t\t\t[selectedOptions]=\"selectedOptions()\"\n\t\t\t\t\t[simpleMode]=\"simpleMode()\"\n\t\t\t\t\t(toggleOne)=\"toggleOne.emit($event)\"\n\t\t\t\t\t(selectMany)=\"selectMany.emit($event)\"\n\t\t\t\t\t(unselectMany)=\"unselectMany.emit($event)\"\n\t\t\t\t/>\n\t\t\t}\n\t\t</ng-container>\n\t}\n</lu-select-option>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["ɵCoreSelectPanelElement","ɵLuOptionComponent"],"mappings":"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"}