@slotted/angular 0.1.0-beta.8 → 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 (418) hide show
  1. package/docs/code-block.json +92 -92
  2. package/docs/code-block.md +69 -69
  3. package/docs/currency-field.json +7 -0
  4. package/docs/currency-field.md +1 -0
  5. package/docs/data-grid.examples.md +1 -1
  6. package/docs/data-grid.json +21 -4
  7. package/docs/data-grid.md +1 -1
  8. package/docs/data-grid.props.md +5 -3
  9. package/docs/dialog.examples.md +138 -136
  10. package/docs/dialog.json +8 -8
  11. package/docs/filter-bar.json +118 -118
  12. package/docs/filter-bar.md +79 -79
  13. package/docs/guidelines/async-feedback.md +10 -0
  14. package/docs/guidelines/composition.md +11 -7
  15. package/docs/guidelines/index.md +6 -1
  16. package/docs/guidelines/list-pages.md +30 -0
  17. package/docs/guidelines/overviews.md +10 -0
  18. package/docs/markdown.json +79 -79
  19. package/docs/markdown.md +65 -65
  20. package/docs/page-header.json +1 -1
  21. package/docs/skills/compose-screen/SKILL.md +22 -10
  22. package/docs/skills/review-screen/SKILL.md +6 -0
  23. package/docs/skills/waiting-states/SKILL.md +4 -1
  24. package/docs/tags-input.json +28 -2
  25. package/docs/tags-input.md +4 -1
  26. package/docs/timeline.json +131 -131
  27. package/docs/timeline.md +123 -123
  28. package/fesm2022/slotted-angular-accordion.mjs +4 -2
  29. package/fesm2022/slotted-angular-accordion.mjs.map +1 -1
  30. package/fesm2022/slotted-angular-action-bar.mjs +21 -10
  31. package/fesm2022/slotted-angular-action-bar.mjs.map +1 -1
  32. package/fesm2022/slotted-angular-action-sheet.mjs +42 -29
  33. package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -1
  34. package/fesm2022/slotted-angular-alert.mjs +17 -11
  35. package/fesm2022/slotted-angular-alert.mjs.map +1 -1
  36. package/fesm2022/slotted-angular-app-shell.mjs +52 -40
  37. package/fesm2022/slotted-angular-app-shell.mjs.map +1 -1
  38. package/fesm2022/slotted-angular-aspect-ratio.mjs +4 -2
  39. package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -1
  40. package/fesm2022/slotted-angular-attachment.mjs +31 -20
  41. package/fesm2022/slotted-angular-attachment.mjs.map +1 -1
  42. package/fesm2022/slotted-angular-avatar-group.mjs +9 -6
  43. package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -1
  44. package/fesm2022/slotted-angular-avatar.mjs +9 -6
  45. package/fesm2022/slotted-angular-avatar.mjs.map +1 -1
  46. package/fesm2022/slotted-angular-badge.mjs +14 -10
  47. package/fesm2022/slotted-angular-badge.mjs.map +1 -1
  48. package/fesm2022/slotted-angular-breadcrumb.mjs +26 -18
  49. package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -1
  50. package/fesm2022/slotted-angular-button-group.mjs +7 -4
  51. package/fesm2022/slotted-angular-button-group.mjs.map +1 -1
  52. package/fesm2022/slotted-angular-button.mjs +53 -25
  53. package/fesm2022/slotted-angular-button.mjs.map +1 -1
  54. package/fesm2022/slotted-angular-calendar.mjs +68 -26
  55. package/fesm2022/slotted-angular-calendar.mjs.map +1 -1
  56. package/fesm2022/slotted-angular-card.mjs +18 -16
  57. package/fesm2022/slotted-angular-card.mjs.map +1 -1
  58. package/fesm2022/slotted-angular-carousel.mjs +22 -11
  59. package/fesm2022/slotted-angular-carousel.mjs.map +1 -1
  60. package/fesm2022/slotted-angular-cascader.mjs +158 -64
  61. package/fesm2022/slotted-angular-cascader.mjs.map +1 -1
  62. package/fesm2022/slotted-angular-chart.mjs +4 -2
  63. package/fesm2022/slotted-angular-chart.mjs.map +1 -1
  64. package/fesm2022/slotted-angular-checkbox-group.mjs +5 -3
  65. package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -1
  66. package/fesm2022/slotted-angular-checkbox.mjs +13 -8
  67. package/fesm2022/slotted-angular-checkbox.mjs.map +1 -1
  68. package/fesm2022/slotted-angular-code-block.mjs +29 -15
  69. package/fesm2022/slotted-angular-code-block.mjs.map +1 -1
  70. package/fesm2022/slotted-angular-collapsible.mjs +20 -15
  71. package/fesm2022/slotted-angular-collapsible.mjs.map +1 -1
  72. package/fesm2022/slotted-angular-color-picker.mjs +77 -22
  73. package/fesm2022/slotted-angular-color-picker.mjs.map +1 -1
  74. package/fesm2022/slotted-angular-column-manager.mjs +68 -31
  75. package/fesm2022/slotted-angular-column-manager.mjs.map +1 -1
  76. package/fesm2022/slotted-angular-combobox.mjs +77 -31
  77. package/fesm2022/slotted-angular-combobox.mjs.map +1 -1
  78. package/fesm2022/slotted-angular-command-palette.mjs +128 -51
  79. package/fesm2022/slotted-angular-command-palette.mjs.map +1 -1
  80. package/fesm2022/slotted-angular-container.mjs +6 -4
  81. package/fesm2022/slotted-angular-container.mjs.map +1 -1
  82. package/fesm2022/slotted-angular-context-menu.mjs +5 -4
  83. package/fesm2022/slotted-angular-context-menu.mjs.map +1 -1
  84. package/fesm2022/slotted-angular-currency-field.mjs +98 -32
  85. package/fesm2022/slotted-angular-currency-field.mjs.map +1 -1
  86. package/fesm2022/slotted-angular-dashboard-grid.mjs +127 -44
  87. package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -1
  88. package/fesm2022/slotted-angular-data-grid.mjs +309 -104
  89. package/fesm2022/slotted-angular-data-grid.mjs.map +1 -1
  90. package/fesm2022/slotted-angular-data-list.mjs +83 -50
  91. package/fesm2022/slotted-angular-data-list.mjs.map +1 -1
  92. package/fesm2022/slotted-angular-date-field.mjs +38 -12
  93. package/fesm2022/slotted-angular-date-field.mjs.map +1 -1
  94. package/fesm2022/slotted-angular-date-picker.mjs +19 -9
  95. package/fesm2022/slotted-angular-date-picker.mjs.map +1 -1
  96. package/fesm2022/slotted-angular-date-range-picker.mjs +41 -16
  97. package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -1
  98. package/fesm2022/slotted-angular-datetime-field.mjs +46 -14
  99. package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -1
  100. package/fesm2022/slotted-angular-datetime-picker.mjs +37 -23
  101. package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -1
  102. package/fesm2022/slotted-angular-datetime-range-picker.mjs +111 -42
  103. package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -1
  104. package/fesm2022/slotted-angular-description-list.mjs +33 -19
  105. package/fesm2022/slotted-angular-description-list.mjs.map +1 -1
  106. package/fesm2022/slotted-angular-detail-panel.mjs +29 -18
  107. package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -1
  108. package/fesm2022/slotted-angular-dialog.mjs +39 -28
  109. package/fesm2022/slotted-angular-dialog.mjs.map +1 -1
  110. package/fesm2022/slotted-angular-divider.mjs +7 -5
  111. package/fesm2022/slotted-angular-divider.mjs.map +1 -1
  112. package/fesm2022/slotted-angular-drawer.mjs +32 -24
  113. package/fesm2022/slotted-angular-drawer.mjs.map +1 -1
  114. package/fesm2022/slotted-angular-entity-picker.mjs +195 -67
  115. package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -1
  116. package/fesm2022/slotted-angular-event-calendar.mjs +259 -102
  117. package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -1
  118. package/fesm2022/slotted-angular-field-group.mjs +14 -7
  119. package/fesm2022/slotted-angular-field-group.mjs.map +1 -1
  120. package/fesm2022/slotted-angular-field.mjs +35 -15
  121. package/fesm2022/slotted-angular-field.mjs.map +1 -1
  122. package/fesm2022/slotted-angular-filter-bar.mjs +104 -43
  123. package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -1
  124. package/fesm2022/slotted-angular-form.mjs +18 -10
  125. package/fesm2022/slotted-angular-form.mjs.map +1 -1
  126. package/fesm2022/slotted-angular-fullscreen.mjs +14 -8
  127. package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -1
  128. package/fesm2022/slotted-angular-grid.mjs +4 -2
  129. package/fesm2022/slotted-angular-grid.mjs.map +1 -1
  130. package/fesm2022/slotted-angular-highlight.mjs +5 -3
  131. package/fesm2022/slotted-angular-highlight.mjs.map +1 -1
  132. package/fesm2022/slotted-angular-hover-card.mjs +5 -4
  133. package/fesm2022/slotted-angular-hover-card.mjs.map +1 -1
  134. package/fesm2022/slotted-angular-icon.mjs +6 -3
  135. package/fesm2022/slotted-angular-icon.mjs.map +1 -1
  136. package/fesm2022/slotted-angular-image.mjs +13 -10
  137. package/fesm2022/slotted-angular-image.mjs.map +1 -1
  138. package/fesm2022/slotted-angular-import-export-center.mjs +167 -99
  139. package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -1
  140. package/fesm2022/slotted-angular-inline-message.mjs +10 -8
  141. package/fesm2022/slotted-angular-inline-message.mjs.map +1 -1
  142. package/fesm2022/slotted-angular-inline.mjs +4 -2
  143. package/fesm2022/slotted-angular-inline.mjs.map +1 -1
  144. package/fesm2022/slotted-angular-kbd.mjs +11 -7
  145. package/fesm2022/slotted-angular-kbd.mjs.map +1 -1
  146. package/fesm2022/slotted-angular-link.mjs +5 -3
  147. package/fesm2022/slotted-angular-link.mjs.map +1 -1
  148. package/fesm2022/slotted-angular-list-item.mjs +21 -18
  149. package/fesm2022/slotted-angular-list-item.mjs.map +1 -1
  150. package/fesm2022/slotted-angular-list.mjs +14 -10
  151. package/fesm2022/slotted-angular-list.mjs.map +1 -1
  152. package/fesm2022/slotted-angular-listbox.mjs +39 -21
  153. package/fesm2022/slotted-angular-listbox.mjs.map +1 -1
  154. package/fesm2022/slotted-angular-loading-overlay.mjs +59 -22
  155. package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -1
  156. package/fesm2022/slotted-angular-markdown.mjs +31 -19
  157. package/fesm2022/slotted-angular-markdown.mjs.map +1 -1
  158. package/fesm2022/slotted-angular-menu.mjs +41 -27
  159. package/fesm2022/slotted-angular-menu.mjs.map +1 -1
  160. package/fesm2022/slotted-angular-menubar.mjs +4 -2
  161. package/fesm2022/slotted-angular-menubar.mjs.map +1 -1
  162. package/fesm2022/slotted-angular-message-scroller.mjs +28 -15
  163. package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -1
  164. package/fesm2022/slotted-angular-message.mjs +113 -51
  165. package/fesm2022/slotted-angular-message.mjs.map +1 -1
  166. package/fesm2022/slotted-angular-multi-select.mjs +133 -57
  167. package/fesm2022/slotted-angular-multi-select.mjs.map +1 -1
  168. package/fesm2022/slotted-angular-navigation-menu.mjs +34 -26
  169. package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -1
  170. package/fesm2022/slotted-angular-notification-center.mjs +107 -65
  171. package/fesm2022/slotted-angular-notification-center.mjs.map +1 -1
  172. package/fesm2022/slotted-angular-number-field.mjs +23 -11
  173. package/fesm2022/slotted-angular-number-field.mjs.map +1 -1
  174. package/fesm2022/slotted-angular-otp-input.mjs +13 -8
  175. package/fesm2022/slotted-angular-otp-input.mjs.map +1 -1
  176. package/fesm2022/slotted-angular-page-header.mjs +72 -42
  177. package/fesm2022/slotted-angular-page-header.mjs.map +1 -1
  178. package/fesm2022/slotted-angular-page.mjs +18 -9
  179. package/fesm2022/slotted-angular-page.mjs.map +1 -1
  180. package/fesm2022/slotted-angular-pagination.mjs +35 -22
  181. package/fesm2022/slotted-angular-pagination.mjs.map +1 -1
  182. package/fesm2022/slotted-angular-popover.mjs +25 -18
  183. package/fesm2022/slotted-angular-popover.mjs.map +1 -1
  184. package/fesm2022/slotted-angular-progress-indicator.mjs +122 -30
  185. package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -1
  186. package/fesm2022/slotted-angular-prompt-composer.mjs +24 -18
  187. package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -1
  188. package/fesm2022/slotted-angular-prose.mjs +14 -11
  189. package/fesm2022/slotted-angular-prose.mjs.map +1 -1
  190. package/fesm2022/slotted-angular-radio-group.mjs +15 -9
  191. package/fesm2022/slotted-angular-radio-group.mjs.map +1 -1
  192. package/fesm2022/slotted-angular-rating.mjs +138 -82
  193. package/fesm2022/slotted-angular-rating.mjs.map +1 -1
  194. package/fesm2022/slotted-angular-result-state.mjs +16 -12
  195. package/fesm2022/slotted-angular-result-state.mjs.map +1 -1
  196. package/fesm2022/slotted-angular-saved-views.mjs +43 -16
  197. package/fesm2022/slotted-angular-saved-views.mjs.map +1 -1
  198. package/fesm2022/slotted-angular-scroll-area.mjs +9 -5
  199. package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -1
  200. package/fesm2022/slotted-angular-section.mjs +34 -15
  201. package/fesm2022/slotted-angular-section.mjs.map +1 -1
  202. package/fesm2022/slotted-angular-segmented-control.mjs +15 -9
  203. package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -1
  204. package/fesm2022/slotted-angular-select.mjs +135 -53
  205. package/fesm2022/slotted-angular-select.mjs.map +1 -1
  206. package/fesm2022/slotted-angular-side-navigation.mjs +46 -35
  207. package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -1
  208. package/fesm2022/slotted-angular-skeleton.mjs +32 -16
  209. package/fesm2022/slotted-angular-skeleton.mjs.map +1 -1
  210. package/fesm2022/slotted-angular-slider.mjs +31 -11
  211. package/fesm2022/slotted-angular-slider.mjs.map +1 -1
  212. package/fesm2022/slotted-angular-sparkline.mjs +29 -13
  213. package/fesm2022/slotted-angular-sparkline.mjs.map +1 -1
  214. package/fesm2022/slotted-angular-split-button.mjs +25 -11
  215. package/fesm2022/slotted-angular-split-button.mjs.map +1 -1
  216. package/fesm2022/slotted-angular-splitter.mjs +11 -9
  217. package/fesm2022/slotted-angular-splitter.mjs.map +1 -1
  218. package/fesm2022/slotted-angular-stack.mjs +4 -2
  219. package/fesm2022/slotted-angular-stack.mjs.map +1 -1
  220. package/fesm2022/slotted-angular-stat-card.mjs +35 -28
  221. package/fesm2022/slotted-angular-stat-card.mjs.map +1 -1
  222. package/fesm2022/slotted-angular-status-indicator.mjs +22 -8
  223. package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -1
  224. package/fesm2022/slotted-angular-stepper.mjs +40 -15
  225. package/fesm2022/slotted-angular-stepper.mjs.map +1 -1
  226. package/fesm2022/slotted-angular-switch.mjs +15 -10
  227. package/fesm2022/slotted-angular-switch.mjs.map +1 -1
  228. package/fesm2022/slotted-angular-table-of-contents.mjs +29 -21
  229. package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -1
  230. package/fesm2022/slotted-angular-table.mjs +135 -72
  231. package/fesm2022/slotted-angular-table.mjs.map +1 -1
  232. package/fesm2022/slotted-angular-tabs.mjs +31 -14
  233. package/fesm2022/slotted-angular-tabs.mjs.map +1 -1
  234. package/fesm2022/slotted-angular-tag.mjs +19 -12
  235. package/fesm2022/slotted-angular-tag.mjs.map +1 -1
  236. package/fesm2022/slotted-angular-tags-input.mjs +253 -28
  237. package/fesm2022/slotted-angular-tags-input.mjs.map +1 -1
  238. package/fesm2022/slotted-angular-text-field.mjs +49 -15
  239. package/fesm2022/slotted-angular-text-field.mjs.map +1 -1
  240. package/fesm2022/slotted-angular-textarea.mjs +5 -3
  241. package/fesm2022/slotted-angular-textarea.mjs.map +1 -1
  242. package/fesm2022/slotted-angular-time-field.mjs +46 -12
  243. package/fesm2022/slotted-angular-time-field.mjs.map +1 -1
  244. package/fesm2022/slotted-angular-time-picker.mjs +28 -14
  245. package/fesm2022/slotted-angular-time-picker.mjs.map +1 -1
  246. package/fesm2022/slotted-angular-time-range-picker.mjs +109 -40
  247. package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -1
  248. package/fesm2022/slotted-angular-timeline.mjs +135 -64
  249. package/fesm2022/slotted-angular-timeline.mjs.map +1 -1
  250. package/fesm2022/slotted-angular-toast.mjs +42 -31
  251. package/fesm2022/slotted-angular-toast.mjs.map +1 -1
  252. package/fesm2022/slotted-angular-toggle-group.mjs +10 -6
  253. package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -1
  254. package/fesm2022/slotted-angular-toggle.mjs +9 -4
  255. package/fesm2022/slotted-angular-toggle.mjs.map +1 -1
  256. package/fesm2022/slotted-angular-toolbar.mjs +21 -10
  257. package/fesm2022/slotted-angular-toolbar.mjs.map +1 -1
  258. package/fesm2022/slotted-angular-tooltip.mjs +8 -5
  259. package/fesm2022/slotted-angular-tooltip.mjs.map +1 -1
  260. package/fesm2022/slotted-angular-top-navigation.mjs +64 -44
  261. package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -1
  262. package/fesm2022/slotted-angular-tour.mjs +46 -21
  263. package/fesm2022/slotted-angular-tour.mjs.map +1 -1
  264. package/fesm2022/slotted-angular-transfer.mjs +69 -30
  265. package/fesm2022/slotted-angular-transfer.mjs.map +1 -1
  266. package/fesm2022/slotted-angular-tree.mjs +74 -26
  267. package/fesm2022/slotted-angular-tree.mjs.map +1 -1
  268. package/fesm2022/slotted-angular-typography.mjs +8 -4
  269. package/fesm2022/slotted-angular-typography.mjs.map +1 -1
  270. package/fesm2022/slotted-angular-upload.mjs +125 -57
  271. package/fesm2022/slotted-angular-upload.mjs.map +1 -1
  272. package/fesm2022/slotted-angular-visually-hidden.mjs +4 -2
  273. package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -1
  274. package/fesm2022/slotted-angular-wizard.mjs +163 -65
  275. package/fesm2022/slotted-angular-wizard.mjs.map +1 -1
  276. package/package.json +3 -3
  277. package/types/slotted-angular-accordion.d.ts.map +1 -1
  278. package/types/slotted-angular-action-bar.d.ts.map +1 -1
  279. package/types/slotted-angular-action-sheet.d.ts.map +1 -1
  280. package/types/slotted-angular-alert.d.ts +1 -1
  281. package/types/slotted-angular-alert.d.ts.map +1 -1
  282. package/types/slotted-angular-app-shell.d.ts.map +1 -1
  283. package/types/slotted-angular-aspect-ratio.d.ts.map +1 -1
  284. package/types/slotted-angular-attachment.d.ts +1 -1
  285. package/types/slotted-angular-attachment.d.ts.map +1 -1
  286. package/types/slotted-angular-avatar-group.d.ts.map +1 -1
  287. package/types/slotted-angular-avatar.d.ts.map +1 -1
  288. package/types/slotted-angular-badge.d.ts.map +1 -1
  289. package/types/slotted-angular-breadcrumb.d.ts.map +1 -1
  290. package/types/slotted-angular-button-group.d.ts.map +1 -1
  291. package/types/slotted-angular-button.d.ts.map +1 -1
  292. package/types/slotted-angular-calendar.d.ts.map +1 -1
  293. package/types/slotted-angular-card.d.ts.map +1 -1
  294. package/types/slotted-angular-carousel.d.ts.map +1 -1
  295. package/types/slotted-angular-cascader.d.ts.map +1 -1
  296. package/types/slotted-angular-chart.d.ts.map +1 -1
  297. package/types/slotted-angular-checkbox-group.d.ts.map +1 -1
  298. package/types/slotted-angular-checkbox.d.ts.map +1 -1
  299. package/types/slotted-angular-code-block.d.ts +1 -1
  300. package/types/slotted-angular-code-block.d.ts.map +1 -1
  301. package/types/slotted-angular-collapsible.d.ts +1 -1
  302. package/types/slotted-angular-collapsible.d.ts.map +1 -1
  303. package/types/slotted-angular-color-picker.d.ts.map +1 -1
  304. package/types/slotted-angular-column-manager.d.ts.map +1 -1
  305. package/types/slotted-angular-combobox.d.ts +1 -1
  306. package/types/slotted-angular-combobox.d.ts.map +1 -1
  307. package/types/slotted-angular-command-palette.d.ts.map +1 -1
  308. package/types/slotted-angular-container.d.ts.map +1 -1
  309. package/types/slotted-angular-context-menu.d.ts.map +1 -1
  310. package/types/slotted-angular-currency-field.d.ts +39 -13
  311. package/types/slotted-angular-currency-field.d.ts.map +1 -1
  312. package/types/slotted-angular-dashboard-grid.d.ts.map +1 -1
  313. package/types/slotted-angular-data-grid.d.ts +26 -2
  314. package/types/slotted-angular-data-grid.d.ts.map +1 -1
  315. package/types/slotted-angular-data-list.d.ts.map +1 -1
  316. package/types/slotted-angular-date-field.d.ts.map +1 -1
  317. package/types/slotted-angular-date-picker.d.ts.map +1 -1
  318. package/types/slotted-angular-date-range-picker.d.ts.map +1 -1
  319. package/types/slotted-angular-datetime-field.d.ts.map +1 -1
  320. package/types/slotted-angular-datetime-picker.d.ts.map +1 -1
  321. package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -1
  322. package/types/slotted-angular-description-list.d.ts.map +1 -1
  323. package/types/slotted-angular-detail-panel.d.ts.map +1 -1
  324. package/types/slotted-angular-dialog.d.ts +2 -1
  325. package/types/slotted-angular-dialog.d.ts.map +1 -1
  326. package/types/slotted-angular-divider.d.ts.map +1 -1
  327. package/types/slotted-angular-drawer.d.ts.map +1 -1
  328. package/types/slotted-angular-entity-picker.d.ts.map +1 -1
  329. package/types/slotted-angular-event-calendar.d.ts.map +1 -1
  330. package/types/slotted-angular-field-group.d.ts.map +1 -1
  331. package/types/slotted-angular-field.d.ts.map +1 -1
  332. package/types/slotted-angular-filter-bar.d.ts.map +1 -1
  333. package/types/slotted-angular-form.d.ts.map +1 -1
  334. package/types/slotted-angular-fullscreen.d.ts.map +1 -1
  335. package/types/slotted-angular-grid.d.ts.map +1 -1
  336. package/types/slotted-angular-highlight.d.ts.map +1 -1
  337. package/types/slotted-angular-hover-card.d.ts.map +1 -1
  338. package/types/slotted-angular-icon.d.ts +1 -1
  339. package/types/slotted-angular-icon.d.ts.map +1 -1
  340. package/types/slotted-angular-image.d.ts.map +1 -1
  341. package/types/slotted-angular-import-export-center.d.ts.map +1 -1
  342. package/types/slotted-angular-inline-message.d.ts +1 -1
  343. package/types/slotted-angular-inline-message.d.ts.map +1 -1
  344. package/types/slotted-angular-inline.d.ts.map +1 -1
  345. package/types/slotted-angular-kbd.d.ts.map +1 -1
  346. package/types/slotted-angular-link.d.ts.map +1 -1
  347. package/types/slotted-angular-list-item.d.ts.map +1 -1
  348. package/types/slotted-angular-list.d.ts.map +1 -1
  349. package/types/slotted-angular-listbox.d.ts.map +1 -1
  350. package/types/slotted-angular-loading-overlay.d.ts.map +1 -1
  351. package/types/slotted-angular-markdown.d.ts.map +1 -1
  352. package/types/slotted-angular-menu.d.ts.map +1 -1
  353. package/types/slotted-angular-menubar.d.ts.map +1 -1
  354. package/types/slotted-angular-message-scroller.d.ts.map +1 -1
  355. package/types/slotted-angular-message.d.ts.map +1 -1
  356. package/types/slotted-angular-multi-select.d.ts +1 -1
  357. package/types/slotted-angular-multi-select.d.ts.map +1 -1
  358. package/types/slotted-angular-navigation-menu.d.ts.map +1 -1
  359. package/types/slotted-angular-notification-center.d.ts.map +1 -1
  360. package/types/slotted-angular-number-field.d.ts.map +1 -1
  361. package/types/slotted-angular-otp-input.d.ts.map +1 -1
  362. package/types/slotted-angular-page-header.d.ts +1 -1
  363. package/types/slotted-angular-page-header.d.ts.map +1 -1
  364. package/types/slotted-angular-page.d.ts.map +1 -1
  365. package/types/slotted-angular-pagination.d.ts.map +1 -1
  366. package/types/slotted-angular-popover.d.ts.map +1 -1
  367. package/types/slotted-angular-progress-indicator.d.ts.map +1 -1
  368. package/types/slotted-angular-prompt-composer.d.ts.map +1 -1
  369. package/types/slotted-angular-prose.d.ts.map +1 -1
  370. package/types/slotted-angular-radio-group.d.ts.map +1 -1
  371. package/types/slotted-angular-rating.d.ts.map +1 -1
  372. package/types/slotted-angular-result-state.d.ts.map +1 -1
  373. package/types/slotted-angular-saved-views.d.ts.map +1 -1
  374. package/types/slotted-angular-scroll-area.d.ts.map +1 -1
  375. package/types/slotted-angular-section.d.ts.map +1 -1
  376. package/types/slotted-angular-segmented-control.d.ts.map +1 -1
  377. package/types/slotted-angular-select.d.ts +1 -1
  378. package/types/slotted-angular-select.d.ts.map +1 -1
  379. package/types/slotted-angular-side-navigation.d.ts.map +1 -1
  380. package/types/slotted-angular-skeleton.d.ts.map +1 -1
  381. package/types/slotted-angular-slider.d.ts.map +1 -1
  382. package/types/slotted-angular-sparkline.d.ts.map +1 -1
  383. package/types/slotted-angular-split-button.d.ts.map +1 -1
  384. package/types/slotted-angular-splitter.d.ts.map +1 -1
  385. package/types/slotted-angular-stack.d.ts.map +1 -1
  386. package/types/slotted-angular-stat-card.d.ts.map +1 -1
  387. package/types/slotted-angular-status-indicator.d.ts +1 -1
  388. package/types/slotted-angular-status-indicator.d.ts.map +1 -1
  389. package/types/slotted-angular-stepper.d.ts +1 -1
  390. package/types/slotted-angular-stepper.d.ts.map +1 -1
  391. package/types/slotted-angular-switch.d.ts.map +1 -1
  392. package/types/slotted-angular-table-of-contents.d.ts.map +1 -1
  393. package/types/slotted-angular-table.d.ts.map +1 -1
  394. package/types/slotted-angular-tabs.d.ts.map +1 -1
  395. package/types/slotted-angular-tag.d.ts.map +1 -1
  396. package/types/slotted-angular-tags-input.d.ts +33 -1
  397. package/types/slotted-angular-tags-input.d.ts.map +1 -1
  398. package/types/slotted-angular-text-field.d.ts.map +1 -1
  399. package/types/slotted-angular-textarea.d.ts.map +1 -1
  400. package/types/slotted-angular-time-field.d.ts.map +1 -1
  401. package/types/slotted-angular-time-picker.d.ts.map +1 -1
  402. package/types/slotted-angular-time-range-picker.d.ts.map +1 -1
  403. package/types/slotted-angular-timeline.d.ts.map +1 -1
  404. package/types/slotted-angular-toast.d.ts +2 -2
  405. package/types/slotted-angular-toast.d.ts.map +1 -1
  406. package/types/slotted-angular-toggle-group.d.ts.map +1 -1
  407. package/types/slotted-angular-toggle.d.ts.map +1 -1
  408. package/types/slotted-angular-toolbar.d.ts.map +1 -1
  409. package/types/slotted-angular-tooltip.d.ts.map +1 -1
  410. package/types/slotted-angular-top-navigation.d.ts.map +1 -1
  411. package/types/slotted-angular-tour.d.ts.map +1 -1
  412. package/types/slotted-angular-transfer.d.ts.map +1 -1
  413. package/types/slotted-angular-tree.d.ts.map +1 -1
  414. package/types/slotted-angular-typography.d.ts.map +1 -1
  415. package/types/slotted-angular-upload.d.ts +2 -2
  416. package/types/slotted-angular-upload.d.ts.map +1 -1
  417. package/types/slotted-angular-visually-hidden.d.ts.map +1 -1
  418. package/types/slotted-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"slotted-angular-multi-select.mjs","sources":["../../multi-select/src/multi-select-defaults.ts","../../multi-select/src/multi-select.ts","../../multi-select/src/multi-select-items.ts","../../multi-select/src/slotted-angular-multi-select.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Provider } from '@angular/core';\n\nexport type MultiSelectSize = 'sm' | 'md' | 'lg';\nexport type MultiSelectVariant = 'outline' | 'subtle' | 'plain';\nexport type MultiSelectSide = 'bottom' | 'top' | 'inline-start' | 'inline-end' | 'left' | 'right';\nexport type MultiSelectAlign = 'start' | 'center' | 'end';\nexport type MultiSelectWidth = 'anchor' | 'content';\nexport type MultiSelectMount = 'active' | 'lazy' | 'eager';\nexport type MultiSelectStrategy = 'absolute' | 'fixed';\n/** Which gestures open the popup besides the trigger and the arrows. */\nexport type MultiSelectOpenOn = 'input' | 'focus' | 'manual';\n\n/** What the row does with more chips than fit on one line. */\nexport type MultiSelectOverflow = 'wrap' | 'collapse';\n/** Whether an option already in the set stays in the list, marked, or leaves it. */\nexport type MultiSelectChosenOptions = 'show' | 'hide';\n\nexport type MultiSelectOptionValue = string;\n\nexport type MultiSelectOpenReason =\n | 'pointer'\n | 'keyboard'\n | 'escape'\n | 'outsidePress'\n | 'select'\n | 'dismiss'\n | 'blur'\n | 'programmatic';\n\n/**\n * Why the set moved. The six words the React binding states in full, and for\n * the same reason: a consumer writes a different handler for each, and\n * `keyboard` is reorder alone.\n */\nexport type MultiSelectValueReason =\n 'select' | 'submit' | 'remove' | 'clear' | 'keyboard' | 'programmatic';\n\nexport type MultiSelectInputReason =\n 'keyboard' | 'select' | 'submit' | 'clear' | 'blur' | 'programmatic';\n\nexport type MultiSelectHighlightReason = 'pointer' | 'keyboard' | 'programmatic';\n\n/** Why a value the reader offered did not get in. */\nexport type MultiSelectRefuseCause = 'duplicate' | 'limit' | 'invalid';\n\n/**\n * Whether an option answers a query. `null` turns filtering off entirely, which\n * is what a list a server has already filtered needs.\n */\nexport type MultiSelectFilter = ((label: string, query: string) => boolean) | null;\n\n/** Whether text the reader typed may become a value at all. */\nexport type MultiSelectValidator = (\n text: string,\n values: readonly MultiSelectOptionValue[],\n) => boolean;\n\nexport interface MultiSelectOption {\n value: MultiSelectOptionValue;\n label: string;\n disabled?: boolean;\n}\n\nexport interface MultiSelectOptionGroup {\n label: string;\n options: readonly MultiSelectOption[];\n}\n\nexport type MultiSelectItems = readonly (MultiSelectOption | MultiSelectOptionGroup)[];\n\nexport interface MultiSelectDefaults {\n addOnPaste: boolean;\n align: MultiSelectAlign;\n alignOffset: number;\n allowDuplicates: boolean;\n chosenOptions: MultiSelectChosenOptions;\n clearable: boolean;\n closeOnEscape: boolean;\n closeOnOutsidePress: boolean;\n closeOnSelect: boolean;\n collisionPadding: number;\n commitOnBlur: boolean;\n creatable: boolean;\n /** The characters that commit the typed text, and split a paste. */\n delimiters: readonly string[];\n disabled: boolean;\n editable: boolean;\n flip: boolean;\n fullWidth: boolean;\n hideWhenDetached: boolean;\n highlightMatch: boolean;\n invalid: boolean;\n loading: boolean;\n loop: boolean;\n /** The most values the set may hold, or `null` for no limit. */\n max: number | null;\n mount: MultiSelectMount;\n openOn: MultiSelectOpenOn;\n overflow: MultiSelectOverflow;\n portal: boolean;\n readOnly: boolean;\n reorderable: boolean;\n required: boolean;\n shift: boolean;\n side: MultiSelectSide;\n sideOffset: number;\n size: MultiSelectSize;\n strategy: MultiSelectStrategy;\n variant: MultiSelectVariant;\n width: MultiSelectWidth;\n}\n\n/**\n * The numbers, and why they are these numbers. The React binding's\n * `MULTI_SELECT_FALLBACK` states the reasoning; the values are the same, and\n * they have to be — an application that renders both bindings would otherwise\n * ship two controls that behave differently under the same name.\n */\nexport const MULTI_SELECT_FALLBACK: MultiSelectDefaults = {\n addOnPaste: true,\n align: 'start',\n alignOffset: 0,\n allowDuplicates: false,\n chosenOptions: 'show',\n clearable: true,\n closeOnEscape: true,\n closeOnOutsidePress: true,\n closeOnSelect: false,\n collisionPadding: 8,\n commitOnBlur: true,\n creatable: false,\n delimiters: [','],\n disabled: false,\n editable: false,\n flip: true,\n fullWidth: true,\n hideWhenDetached: true,\n highlightMatch: true,\n invalid: false,\n loading: false,\n loop: false,\n max: null,\n mount: 'active',\n openOn: 'input',\n overflow: 'wrap',\n portal: true,\n readOnly: false,\n reorderable: false,\n required: false,\n shift: true,\n side: 'bottom',\n sideOffset: 4,\n size: 'md',\n strategy: 'absolute',\n variant: 'outline',\n width: 'content',\n};\n\nexport const MULTI_SELECT_DEFAULTS = new InjectionToken<MultiSelectDefaults>(\n 'MULTI_SELECT_DEFAULTS',\n { providedIn: 'root', factory: () => MULTI_SELECT_FALLBACK },\n);\n\n/**\n * The decisions an application takes once. Its words come from the language in\n * force (`provideSlotted`).\n */\nexport function provideMultiSelectDefaults(defaults: Partial<MultiSelectDefaults>): Provider {\n return { provide: MULTI_SELECT_DEFAULTS, useValue: { ...MULTI_SELECT_FALLBACK, ...defaults } };\n}\n\nexport function injectMultiSelectDefaults(): MultiSelectDefaults {\n return inject(MULTI_SELECT_DEFAULTS);\n}\n","import { createFilter, moveIndex, revealWithin } from '@slotted/core/collection';\nimport type { Filter, MoveIntent } from '@slotted/core/collection';\nimport { createDismissableLayer, pressOrigin } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createArrowNavigation, createRemovalFocus } from '@slotted/core/focus';\nimport type { ArrowNavigationHandle, RemovalFocusHandle } from '@slotted/core/focus';\nimport {\n multiSelectMessages,\n type MultiSelectMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createWidthGate } from '@slotted/core/measure';\nimport type { WidthGateHandle } from '@slotted/core/measure';\nimport { createCollapse } from '@slotted/core/overflow';\nimport type { CollapseHandle } from '@slotted/core/overflow';\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 { createPresence } from '@slotted/core/presence';\nimport type { PresenceHandle } from '@slotted/core/presence';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n type EmbeddedViewRef,\n type OnInit,\n type TemplateRef,\n} 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 { SlField } from '@slotted/angular/field';\n\nimport { injectMultiSelectDefaults } from './multi-select-defaults';\nimport type {\n MultiSelectAlign,\n MultiSelectChosenOptions,\n MultiSelectFilter,\n MultiSelectHighlightReason,\n MultiSelectInputReason,\n MultiSelectItems,\n MultiSelectMount,\n MultiSelectOpenOn,\n MultiSelectOpenReason,\n MultiSelectOption,\n MultiSelectOptionGroup,\n MultiSelectOptionValue,\n MultiSelectOverflow,\n MultiSelectRefuseCause,\n MultiSelectSide,\n MultiSelectSize,\n MultiSelectStrategy,\n MultiSelectValidator,\n MultiSelectValueReason,\n MultiSelectVariant,\n MultiSelectWidth,\n} from './multi-select-defaults';\n\nexport * from './multi-select-defaults';\n\ntype Entry = 'first' | 'last' | 'none';\n\n/**\n * A filtered-out option stays in the DOM and is hidden, so that the element a\n * reader's pointer is over survives a keystroke. It is therefore not part of\n * the result set, and every count and every move has to skip it.\n */\nconst OPTION_SELECTOR = \"[data-part='item']:not([hidden])\";\n\n/** The chips in the row, which are every cell but the one holding the caret. */\nconst CHIP_SELECTOR = \"[data-part='chips'] > [role='gridcell']:not([data-part='field'])\";\n\nconst isGroup = (entry: MultiSelectItems[number]): entry is MultiSelectOptionGroup =>\n 'options' in entry;\n\nconst flatten = (items: MultiSelectItems | undefined): readonly MultiSelectOption[] =>\n items === undefined ? [] : items.flatMap((entry) => (isGroup(entry) ? entry.options : [entry]));\n\nconst same = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length && a.every((value, index) => value === b[index]);\n\n/**\n * A frame of chosen values, with a field that adds more.\n *\n * **The host element is the frame**, as `sl-combobox`'s is: it carries\n * `data-ui`, and the grid, the chips, the field, the counter and the two\n * buttons are its template. The popup is an `ng-template` built into the portal\n * when it opens.\n *\n * **The set is ordered, and the order is the reader's.** It is an array and not\n * a set, because reorder is meaningless against a value the family is free to\n * re-sort.\n *\n * **What is refused is reported, not dropped.** `valueRefuse` carries the\n * values that did not get in and the cause — a duplicate, the limit, or the\n * consumer's own predicate.\n */\n@Component({\n selector: 'sl-multi-select',\n standalone: true,\n exportAs: 'slMultiSelect',\n imports: [SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n /*\n * Three of these belong to other families and are worn as `data-ui` beside\n * this one's own parts: the chips are `tag`s, the mark is `highlight`'s, the\n * ring while an answer travels is `spinner`'s and the waiting rows are\n * `skeleton`'s. A family that renders another's identifier and does not load\n * its sheet draws an element with no rules — the ring measured 0 × 0 on the\n * rendered page before the last two lines existed.\n */\n styleUrls: [\n '../../../styles/src/multi-select/multi-select.css',\n '../../../styles/src/tag/tag.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/skeleton/skeleton.css',\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlMultiSelect), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlMultiSelect), multi: true },\n ],\n host: {\n 'data-ui': 'multi-select',\n 'data-part': 'root',\n /* The name is the input's and the listbox's; on the host it would name a\n generic element, which is a role that prohibits one. */\n '[attr.aria-label]': 'null',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-overflow]': 'resolvedOverflow()',\n '[attr.data-full-width]': \"resolvedFullWidth() ? '' : null\",\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n '[attr.data-complete]': \"full() ? '' : null\",\n '[attr.data-narrow]': \"narrow() ? '' : null\",\n },\n template: `\n <span hidden [id]=\"chosenId()\">{{ gridLabel() }}</span>\n <div\n data-part=\"control\"\n role=\"grid\"\n [attr.aria-label]=\"gridName().label\"\n [attr.aria-labelledby]=\"gridName().labelledBy\"\n >\n <div data-part=\"chips\" role=\"row\" #row>\n @for (chip of value(); track chip; let index = $index) {\n @if (editingValue() === chip) {\n <span\n role=\"gridcell\"\n data-ui=\"tag\"\n data-part=\"root\"\n data-size=\"sm\"\n data-variant=\"soft\"\n [attr.data-value]=\"chip\"\n >\n <span data-part=\"body\">\n <input\n type=\"text\"\n [attr.aria-label]=\"labelFor(chip) ?? chip\"\n [value]=\"editingText()\"\n (input)=\"onEditInput($event)\"\n (blur)=\"commitEdit(chip, $event)\"\n (keydown)=\"onEditKeyDown(chip, $event)\"\n />\n </span>\n </span>\n } @else {\n <span\n role=\"gridcell\"\n tabindex=\"-1\"\n data-ui=\"tag\"\n data-part=\"root\"\n data-size=\"sm\"\n data-variant=\"soft\"\n [attr.data-value]=\"chip\"\n [attr.data-disabled]=\"frozen() ? '' : null\"\n [attr.aria-label]=\"chipLabel(chip, index)\"\n (keydown)=\"onChipKeyDown(chip, index, $event)\"\n >\n <span data-part=\"body\">\n <span data-part=\"label\">{{ labelFor(chip) ?? chip }}</span>\n </span>\n @if (!frozen()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n data-part=\"remove\"\n [attr.aria-label]=\"removeLabelFor(chip)\"\n (click)=\"onRemoveClick(chip, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n </span>\n }\n }\n @if (resolvedOverflow() === 'collapse') {\n <span\n #count\n hidden\n role=\"gridcell\"\n tabindex=\"-1\"\n data-count\n data-ui=\"tag\"\n data-part=\"root\"\n data-size=\"sm\"\n data-variant=\"outline\"\n (click)=\"onCountClick($event)\"\n >\n <span data-part=\"body\">\n <span data-part=\"label\">+{{ hiddenCount() }}</span>\n </span>\n </span>\n }\n <span data-part=\"field\" role=\"gridcell\">\n <input\n #control\n type=\"text\"\n role=\"combobox\"\n data-part=\"input\"\n aria-autocomplete=\"list\"\n [id]=\"controlId()\"\n [value]=\"inputValue()\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [required]=\"resolvedRequired() && value().length === 0\"\n [placeholder]=\"value().length === 0 ? placeholder() : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? contentId : null\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-readonly]=\"resolvedReadOnly() ? true : null\"\n [attr.aria-invalid]=\"resolvedInvalid() ? true : null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (click)=\"onClick($event)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (blur)=\"onBlur($event)\"\n />\n </span>\n </div>\n </div>\n\n @if (counterText(); as counter) {\n <span data-part=\"counter\" aria-hidden=\"true\">{{ counter }}</span>\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 <button\n type=\"button\"\n tabindex=\"-1\"\n data-part=\"trigger\"\n [disabled]=\"resolvedDisabled()\"\n [attr.aria-label]=\"t('trigger')\"\n (click)=\"onToggle($event)\"\n >\n <span data-part=\"arrow\"\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span\n ></span>\n </button>\n }\n\n <!--\n One hidden input per value, all under the same name: that is how a plain\n FormData receives several values under one key and how a native reset()\n restores them.\n -->\n @if (name(); as submissionName) {\n @for (held of value(); track held) {\n <input\n type=\"text\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n readonly\n [name]=\"submissionName\"\n [attr.form]=\"form() ?? null\"\n [value]=\"held\"\n style=\"\n position: absolute;\n inline-size: 1px;\n block-size: 1px;\n padding: 0;\n border: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n \"\n />\n }\n }\n\n <ng-template #layer>\n <div\n data-ui=\"multi-select\"\n data-part=\"positioner\"\n [attr.data-align]=\"resolvedAlign()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-width]=\"resolvedWidth()\"\n [attr.data-open]=\"isOpen() ? '' : null\"\n [attr.inert]=\"isOpen() ? null : ''\"\n >\n <div\n data-part=\"content\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [id]=\"contentId\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-busy]=\"loading() ? true : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n >\n @if (value().length > 0) {\n <!--\n Every chosen value, whatever the row in the control did with them.\n Its chips carry no remove control: focus never enters this layer,\n so one would be reachable by pointer and by nothing else.\n -->\n <div data-part=\"chosen\">\n @for (held of value(); track held) {\n <span data-ui=\"tag\" data-part=\"root\" data-size=\"sm\" data-variant=\"soft\">\n <span data-part=\"body\">\n <span data-part=\"label\">{{ labelFor(held) ?? held }}</span>\n </span>\n </span>\n }\n </div>\n }\n <ng-content />\n @if (!loading() && offering(); as query) {\n <div\n role=\"option\"\n data-part=\"item\"\n data-create\n aria-selected=\"false\"\n [attr.data-value]=\"query\"\n [id]=\"optionId(query)\"\n [attr.data-current]=\"highlightedValue() === query ? '' : null\"\n (click)=\"onCreateClick(query, $event)\"\n (pointerdown)=\"onOptionPointerDown($event)\"\n (pointerenter)=\"setHighlighted(query, 'pointer', $event)\"\n >\n <span data-part=\"icon\"></span>\n <span data-part=\"label\">{{ t('create', { query: query }) }}</span>\n <span data-part=\"indicator\"\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span\n ></span>\n </div>\n } @else if (!loading() && optionCount() === 0) {\n <div data-part=\"empty\">{{ t('empty') }}</div>\n }\n @if (loading()) {\n <div data-part=\"placeholder\" aria-hidden=\"true\">\n @for (row of [0, 1, 2]; track row) {\n <div>\n <span data-ui=\"skeleton\" data-part=\"root\" data-shape=\"text\" data-loading></span>\n </div>\n }\n </div>\n }\n <div\n data-part=\"status\"\n role=\"status\"\n aria-live=\"polite\"\n [attr.data-loading]=\"loading() ? '' : null\"\n >\n {{ statusMessage() }}\n </div>\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class SlMultiSelect implements ControlValueAccessor, OnInit, Validator {\n private static readonly flag = (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given);\n private static readonly count = (given: number | string | undefined) =>\n given === undefined ? undefined : numberAttribute(given);\n\n /** The chosen values, in the order the reader chose them. */\n readonly value = model<readonly MultiSelectOptionValue[]>([]);\n readonly valueChangeRequest = output<ChangeRequest<readonly MultiSelectOptionValue[]>>();\n /** What an unbound `value` starts from, read once. */\n readonly defaultValue = input<readonly MultiSelectOptionValue[] | undefined>(undefined);\n\n /** The characters in the field, which are not the chosen values. */\n readonly inputValue = model<string>('');\n readonly inputValueChangeRequest = output<ChangeRequest<string>>();\n\n readonly open = model<boolean>(false);\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly highlightedValue = model<MultiSelectOptionValue | null>(null);\n readonly highlightedValueChangeRequest = output<ChangeRequest<MultiSelectOptionValue | null>>();\n\n /** What the family refused, and why. It holds no state and cancels nothing. */\n readonly valueRefuse = output<{\n values: readonly MultiSelectOptionValue[];\n cause: MultiSelectRefuseCause;\n }>();\n\n /** The last option came into view; the consumer fetches the next page. */\n readonly loadMore = output<void>();\n\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly placeholder = input<string>('');\n readonly name = input<string | undefined>(undefined);\n readonly form = input<string | undefined>(undefined);\n readonly items = input<MultiSelectItems | undefined>(undefined);\n readonly total = input(undefined, { transform: SlMultiSelect.count });\n /**\n * BCP 47, for the comparison the default filter and the duplicate rule make.\n * The language in force when absent.\n */\n readonly locale = input<string | undefined>(undefined);\n readonly filter = input<MultiSelectFilter | undefined>(undefined);\n readonly validateValue = input<MultiSelectValidator | undefined>(undefined);\n readonly delimiters = input<readonly string[] | undefined>(undefined);\n readonly max = input(undefined, { transform: SlMultiSelect.count });\n\n readonly size = input<MultiSelectSize | undefined>(undefined);\n readonly variant = input<MultiSelectVariant | undefined>(undefined);\n readonly side = input<MultiSelectSide | undefined>(undefined);\n readonly align = input<MultiSelectAlign | undefined>(undefined);\n readonly width = input<MultiSelectWidth | undefined>(undefined);\n readonly mount = input<MultiSelectMount | undefined>(undefined);\n readonly strategy = input<MultiSelectStrategy | undefined>(undefined);\n readonly openOn = input<MultiSelectOpenOn | undefined>(undefined);\n readonly overflow = input<MultiSelectOverflow | undefined>(undefined);\n readonly chosenOptions = input<MultiSelectChosenOptions | undefined>(undefined);\n\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * buttons, the chips, the counter, the offer to add, and the sentences.\n */\n readonly messages = input<PartialMessages<MultiSelectMessages> | undefined>(undefined);\n\n readonly sideOffset = input(undefined, { transform: SlMultiSelect.count });\n readonly alignOffset = input(undefined, { transform: SlMultiSelect.count });\n readonly collisionPadding = input(undefined, { transform: SlMultiSelect.count });\n\n readonly addOnPaste = input(undefined, { transform: SlMultiSelect.flag });\n readonly allowDuplicates = input(undefined, { transform: SlMultiSelect.flag });\n readonly commitOnBlur = input(undefined, { transform: SlMultiSelect.flag });\n readonly creatable = input(undefined, { transform: SlMultiSelect.flag });\n readonly editable = input(undefined, { transform: SlMultiSelect.flag });\n readonly reorderable = input(undefined, { transform: SlMultiSelect.flag });\n readonly highlightMatch = input(undefined, { transform: SlMultiSelect.flag });\n readonly clearable = input(undefined, { transform: SlMultiSelect.flag });\n readonly loop = input(undefined, { transform: SlMultiSelect.flag });\n readonly closeOnSelect = input(undefined, { transform: SlMultiSelect.flag });\n readonly closeOnEscape = input(undefined, { transform: SlMultiSelect.flag });\n readonly closeOnOutsidePress = input(undefined, { transform: SlMultiSelect.flag });\n readonly flip = input(undefined, { transform: SlMultiSelect.flag });\n readonly shift = input(undefined, { transform: SlMultiSelect.flag });\n readonly hideWhenDetached = input(undefined, { transform: SlMultiSelect.flag });\n readonly portal = input(undefined, { transform: SlMultiSelect.flag });\n readonly fullWidth = input(undefined, { transform: SlMultiSelect.flag });\n readonly disabled = input(undefined, { transform: SlMultiSelect.flag });\n readonly readOnly = input(undefined, { transform: SlMultiSelect.flag });\n readonly required = input(undefined, { transform: SlMultiSelect.flag });\n readonly invalid = input(undefined, { transform: SlMultiSelect.flag });\n readonly loading = input(false, { transform: booleanAttribute });\n\n private readonly defaults = injectMultiSelectDefaults();\n /** The family's words in the language in force, with this control's `messages` laid over them. */\n readonly t = injectMessages(multiSelectMessages, this.messages);\n private readonly inForceLocale = injectLocale();\n /** The locale the filter and the duplicate rule compare in: the `locale` input, or the language in force. */\n readonly resolvedLocale = computed(() => this.locale() ?? this.inForceLocale());\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n private readonly template = viewChild.required<TemplateRef<unknown>>('layer');\n private readonly controlRef = viewChild.required<{ nativeElement: HTMLInputElement }>('control');\n private readonly rowRef = viewChild.required<{ nativeElement: HTMLElement }>('row');\n private readonly countRef = viewChild<{ nativeElement: HTMLElement }>('count');\n\n readonly field = inject(SlField, { optional: true });\n\n private readonly identifier = Math.random().toString(36).slice(2, 8);\n readonly contentId = `sl-multi-select-${this.identifier}`;\n private readonly ownId = `sl-multi-select-input-${this.identifier}`;\n\n private readonly registry = signal(new Map<MultiSelectOptionValue, string>());\n /** Bumped by an option whose presence or visibility changed; read once per render. */\n private readonly collection = signal(0);\n readonly optionCount = signal(0);\n readonly hiddenCount = signal(0);\n readonly narrow = signal(false);\n readonly editingValue = signal<MultiSelectOptionValue | null>(null);\n readonly editingText = signal('');\n private entry: Entry = 'none';\n\n private view: EmbeddedViewRef<unknown> | null = null;\n private layerNode: HTMLElement | null = null;\n private surfaceNode: HTMLElement | null = null;\n private portalRoot: PortalRootHandle | null = null;\n private positioner: PositionerHandle | null = null;\n private layer: DismissableLayerHandle | null = null;\n private presence: PresenceHandle | null = null;\n private observer: IntersectionObserver | null = null;\n private ring: ArrowNavigationHandle | null = null;\n private removal: RemovalFocusHandle | null = null;\n private collapse: CollapseHandle | null = null;\n private gate: WidthGateHandle | null = null;\n private disabledByForm = signal<boolean | undefined>(undefined);\n\n private readonly hostId = inject(new HostAttributeToken('id'), { optional: true });\n\n private onChange: (value: readonly MultiSelectOptionValue[]) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n readonly resolvedSize = computed(() => this.size() ?? this.field?.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n readonly resolvedSide = computed(() => this.side() ?? this.defaults.side);\n readonly resolvedWidth = computed(() => this.width() ?? this.defaults.width);\n readonly resolvedMount = computed(() => this.mount() ?? this.defaults.mount);\n readonly resolvedOpenOn = computed(() => this.openOn() ?? this.defaults.openOn);\n readonly resolvedOverflow = computed(() => this.overflow() ?? this.defaults.overflow);\n readonly resolvedChosenOptions = computed(\n () => this.chosenOptions() ?? this.defaults.chosenOptions,\n );\n readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n readonly resolvedClearable = computed(() => this.clearable() ?? this.defaults.clearable);\n readonly resolvedFullWidth = computed(() => this.fullWidth() ?? this.defaults.fullWidth);\n readonly resolvedCreatable = computed(() => this.creatable() ?? this.defaults.creatable);\n readonly resolvedEditable = computed(() => this.editable() ?? this.defaults.editable);\n readonly resolvedReorderable = computed(() => this.reorderable() ?? this.defaults.reorderable);\n readonly resolvedAddOnPaste = computed(() => this.addOnPaste() ?? this.defaults.addOnPaste);\n readonly resolvedCommitOnBlur = computed(() => this.commitOnBlur() ?? this.defaults.commitOnBlur);\n readonly resolvedAllowDuplicates = computed(\n () => this.allowDuplicates() ?? this.defaults.allowDuplicates,\n );\n readonly resolvedDelimiters = computed(() => this.delimiters() ?? this.defaults.delimiters);\n readonly resolvedMax = computed(() => this.max() ?? this.defaults.max);\n readonly resolvedCloseOnSelect = computed(\n () => this.closeOnSelect() ?? this.defaults.closeOnSelect,\n );\n readonly resolvedHighlightMatch = computed(\n () => this.highlightMatch() ?? this.defaults.highlightMatch,\n );\n\n readonly resolvedDisabled = computed(\n () =>\n this.disabled() ?? this.disabledByForm() ?? this.field?.disabled() ?? this.defaults.disabled,\n );\n readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.field?.readOnly() ?? this.defaults.readOnly,\n );\n readonly resolvedRequired = computed(\n () => this.required() ?? this.field?.required() ?? this.defaults.required,\n );\n readonly resolvedInvalid = computed(\n () => this.invalid() ?? this.field?.invalid() ?? this.defaults.invalid,\n );\n\n readonly isOpen = computed(() => this.open() && !this.resolvedDisabled());\n readonly controlId = computed(() => this.hostId ?? this.field?.ids().control ?? this.ownId);\n readonly describedBy = computed(() => this.field?.describedBy() ?? null);\n /** The set has reached `max` and takes nothing more. */\n readonly full = computed(() => {\n const limit = this.resolvedMax();\n return limit !== null && this.value().length >= limit;\n });\n readonly frozen = computed(() => this.resolvedReadOnly() || this.resolvedDisabled());\n\n private readonly declared = computed(() => {\n const table = new Map<MultiSelectOptionValue, string>();\n for (const option of flatten(this.items())) table.set(option.value, option.label);\n return table;\n });\n\n /** The query is the typed text: unlike a combobox's, committing empties it. */\n readonly query = computed(() => this.inputValue());\n\n private readonly collator = computed<Filter>(() =>\n createFilter({ locale: this.resolvedLocale() }),\n );\n\n readonly showClear = computed(\n () =>\n this.resolvedClearable() &&\n (this.value().length > 0 || this.inputValue() !== '') &&\n !this.resolvedDisabled() &&\n !this.resolvedReadOnly(),\n );\n\n readonly gridLabel = computed(() => this.t('chosen', { count: this.value().length }));\n readonly chosenId = computed(() => `${this.controlId()}-chosen`);\n /**\n * The contract's wiring: the grid carries the field's label and the count of\n * chips. A label written as text is joined to the count; a field's label is\n * read through `aria-labelledby` with the count beside it.\n */\n readonly gridName = computed((): { label: string | null; labelledBy: string | null } => {\n const written = this.ariaLabel();\n if (written !== undefined)\n return { label: `${written}, ${this.gridLabel()}`, labelledBy: null };\n const field = this.field?.ids().label;\n if (field !== undefined) return { label: null, labelledBy: `${field} ${this.chosenId()}` };\n return { label: this.gridLabel(), labelledBy: null };\n });\n\n readonly counterText = computed(() => {\n const limit = this.resolvedMax();\n if (limit !== null) {\n return this.t('counter', { count: this.value().length, max: limit });\n }\n if (this.narrow() && this.value().length > 0) return this.gridLabel();\n return null;\n });\n\n readonly activeDescendant = computed(() => {\n const held = this.highlightedValue();\n return this.isOpen() && held !== null ? this.optionId(held) : null;\n });\n\n /**\n * The offer to add what was typed: while the consumer allows one, the reader\n * typed something, nothing matched, and there is room to take it. A full\n * control refuses every value, so an offer there is one the next press turns\n * down.\n */\n readonly offering = computed(() =>\n this.resolvedCreatable() &&\n !this.full() &&\n this.query().trim() !== '' &&\n this.optionCount() === 0\n ? this.query()\n : null,\n );\n\n readonly statusMessage = computed(() => {\n if (this.loading()) return this.t('loading');\n const count = this.optionCount();\n return count === 0 ? '' : this.t('count', { count });\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n effect(() => {\n const open = this.isOpen();\n untracked(() => (open ? this.show() : this.hide()));\n });\n\n afterNextRender(() => {\n this.bindRow();\n if (this.resolvedMount() === 'eager' && !this.isOpen()) this.build();\n });\n\n /* A value arriving or leaving changes what there is to fit, and which cells\n the ring walks. */\n afterRenderEffect(() => {\n this.value();\n this.resolvedOverflow();\n untracked(() => {\n this.ring?.refresh();\n this.collapse?.refresh();\n });\n });\n\n /* One count per render, however many options changed in it. Each option\n counting the popup itself read the whole collection once per option —\n quadratic in the option count on every keystroke that filters. */\n afterRenderEffect(() => {\n this.collection();\n untracked(() => this.recount());\n });\n\n destroyRef.onDestroy(() => {\n this.teardown();\n this.ring?.destroy();\n this.removal?.destroy();\n this.collapse?.destroy();\n this.gate?.destroy();\n });\n }\n\n ngOnInit() {\n const seed = this.defaultValue();\n if (seed === undefined || this.value().length > 0) return;\n this.value.set([...seed]);\n }\n\n optionId(value: MultiSelectOptionValue): string {\n return `${this.contentId}-option-${encodeURIComponent(value)}`;\n }\n\n labelFor(value: MultiSelectOptionValue): string | undefined {\n return this.declared().get(value) ?? this.registry().get(value);\n }\n\n registerLabel(value: MultiSelectOptionValue, label: string) {\n if (this.registry().get(value) === label) return;\n const next = new Map(this.registry());\n next.set(value, label);\n this.registry.set(next);\n }\n\n protected removeLabelFor(value: MultiSelectOptionValue) {\n return this.t('remove', { label: this.labelFor(value) ?? value });\n }\n\n protected chipLabel(value: MultiSelectOptionValue, index: number) {\n if (!this.resolvedReorderable()) return null;\n return this.t('reorder', {\n label: this.labelFor(value) ?? value,\n position: index + 1,\n count: this.value().length,\n });\n }\n\n matches(label: string): boolean {\n const query = this.query();\n const given = this.filter();\n if (query === '' || given === null) return true;\n if (given !== undefined) return given(label, query);\n return this.collator().contains(label, query);\n }\n\n /** Whether an option may be taken: a full control refuses what it does not hold. */\n refuses(value: MultiSelectOptionValue): boolean {\n return this.full() && !this.value().includes(value);\n }\n\n /** An option says the collection changed; the count follows after the render. */\n collectionChanged() {\n this.collection.update((version) => version + 1);\n }\n\n recount() {\n this.optionCount.set(\n this.options().filter((option) => option.dataset['create'] === undefined).length,\n );\n this.dropStaleHighlight();\n }\n\n options(): HTMLElement[] {\n return [...(this.surfaceNode?.querySelectorAll<HTMLElement>(OPTION_SELECTOR) ?? [])];\n }\n\n focus() {\n this.controlRef().nativeElement.focus({ preventScroll: true });\n }\n\n scrollToKey(value: MultiSelectOptionValue) {\n const option = this.options().find((candidate) => candidate.dataset['value'] === value);\n if (option !== undefined && this.surfaceNode !== null) revealWithin(option, this.surfaceNode);\n }\n\n private announce(message: string) {\n if (message === '') return;\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message, { repeat: true });\n }\n\n setOpen(next: boolean, reason: MultiSelectOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n const state = createControllable<boolean>({\n initial: this.isOpen(),\n onRequest: (request) => this.openChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return;\n this.open.set(next);\n if (!next) {\n this.highlightedValue.set(null);\n this.entry = 'none';\n }\n }\n\n setHighlighted(\n next: MultiSelectOptionValue | null,\n reason: MultiSelectHighlightReason,\n source?: Event,\n ) {\n if (next === this.highlightedValue()) return;\n const state = createControllable<MultiSelectOptionValue | null>({\n initial: this.highlightedValue(),\n onRequest: (request) => this.highlightedValueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) {\n this.highlightedValue.set(next);\n if (next !== null) this.scrollToKey(next);\n }\n }\n\n setInputValue(next: string, reason: MultiSelectInputReason, source?: Event) {\n if (next === this.inputValue()) return;\n const state = createControllable<string>({\n initial: this.inputValue(),\n onRequest: (request) => this.inputValueChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return;\n this.inputValue.set(next);\n /* The binding writes the input at the next render, and a key that arrives\n before it types into what the browser still holds: a commit left its\n text in the input, and the next character joined it. */\n const element = this.host.nativeElement.querySelector<HTMLInputElement>(\"[data-part='input']\");\n if (element !== null && element.value !== next) element.value = next;\n }\n\n /** One request for one transition, whatever moved the set. */\n private commit(next: readonly string[], reason: MultiSelectValueReason, source?: Event) {\n if (same(next, this.value())) return false;\n const state = createControllable<readonly MultiSelectOptionValue[]>({\n initial: this.value(),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return false;\n this.value.set(next);\n this.onChange(next);\n this.onTouched();\n return true;\n }\n\n /**\n * Every candidate judged against the set it would join, in order. It returns\n * the set that survived rather than committing one, so a value arriving and a\n * value edited in place apply one rule and cannot drift apart.\n */\n private judge(candidates: readonly string[], held: readonly string[]) {\n const next = [...held];\n const refused: Record<MultiSelectRefuseCause, string[]> = {\n duplicate: [],\n limit: [],\n invalid: [],\n };\n let existing: MultiSelectOptionValue | null = null;\n const validate = this.validateValue();\n const collator = this.collator();\n const limit = this.resolvedMax();\n\n for (const candidate of candidates) {\n const text = candidate.trim();\n if (text === '') continue;\n\n if (validate !== undefined && !validate(text, next)) {\n refused.invalid.push(text);\n continue;\n }\n\n if (!this.resolvedAllowDuplicates()) {\n const twin = next.find(\n (value) =>\n value === text ||\n collator.equals(value, text) ||\n collator.equals(this.labelFor(value) ?? value, text),\n );\n if (twin !== undefined) {\n refused.duplicate.push(text);\n existing ??= twin;\n continue;\n }\n }\n\n if (limit !== null && next.length >= limit) {\n refused.limit.push(text);\n continue;\n }\n\n next.push(text);\n }\n\n return { existing, next, refused };\n }\n\n private report(\n refused: Record<MultiSelectRefuseCause, string[]>,\n existing: MultiSelectOptionValue | null,\n ) {\n for (const cause of ['duplicate', 'limit', 'invalid'] as const) {\n if (refused[cause].length === 0) continue;\n this.valueRefuse.emit({ values: refused[cause], cause });\n }\n\n /* A duplicate is answered by the chip that already holds it taking focus;\n the other two have nothing to point at, so they are said. */\n if (existing !== null) this.focusChip(existing);\n const limit = this.resolvedMax();\n if (refused.limit.length > 0 && limit !== null)\n this.announce(this.t('counter', { count: limit, max: limit }));\n }\n\n /** The one door into the set. */\n admit(candidates: readonly string[], reason: MultiSelectValueReason, source?: Event) {\n const held = this.value();\n const { existing, next, refused } = this.judge(candidates, held);\n if (next.length > held.length) this.commit(next, reason, source);\n this.report(refused, existing);\n }\n\n /**\n * One value edited in place, which is one transition and not a removal\n * followed by an addition — and judged against the set *without* it, or every\n * edit is a duplicate of itself.\n */\n replace(target: MultiSelectOptionValue, text: string, source?: Event) {\n const held = this.value();\n const index = held.indexOf(target);\n if (index === -1) return;\n if (text.trim() === '' || text === target) return;\n\n const without = held.filter((value) => value !== target);\n const { existing, next, refused } = this.judge([text], without);\n if (next.length > without.length) {\n const taken = next[next.length - 1] as string;\n const ordered = [...without];\n ordered.splice(index, 0, taken);\n this.commit(ordered, 'submit', source);\n }\n this.report(refused, existing);\n }\n\n remove(target: MultiSelectOptionValue, source?: Event) {\n const held = this.value();\n const next = held.filter((value) => value !== target);\n if (next.length === held.length) return;\n if (this.commit(next, 'remove', source)) {\n this.announce(`${this.labelFor(target) ?? target}, ${next.length}`);\n }\n }\n\n toggle(target: MultiSelectOptionValue, reason: MultiSelectValueReason, source?: Event) {\n if (this.value().includes(target)) {\n this.remove(target, source);\n return;\n }\n this.admit([target], reason, source);\n }\n\n clear(source?: Event) {\n this.commit([], 'clear', source);\n this.setInputValue('', 'clear', source);\n }\n\n /** Reorder, and the only shape it has: one value moving to one index. */\n move(from: number, to: number, source?: Event) {\n const held = this.value();\n if (from < 0 || from >= held.length) return;\n const target = Math.min(Math.max(to, 0), held.length - 1);\n if (target === from) return;\n\n const next = [...held];\n const [moved] = next.splice(from, 1);\n next.splice(target, 0, moved as string);\n if (!this.commit(next, 'keyboard', source)) return;\n this.announce(`${this.labelFor(moved as string) ?? moved}, ${target + 1}, ${next.length}`);\n /* The chip travelled with the reader's focus; the ring has to be told the\n cells moved under it. After the render rather than after a microtask:\n a browser runs microtasks first, and the chip has not moved yet. */\n this.afterRender(() => {\n this.ring?.refresh();\n this.focusChip(moved as string);\n });\n }\n\n private chips(): HTMLElement[] {\n return [...this.host.nativeElement.querySelectorAll<HTMLElement>(CHIP_SELECTOR)];\n }\n\n /** Runs once the change in hand has reached the DOM. */\n private afterRender(callback: () => void) {\n afterNextRender(callback, { injector: this.injector });\n }\n\n private focusChip(value: MultiSelectOptionValue) {\n const chip = this.chips().find((candidate) => candidate.dataset['value'] === value);\n chip?.focus({ preventScroll: true });\n }\n\n private splitText(text: string): string[] {\n const delimiters = this.resolvedDelimiters();\n if (delimiters.length === 0) return [text];\n const pattern = new RegExp(\n `[${delimiters.map((mark) => mark.replace(/[.*+?^${}()|[\\]\\\\-]/g, '\\\\$&')).join('')}]`,\n );\n return text.split(pattern);\n }\n\n /** The typed text, committed as one or several values. */\n private commitQuery(source?: Event) {\n if (!this.resolvedCreatable()) return false;\n const text = this.inputValue();\n if (text.trim() === '') return false;\n this.admit(this.splitText(text), 'submit', source);\n this.setInputValue('', 'submit', source);\n return true;\n }\n\n protected onInput(event: Event) {\n const next = (event.target as HTMLInputElement).value;\n this.setInputValue(next, 'keyboard', event);\n if (\n this.resolvedOpenOn() !== 'manual' &&\n !this.isOpen() &&\n !this.resolvedReadOnly() &&\n next !== ''\n ) {\n this.entry = 'none';\n this.setOpen(true, 'keyboard', event);\n } else {\n this.recount();\n }\n }\n\n protected onFocus() {\n if (this.resolvedOpenOn() !== 'focus' || this.isOpen()) return;\n if (this.resolvedDisabled() || this.resolvedReadOnly()) return;\n this.entry = 'none';\n this.setOpen(true, 'keyboard');\n }\n\n /* A press on the input opens a closed popup and never closes an open one,\n because the same press places the caret. Under `focus` the press has\n already opened it through focus, so this finds it open. */\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented || this.resolvedOpenOn() === 'manual' || this.isOpen()) return;\n if (this.resolvedDisabled() || this.resolvedReadOnly()) return;\n this.entry = 'none';\n this.setOpen(true, 'pointer', event);\n }\n\n protected onEditInput(event: Event) {\n this.editingText.set((event.target as HTMLInputElement).value);\n }\n\n protected onEditKeyDown(value: MultiSelectOptionValue, event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.commitEdit(value, event);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n this.editingValue.set(null);\n this.afterRender(() => this.focusChip(value));\n }\n }\n\n protected commitEdit(value: MultiSelectOptionValue, event: Event) {\n if (this.editingValue() !== value) return;\n const text = this.editingText();\n this.editingValue.set(null);\n this.replace(value, text, event);\n this.afterRender(() => this.focusChip(text.trim() === '' ? value : text.trim()));\n }\n\n protected onPaste(event: ClipboardEvent) {\n if (!this.resolvedAddOnPaste() || !this.resolvedCreatable() || this.resolvedReadOnly()) return;\n const text = event.clipboardData?.getData('text') ?? '';\n const parts = this.splitText(text).filter((part) => part.trim() !== '');\n if (parts.length < 2) return;\n event.preventDefault();\n this.admit(parts, 'submit', event);\n this.setInputValue('', 'submit', event);\n }\n\n protected onBlur(event: FocusEvent) {\n this.onTouched();\n const next = event.relatedTarget;\n if (next instanceof Node && this.surfaceNode?.contains(next) === true) return;\n if (next instanceof Node && this.host.nativeElement.contains(next)) return;\n const began = pressOrigin(this.controlRef().nativeElement.ownerDocument);\n if (began instanceof Node && this.surfaceNode?.contains(began) === true) return;\n\n if (this.resolvedCommitOnBlur()) this.commitQuery(event);\n if (this.isOpen()) this.setOpen(false, 'blur', event);\n }\n\n protected onClear(event: MouseEvent) {\n this.clear(event);\n this.focus();\n }\n\n protected onRemoveClick(value: MultiSelectOptionValue, event: MouseEvent) {\n event.stopPropagation();\n this.remove(value, event);\n }\n\n protected onCountClick(event: MouseEvent) {\n this.setOpen(true, 'pointer', event);\n }\n\n protected onToggle(event: MouseEvent) {\n if (this.resolvedDisabled() || this.resolvedReadOnly()) return;\n this.entry = 'none';\n this.setOpen(!this.isOpen(), 'pointer', event);\n this.focus();\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (this.resolvedDisabled()) return;\n const alt = event.altKey;\n\n if (this.resolvedDelimiters().includes(event.key) && !alt) {\n event.preventDefault();\n this.commitQuery(event);\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n if (this.resolvedReadOnly()) return;\n event.preventDefault();\n if (!this.isOpen()) this.openWith(alt ? 'none' : 'first', event);\n else if (!alt) this.moveHighlight('next', event);\n return;\n case 'ArrowUp':\n if (this.resolvedReadOnly()) return;\n event.preventDefault();\n if (alt) this.setOpen(false, 'keyboard', event);\n else if (!this.isOpen()) this.openWith('last', event);\n else this.moveHighlight('previous', event);\n return;\n case 'PageDown':\n if (!this.isOpen()) return;\n event.preventDefault();\n this.moveHighlight('pageDown', event);\n return;\n case 'PageUp':\n if (!this.isOpen()) return;\n event.preventDefault();\n this.moveHighlight('pageUp', event);\n return;\n case 'Enter': {\n const held = this.highlightedValue();\n if (held !== null) {\n event.preventDefault();\n if (held === this.offering()) this.commitQuery(event);\n else {\n this.toggle(held, 'select', event);\n this.setInputValue('', 'select', event);\n if (this.resolvedCloseOnSelect()) this.setOpen(false, 'select', event);\n }\n return;\n }\n if (this.commitQuery(event)) event.preventDefault();\n return;\n }\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.setOpen(false, 'escape', event);\n return;\n }\n if (this.inputValue() === '') return;\n event.preventDefault();\n this.setInputValue('', 'clear', event);\n return;\n case 'Backspace': {\n /* §6's rule: from an empty field the first press moves focus to the\n last chip and removes nothing, and the second — which lands on the\n chip — removes it. */\n if (this.inputValue() !== '') return;\n const element = event.target as HTMLInputElement;\n if (element.selectionStart !== 0) return;\n if (this.resolvedReadOnly() || this.value().length === 0) return;\n const last = this.chips().at(-1);\n if (last === undefined) return;\n event.preventDefault();\n last.focus({ preventScroll: true });\n return;\n }\n case 'Tab':\n if (this.isOpen()) this.setOpen(false, 'dismiss', event);\n return;\n default:\n /* Every other key is the browser's, which the pattern asks for by name. */\n break;\n }\n }\n\n protected onChipKeyDown(value: MultiSelectOptionValue, index: number, event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n\n switch (event.key) {\n case 'Delete':\n case 'Backspace':\n if (this.frozen()) return;\n event.preventDefault();\n this.remove(value, event);\n return;\n case 'Enter':\n if (this.frozen() || !this.resolvedEditable()) return;\n event.preventDefault();\n this.editingText.set(this.labelFor(value) ?? value);\n this.editingValue.set(value);\n this.afterRender(() => {\n const field = this.host.nativeElement.querySelector<HTMLInputElement>(\n `[data-value=\"${CSS.escape(value)}\"] input`,\n );\n field?.focus({ preventScroll: true });\n });\n return;\n case 'Escape':\n event.preventDefault();\n this.focus();\n return;\n default:\n break;\n }\n\n /* Reorder. `Alt` and an arrow, following the writing direction. */\n if (this.resolvedReorderable() && event.altKey && !this.frozen()) {\n const rtl =\n this.host.nativeElement.ownerDocument.defaultView?.getComputedStyle(this.host.nativeElement)\n .direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const back = rtl ? 'ArrowRight' : 'ArrowLeft';\n if (event.key === forward) {\n event.preventDefault();\n this.move(index, index + 1, event);\n return;\n }\n if (event.key === back) {\n event.preventDefault();\n this.move(index, index - 1, event);\n return;\n }\n if (event.key === 'Home') {\n event.preventDefault();\n this.move(index, 0, event);\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n this.move(index, this.value().length - 1, event);\n return;\n }\n }\n\n /* The grid pattern's alphanumeric branch: a printable character on a cell\n holding editable content takes focus into its field and types there. */\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n this.focus();\n }\n }\n\n protected onOptionPointerDown(event: PointerEvent) {\n if (event.defaultPrevented) return;\n event.preventDefault();\n }\n\n protected onCreateClick(query: string, event: MouseEvent) {\n this.admit(this.splitText(query), 'submit', event);\n this.setInputValue('', 'submit', event);\n this.focus();\n }\n\n private openWith(entry: Entry, event: Event) {\n this.entry = entry;\n this.setOpen(true, 'keyboard', event);\n }\n\n private moveHighlight(intent: MoveIntent, event?: Event) {\n const list = this.options();\n if (list.length === 0) return;\n const held = this.highlightedValue();\n const index = moveIndex({\n enabled: list.map(\n (option) =>\n option.dataset['disabled'] === undefined &&\n option.getAttribute('aria-disabled') !== 'true',\n ),\n from: held === null ? -1 : list.findIndex((option) => option.dataset['value'] === held),\n intent,\n loop: this.resolvedLoop(),\n });\n if (index !== -1) this.setHighlighted(list[index]?.dataset['value'] ?? null, 'keyboard', event);\n }\n\n private dropStaleHighlight() {\n const held = this.highlightedValue();\n if (held === null || held === this.offering()) return;\n const kept = this.options().some((option) => option.dataset['value'] === held);\n if (!kept) this.setHighlighted(null, 'keyboard');\n }\n\n /**\n * The ring over the cells, the removal rule, the collapse and the width gate.\n * All four belong to the row rather than to the layer, so they are bound once\n * and outlive every open.\n */\n private bindRow() {\n const row = this.rowRef().nativeElement;\n\n this.ring = createArrowNavigation(row, {\n itemSelector: `${CHIP_SELECTOR}, [data-part='field'] > [data-part='input']`,\n loop: false,\n /* The field keeps the caret keys while there is anything to move the\n caret through, and gives them up when the query is empty. */\n ownedKeys: (item) =>\n item instanceof HTMLInputElement && item.value !== ''\n ? ['ArrowLeft', 'ArrowRight', 'Home', 'End']\n : [],\n });\n\n this.removal = createRemovalFocus(row, {\n fallback: () => this.controlRef().nativeElement,\n itemSelector: CHIP_SELECTOR,\n });\n\n this.gate = createWidthGate(this.host.nativeElement, {\n at: 120,\n onChange: (narrow) => this.narrow.set(narrow),\n });\n\n this.collapse = createCollapse(row, {\n collapsible: () => this.resolvedOverflow() === 'collapse',\n onChange: (units) => this.hiddenCount.set(Math.max(units.length, 1)),\n trigger: () => this.countRef()?.nativeElement ?? null,\n /* The counting chip is the trigger, never a unit: measured as one, it\n counted itself and stood one too high, and was collapsed into itself. */\n units: () =>\n [...row.querySelectorAll<HTMLElement>(CHIP_SELECTOR)].filter(\n (unit) => !unit.hasAttribute('data-count'),\n ),\n });\n }\n\n private show() {\n this.build();\n this.position();\n this.bind();\n this.enter();\n }\n\n private build() {\n if (this.view !== null) {\n this.presence?.sync(this.isOpen());\n this.view.detectChanges();\n return;\n }\n\n this.portalRoot = createPortalRoot({\n origin: this.host.nativeElement,\n disabled: this.portal() === false,\n });\n\n this.view = this.viewContainer.createEmbeddedView(this.template());\n this.view.detectChanges();\n\n this.layerNode = this.view.rootNodes.find(\n (node: unknown): node is HTMLElement => node instanceof HTMLElement,\n ) as HTMLElement | null;\n this.surfaceNode = this.layerNode?.querySelector<HTMLElement>(\"[data-part='content']\") ?? null;\n if (this.layerNode === null) return;\n\n this.portalRoot.container?.append(this.layerNode);\n this.presence = createPresence({ present: this.isOpen() });\n this.presence.setNode(this.layerNode);\n }\n\n private position() {\n if (this.layerNode === null) return;\n\n this.positioner?.destroy();\n this.positioner = createPositioner(this.host.nativeElement, this.layerNode, {\n align: this.resolvedAlign(),\n alignOffset: this.alignOffset() ?? this.defaults.alignOffset,\n boundaryPadding: this.collisionPadding() ?? this.defaults.collisionPadding,\n flip: this.flip() ?? this.defaults.flip,\n hideWhenDetached: this.hideWhenDetached() ?? this.defaults.hideWhenDetached,\n matchWidth: this.resolvedWidth() === 'anchor',\n shift: this.shift() ?? this.defaults.shift,\n side: this.resolvedSide(),\n sideOffset: this.sideOffset() ?? this.defaults.sideOffset,\n strategy: this.strategy() ?? this.defaults.strategy,\n });\n /* The height that bounds the list arrives with the position, after the\n highlight has landed, so the highlighted row is revealed again. */\n void this.positioner.update().then(() => {\n const held = this.highlightedValue();\n if (held !== null) this.scrollToKey(held);\n });\n }\n\n private bind() {\n if (this.layerNode === null) return;\n\n this.layer = createDismissableLayer(this.layerNode, {\n branches: [this.host.nativeElement],\n escape: this.closeOnEscape() ?? this.defaults.closeOnEscape,\n focusOutside: false,\n modal: false,\n outsidePress: this.closeOnOutsidePress() ?? this.defaults.closeOnOutsidePress,\n scrollLock: false,\n onDismiss: (request) => {\n this.setOpen(\n false,\n request.reason === 'escape' ? 'escape' : 'outsidePress',\n request.source as Event | undefined,\n );\n },\n });\n\n this.observeEnd();\n }\n\n private observeEnd() {\n this.observer?.disconnect();\n this.observer = null;\n const root = this.surfaceNode;\n if (root === null || typeof IntersectionObserver !== 'function') return;\n const last = this.options().at(-1);\n if (last === undefined) return;\n\n this.observer = new IntersectionObserver(\n (entries) => {\n if (entries.some((entry) => entry.isIntersecting)) this.loadMore.emit();\n },\n { root },\n );\n this.observer.observe(last);\n }\n\n private enter() {\n this.recount();\n if (this.entry === 'none') return;\n this.moveHighlight(this.entry);\n this.entry = 'none';\n }\n\n private hide() {\n this.unbind();\n if (this.resolvedMount() === 'active') this.teardown();\n }\n\n private unbind() {\n this.layer?.destroy();\n this.positioner?.destroy();\n this.observer?.disconnect();\n this.layer = null;\n this.positioner = null;\n this.observer = null;\n }\n\n private teardown() {\n this.unbind();\n this.presence?.destroy();\n this.portalRoot?.release();\n this.layerNode?.remove();\n this.view?.destroy();\n\n this.presence = null;\n this.portalRoot = null;\n this.layerNode = null;\n this.surfaceNode = null;\n this.view = null;\n }\n\n writeValue(value: readonly MultiSelectOptionValue[] | null) {\n this.value.set(value === null ? [] : [...value]);\n }\n\n registerOnChange(fn: (value: readonly MultiSelectOptionValue[]) => 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 * Three validities the family owns, and none of them is one a native input\n * can describe: a required control holding nothing, a set over its limit, and\n * a set holding a value twice where duplicates are refused. The second is the\n * one Zag has the mechanism for and no validator to report it with.\n */\n validate(): ValidationErrors | null {\n const held = this.value();\n if (this.resolvedRequired() && held.length === 0) return { required: true };\n\n const limit = this.resolvedMax();\n if (limit !== null && held.length > limit) {\n return { tooMany: { max: limit, actual: held.length } };\n }\n\n if (!this.resolvedAllowDuplicates() && new Set(held).size !== held.length) {\n return { duplicate: true };\n }\n return null;\n }\n}\n","import { matchRanges } from '@slotted/core/highlight';\nimport {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport type { GlyphName } from '@slotted/angular/icon';\n\nimport { SlHighlight } from '@slotted/angular/highlight';\n\nimport { SlMultiSelect } from './multi-select';\nimport type { MultiSelectOptionValue } from './multi-select-defaults';\n\n/**\n * One option, and the one that decides whether it belongs in the results.\n *\n * **Each option filters itself**, as `sl-combobox-item` does: the family holds\n * the query and the comparison, the option holds its own label, and the popup's\n * DOM is therefore the result set.\n *\n * **An option the set already holds is still an option.** It carries\n * `aria-selected=\"true\"` and the check, and pressing it takes the value back\n * out; `chosenOptions=\"hide\"` is the other answer, for a list long enough that\n * a reader would rather see only what is left.\n *\n * `label` is an input rather than projected content, which is the one place\n * this binding differs from its React counterpart: a comparison and a split\n * both need the text before the view exists.\n */\n@Component({\n selector: 'sl-multi-select-item',\n standalone: true,\n exportAs: 'slMultiSelectItem',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [SlGlyph, SlHighlight, SlIcon],\n host: {\n 'data-part': 'item',\n role: 'option',\n '[id]': 'optionId()',\n '[hidden]': '!visible()',\n '[attr.data-value]': 'value()',\n '[attr.data-text-value]': 'label()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'inert() ? true : null',\n '[attr.aria-posinset]': 'position() ?? null',\n '[attr.aria-setsize]': 'position() === undefined ? null : (multiSelect.total() ?? null)',\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-current]': \"current() ? '' : null\",\n '(click)': 'onClick($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointerenter)': 'onPointerEnter($event)',\n },\n template: `\n @if (icon(); as glyph) {\n <span data-part=\"icon\"\n ><span slIcon><svg slGlyph [name]=\"glyph\"></svg></span\n ></span>\n }\n <span data-part=\"label\">\n @if (ranges().length > 0) {\n <span slHighlight [text]=\"label()\" [ranges]=\"ranges()\"></span>\n } @else {\n {{ label() }}\n }\n </span>\n @if (description()) {\n <span data-part=\"description\">{{ description() }}</span>\n }\n <span data-part=\"indicator\"\n ><span slIcon><svg slGlyph name=\"check\"></svg></span\n ></span>\n `,\n})\nexport class SlMultiSelectItem {\n readonly value = input.required<MultiSelectOptionValue>();\n /** What the reader sees, what the filter compares, and what the mark splits. */\n readonly label = input.required<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly description = input<string | undefined>(undefined);\n /** The glyph drawn in the first column, as a `Glyph` inside an `Icon` box. */\n readonly icon = input<GlyphName | undefined>(undefined);\n readonly position = input(undefined, {\n transform: (given: number | string | undefined) =>\n given === undefined ? undefined : numberAttribute(given),\n });\n\n readonly multiSelect = inject(SlMultiSelect);\n\n readonly optionId = computed(() => this.multiSelect.optionId(this.value()));\n readonly selected = computed(() => this.multiSelect.value().includes(this.value()));\n readonly current = computed(() => this.multiSelect.highlightedValue() === this.value());\n /**\n * A full control refuses every value it does not already hold, and says so\n * where a reader can hear it. A control that silently ignores a press is a\n * control the reader presses again.\n */\n readonly inert = computed(() => this.disabled() || this.multiSelect.refuses(this.value()));\n readonly visible = computed(\n () =>\n this.multiSelect.matches(this.label()) &&\n !(this.selected() && this.multiSelect.resolvedChosenOptions() === 'hide'),\n );\n\n /**\n * The spans the query matched, from the same collator the filter used, drawn\n * by the `highlight` family inside this family's label. An `indexOf` beside\n * a locale-sensitive filter marks nothing on the row it has just matched.\n */\n readonly ranges = computed(() => {\n const query = this.multiSelect.query();\n if (!this.multiSelect.resolvedHighlightMatch() || query === '') return [];\n return matchRanges(this.label(), query, { locale: this.multiSelect.resolvedLocale() });\n });\n\n constructor() {\n /**\n * A hidden option is out of the result set, so the count and the label\n * registry both have to see the change. `hidden` rather than an `@if`,\n * because an option destroyed and rebuilt on every keystroke loses its\n * element identity — and with it whatever the reader's pointer was on.\n */\n afterRenderEffect(() => {\n this.visible();\n const value = this.value();\n const label = this.label();\n /* Untracked: what the parent reads while registering is its state, not\n this option's, and tracking it re-ran every option's effect on every\n open and every highlight move. */\n untracked(() => {\n this.multiSelect.registerLabel(value, label);\n this.multiSelect.collectionChanged();\n });\n });\n\n inject(DestroyRef).onDestroy(() => this.multiSelect.collectionChanged());\n }\n\n protected onPointerEnter(event: PointerEvent) {\n if (this.inert()) return;\n this.multiSelect.setHighlighted(this.value(), 'pointer', event);\n }\n\n /**\n * Only to stop the browser moving focus off the field: an option cannot hold\n * focus, so a press on it would take focus to the body and the blur path\n * would run in the middle of a choice.\n */\n protected onPointerDown(event: PointerEvent) {\n if (event.defaultPrevented) return;\n event.preventDefault();\n }\n\n protected onClick(event: MouseEvent) {\n if (this.inert()) return;\n this.multiSelect.toggle(this.value(), 'select', event);\n this.multiSelect.setInputValue('', 'select', event);\n if (this.multiSelect.resolvedCloseOnSelect()) this.multiSelect.setOpen(false, 'select', event);\n this.multiSelect.focus();\n }\n}\n\n/**\n * A set of options under a heading, named by `aria-labelledby` pointing at its\n * own label. A group whose every option was filtered away is hidden: a heading\n * with no options under it says a category matched when none did.\n */\n@Component({\n selector: 'sl-multi-select-group',\n standalone: true,\n exportAs: 'slMultiSelectGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'group',\n role: 'group',\n '[attr.aria-labelledby]': 'labelId',\n '[hidden]': 'empty()',\n },\n template: `\n <div data-part=\"group-label\" [id]=\"labelId\">{{ label() }}</div>\n <ng-content />\n `,\n})\nexport class SlMultiSelectGroup {\n readonly label = input.required<string>();\n readonly labelId = `sl-multi-select-group-${Math.random().toString(36).slice(2, 8)}`;\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly multiSelect = inject(SlMultiSelect);\n readonly empty = signal(false);\n\n constructor() {\n /**\n * Measured after render rather than computed from the query: whether a\n * group still holds an option is a fact about the DOM its own children\n * produced, and a computed that read the DOM would be right once and stale\n * from then on. The set is read as well, because hiding a chosen option can\n * empty a group without the query moving at all.\n */\n afterRenderEffect(() => {\n this.multiSelect.query();\n this.multiSelect.value();\n const element = this.host.nativeElement as HTMLElement;\n this.empty.set(element.querySelector(\"[data-part='item']:not([hidden])\") === null);\n });\n }\n}\n\n/** A line between two sets of options. */\n@Component({\n selector: 'sl-multi-select-separator',\n standalone: true,\n exportAs: 'slMultiSelectSeparator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'separator', role: 'separator' },\n template: '',\n})\nexport class SlMultiSelectSeparator {}\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-multi-select.mjs","sources":["../../multi-select/src/multi-select-defaults.ts","../../multi-select/src/multi-select.ts","../../multi-select/src/multi-select-items.ts","../../multi-select/src/slotted-angular-multi-select.ts"],"sourcesContent":["import { inject, InjectionToken } from '@angular/core';\nimport type { Provider } from '@angular/core';\n\nexport type MultiSelectSize = 'sm' | 'md' | 'lg';\nexport type MultiSelectVariant = 'outline' | 'subtle' | 'plain';\nexport type MultiSelectSide = 'bottom' | 'top' | 'inline-start' | 'inline-end' | 'left' | 'right';\nexport type MultiSelectAlign = 'start' | 'center' | 'end';\nexport type MultiSelectWidth = 'anchor' | 'content';\nexport type MultiSelectMount = 'active' | 'lazy' | 'eager';\nexport type MultiSelectStrategy = 'absolute' | 'fixed';\n/** Which gestures open the popup besides the trigger and the arrows. */\nexport type MultiSelectOpenOn = 'input' | 'focus' | 'manual';\n\n/** What the row does with more chips than fit on one line. */\nexport type MultiSelectOverflow = 'wrap' | 'collapse';\n/** Whether an option already in the set stays in the list, marked, or leaves it. */\nexport type MultiSelectChosenOptions = 'show' | 'hide';\n\nexport type MultiSelectOptionValue = string;\n\nexport type MultiSelectOpenReason =\n | 'pointer'\n | 'keyboard'\n | 'escape'\n | 'outsidePress'\n | 'select'\n | 'dismiss'\n | 'blur'\n | 'programmatic';\n\n/**\n * Why the set moved. The six words the React binding states in full, and for\n * the same reason: a consumer writes a different handler for each, and\n * `keyboard` is reorder alone.\n */\nexport type MultiSelectValueReason =\n 'select' | 'submit' | 'remove' | 'clear' | 'keyboard' | 'programmatic';\n\nexport type MultiSelectInputReason =\n 'keyboard' | 'select' | 'submit' | 'clear' | 'blur' | 'programmatic';\n\nexport type MultiSelectHighlightReason = 'pointer' | 'keyboard' | 'programmatic';\n\n/** Why a value the reader offered did not get in. */\nexport type MultiSelectRefuseCause = 'duplicate' | 'limit' | 'invalid';\n\n/**\n * Whether an option answers a query. `null` turns filtering off entirely, which\n * is what a list a server has already filtered needs.\n */\nexport type MultiSelectFilter = ((label: string, query: string) => boolean) | null;\n\n/** Whether text the reader typed may become a value at all. */\nexport type MultiSelectValidator = (\n text: string,\n values: readonly MultiSelectOptionValue[],\n) => boolean;\n\nexport interface MultiSelectOption {\n value: MultiSelectOptionValue;\n label: string;\n disabled?: boolean;\n}\n\nexport interface MultiSelectOptionGroup {\n label: string;\n options: readonly MultiSelectOption[];\n}\n\nexport type MultiSelectItems = readonly (MultiSelectOption | MultiSelectOptionGroup)[];\n\nexport interface MultiSelectDefaults {\n addOnPaste: boolean;\n align: MultiSelectAlign;\n alignOffset: number;\n allowDuplicates: boolean;\n chosenOptions: MultiSelectChosenOptions;\n clearable: boolean;\n closeOnEscape: boolean;\n closeOnOutsidePress: boolean;\n closeOnSelect: boolean;\n collisionPadding: number;\n commitOnBlur: boolean;\n creatable: boolean;\n /** The characters that commit the typed text, and split a paste. */\n delimiters: readonly string[];\n disabled: boolean;\n editable: boolean;\n flip: boolean;\n fullWidth: boolean;\n hideWhenDetached: boolean;\n highlightMatch: boolean;\n invalid: boolean;\n loading: boolean;\n loop: boolean;\n /** The most values the set may hold, or `null` for no limit. */\n max: number | null;\n mount: MultiSelectMount;\n openOn: MultiSelectOpenOn;\n overflow: MultiSelectOverflow;\n portal: boolean;\n readOnly: boolean;\n reorderable: boolean;\n required: boolean;\n shift: boolean;\n side: MultiSelectSide;\n sideOffset: number;\n size: MultiSelectSize;\n strategy: MultiSelectStrategy;\n variant: MultiSelectVariant;\n width: MultiSelectWidth;\n}\n\n/**\n * The numbers, and why they are these numbers. The React binding's\n * `MULTI_SELECT_FALLBACK` states the reasoning; the values are the same, and\n * they have to be — an application that renders both bindings would otherwise\n * ship two controls that behave differently under the same name.\n */\nexport const MULTI_SELECT_FALLBACK: MultiSelectDefaults = {\n addOnPaste: true,\n align: 'start',\n alignOffset: 0,\n allowDuplicates: false,\n chosenOptions: 'show',\n clearable: true,\n closeOnEscape: true,\n closeOnOutsidePress: true,\n closeOnSelect: false,\n collisionPadding: 8,\n commitOnBlur: true,\n creatable: false,\n delimiters: [','],\n disabled: false,\n editable: false,\n flip: true,\n fullWidth: true,\n hideWhenDetached: true,\n highlightMatch: true,\n invalid: false,\n loading: false,\n loop: false,\n max: null,\n mount: 'active',\n openOn: 'input',\n overflow: 'wrap',\n portal: true,\n readOnly: false,\n reorderable: false,\n required: false,\n shift: true,\n side: 'bottom',\n sideOffset: 4,\n size: 'md',\n strategy: 'absolute',\n variant: 'outline',\n width: 'content',\n};\n\nexport const MULTI_SELECT_DEFAULTS = new InjectionToken<MultiSelectDefaults>(\n 'MULTI_SELECT_DEFAULTS',\n { providedIn: 'root', factory: () => MULTI_SELECT_FALLBACK },\n);\n\n/**\n * The decisions an application takes once. Its words come from the language in\n * force (`provideSlotted`).\n */\nexport function provideMultiSelectDefaults(defaults: Partial<MultiSelectDefaults>): Provider {\n return { provide: MULTI_SELECT_DEFAULTS, useValue: { ...MULTI_SELECT_FALLBACK, ...defaults } };\n}\n\nexport function injectMultiSelectDefaults(): MultiSelectDefaults {\n return inject(MULTI_SELECT_DEFAULTS);\n}\n","import { createFilter, moveIndex, revealWithin } from '@slotted/core/collection';\nimport type { Filter, MoveIntent } from '@slotted/core/collection';\nimport { createDismissableLayer, pressOrigin } from '@slotted/core/dismissable-layer';\nimport type { DismissableLayerHandle } from '@slotted/core/dismissable-layer';\nimport { createArrowNavigation, createRemovalFocus } from '@slotted/core/focus';\nimport type { ArrowNavigationHandle, RemovalFocusHandle } from '@slotted/core/focus';\nimport {\n multiSelectMessages,\n type MultiSelectMessages,\n type PartialMessages,\n} from '@slotted/core/i18n';\nimport { getLiveAnnouncer } from '@slotted/core/live-announcer';\nimport { createWidthGate } from '@slotted/core/measure';\nimport type { WidthGateHandle } from '@slotted/core/measure';\nimport { createCollapse } from '@slotted/core/overflow';\nimport type { CollapseHandle } from '@slotted/core/overflow';\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 { createPresence } from '@slotted/core/presence';\nimport type { PresenceHandle } from '@slotted/core/presence';\nimport { createControllable } from '@slotted/core/state';\nimport type { ChangeRequest } from '@slotted/core/state';\nimport {\n afterNextRender,\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n ElementRef,\n forwardRef,\n HostAttributeToken,\n inject,\n Injector,\n input,\n model,\n numberAttribute,\n output,\n signal,\n untracked,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n type EmbeddedViewRef,\n type OnInit,\n type TemplateRef,\n} 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 { SlField } from '@slotted/angular/field';\n\nimport { injectMultiSelectDefaults } from './multi-select-defaults';\nimport type {\n MultiSelectAlign,\n MultiSelectChosenOptions,\n MultiSelectFilter,\n MultiSelectHighlightReason,\n MultiSelectInputReason,\n MultiSelectItems,\n MultiSelectMount,\n MultiSelectOpenOn,\n MultiSelectOpenReason,\n MultiSelectOption,\n MultiSelectOptionGroup,\n MultiSelectOptionValue,\n MultiSelectOverflow,\n MultiSelectRefuseCause,\n MultiSelectSide,\n MultiSelectSize,\n MultiSelectStrategy,\n MultiSelectValidator,\n MultiSelectValueReason,\n MultiSelectVariant,\n MultiSelectWidth,\n} from './multi-select-defaults';\n\nexport * from './multi-select-defaults';\n\ntype Entry = 'first' | 'last' | 'none';\n\n/**\n * A filtered-out option stays in the DOM and is hidden, so that the element a\n * reader's pointer is over survives a keystroke. It is therefore not part of\n * the result set, and every count and every move has to skip it.\n */\nconst OPTION_SELECTOR = \"[data-part='item']:not([hidden])\";\n\n/** The chips in the row, which are every cell but the one holding the caret. */\nconst CHIP_SELECTOR = \"[data-part='chips'] > [role='gridcell']:not([data-part='field'])\";\n\nconst isGroup = (entry: MultiSelectItems[number]): entry is MultiSelectOptionGroup =>\n 'options' in entry;\n\nconst flatten = (items: MultiSelectItems | undefined): readonly MultiSelectOption[] =>\n items === undefined ? [] : items.flatMap((entry) => (isGroup(entry) ? entry.options : [entry]));\n\nconst same = (a: readonly string[], b: readonly string[]) =>\n a.length === b.length && a.every((value, index) => value === b[index]);\n\n/**\n * A frame of chosen values, with a field that adds more.\n *\n * **The host element is the frame**, as `sl-combobox`'s is: it carries\n * `data-ui`, and the grid, the chips, the field, the counter and the two\n * buttons are its template. The popup is an `ng-template` built into the portal\n * when it opens.\n *\n * **The set is ordered, and the order is the reader's.** It is an array and not\n * a set, because reorder is meaningless against a value the family is free to\n * re-sort.\n *\n * **What is refused is reported, not dropped.** `valueRefuse` carries the\n * values that did not get in and the cause — a duplicate, the limit, or the\n * consumer's own predicate.\n */\n@Component({\n selector: 'sl-multi-select',\n standalone: true,\n exportAs: 'slMultiSelect',\n imports: [SlGlyph, SlIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n /*\n * Three of these belong to other families and are worn as `data-ui` beside\n * this one's own parts: the chips are `tag`s, the mark is `highlight`'s, the\n * ring while an answer travels is `spinner`'s and the waiting rows are\n * `skeleton`'s. A family that renders another's identifier and does not load\n * its sheet draws an element with no rules — the ring measured 0 × 0 on the\n * rendered page before the last two lines existed.\n */\n styleUrls: [\n '../../../styles/src/multi-select/multi-select.css',\n '../../../styles/src/tag/tag.css',\n '../../../styles/src/spinner/spinner.css',\n '../../../styles/src/skeleton/skeleton.css',\n ],\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SlMultiSelect), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => SlMultiSelect), multi: true },\n ],\n host: {\n 'data-ui': 'multi-select',\n 'data-ui-multi-select': '',\n 'data-part': 'root',\n 'data-part-root': '',\n /* The name is the input's and the listbox's; on the host it would name a\n generic element, which is a role that prohibits one. */\n '[attr.aria-label]': 'null',\n '[attr.data-size]': 'resolvedSize()',\n '[attr.data-variant]': 'resolvedVariant()',\n '[attr.data-overflow]': 'resolvedOverflow()',\n '[attr.data-full-width]': \"resolvedFullWidth() ? '' : null\",\n '[attr.data-open]': \"isOpen() ? '' : null\",\n '[attr.data-disabled]': \"resolvedDisabled() ? '' : null\",\n '[attr.data-readonly]': \"resolvedReadOnly() ? '' : null\",\n '[attr.data-invalid]': \"resolvedInvalid() ? '' : null\",\n '[attr.data-required]': \"resolvedRequired() ? '' : null\",\n '[attr.data-loading]': \"loading() ? '' : null\",\n '[attr.data-complete]': \"full() ? '' : null\",\n '[attr.data-narrow]': \"narrow() ? '' : null\",\n },\n template: `\n <span hidden [id]=\"chosenId()\">{{ gridLabel() }}</span>\n <div\n data-part=\"control\"\n data-part-control=\"\"\n role=\"grid\"\n [attr.aria-label]=\"gridName().label\"\n [attr.aria-labelledby]=\"gridName().labelledBy\"\n >\n <div data-part=\"chips\" data-part-chips=\"\" role=\"row\" #row>\n @for (chip of value(); track chip; let index = $index) {\n @if (editingValue() === chip) {\n <span\n role=\"gridcell\"\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 [attr.data-value]=\"chip\"\n >\n <span data-part=\"body\" data-part-body=\"\">\n <input\n type=\"text\"\n [attr.aria-label]=\"labelFor(chip) ?? chip\"\n [value]=\"editingText()\"\n (input)=\"onEditInput($event)\"\n (blur)=\"commitEdit(chip, $event)\"\n (keydown)=\"onEditKeyDown(chip, $event)\"\n />\n </span>\n </span>\n } @else {\n <span\n role=\"gridcell\"\n tabindex=\"-1\"\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 [attr.data-value]=\"chip\"\n [attr.data-disabled]=\"frozen() ? '' : null\"\n [attr.aria-label]=\"chipLabel(chip, index)\"\n (keydown)=\"onChipKeyDown(chip, index, $event)\"\n >\n <span data-part=\"body\" data-part-body=\"\">\n <span data-part=\"label\" data-part-label=\"\">{{ labelFor(chip) ?? chip }}</span>\n </span>\n @if (!frozen()) {\n <button\n type=\"button\"\n tabindex=\"-1\"\n data-part=\"remove\"\n data-part-remove=\"\"\n [attr.aria-label]=\"removeLabelFor(chip)\"\n (click)=\"onRemoveClick(chip, $event)\"\n >\n <span slIcon><svg slGlyph name=\"x\"></svg></span>\n </button>\n }\n </span>\n }\n }\n @if (resolvedOverflow() === 'collapse') {\n <span\n #count\n hidden\n role=\"gridcell\"\n tabindex=\"-1\"\n data-count\n data-ui=\"tag\"\n data-ui-tag=\"\"\n data-part=\"root\"\n data-part-root=\"\"\n data-size=\"sm\"\n data-variant=\"outline\"\n (click)=\"onCountClick($event)\"\n >\n <span data-part=\"body\" data-part-body=\"\">\n <span data-part=\"label\" data-part-label=\"\">+{{ hiddenCount() }}</span>\n </span>\n </span>\n }\n <span data-part=\"field\" data-part-field=\"\" role=\"gridcell\">\n <input\n #control\n type=\"text\"\n role=\"combobox\"\n data-part=\"input\"\n data-part-input=\"\"\n aria-autocomplete=\"list\"\n [id]=\"controlId()\"\n [value]=\"inputValue()\"\n [disabled]=\"resolvedDisabled()\"\n [readOnly]=\"resolvedReadOnly()\"\n [required]=\"resolvedRequired() && value().length === 0\"\n [placeholder]=\"value().length === 0 ? placeholder() : ''\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"isOpen() ? contentId : null\"\n [attr.aria-activedescendant]=\"activeDescendant()\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-readonly]=\"resolvedReadOnly() ? true : null\"\n [attr.aria-invalid]=\"resolvedInvalid() ? true : null\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus()\"\n (click)=\"onClick($event)\"\n (keydown)=\"onKeyDown($event)\"\n (paste)=\"onPaste($event)\"\n (blur)=\"onBlur($event)\"\n />\n </span>\n </div>\n </div>\n\n @if (counterText(); as counter) {\n <span data-part=\"counter\" data-part-counter=\"\" aria-hidden=\"true\">{{ counter }}</span>\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 <button\n type=\"button\"\n tabindex=\"-1\"\n data-part=\"trigger\"\n data-part-trigger=\"\"\n [disabled]=\"resolvedDisabled()\"\n [attr.aria-label]=\"t('trigger')\"\n (click)=\"onToggle($event)\"\n >\n <span data-part=\"arrow\" data-part-arrow=\"\"\n ><span slIcon><svg slGlyph name=\"chevron-down\"></svg></span\n ></span>\n </button>\n }\n\n <!--\n One hidden input per value, all under the same name: that is how a plain\n FormData receives several values under one key and how a native reset()\n restores them.\n -->\n @if (name(); as submissionName) {\n @for (held of value(); track held) {\n <input\n type=\"text\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n readonly\n [name]=\"submissionName\"\n [attr.form]=\"form() ?? null\"\n [value]=\"held\"\n style=\"\n position: absolute;\n inline-size: 1px;\n block-size: 1px;\n padding: 0;\n border: 0;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n \"\n />\n }\n }\n\n <ng-template #layer>\n <div\n data-ui=\"multi-select\"\n data-ui-multi-select=\"\"\n data-part=\"positioner\"\n data-part-positioner=\"\"\n [attr.data-align]=\"resolvedAlign()\"\n [attr.data-size]=\"resolvedSize()\"\n [attr.data-width]=\"resolvedWidth()\"\n [attr.data-open]=\"isOpen() ? '' : null\"\n [attr.inert]=\"isOpen() ? null : ''\"\n >\n <div\n data-part=\"content\"\n data-part-content=\"\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n [id]=\"contentId\"\n [attr.aria-label]=\"ariaLabel() ?? null\"\n [attr.aria-busy]=\"loading() ? true : null\"\n [attr.data-loading]=\"loading() ? '' : null\"\n >\n @if (value().length > 0) {\n <!--\n Every chosen value, whatever the row in the control did with them.\n Its chips carry no remove control: focus never enters this layer,\n so one would be reachable by pointer and by nothing else.\n -->\n <div data-part=\"chosen\" data-part-chosen=\"\">\n @for (held of value(); track held) {\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=\"\">{{ labelFor(held) ?? held }}</span>\n </span>\n </span>\n }\n </div>\n }\n <ng-content />\n @if (!loading() && offering(); as query) {\n <div\n role=\"option\"\n data-part=\"item\"\n data-part-item=\"\"\n data-create\n aria-selected=\"false\"\n [attr.data-value]=\"query\"\n [id]=\"optionId(query)\"\n [attr.data-current]=\"highlightedValue() === query ? '' : null\"\n (click)=\"onCreateClick(query, $event)\"\n (pointerdown)=\"onOptionPointerDown($event)\"\n (pointerenter)=\"setHighlighted(query, 'pointer', $event)\"\n >\n <span data-part=\"icon\" data-part-icon=\"\"></span>\n <span data-part=\"label\" data-part-label=\"\">{{ t('create', { query: query }) }}</span>\n <span data-part=\"indicator\" data-part-indicator=\"\"\n ><span slIcon><svg slGlyph name=\"plus\"></svg></span\n ></span>\n </div>\n } @else if (!loading() && optionCount() === 0) {\n <div data-part=\"empty\" data-part-empty=\"\">{{ t('empty') }}</div>\n }\n @if (loading()) {\n <div data-part=\"placeholder\" data-part-placeholder=\"\" aria-hidden=\"true\">\n @for (row of [0, 1, 2]; track row) {\n <div>\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 </div>\n }\n <div\n data-part=\"status\"\n data-part-status=\"\"\n role=\"status\"\n aria-live=\"polite\"\n [attr.data-loading]=\"loading() ? '' : null\"\n >\n {{ statusMessage() }}\n </div>\n </div>\n </div>\n </ng-template>\n `,\n})\nexport class SlMultiSelect implements ControlValueAccessor, OnInit, Validator {\n private static readonly flag = (given: boolean | string | undefined) =>\n given === undefined ? undefined : booleanAttribute(given);\n private static readonly count = (given: number | string | undefined) =>\n given === undefined ? undefined : numberAttribute(given);\n\n /** The chosen values, in the order the reader chose them. */\n readonly value = model<readonly MultiSelectOptionValue[]>([]);\n readonly valueChangeRequest = output<ChangeRequest<readonly MultiSelectOptionValue[]>>();\n /** What an unbound `value` starts from, read once. */\n readonly defaultValue = input<readonly MultiSelectOptionValue[] | undefined>(undefined);\n\n /** The characters in the field, which are not the chosen values. */\n readonly inputValue = model<string>('');\n readonly inputValueChangeRequest = output<ChangeRequest<string>>();\n\n readonly open = model<boolean>(false);\n readonly openChangeRequest = output<ChangeRequest<boolean>>();\n\n readonly highlightedValue = model<MultiSelectOptionValue | null>(null);\n readonly highlightedValueChangeRequest = output<ChangeRequest<MultiSelectOptionValue | null>>();\n\n /** What the family refused, and why. It holds no state and cancels nothing. */\n readonly valueRefuse = output<{\n values: readonly MultiSelectOptionValue[];\n cause: MultiSelectRefuseCause;\n }>();\n\n /** The last option came into view; the consumer fetches the next page. */\n readonly loadMore = output<void>();\n\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n readonly placeholder = input<string>('');\n readonly name = input<string | undefined>(undefined);\n readonly form = input<string | undefined>(undefined);\n readonly items = input<MultiSelectItems | undefined>(undefined);\n readonly total = input(undefined, { transform: SlMultiSelect.count });\n /**\n * BCP 47, for the comparison the default filter and the duplicate rule make.\n * The language in force when absent.\n */\n readonly locale = input<string | undefined>(undefined);\n readonly filter = input<MultiSelectFilter | undefined>(undefined);\n readonly validateValue = input<MultiSelectValidator | undefined>(undefined);\n readonly delimiters = input<readonly string[] | undefined>(undefined);\n readonly max = input(undefined, { transform: SlMultiSelect.count });\n\n readonly size = input<MultiSelectSize | undefined>(undefined);\n readonly variant = input<MultiSelectVariant | undefined>(undefined);\n readonly side = input<MultiSelectSide | undefined>(undefined);\n readonly align = input<MultiSelectAlign | undefined>(undefined);\n readonly width = input<MultiSelectWidth | undefined>(undefined);\n readonly mount = input<MultiSelectMount | undefined>(undefined);\n readonly strategy = input<MultiSelectStrategy | undefined>(undefined);\n readonly openOn = input<MultiSelectOpenOn | undefined>(undefined);\n readonly overflow = input<MultiSelectOverflow | undefined>(undefined);\n readonly chosenOptions = input<MultiSelectChosenOptions | undefined>(undefined);\n\n /**\n * Words laid over the catalog of the language in force, key by key: the\n * buttons, the chips, the counter, the offer to add, and the sentences.\n */\n readonly messages = input<PartialMessages<MultiSelectMessages> | undefined>(undefined);\n\n readonly sideOffset = input(undefined, { transform: SlMultiSelect.count });\n readonly alignOffset = input(undefined, { transform: SlMultiSelect.count });\n readonly collisionPadding = input(undefined, { transform: SlMultiSelect.count });\n\n readonly addOnPaste = input(undefined, { transform: SlMultiSelect.flag });\n readonly allowDuplicates = input(undefined, { transform: SlMultiSelect.flag });\n readonly commitOnBlur = input(undefined, { transform: SlMultiSelect.flag });\n readonly creatable = input(undefined, { transform: SlMultiSelect.flag });\n readonly editable = input(undefined, { transform: SlMultiSelect.flag });\n readonly reorderable = input(undefined, { transform: SlMultiSelect.flag });\n readonly highlightMatch = input(undefined, { transform: SlMultiSelect.flag });\n readonly clearable = input(undefined, { transform: SlMultiSelect.flag });\n readonly loop = input(undefined, { transform: SlMultiSelect.flag });\n readonly closeOnSelect = input(undefined, { transform: SlMultiSelect.flag });\n readonly closeOnEscape = input(undefined, { transform: SlMultiSelect.flag });\n readonly closeOnOutsidePress = input(undefined, { transform: SlMultiSelect.flag });\n readonly flip = input(undefined, { transform: SlMultiSelect.flag });\n readonly shift = input(undefined, { transform: SlMultiSelect.flag });\n readonly hideWhenDetached = input(undefined, { transform: SlMultiSelect.flag });\n readonly portal = input(undefined, { transform: SlMultiSelect.flag });\n readonly fullWidth = input(undefined, { transform: SlMultiSelect.flag });\n readonly disabled = input(undefined, { transform: SlMultiSelect.flag });\n readonly readOnly = input(undefined, { transform: SlMultiSelect.flag });\n readonly required = input(undefined, { transform: SlMultiSelect.flag });\n readonly invalid = input(undefined, { transform: SlMultiSelect.flag });\n readonly loading = input(false, { transform: booleanAttribute });\n\n private readonly defaults = injectMultiSelectDefaults();\n /** The family's words in the language in force, with this control's `messages` laid over them. */\n readonly t = injectMessages(multiSelectMessages, this.messages);\n private readonly inForceLocale = injectLocale();\n /** The locale the filter and the duplicate rule compare in: the `locale` input, or the language in force. */\n readonly resolvedLocale = computed(() => this.locale() ?? this.inForceLocale());\n private readonly viewContainer = inject(ViewContainerRef);\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly injector = inject(Injector);\n private readonly template = viewChild.required<TemplateRef<unknown>>('layer');\n private readonly controlRef = viewChild.required<{ nativeElement: HTMLInputElement }>('control');\n private readonly rowRef = viewChild.required<{ nativeElement: HTMLElement }>('row');\n private readonly countRef = viewChild<{ nativeElement: HTMLElement }>('count');\n\n readonly field = inject(SlField, { optional: true });\n\n private readonly identifier = Math.random().toString(36).slice(2, 8);\n readonly contentId = `sl-multi-select-${this.identifier}`;\n private readonly ownId = `sl-multi-select-input-${this.identifier}`;\n\n private readonly registry = signal(new Map<MultiSelectOptionValue, string>());\n /** Bumped by an option whose presence or visibility changed; read once per render. */\n private readonly collection = signal(0);\n readonly optionCount = signal(0);\n readonly hiddenCount = signal(0);\n readonly narrow = signal(false);\n readonly editingValue = signal<MultiSelectOptionValue | null>(null);\n readonly editingText = signal('');\n private entry: Entry = 'none';\n\n private view: EmbeddedViewRef<unknown> | null = null;\n private layerNode: HTMLElement | null = null;\n private surfaceNode: HTMLElement | null = null;\n private portalRoot: PortalRootHandle | null = null;\n private positioner: PositionerHandle | null = null;\n private layer: DismissableLayerHandle | null = null;\n private presence: PresenceHandle | null = null;\n private observer: IntersectionObserver | null = null;\n private ring: ArrowNavigationHandle | null = null;\n private removal: RemovalFocusHandle | null = null;\n private collapse: CollapseHandle | null = null;\n private gate: WidthGateHandle | null = null;\n private disabledByForm = signal<boolean | undefined>(undefined);\n\n private readonly hostId = inject(new HostAttributeToken('id'), { optional: true });\n\n private onChange: (value: readonly MultiSelectOptionValue[]) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n readonly resolvedSize = computed(() => this.size() ?? this.field?.size() ?? this.defaults.size);\n readonly resolvedVariant = computed(() => this.variant() ?? this.defaults.variant);\n readonly resolvedAlign = computed(() => this.align() ?? this.defaults.align);\n readonly resolvedSide = computed(() => this.side() ?? this.defaults.side);\n readonly resolvedWidth = computed(() => this.width() ?? this.defaults.width);\n readonly resolvedMount = computed(() => this.mount() ?? this.defaults.mount);\n readonly resolvedOpenOn = computed(() => this.openOn() ?? this.defaults.openOn);\n readonly resolvedOverflow = computed(() => this.overflow() ?? this.defaults.overflow);\n readonly resolvedChosenOptions = computed(\n () => this.chosenOptions() ?? this.defaults.chosenOptions,\n );\n readonly resolvedLoop = computed(() => this.loop() ?? this.defaults.loop);\n readonly resolvedClearable = computed(() => this.clearable() ?? this.defaults.clearable);\n readonly resolvedFullWidth = computed(() => this.fullWidth() ?? this.defaults.fullWidth);\n readonly resolvedCreatable = computed(() => this.creatable() ?? this.defaults.creatable);\n readonly resolvedEditable = computed(() => this.editable() ?? this.defaults.editable);\n readonly resolvedReorderable = computed(() => this.reorderable() ?? this.defaults.reorderable);\n readonly resolvedAddOnPaste = computed(() => this.addOnPaste() ?? this.defaults.addOnPaste);\n readonly resolvedCommitOnBlur = computed(() => this.commitOnBlur() ?? this.defaults.commitOnBlur);\n readonly resolvedAllowDuplicates = computed(\n () => this.allowDuplicates() ?? this.defaults.allowDuplicates,\n );\n readonly resolvedDelimiters = computed(() => this.delimiters() ?? this.defaults.delimiters);\n readonly resolvedMax = computed(() => this.max() ?? this.defaults.max);\n readonly resolvedCloseOnSelect = computed(\n () => this.closeOnSelect() ?? this.defaults.closeOnSelect,\n );\n readonly resolvedHighlightMatch = computed(\n () => this.highlightMatch() ?? this.defaults.highlightMatch,\n );\n\n readonly resolvedDisabled = computed(\n () =>\n this.disabled() ?? this.disabledByForm() ?? this.field?.disabled() ?? this.defaults.disabled,\n );\n readonly resolvedReadOnly = computed(\n () => this.readOnly() ?? this.field?.readOnly() ?? this.defaults.readOnly,\n );\n readonly resolvedRequired = computed(\n () => this.required() ?? this.field?.required() ?? this.defaults.required,\n );\n readonly resolvedInvalid = computed(\n () => this.invalid() ?? this.field?.invalid() ?? this.defaults.invalid,\n );\n\n readonly isOpen = computed(() => this.open() && !this.resolvedDisabled());\n readonly controlId = computed(() => this.hostId ?? this.field?.ids().control ?? this.ownId);\n readonly describedBy = computed(() => this.field?.describedBy() ?? null);\n /** The set has reached `max` and takes nothing more. */\n readonly full = computed(() => {\n const limit = this.resolvedMax();\n return limit !== null && this.value().length >= limit;\n });\n readonly frozen = computed(() => this.resolvedReadOnly() || this.resolvedDisabled());\n\n private readonly declared = computed(() => {\n const table = new Map<MultiSelectOptionValue, string>();\n for (const option of flatten(this.items())) table.set(option.value, option.label);\n return table;\n });\n\n /** The query is the typed text: unlike a combobox's, committing empties it. */\n readonly query = computed(() => this.inputValue());\n\n private readonly collator = computed<Filter>(() =>\n createFilter({ locale: this.resolvedLocale() }),\n );\n\n readonly showClear = computed(\n () =>\n this.resolvedClearable() &&\n (this.value().length > 0 || this.inputValue() !== '') &&\n !this.resolvedDisabled() &&\n !this.resolvedReadOnly(),\n );\n\n readonly gridLabel = computed(() => this.t('chosen', { count: this.value().length }));\n readonly chosenId = computed(() => `${this.controlId()}-chosen`);\n /**\n * The contract's wiring: the grid carries the field's label and the count of\n * chips. A label written as text is joined to the count; a field's label is\n * read through `aria-labelledby` with the count beside it.\n */\n readonly gridName = computed((): { label: string | null; labelledBy: string | null } => {\n const written = this.ariaLabel();\n if (written !== undefined)\n return { label: `${written}, ${this.gridLabel()}`, labelledBy: null };\n const field = this.field?.ids().label;\n if (field !== undefined) return { label: null, labelledBy: `${field} ${this.chosenId()}` };\n return { label: this.gridLabel(), labelledBy: null };\n });\n\n readonly counterText = computed(() => {\n const limit = this.resolvedMax();\n if (limit !== null) {\n return this.t('counter', { count: this.value().length, max: limit });\n }\n if (this.narrow() && this.value().length > 0) return this.gridLabel();\n return null;\n });\n\n readonly activeDescendant = computed(() => {\n const held = this.highlightedValue();\n return this.isOpen() && held !== null ? this.optionId(held) : null;\n });\n\n /**\n * The offer to add what was typed: while the consumer allows one, the reader\n * typed something, nothing matched, and there is room to take it. A full\n * control refuses every value, so an offer there is one the next press turns\n * down.\n */\n readonly offering = computed(() =>\n this.resolvedCreatable() &&\n !this.full() &&\n this.query().trim() !== '' &&\n this.optionCount() === 0\n ? this.query()\n : null,\n );\n\n readonly statusMessage = computed(() => {\n if (this.loading()) return this.t('loading');\n const count = this.optionCount();\n return count === 0 ? '' : this.t('count', { count });\n });\n\n constructor() {\n const destroyRef = inject(DestroyRef);\n\n effect(() => {\n const open = this.isOpen();\n untracked(() => (open ? this.show() : this.hide()));\n });\n\n afterNextRender(() => {\n this.bindRow();\n if (this.resolvedMount() === 'eager' && !this.isOpen()) this.build();\n });\n\n /* A value arriving or leaving changes what there is to fit, and which cells\n the ring walks. */\n afterRenderEffect(() => {\n this.value();\n this.resolvedOverflow();\n untracked(() => {\n this.ring?.refresh();\n this.collapse?.refresh();\n });\n });\n\n /* One count per render, however many options changed in it. Each option\n counting the popup itself read the whole collection once per option —\n quadratic in the option count on every keystroke that filters. */\n afterRenderEffect(() => {\n this.collection();\n untracked(() => this.recount());\n });\n\n destroyRef.onDestroy(() => {\n this.teardown();\n this.ring?.destroy();\n this.removal?.destroy();\n this.collapse?.destroy();\n this.gate?.destroy();\n });\n }\n\n ngOnInit() {\n const seed = this.defaultValue();\n if (seed === undefined || this.value().length > 0) return;\n this.value.set([...seed]);\n }\n\n optionId(value: MultiSelectOptionValue): string {\n return `${this.contentId}-option-${encodeURIComponent(value)}`;\n }\n\n labelFor(value: MultiSelectOptionValue): string | undefined {\n return this.declared().get(value) ?? this.registry().get(value);\n }\n\n registerLabel(value: MultiSelectOptionValue, label: string) {\n if (this.registry().get(value) === label) return;\n const next = new Map(this.registry());\n next.set(value, label);\n this.registry.set(next);\n }\n\n protected removeLabelFor(value: MultiSelectOptionValue) {\n return this.t('remove', { label: this.labelFor(value) ?? value });\n }\n\n protected chipLabel(value: MultiSelectOptionValue, index: number) {\n if (!this.resolvedReorderable()) return null;\n return this.t('reorder', {\n label: this.labelFor(value) ?? value,\n position: index + 1,\n count: this.value().length,\n });\n }\n\n matches(label: string): boolean {\n const query = this.query();\n const given = this.filter();\n if (query === '' || given === null) return true;\n if (given !== undefined) return given(label, query);\n return this.collator().contains(label, query);\n }\n\n /** Whether an option may be taken: a full control refuses what it does not hold. */\n refuses(value: MultiSelectOptionValue): boolean {\n return this.full() && !this.value().includes(value);\n }\n\n /** An option says the collection changed; the count follows after the render. */\n collectionChanged() {\n this.collection.update((version) => version + 1);\n }\n\n recount() {\n this.optionCount.set(\n this.options().filter((option) => option.dataset['create'] === undefined).length,\n );\n this.dropStaleHighlight();\n }\n\n options(): HTMLElement[] {\n return [...(this.surfaceNode?.querySelectorAll<HTMLElement>(OPTION_SELECTOR) ?? [])];\n }\n\n focus() {\n this.controlRef().nativeElement.focus({ preventScroll: true });\n }\n\n scrollToKey(value: MultiSelectOptionValue) {\n const option = this.options().find((candidate) => candidate.dataset['value'] === value);\n if (option !== undefined && this.surfaceNode !== null) revealWithin(option, this.surfaceNode);\n }\n\n private announce(message: string) {\n if (message === '') return;\n getLiveAnnouncer(this.host.nativeElement.ownerDocument).announce(message, { repeat: true });\n }\n\n setOpen(next: boolean, reason: MultiSelectOpenReason, source?: Event) {\n if (next === this.isOpen()) return;\n const state = createControllable<boolean>({\n initial: this.isOpen(),\n onRequest: (request) => this.openChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return;\n this.open.set(next);\n if (!next) {\n this.highlightedValue.set(null);\n this.entry = 'none';\n }\n }\n\n setHighlighted(\n next: MultiSelectOptionValue | null,\n reason: MultiSelectHighlightReason,\n source?: Event,\n ) {\n if (next === this.highlightedValue()) return;\n const state = createControllable<MultiSelectOptionValue | null>({\n initial: this.highlightedValue(),\n onRequest: (request) => this.highlightedValueChangeRequest.emit(request),\n });\n if (state.request(next, reason, source)) {\n this.highlightedValue.set(next);\n if (next !== null) this.scrollToKey(next);\n }\n }\n\n setInputValue(next: string, reason: MultiSelectInputReason, source?: Event) {\n if (next === this.inputValue()) return;\n const state = createControllable<string>({\n initial: this.inputValue(),\n onRequest: (request) => this.inputValueChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return;\n this.inputValue.set(next);\n /* The binding writes the input at the next render, and a key that arrives\n before it types into what the browser still holds: a commit left its\n text in the input, and the next character joined it. */\n const element = this.host.nativeElement.querySelector<HTMLInputElement>(\"[data-part='input']\");\n if (element !== null && element.value !== next) element.value = next;\n }\n\n /** One request for one transition, whatever moved the set. */\n private commit(next: readonly string[], reason: MultiSelectValueReason, source?: Event) {\n if (same(next, this.value())) return false;\n const state = createControllable<readonly MultiSelectOptionValue[]>({\n initial: this.value(),\n onRequest: (request) => this.valueChangeRequest.emit(request),\n });\n if (!state.request(next, reason, source)) return false;\n this.value.set(next);\n this.onChange(next);\n this.onTouched();\n return true;\n }\n\n /**\n * Every candidate judged against the set it would join, in order. It returns\n * the set that survived rather than committing one, so a value arriving and a\n * value edited in place apply one rule and cannot drift apart.\n */\n private judge(candidates: readonly string[], held: readonly string[]) {\n const next = [...held];\n const refused: Record<MultiSelectRefuseCause, string[]> = {\n duplicate: [],\n limit: [],\n invalid: [],\n };\n let existing: MultiSelectOptionValue | null = null;\n const validate = this.validateValue();\n const collator = this.collator();\n const limit = this.resolvedMax();\n\n for (const candidate of candidates) {\n const text = candidate.trim();\n if (text === '') continue;\n\n if (validate !== undefined && !validate(text, next)) {\n refused.invalid.push(text);\n continue;\n }\n\n if (!this.resolvedAllowDuplicates()) {\n const twin = next.find(\n (value) =>\n value === text ||\n collator.equals(value, text) ||\n collator.equals(this.labelFor(value) ?? value, text),\n );\n if (twin !== undefined) {\n refused.duplicate.push(text);\n existing ??= twin;\n continue;\n }\n }\n\n if (limit !== null && next.length >= limit) {\n refused.limit.push(text);\n continue;\n }\n\n next.push(text);\n }\n\n return { existing, next, refused };\n }\n\n private report(\n refused: Record<MultiSelectRefuseCause, string[]>,\n existing: MultiSelectOptionValue | null,\n ) {\n for (const cause of ['duplicate', 'limit', 'invalid'] as const) {\n if (refused[cause].length === 0) continue;\n this.valueRefuse.emit({ values: refused[cause], cause });\n }\n\n /* A duplicate is answered by the chip that already holds it taking focus;\n the other two have nothing to point at, so they are said. */\n if (existing !== null) this.focusChip(existing);\n const limit = this.resolvedMax();\n if (refused.limit.length > 0 && limit !== null)\n this.announce(this.t('counter', { count: limit, max: limit }));\n }\n\n /** The one door into the set. */\n admit(candidates: readonly string[], reason: MultiSelectValueReason, source?: Event) {\n const held = this.value();\n const { existing, next, refused } = this.judge(candidates, held);\n if (next.length > held.length) this.commit(next, reason, source);\n this.report(refused, existing);\n }\n\n /**\n * One value edited in place, which is one transition and not a removal\n * followed by an addition — and judged against the set *without* it, or every\n * edit is a duplicate of itself.\n */\n replace(target: MultiSelectOptionValue, text: string, source?: Event) {\n const held = this.value();\n const index = held.indexOf(target);\n if (index === -1) return;\n if (text.trim() === '' || text === target) return;\n\n const without = held.filter((value) => value !== target);\n const { existing, next, refused } = this.judge([text], without);\n if (next.length > without.length) {\n const taken = next[next.length - 1] as string;\n const ordered = [...without];\n ordered.splice(index, 0, taken);\n this.commit(ordered, 'submit', source);\n }\n this.report(refused, existing);\n }\n\n remove(target: MultiSelectOptionValue, source?: Event) {\n const held = this.value();\n const next = held.filter((value) => value !== target);\n if (next.length === held.length) return;\n if (this.commit(next, 'remove', source)) {\n this.announce(`${this.labelFor(target) ?? target}, ${next.length}`);\n }\n }\n\n toggle(target: MultiSelectOptionValue, reason: MultiSelectValueReason, source?: Event) {\n if (this.value().includes(target)) {\n this.remove(target, source);\n return;\n }\n this.admit([target], reason, source);\n }\n\n clear(source?: Event) {\n this.commit([], 'clear', source);\n this.setInputValue('', 'clear', source);\n }\n\n /** Reorder, and the only shape it has: one value moving to one index. */\n move(from: number, to: number, source?: Event) {\n const held = this.value();\n if (from < 0 || from >= held.length) return;\n const target = Math.min(Math.max(to, 0), held.length - 1);\n if (target === from) return;\n\n const next = [...held];\n const [moved] = next.splice(from, 1);\n next.splice(target, 0, moved as string);\n if (!this.commit(next, 'keyboard', source)) return;\n this.announce(`${this.labelFor(moved as string) ?? moved}, ${target + 1}, ${next.length}`);\n /* The chip travelled with the reader's focus; the ring has to be told the\n cells moved under it. After the render rather than after a microtask:\n a browser runs microtasks first, and the chip has not moved yet. */\n this.afterRender(() => {\n this.ring?.refresh();\n this.focusChip(moved as string);\n });\n }\n\n private chips(): HTMLElement[] {\n return [...this.host.nativeElement.querySelectorAll<HTMLElement>(CHIP_SELECTOR)];\n }\n\n /** Runs once the change in hand has reached the DOM. */\n private afterRender(callback: () => void) {\n afterNextRender(callback, { injector: this.injector });\n }\n\n private focusChip(value: MultiSelectOptionValue) {\n const chip = this.chips().find((candidate) => candidate.dataset['value'] === value);\n chip?.focus({ preventScroll: true });\n }\n\n private splitText(text: string): string[] {\n const delimiters = this.resolvedDelimiters();\n if (delimiters.length === 0) return [text];\n const pattern = new RegExp(\n `[${delimiters.map((mark) => mark.replace(/[.*+?^${}()|[\\]\\\\-]/g, '\\\\$&')).join('')}]`,\n );\n return text.split(pattern);\n }\n\n /** The typed text, committed as one or several values. */\n private commitQuery(source?: Event) {\n if (!this.resolvedCreatable()) return false;\n const text = this.inputValue();\n if (text.trim() === '') return false;\n this.admit(this.splitText(text), 'submit', source);\n this.setInputValue('', 'submit', source);\n return true;\n }\n\n protected onInput(event: Event) {\n const next = (event.target as HTMLInputElement).value;\n this.setInputValue(next, 'keyboard', event);\n if (\n this.resolvedOpenOn() !== 'manual' &&\n !this.isOpen() &&\n !this.resolvedReadOnly() &&\n next !== ''\n ) {\n this.entry = 'none';\n this.setOpen(true, 'keyboard', event);\n } else {\n this.recount();\n }\n }\n\n protected onFocus() {\n if (this.resolvedOpenOn() !== 'focus' || this.isOpen()) return;\n if (this.resolvedDisabled() || this.resolvedReadOnly()) return;\n this.entry = 'none';\n this.setOpen(true, 'keyboard');\n }\n\n /* A press on the input opens a closed popup and never closes an open one,\n because the same press places the caret. Under `focus` the press has\n already opened it through focus, so this finds it open. */\n protected onClick(event: MouseEvent) {\n if (event.defaultPrevented || this.resolvedOpenOn() === 'manual' || this.isOpen()) return;\n if (this.resolvedDisabled() || this.resolvedReadOnly()) return;\n this.entry = 'none';\n this.setOpen(true, 'pointer', event);\n }\n\n protected onEditInput(event: Event) {\n this.editingText.set((event.target as HTMLInputElement).value);\n }\n\n protected onEditKeyDown(value: MultiSelectOptionValue, event: KeyboardEvent) {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.commitEdit(value, event);\n return;\n }\n if (event.key === 'Escape') {\n event.preventDefault();\n this.editingValue.set(null);\n this.afterRender(() => this.focusChip(value));\n }\n }\n\n protected commitEdit(value: MultiSelectOptionValue, event: Event) {\n if (this.editingValue() !== value) return;\n const text = this.editingText();\n this.editingValue.set(null);\n this.replace(value, text, event);\n this.afterRender(() => this.focusChip(text.trim() === '' ? value : text.trim()));\n }\n\n protected onPaste(event: ClipboardEvent) {\n if (!this.resolvedAddOnPaste() || !this.resolvedCreatable() || this.resolvedReadOnly()) return;\n const text = event.clipboardData?.getData('text') ?? '';\n const parts = this.splitText(text).filter((part) => part.trim() !== '');\n if (parts.length < 2) return;\n event.preventDefault();\n this.admit(parts, 'submit', event);\n this.setInputValue('', 'submit', event);\n }\n\n protected onBlur(event: FocusEvent) {\n this.onTouched();\n const next = event.relatedTarget;\n if (next instanceof Node && this.surfaceNode?.contains(next) === true) return;\n if (next instanceof Node && this.host.nativeElement.contains(next)) return;\n const began = pressOrigin(this.controlRef().nativeElement.ownerDocument);\n if (began instanceof Node && this.surfaceNode?.contains(began) === true) return;\n\n if (this.resolvedCommitOnBlur()) this.commitQuery(event);\n if (this.isOpen()) this.setOpen(false, 'blur', event);\n }\n\n protected onClear(event: MouseEvent) {\n this.clear(event);\n this.focus();\n }\n\n protected onRemoveClick(value: MultiSelectOptionValue, event: MouseEvent) {\n event.stopPropagation();\n this.remove(value, event);\n }\n\n protected onCountClick(event: MouseEvent) {\n this.setOpen(true, 'pointer', event);\n }\n\n protected onToggle(event: MouseEvent) {\n if (this.resolvedDisabled() || this.resolvedReadOnly()) return;\n this.entry = 'none';\n this.setOpen(!this.isOpen(), 'pointer', event);\n this.focus();\n }\n\n protected onKeyDown(event: KeyboardEvent) {\n if (this.resolvedDisabled()) return;\n const alt = event.altKey;\n\n if (this.resolvedDelimiters().includes(event.key) && !alt) {\n event.preventDefault();\n this.commitQuery(event);\n return;\n }\n\n switch (event.key) {\n case 'ArrowDown':\n if (this.resolvedReadOnly()) return;\n event.preventDefault();\n if (!this.isOpen()) this.openWith(alt ? 'none' : 'first', event);\n else if (!alt) this.moveHighlight('next', event);\n return;\n case 'ArrowUp':\n if (this.resolvedReadOnly()) return;\n event.preventDefault();\n if (alt) this.setOpen(false, 'keyboard', event);\n else if (!this.isOpen()) this.openWith('last', event);\n else this.moveHighlight('previous', event);\n return;\n case 'PageDown':\n if (!this.isOpen()) return;\n event.preventDefault();\n this.moveHighlight('pageDown', event);\n return;\n case 'PageUp':\n if (!this.isOpen()) return;\n event.preventDefault();\n this.moveHighlight('pageUp', event);\n return;\n case 'Enter': {\n const held = this.highlightedValue();\n if (held !== null) {\n event.preventDefault();\n if (held === this.offering()) this.commitQuery(event);\n else {\n this.toggle(held, 'select', event);\n this.setInputValue('', 'select', event);\n if (this.resolvedCloseOnSelect()) this.setOpen(false, 'select', event);\n }\n return;\n }\n if (this.commitQuery(event)) event.preventDefault();\n return;\n }\n case 'Escape':\n if (this.isOpen()) {\n event.preventDefault();\n this.setOpen(false, 'escape', event);\n return;\n }\n if (this.inputValue() === '') return;\n event.preventDefault();\n this.setInputValue('', 'clear', event);\n return;\n case 'Backspace': {\n /* §6's rule: from an empty field the first press moves focus to the\n last chip and removes nothing, and the second — which lands on the\n chip — removes it. */\n if (this.inputValue() !== '') return;\n const element = event.target as HTMLInputElement;\n if (element.selectionStart !== 0) return;\n if (this.resolvedReadOnly() || this.value().length === 0) return;\n const last = this.chips().at(-1);\n if (last === undefined) return;\n event.preventDefault();\n last.focus({ preventScroll: true });\n return;\n }\n case 'Tab':\n if (this.isOpen()) this.setOpen(false, 'dismiss', event);\n return;\n default:\n /* Every other key is the browser's, which the pattern asks for by name. */\n break;\n }\n }\n\n protected onChipKeyDown(value: MultiSelectOptionValue, index: number, event: KeyboardEvent) {\n if (event.defaultPrevented) return;\n\n switch (event.key) {\n case 'Delete':\n case 'Backspace':\n if (this.frozen()) return;\n event.preventDefault();\n this.remove(value, event);\n return;\n case 'Enter':\n if (this.frozen() || !this.resolvedEditable()) return;\n event.preventDefault();\n this.editingText.set(this.labelFor(value) ?? value);\n this.editingValue.set(value);\n this.afterRender(() => {\n const field = this.host.nativeElement.querySelector<HTMLInputElement>(\n `[data-value=\"${CSS.escape(value)}\"] input`,\n );\n field?.focus({ preventScroll: true });\n });\n return;\n case 'Escape':\n event.preventDefault();\n this.focus();\n return;\n default:\n break;\n }\n\n /* Reorder. `Alt` and an arrow, following the writing direction. */\n if (this.resolvedReorderable() && event.altKey && !this.frozen()) {\n const rtl =\n this.host.nativeElement.ownerDocument.defaultView?.getComputedStyle(this.host.nativeElement)\n .direction === 'rtl';\n const forward = rtl ? 'ArrowLeft' : 'ArrowRight';\n const back = rtl ? 'ArrowRight' : 'ArrowLeft';\n if (event.key === forward) {\n event.preventDefault();\n this.move(index, index + 1, event);\n return;\n }\n if (event.key === back) {\n event.preventDefault();\n this.move(index, index - 1, event);\n return;\n }\n if (event.key === 'Home') {\n event.preventDefault();\n this.move(index, 0, event);\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n this.move(index, this.value().length - 1, event);\n return;\n }\n }\n\n /* The grid pattern's alphanumeric branch: a printable character on a cell\n holding editable content takes focus into its field and types there. */\n if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n this.focus();\n }\n }\n\n protected onOptionPointerDown(event: PointerEvent) {\n if (event.defaultPrevented) return;\n event.preventDefault();\n }\n\n protected onCreateClick(query: string, event: MouseEvent) {\n this.admit(this.splitText(query), 'submit', event);\n this.setInputValue('', 'submit', event);\n this.focus();\n }\n\n private openWith(entry: Entry, event: Event) {\n this.entry = entry;\n this.setOpen(true, 'keyboard', event);\n }\n\n private moveHighlight(intent: MoveIntent, event?: Event) {\n const list = this.options();\n if (list.length === 0) return;\n const held = this.highlightedValue();\n const index = moveIndex({\n enabled: list.map(\n (option) =>\n option.dataset['disabled'] === undefined &&\n option.getAttribute('aria-disabled') !== 'true',\n ),\n from: held === null ? -1 : list.findIndex((option) => option.dataset['value'] === held),\n intent,\n loop: this.resolvedLoop(),\n });\n if (index !== -1) this.setHighlighted(list[index]?.dataset['value'] ?? null, 'keyboard', event);\n }\n\n private dropStaleHighlight() {\n const held = this.highlightedValue();\n if (held === null || held === this.offering()) return;\n const kept = this.options().some((option) => option.dataset['value'] === held);\n if (!kept) this.setHighlighted(null, 'keyboard');\n }\n\n /**\n * The ring over the cells, the removal rule, the collapse and the width gate.\n * All four belong to the row rather than to the layer, so they are bound once\n * and outlive every open.\n */\n private bindRow() {\n const row = this.rowRef().nativeElement;\n\n this.ring = createArrowNavigation(row, {\n itemSelector: `${CHIP_SELECTOR}, [data-part='field'] > [data-part='input']`,\n loop: false,\n /* The field keeps the caret keys while there is anything to move the\n caret through, and gives them up when the query is empty. */\n ownedKeys: (item) =>\n item instanceof HTMLInputElement && item.value !== ''\n ? ['ArrowLeft', 'ArrowRight', 'Home', 'End']\n : [],\n });\n\n this.removal = createRemovalFocus(row, {\n fallback: () => this.controlRef().nativeElement,\n itemSelector: CHIP_SELECTOR,\n });\n\n this.gate = createWidthGate(this.host.nativeElement, {\n at: 120,\n onChange: (narrow) => this.narrow.set(narrow),\n });\n\n this.collapse = createCollapse(row, {\n collapsible: () => this.resolvedOverflow() === 'collapse',\n onChange: (units) => this.hiddenCount.set(Math.max(units.length, 1)),\n trigger: () => this.countRef()?.nativeElement ?? null,\n /* The counting chip is the trigger, never a unit: measured as one, it\n counted itself and stood one too high, and was collapsed into itself. */\n units: () =>\n [...row.querySelectorAll<HTMLElement>(CHIP_SELECTOR)].filter(\n (unit) => !unit.hasAttribute('data-count'),\n ),\n });\n }\n\n private show() {\n this.build();\n this.position();\n this.bind();\n this.enter();\n }\n\n private build() {\n if (this.view !== null) {\n this.presence?.sync(this.isOpen());\n this.view.detectChanges();\n return;\n }\n\n this.portalRoot = createPortalRoot({\n origin: this.host.nativeElement,\n disabled: this.portal() === false,\n });\n\n this.view = this.viewContainer.createEmbeddedView(this.template());\n this.view.detectChanges();\n\n this.layerNode = this.view.rootNodes.find(\n (node: unknown): node is HTMLElement => node instanceof HTMLElement,\n ) as HTMLElement | null;\n this.surfaceNode = this.layerNode?.querySelector<HTMLElement>(\"[data-part='content']\") ?? null;\n if (this.layerNode === null) return;\n\n this.portalRoot.container?.append(this.layerNode);\n this.presence = createPresence({ present: this.isOpen() });\n this.presence.setNode(this.layerNode);\n }\n\n private position() {\n if (this.layerNode === null) return;\n\n this.positioner?.destroy();\n this.positioner = createPositioner(this.host.nativeElement, this.layerNode, {\n align: this.resolvedAlign(),\n alignOffset: this.alignOffset() ?? this.defaults.alignOffset,\n boundaryPadding: this.collisionPadding() ?? this.defaults.collisionPadding,\n flip: this.flip() ?? this.defaults.flip,\n hideWhenDetached: this.hideWhenDetached() ?? this.defaults.hideWhenDetached,\n matchWidth: this.resolvedWidth() === 'anchor',\n shift: this.shift() ?? this.defaults.shift,\n side: this.resolvedSide(),\n sideOffset: this.sideOffset() ?? this.defaults.sideOffset,\n strategy: this.strategy() ?? this.defaults.strategy,\n });\n /* The height that bounds the list arrives with the position, after the\n highlight has landed, so the highlighted row is revealed again. */\n void this.positioner.update().then(() => {\n const held = this.highlightedValue();\n if (held !== null) this.scrollToKey(held);\n });\n }\n\n private bind() {\n if (this.layerNode === null) return;\n\n this.layer = createDismissableLayer(this.layerNode, {\n branches: [this.host.nativeElement],\n escape: this.closeOnEscape() ?? this.defaults.closeOnEscape,\n focusOutside: false,\n modal: false,\n outsidePress: this.closeOnOutsidePress() ?? this.defaults.closeOnOutsidePress,\n scrollLock: false,\n onDismiss: (request) => {\n this.setOpen(\n false,\n request.reason === 'escape' ? 'escape' : 'outsidePress',\n request.source as Event | undefined,\n );\n },\n });\n\n this.observeEnd();\n }\n\n private observeEnd() {\n this.observer?.disconnect();\n this.observer = null;\n const root = this.surfaceNode;\n if (root === null || typeof IntersectionObserver !== 'function') return;\n const last = this.options().at(-1);\n if (last === undefined) return;\n\n this.observer = new IntersectionObserver(\n (entries) => {\n if (entries.some((entry) => entry.isIntersecting)) this.loadMore.emit();\n },\n { root },\n );\n this.observer.observe(last);\n }\n\n private enter() {\n this.recount();\n if (this.entry === 'none') return;\n this.moveHighlight(this.entry);\n this.entry = 'none';\n }\n\n private hide() {\n this.unbind();\n if (this.resolvedMount() === 'active') this.teardown();\n }\n\n private unbind() {\n this.layer?.destroy();\n this.positioner?.destroy();\n this.observer?.disconnect();\n this.layer = null;\n this.positioner = null;\n this.observer = null;\n }\n\n private teardown() {\n this.unbind();\n this.presence?.destroy();\n this.portalRoot?.release();\n this.layerNode?.remove();\n this.view?.destroy();\n\n this.presence = null;\n this.portalRoot = null;\n this.layerNode = null;\n this.surfaceNode = null;\n this.view = null;\n }\n\n writeValue(value: readonly MultiSelectOptionValue[] | null) {\n this.value.set(value === null ? [] : [...value]);\n }\n\n registerOnChange(fn: (value: readonly MultiSelectOptionValue[]) => 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 * Three validities the family owns, and none of them is one a native input\n * can describe: a required control holding nothing, a set over its limit, and\n * a set holding a value twice where duplicates are refused. The second is the\n * one Zag has the mechanism for and no validator to report it with.\n */\n validate(): ValidationErrors | null {\n const held = this.value();\n if (this.resolvedRequired() && held.length === 0) return { required: true };\n\n const limit = this.resolvedMax();\n if (limit !== null && held.length > limit) {\n return { tooMany: { max: limit, actual: held.length } };\n }\n\n if (!this.resolvedAllowDuplicates() && new Set(held).size !== held.length) {\n return { duplicate: true };\n }\n return null;\n }\n}\n","import { matchRanges } from '@slotted/core/highlight';\nimport {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n numberAttribute,\n signal,\n untracked,\n ViewEncapsulation,\n} from '@angular/core';\nimport { SlGlyph, SlIcon } from '@slotted/angular/icon';\nimport type { GlyphName } from '@slotted/angular/icon';\n\nimport { SlHighlight } from '@slotted/angular/highlight';\n\nimport { SlMultiSelect } from './multi-select';\nimport type { MultiSelectOptionValue } from './multi-select-defaults';\n\n/**\n * One option, and the one that decides whether it belongs in the results.\n *\n * **Each option filters itself**, as `sl-combobox-item` does: the family holds\n * the query and the comparison, the option holds its own label, and the popup's\n * DOM is therefore the result set.\n *\n * **An option the set already holds is still an option.** It carries\n * `aria-selected=\"true\"` and the check, and pressing it takes the value back\n * out; `chosenOptions=\"hide\"` is the other answer, for a list long enough that\n * a reader would rather see only what is left.\n *\n * `label` is an input rather than projected content, which is the one place\n * this binding differs from its React counterpart: a comparison and a split\n * both need the text before the view exists.\n */\n@Component({\n selector: 'sl-multi-select-item',\n standalone: true,\n exportAs: 'slMultiSelectItem',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [SlGlyph, SlHighlight, SlIcon],\n host: {\n 'data-part': 'item',\n 'data-part-item': '',\n role: 'option',\n '[id]': 'optionId()',\n '[hidden]': '!visible()',\n '[attr.data-value]': 'value()',\n '[attr.data-text-value]': 'label()',\n '[attr.aria-selected]': 'selected()',\n '[attr.aria-disabled]': 'inert() ? true : null',\n '[attr.aria-posinset]': 'position() ?? null',\n '[attr.aria-setsize]': 'position() === undefined ? null : (multiSelect.total() ?? null)',\n '[attr.data-disabled]': \"disabled() ? '' : null\",\n '[attr.data-selected]': \"selected() ? '' : null\",\n '[attr.data-current]': \"current() ? '' : null\",\n '(click)': 'onClick($event)',\n '(pointerdown)': 'onPointerDown($event)',\n '(pointerenter)': 'onPointerEnter($event)',\n },\n template: `\n @if (icon(); as glyph) {\n <span data-part=\"icon\" data-part-icon=\"\"\n ><span slIcon><svg slGlyph [name]=\"glyph\"></svg></span\n ></span>\n }\n <span data-part=\"label\" data-part-label=\"\">\n @if (ranges().length > 0) {\n <span slHighlight [text]=\"label()\" [ranges]=\"ranges()\"></span>\n } @else {\n {{ label() }}\n }\n </span>\n @if (description()) {\n <span data-part=\"description\" data-part-description=\"\">{{ description() }}</span>\n }\n <span data-part=\"indicator\" data-part-indicator=\"\"\n ><span slIcon><svg slGlyph name=\"check\"></svg></span\n ></span>\n `,\n})\nexport class SlMultiSelectItem {\n readonly value = input.required<MultiSelectOptionValue>();\n /** What the reader sees, what the filter compares, and what the mark splits. */\n readonly label = input.required<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly description = input<string | undefined>(undefined);\n /** The glyph drawn in the first column, as a `Glyph` inside an `Icon` box. */\n readonly icon = input<GlyphName | undefined>(undefined);\n readonly position = input(undefined, {\n transform: (given: number | string | undefined) =>\n given === undefined ? undefined : numberAttribute(given),\n });\n\n readonly multiSelect = inject(SlMultiSelect);\n\n readonly optionId = computed(() => this.multiSelect.optionId(this.value()));\n readonly selected = computed(() => this.multiSelect.value().includes(this.value()));\n readonly current = computed(() => this.multiSelect.highlightedValue() === this.value());\n /**\n * A full control refuses every value it does not already hold, and says so\n * where a reader can hear it. A control that silently ignores a press is a\n * control the reader presses again.\n */\n readonly inert = computed(() => this.disabled() || this.multiSelect.refuses(this.value()));\n readonly visible = computed(\n () =>\n this.multiSelect.matches(this.label()) &&\n !(this.selected() && this.multiSelect.resolvedChosenOptions() === 'hide'),\n );\n\n /**\n * The spans the query matched, from the same collator the filter used, drawn\n * by the `highlight` family inside this family's label. An `indexOf` beside\n * a locale-sensitive filter marks nothing on the row it has just matched.\n */\n readonly ranges = computed(() => {\n const query = this.multiSelect.query();\n if (!this.multiSelect.resolvedHighlightMatch() || query === '') return [];\n return matchRanges(this.label(), query, { locale: this.multiSelect.resolvedLocale() });\n });\n\n constructor() {\n /**\n * A hidden option is out of the result set, so the count and the label\n * registry both have to see the change. `hidden` rather than an `@if`,\n * because an option destroyed and rebuilt on every keystroke loses its\n * element identity — and with it whatever the reader's pointer was on.\n */\n afterRenderEffect(() => {\n this.visible();\n const value = this.value();\n const label = this.label();\n /* Untracked: what the parent reads while registering is its state, not\n this option's, and tracking it re-ran every option's effect on every\n open and every highlight move. */\n untracked(() => {\n this.multiSelect.registerLabel(value, label);\n this.multiSelect.collectionChanged();\n });\n });\n\n inject(DestroyRef).onDestroy(() => this.multiSelect.collectionChanged());\n }\n\n protected onPointerEnter(event: PointerEvent) {\n if (this.inert()) return;\n this.multiSelect.setHighlighted(this.value(), 'pointer', event);\n }\n\n /**\n * Only to stop the browser moving focus off the field: an option cannot hold\n * focus, so a press on it would take focus to the body and the blur path\n * would run in the middle of a choice.\n */\n protected onPointerDown(event: PointerEvent) {\n if (event.defaultPrevented) return;\n event.preventDefault();\n }\n\n protected onClick(event: MouseEvent) {\n if (this.inert()) return;\n this.multiSelect.toggle(this.value(), 'select', event);\n this.multiSelect.setInputValue('', 'select', event);\n if (this.multiSelect.resolvedCloseOnSelect()) this.multiSelect.setOpen(false, 'select', event);\n this.multiSelect.focus();\n }\n}\n\n/**\n * A set of options under a heading, named by `aria-labelledby` pointing at its\n * own label. A group whose every option was filtered away is hidden: a heading\n * with no options under it says a category matched when none did.\n */\n@Component({\n selector: 'sl-multi-select-group',\n standalone: true,\n exportAs: 'slMultiSelectGroup',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'data-part': 'group',\n 'data-part-group': '',\n role: 'group',\n '[attr.aria-labelledby]': 'labelId',\n '[hidden]': 'empty()',\n },\n template: `\n <div data-part=\"group-label\" data-part-group-label=\"\" [id]=\"labelId\">{{ label() }}</div>\n <ng-content />\n `,\n})\nexport class SlMultiSelectGroup {\n readonly label = input.required<string>();\n readonly labelId = `sl-multi-select-group-${Math.random().toString(36).slice(2, 8)}`;\n\n private readonly host = inject(ElementRef<HTMLElement>);\n private readonly multiSelect = inject(SlMultiSelect);\n readonly empty = signal(false);\n\n constructor() {\n /**\n * Measured after render rather than computed from the query: whether a\n * group still holds an option is a fact about the DOM its own children\n * produced, and a computed that read the DOM would be right once and stale\n * from then on. The set is read as well, because hiding a chosen option can\n * empty a group without the query moving at all.\n */\n afterRenderEffect(() => {\n this.multiSelect.query();\n this.multiSelect.value();\n const element = this.host.nativeElement as HTMLElement;\n this.empty.set(element.querySelector(\"[data-part='item']:not([hidden])\") === null);\n });\n }\n}\n\n/** A line between two sets of options. */\n@Component({\n selector: 'sl-multi-select-separator',\n standalone: true,\n exportAs: 'slMultiSelectSeparator',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'data-part': 'separator', 'data-part-separator': '', role: 'separator' },\n template: '',\n})\nexport class SlMultiSelectSeparator {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}