@koobiq/components 20.4.1 → 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 +486 -165
  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 -187
  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,31 +1,9 @@
1
1
  import { Platform } from '@angular/cdk/platform';
2
2
  import { DOCUMENT } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { input, Directive, inject, NgZone, ElementRef, Renderer2, ChangeDetectorRef, DestroyRef, output, contentChild, afterNextRender, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
5
- import { isControl, isInput, isLeftBracket, isRightBracket } from '@koobiq/components/core';
6
- import { trigger, state, style, transition, animate } from '@angular/animations';
7
-
8
- var KbqSidebarAnimationState;
9
- (function (KbqSidebarAnimationState) {
10
- KbqSidebarAnimationState["Opened"] = "opened";
11
- KbqSidebarAnimationState["Closed"] = "closed";
12
- })(KbqSidebarAnimationState || (KbqSidebarAnimationState = {}));
13
- const kbqSidebarAnimations = {
14
- sidebarState: trigger('state', [
15
- state('opened', style({
16
- minWidth: '{{ openedStateMinWidth }}',
17
- width: '{{ openedStateWidth }}',
18
- maxWidth: '{{ openedStateMaxWidth }}'
19
- }), { params: { openedStateMinWidth: '', openedStateWidth: '', openedStateMaxWidth: '' } }),
20
- state('closed', style({
21
- minWidth: '{{ closedStateWidth }}',
22
- width: '{{ closedStateWidth }}',
23
- maxWidth: '{{ closedStateWidth }}'
24
- }), { params: { closedStateWidth: '' } }),
25
- transition('opened => closed', [animate('0.1s')]),
26
- transition('closed => opened', [animate('0.2s')])
27
- ])
28
- };
4
+ import { input, Directive, untracked, inject, NgZone, ElementRef, Renderer2, Injector, signal, output, contentChild, afterNextRender, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
5
+ import * as i1 from '@koobiq/components/core';
6
+ import { kbqAnimationsDisabled, KbqStateSaving, kbqAfterAnimations, isControl, isInput, isLeftBracket, isRightBracket } from '@koobiq/components/core';
29
7
 
30
8
  var SidebarPositions;
31
9
  (function (SidebarPositions) {
@@ -34,14 +12,14 @@ var SidebarPositions;
34
12
  })(SidebarPositions || (SidebarPositions = {}));
35
13
  class KbqSidebarOpened {
36
14
  constructor() {
37
- this.minWidth = input(undefined, ...(ngDevMode ? [{ debugName: "minWidth" }] : []));
38
- this.width = input(undefined, ...(ngDevMode ? [{ debugName: "width" }] : []));
39
- this.maxWidth = input(undefined, ...(ngDevMode ? [{ debugName: "maxWidth" }] : []));
15
+ this.minWidth = input(undefined, ...(ngDevMode ? [{ debugName: "minWidth" }] : /* istanbul ignore next */ []));
16
+ this.width = input(undefined, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
17
+ this.maxWidth = input(undefined, ...(ngDevMode ? [{ debugName: "maxWidth" }] : /* istanbul ignore next */ []));
40
18
  }
41
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebarOpened, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
42
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.30", type: KbqSidebarOpened, isStandalone: true, selector: "[kbq-sidebar-opened]", inputs: { minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "kbq-sidebar-opened" }, exportAs: ["kbqSidebarOpened"], ngImport: i0 }); }
19
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebarOpened, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
20
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqSidebarOpened, isStandalone: true, selector: "[kbq-sidebar-opened]", inputs: { minWidth: { classPropertyName: "minWidth", publicName: "minWidth", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "kbq-sidebar-opened" }, exportAs: ["kbqSidebarOpened"], ngImport: i0 }); }
43
21
  }
44
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebarOpened, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebarOpened, decorators: [{
45
23
  type: Directive,
46
24
  args: [{
47
25
  selector: '[kbq-sidebar-opened]',
@@ -53,12 +31,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
53
31
  }], propDecorators: { minWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "minWidth", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }] } });
54
32
  class KbqSidebarClosed {
55
33
  constructor() {
56
- this.width = input(undefined, ...(ngDevMode ? [{ debugName: "width" }] : []));
34
+ this.width = input(undefined, ...(ngDevMode ? [{ debugName: "width" }] : /* istanbul ignore next */ []));
57
35
  }
58
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebarClosed, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
59
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.30", type: KbqSidebarClosed, isStandalone: true, selector: "[kbq-sidebar-closed]", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "kbq-sidebar-closed" }, exportAs: ["kbqSidebarClosed"], ngImport: i0 }); }
36
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebarClosed, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
37
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqSidebarClosed, isStandalone: true, selector: "[kbq-sidebar-closed]", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "kbq-sidebar-closed" }, exportAs: ["kbqSidebarClosed"], ngImport: i0 }); }
60
38
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebarClosed, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebarClosed, decorators: [{
62
40
  type: Directive,
63
41
  args: [{
64
42
  selector: '[kbq-sidebar-closed]',
@@ -68,23 +46,53 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
68
46
  exportAs: 'kbqSidebarClosed'
69
47
  }]
70
48
  }], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }] } });
