@slotted/angular 0.1.0-beta.7 → 0.1.0-beta.9

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 (421) hide show
  1. package/docs/calendar.json +1 -1
  2. package/docs/code-block.json +92 -92
  3. package/docs/code-block.md +69 -69
  4. package/docs/currency-field.json +7 -0
  5. package/docs/currency-field.md +1 -0
  6. package/docs/data-grid.examples.md +1 -1
  7. package/docs/data-grid.json +21 -4
  8. package/docs/data-grid.md +1 -1
  9. package/docs/data-grid.props.md +5 -3
  10. package/docs/dialog.examples.md +138 -136
  11. package/docs/dialog.json +8 -8
  12. package/docs/filter-bar.json +118 -118
  13. package/docs/filter-bar.md +79 -79
  14. package/docs/guidelines/async-feedback.md +10 -0
  15. package/docs/guidelines/composition.md +11 -7
  16. package/docs/guidelines/index.md +6 -1
  17. package/docs/guidelines/list-pages.md +30 -0
  18. package/docs/guidelines/overviews.md +10 -0
  19. package/docs/markdown.json +79 -79
  20. package/docs/markdown.md +65 -65
  21. package/docs/page-header.json +1 -1
  22. package/docs/skills/compose-screen/SKILL.md +22 -10
  23. package/docs/skills/review-screen/SKILL.md +6 -0
  24. package/docs/skills/waiting-states/SKILL.md +4 -1
  25. package/docs/tags-input.json +28 -2
  26. package/docs/tags-input.md +4 -1
  27. package/docs/timeline.json +131 -131
  28. package/docs/timeline.md +123 -123
  29. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  30. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  31. package/fesm2022/slotted-angular-action-bar.mjs +21 -10
  32. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  33. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  34. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  35. package/fesm2022/slotted-angular-alert.mjs +17 -11
  36. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  37. package/fesm2022/slotted-angular-app-shell.mjs +52 -40
  38. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  39. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  40. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  41. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  42. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  43. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  44. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  45. package/fesm2022/slotted-angular-avatar.mjs +9 -6
  46. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  47. package/fesm2022/slotted-angular-badge.mjs +14 -10
  48. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  49. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  50. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  51. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  52. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  53. package/fesm2022/slotted-angular-button.mjs +53 -25
  54. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  55. package/fesm2022/slotted-angular-calendar.mjs +82 -30
  56. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  57. package/fesm2022/slotted-angular-card.mjs +18 -16
  58. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  59. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  60. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  61. package/fesm2022/slotted-angular-cascader.mjs +158 -64
  62. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  63. package/fesm2022/slotted-angular-chart.mjs +4 -2
  64. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  65. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  66. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  67. package/fesm2022/slotted-angular-checkbox.mjs +13 -8
  68. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  69. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  70. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  71. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  72. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  73. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  74. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  75. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  76. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  77. package/fesm2022/slotted-angular-combobox.mjs +77 -31
  78. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  79. package/fesm2022/slotted-angular-command-palette.mjs +150 -54
  80. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  81. package/fesm2022/slotted-angular-container.mjs +6 -4
  82. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  83. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  84. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  85. package/fesm2022/slotted-angular-currency-field.mjs +98 -32
  86. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  87. package/fesm2022/slotted-angular-dashboard-grid.mjs +127 -44
  88. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  89. package/fesm2022/slotted-angular-data-grid.mjs +309 -104
  90. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  91. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  92. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  93. package/fesm2022/slotted-angular-date-field.mjs +40 -14
  94. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  95. package/fesm2022/slotted-angular-date-picker.mjs +19 -9
  96. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  97. package/fesm2022/slotted-angular-date-range-picker.mjs +41 -16
  98. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  99. package/fesm2022/slotted-angular-datetime-field.mjs +48 -16
  100. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  101. package/fesm2022/slotted-angular-datetime-picker.mjs +37 -23
  102. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  103. package/fesm2022/slotted-angular-datetime-range-picker.mjs +111 -42
  104. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  105. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  106. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  107. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  108. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  109. package/fesm2022/slotted-angular-dialog.mjs +61 -28
  110. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  111. package/fesm2022/slotted-angular-divider.mjs +7 -5
  112. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  113. package/fesm2022/slotted-angular-drawer.mjs +38 -26
  114. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  115. package/fesm2022/slotted-angular-entity-picker.mjs +195 -67
  116. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  117. package/fesm2022/slotted-angular-event-calendar.mjs +259 -102
  118. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  119. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  120. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  121. package/fesm2022/slotted-angular-field.mjs +35 -15
  122. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  123. package/fesm2022/slotted-angular-filter-bar.mjs +104 -43
  124. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  125. package/fesm2022/slotted-angular-form.mjs +18 -10
  126. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  127. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  128. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  129. package/fesm2022/slotted-angular-grid.mjs +4 -2
  130. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  131. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  132. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  133. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  134. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  135. package/fesm2022/slotted-angular-icon.mjs +6 -3
  136. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  137. package/fesm2022/slotted-angular-image.mjs +13 -10
  138. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  139. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  140. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  141. package/fesm2022/slotted-angular-inline-message.mjs +10 -8
  142. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  143. package/fesm2022/slotted-angular-inline.mjs +4 -2
  144. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  145. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  146. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  147. package/fesm2022/slotted-angular-link.mjs +5 -3
  148. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  149. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  150. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  151. package/fesm2022/slotted-angular-list.mjs +14 -10
  152. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  153. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  154. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  155. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  156. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  157. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  158. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  159. package/fesm2022/slotted-angular-menu.mjs +41 -27
  160. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  161. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  162. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  163. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  164. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  165. package/fesm2022/slotted-angular-message.mjs +113 -51
  166. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  167. package/fesm2022/slotted-angular-multi-select.mjs +133 -57
  168. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  169. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  170. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  171. package/fesm2022/slotted-angular-notification-center.mjs +107 -65
  172. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  173. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  174. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  175. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  176. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  177. package/fesm2022/slotted-angular-page-header.mjs +72 -42
  178. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  179. package/fesm2022/slotted-angular-page.mjs +18 -9
  180. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  181. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  182. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  183. package/fesm2022/slotted-angular-popover.mjs +25 -18
  184. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  185. package/fesm2022/slotted-angular-progress-indicator.mjs +122 -30
  186. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  187. package/fesm2022/slotted-angular-prompt-composer.mjs +24 -18
  188. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  189. package/fesm2022/slotted-angular-prose.mjs +14 -11
  190. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  191. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  192. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  193. package/fesm2022/slotted-angular-rating.mjs +138 -82
  194. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  195. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  196. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  197. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  198. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  199. package/fesm2022/slotted-angular-scroll-area.mjs +9 -5
  200. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  201. package/fesm2022/slotted-angular-section.mjs +34 -15
  202. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  203. package/fesm2022/slotted-angular-segmented-control.mjs +15 -9
  204. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  205. package/fesm2022/slotted-angular-select.mjs +135 -53
  206. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  207. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  208. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  209. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  210. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  211. package/fesm2022/slotted-angular-slider.mjs +31 -11
  212. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  213. package/fesm2022/slotted-angular-sparkline.mjs +29 -13
  214. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  215. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  216. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  217. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  218. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  219. package/fesm2022/slotted-angular-stack.mjs +4 -2
  220. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  221. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  222. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  223. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  224. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  225. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  226. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  227. package/fesm2022/slotted-angular-switch.mjs +15 -10
  228. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  229. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  230. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  231. package/fesm2022/slotted-angular-table.mjs +135 -72
  232. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  233. package/fesm2022/slotted-angular-tabs.mjs +31 -14
  234. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  235. package/fesm2022/slotted-angular-tag.mjs +19 -12
  236. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  237. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  238. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  239. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  240. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  241. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  242. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  243. package/fesm2022/slotted-angular-time-field.mjs +48 -14
  244. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  245. package/fesm2022/slotted-angular-time-picker.mjs +28 -14
  246. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  247. package/fesm2022/slotted-angular-time-range-picker.mjs +109 -40
  248. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  249. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  250. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  251. package/fesm2022/slotted-angular-toast.mjs +42 -31
  252. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  253. package/fesm2022/slotted-angular-toggle-group.mjs +10 -6
  254. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  255. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  256. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  257. package/fesm2022/slotted-angular-toolbar.mjs +21 -10
  258. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  259. package/fesm2022/slotted-angular-tooltip.mjs +8 -5
  260. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  261. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  262. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  263. package/fesm2022/slotted-angular-tour.mjs +46 -21
  264. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  265. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  266. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  267. package/fesm2022/slotted-angular-tree.mjs +74 -26
  268. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  269. package/fesm2022/slotted-angular-typography.mjs +8 -4
  270. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  271. package/fesm2022/slotted-angular-upload.mjs +125 -57
  272. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  273. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  274. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  275. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  276. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  277. package/package.json +3 -3
  278. package/types/slotted-angular-accordion.d.ts.map +1 -1
  279. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  280. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  281. package/types/slotted-angular-alert.d.ts +1 -1
  282. package/types/slotted-angular-alert.d.ts.map +1 -1
  283. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  284. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  285. package/types/slotted-angular-attachment.d.ts +1 -1
  286. package/types/slotted-angular-attachment.d.ts.map +1 -1
  287. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  288. package/types/slotted-angular-avatar.d.ts.map +1 -1
  289. package/types/slotted-angular-badge.d.ts.map +1 -1
  290. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  291. package/types/slotted-angular-button-group.d.ts.map +1 -1
  292. package/types/slotted-angular-button.d.ts.map +1 -1
  293. package/types/slotted-angular-calendar.d.ts +2 -0
  294. package/types/slotted-angular-calendar.d.ts.map +1 -1
  295. package/types/slotted-angular-card.d.ts.map +1 -1
  296. package/types/slotted-angular-carousel.d.ts.map +1 -1
  297. package/types/slotted-angular-cascader.d.ts.map +1 -1
  298. package/types/slotted-angular-chart.d.ts.map +1 -1
  299. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  300. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  301. package/types/slotted-angular-code-block.d.ts +1 -1
  302. package/types/slotted-angular-code-block.d.ts.map +1 -1
  303. package/types/slotted-angular-collapsible.d.ts +1 -1
  304. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  305. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  306. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  307. package/types/slotted-angular-combobox.d.ts +1 -1
  308. package/types/slotted-angular-combobox.d.ts.map +1 -1
  309. package/types/slotted-angular-command-palette.d.ts +10 -1
  310. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  311. package/types/slotted-angular-container.d.ts.map +1 -1
  312. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  313. package/types/slotted-angular-currency-field.d.ts +39 -13
  314. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  315. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  316. package/types/slotted-angular-data-grid.d.ts +26 -2
  317. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  318. package/types/slotted-angular-data-list.d.ts.map +1 -1
  319. package/types/slotted-angular-date-field.d.ts.map +1 -1
  320. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  321. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  322. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  323. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  324. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  325. package/types/slotted-angular-description-list.d.ts.map +1 -1
  326. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  327. package/types/slotted-angular-dialog.d.ts +2 -1
  328. package/types/slotted-angular-dialog.d.ts.map +1 -1
  329. package/types/slotted-angular-divider.d.ts.map +1 -1
  330. package/types/slotted-angular-drawer.d.ts.map +1 -1
  331. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  332. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  333. package/types/slotted-angular-field-group.d.ts.map +1 -1
  334. package/types/slotted-angular-field.d.ts.map +1 -1
  335. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  336. package/types/slotted-angular-form.d.ts.map +1 -1
  337. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  338. package/types/slotted-angular-grid.d.ts.map +1 -1
  339. package/types/slotted-angular-highlight.d.ts.map +1 -1
  340. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  341. package/types/slotted-angular-icon.d.ts +1 -1
  342. package/types/slotted-angular-icon.d.ts.map +1 -1
  343. package/types/slotted-angular-image.d.ts.map +1 -1
  344. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  345. package/types/slotted-angular-inline-message.d.ts +1 -1
  346. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  347. package/types/slotted-angular-inline.d.ts.map +1 -1
  348. package/types/slotted-angular-kbd.d.ts.map +1 -1
  349. package/types/slotted-angular-link.d.ts.map +1 -1
  350. package/types/slotted-angular-list-item.d.ts.map +1 -1
  351. package/types/slotted-angular-list.d.ts.map +1 -1
  352. package/types/slotted-angular-listbox.d.ts.map +1 -1
  353. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  354. package/types/slotted-angular-markdown.d.ts.map +1 -1
  355. package/types/slotted-angular-menu.d.ts.map +1 -1
  356. package/types/slotted-angular-menubar.d.ts.map +1 -1
  357. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  358. package/types/slotted-angular-message.d.ts.map +1 -1
  359. package/types/slotted-angular-multi-select.d.ts +1 -1
  360. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  361. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  362. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  363. package/types/slotted-angular-number-field.d.ts.map +1 -1
  364. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  365. package/types/slotted-angular-page-header.d.ts +1 -1
  366. package/types/slotted-angular-page-header.d.ts.map +1 -1
  367. package/types/slotted-angular-page.d.ts.map +1 -1
  368. package/types/slotted-angular-pagination.d.ts.map +1 -1
  369. package/types/slotted-angular-popover.d.ts.map +1 -1
  370. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  371. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  372. package/types/slotted-angular-prose.d.ts.map +1 -1
  373. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  374. package/types/slotted-angular-rating.d.ts.map +1 -1
  375. package/types/slotted-angular-result-state.d.ts.map +1 -1
  376. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  377. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  378. package/types/slotted-angular-section.d.ts.map +1 -1
  379. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  380. package/types/slotted-angular-select.d.ts +1 -1
  381. package/types/slotted-angular-select.d.ts.map +1 -1
  382. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  383. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  384. package/types/slotted-angular-slider.d.ts.map +1 -1
  385. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  386. package/types/slotted-angular-split-button.d.ts.map +1 -1
  387. package/types/slotted-angular-splitter.d.ts.map +1 -1
  388. package/types/slotted-angular-stack.d.ts.map +1 -1
  389. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  390. package/types/slotted-angular-status-indicator.d.ts +1 -1
  391. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  392. package/types/slotted-angular-stepper.d.ts +1 -1
  393. package/types/slotted-angular-stepper.d.ts.map +1 -1
  394. package/types/slotted-angular-switch.d.ts.map +1 -1
  395. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  396. package/types/slotted-angular-table.d.ts.map +1 -1
  397. package/types/slotted-angular-tabs.d.ts.map +1 -1
  398. package/types/slotted-angular-tag.d.ts.map +1 -1
  399. package/types/slotted-angular-tags-input.d.ts +33 -1
  400. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  401. package/types/slotted-angular-text-field.d.ts.map +1 -1
  402. package/types/slotted-angular-textarea.d.ts.map +1 -1
  403. package/types/slotted-angular-time-field.d.ts.map +1 -1
  404. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  405. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  406. package/types/slotted-angular-timeline.d.ts.map +1 -1
  407. package/types/slotted-angular-toast.d.ts +2 -2
  408. package/types/slotted-angular-toast.d.ts.map +1 -1
  409. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  410. package/types/slotted-angular-toggle.d.ts.map +1 -1
  411. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  412. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  413. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  414. package/types/slotted-angular-tour.d.ts.map +1 -1
  415. package/types/slotted-angular-transfer.d.ts.map +1 -1
  416. package/types/slotted-angular-tree.d.ts.map +1 -1
  417. package/types/slotted-angular-typography.d.ts.map +1 -1
  418. package/types/slotted-angular-upload.d.ts +2 -2
  419. package/types/slotted-angular-upload.d.ts.map +1 -1
  420. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  421. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-cascader.mjs","sources":["../../cascader/src/cascader-body.ts","../../cascader/src/cascader-defaults.ts","../../cascader/src/cascader-engine.ts","../../cascader/src/cascader.ts","../../cascader/src/slotted-angular-cascader.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n inject,\n input,\n output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlHighlight } from '@slotted/angular/highlight';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport type { CascaderCrumb, CascaderNodeView } from '@slotted/core/cascader';\nimport { matchRanges } from '@slotted/core/highlight';\n\nimport type { CascaderEngine } from './cascader-engine';\n\n/** What a node template receives: the consumer's own item, and its state. */\nexport interface CascaderNodeContext<T> {\n $implicit: T;\n view: CascaderNodeView;\n}\n\n/**\n * The label of a node, written by the consumer:\n * `<ng-template slCascaderNode let-place let-view=\"view\">…</ng-template>`.\n * The row, its marks and its count stay the family's.\n */\n@Directive({ selector: 'ng-template[slCascaderNode]', standalone: true })\nexport class SlCascaderNode<T = unknown> {\n readonly template = inject<TemplateRef<CascaderNodeContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _directive: SlCascaderNode<T>,\n context: unknown,\n ): context is CascaderNodeContext<T> {\n return context !== null;\n }\n}\n\n/**\n * What the surface holds, the same in the popup and on the page: the\n * breadcrumb, then the tree with its columns, or the results of a query. Its\n * host takes no box (`display: contents`), so the surface's own layout reaches\n * the breadcrumb and the tree as if they were its children.\n */\n@Component({\n selector: 'sl-cascader-body',\n standalone: true,\n imports: [NgTemplateOutlet, SlButton, SlGlyph, SlHighlight, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n template: `\n @let view = engine().view();\n @if (view.crumbs.length > 0) {\n <nav data-part=\"breadcrumb\" [attr.aria-label]=\"engine().t('breadcrumb')\">\n @for (crumb of view.crumbs; track $index) {\n @if (!$first) {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n @if (crumb.type === 'collapsed') {\n <button\n type=\"button\"\n data-part=\"crumb\"\n data-collapsed\n [attr.aria-label]=\"backLabel(crumb.target)\"\n (click)=\"goTo(crumb.target, $event)\"\n >\n …\n </button>\n } @else {\n <button\n type=\"button\"\n data-part=\"crumb\"\n [attr.aria-current]=\"crumb.current ? 'location' : null\"\n (click)=\"onCrumb(crumb, $event)\"\n >\n {{ engine().labelOf(crumb.key) }}\n </button>\n }\n }\n @if (engine().layout() === 'columns') {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n </nav>\n }\n <div\n data-part=\"panel\"\n role=\"tree\"\n [id]=\"treeId()\"\n [attr.tabindex]=\"focusable() ? 0 : null\"\n [attr.aria-activedescendant]=\"\n focusable() && engine().activeKey !== null ? nodeId()(engine().activeKey!) : null\n \"\n [attr.aria-label]=\"label() ?? null\"\n [attr.aria-labelledby]=\"label() === undefined ? (labelledBy() ?? null) : null\"\n [attr.aria-multiselectable]=\"engine().multiple ? true : null\"\n (keydown)=\"treeKeydown.emit($event)\"\n >\n @if (view.searching) {\n <div data-part=\"column\" role=\"group\" [attr.aria-label]=\"engine().t('search')\">\n @for (node of view.results; track node.key) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: node }\" />\n }\n @if (view.results.length === 0) {\n <div data-part=\"empty\">{{ noResults() }}</div>\n }\n <div data-part=\"status\" role=\"status\">{{ resultCount(view.results.length) }}</div>\n </div>\n } @else {\n @for (column of view.columns; track column.parent ?? '') {\n <div\n data-part=\"column\"\n role=\"group\"\n [attr.aria-label]=\"engine().labelOf(column.parent)\"\n [attr.aria-busy]=\"column.pending && !column.failed ? true : null\"\n >\n @for (node of column.nodes; track node.key) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: node }\" />\n }\n @if (column.pending && !column.failed) {\n @for (index of [0, 1, 2]; track index) {\n <div data-part=\"loader\" aria-hidden=\"true\">\n <span data-ui=\"skeleton\" data-part=\"root\" data-shape=\"text\" data-loading></span>\n </div>\n }\n }\n @if (column.failed && column.parent !== undefined) {\n <div data-part=\"status\" role=\"status\">\n {{ failedLabel(column.parent) }}\n <button\n slButton\n size=\"sm\"\n variant=\"outline\"\n type=\"button\"\n (click)=\"retry.emit(column.parent)\"\n >\n {{ engine().t('retry') }}\n </button>\n </div>\n }\n @if (!column.pending && !column.failed && column.nodes.length === 0) {\n <div data-part=\"empty\">{{ engine().t('empty') }}</div>\n }\n </div>\n }\n }\n </div>\n\n <ng-template #row let-node>\n <div\n data-part=\"node\"\n role=\"treeitem\"\n [id]=\"nodeId()(node.key)\"\n [attr.aria-level]=\"view.searching ? null : node.level\"\n [attr.aria-posinset]=\"view.searching ? null : node.posInSet\"\n [attr.aria-setsize]=\"view.searching ? null : node.setSize\"\n [attr.aria-expanded]=\"node.branch && !view.searching ? node.expanded : null\"\n [attr.aria-selected]=\"engine().multiple ? null : node.selected\"\n [attr.aria-checked]=\"\n engine().multiple ? (node.indeterminate ? 'mixed' : node.selected) : null\n \"\n [attr.aria-disabled]=\"node.disabled ? true : null\"\n [attr.aria-busy]=\"node.loading ? true : null\"\n [attr.data-current]=\"node.current ? '' : null\"\n [attr.data-expanded]=\"node.expanded && !view.searching ? '' : null\"\n [attr.data-selected]=\"node.selected ? '' : null\"\n [attr.data-indeterminate]=\"node.indeterminate ? '' : null\"\n [attr.data-disabled]=\"node.disabled ? '' : null\"\n [attr.data-loading]=\"node.loading ? '' : null\"\n [style.--slotted-cascader-depth]=\"\n engine().layout() === 'tree' && !view.searching ? node.depth : null\n \"\n (click)=\"onNodeClick(node, $event)\"\n (pointermove)=\"onPointerMove(node, $event)\"\n (pointerenter)=\"onPointerEnter(node)\"\n (pointerleave)=\"cancelHover()\"\n >\n @if (engine().multiple) {\n <span data-part=\"indicator\"\n ><span slIcon><svg slGlyph [name]=\"node.indeterminate ? 'minus' : 'check'\"></svg></span\n ></span>\n }\n <span data-part=\"label\">\n @if (nodeTemplate(); as template) {\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { $implicit: engine().itemFor(node.key), view: node }\n \"\n />\n } @else if (view.searching && engine().query !== '') {\n <span slHighlight [text]=\"node.label\" [ranges]=\"ranges(node.label)\"></span>\n } @else {\n {{ node.label }}\n }\n </span>\n @if (descriptionOf(node, view.searching); as description) {\n <span data-part=\"description\">{{ description }}</span>\n }\n @if (metaOf(node); as meta) {\n <span data-part=\"meta\" aria-hidden=\"true\">{{ meta }}</span>\n }\n @if (node.branch) {\n <span data-part=\"expander\" aria-hidden=\"true\">\n @if (node.loading) {\n <span data-ui=\"spinner\" data-part=\"root\"></span>\n } @else {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n </span>\n } @else if (!engine().multiple) {\n <span data-part=\"indicator\"\n ><span slIcon><svg slGlyph name=\"check\"></svg></span\n ></span>\n }\n </div>\n </ng-template>\n `,\n})\nexport class SlCascaderBody<T> {\n readonly engine = input.required<CascaderEngine<T>>();\n readonly nodeId = input.required<(key: string) => string>();\n readonly treeId = input.required<string>();\n readonly focusable = input(false);\n readonly label = input<string | undefined>(undefined);\n readonly labelledBy = input<string | undefined>(undefined);\n readonly separator = input('/');\n readonly expandOn = input<'press' | 'hover'>('press');\n readonly hoverDelay = input(150);\n readonly nodeTemplate = input<TemplateRef<CascaderNodeContext<T>> | undefined>(undefined);\n readonly getDescription = input<((node: T) => string | undefined) | undefined>(undefined);\n readonly locale = input<string | undefined>(undefined);\n\n readonly retry = output<string>();\n readonly treeKeydown = output<KeyboardEvent>();\n\n private hover: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => clearTimeout(this.hover));\n }\n\n /**\n * The `highlight` family draws the match, from the collator the search used,\n * so the mark reads the same here as in every other filtered list.\n */\n protected ranges(label: string) {\n return matchRanges(label, this.engine().query, { locale: this.locale() });\n }\n\n protected backLabel(key: string | undefined) {\n return this.engine().t('back', { label: this.engine().labelOf(key) });\n }\n\n protected failedLabel(key: string) {\n return this.engine().t('failed', { label: this.engine().labelOf(key) });\n }\n\n protected noResults() {\n return this.engine().t('noResults', { query: this.engine().query });\n }\n\n protected resultCount(count: number) {\n return count === 0 ? '' : this.engine().t('results', { count });\n }\n\n protected descriptionOf(node: CascaderNodeView, searching: boolean): string | undefined {\n const engine = this.engine();\n if (searching) {\n const trail = node.trail.map((key) => engine.labelOf(key)).join(` ${this.separator()} `);\n return trail === '' ? undefined : trail;\n }\n const item = engine.itemFor(node.key);\n return item === undefined ? undefined : this.getDescription()?.(item);\n }\n\n protected metaOf(node: CascaderNodeView): string | undefined {\n if (!node.branch) return undefined;\n /* Inside a chosen branch the count is how many are chosen there. */\n if (this.engine().multiple && node.selectedInside > 0) return String(node.selectedInside);\n return node.childrenCount === undefined ? undefined : String(node.childrenCount);\n }\n\n protected goTo(level: string | undefined, event: MouseEvent) {\n this.engine().goTo(level, event.detail === 0 ? 'keyboard' : 'pointer', event);\n }\n\n protected onCrumb(crumb: CascaderCrumb, event: MouseEvent) {\n if (crumb.type === 'level' && !crumb.current) this.goTo(crumb.key, event);\n }\n\n protected onPointerMove(node: CascaderNodeView, event: PointerEvent) {\n if (!node.current) this.engine().setActive(node.key, 'pointer', event);\n }\n\n protected onPointerEnter(node: CascaderNodeView) {\n this.cancelHover();\n const engine = this.engine();\n if (this.expandOn() !== 'hover' || !node.branch || node.disabled) return;\n if (engine.layout() === 'tree' || engine.view().searching) return;\n /* Hover shows a level after a rest and never commits. */\n this.hover = setTimeout(() => engine.showLevel(node.key, 'pointer'), this.hoverDelay());\n }\n\n protected cancelHover() {\n clearTimeout(this.hover);\n }\n\n protected onNodeClick(node: CascaderNodeView, event: MouseEvent) {\n if (node.disabled) return;\n const engine = this.engine();\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n const target = event.target as Element;\n const onBox = target.closest(\"[data-part='indicator']\") !== null;\n const onExpander = target.closest(\"[data-part='expander']\") !== null;\n\n if (engine.view().searching) {\n if (node.selectable) engine.choose(node.key, reason, event);\n else if (node.branch) {\n engine.setQuery('', 'select', event);\n engine.showLevel(node.key, reason, event);\n }\n return;\n }\n if (engine.layout() === 'tree') {\n if (node.branch && (onExpander || !node.selectable)) {\n engine.toggleExpanded(node.key, reason, event);\n return;\n }\n engine.choose(node.key, reason, event);\n return;\n }\n if (engine.multiple && onBox) {\n engine.choose(node.key, reason, event);\n return;\n }\n if (node.branch) {\n engine.showLevel(node.key, reason, event);\n engine.setActive(node.key, reason, event);\n /* A branch the consumer made selectable is chosen as it opens, and the\n popup stays: the reader is drilling. */\n if (node.selectable && !engine.multiple)\n engine.choose(node.key, reason, event, { close: false });\n return;\n }\n engine.choose(node.key, reason, event);\n }\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport type { CascaderCheckedStrategy, CascaderLayoutAxis } from '@slotted/core/cascader';\n\nexport type { CascaderCheckedStrategy, CascaderLayoutAxis };\nexport type CascaderSize = 'sm' | 'md' | 'lg';\nexport type CascaderVariant = 'outline' | 'subtle' | 'plain';\nexport type CascaderSelectionMode = 'single' | 'multiple';\nexport type CascaderExpandOn = 'press' | 'hover';\n/** A scalar for one choice, a list for many — the shape `tree` and `listbox` settled. */\nexport type CascaderValue = string | null | readonly string[];\n\n/** Every decision an application takes once rather than per instance. */\nexport interface CascaderDefaults {\n size: CascaderSize;\n variant: CascaderVariant;\n fullWidth: boolean;\n layout: CascaderLayoutAxis;\n selectionMode: CascaderSelectionMode;\n selectable: 'leaf' | 'any';\n checkedStrategy: CascaderCheckedStrategy;\n expandOn: CascaderExpandOn;\n closeOnSelect: boolean;\n search: boolean;\n clearable: boolean;\n portal: boolean;\n disabled: boolean;\n readOnly: boolean;\n required: boolean;\n invalid: boolean;\n separator: string;\n hoverDelay: number;\n maxColumns: number;\n maxCrumbs: number;\n}\n\nexport const CASCADER_FALLBACK: CascaderDefaults = {\n size: 'md',\n variant: 'outline',\n fullWidth: true,\n layout: 'auto',\n selectionMode: 'single',\n selectable: 'leaf',\n checkedStrategy: 'all',\n expandOn: 'press',\n closeOnSelect: true,\n search: false,\n clearable: true,\n portal: true,\n disabled: false,\n readOnly: false,\n required: false,\n invalid: false,\n separator: '/',\n hoverDelay: 150,\n maxColumns: 3,\n maxCrumbs: 4,\n};\n\nexport const CASCADER_DEFAULTS = new InjectionToken<CascaderDefaults>('CASCADER_DEFAULTS', {\n providedIn: 'root',\n factory: () => CASCADER_FALLBACK,\n});\n\n/**\n * Sets every axis once, in the bootstrap or on a route. The words come from the\n * language in force (`provideSlotted`).\n */\nexport function provideCascaderDefaults(defaults: Partial<CascaderDefaults>): Provider {\n return { provide: CASCADER_DEFAULTS, useValue: { ...CASCADER_FALLBACK, ...defaults } };\n}\n\nexport function injectCascaderDefaults(): CascaderDefaults {\n return inject(CASCADER_DEFAULTS);\n}\n","import { computed } from '@angular/core';\nimport type { ModelSignal, OutputEmitterRef, Signal } from '@angular/core';\nimport { cascadeSelection, createTreeCollection } from '@slotted/core/collection';\nimport type { TreeCollection } from '@slotted/core/collection';\nimport {\n cascaderFit,\n cascaderKey,\n cascaderLayout,\n cascaderSelection,\n cascaderValue,\n cascaderView,\n flatToTree,\n pathTo,\n} from '@slotted/core/cascader';\nimport type {\n CascaderCheckedStrategy,\n CascaderKeyAction,\n CascaderLayout,\n CascaderLayoutAxis,\n CascaderView,\n} from '@slotted/core/cascader';\nimport type { CascaderMessages, FamilyTranslator } from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport type { CascaderValue } from './cascader-defaults';\n\n/** What a level that has not arrived asks for, with the signal that withdraws it. */\nexport interface CascaderLoadRequest {\n readonly key: string;\n readonly signal: AbortSignal;\n}\n\nexport type CascaderSelectable<T> = 'leaf' | 'any' | ((node: T) => boolean);\n\n/** Space the surface measured. */\nexport interface CascaderRoom {\n available: number | undefined;\n columnMeasure: number;\n inset: number;\n}\n\nexport interface CascaderEngineSource<T> {\n nodes: Signal<readonly T[]>;\n getKey: Signal<(node: T) => string>;\n getLabel: Signal<(node: T) => string>;\n getChildren: Signal<((node: T) => readonly T[] | undefined) | undefined>;\n getParent: Signal<((node: T) => string | null | undefined) | undefined>;\n hasChildren: Signal<((node: T) => boolean) | undefined>;\n getChildrenCount: Signal<((node: T) => number | undefined) | undefined>;\n isNodeDisabled: Signal<((node: T) => boolean) | undefined>;\n isNodeLoading: Signal<((node: T) => boolean) | undefined>;\n isNodeFailed: Signal<((node: T) => boolean) | undefined>;\n filter: Signal<((node: T, query: string) => boolean) | undefined>;\n locale: Signal<string | undefined>;\n loading: Signal<boolean>;\n multiple: Signal<boolean>;\n selectable: Signal<CascaderSelectable<T>>;\n checkedStrategy: Signal<CascaderCheckedStrategy>;\n layout: Signal<CascaderLayoutAxis>;\n search: Signal<boolean>;\n maxColumns: Signal<number>;\n maxCrumbs: Signal<number>;\n readOnly: Signal<boolean>;\n /** The family's words in the language in force. */\n t: FamilyTranslator<CascaderMessages>;\n room: Signal<CascaderRoom>;\n\n value: ModelSignal<CascaderValue>;\n path: ModelSignal<readonly string[]>;\n activeKey: ModelSignal<string | null>;\n expandedKeys: ModelSignal<readonly string[]>;\n searchValue: ModelSignal<string>;\n\n valueChangeRequest: OutputEmitterRef<ChangeRequest<CascaderValue>>;\n pathChangeRequest: OutputEmitterRef<ChangeRequest<readonly string[]>>;\n activeKeyChangeRequest: OutputEmitterRef<ChangeRequest<string | null>>;\n expandedKeysChangeRequest: OutputEmitterRef<ChangeRequest<readonly string[]>>;\n searchValueChangeRequest: OutputEmitterRef<ChangeRequest<string>>;\n loadChildren: OutputEmitterRef<CascaderLoadRequest>;\n}\n\nconst sameList = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length && a.every((key, index) => key === b[index]);\nconst same = (a: unknown, b: unknown) =>\n Array.isArray(a) && Array.isArray(b) ? sameList(a, b) : a === b;\n\n/** The keys a value names, in the order it names them. */\nexport function valueKeys(value: CascaderValue | undefined): readonly string[] {\n if (value === undefined || value === null) return [];\n return typeof value === 'string' ? [value] : value;\n}\n\n/**\n * The cascader's state, as signals, shared by the control and the panel. The\n * rules are `@slotted/core/cascader`'s; this class only holds the values, asks\n * before it moves one, and turns a key or a press into the request.\n */\nexport class CascaderEngine<T> {\n readonly collection: Signal<TreeCollection<T>>;\n readonly layout: Signal<CascaderLayout>;\n readonly fit: Signal<number>;\n readonly emitted: Signal<readonly string[]>;\n readonly view: Signal<CascaderView>;\n /** Called after a single commit that should close the popup. */\n onCommitted: (() => void) | undefined;\n closeOnSelect = false;\n\n private readonly selected: Signal<readonly string[]>;\n private readonly requested = new Map<string, AbortController>();\n\n constructor(private readonly source: CascaderEngineSource<T>) {\n this.collection = computed(() => {\n const nodes = source.nodes();\n const getKey = source.getKey();\n const getParent = source.getParent();\n const flat = getParent === undefined ? undefined : flatToTree(nodes, { getKey, getParent });\n const getChildren = flat?.getChildren ?? source.getChildren();\n return createTreeCollection<T>({\n roots: flat?.roots ?? nodes,\n getKey,\n getLabel: source.getLabel(),\n getChildren,\n hasChildren: source.hasChildren() ?? ((node: T) => (getChildren?.(node)?.length ?? 0) > 0),\n getChildrenCount: source.getChildrenCount(),\n isDisabled: source.isNodeDisabled(),\n });\n });\n\n this.layout = computed(() => {\n const room = source.room();\n return cascaderLayout({ layout: source.layout(), ...room });\n });\n this.fit = computed(() => cascaderFit({ ...source.room(), maxColumns: source.maxColumns() }));\n this.emitted = computed(() => valueKeys(source.value()));\n this.selected = computed(() =>\n source.multiple()\n ? cascaderSelection(this.collection() as TreeCollection<unknown>, this.emitted())\n : this.emitted(),\n );\n\n this.view = computed(() => {\n const collection = this.collection();\n const filter = source.filter();\n const isLoading = source.isNodeLoading();\n const isFailed = source.isNodeFailed();\n const item = (key: string) => collection.nodeFor(key)?.item;\n const view = cascaderView({\n collection: collection as TreeCollection<unknown>,\n layout: this.layout(),\n path: source.path(),\n activeKey: source.activeKey(),\n expandedKeys: source.expandedKeys(),\n query: source.search() ? source.searchValue() : '',\n selected: this.selected(),\n selectionMode: source.multiple() ? 'multiple' : 'single',\n isSelectable: (key) => this.isSelectable(key),\n isLoading: (key) => {\n const node = item(key);\n return node !== undefined && (isLoading?.(node) ?? false);\n },\n isFailed: (key) => {\n const node = item(key);\n return node !== undefined && (isFailed?.(node) ?? false);\n },\n fit: this.fit(),\n maxCrumbs: source.maxCrumbs(),\n filter:\n filter === undefined\n ? undefined\n : (key, query) => {\n const node = item(key);\n return node !== undefined && filter(node, query);\n },\n locale: source.locale(),\n });\n if (source.loading() && collection.roots.length === 0 && !view.searching) {\n return {\n ...view,\n columns: [{ parent: undefined, level: 1, pending: true, failed: false, nodes: [] }],\n };\n }\n return view;\n });\n }\n\n get query(): string {\n return this.source.search() ? this.source.searchValue() : '';\n }\n\n get multiple(): boolean {\n return this.source.multiple();\n }\n\n /** The family's words in the language in force, read by the surface. */\n get t(): FamilyTranslator<CascaderMessages> {\n return this.source.t;\n }\n\n get activeKey(): string | null {\n return this.source.activeKey();\n }\n\n itemFor(key: string): T | undefined {\n return this.collection().nodeFor(key)?.item;\n }\n\n labelOf(key: string | undefined): string {\n if (key === undefined) return this.source.t('root');\n return this.collection().nodeFor(key)?.label ?? key;\n }\n\n /**\n * Under a multiple selection every node that is not disabled has a box: a\n * branch's box toggles everything below it. `selectable` decides what a\n * single selection may commit.\n */\n isSelectable(key: string): boolean {\n const node = this.collection().nodeFor(key);\n if (node === undefined || node.disabled) return false;\n if (this.source.multiple()) return true;\n const selectable = this.source.selectable();\n if (typeof selectable === 'function') return selectable(node.item);\n return selectable === 'any' || !node.hasChildren;\n }\n\n private request<V>(\n model: ModelSignal<V>,\n output: OutputEmitterRef<ChangeRequest<V>>,\n next: V,\n reason: ChangeReason,\n source?: unknown,\n ): boolean {\n if (same(next, model())) return false;\n const controllable = createControllable<V>({\n initial: model(),\n equals: () => false,\n onRequest: (request) => output.emit(request),\n });\n if (!controllable.request(next, reason, source)) return false;\n model.set(next);\n return true;\n }\n\n setActive(key: string | null, reason: ChangeReason, source?: unknown) {\n this.request(this.source.activeKey, this.source.activeKeyChangeRequest, key, reason, source);\n }\n\n setPath(path: readonly string[], reason: ChangeReason, source?: unknown) {\n this.request(this.source.path, this.source.pathChangeRequest, path, reason, source);\n }\n\n setQuery(query: string, reason: ChangeReason, source?: unknown) {\n this.request(\n this.source.searchValue,\n this.source.searchValueChangeRequest,\n query,\n reason,\n source,\n );\n }\n\n setValue(value: CascaderValue, reason: ChangeReason, source?: unknown): boolean {\n return this.request(this.source.value, this.source.valueChangeRequest, value, reason, source);\n }\n\n showLevel(branch: string, reason: ChangeReason, source?: unknown) {\n this.setPath(pathTo(this.collection() as TreeCollection<unknown>, branch), reason, source);\n }\n\n goTo(level: string | undefined, reason: ChangeReason, source?: unknown) {\n const next =\n level === undefined ? [] : pathTo(this.collection() as TreeCollection<unknown>, level);\n const from = this.source.path()[next.length];\n this.setPath(next, reason === 'pointer' ? 'pointer' : 'back', source);\n if (from !== undefined) this.setActive(from, reason, source);\n }\n\n toggleExpanded(key: string, reason: ChangeReason, source?: unknown) {\n const held = this.source.expandedKeys();\n this.request(\n this.source.expandedKeys,\n this.source.expandedKeysChangeRequest,\n held.includes(key) ? held.filter((candidate) => candidate !== key) : [...held, key],\n reason,\n source,\n );\n }\n\n choose(key: string, reason: ChangeReason, source?: unknown, options: { close?: boolean } = {}) {\n if (!this.isSelectable(key) || this.source.readOnly()) return;\n const collection = this.collection() as TreeCollection<unknown>;\n if (!this.source.multiple()) {\n const moved = this.setValue(key, reason === 'keyboard' ? 'keyboard' : 'pointer', source);\n if ((moved || this.source.value() === key) && this.closeOnSelect && options.close !== false) {\n this.onCommitted?.();\n }\n return;\n }\n const result = cascadeSelection({\n collection,\n selected: this.selected(),\n key,\n action: 'toggle',\n });\n if (!result.changed) return;\n this.setValue(\n cascaderValue({\n collection,\n selected: result.selected,\n strategy: this.source.checkedStrategy(),\n }),\n reason,\n source,\n );\n }\n\n remove(key: string, source?: unknown) {\n if (!this.source.multiple()) {\n this.setValue(null, 'remove', source);\n return;\n }\n const collection = this.collection() as TreeCollection<unknown>;\n const result = cascadeSelection({\n collection,\n selected: this.selected(),\n key,\n action: 'deselect',\n });\n this.setValue(\n cascaderValue({\n collection,\n selected: result.selected,\n strategy: this.source.checkedStrategy(),\n }),\n 'remove',\n source,\n );\n }\n\n clear(source?: unknown) {\n this.setValue(this.source.multiple() ? [] : null, 'clear', source);\n }\n\n /** The level that holds the value on show, and the value active in it. */\n reveal() {\n const collection = this.collection() as TreeCollection<unknown>;\n const first = this.emitted()[0];\n if (first === undefined || collection.nodeFor(first) === undefined) {\n if (this.source.activeKey() === null) {\n this.setActive(collection.roots[0] ?? null, 'programmatic');\n }\n return;\n }\n const trail = pathTo(collection, first);\n this.setPath(trail.slice(0, -1), 'programmatic');\n this.request(\n this.source.expandedKeys,\n this.source.expandedKeysChangeRequest,\n trail.slice(0, -1),\n 'programmatic',\n );\n this.setActive(first, 'programmatic');\n }\n\n /** Runs a key; the action the core decided, or `handled` for a search key. */\n handleKey(\n key: string,\n source: unknown,\n dir: 'ltr' | 'rtl',\n open: boolean,\n ): CascaderKeyAction | { type: 'handled' } {\n const collection = this.collection() as TreeCollection<unknown>;\n const view = this.view();\n const active = this.source.activeKey();\n\n if (open && view.searching) {\n const results = view.results.map((node) => node.key);\n const index = active === null ? -1 : results.indexOf(active);\n if (key === 'ArrowDown' || key === 'ArrowUp') {\n const next =\n results[\n Math.min(results.length - 1, Math.max(0, index + (key === 'ArrowDown' ? 1 : -1)))\n ];\n if (next !== undefined) this.setActive(next, 'keyboard', source);\n return { type: 'handled' };\n }\n if (key === 'Enter' && active !== null) {\n if (this.isSelectable(active)) this.choose(active, 'keyboard', source);\n else if (collection.nodeFor(active)?.hasChildren) {\n this.setQuery('', 'select', source);\n this.showLevel(active, 'keyboard', source);\n const first = collection.nodeFor(active)?.children[0];\n if (first !== undefined) this.setActive(first, 'keyboard', source);\n }\n return { type: 'handled' };\n }\n return { type: 'none' };\n }\n\n const action = cascaderKey({\n key,\n dir,\n layout: this.layout(),\n open,\n active: active ?? undefined,\n path: this.source.path(),\n expandedKeys: this.source.expandedKeys(),\n collection,\n selectionMode: this.source.multiple() ? 'multiple' : 'single',\n isSelectable: (candidate) => this.isSelectable(candidate),\n search: this.source.search(),\n hasQuery: this.query !== '',\n });\n\n switch (action.type) {\n case 'move':\n this.setActive(action.key, 'keyboard', source);\n break;\n case 'enter':\n this.setPath(action.path, 'keyboard', source);\n if (action.key !== undefined) this.setActive(action.key, 'keyboard', source);\n break;\n case 'back':\n this.setPath(action.path, 'back', source);\n this.setActive(action.key, 'keyboard', source);\n break;\n case 'expand':\n case 'collapse':\n this.toggleExpanded(action.key, 'keyboard', source);\n break;\n case 'commit':\n case 'toggle':\n this.choose(action.key, 'keyboard', source);\n break;\n default:\n break;\n }\n return action;\n }\n\n /**\n * A level on show that has not arrived asks for its children, once, with a\n * signal aborted when the path moves away or the surface closes. Called from\n * the host's effect with whether the surface is on show.\n */\n syncLoads(showing: boolean) {\n const view = this.view();\n const collection = this.collection();\n const wanted = new Set<string>();\n if (showing) {\n for (const column of view.columns) {\n if (column.pending && !column.failed && column.parent !== undefined)\n wanted.add(column.parent);\n }\n if (this.layout() === 'tree') {\n for (const key of this.source.expandedKeys()) {\n const node = collection.nodeFor(key);\n if (node !== undefined && node.hasChildren && node.children.length === 0) wanted.add(key);\n }\n }\n }\n for (const [key, controller] of this.requested) {\n if (wanted.has(key)) continue;\n controller.abort();\n this.requested.delete(key);\n }\n const isLoading = this.source.isNodeLoading();\n for (const key of wanted) {\n if (this.requested.has(key)) continue;\n const item = collection.nodeFor(key)?.item;\n if (item !== undefined && isLoading?.(item)) continue;\n const controller = new AbortController();\n this.requested.set(key, controller);\n this.source.loadChildren.emit({ key, signal: controller.signal });\n }\n }\n\n destroy() {\n for (const controller of this.requested.values()) controller.abort();\n this.requested.clear();\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { EmbeddedViewRef } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { cascaderFit, cascaderMeasure, pathTo } from '@slotted/core/cascader';\nimport type { CascaderCheckedStrategy, CascaderLayoutAxis } from '@slotted/core/cascader';\nimport type { TreeCollection } from '@slotted/core/collection';\nimport { cascaderMessages, type CascaderMessages, type PartialMessages } from '@slotted/core/i18n';\nimport { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createPortalRoot } from '@slotted/core/portal';\nimport type { PortalRootHandle } from '@slotted/core/portal';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\n\nimport { SlCascaderBody, SlCascaderNode } from './cascader-body';\nimport { injectCascaderDefaults } from './cascader-defaults';\nimport type {\n CascaderExpandOn,\n CascaderSelectionMode,\n CascaderSize,\n CascaderValue,\n CascaderVariant,\n} from './cascader-defaults';\nimport { CascaderEngine } from './cascader-engine';\nimport type { CascaderLoadRequest, CascaderRoom, CascaderSelectable } from './cascader-engine';\n\nlet instances = 0;\n\nconst directionOf = (node: Element | null): 'ltr' | 'rtl' =>\n node !== null && node.ownerDocument.defaultView?.getComputedStyle(node).direction === 'rtl'\n ? 'rtl'\n : 'ltr';\n\n/**\n * The inputs both hosts read. A base class rather than a mixin: the two\n * components declare the same hierarchy, the same state and the same axes, and\n * Angular reads inherited signal inputs.\n */\n@Directive()\nabstract class CascaderBase<T> {\n readonly nodes = input<readonly T[]>([]);\n readonly getKey = input.required<(node: T) => string>();\n readonly getLabel = input.required<(node: T) => string>();\n readonly getChildren = input<((node: T) => readonly T[] | undefined) | undefined>(undefined);\n readonly getParent = input<((node: T) => string | null | undefined) | undefined>(undefined);\n readonly hasChildren = input<((node: T) => boolean) | undefined>(undefined);\n readonly getChildrenCount = input<((node: T) => number | undefined) | undefined>(undefined);\n readonly isNodeDisabled = input<((node: T) => boolean) | undefined>(undefined);\n readonly isNodeLoading = input<((node: T) => boolean) | undefined>(undefined);\n readonly isNodeFailed = input<((node: T) => boolean) | undefined>(undefined);\n readonly getDescription = input<((node: T) => string | undefined) | undefined>(undefined);\n readonly filter = input<((node: T, query: string) => boolean) | undefined>(undefined);\n /** BCP 47, for the substring test and its marks. The language in force when absent. */\n readonly locale = input<string | undefined>(undefined);\n /** The roots are on their way: the first level waits as rows. */\n readonly loading = input(false, { transform: booleanAttribute });\n\n readonly selectionMode = input<CascaderSelectionMode | undefined>(undefined);\n readonly selectable = input<CascaderSelectable<T> | undefined>(undefined);\n readonly checkedStrategy = input<CascaderCheckedStrategy | undefined>(undefined);\n readonly layout = input<CascaderLayoutAxis | undefined>(undefined);\n readonly expandOn = input<CascaderExpandOn | undefined>(undefined);\n readonly search = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly size = input<CascaderSize | undefined>(undefined);\n readonly maxColumns = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly maxCrumbs = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly hoverDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly separator = input<string | undefined>(undefined);\n readonly readOnly = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * placeholder, the buttons, the search field, the breadcrumb, and the\n * sentences a level and a search say.\n */\n readonly messages = input<PartialMessages<CascaderMessages> | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledBy = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n readonly value = model<CascaderValue>(null);\n readonly path = model<readonly string[]>([]);\n readonly activeKey = model<string | null>(null);\n readonly expandedKeys = model<readonly string[]>([]);\n readonly searchValue = model('');\n\n readonly valueChangeRequest = output<ChangeRequest<CascaderValue>>();\n readonly pathChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly activeKeyChangeRequest = output<ChangeRequest<string | null>>();\n readonly expandedKeysChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly searchValueChangeRequest = output<ChangeRequest<string>>();\n /** A level that has not arrived is on show; the signal aborts if the reader moves on. */\n readonly loadChildren = output<CascaderLoadRequest>();\n /** The reader pressed retry on a level that failed. */\n readonly retry = output<string>();\n\n protected readonly nodeTemplate = contentChild(SlCascaderNode);\n protected readonly defaults = injectCascaderDefaults();\n protected readonly identifier = `sl-cascader-${(instances += 1)}`;\n protected readonly treeId = `${this.identifier}-tree`;\n protected readonly room = signal<CascaderRoom>({\n available: undefined,\n columnMeasure: 192,\n inset: 2,\n });\n\n /** The family's words in the language in force, with this instance's `messages` laid over them. */\n readonly t = injectMessages(cascaderMessages, this.messages);\n private readonly inForceLocale = injectLocale();\n /** The locale the search compares and marks in: the `locale` input, or the language in force. */\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.inForceLocale());\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedSeparator = computed(\n () => this.separator() ?? this.defaults.separator,\n );\n protected readonly resolvedExpandOn = computed(() => this.expandOn() ?? this.defaults.expandOn);\n protected readonly resolvedHoverDelay = computed(\n () => this.hoverDelay() ?? this.defaults.hoverDelay,\n );\n protected abstract readonly readOnlyState: () => boolean;\n\n readonly engine: CascaderEngine<T> = new CascaderEngine<T>({\n nodes: this.nodes,\n getKey: this.getKey,\n getLabel: this.getLabel,\n getChildren: this.getChildren,\n getParent: this.getParent,\n hasChildren: this.hasChildren,\n getChildrenCount: this.getChildrenCount,\n isNodeDisabled: this.isNodeDisabled,\n isNodeLoading: this.isNodeLoading,\n isNodeFailed: this.isNodeFailed,\n filter: this.filter,\n locale: this.resolvedLocale,\n loading: this.loading,\n multiple: computed(() => (this.selectionMode() ?? this.defaults.selectionMode) === 'multiple'),\n selectable: computed(() => this.selectable() ?? this.defaults.selectable),\n checkedStrategy: computed(() => this.checkedStrategy() ?? this.defaults.checkedStrategy),\n layout: computed(() => this.layout() ?? this.defaults.layout),\n search: computed(() => this.search() ?? this.defaults.search),\n maxColumns: computed(() => this.maxColumns() ?? this.defaults.maxColumns),\n maxCrumbs: computed(() => this.maxCrumbs() ?? this.defaults.maxCrumbs),\n readOnly: computed(() => this.readOnlyState()),\n t: this.t,\n room: this.room,\n value: this.value,\n path: this.path,\n activeKey: this.activeKey,\n expandedKeys: this.expandedKeys,\n searchValue: this.searchValue,\n valueChangeRequest: this.valueChangeRequest,\n pathChangeRequest: this.pathChangeRequest,\n activeKeyChangeRequest: this.activeKeyChangeRequest,\n expandedKeysChangeRequest: this.expandedKeysChangeRequest,\n searchValueChangeRequest: this.searchValueChangeRequest,\n loadChildren: this.loadChildren,\n });\n\n protected readonly nodeId = (key: string) => `${this.identifier}-node-${encodeURIComponent(key)}`;\n\n private typeaheadHandle: TypeaheadHandle | null = createTypeahead({ timeout: 500 });\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n this.engine.destroy();\n this.typeaheadHandle?.destroy();\n this.typeaheadHandle = null;\n });\n }\n\n /** Typeahead in the level the reader is on, when no field holds the characters. */\n protected typeahead(key: string, source: Event): boolean {\n const handle = this.typeaheadHandle;\n if (handle === null || !isPrintable(key, handle.query.length > 0)) return false;\n const engine = this.engine;\n const collection = engine.collection() as TreeCollection<unknown>;\n const active = engine.activeKey;\n const node = active === null ? undefined : collection.nodeFor(active);\n const siblings =\n engine.layout() === 'tree'\n ? (engine.view().columns[0]?.nodes.map((entry) => entry.key) ?? [])\n : node === undefined\n ? collection.roots\n : collection.siblingsOf(node.key);\n const labels = siblings.map((sibling) => collection.nodeFor(sibling)?.label ?? '');\n const index = handle.match(key, labels, active === null ? -1 : siblings.indexOf(active));\n const target = siblings[index];\n if (target !== undefined) engine.setActive(target, 'keyboard', source);\n return true;\n }\n\n protected scrollActive(container: HTMLElement | null) {\n const active = this.engine.activeKey;\n if (container === null || active === null) return;\n container.ownerDocument.getElementById(this.nodeId(active))?.scrollIntoView?.({\n block: 'nearest',\n });\n }\n}\n\n/**\n * A control that picks one place in a hierarchy, or several.\n *\n * The control is `sl-select`'s control; the popup is an `ng-template` built\n * into the portal as it opens, as `sl-select` builds its own, and holds a tree\n * drawn as columns, one level at a time, or an indented list.\n */\n@Component({\n selector: 'sl-cascader',\n standalone: true,\n exportAs: 'slCascader',\n imports: [NgTemplateOutlet, SlCascaderBody, SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: [\n '../../../styles/src/cascader/cascader.css',\n '../../../styles/src/tag/tag.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/spinner/spinner.css',\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlCascader), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlCascader), multi: true },\n ],\n host: {\n 'data-ui': 'cascader',\n 'data-part': 'root',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-full-width]': \"resolvedFullWidth() ? '' : null\",\n '[attr.data-open]': \"open() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-readonly]': \"readOnlyState() ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n },\n template: `\n <button\n #trigger\n type=\"button\"\n role=\"combobox\"\n data-part=\"trigger\"\n [attr.aria-haspopup]=\"engineSearch() ? 'dialog' : 'tree'\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? (engineSearch() ? contentId : treeId) : null\"\n [attr.aria-activedescendant]=\"triggerActiveDescendant()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabel() === undefined ? (ariaLabelledBy() ?? null) : null\"\n [attr.aria-readonly]=\"readOnlyState() ? true : null\"\n [attr.aria-required]=\"resolvedRequired() ? true : null\"\n [attr.aria-invalid]=\"resolvedInvalid() ? true : null\"\n [disabled]=\"resolvedDisabled()\"\n (click)=\"onTriggerClick($event)\"\n (keydown)=\"onKey($event, false)\"\n (blur)=\"onTouched()\"\n >\n @if (engine.multiple) {\n <span data-part=\"value\"\n ><span data-part=\"summary\">{{ summary() }}</span></span\n >\n } @else if (engine.emitted().length === 0) {\n <span data-part=\"placeholder\">{{ t('placeholder') }}</span>\n } @else if (valueTemplate(); as template) {\n <span data-part=\"value\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: valuePath() }\" />\n </span>\n } @else {\n <span data-part=\"value\">\n @for (segment of segments(); track segment.key) {\n @if (!$first) {\n <span data-part=\"value-separator\" aria-hidden=\"true\">{{ resolvedSeparator() }}</span>\n }\n <span data-part=\"value-segment\">{{ segment.label }}</span>\n }\n </span>\n }\n </button>\n\n @if (engine.multiple && engine.emitted().length > 0) {\n <span data-part=\"tags\">\n @for (key of engine.emitted(); track key) {\n <span data-ui=\"tag\" data-part=\"root\" data-size=\"sm\" data-variant=\"soft\">\n <span data-part=\"body\"\n ><span data-part=\"label\">{{ engine.labelOf(key) }}</span></span\n >\n <button\n type=\"button\"\n data-part=\"remove\"\n [disabled]=\"resolvedDisabled() || readOnlyState()\"\n [attr.aria-label]=\"removeLabel(key)\"\n (click)=\"onRemove(key, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n </span>\n }\n </span>\n }\n\n @if (showClear()) {\n <button\n type=\"button\"\n data-part=\"clear\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"onClear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n @if (loading()) {\n <span data-part=\"busy\" data-ui=\"spinner\" aria-hidden=\"true\"></span>\n } @else {\n <span data-part=\"arrow\"\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span\n ></span>\n }\n @if (name(); as submission) {\n @for (key of engine.emitted(); track key) {\n <input type=\"hidden\" [attr.name]=\"submission\" [attr.form]=\"form() ?? null\" [value]=\"key\" />\n }\n }\n\n <ng-template #layer>\n <div\n data-ui=\"cascader\"\n data-part=\"positioner\"\n [attr.data-layout]=\"engine.layout()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-selection]=\"engine.multiple ? 'multiple' : null\"\n [attr.data-open]=\"open() && positioned() ? '' : null\"\n [attr.inert]=\"open() ? null : ''\"\n >\n <div\n data-part=\"content\"\n [id]=\"contentId\"\n [attr.role]=\"engineSearch() ? 'dialog' : null\"\n [attr.aria-label]=\"engineSearch() ? (ariaLabel() ?? t('search')) : null\"\n >\n @if (engineSearch()) {\n <div data-part=\"search\">\n <span slIcon><svg slGlyph name=\"search\"></svg></span>\n <input\n data-part=\"search-input\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n [attr.aria-controls]=\"treeId\"\n [attr.aria-label]=\"t('search')\"\n [attr.aria-activedescendant]=\"\n engine.activeKey === null ? null : nodeId(engine.activeKey!)\n \"\n [placeholder]=\"t('searchPlaceholder')\"\n [value]=\"searchValue()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onKey($event, true)\"\n />\n </div>\n }\n <sl-cascader-body\n [engine]=\"engine\"\n [nodeId]=\"nodeId\"\n [treeId]=\"treeId\"\n [label]=\"ariaLabel()\"\n [labelledBy]=\"ariaLabelledBy()\"\n [separator]=\"resolvedSeparator()\"\n [expandOn]=\"resolvedExpandOn()\"\n [hoverDelay]=\"resolvedHoverDelay()\"\n [nodeTemplate]=\"nodeTemplate()?.template\"\n [getDescription]=\"getDescription()\"\n [locale]=\"resolvedLocale()\"\n (retry)=\"retry.emit($event)\"\n />\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class SlCascader<T = unknown>\n extends CascaderBase<T>\n implements ControlValueAccessor, Validator\n{\n readonly open = model(false);\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly closeOnSelect = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly clearable = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly variant = input<CascaderVariant | undefined>(undefined);\n readonly fullWidth = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly portal = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly disabled = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly required = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly invalid = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly form = input<string | undefined>(undefined);\n /** The name the hidden inputs carry; a static `name` attribute is read before it is written over. */\n readonly name = input<string | undefined>(\n inject(new HostAttributeToken('name'), { optional: true }) ?? undefined,\n );\n /** The value's path as the control prints it, replacing the segments. */\n readonly valueTemplate = input<TemplateRef<{ $implicit: readonly T[] }> | undefined>(undefined);\n\n protected readonly contentId = `${this.identifier}-content`;\n private readonly disabledByForm = signal(false);\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? (this.disabledByForm() || this.defaults.disabled),\n );\n protected readonly readOnlyState = () => this.readOnly() ?? this.defaults.readOnly;\n protected readonly resolvedRequired = computed(() => this.required() ?? this.defaults.required);\n protected readonly resolvedInvalid = computed(() => this.invalid() ?? this.defaults.invalid);\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedFullWidth = computed(\n () => this.fullWidth() ?? this.defaults.fullWidth,\n );\n protected readonly engineSearch = computed(() => this.search() ?? this.defaults.search);\n protected readonly positioned = signal(false);\n\n protected readonly triggerActiveDescendant = computed(() =>\n this.open() && !this.engineSearch() && this.activeKey() !== null\n ? this.nodeId(this.activeKey() as string)\n : null,\n );\n\n protected readonly valuePath = computed(() => {\n const first = this.engine.emitted()[0];\n if (first === undefined || this.engine.multiple) return [];\n return pathTo(this.engine.collection() as TreeCollection<unknown>, first)\n .map((key) => this.engine.itemFor(key))\n .filter((item): item is T => item !== undefined);\n });\n\n protected readonly segments = computed(() => {\n const first = this.engine.emitted()[0];\n if (first === undefined) return [];\n const path = pathTo(this.engine.collection() as TreeCollection<unknown>, first);\n return path.length === 0\n ? [{ key: first, label: first }]\n : path.map((key) => ({ key, label: this.engine.labelOf(key) }));\n });\n\n protected readonly summary = computed(() => {\n const count = this.engine.emitted().length;\n return count === 0 ? '' : this.t('summary', { count });\n });\n\n protected readonly showClear = computed(\n () =>\n (this.clearable() ?? this.defaults.clearable) &&\n this.engine.emitted().length > 0 &&\n !this.resolvedDisabled() &&\n !this.readOnlyState(),\n );\n\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly template = viewChild.required<TemplateRef<unknown>>('layer');\n private readonly triggerRef = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n\n private view: EmbeddedViewRef<unknown> | null = null;\n private portalRoot: PortalRootHandle | null = null;\n private positioner: PositionerHandle | null = null;\n private layer: DismissableLayerHandle | null = null;\n private layerNode: HTMLElement | null = null;\n private onChange: (value: CascaderValue) => void = () => undefined;\n protected onTouched: () => void = () => undefined;\n\n constructor() {\n super();\n this.engine.onCommitted = () => {\n this.setOpen(false, 'select');\n this.triggerRef().nativeElement.focus({ preventScroll: true });\n };\n\n /* The forms API hears every value the family commits. */\n this.valueChangeRequest.subscribe((request) => {\n queueMicrotask(() => {\n if (!request.cancelled) this.onChange(request.value);\n });\n });\n\n effect(() => {\n this.engine.closeOnSelect = this.closeOnSelect() ?? this.defaults.closeOnSelect;\n });\n\n let wasOpen = false;\n effect(() => {\n const open = this.open() && !this.resolvedDisabled();\n untracked(() => {\n if (open && !wasOpen) this.show();\n if (!open && wasOpen) this.hide();\n wasOpen = open;\n });\n });\n\n effect(() => {\n const showing = this.open();\n this.engine.view();\n untracked(() => this.engine.syncLoads(showing));\n });\n\n /* The widest the window can reach, reserved on the layer, so a path that\n grows never pushes the layer back across the screen. */\n afterRenderEffect(() => {\n const layout = this.engine.layout();\n const room = this.room();\n const maxColumns = this.maxColumns() ?? this.defaults.maxColumns;\n const node = this.layerNode;\n if (node === null) return;\n if (layout !== 'columns') {\n node.style.removeProperty('inline-size');\n return;\n }\n const fit = cascaderFit({ ...room, maxColumns });\n node.style.inlineSize = `${fit * room.columnMeasure + room.inset}px`;\n });\n\n afterRenderEffect(() => {\n void this.activeKey();\n this.scrollActive(this.layerNode);\n });\n\n inject(DestroyRef).onDestroy(() => this.teardown());\n }\n\n focus() {\n this.triggerRef().nativeElement.focus({ preventScroll: true });\n }\n\n /** Shows the level that holds the value, as opening does. */\n revealValue() {\n this.engine.reveal();\n }\n\n protected setOpen(next: boolean, reason: ChangeReason, source?: unknown) {\n if (next === this.open()) return;\n let cancelled = false;\n this.openChangeRequest.emit({\n value: next,\n previous: this.open(),\n reason,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel: () => {\n cancelled = true;\n },\n });\n if (!cancelled) this.open.set(next);\n }\n\n protected removeLabel(key: string) {\n return this.t('remove', { label: this.engine.labelOf(key) });\n }\n\n protected onTriggerClick(event: MouseEvent) {\n if (this.resolvedDisabled()) return;\n this.setOpen(!this.open(), event.detail === 0 ? 'keyboard' : 'pointer', event);\n }\n\n protected onRemove(key: string, event: MouseEvent) {\n this.engine.remove(key, event);\n this.focus();\n }\n\n protected onClear(event: MouseEvent) {\n this.engine.clear(event);\n this.focus();\n }\n\n protected onSearchInput(event: Event) {\n this.engine.setQuery((event.target as HTMLInputElement).value, 'keyboard', event);\n }\n\n protected onKey(event: KeyboardEvent, fromSearch: boolean) {\n if (this.resolvedDisabled()) return;\n if (event.key === 'Tab') {\n if (this.open()) this.setOpen(false, 'blur', event);\n return;\n }\n if (!this.open()) {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.setOpen(true, 'keyboard', event);\n }\n return;\n }\n if (event.key === 'Escape') return;\n if (!fromSearch && !this.engineSearch() && this.typeahead(event.key, event)) {\n event.preventDefault();\n return;\n }\n if (fromSearch && (event.key === 'Home' || event.key === 'End')) return;\n /* The field owns the characters, the space included. */\n if (fromSearch && (event.key === ' ' || isPrintable(event.key, false))) return;\n const action = this.engine.handleKey(\n event.key,\n event,\n directionOf(event.currentTarget as Element),\n true,\n );\n if (action.type !== 'none') event.preventDefault();\n }\n\n private show() {\n if (this.view === null) {\n this.portalRoot = createPortalRoot({\n origin: this.triggerRef().nativeElement,\n disabled: (this.portal() ?? this.defaults.portal) === false,\n });\n this.view = this.viewContainer.createEmbeddedView(this.template());\n this.view.detectChanges();\n this.layerNode =\n (this.view.rootNodes.find(\n (node: unknown): node is HTMLElement => node instanceof HTMLElement,\n ) as HTMLElement | undefined) ?? null;\n if (this.layerNode === null) return;\n this.portalRoot.container?.append(this.layerNode);\n }\n const node = this.layerNode;\n if (node === null) return;\n\n const surface = node.querySelector<HTMLElement>(\"[data-part='content']\");\n if (surface !== null) {\n const measured = cascaderMeasure(surface);\n this.room.update((held) => ({ ...held, ...measured }));\n }\n\n this.engine.reveal();\n\n this.positioner = createPositioner(this.host, node, {\n align: 'start',\n side: 'bottom',\n sideOffset: 4,\n boundaryPadding: 8,\n matchWidth: this.engine.layout() !== 'columns',\n onPositioned: (position) => {\n if (this.room().available !== position.availableWidth) {\n this.room.update((held) => ({ ...held, available: position.availableWidth }));\n }\n },\n });\n /* `data-open` is written on the element in the task that opened the layer,\n with the position; the binding says it again on the next check. */\n void this.positioner.update().then(() => {\n if (this.open()) node.setAttribute('data-open', '');\n this.positioned.set(true);\n });\n\n this.layer = createDismissableLayer(node, {\n branches: [this.host],\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n onDismiss: (request) => {\n const source = request.source as Event | undefined;\n if (request.reason === 'escape' && this.engine.query !== '') {\n this.engine.setQuery('', 'clear', source);\n return;\n }\n this.setOpen(false, request.reason === 'escape' ? 'escape' : 'outsidePress', source);\n if (request.reason === 'escape') this.focus();\n },\n });\n\n if (this.engineSearch()) {\n queueMicrotask(() =>\n node.querySelector<HTMLInputElement>(\"[data-part='search-input']\")?.focus({\n preventScroll: true,\n }),\n );\n }\n }\n\n private hide() {\n this.positioned.set(false);\n this.layer?.destroy();\n this.positioner?.destroy();\n this.layer = null;\n this.positioner = null;\n this.engine.setQuery('', 'clear');\n this.teardown();\n }\n\n private teardown() {\n this.layer?.destroy();\n this.positioner?.destroy();\n this.portalRoot?.release();\n this.layerNode?.remove();\n this.view?.destroy();\n this.layer = null;\n this.positioner = null;\n this.portalRoot = null;\n this.layerNode = null;\n this.view = null;\n }\n\n writeValue(value: CascaderValue) {\n this.value.set(value ?? (this.engine.multiple ? [] : null));\n }\n\n registerOnChange(fn: (value: CascaderValue) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabledByForm.set(isDisabled);\n }\n\n /**\n * The validity the family owns: nothing chosen while required, and a key the\n * collection cannot resolve — a value that names a node no longer there.\n */\n validate(): ValidationErrors | null {\n const keys = this.engine.emitted();\n if (this.resolvedRequired() && keys.length === 0) return { required: true };\n const collection = this.engine.collection();\n const unresolved =\n this.nodes().length === 0 ? [] : keys.filter((key) => collection.nodeFor(key) === undefined);\n return unresolved.length > 0 ? { unresolved } : null;\n }\n}\n\n/**\n * The same tree on the page, without a control or a layer: a settings screen\n * or a sidebar. The tree takes focus and carries `aria-activedescendant`.\n */\n@Component({\n selector: 'sl-cascader-panel',\n standalone: true,\n exportAs: 'slCascaderPanel',\n imports: [SlCascaderBody],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: [\n '../../../styles/src/cascader/cascader.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/spinner/spinner.css',\n ],\n host: {\n 'data-ui': 'cascader',\n 'data-part': 'content',\n '[attr.data-layout]': 'engine.layout()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-selection]': \"engine.multiple ? 'multiple' : null\",\n },\n template: `\n <sl-cascader-body\n [engine]=\"engine\"\n [nodeId]=\"nodeId\"\n [treeId]=\"treeId\"\n [focusable]=\"true\"\n [label]=\"ariaLabel()\"\n [labelledBy]=\"ariaLabelledBy()\"\n [separator]=\"resolvedSeparator()\"\n [expandOn]=\"resolvedExpandOn()\"\n [hoverDelay]=\"resolvedHoverDelay()\"\n [nodeTemplate]=\"nodeTemplate()?.template\"\n [getDescription]=\"getDescription()\"\n [locale]=\"resolvedLocale()\"\n (retry)=\"retry.emit($event)\"\n (treeKeydown)=\"onKey($event)\"\n />\n `,\n})\nexport class SlCascaderPanel<T = unknown> extends CascaderBase<T> {\n protected readonly readOnlyState = () => this.readOnly() ?? this.defaults.readOnly;\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n\n constructor() {\n super();\n effect(() => {\n this.engine.view();\n untracked(() => this.engine.syncLoads(true));\n });\n\n afterRenderEffect(() => {\n const measured = cascaderMeasure(this.host);\n const available = (this.host.parentElement ?? this.host).getBoundingClientRect().width;\n const held = this.room();\n if (\n held.available !== available ||\n held.columnMeasure !== measured.columnMeasure ||\n held.inset !== measured.inset\n ) {\n this.room.set({ available, ...measured });\n }\n });\n\n let revealed = false;\n afterRenderEffect(() => {\n if (revealed) return;\n revealed = true;\n if (untracked(() => this.activeKey()) === null) untracked(() => this.engine.reveal());\n });\n\n afterRenderEffect(() => {\n void this.activeKey();\n this.scrollActive(this.host);\n });\n\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n const available = (this.host.parentElement ?? this.host).getBoundingClientRect().width;\n if (this.room().available !== available) {\n this.room.update((room) => ({ ...room, available }));\n }\n });\n queueMicrotask(() => observer.observe(this.host.parentElement ?? this.host));\n inject(DestroyRef).onDestroy(() => observer.disconnect());\n }\n }\n\n protected onKey(event: KeyboardEvent) {\n if (this.typeahead(event.key, event)) {\n event.preventDefault();\n return;\n }\n const action = this.engine.handleKey(\n event.key,\n event,\n directionOf(event.currentTarget as Element),\n true,\n );\n if (action.type !== 'none' && action.type !== 'close') event.preventDefault();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slotted-angular-cascader.mjs","sources":["../../cascader/src/cascader-body.ts","../../cascader/src/cascader-defaults.ts","../../cascader/src/cascader-engine.ts","../../cascader/src/cascader.ts","../../cascader/src/slotted-angular-cascader.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n inject,\n input,\n output,\n TemplateRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlButton } from '@slotted/angular/button';\nimport { SlHighlight } from '@slotted/angular/highlight';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport type { CascaderCrumb, CascaderNodeView } from '@slotted/core/cascader';\nimport { matchRanges } from '@slotted/core/highlight';\n\nimport type { CascaderEngine } from './cascader-engine';\n\n/** What a node template receives: the consumer's own item, and its state. */\nexport interface CascaderNodeContext<T> {\n $implicit: T;\n view: CascaderNodeView;\n}\n\n/**\n * The label of a node, written by the consumer:\n * `<ng-template slCascaderNode let-place let-view=\"view\">…</ng-template>`.\n * The row, its marks and its count stay the family's.\n */\n@Directive({ selector: 'ng-template[slCascaderNode]', standalone: true })\nexport class SlCascaderNode<T = unknown> {\n readonly template = inject<TemplateRef<CascaderNodeContext<T>>>(TemplateRef);\n\n static ngTemplateContextGuard<T>(\n _directive: SlCascaderNode<T>,\n context: unknown,\n ): context is CascaderNodeContext<T> {\n return context !== null;\n }\n}\n\n/**\n * What the surface holds, the same in the popup and on the page: the\n * breadcrumb, then the tree with its columns, or the results of a query. Its\n * host takes no box (`display: contents`), so the surface's own layout reaches\n * the breadcrumb and the tree as if they were its children.\n */\n@Component({\n selector: 'sl-cascader-body',\n standalone: true,\n imports: [NgTemplateOutlet, SlButton, SlGlyph, SlHighlight, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { style: 'display: contents' },\n template: `\n @let view = engine().view();\n @if (view.crumbs.length > 0) {\n <nav\n data-part=\"breadcrumb\"\n data-part-breadcrumb=\"\"\n [attr.aria-label]=\"engine().t('breadcrumb')\"\n >\n @for (crumb of view.crumbs; track $index) {\n @if (!$first) {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n @if (crumb.type === 'collapsed') {\n <button\n type=\"button\"\n data-part=\"crumb\"\n data-part-crumb=\"\"\n data-collapsed\n [attr.aria-label]=\"backLabel(crumb.target)\"\n (click)=\"goTo(crumb.target, $event)\"\n >\n …\n </button>\n } @else {\n <button\n type=\"button\"\n data-part=\"crumb\"\n data-part-crumb=\"\"\n [attr.aria-current]=\"crumb.current ? 'location' : null\"\n (click)=\"onCrumb(crumb, $event)\"\n >\n {{ engine().labelOf(crumb.key) }}\n </button>\n }\n }\n @if (engine().layout() === 'columns') {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n </nav>\n }\n <div\n data-part=\"panel\"\n data-part-panel=\"\"\n role=\"tree\"\n [id]=\"treeId()\"\n [attr.tabindex]=\"focusable() ? 0 : null\"\n [attr.aria-activedescendant]=\"\n focusable() && engine().activeKey !== null ? nodeId()(engine().activeKey!) : null\n \"\n [attr.aria-label]=\"label() ?? null\"\n [attr.aria-labelledby]=\"label() === undefined ? (labelledBy() ?? null) : null\"\n [attr.aria-multiselectable]=\"engine().multiple ? true : null\"\n (keydown)=\"treeKeydown.emit($event)\"\n >\n @if (view.searching) {\n <div\n data-part=\"column\"\n data-part-column=\"\"\n role=\"group\"\n [attr.aria-label]=\"engine().t('search')\"\n >\n @for (node of view.results; track node.key) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: node }\" />\n }\n @if (view.results.length === 0) {\n <div data-part=\"empty\" data-part-empty=\"\">{{ noResults() }}</div>\n }\n <div data-part=\"status\" data-part-status=\"\" role=\"status\">\n {{ resultCount(view.results.length) }}\n </div>\n </div>\n } @else {\n @for (column of view.columns; track column.parent ?? '') {\n <div\n data-part=\"column\"\n data-part-column=\"\"\n role=\"group\"\n [attr.aria-label]=\"engine().labelOf(column.parent)\"\n [attr.aria-busy]=\"column.pending && !column.failed ? true : null\"\n >\n @for (node of column.nodes; track node.key) {\n <ng-container *ngTemplateOutlet=\"row; context: { $implicit: node }\" />\n }\n @if (column.pending && !column.failed) {\n @for (index of [0, 1, 2]; track index) {\n <div data-part=\"loader\" data-part-loader=\"\" aria-hidden=\"true\">\n <span\n data-ui=\"skeleton\"\n data-ui-skeleton=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-shape=\"text\"\n data-loading\n ></span>\n </div>\n }\n }\n @if (column.failed && column.parent !== undefined) {\n <div data-part=\"status\" data-part-status=\"\" role=\"status\">\n {{ failedLabel(column.parent) }}\n <button\n slButton\n size=\"sm\"\n variant=\"outline\"\n type=\"button\"\n (click)=\"retry.emit(column.parent)\"\n >\n {{ engine().t('retry') }}\n </button>\n </div>\n }\n @if (!column.pending && !column.failed && column.nodes.length === 0) {\n <div data-part=\"empty\" data-part-empty=\"\">{{ engine().t('empty') }}</div>\n }\n </div>\n }\n }\n </div>\n\n <ng-template #row let-node>\n <div\n data-part=\"node\"\n data-part-node=\"\"\n role=\"treeitem\"\n [id]=\"nodeId()(node.key)\"\n [attr.aria-level]=\"view.searching ? null : node.level\"\n [attr.aria-posinset]=\"view.searching ? null : node.posInSet\"\n [attr.aria-setsize]=\"view.searching ? null : node.setSize\"\n [attr.aria-expanded]=\"node.branch && !view.searching ? node.expanded : null\"\n [attr.aria-selected]=\"engine().multiple ? null : node.selected\"\n [attr.aria-checked]=\"\n engine().multiple ? (node.indeterminate ? 'mixed' : node.selected) : null\n \"\n [attr.aria-disabled]=\"node.disabled ? true : null\"\n [attr.aria-busy]=\"node.loading ? true : null\"\n [attr.data-current]=\"node.current ? '' : null\"\n [attr.data-expanded]=\"node.expanded && !view.searching ? '' : null\"\n [attr.data-selected]=\"node.selected ? '' : null\"\n [attr.data-indeterminate]=\"node.indeterminate ? '' : null\"\n [attr.data-disabled]=\"node.disabled ? '' : null\"\n [attr.data-loading]=\"node.loading ? '' : null\"\n [style.--slotted-cascader-depth]=\"\n engine().layout() === 'tree' && !view.searching ? node.depth : null\n \"\n (click)=\"onNodeClick(node, $event)\"\n (pointermove)=\"onPointerMove(node, $event)\"\n (pointerenter)=\"onPointerEnter(node)\"\n (pointerleave)=\"cancelHover()\"\n >\n @if (engine().multiple) {\n <span data-part=\"indicator\" data-part-indicator=\"\"\n ><span slIcon><svg slGlyph [name]=\"node.indeterminate ? 'minus' : 'check'\"></svg></span\n ></span>\n }\n <span data-part=\"label\" data-part-label=\"\">\n @if (nodeTemplate(); as template) {\n <ng-container\n *ngTemplateOutlet=\"\n template;\n context: { $implicit: engine().itemFor(node.key), view: node }\n \"\n />\n } @else if (view.searching && engine().query !== '') {\n <span slHighlight [text]=\"node.label\" [ranges]=\"ranges(node.label)\"></span>\n } @else {\n {{ node.label }}\n }\n </span>\n @if (descriptionOf(node, view.searching); as description) {\n <span data-part=\"description\" data-part-description=\"\">{{ description }}</span>\n }\n @if (metaOf(node); as meta) {\n <span data-part=\"meta\" data-part-meta=\"\" aria-hidden=\"true\">{{ meta }}</span>\n }\n @if (node.branch) {\n <span data-part=\"expander\" data-part-expander=\"\" aria-hidden=\"true\">\n @if (node.loading) {\n <span data-ui=\"spinner\" data-ui-spinner=\"\" data-part=\"root\" data-part-root=\"\"></span>\n } @else {\n <span slIcon directional><svg slGlyph name=\"chevron-right\"></svg></span>\n }\n </span>\n } @else if (!engine().multiple) {\n <span data-part=\"indicator\" data-part-indicator=\"\"\n ><span slIcon><svg slGlyph name=\"check\"></svg></span\n ></span>\n }\n </div>\n </ng-template>\n `,\n})\nexport class SlCascaderBody<T> {\n readonly engine = input.required<CascaderEngine<T>>();\n readonly nodeId = input.required<(key: string) => string>();\n readonly treeId = input.required<string>();\n readonly focusable = input(false);\n readonly label = input<string | undefined>(undefined);\n readonly labelledBy = input<string | undefined>(undefined);\n readonly separator = input('/');\n readonly expandOn = input<'press' | 'hover'>('press');\n readonly hoverDelay = input(150);\n readonly nodeTemplate = input<TemplateRef<CascaderNodeContext<T>> | undefined>(undefined);\n readonly getDescription = input<((node: T) => string | undefined) | undefined>(undefined);\n readonly locale = input<string | undefined>(undefined);\n\n readonly retry = output<string>();\n readonly treeKeydown = output<KeyboardEvent>();\n\n private hover: ReturnType<typeof setTimeout> | undefined;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => clearTimeout(this.hover));\n }\n\n /**\n * The `highlight` family draws the match, from the collator the search used,\n * so the mark reads the same here as in every other filtered list.\n */\n protected ranges(label: string) {\n return matchRanges(label, this.engine().query, { locale: this.locale() });\n }\n\n protected backLabel(key: string | undefined) {\n return this.engine().t('back', { label: this.engine().labelOf(key) });\n }\n\n protected failedLabel(key: string) {\n return this.engine().t('failed', { label: this.engine().labelOf(key) });\n }\n\n protected noResults() {\n return this.engine().t('noResults', { query: this.engine().query });\n }\n\n protected resultCount(count: number) {\n return count === 0 ? '' : this.engine().t('results', { count });\n }\n\n protected descriptionOf(node: CascaderNodeView, searching: boolean): string | undefined {\n const engine = this.engine();\n if (searching) {\n const trail = node.trail.map((key) => engine.labelOf(key)).join(` ${this.separator()} `);\n return trail === '' ? undefined : trail;\n }\n const item = engine.itemFor(node.key);\n return item === undefined ? undefined : this.getDescription()?.(item);\n }\n\n protected metaOf(node: CascaderNodeView): string | undefined {\n if (!node.branch) return undefined;\n /* Inside a chosen branch the count is how many are chosen there. */\n if (this.engine().multiple && node.selectedInside > 0) return String(node.selectedInside);\n return node.childrenCount === undefined ? undefined : String(node.childrenCount);\n }\n\n protected goTo(level: string | undefined, event: MouseEvent) {\n this.engine().goTo(level, event.detail === 0 ? 'keyboard' : 'pointer', event);\n }\n\n protected onCrumb(crumb: CascaderCrumb, event: MouseEvent) {\n if (crumb.type === 'level' && !crumb.current) this.goTo(crumb.key, event);\n }\n\n protected onPointerMove(node: CascaderNodeView, event: PointerEvent) {\n if (!node.current) this.engine().setActive(node.key, 'pointer', event);\n }\n\n protected onPointerEnter(node: CascaderNodeView) {\n this.cancelHover();\n const engine = this.engine();\n if (this.expandOn() !== 'hover' || !node.branch || node.disabled) return;\n if (engine.layout() === 'tree' || engine.view().searching) return;\n /* Hover shows a level after a rest and never commits. */\n this.hover = setTimeout(() => engine.showLevel(node.key, 'pointer'), this.hoverDelay());\n }\n\n protected cancelHover() {\n clearTimeout(this.hover);\n }\n\n protected onNodeClick(node: CascaderNodeView, event: MouseEvent) {\n if (node.disabled) return;\n const engine = this.engine();\n const reason = event.detail === 0 ? 'keyboard' : 'pointer';\n const target = event.target as Element;\n const onBox = target.closest(\"[data-part='indicator']\") !== null;\n const onExpander = target.closest(\"[data-part='expander']\") !== null;\n\n if (engine.view().searching) {\n if (node.selectable) engine.choose(node.key, reason, event);\n else if (node.branch) {\n engine.setQuery('', 'select', event);\n engine.showLevel(node.key, reason, event);\n }\n return;\n }\n if (engine.layout() === 'tree') {\n if (node.branch && (onExpander || !node.selectable)) {\n engine.toggleExpanded(node.key, reason, event);\n return;\n }\n engine.choose(node.key, reason, event);\n return;\n }\n if (engine.multiple && onBox) {\n engine.choose(node.key, reason, event);\n return;\n }\n if (node.branch) {\n engine.showLevel(node.key, reason, event);\n engine.setActive(node.key, reason, event);\n /* A branch the consumer made selectable is chosen as it opens, and the\n popup stays: the reader is drilling. */\n if (node.selectable && !engine.multiple)\n engine.choose(node.key, reason, event, { close: false });\n return;\n }\n engine.choose(node.key, reason, event);\n }\n}\n","import { inject, InjectionToken } from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport type { CascaderCheckedStrategy, CascaderLayoutAxis } from '@slotted/core/cascader';\n\nexport type { CascaderCheckedStrategy, CascaderLayoutAxis };\nexport type CascaderSize = 'sm' | 'md' | 'lg';\nexport type CascaderVariant = 'outline' | 'subtle' | 'plain';\nexport type CascaderSelectionMode = 'single' | 'multiple';\nexport type CascaderExpandOn = 'press' | 'hover';\n/** A scalar for one choice, a list for many — the shape `tree` and `listbox` settled. */\nexport type CascaderValue = string | null | readonly string[];\n\n/** Every decision an application takes once rather than per instance. */\nexport interface CascaderDefaults {\n size: CascaderSize;\n variant: CascaderVariant;\n fullWidth: boolean;\n layout: CascaderLayoutAxis;\n selectionMode: CascaderSelectionMode;\n selectable: 'leaf' | 'any';\n checkedStrategy: CascaderCheckedStrategy;\n expandOn: CascaderExpandOn;\n closeOnSelect: boolean;\n search: boolean;\n clearable: boolean;\n portal: boolean;\n disabled: boolean;\n readOnly: boolean;\n required: boolean;\n invalid: boolean;\n separator: string;\n hoverDelay: number;\n maxColumns: number;\n maxCrumbs: number;\n}\n\nexport const CASCADER_FALLBACK: CascaderDefaults = {\n size: 'md',\n variant: 'outline',\n fullWidth: true,\n layout: 'auto',\n selectionMode: 'single',\n selectable: 'leaf',\n checkedStrategy: 'all',\n expandOn: 'press',\n closeOnSelect: true,\n search: false,\n clearable: true,\n portal: true,\n disabled: false,\n readOnly: false,\n required: false,\n invalid: false,\n separator: '/',\n hoverDelay: 150,\n maxColumns: 3,\n maxCrumbs: 4,\n};\n\nexport const CASCADER_DEFAULTS = new InjectionToken<CascaderDefaults>('CASCADER_DEFAULTS', {\n providedIn: 'root',\n factory: () => CASCADER_FALLBACK,\n});\n\n/**\n * Sets every axis once, in the bootstrap or on a route. The words come from the\n * language in force (`provideSlotted`).\n */\nexport function provideCascaderDefaults(defaults: Partial<CascaderDefaults>): Provider {\n return { provide: CASCADER_DEFAULTS, useValue: { ...CASCADER_FALLBACK, ...defaults } };\n}\n\nexport function injectCascaderDefaults(): CascaderDefaults {\n return inject(CASCADER_DEFAULTS);\n}\n","import { computed } from '@angular/core';\nimport type { ModelSignal, OutputEmitterRef, Signal } from '@angular/core';\nimport { cascadeSelection, createTreeCollection } from '@slotted/core/collection';\nimport type { TreeCollection } from '@slotted/core/collection';\nimport {\n cascaderFit,\n cascaderKey,\n cascaderLayout,\n cascaderSelection,\n cascaderValue,\n cascaderView,\n flatToTree,\n pathTo,\n} from '@slotted/core/cascader';\nimport type {\n CascaderCheckedStrategy,\n CascaderKeyAction,\n CascaderLayout,\n CascaderLayoutAxis,\n CascaderView,\n} from '@slotted/core/cascader';\nimport type { CascaderMessages, FamilyTranslator } from '@slotted/core/i18n';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\n\nimport type { CascaderValue } from './cascader-defaults';\n\n/** What a level that has not arrived asks for, with the signal that withdraws it. */\nexport interface CascaderLoadRequest {\n readonly key: string;\n readonly signal: AbortSignal;\n}\n\nexport type CascaderSelectable<T> = 'leaf' | 'any' | ((node: T) => boolean);\n\n/** Space the surface measured. */\nexport interface CascaderRoom {\n available: number | undefined;\n columnMeasure: number;\n inset: number;\n}\n\nexport interface CascaderEngineSource<T> {\n nodes: Signal<readonly T[]>;\n getKey: Signal<(node: T) => string>;\n getLabel: Signal<(node: T) => string>;\n getChildren: Signal<((node: T) => readonly T[] | undefined) | undefined>;\n getParent: Signal<((node: T) => string | null | undefined) | undefined>;\n hasChildren: Signal<((node: T) => boolean) | undefined>;\n getChildrenCount: Signal<((node: T) => number | undefined) | undefined>;\n isNodeDisabled: Signal<((node: T) => boolean) | undefined>;\n isNodeLoading: Signal<((node: T) => boolean) | undefined>;\n isNodeFailed: Signal<((node: T) => boolean) | undefined>;\n filter: Signal<((node: T, query: string) => boolean) | undefined>;\n locale: Signal<string | undefined>;\n loading: Signal<boolean>;\n multiple: Signal<boolean>;\n selectable: Signal<CascaderSelectable<T>>;\n checkedStrategy: Signal<CascaderCheckedStrategy>;\n layout: Signal<CascaderLayoutAxis>;\n search: Signal<boolean>;\n maxColumns: Signal<number>;\n maxCrumbs: Signal<number>;\n readOnly: Signal<boolean>;\n /** The family's words in the language in force. */\n t: FamilyTranslator<CascaderMessages>;\n room: Signal<CascaderRoom>;\n\n value: ModelSignal<CascaderValue>;\n path: ModelSignal<readonly string[]>;\n activeKey: ModelSignal<string | null>;\n expandedKeys: ModelSignal<readonly string[]>;\n searchValue: ModelSignal<string>;\n\n valueChangeRequest: OutputEmitterRef<ChangeRequest<CascaderValue>>;\n pathChangeRequest: OutputEmitterRef<ChangeRequest<readonly string[]>>;\n activeKeyChangeRequest: OutputEmitterRef<ChangeRequest<string | null>>;\n expandedKeysChangeRequest: OutputEmitterRef<ChangeRequest<readonly string[]>>;\n searchValueChangeRequest: OutputEmitterRef<ChangeRequest<string>>;\n loadChildren: OutputEmitterRef<CascaderLoadRequest>;\n}\n\nconst sameList = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length && a.every((key, index) => key === b[index]);\nconst same = (a: unknown, b: unknown) =>\n Array.isArray(a) && Array.isArray(b) ? sameList(a, b) : a === b;\n\n/** The keys a value names, in the order it names them. */\nexport function valueKeys(value: CascaderValue | undefined): readonly string[] {\n if (value === undefined || value === null) return [];\n return typeof value === 'string' ? [value] : value;\n}\n\n/**\n * The cascader's state, as signals, shared by the control and the panel. The\n * rules are `@slotted/core/cascader`'s; this class only holds the values, asks\n * before it moves one, and turns a key or a press into the request.\n */\nexport class CascaderEngine<T> {\n readonly collection: Signal<TreeCollection<T>>;\n readonly layout: Signal<CascaderLayout>;\n readonly fit: Signal<number>;\n readonly emitted: Signal<readonly string[]>;\n readonly view: Signal<CascaderView>;\n /** Called after a single commit that should close the popup. */\n onCommitted: (() => void) | undefined;\n closeOnSelect = false;\n\n private readonly selected: Signal<readonly string[]>;\n private readonly requested = new Map<string, AbortController>();\n\n constructor(private readonly source: CascaderEngineSource<T>) {\n this.collection = computed(() => {\n const nodes = source.nodes();\n const getKey = source.getKey();\n const getParent = source.getParent();\n const flat = getParent === undefined ? undefined : flatToTree(nodes, { getKey, getParent });\n const getChildren = flat?.getChildren ?? source.getChildren();\n return createTreeCollection<T>({\n roots: flat?.roots ?? nodes,\n getKey,\n getLabel: source.getLabel(),\n getChildren,\n hasChildren: source.hasChildren() ?? ((node: T) => (getChildren?.(node)?.length ?? 0) > 0),\n getChildrenCount: source.getChildrenCount(),\n isDisabled: source.isNodeDisabled(),\n });\n });\n\n this.layout = computed(() => {\n const room = source.room();\n return cascaderLayout({ layout: source.layout(), ...room });\n });\n this.fit = computed(() => cascaderFit({ ...source.room(), maxColumns: source.maxColumns() }));\n this.emitted = computed(() => valueKeys(source.value()));\n this.selected = computed(() =>\n source.multiple()\n ? cascaderSelection(this.collection() as TreeCollection<unknown>, this.emitted())\n : this.emitted(),\n );\n\n this.view = computed(() => {\n const collection = this.collection();\n const filter = source.filter();\n const isLoading = source.isNodeLoading();\n const isFailed = source.isNodeFailed();\n const item = (key: string) => collection.nodeFor(key)?.item;\n const view = cascaderView({\n collection: collection as TreeCollection<unknown>,\n layout: this.layout(),\n path: source.path(),\n activeKey: source.activeKey(),\n expandedKeys: source.expandedKeys(),\n query: source.search() ? source.searchValue() : '',\n selected: this.selected(),\n selectionMode: source.multiple() ? 'multiple' : 'single',\n isSelectable: (key) => this.isSelectable(key),\n isLoading: (key) => {\n const node = item(key);\n return node !== undefined && (isLoading?.(node) ?? false);\n },\n isFailed: (key) => {\n const node = item(key);\n return node !== undefined && (isFailed?.(node) ?? false);\n },\n fit: this.fit(),\n maxCrumbs: source.maxCrumbs(),\n filter:\n filter === undefined\n ? undefined\n : (key, query) => {\n const node = item(key);\n return node !== undefined && filter(node, query);\n },\n locale: source.locale(),\n });\n if (source.loading() && collection.roots.length === 0 && !view.searching) {\n return {\n ...view,\n columns: [{ parent: undefined, level: 1, pending: true, failed: false, nodes: [] }],\n };\n }\n return view;\n });\n }\n\n get query(): string {\n return this.source.search() ? this.source.searchValue() : '';\n }\n\n get multiple(): boolean {\n return this.source.multiple();\n }\n\n /** The family's words in the language in force, read by the surface. */\n get t(): FamilyTranslator<CascaderMessages> {\n return this.source.t;\n }\n\n get activeKey(): string | null {\n return this.source.activeKey();\n }\n\n itemFor(key: string): T | undefined {\n return this.collection().nodeFor(key)?.item;\n }\n\n labelOf(key: string | undefined): string {\n if (key === undefined) return this.source.t('root');\n return this.collection().nodeFor(key)?.label ?? key;\n }\n\n /**\n * Under a multiple selection every node that is not disabled has a box: a\n * branch's box toggles everything below it. `selectable` decides what a\n * single selection may commit.\n */\n isSelectable(key: string): boolean {\n const node = this.collection().nodeFor(key);\n if (node === undefined || node.disabled) return false;\n if (this.source.multiple()) return true;\n const selectable = this.source.selectable();\n if (typeof selectable === 'function') return selectable(node.item);\n return selectable === 'any' || !node.hasChildren;\n }\n\n private request<V>(\n model: ModelSignal<V>,\n output: OutputEmitterRef<ChangeRequest<V>>,\n next: V,\n reason: ChangeReason,\n source?: unknown,\n ): boolean {\n if (same(next, model())) return false;\n const controllable = createControllable<V>({\n initial: model(),\n equals: () => false,\n onRequest: (request) => output.emit(request),\n });\n if (!controllable.request(next, reason, source)) return false;\n model.set(next);\n return true;\n }\n\n setActive(key: string | null, reason: ChangeReason, source?: unknown) {\n this.request(this.source.activeKey, this.source.activeKeyChangeRequest, key, reason, source);\n }\n\n setPath(path: readonly string[], reason: ChangeReason, source?: unknown) {\n this.request(this.source.path, this.source.pathChangeRequest, path, reason, source);\n }\n\n setQuery(query: string, reason: ChangeReason, source?: unknown) {\n this.request(\n this.source.searchValue,\n this.source.searchValueChangeRequest,\n query,\n reason,\n source,\n );\n }\n\n setValue(value: CascaderValue, reason: ChangeReason, source?: unknown): boolean {\n return this.request(this.source.value, this.source.valueChangeRequest, value, reason, source);\n }\n\n showLevel(branch: string, reason: ChangeReason, source?: unknown) {\n this.setPath(pathTo(this.collection() as TreeCollection<unknown>, branch), reason, source);\n }\n\n goTo(level: string | undefined, reason: ChangeReason, source?: unknown) {\n const next =\n level === undefined ? [] : pathTo(this.collection() as TreeCollection<unknown>, level);\n const from = this.source.path()[next.length];\n this.setPath(next, reason === 'pointer' ? 'pointer' : 'back', source);\n if (from !== undefined) this.setActive(from, reason, source);\n }\n\n toggleExpanded(key: string, reason: ChangeReason, source?: unknown) {\n const held = this.source.expandedKeys();\n this.request(\n this.source.expandedKeys,\n this.source.expandedKeysChangeRequest,\n held.includes(key) ? held.filter((candidate) => candidate !== key) : [...held, key],\n reason,\n source,\n );\n }\n\n choose(key: string, reason: ChangeReason, source?: unknown, options: { close?: boolean } = {}) {\n if (!this.isSelectable(key) || this.source.readOnly()) return;\n const collection = this.collection() as TreeCollection<unknown>;\n if (!this.source.multiple()) {\n const moved = this.setValue(key, reason === 'keyboard' ? 'keyboard' : 'pointer', source);\n if ((moved || this.source.value() === key) && this.closeOnSelect && options.close !== false) {\n this.onCommitted?.();\n }\n return;\n }\n const result = cascadeSelection({\n collection,\n selected: this.selected(),\n key,\n action: 'toggle',\n });\n if (!result.changed) return;\n this.setValue(\n cascaderValue({\n collection,\n selected: result.selected,\n strategy: this.source.checkedStrategy(),\n }),\n reason,\n source,\n );\n }\n\n remove(key: string, source?: unknown) {\n if (!this.source.multiple()) {\n this.setValue(null, 'remove', source);\n return;\n }\n const collection = this.collection() as TreeCollection<unknown>;\n const result = cascadeSelection({\n collection,\n selected: this.selected(),\n key,\n action: 'deselect',\n });\n this.setValue(\n cascaderValue({\n collection,\n selected: result.selected,\n strategy: this.source.checkedStrategy(),\n }),\n 'remove',\n source,\n );\n }\n\n clear(source?: unknown) {\n this.setValue(this.source.multiple() ? [] : null, 'clear', source);\n }\n\n /** The level that holds the value on show, and the value active in it. */\n reveal() {\n const collection = this.collection() as TreeCollection<unknown>;\n const first = this.emitted()[0];\n if (first === undefined || collection.nodeFor(first) === undefined) {\n if (this.source.activeKey() === null) {\n this.setActive(collection.roots[0] ?? null, 'programmatic');\n }\n return;\n }\n const trail = pathTo(collection, first);\n this.setPath(trail.slice(0, -1), 'programmatic');\n this.request(\n this.source.expandedKeys,\n this.source.expandedKeysChangeRequest,\n trail.slice(0, -1),\n 'programmatic',\n );\n this.setActive(first, 'programmatic');\n }\n\n /** Runs a key; the action the core decided, or `handled` for a search key. */\n handleKey(\n key: string,\n source: unknown,\n dir: 'ltr' | 'rtl',\n open: boolean,\n ): CascaderKeyAction | { type: 'handled' } {\n const collection = this.collection() as TreeCollection<unknown>;\n const view = this.view();\n const active = this.source.activeKey();\n\n if (open && view.searching) {\n const results = view.results.map((node) => node.key);\n const index = active === null ? -1 : results.indexOf(active);\n if (key === 'ArrowDown' || key === 'ArrowUp') {\n const next =\n results[\n Math.min(results.length - 1, Math.max(0, index + (key === 'ArrowDown' ? 1 : -1)))\n ];\n if (next !== undefined) this.setActive(next, 'keyboard', source);\n return { type: 'handled' };\n }\n if (key === 'Enter' && active !== null) {\n if (this.isSelectable(active)) this.choose(active, 'keyboard', source);\n else if (collection.nodeFor(active)?.hasChildren) {\n this.setQuery('', 'select', source);\n this.showLevel(active, 'keyboard', source);\n const first = collection.nodeFor(active)?.children[0];\n if (first !== undefined) this.setActive(first, 'keyboard', source);\n }\n return { type: 'handled' };\n }\n return { type: 'none' };\n }\n\n const action = cascaderKey({\n key,\n dir,\n layout: this.layout(),\n open,\n active: active ?? undefined,\n path: this.source.path(),\n expandedKeys: this.source.expandedKeys(),\n collection,\n selectionMode: this.source.multiple() ? 'multiple' : 'single',\n isSelectable: (candidate) => this.isSelectable(candidate),\n search: this.source.search(),\n hasQuery: this.query !== '',\n });\n\n switch (action.type) {\n case 'move':\n this.setActive(action.key, 'keyboard', source);\n break;\n case 'enter':\n this.setPath(action.path, 'keyboard', source);\n if (action.key !== undefined) this.setActive(action.key, 'keyboard', source);\n break;\n case 'back':\n this.setPath(action.path, 'back', source);\n this.setActive(action.key, 'keyboard', source);\n break;\n case 'expand':\n case 'collapse':\n this.toggleExpanded(action.key, 'keyboard', source);\n break;\n case 'commit':\n case 'toggle':\n this.choose(action.key, 'keyboard', source);\n break;\n default:\n break;\n }\n return action;\n }\n\n /**\n * A level on show that has not arrived asks for its children, once, with a\n * signal aborted when the path moves away or the surface closes. Called from\n * the host's effect with whether the surface is on show.\n */\n syncLoads(showing: boolean) {\n const view = this.view();\n const collection = this.collection();\n const wanted = new Set<string>();\n if (showing) {\n for (const column of view.columns) {\n if (column.pending && !column.failed && column.parent !== undefined)\n wanted.add(column.parent);\n }\n if (this.layout() === 'tree') {\n for (const key of this.source.expandedKeys()) {\n const node = collection.nodeFor(key);\n if (node !== undefined && node.hasChildren && node.children.length === 0) wanted.add(key);\n }\n }\n }\n for (const [key, controller] of this.requested) {\n if (wanted.has(key)) continue;\n controller.abort();\n this.requested.delete(key);\n }\n const isLoading = this.source.isNodeLoading();\n for (const key of wanted) {\n if (this.requested.has(key)) continue;\n const item = collection.nodeFor(key)?.item;\n if (item !== undefined && isLoading?.(item)) continue;\n const controller = new AbortController();\n this.requested.set(key, controller);\n this.source.loadChildren.emit({ key, signal: controller.signal });\n }\n }\n\n destroy() {\n for (const controller of this.requested.values()) controller.abort();\n this.requested.clear();\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n input,\n model,\n numberAttribute,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport type { EmbeddedViewRef } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport type { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\nimport { injectLocale, injectMessages } from '@slotted/angular/i18n';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport { cascaderFit, cascaderMeasure, pathTo } from '@slotted/core/cascader';\nimport type { CascaderCheckedStrategy, CascaderLayoutAxis } from '@slotted/core/cascader';\nimport type { TreeCollection } from '@slotted/core/collection';\nimport { cascaderMessages, type CascaderMessages, type PartialMessages } from '@slotted/core/i18n';\nimport { createDismissableLayer } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createPortalRoot } from '@slotted/core/portal';\nimport type { PortalRootHandle } from '@slotted/core/portal';\nimport { createPositioner } from '@slotted/core/positioner';\nimport type { PositionerHandle } from '@slotted/core/positioner';\nimport type { ChangeReason, ChangeRequest } from '@slotted/core/state';\nimport { createTypeahead, isPrintable } from '@slotted/core/typeahead';\nimport type { TypeaheadHandle } from '@slotted/core/typeahead';\n\nimport { SlCascaderBody, SlCascaderNode } from './cascader-body';\nimport { injectCascaderDefaults } from './cascader-defaults';\nimport type {\n CascaderExpandOn,\n CascaderSelectionMode,\n CascaderSize,\n CascaderValue,\n CascaderVariant,\n} from './cascader-defaults';\nimport { CascaderEngine } from './cascader-engine';\nimport type { CascaderLoadRequest, CascaderRoom, CascaderSelectable } from './cascader-engine';\n\nlet instances = 0;\n\nconst directionOf = (node: Element | null): 'ltr' | 'rtl' =>\n node !== null && node.ownerDocument.defaultView?.getComputedStyle(node).direction === 'rtl'\n ? 'rtl'\n : 'ltr';\n\n/**\n * The inputs both hosts read. A base class rather than a mixin: the two\n * components declare the same hierarchy, the same state and the same axes, and\n * Angular reads inherited signal inputs.\n */\n@Directive()\nabstract class CascaderBase<T> {\n readonly nodes = input<readonly T[]>([]);\n readonly getKey = input.required<(node: T) => string>();\n readonly getLabel = input.required<(node: T) => string>();\n readonly getChildren = input<((node: T) => readonly T[] | undefined) | undefined>(undefined);\n readonly getParent = input<((node: T) => string | null | undefined) | undefined>(undefined);\n readonly hasChildren = input<((node: T) => boolean) | undefined>(undefined);\n readonly getChildrenCount = input<((node: T) => number | undefined) | undefined>(undefined);\n readonly isNodeDisabled = input<((node: T) => boolean) | undefined>(undefined);\n readonly isNodeLoading = input<((node: T) => boolean) | undefined>(undefined);\n readonly isNodeFailed = input<((node: T) => boolean) | undefined>(undefined);\n readonly getDescription = input<((node: T) => string | undefined) | undefined>(undefined);\n readonly filter = input<((node: T, query: string) => boolean) | undefined>(undefined);\n /** BCP 47, for the substring test and its marks. The language in force when absent. */\n readonly locale = input<string | undefined>(undefined);\n /** The roots are on their way: the first level waits as rows. */\n readonly loading = input(false, { transform: booleanAttribute });\n\n readonly selectionMode = input<CascaderSelectionMode | undefined>(undefined);\n readonly selectable = input<CascaderSelectable<T> | undefined>(undefined);\n readonly checkedStrategy = input<CascaderCheckedStrategy | undefined>(undefined);\n readonly layout = input<CascaderLayoutAxis | undefined>(undefined);\n readonly expandOn = input<CascaderExpandOn | undefined>(undefined);\n readonly search = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly size = input<CascaderSize | undefined>(undefined);\n readonly maxColumns = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly maxCrumbs = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly hoverDelay = input<number | undefined, number | string | undefined>(undefined, {\n transform: (given) => (given === undefined ? undefined : numberAttribute(given)),\n });\n readonly separator = input<string | undefined>(undefined);\n readonly readOnly = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * placeholder, the buttons, the search field, the breadcrumb, and the\n * sentences a level and a search say.\n */\n readonly messages = input<PartialMessages<CascaderMessages> | undefined>(undefined);\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly ariaLabelledBy = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n readonly value = model<CascaderValue>(null);\n readonly path = model<readonly string[]>([]);\n readonly activeKey = model<string | null>(null);\n readonly expandedKeys = model<readonly string[]>([]);\n readonly searchValue = model('');\n\n readonly valueChangeRequest = output<ChangeRequest<CascaderValue>>();\n readonly pathChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly activeKeyChangeRequest = output<ChangeRequest<string | null>>();\n readonly expandedKeysChangeRequest = output<ChangeRequest<readonly string[]>>();\n readonly searchValueChangeRequest = output<ChangeRequest<string>>();\n /** A level that has not arrived is on show; the signal aborts if the reader moves on. */\n readonly loadChildren = output<CascaderLoadRequest>();\n /** The reader pressed retry on a level that failed. */\n readonly retry = output<string>();\n\n protected readonly nodeTemplate = contentChild(SlCascaderNode);\n protected readonly defaults = injectCascaderDefaults();\n protected readonly identifier = `sl-cascader-${(instances += 1)}`;\n protected readonly treeId = `${this.identifier}-tree`;\n protected readonly room = signal<CascaderRoom>({\n available: undefined,\n columnMeasure: 192,\n inset: 2,\n });\n\n /** The family's words in the language in force, with this instance's `messages` laid over them. */\n readonly t = injectMessages(cascaderMessages, this.messages);\n private readonly inForceLocale = injectLocale();\n /** The locale the search compares and marks in: the `locale` input, or the language in force. */\n protected readonly resolvedLocale = computed(() => this.locale() ?? this.inForceLocale());\n protected readonly resolvedSize = computed(() => this.size() ?? this.defaults.size);\n protected readonly resolvedSeparator = computed(\n () => this.separator() ?? this.defaults.separator,\n );\n protected readonly resolvedExpandOn = computed(() => this.expandOn() ?? this.defaults.expandOn);\n protected readonly resolvedHoverDelay = computed(\n () => this.hoverDelay() ?? this.defaults.hoverDelay,\n );\n protected abstract readonly readOnlyState: () => boolean;\n\n readonly engine: CascaderEngine<T> = new CascaderEngine<T>({\n nodes: this.nodes,\n getKey: this.getKey,\n getLabel: this.getLabel,\n getChildren: this.getChildren,\n getParent: this.getParent,\n hasChildren: this.hasChildren,\n getChildrenCount: this.getChildrenCount,\n isNodeDisabled: this.isNodeDisabled,\n isNodeLoading: this.isNodeLoading,\n isNodeFailed: this.isNodeFailed,\n filter: this.filter,\n locale: this.resolvedLocale,\n loading: this.loading,\n multiple: computed(() => (this.selectionMode() ?? this.defaults.selectionMode) === 'multiple'),\n selectable: computed(() => this.selectable() ?? this.defaults.selectable),\n checkedStrategy: computed(() => this.checkedStrategy() ?? this.defaults.checkedStrategy),\n layout: computed(() => this.layout() ?? this.defaults.layout),\n search: computed(() => this.search() ?? this.defaults.search),\n maxColumns: computed(() => this.maxColumns() ?? this.defaults.maxColumns),\n maxCrumbs: computed(() => this.maxCrumbs() ?? this.defaults.maxCrumbs),\n readOnly: computed(() => this.readOnlyState()),\n t: this.t,\n room: this.room,\n value: this.value,\n path: this.path,\n activeKey: this.activeKey,\n expandedKeys: this.expandedKeys,\n searchValue: this.searchValue,\n valueChangeRequest: this.valueChangeRequest,\n pathChangeRequest: this.pathChangeRequest,\n activeKeyChangeRequest: this.activeKeyChangeRequest,\n expandedKeysChangeRequest: this.expandedKeysChangeRequest,\n searchValueChangeRequest: this.searchValueChangeRequest,\n loadChildren: this.loadChildren,\n });\n\n protected readonly nodeId = (key: string) => `${this.identifier}-node-${encodeURIComponent(key)}`;\n\n private typeaheadHandle: TypeaheadHandle | null = createTypeahead({ timeout: 500 });\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n this.engine.destroy();\n this.typeaheadHandle?.destroy();\n this.typeaheadHandle = null;\n });\n }\n\n /** Typeahead in the level the reader is on, when no field holds the characters. */\n protected typeahead(key: string, source: Event): boolean {\n const handle = this.typeaheadHandle;\n if (handle === null || !isPrintable(key, handle.query.length > 0)) return false;\n const engine = this.engine;\n const collection = engine.collection() as TreeCollection<unknown>;\n const active = engine.activeKey;\n const node = active === null ? undefined : collection.nodeFor(active);\n const siblings =\n engine.layout() === 'tree'\n ? (engine.view().columns[0]?.nodes.map((entry) => entry.key) ?? [])\n : node === undefined\n ? collection.roots\n : collection.siblingsOf(node.key);\n const labels = siblings.map((sibling) => collection.nodeFor(sibling)?.label ?? '');\n const index = handle.match(key, labels, active === null ? -1 : siblings.indexOf(active));\n const target = siblings[index];\n if (target !== undefined) engine.setActive(target, 'keyboard', source);\n return true;\n }\n\n protected scrollActive(container: HTMLElement | null) {\n const active = this.engine.activeKey;\n if (container === null || active === null) return;\n container.ownerDocument.getElementById(this.nodeId(active))?.scrollIntoView?.({\n block: 'nearest',\n });\n }\n}\n\n/**\n * A control that picks one place in a hierarchy, or several.\n *\n * The control is `sl-select`'s control; the popup is an `ng-template` built\n * into the portal as it opens, as `sl-select` builds its own, and holds a tree\n * drawn as columns, one level at a time, or an indented list.\n */\n@Component({\n selector: 'sl-cascader',\n standalone: true,\n exportAs: 'slCascader',\n imports: [NgTemplateOutlet, SlCascaderBody, SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: [\n '../../../styles/src/cascader/cascader.css',\n '../../../styles/src/tag/tag.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/spinner/spinner.css',\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlCascader), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlCascader), multi: true },\n ],\n host: {\n 'data-ui': 'cascader',\n 'data-ui-cascader': '',\n 'data-part': 'root',\n 'data-part-root': '',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-full-width]': \"resolvedFullWidth() ? '' : null\",\n '[attr.data-open]': \"open() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-readonly]': \"readOnlyState() ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n },\n template: `\n <button\n #trigger\n type=\"button\"\n role=\"combobox\"\n data-part=\"trigger\"\n data-part-trigger=\"\"\n [attr.aria-haspopup]=\"engineSearch() ? 'dialog' : 'tree'\"\n [attr.aria-expanded]=\"open()\"\n [attr.aria-controls]=\"open() ? (engineSearch() ? contentId : treeId) : null\"\n [attr.aria-activedescendant]=\"triggerActiveDescendant()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-labelledby]=\"ariaLabel() === undefined ? (ariaLabelledBy() ?? null) : null\"\n [attr.aria-readonly]=\"readOnlyState() ? true : null\"\n [attr.aria-required]=\"resolvedRequired() ? true : null\"\n [attr.aria-invalid]=\"resolvedInvalid() ? true : null\"\n [disabled]=\"resolvedDisabled()\"\n (click)=\"onTriggerClick($event)\"\n (keydown)=\"onKey($event, false)\"\n (blur)=\"onTouched()\"\n >\n @if (engine.multiple) {\n <span data-part=\"value\" data-part-value=\"\"\n ><span data-part=\"summary\" data-part-summary=\"\">{{ summary() }}</span></span\n >\n } @else if (engine.emitted().length === 0) {\n <span data-part=\"placeholder\" data-part-placeholder=\"\">{{ t('placeholder') }}</span>\n } @else if (valueTemplate(); as template) {\n <span data-part=\"value\" data-part-value=\"\">\n <ng-container *ngTemplateOutlet=\"template; context: { $implicit: valuePath() }\" />\n </span>\n } @else {\n <span data-part=\"value\" data-part-value=\"\">\n @for (segment of segments(); track segment.key) {\n @if (!$first) {\n <span data-part=\"value-separator\" data-part-value-separator=\"\" aria-hidden=\"true\">{{\n resolvedSeparator()\n }}</span>\n }\n <span data-part=\"value-segment\" data-part-value-segment=\"\">{{ segment.label }}</span>\n }\n </span>\n }\n </button>\n\n @if (engine.multiple && engine.emitted().length > 0) {\n <span data-part=\"tags\" data-part-tags=\"\">\n @for (key of engine.emitted(); track key) {\n <span\n data-ui=\"tag\"\n data-ui-tag=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-size=\"sm\"\n data-variant=\"soft\"\n >\n <span data-part=\"body\" data-part-body=\"\"\n ><span data-part=\"label\" data-part-label=\"\">{{ engine.labelOf(key) }}</span></span\n >\n <button\n type=\"button\"\n data-part=\"remove\"\n data-part-remove=\"\"\n [disabled]=\"resolvedDisabled() || readOnlyState()\"\n [attr.aria-label]=\"removeLabel(key)\"\n (click)=\"onRemove(key, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n </span>\n }\n </span>\n }\n\n @if (showClear()) {\n <button\n type=\"button\"\n data-part=\"clear\"\n data-part-clear=\"\"\n [attr.aria-label]=\"t('clear')\"\n (click)=\"onClear($event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n @if (loading()) {\n <span\n data-part=\"busy\"\n data-part-busy=\"\"\n data-ui=\"spinner\"\n data-ui-spinner=\"\"\n aria-hidden=\"true\"\n ></span>\n } @else {\n <span data-part=\"arrow\" data-part-arrow=\"\"\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span\n ></span>\n }\n @if (name(); as submission) {\n @for (key of engine.emitted(); track key) {\n <input type=\"hidden\" [attr.name]=\"submission\" [attr.form]=\"form() ?? null\" [value]=\"key\" />\n }\n }\n\n <ng-template #layer>\n <div\n data-ui=\"cascader\"\n data-ui-cascader=\"\"\n data-part=\"positioner\"\n data-part-positioner=\"\"\n [attr.data-layout]=\"engine.layout()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-selection]=\"engine.multiple ? 'multiple' : null\"\n [attr.data-open]=\"open() && positioned() ? '' : null\"\n [attr.inert]=\"open() ? null : ''\"\n >\n <div\n data-part=\"content\"\n data-part-content=\"\"\n [id]=\"contentId\"\n [attr.role]=\"engineSearch() ? 'dialog' : null\"\n [attr.aria-label]=\"engineSearch() ? (ariaLabel() ?? t('search')) : null\"\n >\n @if (engineSearch()) {\n <div data-part=\"search\" data-part-search=\"\">\n <span slIcon><svg slGlyph name=\"search\"></svg></span>\n <input\n data-part=\"search-input\"\n data-part-search-input=\"\"\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded=\"true\"\n [attr.aria-controls]=\"treeId\"\n [attr.aria-label]=\"t('search')\"\n [attr.aria-activedescendant]=\"\n engine.activeKey === null ? null : nodeId(engine.activeKey!)\n \"\n [placeholder]=\"t('searchPlaceholder')\"\n [value]=\"searchValue()\"\n (input)=\"onSearchInput($event)\"\n (keydown)=\"onKey($event, true)\"\n />\n </div>\n }\n <sl-cascader-body\n [engine]=\"engine\"\n [nodeId]=\"nodeId\"\n [treeId]=\"treeId\"\n [label]=\"ariaLabel()\"\n [labelledBy]=\"ariaLabelledBy()\"\n [separator]=\"resolvedSeparator()\"\n [expandOn]=\"resolvedExpandOn()\"\n [hoverDelay]=\"resolvedHoverDelay()\"\n [nodeTemplate]=\"nodeTemplate()?.template\"\n [getDescription]=\"getDescription()\"\n [locale]=\"resolvedLocale()\"\n (retry)=\"retry.emit($event)\"\n />\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class SlCascader<T = unknown>\n extends CascaderBase<T>\n implements ControlValueAccessor, Validator\n{\n readonly open = model(false);\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly closeOnSelect = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly clearable = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly variant = input<CascaderVariant | undefined>(undefined);\n readonly fullWidth = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly portal = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly disabled = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly required = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly invalid = input(undefined, {\n transform: (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given),\n });\n readonly form = input<string | undefined>(undefined);\n /** The name the hidden inputs carry; a static `name` attribute is read before it is written over. */\n readonly name = input<string | undefined>(\n inject(new HostAttributeToken('name'), { optional: true }) ?? undefined,\n );\n /** The value's path as the control prints it, replacing the segments. */\n readonly valueTemplate = input<TemplateRef<{ $implicit: readonly T[] }> | undefined>(undefined);\n\n protected readonly contentId = `${this.identifier}-content`;\n private readonly disabledByForm = signal(false);\n protected readonly resolvedDisabled = computed(\n () => this.disabled() ?? (this.disabledByForm() || this.defaults.disabled),\n );\n protected readonly readOnlyState = () => this.readOnly() ?? this.defaults.readOnly;\n protected readonly resolvedRequired = computed(() => this.required() ?? this.defaults.required);\n protected readonly resolvedInvalid = computed(() => this.invalid() ?? this.defaults.invalid);\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n protected readonly resolvedFullWidth = computed(\n () => this.fullWidth() ?? this.defaults.fullWidth,\n );\n protected readonly engineSearch = computed(() => this.search() ?? this.defaults.search);\n protected readonly positioned = signal(false);\n\n protected readonly triggerActiveDescendant = computed(() =>\n this.open() && !this.engineSearch() && this.activeKey() !== null\n ? this.nodeId(this.activeKey() as string)\n : null,\n );\n\n protected readonly valuePath = computed(() => {\n const first = this.engine.emitted()[0];\n if (first === undefined || this.engine.multiple) return [];\n return pathTo(this.engine.collection() as TreeCollection<unknown>, first)\n .map((key) => this.engine.itemFor(key))\n .filter((item): item is T => item !== undefined);\n });\n\n protected readonly segments = computed(() => {\n const first = this.engine.emitted()[0];\n if (first === undefined) return [];\n const path = pathTo(this.engine.collection() as TreeCollection<unknown>, first);\n return path.length === 0\n ? [{ key: first, label: first }]\n : path.map((key) => ({ key, label: this.engine.labelOf(key) }));\n });\n\n protected readonly summary = computed(() => {\n const count = this.engine.emitted().length;\n return count === 0 ? '' : this.t('summary', { count });\n });\n\n protected readonly showClear = computed(\n () =>\n (this.clearable() ?? this.defaults.clearable) &&\n this.engine.emitted().length > 0 &&\n !this.resolvedDisabled() &&\n !this.readOnlyState(),\n );\n\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly template = viewChild.required<TemplateRef<unknown>>('layer');\n private readonly triggerRef = viewChild.required<ElementRef<HTMLButtonElement>>('trigger');\n\n private view: EmbeddedViewRef<unknown> | null = null;\n private portalRoot: PortalRootHandle | null = null;\n private positioner: PositionerHandle | null = null;\n private layer: DismissableLayerHandle | null = null;\n private layerNode: HTMLElement | null = null;\n private onChange: (value: CascaderValue) => void = () => undefined;\n protected onTouched: () => void = () => undefined;\n\n constructor() {\n super();\n this.engine.onCommitted = () => {\n this.setOpen(false, 'select');\n this.triggerRef().nativeElement.focus({ preventScroll: true });\n };\n\n /* The forms API hears every value the family commits. */\n this.valueChangeRequest.subscribe((request) => {\n queueMicrotask(() => {\n if (!request.cancelled) this.onChange(request.value);\n });\n });\n\n effect(() => {\n this.engine.closeOnSelect = this.closeOnSelect() ?? this.defaults.closeOnSelect;\n });\n\n let wasOpen = false;\n effect(() => {\n const open = this.open() && !this.resolvedDisabled();\n untracked(() => {\n if (open && !wasOpen) this.show();\n if (!open && wasOpen) this.hide();\n wasOpen = open;\n });\n });\n\n effect(() => {\n const showing = this.open();\n this.engine.view();\n untracked(() => this.engine.syncLoads(showing));\n });\n\n /* The widest the window can reach, reserved on the layer, so a path that\n grows never pushes the layer back across the screen. */\n afterRenderEffect(() => {\n const layout = this.engine.layout();\n const room = this.room();\n const maxColumns = this.maxColumns() ?? this.defaults.maxColumns;\n const node = this.layerNode;\n if (node === null) return;\n if (layout !== 'columns') {\n node.style.removeProperty('inline-size');\n return;\n }\n const fit = cascaderFit({ ...room, maxColumns });\n node.style.inlineSize = `${fit * room.columnMeasure + room.inset}px`;\n });\n\n afterRenderEffect(() => {\n void this.activeKey();\n this.scrollActive(this.layerNode);\n });\n\n inject(DestroyRef).onDestroy(() => this.teardown());\n }\n\n focus() {\n this.triggerRef().nativeElement.focus({ preventScroll: true });\n }\n\n /** Shows the level that holds the value, as opening does. */\n revealValue() {\n this.engine.reveal();\n }\n\n protected setOpen(next: boolean, reason: ChangeReason, source?: unknown) {\n if (next === this.open()) return;\n let cancelled = false;\n this.openChangeRequest.emit({\n value: next,\n previous: this.open(),\n reason,\n source,\n get cancelled() {\n return cancelled;\n },\n cancel: () => {\n cancelled = true;\n },\n });\n if (!cancelled) this.open.set(next);\n }\n\n protected removeLabel(key: string) {\n return this.t('remove', { label: this.engine.labelOf(key) });\n }\n\n protected onTriggerClick(event: MouseEvent) {\n if (this.resolvedDisabled()) return;\n this.setOpen(!this.open(), event.detail === 0 ? 'keyboard' : 'pointer', event);\n }\n\n protected onRemove(key: string, event: MouseEvent) {\n this.engine.remove(key, event);\n this.focus();\n }\n\n protected onClear(event: MouseEvent) {\n this.engine.clear(event);\n this.focus();\n }\n\n protected onSearchInput(event: Event) {\n this.engine.setQuery((event.target as HTMLInputElement).value, 'keyboard', event);\n }\n\n protected onKey(event: KeyboardEvent, fromSearch: boolean) {\n if (this.resolvedDisabled()) return;\n if (event.key === 'Tab') {\n if (this.open()) this.setOpen(false, 'blur', event);\n return;\n }\n if (!this.open()) {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.setOpen(true, 'keyboard', event);\n }\n return;\n }\n if (event.key === 'Escape') return;\n if (!fromSearch && !this.engineSearch() && this.typeahead(event.key, event)) {\n event.preventDefault();\n return;\n }\n if (fromSearch && (event.key === 'Home' || event.key === 'End')) return;\n /* The field owns the characters, the space included. */\n if (fromSearch && (event.key === ' ' || isPrintable(event.key, false))) return;\n const action = this.engine.handleKey(\n event.key,\n event,\n directionOf(event.currentTarget as Element),\n true,\n );\n if (action.type !== 'none') event.preventDefault();\n }\n\n private show() {\n if (this.view === null) {\n this.portalRoot = createPortalRoot({\n origin: this.triggerRef().nativeElement,\n disabled: (this.portal() ?? this.defaults.portal) === false,\n });\n this.view = this.viewContainer.createEmbeddedView(this.template());\n this.view.detectChanges();\n this.layerNode =\n (this.view.rootNodes.find(\n (node: unknown): node is HTMLElement => node instanceof HTMLElement,\n ) as HTMLElement | undefined) ?? null;\n if (this.layerNode === null) return;\n this.portalRoot.container?.append(this.layerNode);\n }\n const node = this.layerNode;\n if (node === null) return;\n\n const surface = node.querySelector<HTMLElement>(\"[data-part='content']\");\n if (surface !== null) {\n const measured = cascaderMeasure(surface);\n this.room.update((held) => ({ ...held, ...measured }));\n }\n\n this.engine.reveal();\n\n this.positioner = createPositioner(this.host, node, {\n align: 'start',\n side: 'bottom',\n sideOffset: 4,\n boundaryPadding: 8,\n matchWidth: this.engine.layout() !== 'columns',\n onPositioned: (position) => {\n if (this.room().available !== position.availableWidth) {\n this.room.update((held) => ({ ...held, available: position.availableWidth }));\n }\n },\n });\n /* `data-open` is written on the element in the task that opened the layer,\n with the position; the binding says it again on the next check. */\n void this.positioner.update().then(() => {\n if (this.open()) node.setAttribute('data-open', '');\n this.positioned.set(true);\n });\n\n this.layer = createDismissableLayer(node, {\n branches: [this.host],\n escape: true,\n focusOutside: false,\n modal: false,\n outsidePress: true,\n scrollLock: false,\n onDismiss: (request) => {\n const source = request.source as Event | undefined;\n if (request.reason === 'escape' && this.engine.query !== '') {\n this.engine.setQuery('', 'clear', source);\n return;\n }\n this.setOpen(false, request.reason === 'escape' ? 'escape' : 'outsidePress', source);\n if (request.reason === 'escape') this.focus();\n },\n });\n\n if (this.engineSearch()) {\n queueMicrotask(() =>\n node.querySelector<HTMLInputElement>(\"[data-part='search-input']\")?.focus({\n preventScroll: true,\n }),\n );\n }\n }\n\n private hide() {\n this.positioned.set(false);\n this.layer?.destroy();\n this.positioner?.destroy();\n this.layer = null;\n this.positioner = null;\n this.engine.setQuery('', 'clear');\n this.teardown();\n }\n\n private teardown() {\n this.layer?.destroy();\n this.positioner?.destroy();\n this.portalRoot?.release();\n this.layerNode?.remove();\n this.view?.destroy();\n this.layer = null;\n this.positioner = null;\n this.portalRoot = null;\n this.layerNode = null;\n this.view = null;\n }\n\n writeValue(value: CascaderValue) {\n this.value.set(value ?? (this.engine.multiple ? [] : null));\n }\n\n registerOnChange(fn: (value: CascaderValue) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabledByForm.set(isDisabled);\n }\n\n /**\n * The validity the family owns: nothing chosen while required, and a key the\n * collection cannot resolve — a value that names a node no longer there.\n */\n validate(): ValidationErrors | null {\n const keys = this.engine.emitted();\n if (this.resolvedRequired() && keys.length === 0) return { required: true };\n const collection = this.engine.collection();\n const unresolved =\n this.nodes().length === 0 ? [] : keys.filter((key) => collection.nodeFor(key) === undefined);\n return unresolved.length > 0 ? { unresolved } : null;\n }\n}\n\n/**\n * The same tree on the page, without a control or a layer: a settings screen\n * or a sidebar. The tree takes focus and carries `aria-activedescendant`.\n */\n@Component({\n selector: 'sl-cascader-panel',\n standalone: true,\n exportAs: 'slCascaderPanel',\n imports: [SlCascaderBody],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: [\n '../../../styles/src/cascader/cascader.css',\n '../../../styles/src/skeleton/skeleton.css',\n '../../../styles/src/spinner/spinner.css',\n ],\n host: {\n 'data-ui': 'cascader',\n 'data-ui-cascader': '',\n 'data-part': 'content',\n 'data-part-content': '',\n '[attr.data-layout]': 'engine.layout()',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-selection]': \"engine.multiple ? 'multiple' : null\",\n },\n template: `\n <sl-cascader-body\n [engine]=\"engine\"\n [nodeId]=\"nodeId\"\n [treeId]=\"treeId\"\n [focusable]=\"true\"\n [label]=\"ariaLabel()\"\n [labelledBy]=\"ariaLabelledBy()\"\n [separator]=\"resolvedSeparator()\"\n [expandOn]=\"resolvedExpandOn()\"\n [hoverDelay]=\"resolvedHoverDelay()\"\n [nodeTemplate]=\"nodeTemplate()?.template\"\n [getDescription]=\"getDescription()\"\n [locale]=\"resolvedLocale()\"\n (retry)=\"retry.emit($event)\"\n (treeKeydown)=\"onKey($event)\"\n />\n `,\n})\nexport class SlCascaderPanel<T = unknown> extends CascaderBase<T> {\n protected readonly readOnlyState = () => this.readOnly() ?? this.defaults.readOnly;\n private readonly host: HTMLElement = inject(ElementRef).nativeElement;\n\n constructor() {\n super();\n effect(() => {\n this.engine.view();\n untracked(() => this.engine.syncLoads(true));\n });\n\n afterRenderEffect(() => {\n const measured = cascaderMeasure(this.host);\n const available = (this.host.parentElement ?? this.host).getBoundingClientRect().width;\n const held = this.room();\n if (\n held.available !== available ||\n held.columnMeasure !== measured.columnMeasure ||\n held.inset !== measured.inset\n ) {\n this.room.set({ available, ...measured });\n }\n });\n\n let revealed = false;\n afterRenderEffect(() => {\n if (revealed) return;\n revealed = true;\n if (untracked(() => this.activeKey()) === null) untracked(() => this.engine.reveal());\n });\n\n afterRenderEffect(() => {\n void this.activeKey();\n this.scrollActive(this.host);\n });\n\n if (typeof ResizeObserver !== 'undefined') {\n const observer = new ResizeObserver(() => {\n const available = (this.host.parentElement ?? this.host).getBoundingClientRect().width;\n if (this.room().available !== available) {\n this.room.update((room) => ({ ...room, available }));\n }\n });\n queueMicrotask(() => observer.observe(this.host.parentElement ?? this.host));\n inject(DestroyRef).onDestroy(() => observer.disconnect());\n }\n }\n\n protected onKey(event: KeyboardEvent) {\n if (this.typeahead(event.key, event)) {\n event.preventDefault();\n return;\n }\n const action = this.engine.handleKey(\n event.key,\n event,\n directionOf(event.currentTarget as Element),\n true,\n );\n if (action.type !== 'none' && action.type !== 'close') event.preventDefault();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}