@koobiq/components 20.4.2 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (771) hide show
  1. package/accordion/accordion-trigger.scss +3 -10
  2. package/accordion/accordion.scss +4 -6
  3. package/actions-panel/actions-panel-container.scss +45 -1
  4. package/alert/alert.component.scss +3 -2
  5. package/app-switcher/_app-switcher-theme.scss +0 -4
  6. package/app-switcher/app-switcher-dropdown-app.scss +3 -2
  7. package/app-switcher/app-switcher-dropdown-site.scss +2 -1
  8. package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
  9. package/app-switcher/app-switcher-tokens.scss +15 -0
  10. package/app-switcher/app-switcher.scss +14 -4
  11. package/autocomplete/autocomplete.scss +7 -6
  12. package/badge/badge.component.scss +5 -8
  13. package/breadcrumbs/breadcrumbs.scss +25 -10
  14. package/button/_button-base.scss +30 -7
  15. package/button/_button-theme.scss +16 -0
  16. package/button/button-group.scss +7 -0
  17. package/button/button-tokens.scss +0 -2
  18. package/button/button.scss +34 -2
  19. package/button-toggle/_button-toggle-theme.scss +7 -2
  20. package/button-toggle/button-toggle.scss +65 -15
  21. package/checkbox/_checkbox-theme.scss +4 -3
  22. package/checkbox/checkbox.scss +3 -6
  23. package/clamped-text/clamped-text.scss +6 -2
  24. package/code-block/code-block-tokens.scss +0 -224
  25. package/code-block/code-block.scss +20 -9
  26. package/content-panel/content-panel-aside.scss +3 -2
  27. package/content-panel/content-panel-container.scss +37 -0
  28. package/content-panel/content-panel.scss +4 -3
  29. package/core/highlight/_highlight-theme.scss +3 -1
  30. package/core/option/action-container.scss +2 -2
  31. package/core/option/action.scss +2 -1
  32. package/core/option/option.scss +2 -1
  33. package/core/pop-up/_pop-up.scss +0 -37
  34. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
  35. package/core/styles/_core.scss +3 -0
  36. package/core/styles/_koobiq-theme.scss +5 -6
  37. package/core/styles/common/_animation.scss +44 -16
  38. package/core/styles/common/_groups-mixins.scss +21 -19
  39. package/core/styles/common/_groups.scss +4 -32
  40. package/core/styles/common/_index.scss +0 -2
  41. package/core/styles/common/_link.scss +117 -0
  42. package/core/styles/common/_list.scss +0 -26
  43. package/core/styles/common/_overlay.scss +8 -10
  44. package/core/styles/common/_rtl.scss +0 -14
  45. package/core/styles/common/_select.scss +33 -15
  46. package/core/styles/common/_squircle.scss +63 -0
  47. package/core/styles/common/_tokens.scss +0 -11
  48. package/core/styles/common/_vendor-prefixes.scss +0 -20
  49. package/core/styles/functions/_timing.scss +0 -22
  50. package/core/styles/theming/_scrollbar-theme.scss +6 -1
  51. package/core/styles/theming/_theming.scss +13 -65
  52. package/core/styles/typography/_index.scss +0 -1
  53. package/core/styles/typography/_typography.scss +0 -143
  54. package/core/styles/visual/_body.scss +1 -6
  55. package/core/styles/visual/_layout.scss +0 -12
  56. package/datepicker/calendar-body.scss +3 -1
  57. package/datepicker/calendar-header.scss +0 -1
  58. package/datepicker/datepicker-content.scss +33 -1
  59. package/datepicker/datepicker-toggle.scss +0 -38
  60. package/dl/dl-tokens.scss +10 -0
  61. package/dl/dl.scss +113 -13
  62. package/dropdown/_dropdown-theme.scss +4 -16
  63. package/dropdown/dropdown-item.scss +4 -10
  64. package/dropdown/dropdown.scss +2 -1
  65. package/empty-state/_empty-state-theme.scss +10 -4
  66. package/empty-state/empty-state-tokens.scss +4 -4
  67. package/empty-state/empty-state.scss +4 -0
  68. package/fesm2022/koobiq-components-accordion.mjs +347 -229
  69. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
  71. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-alert.mjs +39 -39
  73. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  74. package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
  75. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
  77. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-badge.mjs +46 -48
  79. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
  81. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
  83. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-button.mjs +332 -116
  85. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-checkbox.mjs +172 -132
  87. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
  89. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-code-block.mjs +755 -601
  91. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-content-panel.mjs +260 -143
  93. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-core.mjs +4342 -1595
  95. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
  97. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-divider.mjs +73 -36
  99. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-dl.mjs +447 -89
  101. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-dropdown.mjs +703 -599
  103. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
  105. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
  107. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-empty-state.mjs +116 -60
  109. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-file-upload.mjs +550 -290
  111. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-filter-bar.mjs +2810 -2538
  113. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-flag.mjs +79 -24
  115. package/fesm2022/koobiq-components-flag.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-form-field.mjs +389 -525
  117. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-icon.mjs +366 -136
  119. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
  121. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-input.mjs +601 -459
  123. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  124. package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
  125. package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
  126. package/fesm2022/koobiq-components-link.mjs +328 -125
  127. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-list.mjs +583 -433
  129. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
  131. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-markdown.mjs +55 -78
  133. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-modal.mjs +853 -475
  135. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-navbar.mjs +895 -556
  137. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-notification-center.mjs +680 -310
  139. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
  141. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-popover.mjs +684 -285
  143. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
  145. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  146. package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
  147. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  148. package/fesm2022/koobiq-components-radio.mjs +450 -231
  149. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  150. package/fesm2022/koobiq-components-resizer.mjs +127 -21
  151. package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
  152. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
  153. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
  154. package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
  155. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  156. package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
  157. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-select.mjs +883 -693
  159. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  160. package/fesm2022/koobiq-components-sidebar.mjs +207 -88
  161. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  162. package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
  163. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-skeleton.mjs +815 -41
  165. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-split-button.mjs +109 -88
  167. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  168. package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
  169. package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
  170. package/fesm2022/koobiq-components-splitter.mjs +890 -501
  171. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  172. package/fesm2022/koobiq-components-table.mjs +63 -49
  173. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  174. package/fesm2022/koobiq-components-tabs.mjs +1062 -603
  175. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-tags.mjs +886 -733
  177. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  178. package/fesm2022/koobiq-components-textarea.mjs +213 -185
  179. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-time-range.mjs +299 -147
  181. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-timepicker.mjs +233 -245
  183. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-timezone.mjs +344 -142
  185. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-title.mjs +229 -145
  187. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-toast.mjs +463 -143
  189. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-toggle.mjs +177 -130
  191. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-tooltip.mjs +657 -214
  193. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-top-bar.mjs +61 -32
  195. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-tree-select.mjs +719 -488
  197. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-tree.mjs +1506 -558
  199. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-username.mjs +290 -135
  201. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  202. package/file-upload/dropzone.scss +31 -3
  203. package/file-upload/file-upload-tokens.scss +2 -22
  204. package/file-upload/file-upload.scss +6 -0
  205. package/file-upload/multiple-file-upload.component.scss +14 -12
  206. package/file-upload/single-file-upload.component.scss +3 -2
  207. package/filter-bar/filters.scss +7 -0
  208. package/filter-bar/pipes/base-pipe.scss +3 -3
  209. package/filter-bar/pipes/pipe-date.scss +8 -1
  210. package/flag/flag-tokens.scss +22 -0
  211. package/flag/flag.scss +34 -21
  212. package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
  213. package/form-field/_form-field-theme.scss +4 -9
  214. package/form-field/cleaner.scss +3 -1
  215. package/form-field/fieldset.scss +3 -4
  216. package/form-field/form-field.scss +26 -21
  217. package/form-field/password-toggle.scss +3 -1
  218. package/icon/_icon-button-theme.scss +7 -0
  219. package/icon/_icon-theme.scss +10 -7
  220. package/icon/icon-button.scss +0 -2
  221. package/icon/icon-tokens.scss +12 -9
  222. package/inline-edit/inline-edit.scss +40 -54
  223. package/input/input.scss +4 -0
  224. package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
  225. package/link/deprecated/link-tokens.scss +27 -0
  226. package/link/link-tokens.scss +6 -25
  227. package/link/link.scss +137 -0
  228. package/list/list.scss +3 -2
  229. package/loader-overlay/_loader-overlay-theme.scss +19 -10
  230. package/loader-overlay/loader-overlay-tokens.scss +0 -2
  231. package/loader-overlay/loader-overlay.scss +7 -1
  232. package/markdown/_markdown-theme.scss +16 -0
  233. package/markdown/markdown-tokens.scss +5 -0
  234. package/markdown/markdown.scss +2 -1
  235. package/modal/_modal-animation.scss +23 -14
  236. package/modal/modal-tokens.scss +2 -1
  237. package/modal/modal.scss +35 -31
  238. package/navbar/_navbar-item_horizontal.scss +8 -6
  239. package/navbar/_navbar-item_vertical.scss +18 -6
  240. package/navbar/_navbar-theme.scss +9 -1
  241. package/navbar/navbar-brand.scss +8 -6
  242. package/navbar/navbar-divider.scss +1 -1
  243. package/navbar/navbar-item.scss +8 -9
  244. package/navbar/navbar-toggle.scss +3 -3
  245. package/navbar/navbar-tokens.scss +14 -0
  246. package/navbar/navbar.scss +1 -2
  247. package/navbar/vertical-navbar.scss +2 -2
  248. package/notification-center/_notification-center-theme.scss +11 -6
  249. package/notification-center/notification-center-tokens.scss +33 -0
  250. package/notification-center/notification-center.scss +58 -20
  251. package/notification-center/notification-item.scss +15 -6
  252. package/package.json +112 -81
  253. package/popover/popover-tokens.scss +0 -2
  254. package/popover/popover.scss +41 -19
  255. package/prebuilt-themes/theme.css +1 -1
  256. package/progress-bar/_progress-bar-theme.scss +20 -3
  257. package/progress-bar/progress-bar-tokens.scss +3 -0
  258. package/progress-bar/progress-bar.scss +36 -8
  259. package/progress-spinner/progress-spinner.scss +4 -3
  260. package/radio/_radio-theme.scss +21 -4
  261. package/radio/radio-tokens.scss +7 -3
  262. package/radio/radio.scss +55 -8
  263. package/schematics/collection.json +399 -7
  264. package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
  265. package/schematics/migrations/accordion-state-saving-default/data.js +75 -0
  266. package/schematics/migrations/accordion-state-saving-default/index.js +60 -0
  267. package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
  268. package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
  269. package/schematics/migrations/actions-panel-overlay-container/data.js +47 -0
  270. package/schematics/migrations/actions-panel-overlay-container/index.js +54 -0
  271. package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
  272. package/schematics/migrations/alert-signals/README.md +13 -7
  273. package/schematics/migrations/alert-signals/data.js +3 -0
  274. package/schematics/migrations/alert-signals/index.js +70 -203
  275. package/schematics/migrations/angular-animations-removal/README.md +46 -0
  276. package/schematics/migrations/angular-animations-removal/data.js +150 -0
  277. package/schematics/migrations/angular-animations-removal/index.js +20 -0
  278. package/schematics/migrations/angular-animations-removal/schema.json +15 -0
  279. package/schematics/migrations/app-switcher-signals/README.md +88 -0
  280. package/schematics/migrations/app-switcher-signals/data.js +136 -0
  281. package/schematics/migrations/app-switcher-signals/index.js +365 -0
  282. package/schematics/migrations/app-switcher-signals/schema.json +20 -0
  283. package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
  284. package/schematics/migrations/autocomplete-panel-width-auto/index.js +1 -1
  285. package/schematics/migrations/autocomplete-signals/README.md +92 -0
  286. package/schematics/migrations/autocomplete-signals/data.js +149 -0
  287. package/schematics/migrations/autocomplete-signals/index.js +706 -0
  288. package/schematics/migrations/autocomplete-signals/schema.json +20 -0
  289. package/schematics/migrations/badge-signals/README.md +77 -0
  290. package/schematics/migrations/badge-signals/data.js +109 -0
  291. package/schematics/migrations/badge-signals/index.js +693 -0
  292. package/schematics/migrations/badge-signals/schema.json +20 -0
  293. package/schematics/migrations/button-state-and-styles/README.md +129 -0
  294. package/schematics/migrations/button-state-and-styles/data.js +136 -0
  295. package/schematics/migrations/button-state-and-styles/index.js +220 -0
  296. package/schematics/migrations/button-state-and-styles/schema.json +20 -0
  297. package/schematics/migrations/button-supported-colors/README.md +73 -0
  298. package/schematics/migrations/button-supported-colors/data.js +106 -0
  299. package/schematics/migrations/button-supported-colors/index.js +260 -0
  300. package/schematics/migrations/button-supported-colors/schema.json +20 -0
  301. package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
  302. package/schematics/migrations/button-toggle-signals-and-aria/data.js +200 -0
  303. package/schematics/migrations/button-toggle-signals-and-aria/index.js +496 -0
  304. package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
  305. package/schematics/migrations/button-truncation/README.md +110 -0
  306. package/schematics/migrations/button-truncation/data.js +88 -0
  307. package/schematics/migrations/button-truncation/index.js +269 -0
  308. package/schematics/migrations/button-truncation/schema.json +20 -0
  309. package/schematics/migrations/checkbox-signals/README.md +76 -0
  310. package/schematics/migrations/checkbox-signals/data.js +114 -0
  311. package/schematics/migrations/checkbox-signals/index.js +634 -0
  312. package/schematics/migrations/checkbox-signals/schema.json +20 -0
  313. package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
  314. package/schematics/migrations/clamped-text-disclosure/data.js +101 -0
  315. package/schematics/migrations/clamped-text-disclosure/index.js +59 -0
  316. package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
  317. package/schematics/migrations/code-block-signals/README.md +84 -0
  318. package/schematics/migrations/code-block-signals/data.js +121 -0
  319. package/schematics/migrations/code-block-signals/index.js +700 -0
  320. package/schematics/migrations/code-block-signals/schema.json +20 -0
  321. package/schematics/migrations/color-signals/README.md +46 -0
  322. package/schematics/migrations/color-signals/data.js +131 -0
  323. package/schematics/migrations/color-signals/index.js +19 -0
  324. package/schematics/migrations/color-signals/schema.json +20 -0
  325. package/schematics/migrations/core-mixins-removal/README.md +20 -0
  326. package/schematics/migrations/core-mixins-removal/data.js +27 -0
  327. package/schematics/migrations/core-mixins-removal/index.js +17 -0
  328. package/schematics/migrations/core-mixins-removal/schema.json +15 -0
  329. package/schematics/migrations/css-selectors/README.md +2 -2
  330. package/schematics/migrations/css-selectors/index.js +1 -1
  331. package/schematics/migrations/datepicker-signals/README.md +24 -0
  332. package/schematics/migrations/datepicker-signals/data.js +49 -0
  333. package/schematics/migrations/datepicker-signals/index.js +17 -0
  334. package/schematics/migrations/datepicker-signals/schema.json +15 -0
  335. package/schematics/migrations/deprecated-icons/README.md +2 -2
  336. package/schematics/migrations/deprecated-icons/index.js +1 -1
  337. package/schematics/migrations/design-tokens-v4/README.md +75 -0
  338. package/schematics/migrations/design-tokens-v4/index.js +59 -0
  339. package/schematics/migrations/design-tokens-v4/schema.json +15 -0
  340. package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
  341. package/schematics/migrations/divider-signals-and-aria/data.js +62 -0
  342. package/schematics/migrations/divider-signals-and-aria/index.js +211 -0
  343. package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
  344. package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
  345. package/schematics/migrations/dl-attribute-coercion/data.js +85 -0
  346. package/schematics/migrations/dl-attribute-coercion/index.js +161 -0
  347. package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
  348. package/schematics/migrations/dl-standalone-names/README.md +49 -0
  349. package/schematics/migrations/dl-standalone-names/data.js +44 -0
  350. package/schematics/migrations/dl-standalone-names/index.js +321 -0
  351. package/schematics/migrations/dl-standalone-names/schema.json +20 -0
  352. package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
  353. package/schematics/migrations/dropdown-demote-overlay/data.js +84 -0
  354. package/schematics/migrations/dropdown-demote-overlay/index.js +288 -0
  355. package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
  356. package/schematics/migrations/dropdown-signals/README.md +83 -0
  357. package/schematics/migrations/dropdown-signals/data.js +152 -0
  358. package/schematics/migrations/dropdown-signals/index.js +19 -0
  359. package/schematics/migrations/dropdown-signals/schema.json +20 -0
  360. package/schematics/migrations/empty-state-error-color/README.md +84 -0
  361. package/schematics/migrations/empty-state-error-color/data.js +85 -0
  362. package/schematics/migrations/empty-state-error-color/index.js +71 -0
  363. package/schematics/migrations/empty-state-error-color/schema.json +15 -0
  364. package/schematics/migrations/empty-state-size-attr/README.md +2 -2
  365. package/schematics/migrations/empty-state-size-attr/index.js +1 -1
  366. package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
  367. package/schematics/migrations/file-upload-cva-and-primitives/data.js +97 -0
  368. package/schematics/migrations/file-upload-cva-and-primitives/index.js +60 -0
  369. package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
  370. package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
  371. package/schematics/migrations/file-upload-deprecated-outputs/data.js +20 -0
  372. package/schematics/migrations/file-upload-deprecated-outputs/index.js +70 -0
  373. package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
  374. package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
  375. package/schematics/migrations/filter-bar-rename-action/data.js +151 -0
  376. package/schematics/migrations/filter-bar-rename-action/index.js +177 -0
  377. package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
  378. package/schematics/migrations/filter-bar-signals/README.md +27 -16
  379. package/schematics/migrations/filter-bar-signals/data.js +1 -2
  380. package/schematics/migrations/filter-bar-signals/index.js +100 -195
  381. package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
  382. package/schematics/migrations/filter-bar-state-saving-default/data.js +87 -0
  383. package/schematics/migrations/filter-bar-state-saving-default/index.js +61 -0
  384. package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
  385. package/schematics/migrations/flag-inner-html/README.md +67 -0
  386. package/schematics/migrations/flag-inner-html/data.js +58 -0
  387. package/schematics/migrations/flag-inner-html/index.js +61 -0
  388. package/schematics/migrations/flag-inner-html/schema.json +15 -0
  389. package/schematics/migrations/form-field-signals/README.md +125 -0
  390. package/schematics/migrations/form-field-signals/data.js +288 -0
  391. package/schematics/migrations/form-field-signals/index.js +382 -0
  392. package/schematics/migrations/form-field-signals/schema.json +20 -0
  393. package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
  394. package/schematics/migrations/icon-semantics-and-api/data.js +97 -0
  395. package/schematics/migrations/icon-semantics-and-api/index.js +64 -0
  396. package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
  397. package/schematics/migrations/icons-replacement/README.md +5 -5
  398. package/schematics/migrations/icons-replacement/index.js +1 -1
  399. package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
  400. package/schematics/migrations/inline-edit-a11y-and-types/data.js +117 -0
  401. package/schematics/migrations/inline-edit-a11y-and-types/index.js +97 -0
  402. package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
  403. package/schematics/migrations/input-number-surface/README.md +140 -0
  404. package/schematics/migrations/input-number-surface/data.js +135 -0
  405. package/schematics/migrations/input-number-surface/index.js +292 -0
  406. package/schematics/migrations/input-number-surface/schema.json +20 -0
  407. package/schematics/migrations/input-signals/README.md +20 -0
  408. package/schematics/migrations/input-signals/data.js +30 -0
  409. package/schematics/migrations/input-signals/index.js +17 -0
  410. package/schematics/migrations/input-signals/schema.json +15 -0
  411. package/schematics/migrations/link-deprecated-path/README.md +144 -0
  412. package/schematics/migrations/link-deprecated-path/index.js +19 -0
  413. package/schematics/migrations/link-deprecated-path/schema.json +20 -0
  414. package/schematics/migrations/link-signals/README.md +71 -0
  415. package/schematics/migrations/link-signals/data.js +116 -0
  416. package/schematics/migrations/link-signals/index.js +415 -0
  417. package/schematics/migrations/link-signals/schema.json +20 -0
  418. package/schematics/migrations/list-signals/README.md +22 -0
  419. package/schematics/migrations/list-signals/data.js +35 -0
  420. package/schematics/migrations/list-signals/index.js +17 -0
  421. package/schematics/migrations/list-signals/schema.json +15 -0
  422. package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
  423. package/schematics/migrations/list-tree-multiple-input/data.js +74 -0
  424. package/schematics/migrations/list-tree-multiple-input/index.js +221 -0
  425. package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
  426. package/schematics/migrations/loader-overlay-signals/README.md +62 -0
  427. package/schematics/migrations/loader-overlay-signals/data.js +101 -0
  428. package/schematics/migrations/loader-overlay-signals/index.js +697 -0
  429. package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
  430. package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
  431. package/schematics/migrations/loader-overlay-size-attr/index.js +1 -1
  432. package/schematics/migrations/locale-configuration-providers/README.md +163 -0
  433. package/schematics/migrations/locale-configuration-providers/data.js +257 -0
  434. package/schematics/migrations/locale-configuration-providers/index.js +294 -0
  435. package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
  436. package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
  437. package/schematics/migrations/mandatory-peer-dependencies/index.js +42 -0
  438. package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
  439. package/schematics/migrations/markdown-signals/README.md +58 -0
  440. package/schematics/migrations/markdown-signals/data.js +79 -0
  441. package/schematics/migrations/markdown-signals/index.js +639 -0
  442. package/schematics/migrations/markdown-signals/schema.json +20 -0
  443. package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
  444. package/schematics/migrations/modal-dialog-semantics/data.js +110 -0
  445. package/schematics/migrations/modal-dialog-semantics/index.js +58 -0
  446. package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
  447. package/schematics/migrations/modal-signals/README.md +88 -0
  448. package/schematics/migrations/modal-signals/data.js +132 -0
  449. package/schematics/migrations/modal-signals/index.js +19 -0
  450. package/schematics/migrations/modal-signals/schema.json +20 -0
  451. package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
  452. package/schematics/migrations/navbar-signals-and-aria/data.js +198 -0
  453. package/schematics/migrations/navbar-signals-and-aria/index.js +568 -0
  454. package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
  455. package/schematics/migrations/new-icons-pack/README.md +10 -10
  456. package/schematics/migrations/new-icons-pack/index.js +1 -1
  457. package/schematics/migrations/notification-center-signals/README.md +67 -0
  458. package/schematics/migrations/notification-center-signals/data.js +66 -0
  459. package/schematics/migrations/notification-center-signals/index.js +61 -0
  460. package/schematics/migrations/notification-center-signals/schema.json +15 -0
  461. package/schematics/migrations/option-signals/README.md +37 -0
  462. package/schematics/migrations/option-signals/data.js +86 -0
  463. package/schematics/migrations/option-signals/index.js +19 -0
  464. package/schematics/migrations/option-signals/schema.json +20 -0
  465. package/schematics/migrations/popover-leave-delay/README.md +51 -0
  466. package/schematics/migrations/popover-leave-delay/data.js +61 -0
  467. package/schematics/migrations/popover-leave-delay/index.js +54 -0
  468. package/schematics/migrations/popover-leave-delay/schema.json +15 -0
  469. package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
  470. package/schematics/migrations/progress-bar-percentage-and-aria/data.js +76 -0
  471. package/schematics/migrations/progress-bar-percentage-and-aria/index.js +58 -0
  472. package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
  473. package/schematics/migrations/progress-spinner-signals/README.md +72 -0
  474. package/schematics/migrations/progress-spinner-signals/data.js +83 -0
  475. package/schematics/migrations/progress-spinner-signals/index.js +694 -0
  476. package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
  477. package/schematics/migrations/query-list-signals/README.md +32 -0
  478. package/schematics/migrations/query-list-signals/data.js +70 -0
  479. package/schematics/migrations/query-list-signals/index.js +17 -0
  480. package/schematics/migrations/query-list-signals/schema.json +15 -0
  481. package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
  482. package/schematics/migrations/radio-signals-and-aria/data.js +163 -0
  483. package/schematics/migrations/radio-signals-and-aria/index.js +39 -0
  484. package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
  485. package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
  486. package/schematics/migrations/read-state-dwell-handlers/data.js +45 -0
  487. package/schematics/migrations/read-state-dwell-handlers/index.js +215 -0
  488. package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
  489. package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
  490. package/schematics/migrations/scrollbar-deprecated-path/index.js +20 -0
  491. package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
  492. package/schematics/migrations/select-signal-inputs/README.md +61 -0
  493. package/schematics/migrations/select-signal-inputs/data.js +99 -0
  494. package/schematics/migrations/select-signal-inputs/index.js +57 -0
  495. package/schematics/migrations/select-signal-inputs/schema.json +15 -0
  496. package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
  497. package/schematics/migrations/sidepanel-non-modal-behavior/data.js +111 -0
  498. package/schematics/migrations/sidepanel-non-modal-behavior/index.js +57 -0
  499. package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
  500. package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
  501. package/schematics/migrations/signal-inputs-subclasses/data.js +69 -0
  502. package/schematics/migrations/signal-inputs-subclasses/index.js +17 -0
  503. package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
  504. package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
  505. package/schematics/migrations/split-button-optional-disabled/data.js +53 -0
  506. package/schematics/migrations/split-button-optional-disabled/index.js +57 -0
  507. package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
  508. package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
  509. package/schematics/migrations/splitter-deprecated-path/index.js +20 -0
  510. package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
  511. package/schematics/migrations/state-saving-default/README.md +67 -0
  512. package/schematics/migrations/state-saving-default/data.js +88 -0
  513. package/schematics/migrations/state-saving-default/index.js +62 -0
  514. package/schematics/migrations/state-saving-default/schema.json +15 -0
  515. package/schematics/migrations/table-cell-content/README.md +55 -0
  516. package/schematics/migrations/table-cell-content/data.js +66 -0
  517. package/schematics/migrations/table-cell-content/index.js +66 -0
  518. package/schematics/migrations/table-cell-content/schema.json +15 -0
  519. package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
  520. package/schematics/migrations/tabs-signals-and-aria/data.js +139 -0
  521. package/schematics/migrations/tabs-signals-and-aria/index.js +65 -0
  522. package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
  523. package/schematics/migrations/tag-list-cleaner/README.md +58 -0
  524. package/schematics/migrations/tag-list-cleaner/data.js +42 -0
  525. package/schematics/migrations/tag-list-cleaner/index.js +196 -0
  526. package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
  527. package/schematics/migrations/tag-slots/README.md +41 -0
  528. package/schematics/migrations/tag-slots/index.js +190 -0
  529. package/schematics/migrations/tag-slots/schema.json +20 -0
  530. package/schematics/migrations/tags-signals/README.md +85 -0
  531. package/schematics/migrations/tags-signals/data.js +103 -0
  532. package/schematics/migrations/tags-signals/index.js +673 -0
  533. package/schematics/migrations/tags-signals/schema.json +20 -0
  534. package/schematics/migrations/textarea-signals/README.md +72 -0
  535. package/schematics/migrations/textarea-signals/data.js +121 -0
  536. package/schematics/migrations/textarea-signals/index.js +379 -0
  537. package/schematics/migrations/textarea-signals/schema.json +20 -0
  538. package/schematics/migrations/time-range-title-for/README.md +164 -0
  539. package/schematics/migrations/time-range-title-for/data.js +139 -0
  540. package/schematics/migrations/time-range-title-for/index.js +163 -0
  541. package/schematics/migrations/time-range-title-for/schema.json +20 -0
  542. package/schematics/migrations/timepicker-signals/README.md +78 -0
  543. package/schematics/migrations/timepicker-signals/data.js +82 -0
  544. package/schematics/migrations/timepicker-signals/index.js +709 -0
  545. package/schematics/migrations/timepicker-signals/schema.json +20 -0
  546. package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
  547. package/schematics/migrations/timezone-grouping-utils/data.js +101 -0
  548. package/schematics/migrations/timezone-grouping-utils/index.js +64 -0
  549. package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
  550. package/schematics/migrations/title-encapsulation/README.md +49 -0
  551. package/schematics/migrations/title-encapsulation/data.js +69 -0
  552. package/schematics/migrations/title-encapsulation/index.js +57 -0
  553. package/schematics/migrations/title-encapsulation/schema.json +15 -0
  554. package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
  555. package/schematics/migrations/toast-stack-and-defaults/data.js +79 -0
  556. package/schematics/migrations/toast-stack-and-defaults/index.js +53 -0
  557. package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
  558. package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
  559. package/schematics/migrations/tooltip-pointer-events-and-types/data.js +89 -0
  560. package/schematics/migrations/tooltip-pointer-events-and-types/index.js +60 -0
  561. package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
  562. package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
  563. package/schematics/migrations/top-bar-container-selectors/data.js +56 -0
  564. package/schematics/migrations/top-bar-container-selectors/index.js +84 -0
  565. package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
  566. package/schematics/migrations/tree-select-signals/README.md +61 -0
  567. package/schematics/migrations/tree-select-signals/data.js +106 -0
  568. package/schematics/migrations/tree-select-signals/index.js +58 -0
  569. package/schematics/migrations/tree-select-signals/schema.json +15 -0
  570. package/schematics/migrations/tree-signals/README.md +82 -0
  571. package/schematics/migrations/tree-signals/data.js +123 -0
  572. package/schematics/migrations/tree-signals/index.js +54 -0
  573. package/schematics/migrations/tree-signals/schema.json +15 -0
  574. package/schematics/migrations/tree-state-saving-default/README.md +66 -0
  575. package/schematics/migrations/tree-state-saving-default/data.js +78 -0
  576. package/schematics/migrations/tree-state-saving-default/index.js +60 -0
  577. package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
  578. package/schematics/migrations/username-pipe-injection/README.md +59 -0
  579. package/schematics/migrations/username-pipe-injection/data.js +78 -0
  580. package/schematics/migrations/username-pipe-injection/index.js +58 -0
  581. package/schematics/migrations/username-pipe-injection/schema.json +15 -0
  582. package/schematics/migrations/v20-upgrade/README.md +36 -16
  583. package/schematics/migrations/v20-upgrade/data.js +124 -77
  584. package/schematics/migrations/v20-upgrade/index.js +6 -213
  585. package/schematics/migrations/v21-upgrade/README.md +271 -0
  586. package/schematics/migrations/v21-upgrade/data.js +1371 -0
  587. package/schematics/migrations/v21-upgrade/index.js +94 -0
  588. package/schematics/migrations/v21-upgrade/schema.json +20 -0
  589. package/schematics/migrations/zoneless-change-detection/README.md +30 -0
  590. package/schematics/migrations/zoneless-change-detection/data.js +29 -0
  591. package/schematics/migrations/zoneless-change-detection/index.js +20 -0
  592. package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
  593. package/schematics/migrations.json +392 -2
  594. package/schematics/ng-add/index.js +515 -14
  595. package/schematics/ng-add/schema.json +15 -0
  596. package/schematics/utils/deprecated-path-migration.js +61 -0
  597. package/schematics/utils/package-config.js +9 -105
  598. package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
  599. package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
  600. package/scrollbar/native-scrollbar.scss +68 -0
  601. package/scrollbar/scrollbar-tokens.scss +13 -22
  602. package/scrollbar/scrollbar-track.scss +94 -0
  603. package/scrollbar/scrollbar-viewport.scss +33 -0
  604. package/scrollbar/scrollbar.scss +24 -0
  605. package/search-expandable/search-expandable-tokens.scss +4 -0
  606. package/search-expandable/search-expandable.scss +4 -2
  607. package/select/_select-theme.scss +3 -16
  608. package/select/select.scss +0 -6
  609. package/sidebar/sidebar.scss +20 -0
  610. package/sidepanel/_sidepanel-theme.scss +1 -1
  611. package/sidepanel/sidepanel-tokens.scss +7 -1
  612. package/sidepanel/sidepanel.scss +41 -5
  613. package/skeleton/skeleton-presets.scss +350 -0
  614. package/skeleton/skeleton-tokens.scss +127 -0
  615. package/skeleton/skeleton.scss +53 -45
  616. package/split-button/_split-button-theme.scss +4 -4
  617. package/split-button/split-button.scss +2 -6
  618. package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
  619. package/splitter/deprecated/splitter.scss +51 -0
  620. package/splitter/splitter-tokens.scss +19 -0
  621. package/splitter/splitter.scss +148 -28
  622. package/table/_table-theme.scss +13 -12
  623. package/table/table-tokens.scss +8 -0
  624. package/table/table.scss +47 -22
  625. package/tabs/_tabs-common.scss +14 -14
  626. package/tabs/_tabs-theme.scss +4 -5
  627. package/tabs/tab-body.scss +49 -1
  628. package/tabs/tab-header.scss +2 -1
  629. package/tags/tag-list.scss +4 -0
  630. package/tags/tag.scss +19 -1
  631. package/time-range/time-range.scss +9 -0
  632. package/timezone/timezone-option.component.scss +4 -7
  633. package/timezone/timezone-select.component.scss +3 -0
  634. package/toast/_toast-theme.scss +1 -4
  635. package/toast/toast-container.component.scss +19 -13
  636. package/toast/toast-tokens.scss +12 -6
  637. package/toast/toast.component.scss +42 -19
  638. package/toggle/_toggle-theme.scss +4 -10
  639. package/toggle/toggle.scss +67 -26
  640. package/tooltip/_tooltip-theme.scss +7 -1
  641. package/tooltip/tooltip-tokens.scss +1 -2
  642. package/tooltip/tooltip.scss +55 -9
  643. package/top-bar/top-bar-tokens.scss +13 -2
  644. package/top-bar/top-bar.scss +24 -19
  645. package/tree/_tree-theme.scss +0 -1
  646. package/tree/toggle.scss +5 -9
  647. package/tree/tree-option.scss +2 -4
  648. package/tree/tree-tokens.scss +2 -1
  649. package/tree/tree.scss +3 -5
  650. package/tree-select/_tree-select-theme.scss +4 -15
  651. package/tree-select/tree-select-tokens.scss +16 -0
  652. package/tree-select/tree-select.scss +0 -6
  653. package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
  654. package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
  655. package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
  656. package/types/koobiq-components-app-switcher.d.ts +406 -0
  657. package/types/koobiq-components-autocomplete.d.ts +443 -0
  658. package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
  659. package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
  660. package/types/koobiq-components-button-toggle.d.ts +340 -0
  661. package/types/koobiq-components-button.d.ts +296 -0
  662. package/types/koobiq-components-checkbox.d.ts +172 -0
  663. package/types/koobiq-components-clamped-text.d.ts +184 -0
  664. package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +114 -79
  665. package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
  666. package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
  667. package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
  668. package/types/koobiq-components-divider.d.ts +43 -0
  669. package/types/koobiq-components-dl.d.ts +235 -0
  670. package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
  671. package/types/koobiq-components-ellipsis-center.d.ts +85 -0
  672. package/types/koobiq-components-empty-state.d.ts +106 -0
  673. package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
  674. package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
  675. package/types/koobiq-components-flag.d.ts +68 -0
  676. package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
  677. package/types/koobiq-components-icon.d.ts +333 -0
  678. package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
  679. package/types/koobiq-components-input.d.ts +477 -0
  680. package/types/koobiq-components-link-deprecated.d.ts +101 -0
  681. package/types/koobiq-components-link.d.ts +176 -0
  682. package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
  683. package/types/koobiq-components-loader-overlay.d.ts +101 -0
  684. package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
  685. package/types/koobiq-components-modal.d.ts +666 -0
  686. package/types/koobiq-components-navbar.d.ts +569 -0
  687. package/types/koobiq-components-notification-center.d.ts +500 -0
  688. package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
  689. package/types/koobiq-components-popover.d.ts +468 -0
  690. package/types/koobiq-components-progress-bar.d.ts +67 -0
  691. package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
  692. package/types/koobiq-components-radio.d.ts +294 -0
  693. package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
  694. package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
  695. package/types/koobiq-components-scrollbar.d.ts +154 -0
  696. package/types/koobiq-components-search-expandable.d.ts +164 -0
  697. package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
  698. package/types/koobiq-components-sidebar.d.ts +152 -0
  699. package/types/koobiq-components-sidepanel.d.ts +436 -0
  700. package/types/koobiq-components-skeleton.d.ts +234 -0
  701. package/types/koobiq-components-split-button.d.ts +65 -0
  702. package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
  703. package/types/koobiq-components-splitter.d.ts +406 -0
  704. package/types/koobiq-components-table.d.ts +44 -0
  705. package/types/koobiq-components-tabs.d.ts +888 -0
  706. package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
  707. package/types/koobiq-components-textarea.d.ts +178 -0
  708. package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
  709. package/types/koobiq-components-timepicker.d.ts +223 -0
  710. package/types/koobiq-components-timezone.d.ts +266 -0
  711. package/types/koobiq-components-title.d.ts +184 -0
  712. package/types/koobiq-components-toast.d.ts +289 -0
  713. package/types/koobiq-components-toggle.d.ts +121 -0
  714. package/types/koobiq-components-tooltip.d.ts +610 -0
  715. package/types/koobiq-components-top-bar.d.ts +61 -0
  716. package/types/koobiq-components-tree-select.d.ts +667 -0
  717. package/types/koobiq-components-tree.d.ts +1290 -0
  718. package/types/koobiq-components-username.d.ts +340 -0
  719. package/username/_username-theme.scss +35 -0
  720. package/username/username.scss +10 -34
  721. package/app-switcher/index.d.ts +0 -276
  722. package/autocomplete/index.d.ts +0 -286
  723. package/button/index.d.ts +0 -153
  724. package/button-toggle/index.d.ts +0 -162
  725. package/checkbox/index.d.ts +0 -163
  726. package/clamped-text/index.d.ts +0 -146
  727. package/core/styles/_tokens.scss +0 -7
  728. package/core/styles/common/_clearfix.scss +0 -13
  729. package/core/styles/common/_popup.scss +0 -6
  730. package/core/styles/functions/_index.scss +0 -3
  731. package/core/styles/functions/_number.scss +0 -60
  732. package/core/styles/functions/_string.scss +0 -18
  733. package/core/styles/theming/scrollbar-tokens.scss +0 -25
  734. package/core/styles/typography/_typography-utils.scss +0 -84
  735. package/divider/index.d.ts +0 -20
  736. package/dl/index.d.ts +0 -45
  737. package/ellipsis-center/index.d.ts +0 -71
  738. package/empty-state/index.d.ts +0 -45
  739. package/flag/index.d.ts +0 -44
  740. package/icon/index.d.ts +0 -200
  741. package/input/index.d.ts +0 -354
  742. package/link/index.d.ts +0 -56
  743. package/loader-overlay/index.d.ts +0 -57
  744. package/modal/index.d.ts +0 -339
  745. package/navbar/index.d.ts +0 -372
  746. package/notification-center/index.d.ts +0 -323
  747. package/popover/index.d.ts +0 -182
  748. package/prebuilt-themes/dark-theme.css +0 -1
  749. package/prebuilt-themes/light-theme.css +0 -1
  750. package/progress-bar/index.d.ts +0 -31
  751. package/radio/index.d.ts +0 -203
  752. package/search-expandable/index.d.ts +0 -101
  753. package/sidebar/index.d.ts +0 -94
  754. package/sidepanel/index.d.ts +0 -272
  755. package/skeleton/index.d.ts +0 -26
  756. package/split-button/index.d.ts +0 -46
  757. package/table/index.d.ts +0 -25
  758. package/tabs/index.d.ts +0 -677
  759. package/textarea/index.d.ts +0 -138
  760. package/timepicker/index.d.ts +0 -197
  761. package/timezone/index.d.ts +0 -125
  762. package/title/index.d.ts +0 -139
  763. package/toast/index.d.ts +0 -178
  764. package/toggle/index.d.ts +0 -104
  765. package/tooltip/index.d.ts +0 -335
  766. package/top-bar/index.d.ts +0 -33
  767. package/tree/index.d.ts +0 -802
  768. package/tree-select/index.d.ts +0 -475
  769. package/username/index.d.ts +0 -194
  770. /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
  771. /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-tree-select.mjs","sources":["../../../packages/components/tree-select/tree-select.component.ts","../../../packages/components/tree-select/tree-select.html","../../../packages/components/tree-select/tree-select.module.ts","../../../packages/components/tree-select/koobiq-components-tree-select.ts"],"sourcesContent":["import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';\nimport { Platform, _getEventTarget } from '@angular/cdk/platform';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Provider,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n numberAttribute,\n output,\n viewChild\n} from '@angular/core';\nimport { outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm, UntypedFormControl } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n ErrorStateMatcher,\n HOME,\n KBQ_CONNECTED_OVERLAY_ABOVE_CLASS,\n KBQ_CONNECTED_OVERLAY_BELOW_CLASS,\n KBQ_LOCALE_SERVICE,\n KBQ_PANEL_DEFAULT_MIN_WIDTH,\n KBQ_PARENT_POPUP,\n KBQ_SELECT_SCROLL_STRATEGY,\n KbqAbstractSelect,\n KbqComponentColors,\n KbqLocaleService,\n KbqPanelMaxHeight,\n KbqPanelMaxWidth,\n KbqPanelMinWidth,\n KbqPanelWidth,\n KbqSelectAllEvent,\n KbqSelectMatcher,\n KbqSelectSearch,\n KbqSelectTrigger,\n KbqSiblingPopup,\n LEFT_ARROW,\n MultipleMode,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n SPACE,\n TAB,\n UP_ARROW,\n defaultOffsetY,\n getKbqSelectDynamicMultipleError,\n getKbqSelectNonArrayValueError,\n hasModifierKey,\n isInput,\n isSelectAll,\n isUndefined,\n kbqResolvePanelMaxHeightToken,\n kbqSelectAnimations,\n kbqSiblingPopupProvider,\n shouldSelectSearchText\n} from '@koobiq/components/core';\nimport {\n KBQ_FORM_FIELD,\n KbqCleaner,\n KbqFormFieldControl,\n kbqCleanerFactoryProvider\n} from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTag, KbqTagRemove } from '@koobiq/components/tags';\nimport { KbqTree, KbqTreeOption, KbqTreeSelection } from '@koobiq/components/tree';\nimport { SizeXxs as SelectSizeMultipleContentGap } from '@koobiq/design-tokens';\nimport { Observable, Subject, Subscription, audit, defer, fromEvent, merge } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, take } from 'rxjs/operators';\n\nlet nextUniqueId = 0;\n\n/** Tree select trigger value type. */\nexport type KbqTreeSelectTriggerValue = {\n disabled: boolean;\n value: string;\n viewValue: string;\n};\n\n/**\n * Tree select panel width type.\n * @deprecated Use `KbqPanelWidth` from `@koobiq/components/core` instead.\n */\nexport type KbqTreeSelectPanelWidth = KbqPanelWidth;\n\n/** Options for the `kbq-tree-select` that can be configured using the `KBQ_TREE_SELECT_OPTIONS` injection token. */\nexport type KbqTreeSelectOptions = Partial<{\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n panelWidth: KbqPanelWidth;\n /**\n * Minimum width of the panel. If minWidth is larger than window width or property set to null, it will be ignored.\n */\n panelMinWidth: KbqPanelMinWidth;\n /**\n * Maximum width of the panel. Caps growth by content only — it never overrides the trigger width or an\n * explicit `panelWidth`. If null, the `--kbq-panel-size-width-max` token applies.\n */\n panelMaxWidth: KbqPanelMaxWidth;\n /**\n * Maximum height of the panel's scrollable option list. Does not include the search field or the\n * footer. If null, the `--kbq-select-panel-size-max-height` token applies.\n */\n panelMaxHeight: KbqPanelMaxHeight;\n /**\n * Whether to enable hiding search by default if options is less than minimum.\n *\n * - `'auto'` uses `KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD` as min value.\n * - number - will enables search hiding and uses value as min.\n * @see KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD\n */\n searchMinOptionsThreshold: 'auto' | number;\n}>;\n\n/** Injection token that can be used to provide the default options for the `kbq-tree-select`. */\nexport const KBQ_TREE_SELECT_OPTIONS = new InjectionToken<KbqTreeSelectOptions>('KBQ_TREE_SELECT_OPTIONS');\n\n/** Utility provider for `KBQ_TREE_SELECT_OPTIONS`. */\nexport const kbqTreeSelectOptionsProvider = (options: KbqTreeSelectOptions): Provider => {\n return {\n provide: KBQ_TREE_SELECT_OPTIONS,\n useValue: options\n };\n};\n\n/** Change event object that is emitted when the select value has changed. */\nexport class KbqTreeSelectChange {\n constructor(\n public source: KbqTreeSelect,\n public value: any,\n public isUserInput = false,\n public values?: unknown[]\n ) {}\n}\n\n@Component({\n selector: 'kbq-tree-select',\n imports: [\n CdkOverlayOrigin,\n KbqIconModule,\n KbqTagRemove,\n CdkConnectedOverlay,\n CdkMonitorFocus,\n KbqTag,\n NgTemplateOutlet\n ],\n templateUrl: 'tree-select.html',\n styleUrls: ['./tree-select.scss', './tree-select-tokens.scss', '../select/select-tokens.scss'],\n providers: [\n { provide: KbqFormFieldControl, useExisting: KbqTreeSelect },\n kbqCleanerFactoryProvider(() => {\n const treeSelect = inject(KbqTreeSelect);\n\n return {\n get control() {\n return treeSelect;\n },\n get keydownTarget() {\n return treeSelect.elementRef.nativeElement;\n },\n clearByEscape: false,\n clear: () => treeSelect.clear()\n };\n }),\n { provide: KbqTree, useExisting: KbqTreeSelect },\n { provide: KBQ_PARENT_POPUP, useExisting: KbqTreeSelect },\n kbqSiblingPopupProvider(KbqTreeSelect)\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-tree-select',\n '[class.kbq-select_multiple]': 'multiple',\n '[class.kbq-select_multiline]': 'multiline()',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-invalid]': 'errorState',\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'disabled || null',\n '(click)': 'handleClick()',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()'\n },\n animations: [\n kbqSelectAnimations.transformPanel,\n kbqSelectAnimations.fadeInContent\n ],\n exportAs: 'kbqTreeSelect'\n})\nexport class KbqTreeSelect\n extends KbqAbstractSelect\n implements\n AfterContentInit,\n AfterViewInit,\n OnDestroy,\n OnInit,\n DoCheck,\n ControlValueAccessor,\n KbqFormFieldControl<KbqTreeOption>,\n CanUpdateErrorState,\n KbqSiblingPopup\n{\n elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly ngZone = inject(NgZone);\n private readonly renderer = inject(Renderer2);\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n private readonly scrollStrategyFactory = inject(KBQ_SELECT_SCROLL_STRATEGY);\n private readonly dir = inject(Directionality, { optional: true });\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n private readonly parentFormField = inject(KBQ_FORM_FIELD, { host: true, optional: true })!;\n ngControl = inject(NgControl, { optional: true, self: true });\n private localeService = inject<KbqLocaleService>(KBQ_LOCALE_SERVICE, { optional: true });\n protected readonly isBrowser = inject(Platform).isBrowser;\n\n private readonly defaultOptions = inject(KBQ_TREE_SELECT_OPTIONS, { optional: true });\n /** Whether the component is in an error state. */\n errorState: boolean = false;\n /**\n * Emits whenever the component state changes and should cause the parent\n * form-field to update. Implemented as part of `KbqFormFieldControl`.\n * @docs-private\n */\n readonly stateChanges = new Subject<void>();\n\n /** A name for this control that can be used by `kbq-form-field`. */\n controlType = 'select';\n\n hiddenItems: number = 0;\n\n /** The last measured value for the trigger's client bounding rect. */\n triggerRect: DOMRect;\n\n /** The cached font-size of the trigger element. */\n triggerFontSize = 0;\n\n /** Deals with the selection logic. */\n selectionModel: SelectionModel<any>;\n\n /** The value of the select panel's transform-origin property. */\n transformOrigin: string = 'top';\n\n /** Emits when the panel element is finished transforming in. */\n panelDoneAnimatingStream = new Subject<string>();\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n scrollStrategy = this.scrollStrategyFactory();\n\n /**\n * The y-offset of the overlay panel in relation to the trigger.\n *\n * @deprecated noop. The trigger↔panel gap is now controlled by the `--kbq-connected-overlay-gap` CSS\n * variable (transparent padding inside the pane via the `kbq-connected-overlay_below/_above` panel\n * classes), not by a physical overlay offset — so setting this has no effect. Will be removed in 21.0.0.\n */\n offsetY = 0;\n\n /**\n * Minimum space to keep between the overlay and the viewport edge.\n * At least `defaultOffsetY` so CDK's fit check — which runs before the `kbq-connected-overlay_below/_above`\n * gap padding is applied to the pane — stays conservative enough to absorb that padding instead of\n * letting the panel overflow the viewport by the size of the gap.\n */\n protected readonly viewportMargin = defaultOffsetY;\n\n /**\n * Opens the panel below the trigger, falling back to above it when it does not fit.\n *\n * A third position is appended at runtime by `updatePanelAnchor`: a multiline trigger that has grown\n * taller than the panel gets it anchored to its first row and drawn over the rest of it.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n panelClass: KBQ_CONNECTED_OVERLAY_BELOW_CLASS\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: KBQ_CONNECTED_OVERLAY_ABOVE_CLASS\n }\n ];\n\n options: QueryList<KbqTreeOption>;\n\n /**\n * Trigger - is a clickable field to open select dropdown panel\n */\n readonly trigger = viewChild.required<ElementRef>('trigger');\n\n /** Reference to the overlay panel element. */\n readonly panel = viewChild<ElementRef>('panel');\n\n /** Scrollable option list inside the panel. */\n protected readonly optionsContainer = viewChild<ElementRef<HTMLElement>>('optionsContainer');\n\n @ViewChild(CdkConnectedOverlay, { static: false }) overlayDir: CdkConnectedOverlay;\n\n @ViewChildren(KbqTag) tags: QueryList<KbqTag>;\n\n /**\n * Reference to the optional cleaner element for clearing selection.\n * @docs-private\n */\n readonly cleaner = contentChild(KbqCleaner, { descendants: false });\n\n /** User-supplied override of the trigger element. */\n readonly customTrigger = contentChild(KbqSelectTrigger);\n\n readonly customMatcher = contentChild(KbqSelectMatcher);\n\n readonly customTagTemplateRef = contentChild('kbqSelectTagContent', { read: TemplateRef });\n\n readonly tree = contentChild(KbqTreeSelection);\n\n readonly search = contentChild(KbqSelectSearch);\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() hiddenItemsText: string = '+{{ number }}';\n\n /**\n * Event emitted when the select panel has been toggled.\n * Also serves as the `openedChange` member of the `KbqSiblingPopup` contract — a tooltip sharing\n * this element's host reacts to it, so its emission timing (gated on `panelDoneAnimatingStream`, see\n * `ngOnInit`) matters beyond this output's original consumers.\n */\n @Output() readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** Event emitted when the select has been opened. */\n @Output('opened') readonly openedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => o),\n map(() => {})\n );\n\n /** Event emitted when the select has been closed. */\n @Output('closed') readonly closedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => !o),\n map(() => {})\n );\n\n /** Event emitted when the selected value has been changed by the user. */\n readonly selectionChange = output<KbqTreeSelectChange>();\n\n /**\n * Event emitted whenever the tree's `selectAllOptions()` runs — a click on the `selectAll` master\n * checkbox, the Ctrl/Cmd + A shortcut, or a custom `selectAllHandler` that delegates to it.\n */\n readonly onSelectAll = output<KbqSelectAllEvent<KbqTreeOption, KbqTreeSelect>>();\n\n /**\n * Event that emits whenever the raw value of the select changes. This is here primarily\n * to facilitate the two-way binding for the `value` input.\n * @docs-private\n */\n readonly valueChange = output<any>();\n\n /** Classes to be passed to the select panel. Supports the same syntax as the `[class]` binding. */\n readonly panelClass = input<\n | string\n | string[]\n | Set<string>\n | {\n [key: string]: any;\n }\n >(undefined!);\n\n readonly backdropClass = input<string>('cdk-overlay-transparent-backdrop');\n\n /** Object used to control when error messages are shown. */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() errorStateMatcher: ErrorStateMatcher;\n\n /**\n * Function used to sort the values in a select in multiple mode.\n * Follows the same logic as `Array.prototype.sort`.\n */\n readonly sortComparator = input<(a: KbqTreeOption, b: KbqTreeOption, options: KbqTreeOption[]) => number>(\n undefined!\n );\n\n /**\n * Whether to use a multiline matcher or not. Default is false\n */\n readonly multiline = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<KbqTreeSelectChange> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => outputToObservable(option.onSelectionChange))))\n );\n }\n\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.optionSelectionChanges)\n );\n }) as Observable<KbqTreeSelectChange>;\n\n /** Combined stream of all of the child options userInteraction events. */\n readonly userInteractionChanges: Observable<void> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.userInteraction)))\n );\n }\n\n return this.ngZone.onStable.asObservable().pipe(\n take(1),\n switchMap(() => this.userInteractionChanges)\n );\n });\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n\n set placeholder(value: string) {\n this._placeholder = value;\n\n this.stateChanges.next();\n }\n\n private _placeholder: string;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get required(): boolean {\n return this._required;\n }\n\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n\n this.stateChanges.next();\n }\n\n private _required: boolean = false;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get multiple(): boolean {\n return this._multiple;\n }\n\n set multiple(value: boolean) {\n if (this.selectionModel) {\n throw getKbqSelectDynamicMultipleError();\n }\n\n this._multiple = coerceBooleanProperty(value);\n }\n\n private _multiple: boolean = false;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get autoSelect(): boolean {\n if (this.multiSelection) {\n return false;\n }\n\n return this._autoSelect;\n }\n\n set autoSelect(value: boolean) {\n this._autoSelect = coerceBooleanProperty(value);\n }\n\n private _autoSelect: boolean = true;\n\n /** When `true`, a repeated Ctrl/Cmd+A deselects all options. Off by default (Ctrl+A only selects). */\n readonly selectAllToggle = input(false, { transform: booleanAttribute });\n\n /**\n * Whether to render the \"select all\" master checkbox above the tree. Multiple selection only.\n *\n * The row acts on the nodes the user can actually toggle — enabled and selectable. Without a search\n * query that covers the whole data set, collapsed branches included; while a query is active it\n * covers only the matches. Enabling it also makes Ctrl/Cmd + A a two-way toggle, so the shortcut and\n * the checkbox never disagree (`selectAllToggle` is implied).\n */\n readonly selectAll = input(false, { transform: booleanAttribute });\n\n get value(): any {\n return this.tree()!.getSelectedValues();\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get id(): string {\n return this._id;\n }\n\n set id(value: string) {\n this._id = value || this.uid;\n this.stateChanges.next();\n }\n\n private _id: string;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get hasBackdrop(): boolean {\n return this._hasBackdrop;\n }\n\n set hasBackdrop(value: boolean) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n\n private _hasBackdrop: boolean = false;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get tabIndex(): number | null {\n return this.disabled ? -1 : this._tabIndex;\n }\n\n set tabIndex(value: number | null) {\n if (Number.isInteger(value) || value === null) {\n this._tabIndex = value;\n }\n }\n\n private _tabIndex: number | null = 0;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value: boolean) {\n if (value !== this.disabled) {\n this._disabled = value;\n\n if (this.parentFormField) {\n Promise.resolve().then(() => {\n if (this._disabled) {\n this.parentFormField.stopFocusMonitor();\n } else {\n this.parentFormField.runFocusMonitor();\n }\n });\n }\n\n // Let the parent form field know to run change detection when the disabled state changes.\n this.stateChanges.next();\n }\n }\n\n private _disabled: boolean = false;\n\n /**\n * Function for handling the combination Ctrl + A (select all). By default, the internal handler is used.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get selectAllHandler() {\n return this._selectAllHandler;\n }\n\n set selectAllHandler(fn: (event: KeyboardEvent, select: KbqTreeSelect) => void) {\n if (typeof fn !== 'function') {\n throw Error('`selectAllHandler` must be a function.');\n }\n\n this._selectAllHandler = fn;\n }\n\n /** Function for handling the combination Ctrl + A (select all). By default, the internal handler is used. */\n private _selectAllHandler(event: KeyboardEvent, select: KbqTreeSelect): void {\n const searchInput = isInput(event) ? (event.target as HTMLInputElement) : null;\n\n if (shouldSelectSearchText(searchInput)) {\n searchInput!.select();\n event.preventDefault();\n\n return;\n }\n\n event.preventDefault();\n\n // With the master checkbox on screen the shortcut has to behave exactly like clicking it,\n // otherwise the same action would leave the checkbox showing something the selection contradicts.\n // `onSelectAll` is emitted by the tree subscription set up in `ngAfterContentInit`.\n select.tree()!.selectAllOptions(select.selectAll() || select.selectAllToggle());\n }\n\n /** Whether the select is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n\n set focused(value: boolean) {\n this._focused = value;\n }\n\n /** Whether multiple choice is enabled or not. True if multiple or multiline */\n get multiSelection(): boolean {\n return this.multiple || this.multiline();\n }\n\n private _focused = false;\n\n /**\n * Minimum width of the panel.\n * If minWidth is larger than window width, it will be ignored.\n */\n readonly panelMinWidth = input<KbqPanelMinWidth, unknown>(\n this.defaultOptions?.panelMinWidth === undefined\n ? KBQ_PANEL_DEFAULT_MIN_WIDTH\n : this.defaultOptions.panelMinWidth,\n { transform: numberAttribute }\n );\n\n /** Origin for the overlay panel. */\n protected overlayOrigin?: CdkOverlayOrigin | ElementRef;\n\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width, but will never be\n * narrower than `panelMinWidth`. If set to null or an empty string, the panel will grow to match the\n * longest option's text. Any other value is used as an exact width, and `panelMinWidth` is not applied.\n */\n readonly panelWidth = input<KbqPanelWidth>(this.defaultOptions?.panelWidth ?? null);\n\n /**\n * Maximum width of the panel in pixels. Caps how far the panel grows with its content — it never makes\n * the panel narrower than the trigger, and never clamps an explicit `panelWidth`.\n * When null, the `--kbq-panel-size-width-max` token applies.\n */\n readonly panelMaxWidth = input<KbqPanelMaxWidth, unknown>(\n this.defaultOptions?.panelMaxWidth === undefined ? null : this.defaultOptions.panelMaxWidth,\n { transform: numberAttribute }\n );\n\n /**\n * Maximum height of the panel's scrollable option list, in pixels. Applied as the\n * `--kbq-select-panel-size-max-height` custom property on the panel.\n *\n * The search field and the footer sit outside the scrollable area and add to the panel's total height.\n * When null, the token default (256px) applies.\n */\n readonly panelMaxHeight = input<KbqPanelMaxHeight, unknown>(\n this.defaultOptions?.panelMaxHeight === undefined ? null : this.defaultOptions.panelMaxHeight,\n { transform: numberAttribute }\n );\n\n /**\n * `panelMaxHeight` rendered as a CSS length for the `--kbq-select-panel-size-max-height` token.\n * A non-finite value (e.g. `null`) leaves the stylesheet default in place.\n * @docs-private\n */\n protected readonly panelMaxHeightToken = computed(() => kbqResolvePanelMaxHeightToken(this.panelMaxHeight()));\n\n /**\n * Controls when the search functionality is displayed based on the number of available options.\n *\n * Automatically enables search hiding if value provided, even if `defaultOptions.searchMinOptionsThreshold` is provided.\n * @default undefined\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input() set searchMinOptionsThreshold(value: 'auto' | number | undefined) {\n this._searchMinOptionsThreshold =\n this.resolveSearchMinOptionsThreshold(value) ??\n this.resolveSearchMinOptionsThreshold(this.defaultOptions?.searchMinOptionsThreshold);\n }\n\n get searchMinOptionsThreshold(): number | undefined {\n return this._searchMinOptionsThreshold;\n }\n\n private _searchMinOptionsThreshold = this.resolveSearchMinOptionsThreshold();\n\n get panelOpen(): boolean {\n return this._panelOpen;\n }\n\n /** Whether the overlay panel is currently on screen. Part of the `KbqSiblingPopup` contract. */\n get isAttached(): boolean {\n return this._panelOpen;\n }\n\n /**\n * Whether the cleaner (clear button) should be shown.\n * @docs-private\n */\n get canShowCleaner(): boolean {\n return !!this.cleaner()?.canShow;\n }\n\n /** @docs-private */\n get colorForState(): KbqComponentColors {\n const hasLegacyValidateDirective = this.elementRef.nativeElement.classList.contains(\n 'kbq-control_has-validate-directive'\n );\n\n return (hasLegacyValidateDirective && this.ngControl?.invalid) || this.errorState\n ? KbqComponentColors.Error\n : KbqComponentColors.ContrastFade;\n }\n\n isEmptySearchResult: boolean;\n\n triggerValues: KbqTreeSelectTriggerValue[] = [];\n\n private closeSubscription = Subscription.EMPTY;\n\n private _panelOpen = false;\n\n private originalOnKeyDown: (event: KeyboardEvent) => void;\n\n /** The scroll offset the panel is restored to when it attaches — the list always opens at the top. */\n private scrollTop = 0;\n\n /** Unique id for this input. */\n private readonly uid = `kbq-tree-select-${nextUniqueId++}`;\n\n // Used for storing the values that were assigned before the options were initialized.\n private tempValues: string | string[] | null;\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n // The tree owns the \"select all\" row — it is the only place that can put it in front of the nodes\n // and into the key manager's list. Mirrored through an effect rather than assigned once in\n // `ngAfterContentInit` so a `[selectAll]` bound to a changing expression keeps working.\n effect(() => {\n const tree = this.tree();\n\n if (tree) {\n tree.selectAll = this.selectAll();\n }\n });\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n // Force setter to be called in case id was not specified.\n this.id = this.id;\n\n afterNextRender(() => {\n if (this.multiple && !this.multiline()) {\n merge(fromEvent(this.window, 'resize'), this.tags.changes)\n .pipe(delay(0), debounceTime(50), takeUntilDestroyed(this.destroyRef))\n .subscribe(this.calculateHiddenItems);\n }\n });\n }\n\n ngOnInit() {\n this.stateChanges.next();\n\n // We need `distinctUntilChanged` here, because some browsers will\n // fire the animation end event twice for the same animation. See:\n // https://github.com/angular/angular/issues/24084\n this.panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.panelOpen) {\n this.scrollTop = 0;\n\n setTimeout(() => {\n this.highlightCorrectOption();\n\n const search = this.search();\n\n if (search) {\n search.focus();\n }\n });\n\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n ngAfterContentInit() {\n const tree = this.tree()!;\n\n if (!tree) return;\n\n tree.resetFocusedItemOnBlur = false;\n tree.optionShouldHoldFocusOnBlur = !!this.search();\n\n this.selectionModel = tree.selectionModel = new SelectionModel<any>(this.multiSelection);\n\n this.selectionModel.changed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.onChange(this.selectedValues);\n\n if (this.multiSelection) {\n this.refreshTriggerValues();\n }\n });\n\n this.selectionModel.changed.pipe(delay(0), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n // A multiline trigger grows with every selected option, and this is the one signal guaranteed\n // to arrive for it. A single-row trigger keeps its height, so there is nothing to re-anchor.\n this.updatePanelAnchor();\n this.setOverlayPosition();\n });\n\n // eslint-disable-next-line @angular-eslint/no-lifecycle-call\n tree.ngAfterContentInit();\n\n this.initKeyManager();\n\n this.options = tree.renderedOptions;\n tree.autoSelect = this.autoSelect;\n\n // Single place the event is raised, so a click on the master checkbox and Ctrl/Cmd + A — which\n // both go through `selectAllOptions` — emit exactly once and with the same payload.\n outputToObservable(tree.onSelectAll)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ options }) =>\n this.onSelectAll.emit(new KbqSelectAllEvent(this, options, tree.allOptionsSelected))\n );\n\n // Tree lives inside the select panel: enable hover-to-focus on options even without a\n // wrapping form-field (e.g. filter-bar pipes render the tree-select bare).\n tree.inSelect = true;\n\n if (tree.multipleMode === null) {\n // setTimeout need for prevent an error \"NG0100: ExpressionChangedAfterItHasBeenCheckedError\"\n setTimeout(() => (this.tree()!.multipleMode = this.multiSelection ? MultipleMode.CHECKBOX : null));\n }\n\n if (this.multiSelection) {\n tree.noUnselectLast = false;\n }\n\n if (this.tempValues) {\n this.setSelectionByValue(this.tempValues);\n this.tempValues = null;\n }\n\n this.userInteractionChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (!this.multiSelection && this.panelOpen) {\n this.close();\n\n Promise.resolve().then(() => this.focus());\n }\n });\n\n tree.selectionChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.selectionChange.emit(new KbqTreeSelectChange(this, event.option, false, event.options));\n\n const search = this.search();\n\n if (search) {\n search.focus();\n }\n });\n\n if (!this.multiSelection) {\n this.selectionModel.changed\n .pipe(\n filter(({ added }) => !!added.length),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(({ added }) => {\n this.tree()!.keyManager.setFocusOrigin('program');\n this.tree()!.keyManager.setActiveItem(this.options.find(({ data }) => data === added[0]) as any);\n });\n }\n\n this.subscribeOnSearchChanges();\n }\n\n ngAfterViewInit() {\n const tree = this.tree()!;\n\n if (!tree) return;\n\n tree.treeControl.expansionModel.changed\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.setOverlayPosition());\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this.closeSubscription.unsubscribe();\n this.unsubscribeFromPanelResize();\n }\n\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this.parentFormGroup || this.parentForm;\n const matcher = this.errorStateMatcher || this.defaultErrorStateMatcher;\n const control = this.ngControl ? (this.ngControl.control as UntypedFormControl) : null;\n const newState = matcher.isErrorState(control, parent);\n\n if (newState !== oldState) {\n this.errorState = newState;\n this.stateChanges.next();\n }\n }\n\n @Input()\n hiddenItemsTextFormatter(hiddenItemsText: string, hiddenItems: number): string {\n return hiddenItemsText.replace('{{ number }}', hiddenItems.toString());\n }\n\n /**\n * Clears the current selection.\n * @docs-private\n */\n clear(): void {\n this.selectionModel.clear();\n this.tree()!.keyManager.setActiveItem(-1);\n this.setSelectionByValue([]);\n this.onChange(this.selectedValues);\n this.selectionChange.emit(new KbqTreeSelectChange(this, this.selectedValues));\n }\n\n /**\n * Clears the current selection.\n * @deprecated Activate the projected `KbqCleaner` instead.\n * @docs-private\n */\n clearValue(event: Event): void {\n const cleaner = this.cleaner();\n\n if (cleaner) {\n cleaner.clear(event);\n } else {\n event.stopPropagation();\n event.preventDefault();\n this.clear();\n this.focus();\n }\n }\n\n /** `View -> model callback called when value changes` */\n onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when select has been touched` */\n onTouched = () => {};\n\n handleClick() {\n const customMatcher = this.customMatcher();\n\n if (customMatcher && !customMatcher.useDefaultHandlers()) return;\n\n this.toggle();\n }\n\n toggle(): void {\n if (this.panelOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n open(): void {\n if (this.disabled || !this.options || !this.options.length || this._panelOpen) return;\n\n // add check for form-field bounding rectangles, since it adds extra padding around the trigger\n this.triggerRect = (\n this.parentFormField?.getConnectedOverlayOrigin().nativeElement || this.trigger().nativeElement\n ).getBoundingClientRect();\n\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this.triggerFontSize = parseInt(this.window.getComputedStyle(this.trigger().nativeElement)['font-size']);\n\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this.parentFormField) {\n this.overlayOrigin = this.parentFormField.getConnectedOverlayOrigin();\n }\n\n this.updateOverlayWidth(this.panelWidth(), this.panelMinWidth(), this.overlayOrigin ?? this.elementRef);\n\n this._panelOpen = true;\n\n this.changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;\n }\n\n if (this.search()) {\n this.lockOverlayWidthForSearch(this.panel());\n }\n });\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n if (!this._panelOpen) {\n return;\n }\n\n this._panelOpen = false;\n this.unsubscribeFromPanelResize();\n // Back to the two default sides, so the next open is not resolved against a first row that has since\n // changed height.\n this.positions = this.withOverlapPosition(this.positions, null) ?? this.positions;\n\n this.changeDetectorRef.markForCheck();\n this.onTouched();\n\n const search = this.search();\n\n if (search) {\n search.reset();\n }\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n if (this.tree()?.treeControl) {\n this.setSelectionByValue(value);\n } else {\n this.tempValues = value;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n registerOnTouched(fn: () => {}) {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n\n get selected(): any {\n return this.multiSelection ? this.selectionModel?.selected : this.selectionModel?.selected[0];\n }\n\n get selectedValues(): any {\n const selectedValues = this.selectionModel.selected.map((value) => this.tree()!.treeControl.getValue(value));\n\n return this.multiSelection ? selectedValues : selectedValues[0];\n }\n\n get triggerValue(): string {\n if (this.empty) {\n return '';\n }\n\n return this.tree()!.treeControl.getViewValue(this.selected);\n }\n\n get empty(): boolean {\n return !this.selectionModel || this.selectionModel.isEmpty();\n }\n\n isRtl(): boolean {\n return this.dir ? this.dir.value === 'rtl' : false;\n }\n\n get firstSelected() {\n return this.selectionModel.selected.filter((node) => !this.tree()!.treeControl.isDisabled(node))[0];\n }\n\n handleKeydown(event: KeyboardEvent) {\n const customMatcher = this.customMatcher();\n\n if (customMatcher && !customMatcher.useDefaultHandlers()) return;\n\n if (!this.disabled) {\n if (this.panelOpen) {\n this.panelKeydownHandler(event);\n } else {\n this.triggerKeydownHandler(event);\n }\n }\n }\n\n onFocus() {\n const customMatcher = this.customMatcher();\n\n if (customMatcher && !customMatcher.useDefaultHandlers()) return;\n\n if (!this.disabled) {\n this._focused = true;\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n onBlur() {\n const customMatcher = this.customMatcher();\n\n if (customMatcher && !customMatcher.useDefaultHandlers()) return;\n\n this._focused = false;\n\n if (!this.disabled && !this.panelOpen) {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n this.stateChanges.next();\n }\n }\n\n /** Callback that is invoked when the overlay panel has been attached. */\n onAttached() {\n this.overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this.changeDetectorRef.detectChanges();\n this.setOverlayPosition();\n // The panel itself is an `overflow: hidden` box; the option list is what scrolls.\n this.optionsContainer()!.nativeElement.scrollTop = this.scrollTop;\n\n this.tree()!.updateScrollSize();\n // Deliberately out of this frame — see `reanchorPanel`. A microtask still lands before paint.\n queueMicrotask(() => this.reanchorPanel());\n });\n\n this.subscribeToPanelResize();\n this.closeSubscription = this.closingActions().subscribe(() => this.close());\n }\n\n /** Element the overlay is positioned and sized against. */\n protected getOverlayOriginElement(): HTMLElement | undefined {\n return this.parentFormField?.getConnectedOverlayOrigin().nativeElement ?? this.trigger()?.nativeElement;\n }\n\n protected isPanelOpen(): boolean {\n return this._panelOpen;\n }\n\n /** Returns the theme to be used on the panel. */\n getPanelTheme(): string {\n return this.parentFormField ? `kbq-${this.parentFormField.color}` : '';\n }\n\n /** Returns the full set of classes for the panel: base class, theme and custom `panelClass`. */\n protected getPanelClasses(): string {\n const panelClass = this.panelClass();\n const classes = ['kbq-tree-select__panel', this.getPanelTheme()];\n\n if (typeof panelClass === 'string') {\n classes.push(panelClass);\n } else if (Array.isArray(panelClass) || panelClass instanceof Set) {\n classes.push(...panelClass);\n } else if (panelClass) {\n classes.push(...Object.keys(panelClass).filter((key) => panelClass[key]));\n }\n\n return classes.filter(Boolean).join(' ');\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Invoked when an option is clicked. */\n onRemoveSelectedOption(selectedOption: any, $event) {\n $event.stopPropagation();\n\n this.selectionModel.deselect(\n this.selected.find((value) => this.tree()!.treeControl.getValue(value) === selectedOption.value)\n );\n\n this.selectionChange.emit(\n new KbqTreeSelectChange(\n this,\n this.options.find((option) => option.value === selectedOption.value) || selectedOption.value\n )\n );\n\n this.onChange(this.selectedValues);\n }\n\n calculateHiddenItems = () => {\n if (\n !this.isBrowser ||\n this.customTrigger() ||\n this.customMatcher() ||\n this.empty ||\n !this.multiple ||\n this.multiline()\n )\n return;\n\n const totalItemsWidth = this.getTotalItemsWidthInMatcher();\n const [totalVisibleItemsWidth, visibleItems] = this.getTotalVisibleItems();\n\n this.hiddenItems = this.selectionModel.selected.length - visibleItems;\n this.changeDetectorRef.detectChanges();\n\n if (this.hiddenItems) {\n const itemsCounter = this.trigger().nativeElement.querySelector('.kbq-select__match-hidden-text');\n const matcherList = this.trigger().nativeElement.querySelector('.kbq-select__match-list');\n\n if (!itemsCounter || !matcherList) {\n this.changeDetectorRef.markForCheck();\n\n return;\n }\n\n const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;\n const itemsCounterWidth: number = Math.floor(itemsCounter.getBoundingClientRect().width);\n\n const matcherListWidth: number = Math.floor(matcherList.getBoundingClientRect().width);\n const matcherWidth: number = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);\n\n if (itemsCounterShowed && totalItemsWidth < matcherWidth) {\n this.hiddenItems = 0;\n this.changeDetectorRef.detectChanges();\n }\n\n if (\n totalVisibleItemsWidth === matcherListWidth ||\n totalVisibleItemsWidth + itemsCounterWidth < matcherListWidth\n ) {\n this.changeDetectorRef.markForCheck();\n\n return;\n }\n }\n\n this.changeDetectorRef.markForCheck();\n };\n\n triggerKeydownHandler(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const isArrowKey =\n keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\n // Open the select on ALT + arrow key to match the native <select>\n const tree = this.tree()!;\n\n if (isOpenKey || ((this.multiSelection || event.altKey) && isArrowKey)) {\n // prevents the page from scrolling down when pressing space\n event.preventDefault();\n\n this.open();\n } else if (!this.multiSelection && tree.keyManager && tree.keyManager.onKeydown) {\n tree.keyManager.onKeydown(event);\n }\n }\n\n panelKeydownHandler(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n const tree = this.tree()!;\n\n if ((isArrowKey && event.altKey) || keyCode === ESCAPE || keyCode === TAB) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n\n // Prevent ESCAPE from bubbling to ancestor (when inside overlay)\n if (keyCode === ESCAPE) {\n event.stopPropagation();\n }\n\n this.close();\n this.focus();\n } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n this.originalOnKeyDown.call(tree, event);\n\n // LEFT_ARROW moves focus to the parent option when the active one is already collapsed,\n // so the search field has to be given the caret back, the same way the other keys do below.\n const search = this.search();\n\n if (search && this.shouldShowSearch()) {\n search.focus();\n }\n\n return;\n } else if (keyCode === HOME) {\n event.preventDefault();\n\n this.tree()!.keyManager.setFirstItemActive();\n } else if (keyCode === END) {\n event.preventDefault();\n\n this.tree()!.keyManager.setLastItemActive();\n } else if (keyCode === PAGE_UP) {\n event.preventDefault();\n\n this.tree()!.keyManager.setPreviousPageItemActive();\n } else if (keyCode === PAGE_DOWN) {\n event.preventDefault();\n\n this.tree()!.keyManager.setNextPageItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && tree.keyManager.activeItem) {\n event.preventDefault();\n\n if (!this.autoSelect) {\n this.originalOnKeyDown.call(tree, event);\n } else {\n this.close();\n this.focus();\n }\n } else if (this.multiSelection && isSelectAll(event)) {\n this.selectAllHandler(event, this);\n } else {\n const previouslyFocusedIndex = tree.keyManager.activeItemIndex;\n\n tree.keyManager.setFocusOrigin('keyboard');\n tree.keyManager.onKeydown(event);\n\n if (\n this.multiSelection &&\n isArrowKey &&\n event.shiftKey &&\n tree.keyManager.activeItem &&\n tree.keyManager.activeItemIndex !== previouslyFocusedIndex\n ) {\n tree.keyManager.activeItem.selectViaInteraction(event);\n }\n\n if (this.autoSelect && tree.keyManager.activeItem) {\n tree.setSelectedOptionsByKey(\n tree.keyManager.activeItem,\n hasModifierKey(event, 'shiftKey'),\n // ctrlKey is for Windows, metaKey is for MacOS\n hasModifierKey(event, 'ctrlKey', 'metaKey')\n );\n }\n\n // Ensure the active option's keyboard-focus indicator is shown even when the\n // index didn't change (e.g. ArrowDown on a single-option list) — without this\n // setActiveItem isn't invoked and the focus stays on the trigger.\n if (isArrowKey && tree.keyManager.activeItemIndex === previouslyFocusedIndex) {\n tree.keyManager.activeItem?.focus('keyboard');\n }\n\n const search = this.search();\n\n if (search && this.shouldShowSearch()) {\n search.focus();\n }\n }\n }\n\n /** @docs-private */\n protected shouldShowSearch(): boolean {\n // `options`/`renderedOptions` leads with the \"select all\" row when it is on, and the row is\n // added to it on a separate, later-processed reactive pass than the one behind `nodesCount` —\n // reading the tree's own authoritative node count instead of subtracting from `options.length`\n // sidesteps that race entirely, rather than risking the two going momentarily out of step.\n const optionsCount = this.tree()?.nodesCount ?? this.options.length;\n\n return (\n isUndefined(this.searchMinOptionsThreshold) ||\n !!this.search()?.value() ||\n optionsCount >= this.searchMinOptionsThreshold\n );\n }\n\n private updateLocaleParams = () => {\n this.hiddenItemsText = this.localeService?.getParams('select').hiddenItemsText;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private closingActions() {\n const backdrop = this.overlayDir.overlayRef!.backdropClick();\n const outsidePointerEvents = this.overlayDir\n .overlayRef!.outsidePointerEvents()\n .pipe(filter((event) => !this.elementRef.nativeElement.contains(_getEventTarget(event))));\n const detachments = this.overlayDir.overlayRef!.detachments();\n\n return merge(backdrop, outsidePointerEvents, detachments);\n }\n\n private getTotalItemsWidthInMatcher(): number {\n const triggerClone = this.buildTriggerClone();\n\n triggerClone.querySelector('.kbq-select__match-hidden-text')?.remove();\n this.renderer.appendChild(this.trigger().nativeElement, triggerClone);\n\n let totalItemsWidth: number = 0;\n const selectedItemsViewValueContainers = triggerClone.querySelectorAll<HTMLElement>('kbq-tag');\n\n selectedItemsViewValueContainers.forEach((item) => (totalItemsWidth += this.getItemWidth(item)));\n\n triggerClone.remove();\n\n return totalItemsWidth;\n }\n\n private getTotalVisibleItems(): [number, number] {\n const triggerClone = this.buildTriggerClone();\n\n const hiddenText = triggerClone.querySelector('.kbq-select__match-hidden-text');\n\n if (hiddenText) {\n this.renderer.setStyle(hiddenText, 'display', 'block');\n }\n\n this.renderer.appendChild(this.trigger().nativeElement, triggerClone);\n\n let visibleItemsCount: number = 0;\n let totalVisibleItemsWidth: number = 0;\n\n (triggerClone.querySelectorAll('kbq-tag') as NodeListOf<HTMLElement>).forEach((item) => {\n if (item.offsetTop < item.offsetHeight) {\n totalVisibleItemsWidth += this.getItemWidth(item);\n visibleItemsCount++;\n }\n });\n\n triggerClone.remove();\n\n return [totalVisibleItemsWidth, visibleItemsCount];\n }\n\n private buildTriggerClone(): HTMLDivElement {\n const triggerClone = this.trigger().nativeElement.cloneNode(true);\n\n this.renderer.setStyle(triggerClone, 'position', 'absolute');\n this.renderer.setStyle(triggerClone, 'visibility', 'hidden');\n this.renderer.setStyle(triggerClone, 'top', '-100%');\n this.renderer.setStyle(triggerClone, 'left', '0');\n\n return triggerClone;\n }\n\n /**\n * Width of a single `kbq-tag` in the matcher, including margins and the inter-tag gap.\n *\n * Tags are `border-box` and carry horizontal padding, which `getComputedStyle().width` — always\n * the used content-box width — leaves out. See the twin in `KbqSelect`.\n */\n private getItemWidth(element: HTMLElement): number {\n const computedStyle = this.window.getComputedStyle(element);\n\n const width: number = element.getBoundingClientRect().width;\n const marginLeft: number = parseFloat(computedStyle.marginLeft as string) || 0;\n const marginRight: number = parseFloat(computedStyle.marginRight as string) || 0;\n\n return width + marginLeft + marginRight + parseInt(SelectSizeMultipleContentGap);\n }\n\n private refreshTriggerValues(): void {\n this.triggerValues = this.selectionModel.selected.map((node) => ({\n value: this.tree()!.treeControl.getValue(node),\n viewValue: this.tree()!.treeControl.getViewValue(node),\n disabled: this.tree()!.treeControl.isDisabled(node)\n }));\n\n this.changeDetectorRef.detectChanges();\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private setSelectionByValue(value: any | any[]) {\n if (this.multiSelection && value) {\n if (!Array.isArray(value)) {\n throw getKbqSelectNonArrayValueError();\n }\n\n this.tree()!.setOptionsFromValues(value);\n\n this.sortValues();\n } else {\n this.tree()!.setOptionsFromValues([value]);\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initKeyManager() {\n const tree = this.tree()!;\n\n this.originalOnKeyDown = tree.onKeyDown;\n\n tree.onKeyDown = () => {};\n\n tree.keyManager.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n const treeValue = this.tree()!;\n\n if (this._panelOpen && this.panel()) {\n this.scrollActiveOptionIntoView();\n } else if (!this._panelOpen && !this.multiSelection && treeValue.keyManager.activeItem) {\n treeValue.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n /** Sorts the selected values in the selected based on their order in the panel. */\n private sortValues() {\n if (this.multiSelection) {\n const options = this.options.toArray();\n\n this.selectionModel.sort((a, b) => {\n const sortComparator = this.sortComparator();\n\n return sortComparator ? sortComparator(a, b, options) : options.indexOf(a) - options.indexOf(b);\n });\n\n this.stateChanges.next();\n }\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private highlightCorrectOption() {\n const tree = this.tree()!;\n\n if (!tree.keyManager) {\n return;\n }\n\n const selectedOption = this.options.find((option) => (option.data as any) === this.firstSelected);\n\n tree.keyManager.setFocusOrigin('keyboard');\n\n if (selectedOption) {\n tree.keyManager.setActiveItem(selectedOption);\n } else {\n tree.keyManager.setFirstItemActive();\n\n if (tree.keyManager.activeItem?.disabled) {\n tree.keyManager.setActiveItem(-1);\n }\n }\n }\n\n private scrollActiveOptionIntoView() {\n this.tree()!.keyManager.activeItem?.focus();\n }\n\n private subscribeOnSearchChanges() {\n const search = this.search();\n\n if (!search?.ngControl.valueChanges) return;\n\n search.ngControl.valueChanges\n .pipe(\n audit(() => this.tree()!.unorderedOptions.changes),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((value) => {\n this.isEmptySearchResult = !!value && this.tree()!.isEmpty;\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger\n cdkOverlayOrigin\n class=\"kbq-select__trigger\"\n [class.kbq-select__trigger_empty]=\"empty\"\n [class.kbq-select__trigger_multiline]=\"multiline()\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n [class.kbq-select__trigger_single]=\"!multiple\"\n>\n @if (!!customMatcher()) {\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" />\n } @else {\n <div class=\"kbq-select__matcher\">\n @if (empty) {\n <span class=\"kbq-select__placeholder\">\n {{ placeholder || '\\u00A0' }}\n </span>\n } @else {\n @if (!!customTrigger()) {\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" />\n } @else {\n <div class=\"kbq-select__match-container\">\n @if (multiSelection) {\n <div\n #multilineMatchList\n [class.kbq-select__match-list]=\"!multiline()\"\n [class.kbq-select__multiline-match-list]=\"multiline()\"\n >\n @if (!customTagTemplateRef()) {\n @for (option of triggerValues; track option) {\n <kbq-tag\n [color]=\"colorForState\"\n [disabled]=\"option.disabled || disabled\"\n [selectable]=\"false\"\n >\n {{ option.viewValue }}\n @if (!option.disabled && !disabled) {\n <i\n kbq-icon=\"kbq-xmark-s_16\"\n kbqTagRemove\n (click)=\"onRemoveSelectedOption(option, $event)\"\n ></i>\n }\n </kbq-tag>\n }\n } @else {\n @for (option of triggerValues; track option) {\n <ng-container\n [ngTemplateOutlet]=\"customTagTemplateRef()\"\n [ngTemplateOutletContext]=\"{ $implicit: option, select: this }\"\n />\n }\n }\n </div>\n } @else {\n <span class=\"kbq-select__matcher-text\">\n {{ triggerValue }}\n </span>\n }\n @if (!multiline()) {\n <div\n class=\"kbq-select__match-hidden-text\"\n [style.display]=\"hiddenItems > 0 ? 'block' : 'none'\"\n >\n {{ hiddenItemsTextFormatter(hiddenItemsText, hiddenItems) }}\n </div>\n }\n </div>\n }\n }\n\n @if (canShowCleaner) {\n <div class=\"kbq-select__cleaner\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"kbq-select__arrow\" [color]=\"colorForState\"></i>\n </div>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayBackdropClass]=\"backdropClass()\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"viewportMargin\"\n [cdkConnectedOverlayWidth]=\"overlayWidth\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n>\n <div\n #panel\n cdkMonitorSubtreeFocus\n [class]=\"getPanelClasses()\"\n [style.--kbq-select-panel-size-max-height]=\"panelMaxHeightToken()\"\n [style.font-size.px]=\"triggerFontSize\"\n [style.max-width.px]=\"panelMaxWidth()\"\n [style.transformOrigin]=\"transformOrigin\"\n (keydown)=\"panelKeydownHandler($event)\"\n >\n @if (search() && shouldShowSearch()) {\n <div class=\"kbq-select__search-container\">\n <ng-content select=\"[kbqSelectSearch]\" />\n </div>\n }\n\n <div\n #optionsContainer\n class=\"kbq-tree-select__content kbq-scrollbar\"\n [@fadeInContent]=\"'showing'\"\n (@fadeInContent.done)=\"panelDoneAnimatingStream.next($event.toState)\"\n >\n @if (isEmptySearchResult) {\n <ng-content select=\"[kbq-select-search-empty-result]\" />\n }\n\n <ng-content select=\"kbq-tree-selection\" />\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-tree-select-footer]\" />\n </div>\n</ng-template>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport {\n KbqPseudoCheckboxModule,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectSearch,\n KbqSelectSearchEmptyResult,\n KbqSelectTrigger\n} from '@koobiq/components/core';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTagsModule } from '@koobiq/components/tags';\nimport { KbqTreeModule } from '@koobiq/components/tree';\nimport { KbqTreeSelect } from './tree-select.component';\n\n@NgModule({\n imports: [\n OverlayModule,\n KbqTreeModule,\n KbqIconModule,\n KbqTagsModule,\n KbqPseudoCheckboxModule,\n KbqSelectSearch,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectTrigger,\n KbqSelectSearchEmptyResult,\n NgTemplateOutlet,\n A11yModule,\n KbqTreeSelect\n ],\n exports: [\n KbqTreeSelect,\n KbqSelectSearch,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectTrigger,\n KbqSelectSearchEmptyResult,\n KbqFormFieldModule\n ]\n})\nexport class KbqTreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectSizeMultipleContentGap"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-tree-select.mjs","sources":["../../../packages/components/tree-select/tree-select.component.ts","../../../packages/components/tree-select/tree-select.html","../../../packages/components/tree-select/tree-select.module.ts","../../../packages/components/tree-select/koobiq-components-tree-select.ts"],"sourcesContent":["import { CdkMonitorFocus } from '@angular/cdk/a11y';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedPosition, ScrollStrategy } from '@angular/cdk/overlay';\nimport { Platform, _getEventTarget } from '@angular/cdk/platform';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewChecked,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n DoCheck,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Injector,\n InputSignal,\n OnDestroy,\n OnInit,\n Provider,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n linkedSignal,\n numberAttribute,\n output,\n signal,\n untracked,\n viewChild,\n viewChildren,\n type AfterRenderRef\n} from '@angular/core';\nimport { outputFromObservable, outputToObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n CanUpdateErrorState,\n DOWN_ARROW,\n END,\n ENTER,\n ESCAPE,\n ErrorStateMatcher,\n HOME,\n KBQ_CONNECTED_OVERLAY_ABOVE_CLASS,\n KBQ_CONNECTED_OVERLAY_BELOW_CLASS,\n KBQ_OVERLAY_LAYERS,\n KBQ_PANEL_DEFAULT_MIN_WIDTH,\n KBQ_PARENT_POPUP,\n KBQ_SELECT_LOCALE_CONFIGURATION,\n KBQ_SELECT_SCROLL_STRATEGY,\n KbqAbstractSelect,\n KbqComponentColors,\n KbqErrorStateTracker,\n KbqLocaleOverridesDirective,\n KbqPanelMaxHeight,\n KbqPanelMaxWidth,\n KbqPanelMinWidth,\n KbqPanelWidth,\n KbqSelectAllEvent,\n KbqSelectMatcher,\n KbqSelectSearch,\n KbqSelectTrigger,\n KbqSiblingPopup,\n LEFT_ARROW,\n MultipleMode,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n SPACE,\n TAB,\n UP_ARROW,\n defaultOffsetY,\n getKbqSelectDynamicMultipleError,\n getKbqSelectNonArrayValueError,\n hasModifierKey,\n isInput,\n isSelectAll,\n isUndefined,\n kbqQueryListFrom,\n kbqResolvePanelMaxHeightToken,\n kbqSelectAllHandlerTransform,\n kbqSiblingPopupProvider,\n runClearPredicate,\n shouldSelectSearchText\n} from '@koobiq/components/core';\nimport {\n KBQ_FORM_FIELD,\n KbqCleaner,\n KbqFormFieldControl,\n kbqCleanerFactoryProvider\n} from '@koobiq/components/form-field';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqScrollbarViewport } from '@koobiq/components/scrollbar';\nimport { KbqSelectNoOptions } from '@koobiq/components/select';\nimport { KbqTag, KbqTagRemove } from '@koobiq/components/tags';\nimport { KbqTreeOption, KbqTreeSelection } from '@koobiq/components/tree';\nimport { SizeXxs as SelectSizeMultipleContentGap } from '@koobiq/design-tokens';\nimport { Observable, Subject, Subscription, audit, defer, fromEvent, merge, timer } from 'rxjs';\nimport { debounceTime, delay, distinctUntilChanged, filter, map, startWith, switchMap, take } from 'rxjs/operators';\n\nlet nextUniqueId = 0;\n\n/** Tree select trigger value type. */\nexport type KbqTreeSelectTriggerValue = {\n disabled: boolean;\n value: string;\n viewValue: string;\n};\n\n/**\n * Orders the values of a tree select in multiple mode, as `Array.prototype.sort` does. Receives two selected data\n * nodes and every data node of the tree in panel order.\n */\nexport type KbqTreeSelectSortComparator<T = any> = (a: T, b: T, nodes: T[]) => number;\n\n/** Options for the `kbq-tree-select` that can be configured using the `KBQ_TREE_SELECT_OPTIONS` injection token. */\nexport type KbqTreeSelectOptions = Partial<{\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width.\n * If set to null or an empty string, the panel will grow to match the longest option's text.\n */\n panelWidth: KbqPanelWidth;\n\n /**\n * Minimum width of the panel. If minWidth is larger than window width or property set to null, it will be ignored.\n */\n panelMinWidth: KbqPanelMinWidth;\n\n /**\n * Maximum width of the panel. Caps growth by content only — it never overrides the trigger width or an\n * explicit `panelWidth`. If null, the `--kbq-panel-size-width-max` token applies.\n */\n panelMaxWidth: KbqPanelMaxWidth;\n\n /**\n * Maximum height of the panel's scrollable option list. Does not include the search field or the\n * footer. If null, the `--kbq-select-panel-size-max-height` token applies.\n */\n panelMaxHeight: KbqPanelMaxHeight;\n\n /**\n * Whether to enable hiding search by default if options is less than minimum.\n *\n * - `'auto'` uses {@link KBQ_SELECT_SEARCH_MIN_OPTIONS_THRESHOLD} as min value.\n * - number - will enables search hiding and uses value as min.\n */\n searchMinOptionsThreshold: 'auto' | number;\n\n /**\n * Decides which selected nodes the projected `KbqCleaner` removes. Disabled nodes are kept when this\n * is not set. Overridden per instance by the `clearPredicate` attribute.\n */\n clearPredicate: (node: any) => boolean;\n}>;\n\n/** Injection token that can be used to provide the default options for the `kbq-tree-select`. */\nexport const KBQ_TREE_SELECT_OPTIONS = new InjectionToken<KbqTreeSelectOptions>('KBQ_TREE_SELECT_OPTIONS');\n\n/** Utility provider for `KBQ_TREE_SELECT_OPTIONS`. */\nexport const kbqTreeSelectOptionsProvider = (options: KbqTreeSelectOptions): Provider => {\n return {\n provide: KBQ_TREE_SELECT_OPTIONS,\n useValue: options\n };\n};\n\n/** Change event object that is emitted when the select value has changed. */\nexport class KbqTreeSelectChange<T = any> {\n constructor(\n /** Select the change comes from. */\n public source: KbqTreeSelect,\n\n /**\n * Option the change is about — a `KbqTreeOption` whenever the changed node is rendered, and the\n * raw value of the node when it is not. `null` when the change is not about a single option,\n * which today means the cleaner was activated; `values` then carries the nodes it removed.\n */\n public value: T,\n /** Whether the change was made by the user rather than written to the model. */\n public isUserInput = false,\n /** Every option the change is about, when it covers more than one. */\n public values?: unknown[]\n ) {}\n}\n\n@Component({\n selector: 'kbq-tree-select',\n imports: [\n CdkOverlayOrigin,\n KbqIconModule,\n KbqTagRemove,\n CdkConnectedOverlay,\n CdkMonitorFocus,\n KbqTag,\n KbqScrollbarViewport,\n NgTemplateOutlet\n ],\n templateUrl: 'tree-select.html',\n styleUrls: ['./tree-select.scss', './tree-select-tokens.scss'],\n providers: [\n { provide: KbqFormFieldControl, useExisting: KbqTreeSelect },\n kbqCleanerFactoryProvider(() => {\n const treeSelect = inject(KbqTreeSelect);\n\n return {\n get control() {\n return treeSelect;\n },\n clearByEscape: false,\n clear: () => treeSelect.clear(),\n canClear: () => treeSelect.canClear\n };\n }),\n { provide: KBQ_PARENT_POPUP, useExisting: KbqTreeSelect },\n kbqSiblingPopupProvider(KbqTreeSelect)\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-tree-select',\n '[class.kbq-select_multiple]': 'multiple',\n '[class.kbq-select_multiline]': 'multiline()',\n '[class.kbq-disabled]': 'disabledClass()',\n '[class.kbq-invalid]': 'invalidClass()',\n // The tree-select is not a native control, so its combobox semantics, its accessible name and\n // its invalid/required/disabled states all have to be exposed explicitly.\n //\n // No `aria-haspopup` here: the panel carries no `role=\"tree\"` yet, and announcing a popup that\n // the assistive technology then cannot find is worse than announcing none — the same call\n // `KbqDropdownTrigger` made. Add it together with the tree roles.\n //\n // No `aria-activedescendant` either: it is only read off the element that HAS the focus, and this\n // control moves the focus into the panel — onto the option, or into the projected search field —\n // for as long as the panel is open. It can only start telling the truth once the option highlight\n // stops being driven by real DOM focus (`KbqTreeOption` paints `kbq-focused` from `hasFocus`),\n // which is `@koobiq/components/tree`'s call to make.\n role: 'combobox',\n '[attr.id]': 'id()',\n '[attr.aria-expanded]': 'panelOpen',\n '[attr.aria-controls]': 'panelOpen ? panelId : null',\n '[attr.aria-label]': 'ariaLabelText',\n '[attr.aria-labelledby]': 'resolvedAriaLabelledby()',\n '[attr.aria-invalid]': 'errorState()',\n '[attr.aria-required]': 'required()',\n '[attr.aria-disabled]': 'disabled() || null',\n '[attr.tabindex]': 'tabIndex',\n '[attr.disabled]': 'disabledAttribute()',\n '(click)': 'handleClick()',\n '(keydown)': 'handleKeydown($event)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()'\n },\n hostDirectives: [\n { directive: KbqLocaleOverridesDirective, inputs: ['kbqLocaleOverrides: localeOverrides'] }\n ],\n exportAs: 'kbqTreeSelect'\n})\nexport class KbqTreeSelect<T = any>\n extends KbqAbstractSelect\n implements\n AfterViewChecked,\n AfterContentInit,\n AfterViewInit,\n OnDestroy,\n OnInit,\n DoCheck,\n ControlValueAccessor,\n KbqFormFieldControl<KbqTreeOption>,\n CanUpdateErrorState,\n KbqSiblingPopup\n{\n elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly injector = inject(Injector);\n private readonly renderer = inject(Renderer2);\n defaultErrorStateMatcher = inject(ErrorStateMatcher);\n private readonly scrollStrategyFactory = inject(KBQ_SELECT_SCROLL_STRATEGY);\n private readonly overlayLayers = inject(KBQ_OVERLAY_LAYERS);\n parentForm = inject(NgForm, { optional: true });\n parentFormGroup = inject(FormGroupDirective, { optional: true });\n private readonly parentFormField = inject(KBQ_FORM_FIELD, { host: true, optional: true })!;\n ngControl = inject(NgControl, { optional: true, self: true });\n protected readonly isBrowser = inject(Platform).isBrowser;\n\n private readonly defaultOptions = inject(KBQ_TREE_SELECT_OPTIONS, { optional: true });\n private readonly errorStateTracker = new KbqErrorStateTracker(\n this.defaultErrorStateMatcher,\n this.ngControl,\n this.parentFormGroup,\n this.parentForm\n );\n\n /** Whether the component is in an error state. */\n readonly errorState = this.errorStateTracker.errorState;\n\n /** A name for this control that can be used by `kbq-form-field`. */\n controlType = 'select';\n\n /**\n * A `kbq-tree-select` is not a native labelable element, so the form-field's `<label for>` cannot\n * associate with it. The control is named through `aria-labelledby` instead.\n */\n readonly isNativeLabelSupported = false;\n\n /** Number of the selected items that do not fit into the trigger. */\n readonly hiddenItems = signal(0);\n\n /** The last measured value for the trigger's client bounding rect. */\n protected triggerRect: DOMRect;\n\n /** The cached font-size of the trigger element. */\n triggerFontSize = 0;\n\n /**\n * Deals with the selection logic. The projected `kbq-tree-selection` shares the same instance.\n *\n * `T` is the type of the data nodes, the same as the projected tree's. A template infers it from `[clearPredicate]`\n * alone, apart from the tree; a query names it: `viewChild.required<KbqTreeSelect<Node>>(KbqTreeSelect)`.\n */\n selectionModel: SelectionModel<T>;\n\n /** Emits once the panel has rendered (`'showing'`) or has been removed (`'void'`). */\n protected readonly panelDoneAnimatingStream = new Subject<string>();\n\n private panelRender?: AfterRenderRef;\n\n /** Strategy that will be used to handle scrolling while the select panel is open. */\n scrollStrategy: ScrollStrategy = this.scrollStrategyFactory();\n\n /**\n * Minimum space to keep between the overlay and the viewport edge.\n * At least `defaultOffsetY` so CDK's fit check — which runs before the `kbq-connected-overlay_below/_above`\n * gap padding is applied to the pane — stays conservative enough to absorb that padding instead of\n * letting the panel overflow the viewport by the size of the gap.\n */\n protected readonly viewportMargin = defaultOffsetY;\n\n /**\n * Opens the panel below the trigger, falling back to above it when it does not fit.\n *\n * A third position is appended at runtime by `updatePanelAnchor`: a multiline trigger that has grown\n * taller than the panel gets it anchored to its first row and drawn over the rest of it.\n */\n positions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n panelClass: KBQ_CONNECTED_OVERLAY_BELOW_CLASS\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: KBQ_CONNECTED_OVERLAY_ABOVE_CLASS\n }\n ];\n\n protected options: QueryList<KbqTreeOption<T>>;\n\n /**\n * Trigger - is a clickable field to open select dropdown panel\n */\n readonly trigger = viewChild.required<ElementRef>('trigger');\n\n /** Reference to the overlay panel element. */\n readonly panel = viewChild<ElementRef>('panel');\n\n /** Scrollable option list inside the panel. */\n protected readonly optionsContainer = viewChild<ElementRef<HTMLElement>>('optionsContainer');\n\n /** The options container's custom scrollbar viewport, flashed when the panel opens. */\n private readonly scrollbarViewport = viewChild(KbqScrollbarViewport);\n\n private readonly overlayDirQuery = viewChild(CdkConnectedOverlay);\n\n /** Reference to the CDK connected overlay directive. */\n protected get overlayDir(): CdkConnectedOverlay {\n return this.overlayDirQuery()!;\n }\n\n private readonly tagsQuery = viewChildren(KbqTag);\n private readonly tagsList = kbqQueryListFrom(this.tagsQuery);\n\n protected get tags(): QueryList<KbqTag> {\n return this.tagsList();\n }\n\n /**\n * Reference to the optional cleaner element for clearing selection.\n *\n * @docs-private\n */\n readonly cleaner = contentChild(KbqCleaner, { descendants: false });\n\n /** User-supplied override of the trigger element. */\n readonly customTrigger = contentChild(KbqSelectTrigger);\n\n readonly customMatcher = contentChild(KbqSelectMatcher);\n\n readonly customTagTemplateRef = contentChild('kbqSelectTagContent', { read: TemplateRef });\n\n readonly tree = contentChild<KbqTreeSelection<T>>(KbqTreeSelection);\n\n readonly search = contentChild(KbqSelectSearch);\n\n /** Message projected for an empty tree — the only thing the panel opens onto without options. */\n private readonly noOptionsMessage = contentChild(KbqSelectNoOptions);\n\n /**\n * Text of the counter of the selected items that do not fit into the trigger. `{{ number }}` is\n * replaced with their number.\n *\n * Left unset, the text follows the active locale (`select.hiddenItemsText`); set, it wins over the\n * locale and survives a locale change.\n */\n readonly hiddenItemsText = input<string | undefined>(undefined);\n\n /** Formats the counter of the items that do not fit into the trigger. */\n readonly hiddenItemsTextFormatter = input<(hiddenItemsText: string, hiddenItems: number) => string>(\n (hiddenItemsText, hiddenItems) => hiddenItemsText.replace('{{ number }}', hiddenItems.toString())\n );\n\n private readonly localeConfiguration = inject(KbqLocaleOverridesDirective, { self: true }).read(\n 'select',\n KBQ_SELECT_LOCALE_CONFIGURATION\n );\n\n /**\n * Event emitted when the select panel has been toggled.\n * Also serves as the `openedChange` member of the `KbqSiblingPopup` contract — a tooltip sharing\n * this element's host reacts to it, so its emission timing (gated on `panelDoneAnimatingStream`, see\n * `ngOnInit`) matters beyond this output's original consumers.\n */\n readonly openedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /** @docs-private */\n readonly openedChangeOutput = outputFromObservable(this.openedChange, { alias: 'openedChange' });\n\n /** Event emitted when the select has been opened. */\n readonly openedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => o),\n map(() => {})\n );\n\n /** @docs-private */\n readonly openedOutput = outputFromObservable(this.openedStream, { alias: 'opened' });\n\n /** Event emitted when the select has been closed. */\n readonly closedStream: Observable<void> = this.openedChange.pipe(\n filter((o) => !o),\n map(() => {})\n );\n\n /** @docs-private */\n readonly closedOutput = outputFromObservable(this.closedStream, { alias: 'closed' });\n\n /** Event emitted when the selected value has been changed by the user. */\n readonly selectionChange = output<KbqTreeSelectChange>();\n\n /**\n * Event emitted whenever the tree's `selectAllOptions()` runs — a click on the `selectAll` master\n * checkbox, the Ctrl/Cmd + A shortcut, or a custom `selectAllHandler` that delegates to it.\n */\n readonly onSelectAll = output<KbqSelectAllEvent<KbqTreeOption<T>, KbqTreeSelect<T>>>();\n\n /** Classes to be passed to the select panel. Supports the same syntax as the `[class]` binding. */\n readonly panelClass = input<\n | string\n | string[]\n | Set<string>\n | {\n [key: string]: any;\n }\n >(undefined!);\n\n readonly backdropClass = input<string>('cdk-overlay-transparent-backdrop');\n\n /**\n * Name of the control, for when no element on the page carries it. Defaults to the placeholder.\n *\n * Prefer `aria-labelledby` and point it at visible text: a name that duplicates a visible label is one\n * more string to keep in sync, and a name with no visible counterpart cannot be spoken back by voice\n * control (WCAG 2.5.3).\n */\n readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });\n\n /**\n * Id of the element that names the control. Defaults to the `kbq-label` of a wrapping `kbq-form-field`.\n *\n * A `role=\"combobox\"` element takes its name from the author only, so neither the placeholder nor the\n * selected values name it, and the `<label for>` of the form field names labelable elements only, which\n * a custom control is not. Without a form-field label, point this at whatever visible text names the\n * control.\n */\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\n /**\n * Id of the element that names the control: its own `aria-labelledby`, or else the form-field label.\n *\n * @internal\n */\n protected readonly resolvedAriaLabelledby = computed(\n () => this.ariaLabelledby() ?? this.parentFormField?.labelId() ?? null\n );\n\n /** Object used to control when error messages are shown. */\n readonly errorStateMatcher = input<ErrorStateMatcher>();\n\n /**\n * Function used to sort the values in a select in multiple mode, by default their order in the panel.\n * Follows the same logic as `Array.prototype.sort`. Receives two selected data nodes and every data node of the\n * tree in panel order, collapsed branches included — a node in a collapsed branch has no option.\n */\n readonly sortComparator: InputSignal<KbqTreeSelectSortComparator> = input<KbqTreeSelectSortComparator>(undefined!);\n\n /**\n * Decides which selected nodes the projected `KbqCleaner` removes: return `true` to clear the node,\n * `false` to keep it. Receives the data node, not the option — a node in a collapsed branch has no\n * option. Disabled nodes are kept by default. Bind a stable reference — a new function on every\n * change detection re-runs the predicate over the whole selection.\n *\n * Not consulted by `writeValue` / `reset()`, which always clear everything. The parameter type becomes the select's\n * `T` in a template: type it with the tree's node, not with an option.\n */\n readonly clearPredicate = input<(node: T) => boolean, (node: T) => boolean>(\n this.defaultOptions?.clearPredicate ?? ((node) => !this.isNodeDisabled(node)),\n {\n transform: (fn) => {\n if (typeof fn !== 'function') {\n throw Error('`clearPredicate` must be a function.');\n }\n\n return fn;\n }\n }\n );\n\n /**\n * Whether to use a multiline matcher or not. Default is false\n */\n readonly multiline = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n /** Combined stream of all of the child options' change events. */\n readonly optionSelectionChanges: Observable<KbqTreeSelectChange> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => outputToObservable(option.selectionChange))))\n );\n }\n\n return this.optionsInitialized.pipe(switchMap(() => this.optionSelectionChanges));\n }) as Observable<KbqTreeSelectChange>;\n\n /** Combined stream of all of the child options userInteraction events. */\n readonly userInteractionChanges: Observable<void> = defer(() => {\n if (this.options) {\n return this.options.changes.pipe(\n startWith(this.options),\n switchMap(() => merge(...this.options.map((option) => option.userInteraction)))\n );\n }\n\n return this.optionsInitialized.pipe(switchMap(() => this.userInteractionChanges));\n });\n\n /** Emits once `options` is assigned, for subscribers that arrive before the content is resolved. */\n private readonly optionsInitialized = new Subject<void>();\n\n /** Placeholder shown in the trigger while nothing is selected. */\n readonly placeholder = input<string>();\n\n /** Whether the select is required. */\n readonly required = input<boolean, boolean | string | null | undefined>(false, { transform: booleanAttribute });\n\n /** @docs-private */\n readonly multipleInput = input<boolean, boolean | string | null | undefined>(false, {\n alias: 'multiple',\n transform: booleanAttribute\n });\n\n /** Whether multiple nodes can be selected. Cannot be changed once the selection model exists. */\n get multiple(): boolean {\n return this.multipleValue ?? this.multipleInput();\n }\n\n /** The multiplicity the selection model was created with; a later binding change is refused. */\n private multipleValue: boolean | undefined;\n\n /** @docs-private */\n readonly autoSelectInput = input<boolean, boolean | string | null | undefined>(true, {\n alias: 'autoSelect',\n transform: booleanAttribute\n });\n\n /** Whether moving the active node selects it. Always off in multiple selection. */\n get autoSelect(): boolean {\n return !this.multiSelection && this.autoSelectInput();\n }\n\n /** When `true`, a repeated Ctrl/Cmd+A deselects all options. Off by default (Ctrl+A only selects). */\n readonly selectAllToggle = input(false, { transform: booleanAttribute });\n\n /**\n * Whether to render the \"select all\" master checkbox above the tree. Multiple selection only.\n *\n * The row acts on the nodes the user can actually toggle — enabled and selectable. Without a search\n * query that covers the whole data set, collapsed branches included; while a query is active it\n * covers only the matches. Enabling it also makes Ctrl/Cmd + A a two-way toggle, so the shortcut and\n * the checkbox never disagree (`selectAllToggle` is implied).\n */\n readonly selectAll = input(false, { transform: booleanAttribute });\n\n private readonly valueState = signal<any>(undefined);\n\n /** Values of the selected nodes: an array in multiple mode. */\n readonly value = this.valueState.asReadonly();\n\n /** @docs-private */\n readonly idInput = input<string | undefined>(undefined, { alias: 'id' });\n\n /** Unique identifier of the select, generated when not provided. */\n readonly id = computed(() => this.idInput() || this.uid);\n\n /** Whether the overlay panel is rendered on top of a backdrop. */\n readonly hasBackdrop = input(false, { transform: booleanAttribute });\n\n /** @docs-private */\n readonly tabIndexInput = input<number | null>(0, { alias: 'tabIndex' });\n\n /** Tab index of the select, `-1` while it is disabled. A value that is not an integer keeps the last valid one. */\n get tabIndex(): number | null {\n return this.resolvedTabIndex();\n }\n\n private readonly validTabIndex = linkedSignal<number | null, number | null>({\n source: () => this.tabIndexInput(),\n computation: (value, previous) => (Number.isInteger(value) || value === null ? value : (previous?.value ?? 0))\n });\n\n /** @docs-private */\n readonly disabledInput = input<boolean, boolean | string | null | undefined>(false, {\n alias: 'disabled',\n transform: booleanAttribute\n });\n\n /** Whether the select is disabled. Also set by the bound form control. */\n readonly disabled = linkedSignal(() => this.disabledInput());\n\n // One signal per host value. The host bindings of every tree-select in a view run in that view's reactive\n // consumer, where a signal read again by another binding costs a scan of everything the view has read.\n private readonly resolvedTabIndex = computed(() => (this.disabled() ? -1 : this.validTabIndex()));\n private readonly resolvedAriaLabel = computed(() =>\n this.resolvedAriaLabelledby() ? null : this.ariaLabel() || this.placeholder() || null\n );\n /** @internal */\n protected readonly disabledAttribute = computed(() => this.disabled() || null);\n /** @internal */\n protected readonly disabledClass = computed(() => this.disabled());\n /** @internal */\n protected readonly invalidClass = computed(() => this.errorState());\n\n /** @docs-private */\n readonly selectAllHandlerInput = input<\n ((event: KeyboardEvent, select: KbqTreeSelect<T>) => void) | undefined,\n ((event: KeyboardEvent, select: KbqTreeSelect<T>) => void) | undefined\n >(undefined, {\n alias: 'selectAllHandler',\n transform: kbqSelectAllHandlerTransform\n });\n\n /**\n * Function for handling the combination Ctrl + A (select all). By default, the internal handler is used.\n */\n get selectAllHandler(): (event: KeyboardEvent, select: KbqTreeSelect<T>) => void {\n return this.selectAllHandlerInput() ?? this.defaultSelectAllHandler;\n }\n\n /** Function for handling the combination Ctrl + A (select all). By default, the internal handler is used. */\n private defaultSelectAllHandler(event: KeyboardEvent, select: KbqTreeSelect<T>): void {\n const searchInput = isInput(event) ? (event.target as HTMLInputElement) : null;\n\n if (shouldSelectSearchText(searchInput)) {\n searchInput!.select();\n event.preventDefault();\n\n return;\n }\n\n event.preventDefault();\n\n // With the master checkbox on screen the shortcut has to behave exactly like clicking it,\n // otherwise the same action would leave the checkbox showing something the selection contradicts.\n // `onSelectAll` is emitted by the tree subscription set up in `ngAfterContentInit`.\n select.tree()!.selectAllOptions(select.selectAll() || select.selectAllToggle());\n }\n\n private readonly focusedValue = signal(false);\n private readonly panelOpenValue = signal(false);\n\n /** Whether the select is focused. */\n readonly focused = computed(() => this.focusedValue() || this.panelOpenValue());\n\n /** Whether multiple choice is enabled or not. True if multiple or multiline */\n get multiSelection(): boolean {\n return this.multiple || this.multiline();\n }\n\n /**\n * Minimum width of the panel.\n * If minWidth is larger than window width, it will be ignored.\n */\n readonly panelMinWidth = input<KbqPanelMinWidth, unknown>(\n this.defaultOptions?.panelMinWidth === undefined\n ? KBQ_PANEL_DEFAULT_MIN_WIDTH\n : this.defaultOptions.panelMinWidth,\n { transform: numberAttribute }\n );\n\n /** Origin for the overlay panel. */\n protected overlayOrigin?: CdkOverlayOrigin | ElementRef;\n\n /**\n * Width of the panel. If set to `auto`, the panel will match the trigger width, but will never be\n * narrower than `panelMinWidth`. If set to null or an empty string, the panel will grow to match the\n * longest option's text. Any other value is used as an exact width, and `panelMinWidth` is not applied.\n */\n readonly panelWidth = input<KbqPanelWidth>(this.defaultOptions?.panelWidth ?? null);\n\n /**\n * Maximum width of the panel in pixels. Caps how far the panel grows with its content — it never makes\n * the panel narrower than the trigger, and never clamps an explicit `panelWidth`.\n * When null, the `--kbq-panel-size-width-max` token applies.\n */\n readonly panelMaxWidth = input<KbqPanelMaxWidth, unknown>(\n this.defaultOptions?.panelMaxWidth === undefined ? null : this.defaultOptions.panelMaxWidth,\n { transform: numberAttribute }\n );\n\n /**\n * Maximum height of the panel's scrollable option list, in pixels. Applied as the\n * `--kbq-select-panel-size-max-height` custom property on the panel.\n *\n * The search field and the footer sit outside the scrollable area and add to the panel's total height.\n * When null, the token default (256px) applies.\n */\n readonly panelMaxHeight = input<KbqPanelMaxHeight, unknown>(\n this.defaultOptions?.panelMaxHeight === undefined ? null : this.defaultOptions.panelMaxHeight,\n { transform: numberAttribute }\n );\n\n /**\n * `panelMaxHeight` rendered as a CSS length for the `--kbq-select-panel-size-max-height` token.\n * A non-finite value (e.g. `null`) leaves the stylesheet default in place.\n *\n * @docs-private\n */\n protected readonly panelMaxHeightToken = computed(() => kbqResolvePanelMaxHeightToken(this.panelMaxHeight()));\n\n /**\n * Controls when the search functionality is displayed based on the number of available options.\n *\n * Automatically enables search hiding if value provided, even if `defaultOptions.searchMinOptionsThreshold` is provided.\n * Defaults to `undefined`.\n */\n readonly searchMinOptionsThreshold = computed<number | undefined>(\n () =>\n this.resolveSearchMinOptionsThreshold(this.searchMinOptionsThresholdInput()) ??\n this.resolveSearchMinOptionsThreshold(this.defaultOptions?.searchMinOptionsThreshold)\n );\n\n /** @docs-private */\n readonly searchMinOptionsThresholdInput = input<'auto' | number | undefined>(undefined, {\n alias: 'searchMinOptionsThreshold'\n });\n\n get panelOpen(): boolean {\n return this.panelOpenValue();\n }\n\n /** Whether the overlay panel is currently on screen. Part of the `KbqSiblingPopup` contract. */\n get isAttached(): boolean {\n return this.panelOpenValue();\n }\n\n /**\n * Whether the cleaner (clear button) should be shown.\n *\n * @docs-private\n */\n get canShowCleaner(): boolean {\n return !!this.cleaner()?.canShow;\n }\n\n /**\n * Whether the cleaner still has a node to remove.\n *\n * @docs-private\n */\n get canClear(): boolean {\n return !!this.selectionModel?.selected.some((node) => runClearPredicate(this.clearPredicate(), node));\n }\n\n /** Selected nodes the cleaner removes, in selection order. */\n private get clearTargets(): T[] {\n return this.selectionModel?.selected.filter((node) => runClearPredicate(this.clearPredicate(), node)) ?? [];\n }\n\n /**\n * The tree answers for any node; the option is asked only for its own `[disabled]` input, and a\n * node inside a collapsed branch has no option to ask.\n */\n private isNodeDisabled(node: T): boolean {\n const tree = this.tree();\n\n if (!tree) return false;\n\n if (tree.disabled || tree.treeControl.isDisabled(node)) return true;\n\n return tree.renderedOptions.find((option) => option.data === node)?.disabled ?? false;\n }\n\n /**\n * Colour of the trigger's tags and arrow.\n *\n * @docs-private\n */\n readonly colorForState = computed<KbqComponentColors>(() =>\n this.errorState() ? KbqComponentColors.Error : KbqComponentColors.ContrastFade\n );\n\n /** Full set of classes for the panel: base class, form-field theme and custom `panelClass`. */\n protected readonly panelClasses = computed<string>(() => {\n const panelClass = this.panelClass();\n const formFieldColor = this.parentFormField?.color();\n const classes = ['kbq-tree-select__panel', formFieldColor ? `kbq-${formFieldColor}` : ''];\n\n if (typeof panelClass === 'string') {\n classes.push(panelClass);\n } else if (Array.isArray(panelClass) || panelClass instanceof Set) {\n classes.push(...panelClass);\n } else if (panelClass) {\n classes.push(...Object.keys(panelClass).filter((key) => panelClass[key]));\n }\n\n return classes.filter(Boolean).join(' ');\n });\n\n /** Text of the counter of the items that do not fit into the trigger. */\n protected readonly hiddenItemsLabel = computed<string>(() =>\n this.hiddenItemsTextFormatter()(\n this.hiddenItemsText() ?? this.localeConfiguration().hiddenItemsText,\n this.hiddenItems()\n )\n );\n\n /**\n * Accessible name of the combobox.\n *\n * A combobox takes its name from the author only, so the placeholder rendered inside the trigger does\n * not name it. Falling back to the placeholder text keeps a control that was given neither an\n * `aria-label` nor an `aria-labelledby` from being announced blank — the shape every consumer in the\n * repository is in. Left off while `aria-labelledby` is set, which outranks `aria-label` anyway.\n */\n protected get ariaLabelText(): string | null {\n return this.resolvedAriaLabel();\n }\n\n isEmptySearchResult: boolean;\n\n triggerValues: KbqTreeSelectTriggerValue[] = [];\n\n private closeSubscription = Subscription.EMPTY;\n\n /** The scroll offset the panel is restored to when it attaches — the list always opens at the top. */\n private scrollTop = 0;\n\n /** Unique id for this input. */\n private readonly uid = `kbq-tree-select-${nextUniqueId++}`;\n\n /** Id of the overlay panel, referenced by the host's `aria-controls`. */\n protected readonly panelId = `${this.uid}-panel`;\n\n /**\n * Whether projected content has been resolved. The search field reaches its form control through\n * its own form field, and that is only guaranteed to have been wired by `ngAfterContentInit`.\n */\n private readonly contentInitialized = signal(false);\n\n /**\n * The last value the form wrote while the tree could not resolve all of it yet — before the content was\n * initialized, or before the data held every node it names. Applied again as the data changes, until every node\n * is found or the selection is reported to the form.\n */\n private pendingValue: { value: any } | null = null;\n\n /** The data nodes {@link pendingValue} was last resolved against. */\n private pendingValueDataNodes: readonly unknown[] | null = null;\n\n /** Whether the selection is being set to a value the form wrote, which is no change to report back. */\n private writingValue = false;\n\n /** Handles of the timers that outlive the call that scheduled them. */\n private readonly pendingTimers = new Set<ReturnType<typeof setTimeout>>();\n\n private readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n super();\n\n // The selection model is created with the multiplicity of the first binding and cannot follow a change.\n effect(() => {\n const multiple = this.multipleInput();\n\n if (this.multipleValue !== undefined && multiple !== this.multipleValue) {\n throw getKbqSelectDynamicMultipleError();\n }\n });\n\n // A disabled select reports no focus to its form field.\n let wasDisabled = false;\n\n effect(() => {\n const disabled = this.disabled();\n\n if (disabled === wasDisabled) return;\n\n wasDisabled = disabled;\n\n const formField = this.parentFormField;\n\n if (formField) {\n Promise.resolve().then(() =>\n this.disabled() ? formField.stopFocusMonitor() : formField.runFocusMonitor()\n );\n }\n });\n\n // The tree owns the \"select all\" row — it is the only place that can put it in front of the nodes\n // and into the key manager's list. Mirrored through an effect rather than assigned once in\n // `ngAfterContentInit` so a `[selectAll]` bound to a changing expression keeps working.\n effect(() => {\n const tree = this.tree();\n\n if (tree) {\n tree.selectAll = this.selectAll();\n }\n });\n\n // `search` is projected content and can come and go with an `@if`, so both the wiring that\n // follows it and the flag the tree reads on blur have to be re-applied, not read once.\n // Gated on content init because the search reaches its control through its own form field,\n // which is only guaranteed to have resolved by then.\n effect((onCleanup) => {\n const tree = this.tree();\n const search = this.search();\n\n if (!tree || !this.contentInitialized()) return;\n\n tree.optionShouldHoldFocusOnBlur = !!search;\n\n if (!search) return;\n\n const subscription = this.subscribeOnSearchChanges(tree, search);\n\n onCleanup(() => subscription?.unsubscribe());\n });\n\n this.destroyRef.onDestroy(() => {\n this.pendingTimers.forEach(clearTimeout);\n this.pendingTimers.clear();\n });\n\n if (this.ngControl) {\n // Note: we provide the value accessor through here, instead of\n // the `providers` to avoid running into a circular import.\n this.ngControl.valueAccessor = this;\n }\n\n afterNextRender(() => {\n if (this.multiple && !this.multiline()) {\n merge(fromEvent(this.window, 'resize'), this.tags.changes)\n .pipe(delay(0), debounceTime(50), takeUntilDestroyed(this.destroyRef))\n .subscribe(this.calculateHiddenItems);\n }\n });\n }\n\n ngOnInit() {\n // Only the latest report of a frame is delivered, so a close and a reopen within one frame repeat the\n // state delivered before; `distinctUntilChanged` keeps `openedChange` from emitting it twice.\n this.panelDoneAnimatingStream\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n if (this.panelOpen) {\n this.scheduleTimeout(() => {\n this.highlightCorrectOption();\n\n const search = this.search();\n\n if (search) {\n search.focus();\n }\n });\n\n this.scrollbarViewport()?.flashScrollIndicators();\n\n this.openedChange.emit(true);\n } else {\n this.openedChange.emit(false);\n this.overlayDir.offsetX = 0;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n ngDoCheck() {\n if (this.ngControl) {\n this.updateErrorState();\n }\n }\n\n ngAfterContentInit() {\n const tree = this.tree()!;\n\n if (!tree) return;\n\n tree.resetFocusedItemOnBlur = false;\n\n this.multipleValue = this.multipleInput();\n this.selectionModel = new SelectionModel<T>(this.multiSelection);\n\n this.syncSelectionState();\n\n this.selectionModel.changed.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.syncSelectionState();\n\n // Neither a written value nor the tree re-pointing the selection at reloaded data is the user's change.\n if (!this.writingValue && !tree.syncingSelection) {\n this.reportValue();\n }\n\n if (this.multiSelection) {\n this.refreshTriggerValues();\n }\n\n // The trigger renders the selection, whichever way it changed (a click, `writeValue`, select all).\n this.changeDetectorRef.markForCheck();\n });\n\n this.selectionModel.changed.pipe(delay(0), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n // A multiline trigger grows with every selected option, and this is the one signal guaranteed\n // to arrive for it. A single-row trigger keeps its height, so there is nothing to re-anchor.\n this.updatePanelAnchor();\n this.setOverlayPosition();\n });\n\n // Hands the tree the model this component owns. Re-running `tree.ngAfterContentInit()` was the\n // old way of doing it and left the tree with a second set of subscribers on query lists that are\n // never re-created — every options change handled twice, for the lifetime of the component.\n tree.initializeForEmbedding(this.selectionModel);\n\n tree.renderedOptions.changes.pipe(delay(0), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n // A value written ahead of its data, such as one loaded over HTTP, is applied once the nodes arrive.\n if (this.pendingValue && tree.treeControl.dataNodes !== this.pendingValueDataNodes) {\n this.applyPendingValue();\n }\n\n // Options render after the first value reaches the control, so the trigger is built before any\n // of them exists and its `disabled` flags can be stale.\n if (this.multiSelection && this.hasStaleTriggerValues()) {\n this.refreshTriggerValues();\n }\n });\n\n this.initKeyManager();\n\n this.options = tree.renderedOptions;\n tree.autoSelect = this.autoSelect;\n\n // Single place the event is raised, so a click on the master checkbox and Ctrl/Cmd + A — which\n // both go through `selectAllOptions` — emit exactly once and with the same payload.\n outputToObservable(tree.selectAllChange)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ options }) =>\n this.onSelectAll.emit(new KbqSelectAllEvent(this, options, tree.allOptionsSelected))\n );\n\n // Tree lives inside the select panel: enable hover-to-focus on options even without a\n // wrapping form-field (e.g. filter-bar pipes render the tree-select bare).\n tree.inSelect = true;\n\n if (tree.multipleMode === null && this.multiSelection) {\n tree.multipleMode = MultipleMode.CHECKBOX;\n }\n\n if (this.multiSelection) {\n tree.noUnselectLast = false;\n }\n\n // A missing value written ahead of the content leaves the selection as empty as it starts.\n if (this.pendingValue?.value === null || this.pendingValue?.value === undefined) {\n this.pendingValue = null;\n }\n\n this.applyPendingValue();\n\n this.userInteractionChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (!this.multiSelection && this.panelOpen) {\n this.close();\n\n Promise.resolve().then(() => this.focus());\n }\n });\n\n tree.selectionChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n this.selectionChange.emit(new KbqTreeSelectChange(this, event.option, false, event.options));\n\n const search = this.search();\n\n // Guarded the same way every other refocus in the component is: with the field hidden by\n // `searchMinOptionsThreshold` there is nothing to give the caret back to.\n if (search && this.shouldShowSearch()) {\n search.focus();\n }\n });\n\n if (!this.multiSelection) {\n this.selectionModel.changed\n .pipe(\n filter(({ added }) => !!added.length),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(({ added }) => {\n this.tree()!.keyManager.setFocusOrigin('program');\n this.tree()!.keyManager.setActiveItem(this.options.find(({ data }) => data === added[0]) as any);\n });\n }\n\n this.contentInitialized.set(true);\n this.optionsInitialized.next();\n this.optionsInitialized.complete();\n }\n\n ngAfterViewInit() {\n const tree = this.tree()!;\n\n if (!tree) return;\n\n tree.treeControl.expansionModel.changed\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.setOverlayPosition());\n }\n\n ngAfterViewChecked(): void {\n // Syncs the list here so `changes` emits once this view is checked.\n this.tagsList();\n }\n\n ngOnDestroy() {\n this.panelDoneAnimatingStream.complete();\n this.openedChange.complete();\n this.closeSubscription.unsubscribe();\n this.unsubscribeFromPanelResize();\n }\n\n updateErrorState() {\n this.errorStateTracker.errorStateMatcher = this.errorStateMatcher();\n this.errorStateTracker.updateErrorState();\n }\n\n /**\n * Clears the nodes `clearPredicate` accepts; disabled ones are kept by default.\n *\n * Deselects on the model directly: `tree.setOptionsFromValues([])` starts by clearing the whole\n * model and would take the kept nodes with it.\n *\n * @docs-private\n */\n clear(): void {\n untracked(() => {\n const targets = this.clearTargets;\n\n this.selectionModel.deselect(...targets);\n this.tree()!.keyManager.setActiveItem(-1);\n this.changeDetectorRef.detectChanges();\n\n this.reportValue();\n this.selectionChange.emit(new KbqTreeSelectChange(this, null, false, targets));\n });\n }\n\n /** Reports the selection to the form, which then holds it instead of a value still waiting for its nodes. */\n private reportValue(): void {\n this.pendingValue = null;\n this.onChange(this.selectedValues);\n }\n\n /**\n * Called when the value changes. Needed to properly implement `ControlValueAccessor`.\n *\n * @docs-private\n */\n onChange: (value: any) => void = () => {};\n\n /**\n * Called when the control is blurred. Needed to properly implement `ControlValueAccessor`.\n *\n * @docs-private\n */\n onTouched = () => {};\n\n /** Host click handler. A custom matcher that opts out of the default handlers takes it over. */\n protected handleClick() {\n const customMatcher = this.customMatcher();\n\n if (customMatcher && !customMatcher.useDefaultHandlers()) return;\n\n this.toggle();\n }\n\n toggle(): void {\n // Untracked, like the other imperative methods: called from a consumer's `effect()`, the state read on the\n // way — `panelOpen`, `disabled`, the options, the inputs — would make the effect run again on every open\n // and close.\n untracked(() => {\n if (this.panelOpen) {\n this.close();\n } else {\n this.open();\n }\n });\n }\n\n open(): void {\n untracked(() => this.attachPanel());\n }\n\n private attachPanel(): void {\n if (this.disabled() || !this.options || this.panelOpenValue()) return;\n\n if (!this.options.length && !this.noOptionsMessage()) return;\n\n // add check for form-field bounding rectangles, since it adds extra padding around the trigger\n this.triggerRect = (\n this.parentFormField?.getConnectedOverlayOrigin().nativeElement || this.trigger().nativeElement\n ).getBoundingClientRect();\n\n // Note: The computed font-size will be a string pixel value (e.g. \"16px\").\n // `parseInt` ignores the trailing 'px' and converts this to a number.\n this.triggerFontSize = parseInt(this.window.getComputedStyle(this.trigger().nativeElement)['font-size']);\n\n // It's important that we read this as late as possible, because doing so earlier will\n // return a different element since it's based on queries in the form field which may\n // not have run yet. Also this needs to be assigned before we measure the overlay width.\n if (this.parentFormField) {\n this.overlayOrigin = this.parentFormField.getConnectedOverlayOrigin();\n }\n\n this.updateOverlayWidth(this.panelWidth(), this.panelMinWidth(), this.overlayOrigin ?? this.elementRef);\n\n this.panelOpenValue.set(true);\n\n this.changeDetectorRef.markForCheck();\n\n // Set the font size on the panel element once it exists.\n afterNextRender(\n () => {\n if (this.triggerFontSize && this.overlayDir.overlayRef && this.overlayDir.overlayRef.overlayElement) {\n this.overlayDir.overlayRef.overlayElement.style.fontSize = `${this.triggerFontSize}px`;\n }\n\n if (this.search()) {\n this.lockOverlayWidthForSearch(this.panel());\n }\n },\n { injector: this.injector }\n );\n\n this.reportPanelRendered('showing');\n }\n\n /** Closes the overlay panel and focuses the host element. */\n close(): void {\n untracked(() => {\n if (!this.panelOpenValue()) {\n return;\n }\n\n this.panelOpenValue.set(false);\n this.unsubscribeFromPanelResize();\n // Back to the two default sides, so the next open is not resolved against a first row that has since\n // changed height.\n this.positions = this.withOverlapPosition(this.positions, null) ?? this.positions;\n\n this.changeDetectorRef.markForCheck();\n this.onTouched();\n\n const search = this.search();\n\n if (search) {\n search.reset();\n }\n\n this.reportPanelRendered('void');\n });\n }\n\n /**\n * Reports the panel rendered or removed once the next render has applied `panelOpen`; only the latest\n * report of a frame is delivered.\n */\n private reportPanelRendered(state: 'showing' | 'void'): void {\n this.panelRender?.destroy();\n\n // The overlay detaching while the select is destroyed closes it too.\n if (this.destroyRef.destroyed) return;\n\n this.panelRender = afterNextRender(() => this.panelDoneAnimatingStream.next(state), {\n injector: this.injector\n });\n }\n\n /**\n * Sets the select's value. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param value New value to be written to the model.\n */\n writeValue(value: any): void {\n // Untracked: a form control set from an `effect()` writes here synchronously.\n untracked(() => {\n this.pendingValue = { value };\n\n // Until then the select has no selection model shared with the tree, and `ngAfterContentInit` applies it.\n if (this.contentInitialized()) {\n this.applyPendingValue();\n }\n });\n }\n\n /** Applies the value the form wrote last, and lets it go once the data holds every node it names. */\n private applyPendingValue(): void {\n const pending = this.pendingValue;\n const treeControl = this.tree()?.treeControl;\n\n if (!pending || !treeControl) return;\n\n // Dropped first, so a value that throws is not applied again with every change of the data.\n this.pendingValue = null;\n this.pendingValueDataNodes = treeControl.dataNodes;\n this.setSelectionByValue(pending.value);\n\n const { value } = pending;\n const values: any[] =\n value === null || value === undefined ? [] : this.multiSelection && Array.isArray(value) ? value : [value];\n\n // Unless another value was written meanwhile.\n if (this.pendingValue === null && !values.every((item) => treeControl.hasValue(item))) {\n this.pendingValue = pending;\n }\n }\n\n /**\n * Saves a callback function to be invoked when the select's value\n * changes from user input. Part of the ControlValueAccessor interface\n * required to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the value changes.\n */\n registerOnChange(fn: (value: any) => void) {\n this.onChange = fn;\n }\n\n /**\n * Saves a callback function to be invoked when the select is blurred\n * by the user. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param fn Callback to be triggered when the component has been touched.\n */\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n /**\n * Disables the select. Part of the ControlValueAccessor interface required\n * to integrate with Angular's core forms API.\n *\n * @param isDisabled Sets whether the component is disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled.set(isDisabled);\n }\n\n get selected(): T | T[] {\n return this.multiSelection ? this.selectionModel?.selected : this.selectionModel?.selected[0];\n }\n\n get selectedValues(): any {\n const selectedValues = this.selectionModel.selected.map((value) => this.tree()!.treeControl.getValue(value));\n\n return this.multiSelection ? selectedValues : selectedValues[0];\n }\n\n get triggerValue(): string {\n if (this.empty()) {\n return '';\n }\n\n // Shown in single selection, where `selected` is the node.\n return this.tree()!.treeControl.getViewValue(this.selected as T);\n }\n\n private readonly emptyValue = signal(true);\n\n /** Whether no node is selected. */\n readonly empty = this.emptyValue.asReadonly();\n\n /** First selected node that is not disabled — the one the panel highlights when it opens. */\n protected get firstSelected(): T | undefined {\n return this.selectionModel.selected.filter((node) => !this.tree()!.treeControl.isDisabled(node))[0];\n }\n\n /**\n * Host keydown handler, routing the event to the trigger or the panel handler. A custom matcher\n * that opts out of the default handlers reaches those two directly instead.\n */\n protected handleKeydown(event: KeyboardEvent) {\n const customMatcher = this.customMatcher();\n\n if (customMatcher && !customMatcher.useDefaultHandlers()) return;\n\n if (!this.disabled()) {\n if (this.panelOpen) {\n this.panelKeydownHandler(event);\n } else {\n this.triggerKeydownHandler(event);\n }\n }\n }\n\n onFocus() {\n const customMatcher = this.customMatcher();\n\n if (customMatcher && !customMatcher.useDefaultHandlers()) return;\n\n if (!this.disabled()) {\n this.focusedValue.set(true);\n }\n }\n\n /**\n * Calls the touched callback only if the panel is closed. Otherwise, the trigger will\n * \"blur\" to the panel when it opens, causing a false positive.\n */\n onBlur() {\n const customMatcher = this.customMatcher();\n\n if (customMatcher && !customMatcher.useDefaultHandlers()) return;\n\n this.focusedValue.set(false);\n\n if (!this.disabled() && !this.panelOpen) {\n this.onTouched();\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /** Callback that is invoked when the overlay panel has been attached. */\n onAttached() {\n // `cdkConnectedOverlay` creates and attaches the overlay in one go, so this is the first point it exists.\n this.overlayLayers.adopt(this.overlayDir.overlayRef, this.elementRef.nativeElement);\n\n this.overlayDir.positionChange.pipe(take(1)).subscribe(() => {\n this.changeDetectorRef.detectChanges();\n this.setOverlayPosition();\n // The panel itself is an `overflow: hidden` box; the option list is what scrolls.\n this.scrollbarViewport()?.scrollTo({ top: this.scrollTop });\n\n this.tree()!.updateScrollSize();\n // Deliberately out of this frame — see `reanchorPanel`. A microtask still lands before paint.\n queueMicrotask(() => this.reanchorPanel());\n });\n\n this.subscribeToPanelResize();\n\n // This runs on every open, so without dropping the previous subscription every open would add\n // another one and a single outside click would call `close()` once per open so far.\n this.closeSubscription.unsubscribe();\n this.closeSubscription = this.closingActions().subscribe(() => this.close());\n }\n\n /** Element the overlay is positioned and sized against. */\n protected getOverlayOriginElement(): HTMLElement | undefined {\n return this.parentFormField?.getConnectedOverlayOrigin().nativeElement ?? this.trigger()?.nativeElement;\n }\n\n protected isPanelOpen(): boolean {\n return this.panelOpenValue();\n }\n\n focus() {\n this.elementRef.nativeElement.focus();\n }\n\n /**\n * Implemented as part of KbqFormFieldControl.\n *\n * @docs-private\n */\n onContainerClick() {\n this.focus();\n }\n\n /** Removes an option from the selection through the trailing icon of its tag in the trigger. */\n onRemoveSelectedOption(selectedOption: KbqTreeSelectTriggerValue, $event: Event): void {\n $event.stopPropagation();\n\n // Only removable tags render the icon, so this is also the index of the icon among them.\n const removedIndex = this.triggerValues\n .filter(({ disabled }) => !disabled)\n .findIndex(({ value }) => value === selectedOption.value);\n\n const removed = this.selectionModel.selected.find(\n (node) => this.tree()!.treeControl.getValue(node) === selectedOption.value\n );\n\n if (removed !== undefined) {\n this.selectionModel.deselect(removed);\n }\n\n this.selectionChange.emit(\n new KbqTreeSelectChange(\n this,\n this.options.find((option) => option.value === selectedOption.value) || selectedOption.value\n )\n );\n\n this.reportValue();\n\n this.restoreFocusAfterRemoval(removedIndex);\n }\n\n /**\n * Takes the focus off the remove icon that has just been destroyed along with its tag.\n *\n * The trigger is rebuilt synchronously — `selectionModel.changed` runs `refreshTriggerValues()`,\n * which calls `detectChanges()` — so by the time the click handler returns the icon the keyboard was\n * on is gone and the focus has fallen back to the document body. Hands it to the icon that took the\n * removed tag's place, or to the control itself once no removable tag is left.\n */\n private restoreFocusAfterRemoval(removedIndex: number): void {\n const removeIcons: NodeListOf<HTMLElement> = this.trigger().nativeElement.querySelectorAll('[kbqTagRemove]');\n const next = removeIcons[Math.min(removedIndex, removeIcons.length - 1)];\n\n if (next) {\n next.focus();\n } else {\n this.focus();\n }\n }\n\n /**\n * Recounts the tags of the trigger that do not fit on its first line and refreshes the \"+N\"\n * counter. Runs on window resize and whenever the rendered tags change.\n *\n * @docs-private\n */\n protected calculateHiddenItems = () => {\n if (\n !this.isBrowser ||\n this.customTrigger() ||\n this.customMatcher() ||\n this.empty() ||\n !this.multiple ||\n this.multiline()\n )\n return;\n\n const { totalItemsWidth, visibleItems } = this.measureMatcherItems();\n\n this.hiddenItems.set(this.selectionModel.selected.length - visibleItems);\n this.changeDetectorRef.detectChanges();\n\n if (this.hiddenItems()) {\n const itemsCounter = this.trigger().nativeElement.querySelector('.kbq-select__match-hidden-text');\n const matcherList = this.trigger().nativeElement.querySelector('.kbq-select__match-list');\n\n if (!itemsCounter || !matcherList) return;\n\n const itemsCounterShowed = itemsCounter.offsetTop < itemsCounter.offsetHeight;\n const itemsCounterWidth: number = Math.floor(itemsCounter.getBoundingClientRect().width);\n\n const matcherListWidth: number = Math.floor(matcherList.getBoundingClientRect().width);\n const matcherWidth: number = matcherListWidth + (itemsCounterShowed ? itemsCounterWidth : 0);\n\n if (itemsCounterShowed && totalItemsWidth < matcherWidth) {\n this.hiddenItems.set(0);\n this.changeDetectorRef.detectChanges();\n }\n }\n };\n\n triggerKeydownHandler(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const isArrowKey =\n keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;\n const isOpenKey = keyCode === ENTER || keyCode === SPACE;\n\n // Open the select on ALT + arrow key to match the native <select>\n const tree = this.tree()!;\n\n if (isOpenKey || ((this.multiSelection || event.altKey) && isArrowKey)) {\n // prevents the page from scrolling down when pressing space\n event.preventDefault();\n\n this.open();\n } else if (!this.multiSelection && tree.keyManager && tree.keyManager.onKeydown) {\n tree.keyManager.onKeydown(event);\n }\n }\n\n panelKeydownHandler(event: KeyboardEvent) {\n const keyCode = event.keyCode;\n const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;\n\n const tree = this.tree()!;\n\n if ((isArrowKey && event.altKey) || keyCode === ESCAPE) {\n // Close the select on ALT + arrow key to match the native <select>\n event.preventDefault();\n\n // Prevent ESCAPE from bubbling to ancestor (when inside overlay)\n if (keyCode === ESCAPE) {\n event.stopPropagation();\n }\n\n this.close();\n this.focus();\n } else if (keyCode === TAB) {\n // Deliberately not `preventDefault`-ed. Closing the panel and pulling the focus back to the\n // host is all this control has to do; the browser then moves on to the next control the way\n // Tab always does. Swallowing the key trapped the focus inside an open select.\n this.close();\n this.focus();\n } else if (keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW) {\n tree.handleKeydown(event);\n\n // LEFT_ARROW moves focus to the parent option when the active one is already collapsed,\n // so the search field has to be given the caret back, the same way the other keys do below.\n const search = this.search();\n\n if (search && this.shouldShowSearch()) {\n search.focus();\n }\n\n return;\n } else if (keyCode === HOME) {\n event.preventDefault();\n\n this.tree()!.keyManager.setFirstItemActive();\n } else if (keyCode === END) {\n event.preventDefault();\n\n this.tree()!.keyManager.setLastItemActive();\n } else if (keyCode === PAGE_UP) {\n event.preventDefault();\n\n this.tree()!.keyManager.setPreviousPageItemActive();\n } else if (keyCode === PAGE_DOWN) {\n event.preventDefault();\n\n this.tree()!.keyManager.setNextPageItemActive();\n } else if ((keyCode === ENTER || keyCode === SPACE) && tree.keyManager.activeItem) {\n event.preventDefault();\n\n if (!this.autoSelect) {\n tree.handleKeydown(event);\n } else {\n this.close();\n this.focus();\n }\n } else if (this.multiSelection && isSelectAll(event)) {\n this.selectAllHandler(event, this);\n } else {\n const previouslyFocusedIndex = tree.keyManager.activeItemIndex;\n\n tree.keyManager.setFocusOrigin('keyboard');\n tree.keyManager.onKeydown(event);\n\n if (\n this.multiSelection &&\n isArrowKey &&\n event.shiftKey &&\n tree.keyManager.activeItem &&\n tree.keyManager.activeItemIndex !== previouslyFocusedIndex\n ) {\n tree.keyManager.activeItem.selectViaInteraction(event);\n }\n\n if (this.autoSelect && tree.keyManager.activeItem) {\n tree.setSelectedOptionsByKey(\n tree.keyManager.activeItem,\n hasModifierKey(event, 'shiftKey'),\n // ctrlKey is for Windows, metaKey is for MacOS\n hasModifierKey(event, 'ctrlKey', 'metaKey')\n );\n }\n\n // Ensure the active option's keyboard-focus indicator is shown even when the\n // index didn't change (e.g. ArrowDown on a single-option list) — without this\n // setActiveItem isn't invoked and the focus stays on the trigger.\n if (isArrowKey && tree.keyManager.activeItemIndex === previouslyFocusedIndex) {\n tree.keyManager.activeItem?.focus('keyboard');\n }\n\n const search = this.search();\n\n if (search && this.shouldShowSearch()) {\n search.focus();\n }\n }\n }\n\n /** @docs-private */\n protected shouldShowSearch(): boolean {\n // `options`/`renderedOptions` leads with the \"select all\" row when it is on, and the row is\n // added to it on a separate, later-processed reactive pass than the one behind `nodesCount` —\n // reading the tree's own authoritative node count instead of subtracting from `options.length`\n // sidesteps that race entirely, rather than risking the two going momentarily out of step.\n const optionsCount = this.tree()?.nodesCount ?? this.options.length;\n\n return (\n isUndefined(this.searchMinOptionsThreshold()) ||\n !!this.search()?.value() ||\n optionsCount >= this.searchMinOptionsThreshold()!\n );\n }\n\n /**\n * Runs `callback` after the current task, keeping the handle so that destroying the component\n * cancels it. A timer left to fire after teardown runs against a component that is already gone.\n */\n private scheduleTimeout(callback: () => void): void {\n const handle = setTimeout(() => {\n this.pendingTimers.delete(handle);\n callback();\n });\n\n this.pendingTimers.add(handle);\n }\n\n private closingActions() {\n const backdrop = this.overlayDir.overlayRef!.backdropClick();\n const outsidePointerEvents = this.overlayDir\n .overlayRef!.outsidePointerEvents()\n .pipe(filter((event) => !this.elementRef.nativeElement.contains(_getEventTarget(event))));\n const detachments = this.overlayDir.overlayRef!.detachments();\n\n return merge(backdrop, outsidePointerEvents, detachments);\n }\n\n /**\n * Measures the tags of the matcher on an off-screen copy of the trigger.\n *\n * Two answers are needed — how many tags fit on the first line next to the \"+N\" counter, and how\n * wide all of them are together — and they used to cost a clone each. One clone is enough: it is\n * built, appended and removed once, and the only thing separating the two passes is the counter,\n * which the second pass drops from the copy.\n */\n private measureMatcherItems(): { totalItemsWidth: number; visibleItems: number } {\n const triggerClone = this.buildTriggerClone();\n const hiddenText = triggerClone.querySelector('.kbq-select__match-hidden-text');\n\n if (hiddenText) {\n this.renderer.setStyle(hiddenText, 'display', 'block');\n }\n\n this.renderer.appendChild(this.trigger().nativeElement, triggerClone);\n\n let visibleItems: number = 0;\n\n triggerClone.querySelectorAll<HTMLElement>('kbq-tag').forEach((item) => {\n if (item.offsetTop < item.offsetHeight) {\n visibleItems++;\n }\n });\n\n hiddenText?.remove();\n\n let totalItemsWidth: number = 0;\n\n triggerClone\n .querySelectorAll<HTMLElement>('kbq-tag')\n .forEach((item) => (totalItemsWidth += this.getItemWidth(item)));\n\n triggerClone.remove();\n\n return { totalItemsWidth, visibleItems };\n }\n\n private buildTriggerClone(): HTMLDivElement {\n const triggerClone = this.trigger().nativeElement.cloneNode(true);\n\n this.renderer.setStyle(triggerClone, 'position', 'absolute');\n this.renderer.setStyle(triggerClone, 'visibility', 'hidden');\n this.renderer.setStyle(triggerClone, 'top', '-100%');\n this.renderer.setStyle(triggerClone, 'left', '0');\n\n return triggerClone;\n }\n\n /**\n * Width of a single `kbq-tag` in the matcher, including margins and the inter-tag gap.\n *\n * Tags are `border-box` and carry horizontal padding, which `getComputedStyle().width` — always\n * the used content-box width — leaves out. See the twin in `KbqSelect`.\n */\n private getItemWidth(element: HTMLElement): number {\n const computedStyle = this.window.getComputedStyle(element);\n\n const width: number = element.getBoundingClientRect().width;\n const marginLeft: number = parseFloat(computedStyle.marginLeft as string) || 0;\n const marginRight: number = parseFloat(computedStyle.marginRight as string) || 0;\n\n return width + marginLeft + marginRight + parseInt(SelectSizeMultipleContentGap);\n }\n\n /** Whether the trigger's tags still agree with the selection about which nodes are disabled. */\n private hasStaleTriggerValues(): boolean {\n const selected = this.selectionModel.selected;\n\n return (\n this.triggerValues.length === selected.length &&\n selected.some((node, index) => this.triggerValues[index].disabled !== this.isNodeDisabled(node))\n );\n }\n\n private refreshTriggerValues(): void {\n const treeControl = this.tree()!.treeControl;\n\n this.triggerValues = this.selectionModel.selected.map((node) => ({\n value: treeControl.getValue(node),\n viewValue: treeControl.getViewValue(node),\n // `treeControl` alone would miss a node disabled through the option's own input and give it\n // a remove icon — one-by-one removal of exactly what the cleaner keeps.\n disabled: this.isNodeDisabled(node)\n }));\n\n this.changeDetectorRef.detectChanges();\n }\n\n /**\n * Sets the selected option based on a value. If no option can be\n * found with the designated value, the select trigger is cleared.\n */\n private setSelectionByValue(value: any | any[]) {\n // Restored rather than cleared: a value written while this one is applied must not end the outer write.\n const wasWritingValue = this.writingValue;\n\n this.writingValue = true;\n\n try {\n if (this.multiSelection && value) {\n if (!Array.isArray(value)) {\n throw getKbqSelectNonArrayValueError();\n }\n\n this.tree()!.setOptionsFromValues(value);\n\n this.sortValues();\n } else {\n this.tree()!.setOptionsFromValues([value]);\n }\n } finally {\n this.writingValue = wasWritingValue;\n }\n\n this.changeDetectorRef.detectChanges();\n }\n\n private initKeyManager() {\n const tree = this.tree()!;\n\n // The select routes every key itself and calls back into `tree.handleKeydown` for the parts it\n // delegates, so the tree must not also act on the same event from its own host listener.\n tree.ownsKeyboard = false;\n\n // `panelKeydownHandler` forwards every unhandled key to the tree's key manager, and the search\n // field sits inside the panel — so its query would otherwise drive the tree's type-ahead.\n tree.typeAhead = !this.search();\n\n tree.keyManager.change.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n const treeValue = this.tree()!;\n\n if (this.panelOpenValue() && this.panel()) {\n this.scrollActiveOptionIntoView();\n } else if (\n !this.panelOpenValue() &&\n !this.multiSelection &&\n treeValue.keyManager.activeItem &&\n // The active option follows a written value, or the selection the tree re-pointed at reloaded data;\n // selecting it again would report it as the user's.\n !this.writingValue &&\n !treeValue.syncingSelection\n ) {\n treeValue.keyManager.activeItem.selectViaInteraction();\n }\n });\n }\n\n /**\n * Sorts the selected nodes by their order in the panel, collapsed branches included, or with `sortComparator`.\n * A node missing from the data sorts after every node in it.\n */\n private sortValues() {\n if (!this.multiSelection) return;\n\n const nodes = this.tree()!.treeControl.dataNodes ?? [];\n const sortComparator = this.sortComparator();\n\n if (sortComparator) {\n this.selectionModel.sort((a, b) => sortComparator(a, b, nodes));\n } else {\n // Indexed once: `indexOf` in the comparator would scan the whole data set on every comparison.\n const order = new Map(nodes.map((node, index) => [node, index]));\n const indexOf = (node: T) => order.get(node) ?? nodes.length;\n\n this.selectionModel.sort((a, b) => indexOf(a) - indexOf(b));\n }\n\n this.syncSelectionState();\n // The tags were built while the model emitted, ahead of the sort.\n this.refreshTriggerValues();\n }\n\n /** Mirrors the selection into the `value` and `empty` signals. */\n private syncSelectionState(): void {\n this.emptyValue.set(this.selectionModel.isEmpty());\n this.valueState.set(this.selectedValues);\n }\n\n /**\n * Highlights the selected item. If no option is selected, it will highlight\n * the first item instead.\n */\n private highlightCorrectOption() {\n const tree = this.tree()!;\n\n if (!tree.keyManager) {\n return;\n }\n\n const selectedOption = this.options.find((option) => option.data === this.firstSelected);\n\n tree.keyManager.setFocusOrigin('keyboard');\n\n if (selectedOption) {\n tree.keyManager.setActiveItem(selectedOption);\n } else {\n tree.keyManager.setFirstItemActive();\n\n if (tree.keyManager.activeItem?.disabled) {\n tree.keyManager.setActiveItem(-1);\n }\n }\n }\n\n private scrollActiveOptionIntoView() {\n this.tree()!.keyManager.activeItem?.focus();\n }\n\n /**\n * Keeps `isEmptySearchResult` in step with the search field.\n *\n * The flag is read back once the tree has had the chance to re-render for the new query. Waiting on\n * the rendered set alone is not enough: a query that filters nothing out leaves the option list —\n * and therefore its `changes` — silent, and the flag kept answering for the query before it. The\n * timer is the floor that covers that case.\n */\n private subscribeOnSearchChanges(tree: KbqTreeSelection, search: KbqSelectSearch): Subscription | undefined {\n const ngControl = search.ngControl;\n const valueChanges = ngControl?.valueChanges;\n\n if (!ngControl || !valueChanges) return;\n\n // Seeded rather than piped through `startWith`, which would open the gate below — and with it a\n // timer — before the user has typed anything.\n this.isEmptySearchResult = !!ngControl.value && tree.isEmpty;\n\n return valueChanges.pipe(audit(() => merge(tree.unorderedOptions.changes, timer(0)))).subscribe((value) => {\n this.isEmptySearchResult = !!value && tree.isEmpty;\n this.changeDetectorRef.markForCheck();\n });\n }\n}\n","<div\n #fallbackOverlayOrigin=\"cdkOverlayOrigin\"\n #trigger\n cdkOverlayOrigin\n class=\"kbq-select__trigger\"\n [class.kbq-select__trigger_empty]=\"empty()\"\n [class.kbq-select__trigger_multiline]=\"multiline()\"\n [class.kbq-select__trigger_multiple]=\"multiple\"\n [class.kbq-select__trigger_single]=\"!multiple\"\n>\n @if (!!customMatcher()) {\n <ng-content select=\"kbq-select-matcher, [kbq-select-matcher]\" />\n } @else {\n <div class=\"kbq-select__matcher\">\n @if (empty()) {\n <span class=\"kbq-select__placeholder\">\n {{ placeholder() || '\\u00A0' }}\n </span>\n } @else {\n @if (!!customTrigger()) {\n <ng-content select=\"kbq-select-trigger, [kbq-select-trigger]\" />\n } @else {\n <div class=\"kbq-select__match-container\">\n @if (multiSelection) {\n <div\n #multilineMatchList\n [class.kbq-select__match-list]=\"!multiline()\"\n [class.kbq-select__multiline-match-list]=\"multiline()\"\n >\n @if (!customTagTemplateRef()) {\n @for (option of triggerValues; track $index) {\n <kbq-tag\n [color]=\"colorForState()\"\n [disabled]=\"option.disabled || disabled()\"\n [selectable]=\"false\"\n >\n {{ option.viewValue }}\n @if (!option.disabled && !disabled()) {\n <!--\n `tabIndex` defaults to -1, because inside a tag list\n the tag itself is the tab stop. Here the tag stands on\n its own in the trigger, so the control has to opt in or\n it is left mouse-only.\n -->\n <i\n kbq-icon=\"kbq-xmark-s_16\"\n kbqTagRemove\n [tabIndex]=\"0\"\n (click)=\"onRemoveSelectedOption(option, $event)\"\n ></i>\n }\n </kbq-tag>\n }\n } @else {\n @for (option of triggerValues; track $index) {\n <ng-container\n [ngTemplateOutlet]=\"customTagTemplateRef()\"\n [ngTemplateOutletContext]=\"{ $implicit: option, select: this }\"\n />\n }\n }\n </div>\n } @else {\n <span class=\"kbq-select__matcher-text\">\n {{ triggerValue }}\n </span>\n }\n @if (!multiline()) {\n <div\n class=\"kbq-select__match-hidden-text\"\n [style.display]=\"hiddenItems() > 0 ? 'block' : 'none'\"\n >\n {{ hiddenItemsLabel() }}\n </div>\n }\n </div>\n }\n }\n\n @if (canShowCleaner) {\n <div class=\"kbq-select__cleaner\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <div class=\"kbq-select__arrow-wrapper\">\n <i kbq-icon=\"kbq-chevron-down-s_16\" class=\"kbq-select__arrow\" [color]=\"colorForState()\"></i>\n </div>\n </div>\n }\n</div>\n\n<ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayLockPosition\n [cdkConnectedOverlayBackdropClass]=\"backdropClass()\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop()\"\n [cdkConnectedOverlayMinWidth]=\"overlayMinWidth\"\n [cdkConnectedOverlayOpen]=\"panelOpen\"\n [cdkConnectedOverlayOrigin]=\"overlayOrigin || fallbackOverlayOrigin\"\n [cdkConnectedOverlayPanelClass]=\"overlayPanelClass\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayScrollStrategy]=\"scrollStrategy\"\n [cdkConnectedOverlayViewportMargin]=\"viewportMargin\"\n [cdkConnectedOverlayWidth]=\"overlayWidth\"\n (attach)=\"onAttached()\"\n (backdropClick)=\"close()\"\n>\n <div\n #panel\n cdkMonitorSubtreeFocus\n [attr.id]=\"panelId\"\n [class]=\"panelClasses()\"\n [style.--kbq-select-panel-size-max-height]=\"panelMaxHeightToken()\"\n [style.font-size.px]=\"triggerFontSize\"\n [style.max-width.px]=\"panelMaxWidth()\"\n (keydown)=\"panelKeydownHandler($event)\"\n >\n @if (search() && shouldShowSearch()) {\n <div class=\"kbq-select__search-container\">\n <ng-content select=\"[kbqSelectSearch]\" />\n </div>\n }\n\n <div #optionsContainer kbqScrollbarViewport class=\"kbq-tree-select__content\">\n @if (isEmptySearchResult) {\n <ng-content select=\"[kbq-select-search-empty-result]\" />\n }\n\n <ng-content select=\"kbq-select-no-options, [kbq-select-no-options]\" />\n\n <ng-content select=\"kbq-tree-selection\" />\n </div>\n\n <ng-content select=\"kbq-select-footer,[kbq-tree-select-footer]\" />\n </div>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { NgModule } from '@angular/core';\nimport {\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectSearch,\n KbqSelectSearchEmptyResult,\n KbqSelectTrigger\n} from '@koobiq/components/core';\nimport { KbqFormFieldModule } from '@koobiq/components/form-field';\nimport { KbqSelectNoOptions } from '@koobiq/components/select';\nimport { KbqTagsModule } from '@koobiq/components/tags';\nimport { KbqTreeModule } from '@koobiq/components/tree';\nimport { KbqTreeSelect } from './tree-select.component';\n\n/**\n * The module declares nothing — `KbqTreeSelect` is standalone and brings its own imports — so the\n * entries below are here either to be re-exported or for the providers they carry (`OverlayModule`,\n * `KbqTagsModule`, `KbqTreeModule`).\n */\n@NgModule({\n imports: [\n OverlayModule,\n KbqTreeModule,\n KbqTagsModule,\n KbqSelectSearch,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectTrigger,\n KbqSelectSearchEmptyResult,\n KbqSelectNoOptions,\n KbqTreeSelect\n ],\n exports: [\n KbqTreeSelect,\n // `kbq-tree-selection` content is mandatory, so importing the tree-select without the tree\n // gives a consumer a control they cannot fill.\n KbqTreeModule,\n KbqSelectSearch,\n KbqSelectFooter,\n KbqSelectMatcher,\n KbqSelectTrigger,\n KbqSelectSearchEmptyResult,\n KbqSelectNoOptions,\n KbqFormFieldModule\n ]\n})\nexport class KbqTreeSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["SelectSizeMultipleContentGap"],"mappings":"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"}