49
+ /**
50
+ * Coerces a raw persisted payload into a `KbqSidebarState`, returning `null` for anything unrecognizable.
51
+ *
52
+ * Web storage is origin-wide and user-writable, so a payload is never trusted — without this, an entry
53
+ * such as `{"opened": "yes"}` would reach the width bindings and break them.
54
+ */
55
+ const normalizeSidebarState = (parsed) => {
56
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
57
+ return null;
58
+ const { opened, width } = parsed;
59
+ if (typeof opened !== 'boolean')
60
+ return null;
61
+ return typeof width === 'string' ? { opened, width } : { opened };
62
+ };
71
63
  class KbqSidebar {
72
- // TODO: Skipped for migration because:
73
- // Accessor inputs cannot be migrated as they are too complex.
74
64
  get opened() {
75
- return this._opened;
65
+ return this.openedState();
76
66
  }
77
67
  set opened(value) {
78
- if (this._opened) {
79
- this.saveWidth();
80
- }
81
- this._opened = value;
68
+ // Untracked: an `effect` that assigns `opened` must not come to depend on the state it replaces.
69
+ untracked(() => this.setOpened(value));
82
70
  }
83
71
  /**
84
72
  * @docs-private
85
73
  */
86
- get animationState() {
87
- return this._opened ? KbqSidebarAnimationState.Opened : KbqSidebarAnimationState.Closed;
74
+ get params() {
75
+ return this.paramsState();
76
+ }
77
+ /** @docs-private */
78
+ set params(value) {
79
+ this.paramsState.set(value);
80
+ }
81
+ /**
82
+ * @docs-private
83
+ */
84
+ get internalState() {
85
+ return this.internalStateSignal();
86
+ }
87
+ /** @docs-private */
88
+ set internalState(value) {
89
+ this.internalStateSignal.set(value);
90
+ }
91
+ ngOnChanges(changes) {
92
+ // A bound input is handed to its member, a bound `undefined` as `false`; unbound, it leaves what code wrote.
93
+ if (changes['openedInput']) {
94
+ this.opened = this.openedInput() ?? false;
95
+ }
88
96
  }
89
97
  constructor() {
90
98
  this.ngZone = inject(NgZone);
@@ -94,35 +102,60 @@ class KbqSidebar {
94
102
  */
95
103
  this.document = inject(DOCUMENT);
96
104
  this.renderer = inject(Renderer2);
97
- this.changeDetectorRef = inject(ChangeDetectorRef);
98
- this.destroyRef = inject(DestroyRef);
99
105
  this.isBrowser = inject(Platform).isBrowser;
100
- this._opened = true;
101
- this.position = input(undefined, ...(ngDevMode ? [{ debugName: "position" }] : []));
106
+ this.injector = inject(Injector);
102
107
  /**
108
+ * Whether the sidebar opens and closes without motion.
109
+ *
103
110
  * @docs-private
104
111
  */
105
- this.params = {
112
+ this.animationsDisabled = kbqAnimationsDisabled();
113
+ /**
114
+ * Whether the sidebar moves between the opened and closed states: only then is its width transitioned, so
115
+ * the first render and a width written from outside, such as by a splitter, apply at once.
116
+ *
117
+ * @docs-private
118
+ */
119
+ this.toggling = signal(false, ...(ngDevMode ? [{ debugName: "toggling" }] : /* istanbul ignore next */ []));
120
+ /**
121
+ * Persistence of the opened state and width, applied as a host directive. `useStateSaving` and
122
+ * `stateSavingKey` are its inputs, forwarded onto the sidebar.
123
+ */
124
+ this.stateSaving = inject(KbqStateSaving);
125
+ this.openedState = signal(true, ...(ngDevMode ? [{ debugName: "openedState" }] : /* istanbul ignore next */ []));
126
+ /**
127
+ * Whether anything has assigned `opened`. Snapshotted while initializing, where only an input binding
128
+ * can have done so — `toggle()` needs a view query and the bracket shortcut is registered later — so
129
+ * it reads as "the application drives this sidebar" and suppresses persistence.
130
+ */
131
+ this.openedWritten = false;
132
+ this.controlled = false;
133
+ this.position = input(undefined, ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
134
+ this.paramsState = signal({
106
135
  openedStateWidth: 'inherit',
107
136
  openedStateMinWidth: 'inherit',
108
137
  openedStateMaxWidth: 'inherit',
109
138
  closedStateWidth: '32px'
110
- };
139
+ }, ...(ngDevMode ? [{ debugName: "paramsState" }] : /* istanbul ignore next */ []));
111
140
  this.stateChanged = output();
112
141
  /**
113
142
  * @docs-private
114
143
  */
115
- this.openedContent = contentChild(KbqSidebarOpened, ...(ngDevMode ? [{ debugName: "openedContent" }] : []));
144
+ this.openedContent = contentChild(KbqSidebarOpened, ...(ngDevMode ? [{ debugName: "openedContent" }] : /* istanbul ignore next */ []));
116
145
  /**
117
146
  * @docs-private
118
147
  */
119
- this.closedContent = contentChild(KbqSidebarClosed, ...(ngDevMode ? [{ debugName: "closedContent" }] : []));
120
- /**
121
- * @docs-private
122
- */
123
- this.internalState = true;
148
+ this.closedContent = contentChild(KbqSidebarClosed, ...(ngDevMode ? [{ debugName: "closedContent" }] : /* istanbul ignore next */ []));
149
+ this.internalStateSignal = signal(true, ...(ngDevMode ? [{ debugName: "internalStateSignal" }] : /* istanbul ignore next */ []));
124
150
  this.unbindKeydownListener = null;
151
+ /** @docs-private */
152
+ this.openedInput = input(undefined, { ...(ngDevMode ? { debugName: "openedInput" } : /* istanbul ignore next */ {}), alias: 'opened' });
125
153
  afterNextRender(() => this.registerKeydownListener());
154
+ // The state lives under the new key now, so restore from it and report it as any other change.
155
+ this.stateSaving.keyChanges.subscribe(() => {
156
+ if (this.restoreState())
157
+ this.waitForStateAnimation(true);
158
+ });
126
159
  }
127
160
  ngAfterContentInit() {
128
161
  const openedContent = this.openedContent();
@@ -133,31 +166,105 @@ class KbqSidebar {
133
166
  openedStateMaxWidth: openedContent?.maxWidth() || 'inherit',
134
167
  closedStateWidth: closedContent?.width() || '32px'
135
168
  };
169
+ // After the params above, which are rebuilt wholesale and would discard a restored width.
170
+ this.controlled = this.openedWritten;
171
+ this.restoreState();
172
+ // The first render shows the content and the width of the initial state; `stateChanged` reports it once
173
+ // rendered.
174
+ this.internalState = this.openedState();
175
+ this.waitForStateAnimation(false);
176
+ }
177
+ /**
178
+ * Reads the persisted state and applies it. Runs while initializing, and again on a key change.
179
+ * Returns whether it changed the opened state.
180
+ */
181
+ restoreState() {
182
+ if (!this.persists)
183
+ return false;
184
+ const savedState = this.stateSaving.read(normalizeSidebarState);
185
+ if (!savedState)
186
+ return false;
187
+ const changed = savedState.opened !== this.openedState();
188
+ this.stateSaving.applying(() => {
189
+ // Past the setter on purpose: it captures the current `offsetWidth` on the way out, which
190
+ // would overwrite the width being restored on the line below.
191
+ this.openedState.set(savedState.opened);
192
+ // `internalState` otherwise only catches up once the width transition ends.
193
+ this.internalState = savedState.opened;
194
+ if (savedState.width) {
195
+ this.params = { ...this.params, openedStateWidth: savedState.width };
196
+ }
197
+ });
198
+ return changed;
136
199
  }
137
200
  ngOnDestroy() {
138
201
  this.unRegisterKeydownListener();
139
202
  }
140
- toggle() {
141
- this.opened = !this.opened;
142
- this.changeDetectorRef.markForCheck();
203
+ /**
204
+ * Persists whether the sidebar is open and the width it was last left at.
205
+ *
206
+ * Called whenever `opened` changes. The width is only captured as the sidebar closes, so dragging it
207
+ * wider and reloading without closing it keeps the previous width — the same as before persistence.
208
+ */
209
+ saveState() {
210
+ // Untracked, as `clearSavedState()`: called from a consumer's `effect()`, the state read on the way — `opened`,
211
+ // the width, the state saving inputs — would make the effect run again whenever it changes.
212
+ untracked(() => {
213
+ if (!this.persists)
214
+ return;
215
+ this.stateSaving.write(this.snapshot());
216
+ });
143
217
  }
144
218
  /**
145
- * @docs-private
219
+ * Removes the state persisted for this sidebar.
220
+ *
221
+ * Persistence itself stays on — the next change is written again. Unset `useStateSaving` to stop it.
146
222
  */
147
- onAnimationStart() {
148
- if (this._opened) {
149
- this.internalState = this._opened;
223
+ clearSavedState() {
224
+ untracked(() => this.stateSaving.clear());
225
+ }
226
+ /**
227
+ * Whether state is currently persisted for this sidebar — restored on init, or written since.
228
+ * Always `false` while `useStateSaving` is unset, and `false` again after `clearSavedState()`.
229
+ */
230
+ get hasSavedState() {
231
+ return this.stateSaving.state != null;
232
+ }
233
+ toggle() {
234
+ this.opened = !untracked(this.openedState);
235
+ }
236
+ setOpened(value) {
237
+ this.openedWritten = true;
238
+ // While the sidebar still widens, its width is one it passes through, not the opened one.
239
+ if (this.openedState() && !this.toggling()) {
240
+ this.saveWidth();
241
+ }
242
+ const changed = value !== this.openedState();
243
+ this.openedState.set(value);
244
+ if (changed) {
245
+ // The opened content is in place while the sidebar widens, the closed one once it has narrowed.
246
+ if (value) {
247
+ this.internalState = true;
248
+ }
249
+ this.waitForStateAnimation(true);
150
250
  }
251
+ // The single choke point for `toggle()` and the bracket shortcut alike. Writing is a no-op until
252
+ // the state has been read, so the input binding that runs before initialization cannot overwrite
253
+ // what is stored.
254
+ this.saveState();
151
255
  }
152
256
  /**
153
- * @docs-private
257
+ * Switches the content and reports the state once rendered, after the width transition when `animated`:
258
+ * the initial state has none.
154
259
  */
155
- onAnimationDone() {
156
- // The animation still reports done when the sidebar is destroyed before it finishes.
157
- if (this.destroyRef.destroyed)
158
- return;
159
- this.internalState = this._opened;
160
- this.stateChanged.emit(this._opened);
260
+ waitForStateAnimation(animated) {
261
+ this.stateAnimation?.destroy();
262
+ this.toggling.set(animated);
263
+ this.stateAnimation = kbqAfterAnimations(() => this.elementRef.nativeElement, () => {
264
+ this.toggling.set(false);
265
+ this.internalState = this.openedState();
266
+ this.stateChanged.emit(this.openedState());
267
+ }, this.injector);
161
268
  }
162
269
  registerKeydownListener() {
163
270
  this.ngZone.runOutsideAngular(() => {
@@ -179,37 +286,49 @@ class KbqSidebar {
179
286
  this.toggle();
180
287
  }
181
288
  }
289
+ /** Whether this sidebar reads and writes its state at all. */
290
+ get persists() {
291
+ // A sidebar that is not in the document has no stable key — the default resolver derives one from
292
+ // the path to `<body>` — which is the ordinary state of one projected into an overlay.
293
+ return this.stateSaving.useStateSaving() && !this.controlled && !!this.stateSaving.host?.isConnected;
294
+ }
295
+ /** The whole state, with the width left out while it is the one the content declares. */
296
+ snapshot() {
297
+ const width = this.params.openedStateWidth;
298
+ const opened = this.openedState();
299
+ return width && width !== 'inherit' ? { opened, width } : { opened };
300
+ }
182
301
  saveWidth() {
183
302
  if (!this.isBrowser)
184
303
  return;
185
- this.params.openedStateWidth = `${this.elementRef.nativeElement.offsetWidth}px`;
304
+ this.params = { ...this.params, openedStateWidth: `${this.elementRef.nativeElement.offsetWidth}px` };
186
305
  }
187
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
188
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.30", type: KbqSidebar, isStandalone: true, selector: "kbq-sidebar", inputs: { opened: { classPropertyName: "opened", publicName: "opened", isSignal: false, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { stateChanged: "stateChanged" }, host: { listeners: { "@state.start": "onAnimationStart()", "@state.done": "onAnimationDone()" }, properties: { "@state": "{\n value: animationState,\n params: params\n }" }, classAttribute: "kbq-sidebar" }, queries: [{ propertyName: "openedContent", first: true, predicate: KbqSidebarOpened, descendants: true, isSignal: true }, { propertyName: "closedContent", first: true, predicate: KbqSidebarClosed, descendants: true, isSignal: true }], exportAs: ["kbqSidebar"], ngImport: i0, template: "@if (internalState) {\n <ng-content select=\"[kbq-sidebar-opened]\" />\n} @else {\n <ng-content select=\"[kbq-sidebar-closed]\" />\n}\n", styles: [".kbq-sidebar{display:inline-block;height:100%;overflow:hidden}.kbq-sidebar-opened,.kbq-sidebar-closed{height:100%}\n"], animations: [kbqSidebarAnimations.sidebarState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
306
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
307
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqSidebar, isStandalone: true, selector: "kbq-sidebar", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, openedInput: { classPropertyName: "openedInput", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { stateChanged: "stateChanged" }, host: { properties: { "class.kbq-sidebar_opened": "opened", "class.kbq-sidebar_toggling": "toggling()", "class.kbq-animations-disabled": "animationsDisabled", "style.min-width": "opened ? params.openedStateMinWidth : params.closedStateWidth", "style.width": "opened ? params.openedStateWidth : params.closedStateWidth", "style.max-width": "opened ? params.openedStateMaxWidth : params.closedStateWidth" }, classAttribute: "kbq-sidebar" }, queries: [{ propertyName: "openedContent", first: true, predicate: KbqSidebarOpened, descendants: true, isSignal: true }, { propertyName: "closedContent", first: true, predicate: KbqSidebarClosed, descendants: true, isSignal: true }], exportAs: ["kbqSidebar"], usesOnChanges: true, hostDirectives: [{ directive: i1.KbqStateSaving, inputs: ["useStateSaving", "useStateSaving", "stateSavingKey", "stateSavingKey"] }], ngImport: i0, template: "@if (internalState) {\n <ng-content select=\"[kbq-sidebar-opened]\" />\n} @else {\n <ng-content select=\"[kbq-sidebar-closed]\" />\n}\n", styles: ["@charset \"UTF-8\";.kbq-sidebar{display:inline-block;height:100%;overflow:hidden}.kbq-sidebar.kbq-sidebar_toggling{transition:min-width .1s,width .1s,max-width .1s;transition-behavior:allow-discrete}.kbq-sidebar.kbq-sidebar_toggling.kbq-sidebar_opened{transition-duration:.2s}.kbq-sidebar.kbq-sidebar_toggling.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-sidebar.kbq-sidebar_toggling{animation:none;transition:none}}.kbq-sidebar-opened,.kbq-sidebar-closed{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
189
308
  }
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebar, decorators: [{
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebar, decorators: [{
191
310
  type: Component,
192
311
  args: [{ selector: 'kbq-sidebar', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
193
312
  class: 'kbq-sidebar',
194
- '[@state]': `{
195
- value: animationState,
196
- params: params
197
- }`,
198
- '(@state.start)': 'onAnimationStart()',
199
- '(@state.done)': 'onAnimationDone()'
200
- }, animations: [kbqSidebarAnimations.sidebarState], exportAs: 'kbqSidebar', template: "@if (internalState) {\n <ng-content select=\"[kbq-sidebar-opened]\" />\n} @else {\n <ng-content select=\"[kbq-sidebar-closed]\" />\n}\n", styles: [".kbq-sidebar{display:inline-block;height:100%;overflow:hidden}.kbq-sidebar-opened,.kbq-sidebar-closed{height:100%}\n"] }]
201
- }], ctorParameters: () => [], propDecorators: { opened: [{
202
- type: Input
203
- }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], stateChanged: [{ type: i0.Output, args: ["stateChanged"] }], openedContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KbqSidebarOpened), { isSignal: true }] }], closedContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KbqSidebarClosed), { isSignal: true }] }] } });
313
+ '[class.kbq-sidebar_opened]': 'opened',
314
+ '[class.kbq-sidebar_toggling]': 'toggling()',
315
+ '[class.kbq-animations-disabled]': 'animationsDisabled',
316
+ '[style.min-width]': 'opened ? params.openedStateMinWidth : params.closedStateWidth',
317
+ '[style.width]': 'opened ? params.openedStateWidth : params.closedStateWidth',
318
+ '[style.max-width]': 'opened ? params.openedStateMaxWidth : params.closedStateWidth'
319
+ }, hostDirectives: [
320
+ { directive: KbqStateSaving, inputs: ['useStateSaving', 'stateSavingKey'] }
321
+ ], exportAs: 'kbqSidebar', template: "@if (internalState) {\n <ng-content select=\"[kbq-sidebar-opened]\" />\n} @else {\n <ng-content select=\"[kbq-sidebar-closed]\" />\n}\n", styles: ["@charset \"UTF-8\";.kbq-sidebar{display:inline-block;height:100%;overflow:hidden}.kbq-sidebar.kbq-sidebar_toggling{transition:min-width .1s,width .1s,max-width .1s;transition-behavior:allow-discrete}.kbq-sidebar.kbq-sidebar_toggling.kbq-sidebar_opened{transition-duration:.2s}.kbq-sidebar.kbq-sidebar_toggling.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-sidebar.kbq-sidebar_toggling{animation:none;transition:none}}.kbq-sidebar-opened,.kbq-sidebar-closed{height:100%}\n"] }]
322
+ }], ctorParameters: () => [], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], stateChanged: [{ type: i0.Output, args: ["stateChanged"] }], openedContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KbqSidebarOpened), { isSignal: true }] }], closedContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KbqSidebarClosed), { isSignal: true }] }], openedInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "opened", required: false }] }] } });
204
323
 
205
324
  class KbqSidebarModule {
206
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
207
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebarModule, imports: [KbqSidebarClosed, KbqSidebarOpened, KbqSidebar], exports: [KbqSidebarClosed,
325
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
326
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebarModule, imports: [KbqSidebarClosed, KbqSidebarOpened, KbqSidebar], exports: [KbqSidebarClosed,
208
327
  KbqSidebarOpened,
209
328
  KbqSidebar] }); }
210
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebarModule }); }
329
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebarModule }); }
211
330
  }
212
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqSidebarModule, decorators: [{
331
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqSidebarModule, decorators: [{
213
332
  type: NgModule,
214
333
  args: [{
215
334
  imports: [KbqSidebarClosed, KbqSidebarOpened, KbqSidebar],
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-sidebar.mjs","sources":["../../../packages/components/sidebar/sidebar-animations.ts","../../../packages/components/sidebar/sidebar.component.ts","../../../packages/components/sidebar/sidebar.component.html","../../../packages/components/sidebar/sidebar.module.ts","../../../packages/components/sidebar/koobiq-components-sidebar.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\n\nexport enum KbqSidebarAnimationState {\n Opened = 'opened',\n Closed = 'closed'\n}\n\nexport const kbqSidebarAnimations: { readonly sidebarState: AnimationTriggerMetadata } = {\n sidebarState: trigger('state', [\n state(\n 'opened',\n style({\n minWidth: '{{ openedStateMinWidth }}',\n width: '{{ openedStateWidth }}',\n maxWidth: '{{ openedStateMaxWidth }}'\n }),\n { params: { openedStateMinWidth: '', openedStateWidth: '', openedStateMaxWidth: '' } }\n ),\n state(\n 'closed',\n style({\n minWidth: '{{ closedStateWidth }}',\n width: '{{ closedStateWidth }}',\n maxWidth: '{{ closedStateWidth }}'\n }),\n { params: { closedStateWidth: '' } }\n ),\n transition('opened => closed', [animate('0.1s')]),\n transition('closed => opened', [animate('0.2s')])\n ])\n};\n","import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n contentChild,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n Input,\n input,\n NgZone,\n OnDestroy,\n output,\n Renderer2,\n ViewEncapsulation\n} from '@angular/core';\nimport { isControl, isInput, isLeftBracket, isRightBracket } from '@koobiq/components/core';\nimport { kbqSidebarAnimations, KbqSidebarAnimationState } from './sidebar-animations';\n\nexport enum SidebarPositions {\n Left = 'left',\n Right = 'right'\n}\n\ninterface KbqSidebarParams {\n openedStateMinWidth: string;\n openedStateWidth: string;\n openedStateMaxWidth: string;\n\n closedStateWidth: string;\n}\n\n@Directive({\n selector: '[kbq-sidebar-opened]',\n host: {\n class: 'kbq-sidebar-opened'\n },\n exportAs: 'kbqSidebarOpened'\n})\nexport class KbqSidebarOpened {\n readonly minWidth = input<string>(undefined!);\n readonly width = input<string>(undefined!);\n readonly maxWidth = input<string>(undefined!);\n}\n\n@Directive({\n selector: '[kbq-sidebar-closed]',\n host: {\n class: 'kbq-sidebar-closed'\n },\n exportAs: 'kbqSidebarClosed'\n})\nexport class KbqSidebarClosed {\n readonly width = input<string>(undefined!);\n}\n\n@Component({\n selector: 'kbq-sidebar',\n templateUrl: 'sidebar.component.html',\n styleUrls: ['./sidebar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-sidebar',\n '[@state]': `{\n value: animationState,\n params: params\n }`,\n '(@state.start)': 'onAnimationStart()',\n '(@state.done)': 'onAnimationDone()'\n },\n animations: [kbqSidebarAnimations.sidebarState],\n exportAs: 'kbqSidebar'\n})\nexport class KbqSidebar implements OnDestroy, AfterContentInit {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n\n /**\n * @docs-private\n */\n protected readonly document = inject<Document>(DOCUMENT);\n private readonly renderer = inject(Renderer2);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n private readonly isBrowser = inject(Platform).isBrowser;\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n\n set opened(value: boolean) {\n if (this._opened) {\n this.saveWidth();\n }\n\n this._opened = value;\n }\n\n private _opened: boolean = true;\n\n readonly position = input<SidebarPositions>(undefined!);\n\n /**\n * @docs-private\n */\n params: KbqSidebarParams = {\n openedStateWidth: 'inherit',\n openedStateMinWidth: 'inherit',\n openedStateMaxWidth: 'inherit',\n\n closedStateWidth: '32px'\n };\n\n readonly stateChanged = output<boolean>();\n\n /**\n * @docs-private\n */\n readonly openedContent = contentChild(KbqSidebarOpened);\n\n /**\n * @docs-private\n */\n readonly closedContent = contentChild(KbqSidebarClosed);\n\n /**\n * @docs-private\n */\n get animationState(): KbqSidebarAnimationState {\n return this._opened ? KbqSidebarAnimationState.Opened : KbqSidebarAnimationState.Closed;\n }\n\n /**\n * @docs-private\n */\n internalState: boolean = true;\n\n private unbindKeydownListener: ReturnType<Renderer2['listen']> | null = null;\n\n constructor() {\n afterNextRender(() => this.registerKeydownListener());\n }\n\n ngAfterContentInit(): void {\n const openedContent = this.openedContent();\n const closedContent = this.closedContent();\n\n this.params = {\n openedStateWidth: openedContent?.width() || 'inherit',\n openedStateMinWidth: openedContent?.minWidth() || 'inherit',\n openedStateMaxWidth: openedContent?.maxWidth() || 'inherit',\n\n closedStateWidth: closedContent?.width() || '32px'\n };\n }\n\n ngOnDestroy(): void {\n this.unRegisterKeydownListener();\n }\n\n toggle(): void {\n this.opened = !this.opened;\n this.changeDetectorRef.markForCheck();\n }\n\n /**\n * @docs-private\n */\n onAnimationStart() {\n if (this._opened) {\n this.internalState = this._opened;\n }\n }\n\n /**\n * @docs-private\n */\n onAnimationDone() {\n // The animation still reports done when the sidebar is destroyed before it finishes.\n if (this.destroyRef.destroyed) return;\n\n this.internalState = this._opened;\n\n this.stateChanged.emit(this._opened);\n }\n\n private registerKeydownListener(): void {\n this.ngZone.runOutsideAngular(() => {\n this.unbindKeydownListener ||= this.renderer.listen(this.document, 'keypress', (event) =>\n this.handleKeydown(event)\n );\n });\n }\n\n private unRegisterKeydownListener(): void {\n if (this.unbindKeydownListener) {\n this.unbindKeydownListener();\n this.unbindKeydownListener = null;\n }\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n if (isControl(event) || isInput(event)) return;\n\n const position = this.position();\n\n if (\n (position === SidebarPositions.Left && isLeftBracket(event)) ||\n (position === SidebarPositions.Right && isRightBracket(event))\n ) {\n this.toggle();\n }\n }\n\n private saveWidth() {\n if (!this.isBrowser) return;\n\n this.params.openedStateWidth = `${this.elementRef.nativeElement.offsetWidth}px`;\n }\n}\n","@if (internalState) {\n <ng-content select=\"[kbq-sidebar-opened]\" />\n} @else {\n <ng-content select=\"[kbq-sidebar-closed]\" />\n}\n","import { NgModule } from '@angular/core';\nimport { KbqSidebar, KbqSidebarClosed, KbqSidebarOpened } from './sidebar.component';\n\n@NgModule({\n imports: [KbqSidebarClosed, KbqSidebarOpened, KbqSidebar],\n exports: [\n KbqSidebarClosed,\n KbqSidebarOpened,\n KbqSidebar\n ]\n})\nexport class KbqSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-sidebar.mjs","sources":["../../../packages/components/sidebar/sidebar.component.ts","../../../packages/components/sidebar/sidebar.component.html","../../../packages/components/sidebar/sidebar.module.ts","../../../packages/components/sidebar/koobiq-components-sidebar.ts"],"sourcesContent":["import { Platform } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n ElementRef,\n inject,\n Injector,\n input,\n NgZone,\n OnChanges,\n OnDestroy,\n output,\n Renderer2,\n signal,\n SimpleChanges,\n untracked,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n isControl,\n isInput,\n isLeftBracket,\n isRightBracket,\n kbqAfterAnimations,\n kbqAnimationsDisabled,\n KbqStateSaving\n} from '@koobiq/components/core';\n\nexport enum SidebarPositions {\n Left = 'left',\n Right = 'right'\n}\n\ninterface KbqSidebarParams {\n openedStateMinWidth: string;\n openedStateWidth: string;\n openedStateMaxWidth: string;\n\n closedStateWidth: string;\n}\n\n@Directive({\n selector: '[kbq-sidebar-opened]',\n host: {\n class: 'kbq-sidebar-opened'\n },\n exportAs: 'kbqSidebarOpened'\n})\nexport class KbqSidebarOpened {\n readonly minWidth = input<string>(undefined!);\n readonly width = input<string>(undefined!);\n readonly maxWidth = input<string>(undefined!);\n}\n\n@Directive({\n selector: '[kbq-sidebar-closed]',\n host: {\n class: 'kbq-sidebar-closed'\n },\n exportAs: 'kbqSidebarClosed'\n})\nexport class KbqSidebarClosed {\n readonly width = input<string>(undefined!);\n}\n\n/** The persisted state of a sidebar — whether it was open, and the width it was last left at. */\nexport interface KbqSidebarState {\n opened: boolean;\n /** Absent while the sidebar has never been resized away from the width its content declares. */\n width?: string;\n}\n\n/**\n * Coerces a raw persisted payload into a `KbqSidebarState`, returning `null` for anything unrecognizable.\n *\n * Web storage is origin-wide and user-writable, so a payload is never trusted — without this, an entry\n * such as `{\"opened\": \"yes\"}` would reach the width bindings and break them.\n */\nconst normalizeSidebarState = (parsed: unknown): KbqSidebarState | null => {\n if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) return null;\n\n const { opened, width } = parsed as Partial<KbqSidebarState>;\n\n if (typeof opened !== 'boolean') return null;\n\n return typeof width === 'string' ? { opened, width } : { opened };\n};\n\n@Component({\n selector: 'kbq-sidebar',\n templateUrl: 'sidebar.component.html',\n styleUrls: ['./sidebar.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-sidebar',\n '[class.kbq-sidebar_opened]': 'opened',\n '[class.kbq-sidebar_toggling]': 'toggling()',\n '[class.kbq-animations-disabled]': 'animationsDisabled',\n '[style.min-width]': 'opened ? params.openedStateMinWidth : params.closedStateWidth',\n '[style.width]': 'opened ? params.openedStateWidth : params.closedStateWidth',\n '[style.max-width]': 'opened ? params.openedStateMaxWidth : params.closedStateWidth'\n },\n // `useStateSaving` and `stateSavingKey` are the directive's inputs, surfaced on the sidebar.\n hostDirectives: [\n { directive: KbqStateSaving, inputs: ['useStateSaving', 'stateSavingKey'] }\n ],\n exportAs: 'kbqSidebar'\n})\nexport class KbqSidebar implements OnChanges, OnDestroy, AfterContentInit {\n private ngZone = inject(NgZone);\n private elementRef = inject(ElementRef);\n\n /**\n * @docs-private\n */\n protected readonly document = inject<Document>(DOCUMENT);\n private readonly renderer = inject(Renderer2);\n private readonly isBrowser = inject(Platform).isBrowser;\n private readonly injector = inject(Injector);\n\n /**\n * Whether the sidebar opens and closes without motion.\n *\n * @docs-private\n */\n protected readonly animationsDisabled = kbqAnimationsDisabled();\n\n /**\n * Whether the sidebar moves between the opened and closed states: only then is its width transitioned, so\n * the first render and a width written from outside, such as by a splitter, apply at once.\n *\n * @docs-private\n */\n protected readonly toggling = signal(false);\n\n private stateAnimation?: { destroy(): void };\n\n /**\n * Persistence of the opened state and width, applied as a host directive. `useStateSaving` and\n * `stateSavingKey` are its inputs, forwarded onto the sidebar.\n */\n private readonly stateSaving = inject(KbqStateSaving);\n\n get opened(): boolean {\n return this.openedState();\n }\n\n set opened(value: boolean) {\n // Untracked: an `effect` that assigns `opened` must not come to depend on the state it replaces.\n untracked(() => this.setOpened(value));\n }\n\n private readonly openedState = signal(true);\n\n /**\n * Whether anything has assigned `opened`. Snapshotted while initializing, where only an input binding\n * can have done so — `toggle()` needs a view query and the bracket shortcut is registered later — so\n * it reads as \"the application drives this sidebar\" and suppresses persistence.\n */\n private openedWritten = false;\n\n private controlled = false;\n\n readonly position = input<SidebarPositions>(undefined!);\n\n /**\n * @docs-private\n */\n get params(): KbqSidebarParams {\n return this.paramsState();\n }\n\n /** @docs-private */\n set params(value: KbqSidebarParams) {\n this.paramsState.set(value);\n }\n\n private readonly paramsState = signal<KbqSidebarParams>({\n openedStateWidth: 'inherit',\n openedStateMinWidth: 'inherit',\n openedStateMaxWidth: 'inherit',\n\n closedStateWidth: '32px'\n });\n\n readonly stateChanged = output<boolean>();\n\n /**\n * @docs-private\n */\n readonly openedContent = contentChild(KbqSidebarOpened);\n\n /**\n * @docs-private\n */\n readonly closedContent = contentChild(KbqSidebarClosed);\n\n /**\n * @docs-private\n */\n get internalState(): boolean {\n return this.internalStateSignal();\n }\n\n /** @docs-private */\n set internalState(value: boolean) {\n this.internalStateSignal.set(value);\n }\n\n private readonly internalStateSignal = signal(true);\n\n private unbindKeydownListener: ReturnType<Renderer2['listen']> | null = null;\n\n /** @docs-private */\n readonly openedInput = input<boolean | undefined>(undefined, { alias: 'opened' });\n\n ngOnChanges(changes: SimpleChanges): void {\n // A bound input is handed to its member, a bound `undefined` as `false`; unbound, it leaves what code wrote.\n if (changes['openedInput']) {\n this.opened = this.openedInput() ?? false;\n }\n }\n\n constructor() {\n afterNextRender(() => this.registerKeydownListener());\n\n // The state lives under the new key now, so restore from it and report it as any other change.\n this.stateSaving.keyChanges.subscribe(() => {\n if (this.restoreState()) this.waitForStateAnimation(true);\n });\n }\n\n ngAfterContentInit(): void {\n const openedContent = this.openedContent();\n const closedContent = this.closedContent();\n\n this.params = {\n openedStateWidth: openedContent?.width() || 'inherit',\n openedStateMinWidth: openedContent?.minWidth() || 'inherit',\n openedStateMaxWidth: openedContent?.maxWidth() || 'inherit',\n\n closedStateWidth: closedContent?.width() || '32px'\n };\n\n // After the params above, which are rebuilt wholesale and would discard a restored width.\n this.controlled = this.openedWritten;\n\n this.restoreState();\n\n // The first render shows the content and the width of the initial state; `stateChanged` reports it once\n // rendered.\n this.internalState = this.openedState();\n this.waitForStateAnimation(false);\n }\n\n /**\n * Reads the persisted state and applies it. Runs while initializing, and again on a key change.\n * Returns whether it changed the opened state.\n */\n private restoreState(): boolean {\n if (!this.persists) return false;\n\n const savedState = this.stateSaving.read(normalizeSidebarState);\n\n if (!savedState) return false;\n\n const changed = savedState.opened !== this.openedState();\n\n this.stateSaving.applying(() => {\n // Past the setter on purpose: it captures the current `offsetWidth` on the way out, which\n // would overwrite the width being restored on the line below.\n this.openedState.set(savedState.opened);\n\n // `internalState` otherwise only catches up once the width transition ends.\n this.internalState = savedState.opened;\n\n if (savedState.width) {\n this.params = { ...this.params, openedStateWidth: savedState.width };\n }\n });\n\n return changed;\n }\n\n ngOnDestroy(): void {\n this.unRegisterKeydownListener();\n }\n\n /**\n * Persists whether the sidebar is open and the width it was last left at.\n *\n * Called whenever `opened` changes. The width is only captured as the sidebar closes, so dragging it\n * wider and reloading without closing it keeps the previous width — the same as before persistence.\n */\n saveState(): void {\n // Untracked, as `clearSavedState()`: called from a consumer's `effect()`, the state read on the way — `opened`,\n // the width, the state saving inputs — would make the effect run again whenever it changes.\n untracked(() => {\n if (!this.persists) return;\n\n this.stateSaving.write(this.snapshot());\n });\n }\n\n /**\n * Removes the state persisted for this sidebar.\n *\n * Persistence itself stays on — the next change is written again. Unset `useStateSaving` to stop it.\n */\n clearSavedState(): void {\n untracked(() => this.stateSaving.clear());\n }\n\n /**\n * Whether state is currently persisted for this sidebar — restored on init, or written since.\n * Always `false` while `useStateSaving` is unset, and `false` again after `clearSavedState()`.\n */\n get hasSavedState(): boolean {\n return this.stateSaving.state != null;\n }\n\n toggle(): void {\n this.opened = !untracked(this.openedState);\n }\n\n private setOpened(value: boolean): void {\n this.openedWritten = true;\n\n // While the sidebar still widens, its width is one it passes through, not the opened one.\n if (this.openedState() && !this.toggling()) {\n this.saveWidth();\n }\n\n const changed = value !== this.openedState();\n\n this.openedState.set(value);\n\n if (changed) {\n // The opened content is in place while the sidebar widens, the closed one once it has narrowed.\n if (value) {\n this.internalState = true;\n }\n\n this.waitForStateAnimation(true);\n }\n\n // The single choke point for `toggle()` and the bracket shortcut alike. Writing is a no-op until\n // the state has been read, so the input binding that runs before initialization cannot overwrite\n // what is stored.\n this.saveState();\n }\n\n /**\n * Switches the content and reports the state once rendered, after the width transition when `animated`:\n * the initial state has none.\n */\n private waitForStateAnimation(animated: boolean): void {\n this.stateAnimation?.destroy();\n this.toggling.set(animated);\n this.stateAnimation = kbqAfterAnimations(\n () => this.elementRef.nativeElement,\n () => {\n this.toggling.set(false);\n this.internalState = this.openedState();\n this.stateChanged.emit(this.openedState());\n },\n this.injector\n );\n }\n\n private registerKeydownListener(): void {\n this.ngZone.runOutsideAngular(() => {\n this.unbindKeydownListener ||= this.renderer.listen(this.document, 'keypress', (event) =>\n this.handleKeydown(event)\n );\n });\n }\n\n private unRegisterKeydownListener(): void {\n if (this.unbindKeydownListener) {\n this.unbindKeydownListener();\n this.unbindKeydownListener = null;\n }\n }\n\n private handleKeydown(event: KeyboardEvent): void {\n if (isControl(event) || isInput(event)) return;\n\n const position = this.position();\n\n if (\n (position === SidebarPositions.Left && isLeftBracket(event)) ||\n (position === SidebarPositions.Right && isRightBracket(event))\n ) {\n this.toggle();\n }\n }\n\n /** Whether this sidebar reads and writes its state at all. */\n private get persists(): boolean {\n // A sidebar that is not in the document has no stable key — the default resolver derives one from\n // the path to `<body>` — which is the ordinary state of one projected into an overlay.\n return this.stateSaving.useStateSaving() && !this.controlled && !!this.stateSaving.host?.isConnected;\n }\n\n /** The whole state, with the width left out while it is the one the content declares. */\n private snapshot(): KbqSidebarState {\n const width = this.params.openedStateWidth;\n const opened = this.openedState();\n\n return width && width !== 'inherit' ? { opened, width } : { opened };\n }\n\n private saveWidth() {\n if (!this.isBrowser) return;\n\n this.params = { ...this.params, openedStateWidth: `${this.elementRef.nativeElement.offsetWidth}px` };\n }\n}\n","@if (internalState) {\n <ng-content select=\"[kbq-sidebar-opened]\" />\n} @else {\n <ng-content select=\"[kbq-sidebar-closed]\" />\n}\n","import { NgModule } from '@angular/core';\nimport { KbqSidebar, KbqSidebarClosed, KbqSidebarOpened } from './sidebar.component';\n\n@NgModule({\n imports: [KbqSidebarClosed, KbqSidebarOpened, KbqSidebar],\n exports: [\n KbqSidebarClosed,\n KbqSidebarOpened,\n KbqSidebar\n ]\n})\nexport class KbqSidebarModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}