@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
@@ -0,0 +1,1371 @@
1
+ 'use strict';
2
+
3
+ var tagPatterns = require('../../tag-patterns-CNbEB0iT.js');
4
+ var listItemPattern = require('../../list-item-pattern-D95Y1KIk.js');
5
+
6
+ /** Removed in 21.0.0: the `kbq-accordion-trigger__action` class. */
7
+ const accordion = {
8
+ warnPatterns: [
9
+ {
10
+ pattern: String.raw `(?<![\w-])kbq-accordion-trigger__action(?![\w-])`,
11
+ message: 'The kbq-accordion-trigger__action class was removed: an action inside the trigger is a focusable ' +
12
+ 'element inside a `role="button"`. Move the actions out of the trigger into a ' +
13
+ '`<div class="kbq-accordion-header__actions">` placed after it in `<kbq-accordion-header>`.'
14
+ }
15
+ ]
16
+ };
17
+
18
+ // An opening `<kbq-code-block>` tag that binds `name` twice.
19
+ const codeBlockTagTwice = (name) => String.raw `<kbq-code-block(?![\w-])(?=${tagPatterns.TAG_BODY}*[\s\[]${name}(?=[\]\s=/>])${tagPatterns.TAG_BODY}*[\s\[]${name}[\]\s=/>])`;
20
+ // A file that names the component or reaches it through its `exportAs`.
21
+ const CODE_BLOCK_ANCHOR = String.raw `\bKbqCodeBlock\b|["']kbqCodeBlock["']`;
22
+ const ICON_BUTTON_ATTRIBUTE = String.raw `[\s\[]kbq-icon-button(?![\w-])`;
23
+ // The start of an attribute on an opening icon button tag that does not set `size` itself.
24
+ const ICON_BUTTON_TAG = String.raw `(<[a-zA-Z][\w-]*(?=${tagPatterns.TAG_BODY}*${ICON_BUTTON_ATTRIBUTE})(?!${tagPatterns.TAG_BODY}*[\s\[]size[\]\s=/>])${tagPatterns.TAG_BODY}*?\s)`;
25
+ // A property path such as `isSmall`, `options.small` or `small()`, which needs no parentheses in a ternary.
26
+ const PATH = String.raw `[A-Za-z_$][\w$]*(?:\(\))?(?:\??\.[A-Za-z_$][\w$]*(?:\(\))?)*`;
27
+ /** Removed in 21.0.0: KbqCodeBlock (canLoad, codeFiles, scrollableCodeContent) and KbqIconButton (small). */
28
+ const codeBlockAndIcon = {
29
+ templateReplacements: [
30
+ // `[canLoad]="…"`, `canLoad="…"` and a valueless `canLoad`.
31
+ { from: String.raw `${tagPatterns.codeBlockTagWithout('canDownload')}canLoad(?=\]?[\s=/>])`, to: '$1canDownload' },
32
+ { from: String.raw `${tagPatterns.codeBlockTagWithout('files')}codeFiles(?=\]?[\s=/>])`, to: '$1files' },
33
+ { from: String.raw `${ICON_BUTTON_TAG}\[small\]\s*=\s*"true"`, to: '$1size="compact"' },
34
+ { from: String.raw `${ICON_BUTTON_TAG}\[small\]\s*=\s*"false"`, to: '$1size="normal"' },
35
+ { from: String.raw `${ICON_BUTTON_TAG}\[small\]\s*=\s*"(${PATH})"`, to: `$1[size]="$2 ? 'compact' : 'normal'"` },
36
+ { from: String.raw `${ICON_BUTTON_TAG}\[small\]\s*=\s*"([^"]*)"`, to: `$1[size]="($2) ? 'compact' : 'normal'"` },
37
+ { from: String.raw `${ICON_BUTTON_TAG}small\s*=\s*"true"`, to: '$1size="compact"' },
38
+ // The class also appears in queries and inline styles.
39
+ { from: String.raw `\bkbq-icon-button_small\b`, to: 'kbq-icon-button_compact' }
40
+ ],
41
+ scssReplacements: [{ from: String.raw `\bkbq-icon-button_small\b`, to: 'kbq-icon-button_compact' }],
42
+ warnPatterns: [
43
+ {
44
+ anchor: String.raw `<kbq-code-block(?![\w-])`,
45
+ pattern: `${tagPatterns.codeBlockTagWith('canLoad', 'canDownload')}|${tagPatterns.codeBlockTagWith('codeFiles', 'files')}`,
46
+ message: 'KbqCodeBlock `canLoad` and `codeFiles` were removed: use `canDownload` and `files`. A ' +
47
+ '<kbq-code-block> that binds `canLoad` next to `canDownload`, or `codeFiles` next to `files`, was ' +
48
+ 'left untouched: merge each pair into one binding. The download button showed when either was ' +
49
+ 'true, and `codeFiles` applied while `files` was empty.'
50
+ },
51
+ {
52
+ anchor: String.raw `<kbq-code-block(?![\w-])`,
53
+ pattern: `${codeBlockTagTwice('canDownload')}|${codeBlockTagTwice('files')}`,
54
+ message: 'A <kbq-code-block> that binds `canDownload` or `files` twice is what the 20.0.0 migration left of ' +
55
+ '`canLoad` or `codeFiles` bound next to its replacement. Only the last binding takes effect: merge ' +
56
+ 'the two into one.'
57
+ },
58
+ {
59
+ anchor: CODE_BLOCK_ANCHOR,
60
+ pattern: String.raw `\.(?:canLoad|codeFiles)(?:Input)?\b`,
61
+ message: 'KbqCodeBlock `canLoad`, `codeFiles` and their backing inputs `canLoadInput` and `codeFilesInput` ' +
62
+ 'were removed: read `canDownload()` and `files()`, write `canDownload.set(…)` and `files.set(…)`. ' +
63
+ 'Manual migration required.'
64
+ },
65
+ {
66
+ anchor: CODE_BLOCK_ANCHOR,
67
+ pattern: String.raw `\.scrollableCodeContent\b`,
68
+ message: 'KbqCodeBlock.scrollableCodeContent was removed: scroll the code with ' +
69
+ '`scrollTo(options)` on the code block. Manual migration required.'
70
+ },
71
+ {
72
+ anchor: ICON_BUTTON_ATTRIBUTE,
73
+ pattern: String.raw `<[a-zA-Z][\w-]*(?=${tagPatterns.TAG_BODY}*${ICON_BUTTON_ATTRIBUTE})(?:` +
74
+ String.raw `(?=${tagPatterns.TAG_BODY}*[\s\[]size[\]\s=/>])${tagPatterns.TAG_BODY}*[\s\[]small[\]\s=/>]|` +
75
+ String.raw `${tagPatterns.TAG_BODY}*\s(?:small(?!\s*=\s*"true")(?=[\s=/>])|\[small\]\s*=\s*'))`,
76
+ message: 'KbqIconButton `small` was removed: set `size="compact"`. Left untouched: an icon button that ' +
77
+ 'sets both `small` and `size`, a single-quoted `[small]` binding, and a static `small` other ' +
78
+ 'than `small="true"`. A valueless `small` never took effect, so drop it; any other static ' +
79
+ 'value made the button compact.'
80
+ },
81
+ {
82
+ anchor: String.raw `\bKbqIconButton\b`,
83
+ pattern: String.raw `\.small\b`,
84
+ message: "KbqIconButton.small was removed: read or set `size` ('compact' | 'normal') instead. " +
85
+ 'Manual migration required.'
86
+ }
87
+ ]
88
+ };
89
+
90
+ const CORE$1 = '@koobiq/components/core';
91
+ /** A named import of `symbol` from the core entry point, so an app's own symbol of that name is left alone. */
92
+ const importedFromCore = (symbol) => `import\\s*(?:type\\s*)?\\{[^}]*\\b${symbol}\\b[^}]*\\}\\s*from\\s*['"]${CORE$1}['"]`;
93
+ /** Renames `from` to `to`; a core import clause that held both names keeps the last one. */
94
+ const rename = (from, to) => [
95
+ { from: `\\b${from}\\b`, to },
96
+ {
97
+ from: `([{,]\\s*)${to}\\s*,\\s*(?=(?:[\\w\\s,]*,\\s*)?${to}\\b(?!\\s+as\\b)[\\w\\s,]*\\}\\s*from\\s*['"]${CORE$1}['"])`,
98
+ to: '$1'
99
+ }
100
+ ];
101
+ // Templates read the enums when a component exposes them under their own name.
102
+ const DEFAULT_ENUM_MEMBERS = [
103
+ { from: '\\bKbqThemeSelector\\.Default\\b', to: 'KbqThemeSelector.Light' },
104
+ { from: '\\bKbqThemeNames\\.Default\\b', to: 'KbqThemeNames.Light' }
105
+ ];
106
+ // The members of `ThemePalette` that `KbqComponentColors` holds under the same value; the others style nothing.
107
+ const THEME_PALETTE = [
108
+ {
109
+ from: `(?<=${importedFromCore('ThemePalette')}[\\s\\S]*)\\bThemePalette\\.(Error|Warning|Success)\\b`,
110
+ to: 'KbqComponentColors.$1',
111
+ ensureImport: { symbol: 'KbqComponentColors', from: CORE$1 }
112
+ },
113
+ {
114
+ // The import specifier, with one of its commas, once nothing else names it; an emptied clause is dropped by
115
+ // `removeImport`. A re-export is reported instead.
116
+ from: `(?<=\\bimport\\s*(?:type\\s*)?\\{[^}]*)${listItemPattern.listItemPattern('\\bThemePalette\\b(?!\\s+as\\b)')}(?=[^}]*\\}\\s*from\\s*['"]${CORE$1}['"])(?![\\s\\S]*\\bThemePalette\\b)`,
117
+ to: '',
118
+ removeImport: { symbol: 'ThemePalette', from: CORE$1 }
119
+ }
120
+ ];
121
+ /**
122
+ * The `mc` alias `name` of a list item slot: an attribute of an opening tag in a template, or an attribute selector
123
+ * in a string, such as a `querySelector()` argument. The template replacements run over the whole of a `.ts` file,
124
+ * where the name anywhere else is the app's own: `mcLine = 1`, `this.mcLine`, a `.mcLine` class in `styles`.
125
+ */
126
+ const mcAlias = (name, to) => [
127
+ { from: `(?<=<[a-zA-Z][\\w-]*\\s${tagPatterns.TAG_BODY}*)(?<=\\s)${name}(?=[\\s=/>])`, to },
128
+ { from: `(?<=['"\`][^'"\`\\n]*\\[\\s*)${name}(?=\\s*[\\]=~|^$*])`, to }
129
+ ];
130
+ /** `name` as the attribute of a selector in a stylesheet, which matches an HTML attribute in any case. */
131
+ const attributeSelector = (name) => {
132
+ const anyCase = [...name].map((char) => `[${char.toLowerCase()}${char.toUpperCase()}]`).join('');
133
+ return `(?<=\\[\\s*)${anyCase}(?=\\s*[\\]=~|^$*])`;
134
+ };
135
+ // In a stylesheet, only an attribute selector: `.mcLine` and `$mcLine` are the app's own.
136
+ const MC_SELECTORS = [
137
+ { from: attributeSelector('mcLine'), to: 'kbq-line' },
138
+ { from: attributeSelector('mcListIcon'), to: 'kbq-list-icon' }
139
+ ];
140
+ /** Undocumented core exports nothing in the library needed, removed in 21.0.0, with what to do instead. */
141
+ const UNUSED_EXPORTS = [
142
+ {
143
+ symbols: [
144
+ 'POSITION_MAP',
145
+ 'EXTENDED_OVERLAY_POSITIONS',
146
+ 'POSITION_PRIORITY_STRATEGY',
147
+ '\\w+_POSITION_PRIORITY',
148
+ 'ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT',
149
+ 'SELECT_PANEL_VIEWPORT_PADDING',
150
+ 'NUMBER_FORMAT_REGEXP',
151
+ 'isWithin'
152
+ ],
153
+ message: 'The pop-up position lists (`POSITION_MAP`, `EXTENDED_OVERLAY_POSITIONS`, `POSITION_PRIORITY_STRATEGY`, ' +
154
+ 'the `*_POSITION_PRIORITY` lists), `ARROW_BOTTOM_MARGIN_AND_HALF_HEIGHT`, ' +
155
+ '`SELECT_PANEL_VIEWPORT_PADDING`, `NUMBER_FORMAT_REGEXP` and `isWithin()` are no longer exported: ' +
156
+ 'they are implementation details of the pop-ups, the select and the number pipes. Copy the values ' +
157
+ 'you need; for a pop-up position, set `kbqPlacement` on the trigger.'
158
+ },
159
+ {
160
+ symbols: ['KBQ_SELECT_SCROLL_STRATEGY_PROVIDER'],
161
+ message: '`KBQ_SELECT_SCROLL_STRATEGY_PROVIDER` was removed: `KBQ_SELECT_SCROLL_STRATEGY` has a root default, ' +
162
+ 'so drop the provider; to change the strategy, provide `KBQ_SELECT_SCROLL_STRATEGY` itself.'
163
+ },
164
+ {
165
+ symbols: ['KBQ_CHECKABLE_CONTROL_VALUE_ACCESSOR'],
166
+ message: '`KBQ_CHECKABLE_CONTROL_VALUE_ACCESSOR` is no longer exported: `KbqCheckable` registers itself as the ' +
167
+ 'value accessor, so drop the provider.'
168
+ },
169
+ {
170
+ symbols: ['KbqHover'],
171
+ message: '`KbqHover` was removed: bind `(mouseenter)` and `(mouseleave)`, or style `:hover`. Its host class ' +
172
+ '`kbq-hover` forced the hover look of the themes on every host.'
173
+ },
174
+ {
175
+ symbols: ['CanColor'],
176
+ message: '`CanColor` was removed: nothing implemented it. Type the member `Signal<KbqComponentColors | string>`, ' +
177
+ 'or add `KbqColorDirective` to the host directives.'
178
+ },
179
+ {
180
+ symbols: ['KbqAnimationCurves', 'KbqAnimationDurations'],
181
+ message: '`KbqAnimationCurves` and `KbqAnimationDurations` were removed: they timed the `@angular/animations` ' +
182
+ 'triggers the library no longer has. Copy the values you need into your own constants.'
183
+ },
184
+ {
185
+ symbols: ['KbqRectangleItem', 'countGroupLabelsBeforeOption'],
186
+ message: '`KbqRectangleItem` (left over from the removed navbar-ic) and `countGroupLabelsBeforeOption()` were ' +
187
+ 'removed without a replacement: nothing in the library used them.'
188
+ },
189
+ {
190
+ symbols: ['KbqLineSetter'],
191
+ message: '`KbqLineSetter` was removed, and a list item no longer gets the `kbq-2-line`, `kbq-3-line` and ' +
192
+ '`kbq-multi-line` classes: no style read them.'
193
+ },
194
+ {
195
+ symbols: ['KbqLine'],
196
+ message: '`KbqLine` was removed: only `KbqListItem.lines` read it. The `kbq-line` attribute still places an ' +
197
+ 'element in the text of a list item; drop `KbqLine` from `imports`, and to count the lines, query ' +
198
+ 'your own elements, for example `contentChildren(...)` of a directive of yours.'
199
+ }
200
+ ];
201
+ // The 20.x classes deriving from `KbqPopUp` or `KbqPopUpTrigger`: a trigger reaches its pop-up through the untyped
202
+ // `instance`, so a removed member called there only fails at run time.
203
+ const POP_UP_SUBCLASS = '\\bextends\\s+(?:KbqPopUp(?:Trigger)?|Kbq(?:Tooltip|Popover(?:Confirm)?|NotificationCenter|AppSwitcher)' +
204
+ '(?:Component|Trigger)|Kbq(?:Title|EllipsisCenter)Directive|KbqPasswordToggle|KbqNavbar(?:Item|Brand)|' +
205
+ 'Kbq(?:Timezone)?OptionTooltip)\\b';
206
+ // The 20.x pop-up classes, whose `elementRef` is a getter now; a trigger keeps it as a field.
207
+ const POP_UP_PANEL_SUBCLASS = '\\bextends\\s+(?:KbqPopUp|Kbq(?:Tooltip|Popover(?:Confirm)?|NotificationCenter|AppSwitcher)Component)\\b';
208
+ // `elementRef` declared as a field, decorated or not, or as a constructor parameter property.
209
+ const ELEMENT_REF_FIELD = '(?:^|\\n)\\s*(?:@ViewChild\\s*\\([^)]*\\)\\s*)?(?:(?:public|protected|private|override|readonly|declare)\\s+)*' +
210
+ 'elementRef\\s*[!?]?\\s*(?:=(?!=)|:[^;,(){}=]*;)|' +
211
+ '\\b(?:public|protected|private)\\s+(?:readonly\\s+)?elementRef\\s*\\??\\s*:';
212
+ // The unprefixed date pipes and their `ImpurePipe` twins, by pipe name and by class name.
213
+ const LEGACY_DATE_PIPE = '(?:absolute(?:Long|Short)Date(?:Time)?|relative(?:Long|Short)Date(?:Time)?|range(?:Long|Short)Date(?:Time)?|' +
214
+ 'rangeMiddleDateTime|duration(?:Shortest|Long|Short))(?:ImpurePipe)?';
215
+ const LEGACY_DATE_PIPE_CLASS = '(?:(?:Absolute|Relative|Range|Duration)\\w*Formatter(?:Impure)?Pipe|BaseFormatterPipe)';
216
+ /** Deprecated in 21.0.0 for removal in 22.0.0, with what to use instead. */
217
+ const DEPRECATED = [
218
+ {
219
+ pattern: `(?<!\\|)\\|\\s*${LEGACY_DATE_PIPE}(?![\\w-])|${importedFromCore(LEGACY_DATE_PIPE_CLASS)}`,
220
+ message: 'The unprefixed date pipes (`absoluteLongDate`…`durationShort`) and their `ImpurePipe` twins are ' +
221
+ 'deprecated and will be removed in 22.0.0: use the `kbq*` pipe of the same format with the same ' +
222
+ 'arguments, for example `kbqAbsoluteLongDate` (`KbqAbsoluteLongDatePipe`), which follows a locale change.'
223
+ },
224
+ {
225
+ pattern: `(?<!\\|)\\|\\s*mcHighlight(?![\\w-])|${importedFromCore('KbqHighlightPipe')}`,
226
+ message: 'The `mcHighlight` pipe (`KbqHighlightPipe`) is deprecated and will be removed in 22.0.0: use ' +
227
+ '`kbqHighlightBold` (`KbqHighlightBoldPipe`), which marks the matches the same way.'
228
+ },
229
+ {
230
+ pattern: importedFromCore('(?:isDigit|isBoolean|KbqMeasureScrollbarService)'),
231
+ message: '`isDigit()`, `isBoolean()` and `KbqMeasureScrollbarService` from `@koobiq/components/core` are ' +
232
+ "deprecated and will be removed in 22.0.0: use `isNumberKey()`, `typeof value === 'boolean'`, and " +
233
+ '`element.offsetWidth - element.clientWidth` of the element that scrolls.'
234
+ },
235
+ {
236
+ pattern: '\\.getFocusOrigin\\(\\)',
237
+ message: '`FocusKeyManager.getFocusOrigin()` is deprecated and will be removed in 22.0.0: keep the origin you ' +
238
+ 'pass to `setFocusOrigin()`.'
239
+ },
240
+ {
241
+ // Beside `placeholder` or under `datepicker`: a `KBQ_DATE_FORMATS` object, its replacement, has the key too.
242
+ pattern: '\\bdatepicker\\s*:\\s*\\{[^{}]*\\bdateInput\\s*:|\\bplaceholder\\s*:[^{}]*\\bdateInput\\s*:|' +
243
+ '\\bdateInput\\s*:[^{}]*\\bplaceholder\\s*:|\\.datepicker\\??\\.dateInput\\b',
244
+ message: '`dateInput` of the datepicker locale configuration is deprecated and will be removed in 22.0.0: ' +
245
+ 'nothing reads it. Set the input format through `KBQ_DATE_FORMATS`.'
246
+ }
247
+ ];
248
+ /**
249
+ * Removed in 21.0.0: the `Default` members of `KbqThemeSelector` and `KbqThemeNames`, `KbqDefaultThemes`,
250
+ * `KbqTheme`, the legacy `ThemeService`, `getOptionScrollPosition`, `ThemePalette`, the unused undocumented
251
+ * exports and members with `KbqLineSetter`, `KbqLine` and `KbqListItem.lines`, and the `mcLine` and `mcListIcon`
252
+ * aliases. Also reports the core API deprecated for removal in 22.0.0.
253
+ */
254
+ const core = {
255
+ tsReplacements: [
256
+ ...DEFAULT_ENUM_MEMBERS,
257
+ ...rename('KbqDefaultThemes', 'KBQ_DEFAULT_THEMES'),
258
+ ...rename('KbqTheme', 'KbqThemeConfig'),
259
+ ...THEME_PALETTE
260
+ ],
261
+ templateReplacements: [
262
+ ...DEFAULT_ENUM_MEMBERS,
263
+ ...mcAlias('mcLine', 'kbq-line'),
264
+ ...mcAlias('mcListIcon', 'kbq-list-icon')
265
+ ],
266
+ scssReplacements: MC_SELECTORS,
267
+ warnPatterns: [
268
+ ...UNUSED_EXPORTS.map(({ symbols, message }) => ({
269
+ pattern: importedFromCore(`(?:${symbols.join('|')})`),
270
+ message
271
+ })),
272
+ ...DEPRECATED,
273
+ {
274
+ pattern: '(?<![\\w-])kbq-(?:2|3|multi)-line(?![\\w-])',
275
+ message: 'A list item no longer gets the `kbq-2-line`, `kbq-3-line` and `kbq-multi-line` classes: style the ' +
276
+ 'item by its content instead, for example `.kbq-list-item:has(.kbq-line + .kbq-line)`.'
277
+ },
278
+ {
279
+ pattern: '\\.(?:handleBodyInteraction\\(|isSpecialFormatForRULocale\\(|roundingOptions\\b)',
280
+ message: '`KbqPopUp.handleBodyInteraction()` was removed: nothing called it. `isSpecialFormatForRULocale()` ' +
281
+ 'and `roundingOptions` of the number pipes are private: configure a pipe through its arguments and ' +
282
+ 'the formatters locale configuration.'
283
+ },
284
+ {
285
+ anchor: POP_UP_SUBCLASS,
286
+ pattern: '\\b(?:this|super|instance)[!?]?\\.(?:markForCheck\\s*\\(|warning\\b|closeOnInteraction\\b)|' +
287
+ '\\boverride\\s+(?:readonly\\s+)?(?:markForCheck|warning|closeOnInteraction)\\b',
288
+ message: '`KbqPopUp.markForCheck()`, `warning` and the protected `closeOnInteraction` were removed. Delete a ' +
289
+ '`markForCheck()` made after `updateClassMap()` or a change of `visibility`: both re-render the ' +
290
+ 'pop-up now. After writing a field of its own, a pop-up subclass calls ' +
291
+ '`this.changeDetectorRef.markForCheck()`; a trigger that writes the fields of its pop-up calls ' +
292
+ '`this.instance.detectChanges()`. `warning` did nothing and `closeOnInteraction` only gated the ' +
293
+ 'removed `handleBodyInteraction()`: delete them.'
294
+ },
295
+ {
296
+ anchor: POP_UP_PANEL_SUBCLASS,
297
+ pattern: ELEMENT_REF_FIELD,
298
+ message: '`KbqPopUp.elementRef` is a protected getter now, so a pop-up subclass that re-declares it as a ' +
299
+ "field, such as `@ViewChild('panel') elementRef`, no longer compiles. Override the getter over a " +
300
+ 'signal query instead: ' +
301
+ "`private readonly panel = viewChild.required<ElementRef<HTMLElement>>('panel');` and " +
302
+ '`override get elementRef(): ElementRef<HTMLElement> { return this.panel(); }`.'
303
+ },
304
+ {
305
+ anchor: '\\bKbqListItem\\b|<kbq-list-item\\b|\\bkbq-list-item\\b',
306
+ pattern: '\\.lines\\b',
307
+ message: '`KbqListItem.lines` was removed with `KbqLine`: nothing in the library counted the lines. Query ' +
308
+ 'the elements you mark with `kbq-line` yourself.'
309
+ },
310
+ {
311
+ anchor: '\\bKbqSelectSearch\\b',
312
+ pattern: '\\.hasPlaceholder\\s*\\(',
313
+ message: '`KbqSelectSearch.hasPlaceholder()` was removed: nothing called it. Read the placeholder of the ' +
314
+ 'search input instead.'
315
+ },
316
+ {
317
+ anchor: '\\bKbqFormElement\\b|["\']kbqFormElement["\']',
318
+ pattern: '\\.isRow\\b',
319
+ message: '`KbqFormElement.isRow` was removed: it only reflected the `kbq-form__row` class of the element, ' +
320
+ 'so check that class instead.'
321
+ },
322
+ {
323
+ pattern: '\\bKbqTheme\\b',
324
+ message: '`KbqTheme` was renamed to `KbqThemeConfig`, which requires `colorScheme` (`light` or `dark`) and ' +
325
+ 'has no `selected`: add `colorScheme` to every custom theme and compare a theme with ' +
326
+ '`KbqThemeService.currentTheme()` instead of reading `selected`.'
327
+ },
328
+ {
329
+ pattern: importedFromCore('ThemeService'),
330
+ message: '`ThemeService` was removed: inject `KbqThemeService` instead. `current.value` and `getTheme()` ' +
331
+ 'become `currentTheme()` (a signal: wrap it in `toObservable()` for a stream), `themes` becomes ' +
332
+ '`themes()` and `setThemes()`, `setTheme(theme)` becomes `setMode(theme.colorScheme)`, or ' +
333
+ '`selectTheme(theme.name)` to pin that theme. `KbqThemeService` applies a theme once injected and ' +
334
+ "starts in `'auto'` mode: set the initial mode with `kbqThemeProvider({ mode })`."
335
+ },
336
+ {
337
+ pattern: importedFromCore('getOptionScrollPosition'),
338
+ message: '`getOptionScrollPosition()` was removed. `KbqOption.focus()` scrolls an option into view; for an ' +
339
+ 'element of your own, call `kbqFocusAndReveal(element)` from `@koobiq/components/core`.'
340
+ },
341
+ {
342
+ // Every use but the rewritten members and the import specifier itself.
343
+ anchor: importedFromCore('ThemePalette'),
344
+ pattern: '\\bThemePalette\\s+as\\b|\\bThemePalette\\b(?!\\s*\\.\\s*(?:Error|Warning|Success)\\b)(?![^{}]*\\}\\s*from\\b)',
345
+ message: '`ThemePalette` was removed: use `KbqComponentColors`, which `Error`, `Warning` and `Success` are ' +
346
+ 'rewritten to. `Primary`, `Secondary`, `Info` and `Default` matched no style of any component: drop ' +
347
+ 'the color, or pick a member of `KbqComponentColors` the component supports. Instead of `Empty`, ' +
348
+ "leave `color` unset: `KbqComponentColors.Empty` is `'empty'`, not `''`. Type a member " +
349
+ '`KbqComponentColors`, and hand a template `KbqComponentColors` instead of the enum.'
350
+ },
351
+ {
352
+ pattern: `\\bexport\\s*(?:type\\s*)?\\{[^}]*\\bThemePalette\\b[^}]*\\}\\s*from\\s*['"]${CORE$1}['"]`,
353
+ message: 'A re-export of `ThemePalette` from `@koobiq/components/core` is left as is: the enum was removed, ' +
354
+ 'and `KbqComponentColors` has other members and values, so it cannot take the name. Re-export ' +
355
+ '`KbqComponentColors` instead and migrate the files that import `ThemePalette` from here.'
356
+ }
357
+ ]
358
+ };
359
+
360
+ const CORE = '@koobiq/components/core';
361
+ const DROPDOWN = '@koobiq/components/dropdown';
362
+ /** A file that uses one of the selects: an import in code or the element in a template. */
363
+ const SELECTS = '@koobiq/components/(?:select|tree-select|timezone)\\b|<kbq-(?:tree-|timezone-)?select\\b';
364
+ /** A file that names the dropdown entry point, before or after the match. */
365
+ const IN_DROPDOWN_FILE = `(?:(?<=['"]${DROPDOWN}['"][\\s\\S]*)|(?=[\\s\\S]*['"]${DROPDOWN}['"]))`;
366
+ const TRIGGER_WIDTH = 'it had no effect, delete it. To match the panel to an element other than the trigger, set ' +
367
+ '`KbqDropdownTrigger.widthOrigin`.';
368
+ const OFFSET_Y = '`offsetY` was removed from `KbqSelect`, `KbqTreeSelect` and `KbqTimezoneSelect`; delete it. The gap between ' +
369
+ 'the trigger and the panel is the `--kbq-connected-overlay-gap` CSS variable, set on `:root` or on the pane.';
370
+ const CLEAR_VALUE = '`clearValue()` was removed from `KbqSelect`, `KbqTreeSelect` and `KbqTimezoneSelect`: project ' +
371
+ '`<kbq-cleaner />` into the select for the user to clear it, and reset the bound form control or model to ' +
372
+ 'clear it from code.';
373
+ /**
374
+ * Moves `symbol` of `module` to `KbqPanelWidth` of the core entry point. An aliased import and a re-export are
375
+ * left to the warning below.
376
+ */
377
+ const toPanelWidth = (symbol, module) => [
378
+ {
379
+ // The imported specifier, with one of its commas; an emptied clause is dropped by `removeImport`.
380
+ from: `(?<=import\\s*(?:type\\s*)?\\{[^}]*)${listItemPattern.listItemPattern(`\\b${symbol}\\b(?!\\s+as\\b)`)}(?=[^}]*\\}\\s*from\\s*['"]${module}['"])`,
381
+ to: '',
382
+ removeImport: { symbol, from: module },
383
+ ensureImport: { symbol: 'KbqPanelWidth', from: CORE }
384
+ },
385
+ {
386
+ from: `\\b${symbol}\\b(?!\\s+as\\b)(?![^}]*\\}\\s*from\\s*['"]${module}['"])`,
387
+ to: 'KbqPanelWidth',
388
+ ensureImport: { symbol: 'KbqPanelWidth', from: CORE }
389
+ }
390
+ ];
391
+ /**
392
+ * Removed in 21.0.0: KbqDropdown triggerWidth, KbqSelect and KbqTreeSelect offsetY, AUTOCOMPLETE_PANEL_HEIGHT,
393
+ * DropdownPositionX and DropdownPositionY, KbqSelectPanelWidth and KbqTreeSelectPanelWidth, KbqSelect and
394
+ * KbqTreeSelect clearValue(), the kbq-dropdown__group-header_small modifier.
395
+ *
396
+ * The type aliases are rewritten to their replacements. The rest has nothing to rewrite to and is reported: none
397
+ * of the members was an input, so a template can only reach them through a reference.
398
+ */
399
+ const dropdownAndSelect = {
400
+ tsReplacements: [
401
+ // Only in a file that names the dropdown entry point: an app may have a type of the same name.
402
+ { from: `\\bDropdownPosition([XY])\\b${IN_DROPDOWN_FILE}`, to: 'KbqDropdownPosition$1' },
403
+ {
404
+ // A clause that imported both names now holds the new one twice; keep the last one.
405
+ from: `([{,]\\s*)KbqDropdownPosition([XY])\\s*,\\s*(?=(?:[\\w\\s,]*,\\s*)?KbqDropdownPosition\\2\\b(?!\\s+as\\b)[\\w\\s,]*\\}\\s*from\\s*['"]${DROPDOWN}['"])`,
406
+ to: '$1'
407
+ },
408
+ ...toPanelWidth('KbqSelectPanelWidth', '@koobiq/components/select'),
409
+ ...toPanelWidth('KbqTreeSelectPanelWidth', '@koobiq/components/tree-select')
410
+ ],
411
+ templateReplacements: [],
412
+ warnPatterns: [
413
+ {
414
+ anchor: '@koobiq/components/dropdown\\b|<kbq-dropdown\\b',
415
+ pattern: '\\.triggerWidth\\b',
416
+ message: `\`KbqDropdown.triggerWidth\` was removed; ${TRIGGER_WIDTH}`
417
+ },
418
+ {
419
+ anchor: '\\bKbqDropdownPanel\\b|\\bextends\\s+KbqDropdown\\b',
420
+ pattern: '(?<!\\.)\\btriggerWidth\\b',
421
+ message: `\`KbqDropdownPanel.triggerWidth\` was removed; ${TRIGGER_WIDTH}`
422
+ },
423
+ {
424
+ anchor: SELECTS,
425
+ // Called, it is the `KbqDropdownTrigger.offsetY` input, which stays.
426
+ pattern: '\\.offsetY\\b(?!\\s*\\()',
427
+ message: OFFSET_Y
428
+ },
429
+ {
430
+ anchor: '\\bextends\\s+Kbq(?:Tree|Timezone)?Select\\b',
431
+ pattern: '(?:^|\\n)\\s*(?:(?:public|override)\\s+)*offsetY\\s*(?::\\s*number\\s*)?[=;]',
432
+ message: OFFSET_Y
433
+ },
434
+ {
435
+ anchor: '@koobiq/components/autocomplete\\b',
436
+ pattern: '\\bAUTOCOMPLETE_PANEL_HEIGHT\\b',
437
+ message: '`AUTOCOMPLETE_PANEL_HEIGHT` was removed; the library did not read it. The panel height is capped ' +
438
+ 'by the `--kbq-autocomplete-size-panel-max-height` CSS variable; keep a constant of your own if ' +
439
+ 'you need the 256.'
440
+ },
441
+ {
442
+ // The rewrite above leaves the type alone in a file that does not name the dropdown.
443
+ pattern: `^(?![\\s\\S]*['"]${DROPDOWN}['"])[\\s\\S]*\\bDropdownPosition[XY]\\b`,
444
+ message: '`DropdownPositionX` and `DropdownPositionY` were removed from `@koobiq/components/dropdown`. If ' +
445
+ 'this one is theirs, re-exported, use `KbqDropdownPositionX` / `KbqDropdownPositionY`.'
446
+ },
447
+ {
448
+ pattern: '\\bKbq(?:Tree)?SelectPanelWidth\\s+as\\b|\\bexport\\s*(?:type\\s+)?\\{[^}]*\\bKbq(?:Tree)?SelectPanelWidth\\b',
449
+ message: '`KbqSelectPanelWidth` and `KbqTreeSelectPanelWidth` were removed: use `KbqPanelWidth` from ' +
450
+ '`@koobiq/components/core`. Plain imports and uses are rewritten; fix this aliased import or ' +
451
+ 're-export by hand.'
452
+ },
453
+ {
454
+ anchor: SELECTS,
455
+ // `KbqFormField.clearValue()` stays; on `this` it is a method of the file's own class.
456
+ pattern: '(?<!\\bthis|[Ff]ormField(?:\\(\\))?[!?]?)\\.clearValue\\b',
457
+ message: `${CLEAR_VALUE} \`KbqFormField.clearValue()\` stays.`
458
+ },
459
+ {
460
+ anchor: '\\bextends\\s+Kbq(?:Tree|Timezone)?Select\\b',
461
+ pattern: '\\bclearValue\\b',
462
+ message: `${CLEAR_VALUE} A subclass drops its override.`
463
+ },
464
+ {
465
+ pattern: '\\bkbq-dropdown__group-header_small\\b',
466
+ message: 'The `kbq-dropdown__group-header_small` modifier was removed: replace the header with ' +
467
+ '`<kbq-optgroup label="…" />` (`KbqOptgroup` from `@koobiq/components/core`), which renders the ' +
468
+ 'subheading in the same typography and color.'
469
+ }
470
+ ]
471
+ };
472
+
473
+ const FILTER_BAR = '@koobiq/components/filter-bar';
474
+ /** The rest of a named import or re-export clause of the filter bar entry point. */
475
+ const FILTER_BAR_CLAUSE_END = `(?=[^}]*\\}\\s*from\\s*['"]${FILTER_BAR}['"])`;
476
+ /** The rest of an object literal at the same depth, past nested objects up to two levels deep. */
477
+ const SAME_OBJECT = '(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*';
478
+ /** A key only a pipe has. */
479
+ const PIPE_KEY = '(?:\\b(?:cleanable|removable)\\s*:|\\btype\\s*:\\s*KbqPipeTypes\\.)';
480
+ /** The `required` key, as opposed to the `required?` of an interface or `Validators.required`. */
481
+ const REQUIRED_KEY = '\\brequired\\s*:';
482
+ /** Removed in 21.0.0: KbqFilterBar.changes, KbqFilterBarRefresher, the pipe min-width directive, KbqPipe.required. */
483
+ const filterBar = {
484
+ tsReplacements: [
485
+ { from: '\\bKbqFilterBarRefresher\\b', to: 'KbqFilterRefresher' },
486
+ {
487
+ // A clause that imported both names now holds `KbqFilterRefresher` twice; keep the last one.
488
+ from: `([{,]\\s*)KbqFilterRefresher\\s*,\\s*(?=(?:[\\w\\s,]*,\\s*)?KbqFilterRefresher\\b(?!\\s+as\\b)[\\w\\s,]*\\}\\s*from\\s*['"]${FILTER_BAR}['"])`,
489
+ to: '$1'
490
+ },
491
+ {
492
+ // The specifier, with one of its commas; an emptied clause is dropped by `removeImport`.
493
+ from: `(?<=(?:import|export)\\s*(?:type\\s*)?\\{[^}]*)${listItemPattern.listItemPattern('\\bKbqPipeMinWidth\\b(?!\\s+as\\b)')}${FILTER_BAR_CLAUSE_END}`,
494
+ to: '',
495
+ removeImport: { symbol: 'KbqPipeMinWidth', from: FILTER_BAR }
496
+ },
497
+ // An element of an `imports` array: the first or a middle one, the last one, the only one.
498
+ { from: '([\\[,]\\s*)KbqPipeMinWidth\\s*,\\s*', to: '$1' },
499
+ { from: ',\\s*KbqPipeMinWidth(\\s*\\])', to: '$1' },
500
+ { from: '\\[\\s*KbqPipeMinWidth\\s*\\]', to: '[]' }
501
+ ],
502
+ templateReplacements: [{ from: `\\s+kbqPipeMinWidth(?:\\s*=\\s*(?:"[^"]*"|'[^']*'))?(\\s|/?>)`, to: '$1' }],
503
+ warnPatterns: [
504
+ {
505
+ anchor: '\\bKbqFilterBar\\b',
506
+ pattern: '\\.changes\\b',
507
+ message: 'KbqFilterBar.changes was removed in 21.0.0; it never emitted. If this `.changes` is the filter ' +
508
+ "bar's, read `filterBar.filter()` inside an `effect(...)` or listen to `(filterChange)`."
509
+ },
510
+ {
511
+ // Import specifiers and array elements are removed by the rewrites above.
512
+ pattern: '\\bKbqPipeMinWidth\\b(?!\\s*[,\\]}])',
513
+ message: 'KbqPipeMinWidth (kbqPipeMinWidth) was removed in 21.0.0 without a replacement: a pipe lays its ' +
514
+ 'name and value out as shrinkable grid tracks, which keeps a short part intact. Remove this reference.'
515
+ },
516
+ {
517
+ // Only next to a key of the same pipe: a form config or a validator in the same file has `required:` too.
518
+ anchor: FILTER_BAR,
519
+ pattern: `${REQUIRED_KEY}${SAME_OBJECT}${PIPE_KEY}|${PIPE_KEY}${SAME_OBJECT}${REQUIRED_KEY}`,
520
+ message: 'KbqPipe.required was removed in 21.0.0; the filter bar never read it. Delete `required` from the ' +
521
+ 'pipe and set `cleanable: false` and `removable: false` to keep the pipe from being cleared or removed.'
522
+ },
523
+ {
524
+ anchor: `${FILTER_BAR}|\\bkbq-pipe`,
525
+ pattern: '\\b(?:data|\\w*[pP]ipe)[?!]?\\.required\\b(?!\\s*\\()',
526
+ message: "KbqPipe.required was removed in 21.0.0. If this `.required` is a pipe's, a pipe that cannot be " +
527
+ 'cleared or removed has `cleanable` and `removable` set to false: read those instead.'
528
+ }
529
+ ]
530
+ };
531
+
532
+ /** A named import of `symbol` from the form field entry point, so an app's own symbol of that name is left alone. */
533
+ const importedFromFormField = (symbol) => `import\\s*(?:type\\s*)?\\{[^}]*\\b${symbol}\\b[^}]*\\}\\s*from\\s*['"]@koobiq/components/form-field['"]`;
534
+ /** A member access on a receiver named like a form field: `formField.x`, `this.formField().x`, `myFormField?.x`. */
535
+ const onFormField = (member) => `\\b\\w*[fF]ormField\\b(?:\\(\\))?[?!]?\\.${member}\\b`;
536
+ const FORM_FIELD_OWNER = '\\bKbqFormField\\b|\\bkbqFormField\\b';
537
+ /**
538
+ * Removed in 21.0.0: the `KbqPasswordHint` rules engine (`PasswordRules`, `regExpPasswordValidator`,
539
+ * `hasPasswordStrengthError`), what only served it on `KbqFormField` and `KbqInputPassword`, the unused
540
+ * `KbqFormField.canCleanerClearByEsc` and `onKeyDown`, and the no-op `KbqStepper.connectTo()`. None has a 1:1
541
+ * replacement, so all are reported.
542
+ */
543
+ const formField = {
544
+ tsReplacements: [],
545
+ templateReplacements: [],
546
+ warnPatterns: [
547
+ {
548
+ pattern: importedFromFormField('KbqPasswordHint'),
549
+ message: '`KbqPasswordHint` was removed: use `KbqReactivePasswordHint`. Put the rules on the form control as ' +
550
+ 'validators (`PasswordValidators` from `@koobiq/components/core`) and bind the hint to their ' +
551
+ 'errors: `<kbq-reactive-password-hint [hasError]="control.hasError(\'minLength\')">`.'
552
+ },
553
+ {
554
+ pattern: '\\bkbq-password-hint(?:__icon)?\\b',
555
+ message: '`<kbq-password-hint>` was removed: replace it with `<kbq-reactive-password-hint [hasError]="…">`, ' +
556
+ 'bound to the error of the matching validator of the control (`PasswordValidators` from ' +
557
+ '`@koobiq/components/core`). `[rule]`, `[min]`, `[max]`, `[regex]`, `[checkRule]` and ' +
558
+ '`[viewFormField]` have no counterpart, and the new hint has to be inside the `kbq-form-field`. ' +
559
+ 'Selectors on `kbq-password-hint` / `.kbq-password-hint` target `.kbq-reactive-password-hint` now.'
560
+ },
561
+ {
562
+ pattern: importedFromFormField('PasswordRules'),
563
+ message: '`PasswordRules` was removed: express each rule as a validator of the form control — ' +
564
+ '`PasswordValidators.minLength`, `maxLength`, `minUppercase`, `minLowercase`, `minNumber` or ' +
565
+ '`minSpecial` from `@koobiq/components/core`, or a `ValidatorFn` of your own — and show it with ' +
566
+ '`<kbq-reactive-password-hint [hasError]="…">`.'
567
+ },
568
+ {
569
+ pattern: importedFromFormField('regExpPasswordValidator'),
570
+ message: '`regExpPasswordValidator` was removed: write the pattern you need into a validator of the form ' +
571
+ 'control (`Validators.pattern` or a `ValidatorFn` of your own), or use `PasswordValidators` from ' +
572
+ '`@koobiq/components/core`.'
573
+ },
574
+ {
575
+ pattern: importedFromFormField('hasPasswordStrengthError'),
576
+ message: '`hasPasswordStrengthError` was removed: the password rules are validators of the form control ' +
577
+ "now, so check the control itself (`control.invalid`, `control.hasError('minLength')`)."
578
+ },
579
+ {
580
+ anchor: '@koobiq/components/(?:form-field|input)|\\bkbqInputPassword\\b',
581
+ pattern: `['"]passwordStrength['"]|\\berrors[?!]?\\.passwordStrength\\b`,
582
+ message: 'The form field no longer sets the `passwordStrength` error on the control: it came from the removed ' +
583
+ '`KbqPasswordHint`. Check the errors of the password validators of the control instead.'
584
+ },
585
+ {
586
+ anchor: FORM_FIELD_OWNER,
587
+ pattern: `\\.hasPasswordHint\\b|${onFormField('passwordHints')}`,
588
+ message: '`KbqFormField.passwordHints` and `hasPasswordHint` were removed together with `KbqPasswordHint`. ' +
589
+ 'Query the hints you render (`viewChildren(KbqReactivePasswordHint)`) or read the errors of the control.'
590
+ },
591
+ {
592
+ pattern: '\\bcanCleanerClearByEsc\\b',
593
+ message: '`KbqFormField.canCleanerClearByEsc` was removed: it was unused and had no effect. Delete this ' +
594
+ 'read or assignment.'
595
+ },
596
+ {
597
+ anchor: FORM_FIELD_OWNER,
598
+ pattern: `${onFormField('onKeyDown')}\\s*\\(`,
599
+ message: '`KbqFormField.onKeyDown()` was removed: it did nothing. Delete the call; listen to `(keydown)` on ' +
600
+ 'the control if you need the event.'
601
+ },
602
+ {
603
+ anchor: '\\bKbqStepper\\b|\\bkbqStepper\\b|<kbq-stepper\\b',
604
+ pattern: '(?<!\\bthis)\\??\\.connectTo\\s*\\(',
605
+ message: '`KbqStepper.connectTo()` was removed: it did nothing, the stepper finds the number input of its ' +
606
+ 'form field by itself. Delete the call.'
607
+ },
608
+ {
609
+ anchor: '\\bKbqInputPassword\\b|\\bkbqInputPassword\\b',
610
+ pattern: '\\.checkRules\\s*\\(|\\.checkRule\\.(?:next|subscribe|pipe|complete)\\b',
611
+ message: '`KbqInputPassword.checkRules()` and `checkRule` were removed together with `KbqPasswordHint`, ' +
612
+ 'their only listener. `KbqReactivePasswordHint` follows the validators of the control: after ' +
613
+ 'changing a rule, call `control.updateValueAndValidity()`.'
614
+ }
615
+ ]
616
+ };
617
+
618
+ const CHECKBOX = '@koobiq/components/checkbox';
619
+ // A call on `this` is the consumer's own `ControlValueAccessor`, not a checkbox or toggle.
620
+ const NOT_ON_THIS = '(?<!\\bthis)\\??';
621
+ /** The rest of a named import or re-export clause of the checkbox entry point. */
622
+ const CHECKBOX_CLAUSE_END = `(?=[^}]*\\}\\s*from\\s*['"]${CHECKBOX}['"])`;
623
+ /**
624
+ * Removed in 21.0.0: the unused ControlValueAccessor members of KbqCheckbox and KbqToggleComponent, and the
625
+ * re-export of `TransitionCheckState` from the checkbox entry point. Also reports
626
+ * `KbqToggleComponent.onLabelTextChange()`, deprecated for removal in 22.0.0.
627
+ */
628
+ const formsControls = {
629
+ tsReplacements: [
630
+ {
631
+ // The specifier, with one of its commas; an emptied clause is dropped by `removeImport`.
632
+ from: `(?<=import\\s*(?:type\\s*)?\\{[^}]*)${listItemPattern.listItemPattern('\\bTransitionCheckState\\b(?!\\s+as\\b)')}${CHECKBOX_CLAUSE_END}`,
633
+ to: '',
634
+ removeImport: { symbol: 'TransitionCheckState', from: CHECKBOX },
635
+ ensureImport: { symbol: 'TransitionCheckState', from: '@koobiq/components/core' }
636
+ }
637
+ ],
638
+ warnPatterns: [
639
+ {
640
+ pattern: '\\bKBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR\\b',
641
+ message: 'KBQ_CHECKBOX_CONTROL_VALUE_ACCESSOR was removed: KbqCheckbox is not a ControlValueAccessor any more, ' +
642
+ 'the KbqCheckable host directive registers itself as the value accessor of kbq-checkbox. Drop the ' +
643
+ 'provider; [(ngModel)] and [formControl] work without it. Manual migration required.'
644
+ },
645
+ {
646
+ anchor: '\\bKbqCheckbox\\b|\\bKbqToggleComponent\\b|<kbq-(?:checkbox|toggle)\\b',
647
+ pattern: `${NOT_ON_THIS}\\.(?:writeValue|registerOnChange|registerOnTouched|setDisabledState)\\b`,
648
+ message: 'KbqCheckbox and KbqToggleComponent no longer implement ControlValueAccessor: their writeValue(), ' +
649
+ 'registerOnChange(), registerOnTouched() and setDisabledState() were removed, the KbqCheckable ' +
650
+ 'host directive is the value accessor. On a checkbox or toggle, replace writeValue(v) with ' +
651
+ 'checked = !!v, setDisabledState(v) with disabled = v and registerOnChange(fn) with the (change) ' +
652
+ 'output; bind [formControl] / [(ngModel)] to track touched, or call them on the host KbqCheckable ' +
653
+ '(viewChild(KbqCheckbox, { read: KbqCheckable })). Manual migration required.'
654
+ },
655
+ {
656
+ anchor: '\\bKbqCheckbox\\b|<kbq-checkbox\\b',
657
+ pattern: `${NOT_ON_THIS}\\.onTouched\\b`,
658
+ message: 'KbqCheckbox.onTouched was removed: forms never called it, the KbqCheckable host directive ' +
659
+ 'tracks touched. Drop the call or assignment and read touched from the bound [formControl] / ' +
660
+ '[(ngModel)]. Manual migration required.'
661
+ },
662
+ {
663
+ anchor: `\\bKbqToggleComponent\\b|<kbq-toggle\\b|["']kbqToggle["']`,
664
+ pattern: `${NOT_ON_THIS}\\.onLabelTextChange\\s*\\(`,
665
+ message: 'KbqToggleComponent.onLabelTextChange() does nothing now and is deprecated for removal in 22.0.0: ' +
666
+ 'the toggle reads nothing from its label, so a change of it needs no re-check. Delete the call.'
667
+ },
668
+ {
669
+ // Protected, so only a subclass reaches it; a read that is already a call is migrated.
670
+ anchor: '\\bextends\\s+KbqToggleComponent\\b',
671
+ pattern: '\\bcurrentCheckState\\b(?!\\s*\\()',
672
+ message: 'KbqToggleComponent.currentCheckState is a Signal<TransitionCheckState> now, shared with the host ' +
673
+ 'KbqCheckable: read it as currentCheckState(). It is read-only; a transition goes through the ' +
674
+ 'checked and indeterminate setters. Manual migration required.'
675
+ },
676
+ {
677
+ // A plain named import is moved by the rewrite above.
678
+ pattern: `\\bTransitionCheckState\\s+as\\s+\\w+${CHECKBOX_CLAUSE_END}` +
679
+ `|\\bexport\\s*(?:type\\s*)?\\{[^}]*\\bTransitionCheckState\\b${CHECKBOX_CLAUSE_END}` +
680
+ `|import\\s*\\*\\s*as\\s+(\\w+)\\s+from\\s*['"]${CHECKBOX}['"][\\s\\S]*\\b\\1\\.TransitionCheckState\\b`,
681
+ message: 'TransitionCheckState is no longer exported from @koobiq/components/checkbox: import or re-export ' +
682
+ 'it from @koobiq/components/core.'
683
+ }
684
+ ]
685
+ };
686
+
687
+ // An opening tag that carries the brand directive, as an element or an attribute, wherever it sits in the tag.
688
+ const BRAND_TAG = `<(?=${tagPatterns.TAG_BODY}*?\\bkbq-navbar-brand(?![\\w-]))${tagPatterns.TAG_BODY}*?`;
689
+ // An opening `<kbq-dl>` tag that does not set `verticalBreakpoint` as well, which would end up bound twice.
690
+ const DL_TAG_WITHOUT_BREAKPOINT = `<kbq-dl(?![\\w-])(?!${tagPatterns.TAG_BODY}*\\bverticalBreakpoint\\b)${tagPatterns.TAG_BODY}*?\\s`;
691
+ const QUOTED_VALUE = '(?:"[^"]*"|\'[^\']*\')';
692
+ const NUMBER = '\\s*[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?\\s*';
693
+ const QUOTED_NUMBER = `(?:"${NUMBER}"|'${NUMBER}')`;
694
+ const LOADER_OVERLAY_DEPRECATED = '`transparent` and `card` of `<kbq-loader-overlay>` are deprecated and will be removed in 22.0.0: set ' +
695
+ '`surface` instead, `bg` (or `bg-secondary`, `bg-tertiary`) for a transparent overlay, `solid` for an opaque ' +
696
+ 'one and `card` for `card`.';
697
+ /**
698
+ * Removed in 21.0.0: KbqNavbarBrand.longTitle, KbqNavbarItem.getTitleWidth (with KbqNavbarTitle.outerElementWidth,
699
+ * which only fed it), the ellipsis center resizeStream and KbqDlComponent.minWidth. Also reports `transparent` and
700
+ * `card` of the loader overlay, deprecated for removal in 22.0.0.
701
+ */
702
+ const navbarAndLayout = {
703
+ templateReplacements: [
704
+ // `longTitle` on the brand: the two-line title is detected automatically, so the binding is dropped.
705
+ { from: `(${BRAND_TAG})\\s+\\[longTitle\\]\\s*=\\s*${QUOTED_VALUE}`, to: '$1' },
706
+ { from: `(${BRAND_TAG})\\s+longTitle\\s*=\\s*${QUOTED_VALUE}`, to: '$1' },
707
+ { from: `(${BRAND_TAG})\\s+longTitle(?=[\\s/>])(?!\\s*=)`, to: '$1' },
708
+ // `minWidth` on `kbq-dl` was an alias of `verticalBreakpoint`.
709
+ { from: `(${DL_TAG_WITHOUT_BREAKPOINT})\\[minWidth\\](?=\\s*=)`, to: '$1[verticalBreakpoint]' },
710
+ { from: `(${DL_TAG_WITHOUT_BREAKPOINT})minWidth(?=\\s*=\\s*["'])`, to: '$1verticalBreakpoint' }
711
+ ],
712
+ warnPatterns: [
713
+ {
714
+ anchor: '\\bkbq-navbar-brand\\b',
715
+ pattern: `${BRAND_TAG}\\s(?:\\[longTitle\\]|longTitle)(?![\\w-])`,
716
+ message: '`KbqNavbarBrand.longTitle` was removed and its binding dropped: the brand switches to the ' +
717
+ 'two-line title by itself when the title does not fit on one line. A forced `true` or `false` ' +
718
+ 'has no replacement.'
719
+ },
720
+ {
721
+ anchor: '\\bKbqNavbarBrand\\b|["\']kbqNavbarBrand["\']',
722
+ pattern: '\\.longTitle\\s*\\(|setInput\\(\\s*["\']longTitle["\']',
723
+ message: '`KbqNavbarBrand.longTitle` was removed: the two-line title is detected automatically. Drop the ' +
724
+ 'read or write; nothing replaces it.'
725
+ },
726
+ {
727
+ anchor: '\\bKbqNavbarItem\\b|["\']kbqNavbarItem["\']',
728
+ pattern: '\\.getTitleWidth\\s*\\(',
729
+ message: '`KbqNavbarItem.getTitleWidth()` was removed: the navbar collapses items by ' +
730
+ '`getCollapsibleWidth()`. To measure the title, call `getOuterElementWidth()` on its `KbqNavbarTitle`.'
731
+ },
732
+ {
733
+ anchor: '\\bKbqNavbarTitle\\b',
734
+ pattern: '\\.outerElementWidth\\b',
735
+ message: '`KbqNavbarTitle.outerElementWidth` was removed: call `getOuterElementWidth()`, which measures ' +
736
+ 'the title when called instead of once on init.'
737
+ },
738
+ {
739
+ anchor: '\\bKbqEllipsisCenterDirective\\b',
740
+ pattern: '\\.resizeStream\\b',
741
+ message: '`KbqEllipsisCenterDirective.resizeStream` was removed: nothing read it. Drop the call; the ' +
742
+ 'shared `ResizeObserver` re-measures the host, container-only resizes included.'
743
+ },
744
+ {
745
+ // Reported rather than rewritten to `(value) ?? 400`: under `strictTemplates`, NG8102 flags `??` on a
746
+ // value that cannot be nullish, which most bound values are.
747
+ anchor: '<kbq-dl(?![\\w-])',
748
+ pattern: `${DL_TAG_WITHOUT_BREAKPOINT}(?:\\[minWidth\\]|minWidth)\\s*=\\s*(?!${QUOTED_NUMBER})["']`,
749
+ message: '`minWidth` of `<kbq-dl>` was renamed to `verticalBreakpoint`. A value that is not a number, such ' +
750
+ 'as `null`, `undefined`, `""` or `700px`, made `minWidth` fall back to the default 400, while ' +
751
+ '`verticalBreakpoint` reads it as `NaN` and never switches to the vertical layout: make sure the ' +
752
+ 'value is always a number, for example `[verticalBreakpoint]="width ?? 400"`.'
753
+ },
754
+ {
755
+ anchor: '<kbq-dl(?![\\w-])',
756
+ pattern: `<kbq-dl(?![\\w-])(?=${tagPatterns.TAG_BODY}*\\bverticalBreakpoint\\b)${tagPatterns.TAG_BODY}*\\s\\[?minWidth\\b`,
757
+ message: '`minWidth` was removed from `<kbq-dl>` and is left as is where `verticalBreakpoint` is set too. ' +
758
+ 'It took precedence, so move its value into `verticalBreakpoint` and delete it.'
759
+ },
760
+ {
761
+ anchor: '\\bKbqDlComponent\\b',
762
+ pattern: '\\.minWidth\\s*\\(|setInput\\(\\s*["\']minWidth["\']',
763
+ message: '`KbqDlComponent.minWidth` was removed: read and set `verticalBreakpoint` instead. It defaults ' +
764
+ 'to 400, where an unset `minWidth` read `undefined`.'
765
+ },
766
+ {
767
+ anchor: '<kbq-loader-overlay(?![\\w-])',
768
+ pattern: `<kbq-loader-overlay(?![\\w-])${tagPatterns.TAG_BODY}*\\s\\[?(?:transparent|card)(?![\\w-])`,
769
+ message: LOADER_OVERLAY_DEPRECATED
770
+ },
771
+ {
772
+ anchor: '\\bKbqLoaderOverlay\\b',
773
+ pattern: '\\.(?:transparent|card)\\s*\\(|setInput\\(\\s*["\'](?:transparent|card)["\']',
774
+ message: LOADER_OVERLAY_DEPRECATED
775
+ }
776
+ ]
777
+ };
778
+
779
+ /** The removed unprefixed `KbqPopoverTrigger` inputs and the `kbqPopover…` inputs that replace them. */
780
+ const RENAMED_INPUTS = {
781
+ hideIfNotInViewPort: 'kbqPopoverHideIfNotInViewPort',
782
+ defaultPaddings: 'kbqPopoverDefaultPaddings',
783
+ container: 'kbqPopoverContainer',
784
+ hasBackdrop: 'kbqPopoverHasBackdrop',
785
+ hasCloseButton: 'kbqPopoverHasCloseButton',
786
+ closeOnScroll: 'kbqPopoverCloseOnScroll',
787
+ backdropClass: 'kbqPopoverBackdropClass'
788
+ };
789
+ /**
790
+ * Renames `[name]=`, `name=` and a bare `name` on an element that carries `kbqPopover` or `kbqPopoverConfirm`,
791
+ * wherever that attribute stands in the tag. Other components (sidepanel, dropdown, select, …) have inputs of
792
+ * the same names, so an element without the trigger is left alone.
793
+ */
794
+ function popoverInput(name, replacement) {
795
+ return {
796
+ from: `(<[a-zA-Z][\\w-]*(?=${tagPatterns.TAG_BODY}*[\\s\\[]kbqPopover)${tagPatterns.TAG_BODY}*?\\s\\[?)${name}(?=\\]?\\s*=|[\\s/>])`,
797
+ to: `$1${replacement}`
798
+ };
799
+ }
800
+ /** Removed in 21.0.0: the unprefixed KbqPopoverTrigger aliases and getKbqPopoverInvalidPositionError. */
801
+ const popover = {
802
+ templateReplacements: Object.entries(RENAMED_INPUTS).map(([name, replacement]) => popoverInput(name, replacement)),
803
+ warnPatterns: [
804
+ {
805
+ anchor: '@koobiq/components/popover',
806
+ pattern: '\\bgetKbqPopoverInvalidPositionError\\b',
807
+ message: '`getKbqPopoverInvalidPositionError` was removed: an invalid popover placement is not an error, ' +
808
+ 'it is reported with a console warning and falls back to `top`. Delete the call and its import.'
809
+ },
810
+ {
811
+ anchor: '\\bKbqPopover(?:Confirm)?Trigger\\b|["\']kbqPopover(?:Confirm)?["\']',
812
+ pattern: '\\.hideIfNotInViewPort\\b',
813
+ message: '`KbqPopoverTrigger.hideIfNotInViewPort` was removed: read `popoverHideIfNotInViewPort()`, the ' +
814
+ 'signal of the `kbqPopoverHideIfNotInViewPort` input.'
815
+ },
816
+ {
817
+ pattern: '\\bdirective:\\s*KbqPopover(?:Confirm)?Trigger\\b[^}]*\\binputs:\\s*\\[[^\\]]*["\'](?:' +
818
+ Object.keys(RENAMED_INPUTS).join('|') +
819
+ ')\\b',
820
+ message: 'A `hostDirectives` entry of `KbqPopoverTrigger` exposes an unprefixed input that was removed. ' +
821
+ "Expose the `kbqPopover…` input instead: `'kbqPopoverHasBackdrop: hasBackdrop'` keeps the host's " +
822
+ 'binding name.'
823
+ }
824
+ ]
825
+ };
826
+
827
+ const NOTIFICATION_CENTER_FLAGS = '(?:silentMode|loadingMode|errorMode|loadingMore|loadMoreErrorMode|hasMore)';
828
+ // `.value` / `.getValue()` / `.next()` / `.subscribe()` / `.pipe()` right after the member: what a subject allowed.
829
+ const SUBJECT_ACCESS = '\\s*\\.\\s*(?:value\\b|getValue\\s*\\(|next\\s*\\(|subscribe\\s*\\(|pipe\\s*\\()';
830
+ /**
831
+ * 21.0.0 turned the state components and services expose for reading into signals. A read cannot be rewritten
832
+ * safely (a signal is called, a subject was subscribed to), so every use is reported.
833
+ */
834
+ const stateSignals = {
835
+ warnPatterns: [
836
+ {
837
+ anchor: '@koobiq/components/notification-center',
838
+ pattern: `\\b${NOTIFICATION_CENTER_FLAGS}${SUBJECT_ACCESS}`,
839
+ message: 'The flags of `KbqNotificationCenterService` (`silentMode`, `loadingMode`, `errorMode`, `loadingMore`, ' +
840
+ '`loadMoreErrorMode`, `hasMore`) are signals: read `service.silentMode()`, write with the matching ' +
841
+ '`set…()` method, and wrap one in `toObservable()` where a stream is needed.'
842
+ },
843
+ {
844
+ anchor: 'kbqNotificationCenter|KbqNotificationCenter',
845
+ pattern: `\\b${NOTIFICATION_CENTER_FLAGS}\\s*\\|\\s*async\\b`,
846
+ message: 'The flags of `KbqNotificationCenterService` are signals: bind `service.silentMode()` instead of ' +
847
+ 'piping them through `async`.'
848
+ },
849
+ {
850
+ pattern: '\\bunreadItemsCounter\\s*\\|\\s*async\\b',
851
+ message: '`unreadItemsCounter` of the notification center service and trigger is a signal: bind ' +
852
+ '`trigger.unreadItemsCounter()`, and drop `AsyncPipe` from the imports if nothing else uses it.'
853
+ },
854
+ {
855
+ anchor: '@koobiq/components/notification-center',
856
+ pattern: '\\b(?:unreadItemsCounter|groupedItems)\\s*\\.\\s*(?:subscribe|pipe)\\s*\\(',
857
+ message: '`unreadItemsCounter` and `groupedItems` of `KbqNotificationCenterService` are signals: read ' +
858
+ '`service.unreadItemsCounter()`, or wrap one in `toObservable()` where a stream is needed.'
859
+ },
860
+ {
861
+ anchor: 'kbqNotificationCenter|KbqNotificationCenter',
862
+ pattern: '\\bgroupedItems\\s*\\|\\s*async\\b',
863
+ message: '`KbqNotificationCenterService.groupedItems` is a signal: bind `service.groupedItems()`.'
864
+ },
865
+ {
866
+ anchor: '\\bKbqNotificationCenterService\\b',
867
+ pattern: '\\.\\s*changes\\s*\\.\\s*(?:subscribe|pipe)\\s*\\(',
868
+ message: 'If this subscribes to `KbqNotificationCenterService.changes`: it no longer emits on subscription. ' +
869
+ 'A handler that relied on running then has to run once on its own before subscribing.'
870
+ },
871
+ {
872
+ anchor: '@koobiq/components/toast',
873
+ pattern: `\\b(?:hovered|focused)${SUBJECT_ACCESS}`,
874
+ message: '`hovered` and `focused` of `KbqToastService` and `KbqToastComponent` are read-only signals: read ' +
875
+ '`toastService.hovered()`; a subclass of the toast sets its hover state with `setHovered()`.'
876
+ },
877
+ {
878
+ // `KbqDropdownItem.hovered` stays an event stream, so the anchor names the pop-ups and their triggers.
879
+ anchor: '\\b(?:KbqPopUp|KbqPopUpTrigger|KbqTooltip(?:Component|Trigger)|KbqPopover(?:Confirm)?(?:Component|Trigger)|' +
880
+ 'KbqNotificationCenter(?:Component|Trigger)|KbqAppSwitcher(?:Component|Trigger)|KbqTitleDirective|' +
881
+ 'KbqEllipsisCenterDirective|KbqPasswordToggle)\\b',
882
+ pattern: `\\bhovered${SUBJECT_ACCESS}|\\bhovered\\s*\\.\\s*complete\\s*\\(`,
883
+ message: 'If this uses `hovered` of a pop-up or its trigger (tooltip, popover, notification center, app ' +
884
+ 'switcher): it is a read-only signal. Read `hovered()`, wrap it in `toObservable()` where a stream ' +
885
+ 'is needed; a subclass sets it with `this.setHovered(value)`.'
886
+ },
887
+ {
888
+ anchor: '@koobiq/components/filter-bar',
889
+ pattern: '\\.filteredOptions\\s*(?:\\.\\s*(?:subscribe|pipe)\\s*\\(|=(?!=))',
890
+ message: '`filteredOptions` of `KbqFilters`, `KbqPipeSelectComponent` and `KbqPipeMultiSelectComponent` is a ' +
891
+ 'read-only signal: read `filteredOptions()`, and filter through the search control or the inputs.'
892
+ },
893
+ {
894
+ anchor: 'kbq-filters|kbqFilters|kbq-pipe',
895
+ pattern: '\\bfilteredOptions\\s*\\|\\s*async\\b',
896
+ message: '`filteredOptions` of the filter bar is a signal: bind `filteredOptions()`.'
897
+ },
898
+ {
899
+ anchor: '\\bextends\\s+KbqPipeSelectComponent\\b',
900
+ pattern: '\\bsuper\\s*\\.\\s*ngOnInit\\s*\\(',
901
+ message: '`KbqPipeSelectComponent` no longer implements `ngOnInit`: remove the `super.ngOnInit()` call.'
902
+ },
903
+ {
904
+ anchor: '\\bextends\\s+KbqPipeDate(?:Base|time)?Component\\b',
905
+ pattern: '\\bthis\\.(?:isListMode|showStartCalendar|showEndCalendar)\\b(?!\\s*\\(|\\.set\\s*\\()',
906
+ message: '`isListMode`, `showStartCalendar` and `showEndCalendar` of the date pipes are signals: read ' +
907
+ '`this.isListMode()` and write `this.isListMode.set(value)`.'
908
+ },
909
+ {
910
+ anchor: '\\bextends\\s+KbqPipeDate(?:Base|time)?Component\\b',
911
+ pattern: '\\bthis\\.returnButton\\s*\\(\\s*\\)\\s*\\.',
912
+ message: '`returnButton` of the date pipes may be `undefined`: the back button renders only when the pipe ' +
913
+ 'template has `values`. Read it with `this.returnButton()?.`.'
914
+ },
915
+ {
916
+ anchor: 'kbq-date-period',
917
+ pattern: '\\(keydown\\.tab\\)\\s*=\\s*"hideCalendars\\(\\)"',
918
+ message: 'Bind `(keydown.tab)` and `(keydown.shift.tab)` of the date inputs of a date pipe template to ' +
919
+ '`onDateInputTab()`: it hides the calendars before the browser moves the focus, which ' +
920
+ '`hideCalendars()` no longer does without zone.js, so Tab lands in the calendar being hidden.'
921
+ },
922
+ {
923
+ anchor: '@koobiq/components/select',
924
+ pattern: '\\.hiddenItems\\b(?!\\s*\\()',
925
+ message: 'If this reads `KbqSelect.hiddenItems`: it is a read-only signal, as in `KbqTreeSelect`. Read ' +
926
+ '`select.hiddenItems()`.'
927
+ },
928
+ {
929
+ anchor: '<kbq-select\\b',
930
+ pattern: '\\bhiddenItems\\b(?!\\s*\\()',
931
+ message: 'If this reads `hiddenItems` of a `kbq-select`: it is a read-only signal, as in `KbqTreeSelect`. Bind ' +
932
+ '`select.hiddenItems()`.'
933
+ },
934
+ {
935
+ anchor: '@koobiq/components/search-expandable|<kbq-search-expandable\\b',
936
+ pattern: '\\.value\\s*\\.\\s*(?:next|getValue|subscribe|pipe|asObservable|value)\\b',
937
+ message: 'If this uses `KbqSearchExpandable.value`: it is a `WritableSignal<string>`. Read `value()`, write ' +
938
+ '`value.set(text)`, and use an `effect()` or `toObservable()` instead of subscribing.'
939
+ },
940
+ {
941
+ anchor: '\\bextends\\s+KbqDatepickerToggleIconComponent\\b',
942
+ pattern: '\\bsuper\\s*\\.\\s*(?:ngAfterContentInit|ngOnDestroy)\\s*\\(',
943
+ message: '`KbqDatepickerToggleIconComponent` no longer implements `ngAfterContentInit` and `ngOnDestroy`: ' +
944
+ 'remove the `super` calls.'
945
+ }
946
+ ]
947
+ };
948
+
949
+ /** An `@include` of a mixin that takes no arguments any more, through a module namespace or not. */
950
+ const ARGUMENTLESS_MIXIN = '(@include\\s+(?:[\\w-]+\\.)?(?:koobiq-theme|koobiq-typography|kbq-core-theme))';
951
+ const LIGHT_AND_DARK_THEMES = {
952
+ from: '(@koobiq/components/prebuilt-themes/)(?:light|dark)-theme\\.css',
953
+ to: '$1theme.css'
954
+ };
955
+ /** A line that loads a style sheet: `@use`, `@import`, `@forward`, `<link>`, or a side-effect `import '…'`. */
956
+ const LOAD_LINE = `[ \\t]*(?:@(?:use|import|forward)\\s|<link\\s|import\\s*['"])[^\\r\\n]*`;
957
+ /** A line an import block holds besides the loads: a blank line or a one-line comment. */
958
+ const IMPORT_BLOCK_LINE = `(?:${LOAD_LINE}|[ \\t]*(?://[^\\r\\n]*|/\\*.*?\\*/|<!--.*?-->)?[ \\t]*)`;
959
+ /**
960
+ * Drops a line that repeats an earlier line loading `theme.css` in the same import block, as a file that loaded
961
+ * both themes is left with. Only a load followed by loads, blank lines and comments: anywhere else the two lines
962
+ * stand in different branches, such as the cases of a `switch` or two `@media` blocks.
963
+ */
964
+ const REPEATED_THEME_LINE = {
965
+ from: `(?<=^|\\n)(${LOAD_LINE}@koobiq/components/prebuilt-themes/theme\\.css[^\\r\\n]*)` +
966
+ `((?:\\r?\\n${IMPORT_BLOCK_LINE})*?)\\r?\\n\\1(?=\\r?\\n|$)`,
967
+ to: '$1$2'
968
+ };
969
+ const MARKDOWN_CLASS = '(h[1-6]|body-mono|body|caption|table-cell|table-header)';
970
+ /** A markdown typography class used as a selector: in a style sheet, an inline `<style>`, `[class.…]`, a query. */
971
+ const MARKDOWN_CLASS_SELECTOR = {
972
+ from: `\\.md-${MARKDOWN_CLASS}(?![\\w-])`,
973
+ to: '.kbq-md-$1'
974
+ };
975
+ /** The `kbq-scrollbar` class token: not the `<kbq-scrollbar>` element, nor a class that starts with it. */
976
+ const SCROLLBAR_CLASS = 'kbq-scrollbar(?![\\w-])';
977
+ const QUOTED_SCROLLBAR_CLASS = `['"\`]${SCROLLBAR_CLASS}['"\`]`;
978
+ /**
979
+ * Removed in 21.0.0: the arguments of `koobiq-theme()`, `koobiq-typography()` and `kbq-core-theme()`,
980
+ * `kbq-contrast()`, `kbq-palette()`, `kbq-color()`, `kbq-typography-config()`, `core/styles/tokens`, the prebuilt
981
+ * `light-theme.css` and `dark-theme.css`, the unprefixed markdown typography classes (`md-h1`, …), and the Sass
982
+ * modules, mixins, functions and timing variables nothing in the library used. Also reports, deprecated for removal
983
+ * in 22.0.0, `kbq-light-theme()`, `kbq-dark-theme()`, the `kbq-scrollbar` class with `kbq-scrollbar-theme()`, and
984
+ * the `--kbq-scrollbar-*` variables of that class the new scrollbar does not share.
985
+ */
986
+ const styles = {
987
+ templateReplacements: [
988
+ LIGHT_AND_DARK_THEMES,
989
+ REPEATED_THEME_LINE,
990
+ {
991
+ from: `(?<=(?<![\\w-])class\\s*=\\s*(?:"[^"]*|'[^']*))(?<![\\w-])md-${MARKDOWN_CLASS}(?![\\w-])`,
992
+ to: 'kbq-md-$1'
993
+ },
994
+ MARKDOWN_CLASS_SELECTOR
995
+ ],
996
+ scssReplacements: [
997
+ { from: `${ARGUMENTLESS_MIXIN}\\([^(){};]*\\)`, to: '$1()' },
998
+ LIGHT_AND_DARK_THEMES,
999
+ REPEATED_THEME_LINE,
1000
+ MARKDOWN_CLASS_SELECTOR
1001
+ ],
1002
+ styleEntryReplacements: [LIGHT_AND_DARK_THEMES],
1003
+ warnPatterns: [
1004
+ {
1005
+ pattern: `${ARGUMENTLESS_MIXIN}\\((?=[^(){};]*\\()`,
1006
+ message: '`koobiq-theme()`, `koobiq-typography()` and `kbq-core-theme()` take no arguments any more, as they ' +
1007
+ 'ignored them: remove the arguments, and the theme or typography map built only for them.'
1008
+ },
1009
+ {
1010
+ pattern: '(?<![\\w-])kbq-(?:contrast|palette|color)\\(',
1011
+ message: '`kbq-contrast()`, `kbq-palette()` and `kbq-color()` were removed from the theming module: use the ' +
1012
+ 'CSS variables of the theme instead, for example `var(--kbq-foreground-contrast)`.'
1013
+ },
1014
+ {
1015
+ pattern: '(?<![\\w-])kbq-(?:light|dark)-theme\\(',
1016
+ message: '`kbq-light-theme()` and `kbq-dark-theme()` are deprecated and will be removed in 22.0.0: nothing in the ' +
1017
+ 'library reads the theme map they build. Use the CSS variables of the theme instead, for example ' +
1018
+ '`var(--kbq-foreground-contrast)`.'
1019
+ },
1020
+ {
1021
+ pattern:
1022
+ // A selector, `[class.kbq-scrollbar]` or a query.
1023
+ `\\.${SCROLLBAR_CLASS}` +
1024
+ // A `class` attribute, a `[class]` binding or a `class` host property.
1025
+ `|(?<![\\w-])['"]?class\\]?['"]?\\s*[=:]\\s*(?:"[^"]*|'[^']*|\`[^\`]*)(?<![\\w-])${SCROLLBAR_CLASS}` +
1026
+ // `classList.add()`, `Renderer2.addClass()`, an `[ngClass]` key.
1027
+ `|(?:classList\\.\\w+|(?:add|remove)Class)\\([^()]*${QUOTED_SCROLLBAR_CLASS}` +
1028
+ `|${QUOTED_SCROLLBAR_CLASS}\\s*:` +
1029
+ '|(?<![\\w-])kbq-scrollbar-theme\\(',
1030
+ message: 'The `kbq-scrollbar` class and its `kbq-scrollbar-theme()` mixin are deprecated and will be removed ' +
1031
+ 'in 22.0.0, and no library component carries the class any more: put `kbqNativeScrollbar` on the ' +
1032
+ 'element that scrolls, with `kbqNativeScrollbarDescendants` to style the scrollbars inside it as the ' +
1033
+ 'class did, or wrap the content in `<kbq-scrollbar>` (both from `@koobiq/components/scrollbar`).'
1034
+ },
1035
+ {
1036
+ pattern: '(?<![\\w-])--kbq-scrollbar-(?:size-(?:track-(?:dimension|padding-(?:vertical|horizontal))|' +
1037
+ 'thumb-(?:width|min-size|border-radius))|thumb-disabled-background|' +
1038
+ 'track-(?:default|hover|active)-(?:background|border))(?![\\w-])',
1039
+ message: 'The `--kbq-scrollbar-size-*`, `--kbq-scrollbar-thumb-disabled-background` and ' +
1040
+ '`--kbq-scrollbar-track-{default,hover,active}-{background,border}` variables are deprecated and ' +
1041
+ 'will be removed in 22.0.0: only the `kbq-scrollbar` class and the `KbqScrollbar` of ' +
1042
+ '`@koobiq/components/scrollbar/deprecated` read them. The new scrollbar reads ' +
1043
+ '`--kbq-scrollbar-track-size` for the track dimension, `--kbq-scrollbar-thumb-gap` (the gap on each ' +
1044
+ 'side of the thumb) for the thumb width, `--kbq-scrollbar-thumb-min-size` and ' +
1045
+ '`--kbq-scrollbar-track-background`; the others have no counterpart.'
1046
+ },
1047
+ {
1048
+ pattern: '(?<![\\w-])kbq-typography-config\\(',
1049
+ message: '`kbq-typography-config()` was removed: use the typography CSS variables (`--kbq-typography-*`) or ' +
1050
+ 'the `kbq-typography-level-to-styles-css-variables()` mixin of `core/styles/common/tokens`.'
1051
+ },
1052
+ {
1053
+ pattern: '@(?:use|import|forward)\\s+[\'"](?:~|[^\'"]*node_modules/)?@koobiq/components/core/styles/_?tokens' +
1054
+ '(?:\\.scss)?[\'"]',
1055
+ message: '`@koobiq/components/core/styles/tokens` was removed: load what it forwarded from the design tokens ' +
1056
+ 'package directly — `@koobiq/design-tokens/web/variables`, `/palette`, `/typography` or ' +
1057
+ '`/md-typography` — or use the CSS variables (`var(--kbq-…)`).'
1058
+ },
1059
+ {
1060
+ pattern: '@(?:use|import|forward)\\s+[\'"](?:~|[^\'"]*node_modules/)?@koobiq/components/core/styles/' +
1061
+ '(?:functions(?:/_?(?:index|number|string))?|typography/_?typography-utils|common/_?(?:clearfix|popup))' +
1062
+ '(?:\\.scss)?[\'"]',
1063
+ message: 'The Sass modules `core/styles/functions` (its index, `number` and `string`), ' +
1064
+ '`core/styles/typography/typography-utils`, `core/styles/common/clearfix` and ' +
1065
+ '`core/styles/common/popup` were removed: nothing in the library used them. Copy what you need ' +
1066
+ 'into your own styles; for typography, use the `--kbq-typography-*` CSS variables.'
1067
+ },
1068
+ {
1069
+ pattern: '(?<![\\w-])(?:kbq-markdown-typography-config|kbq-typography-level|kbq-typography-level-to-styles|' +
1070
+ 'kbq-font-(?:size|family|weight|style|feature-settings)|kbq-line-height|kbq-letter-spacing|' +
1071
+ 'kbq-text-transform|rtl-value)\\(|(?<![\\w-])(?:popup-params|input-placeholder|' +
1072
+ 'kbq-typography-css-variables)(?![\\w-])',
1073
+ message: '`kbq-markdown-typography-config()`, the getters of `typography-utils` (`kbq-typography-level()`, ' +
1074
+ '`kbq-typography-level-to-styles()`, `kbq-font-size()`…), `popup-params`, `input-placeholder`, ' +
1075
+ '`rtl-value()` and `kbq-typography-css-variables` were removed: nothing in the library used them. ' +
1076
+ 'Use the `--kbq-typography-*` CSS variables, `kbq-typography-level-to-styles-css-variables()` of ' +
1077
+ '`core/styles/common/tokens`, `::placeholder`, or copy the mixin into your own styles.'
1078
+ },
1079
+ {
1080
+ anchor: '@koobiq/components/core/styles/functions',
1081
+ pattern: '(?<![\\w-])\\$ease-(?!out-circ(?![\\w-])|in-out-quad(?![\\w-])|in-out-circ(?![\\w-]))' +
1082
+ '(?:in|out|in-out)-(?:quad|cubic|quart|quint|sine|expo|circ|back)(?![\\w-])',
1083
+ message: 'Of the timing variables of `core/styles/functions/timing`, only `$ease-out-circ`, ' +
1084
+ '`$ease-in-out-quad` and `$ease-in-out-circ` remain: copy the `cubic-bezier()` of the others.'
1085
+ },
1086
+ {
1087
+ pattern: `(?<=['"\`][^'"\`\\n]*)(?<![\\w.-])(?<!(?<![\\w-])class\\s*=\\s*(?:"[^"]*|'[^']*))md-${MARKDOWN_CLASS}` +
1088
+ '(?![\\w-])',
1089
+ message: 'The unprefixed markdown typography classes (`md-h1`…`md-h6`, `md-body`, `md-body-mono`, ' +
1090
+ '`md-caption`, `md-table-cell`, `md-table-header`) were removed: use the `kbq-md-` class of the ' +
1091
+ 'same name, for example `kbq-md-h1`.'
1092
+ }
1093
+ ]
1094
+ };
1095
+
1096
+ // A file that names the directive class or reaches it through its `exportAs`.
1097
+ const TAG_INPUT_ANCHOR = '\\bKbqTagInput\\b|["\']kbqTagInput(?:For)?["\']';
1098
+ /**
1099
+ * Removed in 21.0.0: the unused validation members of KbqTagInput and KbqTagTextControl. Neither has a
1100
+ * replacement to rewrite to, so both are reported. KbqTagTextControl is not exported, so its member is not.
1101
+ */
1102
+ const tags = {
1103
+ warnPatterns: [
1104
+ // `this.ngControl` is a component's own control and `tagList.ngControl` the one that stays.
1105
+ {
1106
+ anchor: TAG_INPUT_ANCHOR,
1107
+ pattern: '(?<!\\bthis|[Ll]ist(?:\\(\\))?[!?]?)\\.ngControl\\b',
1108
+ message: '`KbqTagInput.ngControl` was removed. Read the control you bound to the input with ' +
1109
+ '`[formControl]`/`[ngModel]` directly; validation belongs to the `<kbq-tag-list>` control.'
1110
+ },
1111
+ {
1112
+ anchor: TAG_INPUT_ANCHOR,
1113
+ pattern: '(?<!\\bthis)\\.triggerValidation\\s*\\(',
1114
+ message: '`KbqTagInput.triggerValidation()` was removed: it was a no-op. Delete the call; the ' +
1115
+ '`<kbq-tag-list>` control revalidates itself whenever its value changes.'
1116
+ },
1117
+ {
1118
+ anchor: '\\bextends\\s+KbqTagInput\\b',
1119
+ pattern: '\\b(?:ngControl|triggerValidation)\\b',
1120
+ message: '`KbqTagInput` no longer declares `ngControl` and `triggerValidation()`. A subclass that reads ' +
1121
+ 'or overrides them injects `NgControl` itself or drops the override.'
1122
+ }
1123
+ ]
1124
+ };
1125
+
1126
+ const MARGIN_TOP = String.raw `(?<![\w-])--kbq-toast-stack-size-margin-top(?![\w-])`;
1127
+ const MARGIN_RIGHT = String.raw `(?<![\w-])--kbq-toast-stack-size-margin-right(?![\w-])`;
1128
+ const MARGIN_REPLACEMENTS = [
1129
+ { from: MARGIN_TOP, to: '--kbq-toast-stack-size-margin-vertical' },
1130
+ { from: MARGIN_RIGHT, to: '--kbq-toast-stack-size-margin-horizontal' }
1131
+ ];
1132
+ // A declaration of one of the properties, as opposed to a `var()` that reads it.
1133
+ const declaration = (names) => String.raw `(?<![\w-])--kbq-toast-stack-size-margin-(?:${names})\s*:`;
1134
+ /**
1135
+ * Removed in 21.0.0: `KbqToastContainerComponent.dispatchScrollEvent` and the
1136
+ * `--kbq-toast-stack-size-margin-top` / `-right` custom properties.
1137
+ */
1138
+ const toast = {
1139
+ // Style bindings and `setProperty()` calls name the properties too.
1140
+ templateReplacements: MARGIN_REPLACEMENTS,
1141
+ scssReplacements: MARGIN_REPLACEMENTS,
1142
+ warnPatterns: [
1143
+ {
1144
+ anchor: String.raw `\bKbqToastContainerComponent\b|<kbq-toast-container(?![\w-])`,
1145
+ pattern: String.raw `\bdispatchScrollEvent\b`,
1146
+ message: 'KbqToastContainerComponent.dispatchScrollEvent was removed: the container reports its own ' +
1147
+ 'reflow through `elementScrolled()`, so overlays anchored in a toast reposition without it. ' +
1148
+ 'Delete the call.'
1149
+ },
1150
+ {
1151
+ anchor: declaration('top|right'),
1152
+ pattern: declaration('vertical|horizontal'),
1153
+ message: '--kbq-toast-stack-size-margin-top and -right were renamed to -vertical and -horizontal. This ' +
1154
+ 'file declares both a removed and a new name: the new one used to win, after the rewrite the ' +
1155
+ 'cascade decides. Keep one declaration of each.'
1156
+ }
1157
+ ]
1158
+ };
1159
+
1160
+ /** The first constructor argument (one level of nested calls), followed by a second one. */
1161
+ const SECOND_ARGUMENT = '\\((?:[^(),]|\\([^()]*\\))+,\\s*[^\\s)]';
1162
+ const CONSTRUCTOR = '`KbqTreeOptionChange` takes only the option now: drop the second argument, the `isUserInput` it set was ' +
1163
+ 'removed.';
1164
+ /** Renames the `(from)` listener on an opening `<tag>` to `(to)`. */
1165
+ function renameOutput(tag, from, to) {
1166
+ return { from: `(<${tag}(?![\\w-])${tagPatterns.TAG_BODY}*?\\s)\\(${from}\\)(?=\\s*=)`, to: `$1(${to})` };
1167
+ }
1168
+ /**
1169
+ * Removed in 21.0.0: KbqTreeOptionChange.isUserInput and the constructor parameter that set it. Neither has a
1170
+ * replacement, so both are reported. The `isUserInput` of the select and tree-select change events stays.
1171
+ *
1172
+ * Deprecated for removal in 22.0.0: the `onSelectAll` and `onCopy` outputs of KbqTreeSelection and the
1173
+ * `onSelectionChange` output of KbqTreeOption, which emit the same events as their replacements, and
1174
+ * KbqTreeNode.mostRecentTreeNode. The outputs of the same names on the list selection, the tree-select and
1175
+ * KbqOption are not deprecated.
1176
+ */
1177
+ const tree = {
1178
+ templateReplacements: [
1179
+ renameOutput('kbq-tree-selection', 'onSelectAll', 'selectAllChange'),
1180
+ renameOutput('kbq-tree-selection', 'onCopy', 'copyChange'),
1181
+ renameOutput('kbq-tree-option', 'onSelectionChange', 'selectionChange')
1182
+ ],
1183
+ warnPatterns: [
1184
+ {
1185
+ anchor: '\\bKbqTreeOptionChange\\b',
1186
+ // `$event` in a template is the next pattern's.
1187
+ pattern: '(?<!\\$event\\??)\\.isUserInput\\b',
1188
+ message: '`KbqTreeOptionChange.isUserInput` was removed: the tree never set it, so it was always `false`. ' +
1189
+ 'If this `isUserInput` is read from a tree option change, delete the check together with the ' +
1190
+ 'branch it guarded.'
1191
+ },
1192
+ {
1193
+ // Matched before the rename above, so the deprecated name counts too.
1194
+ pattern: `<kbq-tree-option(?![\\w-])${tagPatterns.TAG_BODY}*?\\((?:onS|s)electionChange\\)\\s*=\\s*"[^"]*\\$event\\??\\.isUserInput\\b`,
1195
+ message: '`KbqTreeOptionChange.isUserInput` was removed: the tree never set it, so `$event.isUserInput` of ' +
1196
+ 'a `kbq-tree-option` was always `false`. Delete the check together with the branch it guarded.'
1197
+ },
1198
+ { pattern: `\\bnew\\s+KbqTreeOptionChange\\s*${SECOND_ARGUMENT}`, message: CONSTRUCTOR },
1199
+ {
1200
+ anchor: '\\bextends\\s+KbqTreeOptionChange\\b',
1201
+ pattern: `\\bsuper\\s*${SECOND_ARGUMENT}`,
1202
+ message: CONSTRUCTOR
1203
+ },
1204
+ {
1205
+ anchor: '\\bKbqTreeSelection\\b|["\']kbqTreeSelection["\']',
1206
+ pattern: '\\.(?:onSelectAll|onCopy)\\b',
1207
+ message: '`onSelectAll` and `onCopy` of `KbqTreeSelection` are deprecated and will be removed in 22.0.0: ' +
1208
+ 'use `selectAllChange` and `copyChange`, which emit the same events. The outputs of the same ' +
1209
+ 'names on `KbqListSelection` and `KbqTreeSelect` stay.'
1210
+ },
1211
+ {
1212
+ anchor: '\\bKbqTreeOption\\b|["\']kbqTreeOption["\']',
1213
+ pattern: '\\.onSelectionChange\\b',
1214
+ message: '`KbqTreeOption.onSelectionChange` is deprecated and will be removed in 22.0.0: use ' +
1215
+ '`selectionChange`, which emits the same event. The `onSelectionChange` of `KbqOption` stays.'
1216
+ },
1217
+ {
1218
+ // The CDK tree node has a static of the same name.
1219
+ anchor: '@koobiq/components/tree[\'"]',
1220
+ pattern: '\\.mostRecentTreeNode\\b',
1221
+ message: '`KbqTreeNode.mostRecentTreeNode` is deprecated and will be removed in 22.0.0: nothing in the ' +
1222
+ 'library reads it, and it held the node created last on the page, in any tree. Query the nodes ' +
1223
+ 'of the tree instead, for example with `viewChildren(KbqTreeOption)`.'
1224
+ }
1225
+ ]
1226
+ };
1227
+
1228
+ /** A named import of one of `symbols` (a regex alternation) from the `entry` entry point. */
1229
+ const importedFrom = (entry, symbols) => String.raw `import\s*(?:type\s*)?\{[^}]*\b(?:${symbols})\b[^}]*\}\s*from\s*['"]@koobiq/components/${entry}['"]`;
1230
+ /** A class of the library that a subclass extends. */
1231
+ const extending = (classes) => String.raw `\bextends\s+(?:${classes})\b`;
1232
+ /** A member reached through `this` or `super`, as a subclass does. */
1233
+ const ownMember = (members) => String.raw `\b(?:this|super)[!?]?\.(?:${members})\b`;
1234
+ /**
1235
+ * Removed in 21.0.0 without a deprecation: the component exports, members and template context fields nothing in
1236
+ * the library used, with the classes of the legacy validate directive and `kbq-no-select`.
1237
+ */
1238
+ const unusedApi = {
1239
+ warnPatterns: [
1240
+ {
1241
+ pattern: importedFrom('input', 'normalizeSplitter|isInt|isDigit'),
1242
+ message: 'normalizeSplitter(), isInt() and isDigit() are no longer exported from @koobiq/components/input: ' +
1243
+ "nothing in the library used them. Copy what you need: value.replace(/,/g, '.') and " +
1244
+ String.raw `/^-?\d+$/.test(value); isFloat() stays.`
1245
+ },
1246
+ {
1247
+ pattern: importedFrom('time-range', 'KbqTimeRangeTranslateTypeMap'),
1248
+ message: 'KbqTimeRangeTranslateTypeMap was removed from @koobiq/components/time-range: nothing read it. Use ' +
1249
+ 'Record<KbqTimeRangeType, KbqTimeRangeTranslationType> instead.'
1250
+ },
1251
+ {
1252
+ pattern: importedFrom('tabs', 'KbqTabBodyOriginState'),
1253
+ message: "KbqTabBodyOriginState was removed: nothing read it. Use 'left' | 'right' instead."
1254
+ },
1255
+ {
1256
+ pattern: importedFrom('datepicker', 'KbqDatepickerIntl'),
1257
+ message: 'KbqDatepickerIntl was removed: no view of the datepicker rendered its labels, and its changes ' +
1258
+ 'stream only re-rendered the calendar. Drop the provider and the subclass; the datepicker texts ' +
1259
+ 'come from the locale configuration (kbqDatepickerLocaleConfigurationProvider()).'
1260
+ },
1261
+ {
1262
+ anchor: String.raw `\bKbqDropdown\b|\bkbqDropdown\b|<kbq-dropdown\b`,
1263
+ pattern: String.raw `\.onPanelReached\s*\(`,
1264
+ message: 'KbqDropdown.onPanelReached() was removed: nothing subscribed to it. Delete the subscription.'
1265
+ },
1266
+ {
1267
+ anchor: extending('KbqTreeSelection'),
1268
+ pattern: ownMember('getItemHeight'),
1269
+ message: 'The protected KbqTreeSelection.getItemHeight() was removed: call getHeight() on the first rendered ' +
1270
+ 'option instead, for example this.renderedOptions.first?.getHeight() ?? 0.'
1271
+ },
1272
+ {
1273
+ anchor: extending('KbqTreeSelection'),
1274
+ pattern: ownMember('setFocusedOption'),
1275
+ message: 'The protected KbqTreeSelection.setFocusedOption() was removed: call ' +
1276
+ 'this.keyManager.setActiveItem(option) instead.'
1277
+ },
1278
+ {
1279
+ anchor: String.raw `\bKbqTagList\b|<kbq-tag-list\b`,
1280
+ pattern: String.raw `\.(?:tagSelectionChanges|shouldLabelFloat)\b`,
1281
+ message: 'KbqTagList.tagSelectionChanges and shouldLabelFloat were removed: nothing read them. Listen to ' +
1282
+ 'the selectionChange output of each tag, and compute !tagList.empty() || tagList.focused() ' +
1283
+ 'yourself.'
1284
+ },
1285
+ {
1286
+ anchor: String.raw `\bKbqTreeNodeOutlet\b`,
1287
+ pattern: String.raw `\.changeDetectorRef\b`,
1288
+ message: 'KbqTreeNodeOutlet.changeDetectorRef was removed: inject ChangeDetectorRef where you need it.'
1289
+ },
1290
+ // Protected members: only a subclass reaches them.
1291
+ {
1292
+ anchor: extending('KbqAccordion|KbqAccordionItem|KbqPasswordToggle|KbqIcon|KbqIconButton|KbqIconItem|KbqSearchExpandable'),
1293
+ pattern: ownMember('changeDetectorRef'),
1294
+ message: 'The protected changeDetectorRef of KbqAccordion, KbqAccordionItem, KbqPasswordToggle, KbqIcon ' +
1295
+ '(with KbqIconButton and KbqIconItem) and KbqSearchExpandable was removed: nothing read it. Inject ' +
1296
+ 'ChangeDetectorRef in the subclass.'
1297
+ },
1298
+ {
1299
+ anchor: extending('KbqAccordionTrigger'),
1300
+ pattern: ownMember('nativeElement'),
1301
+ message: 'The protected KbqAccordionTrigger.nativeElement was removed: inject ElementRef in the subclass.'
1302
+ },
1303
+ {
1304
+ anchor: extending('KbqNotificationCenterComponent'),
1305
+ pattern: ownMember('dateAdapter'),
1306
+ message: 'The protected KbqNotificationCenterComponent.dateAdapter was removed: inject DateAdapter in the ' +
1307
+ 'subclass.'
1308
+ },
1309
+ {
1310
+ anchor: extending('KbqFilters'),
1311
+ pattern: ownMember('styles'),
1312
+ message: 'The protected KbqFilters.styles was removed: use KbqButtonStyles from @koobiq/components/button.'
1313
+ },
1314
+ {
1315
+ anchor: extending('KbqTitleDirective'),
1316
+ pattern: ownMember('isHorizontalOverflown|isVerticalOverflown|child'),
1317
+ message: 'The protected isHorizontalOverflown, isVerticalOverflown and child of KbqTitleDirective were ' +
1318
+ 'removed: isOverflown covers both directions and every measured text element.'
1319
+ },
1320
+ // Classes nothing sets.
1321
+ {
1322
+ pattern: String.raw `(?<![\w-])kbq-(?:control|form-field)_has-validate-directive(?![\w-])`,
1323
+ message: 'The kbq-control_has-validate-directive and kbq-form-field_has-validate-directive classes no ' +
1324
+ 'longer style anything: the KbqValidateDirective that set them was removed in 20.0.0. The form ' +
1325
+ 'field, select and tree select show an error through their ErrorStateMatcher, which sets ' +
1326
+ 'kbq-form-field_invalid and kbq-invalid.'
1327
+ },
1328
+ {
1329
+ pattern: String.raw `(?<![\w-])kbq-no-select(?![\w-])`,
1330
+ message: 'The kbq-no-select class was removed: nothing set it. Set user-select: none in your own styles.'
1331
+ }
1332
+ ]
1333
+ };
1334
+
1335
+ /**
1336
+ * Replacement data for the v21.0.0 migration — the removed deprecated APIs and the state that became signals — one
1337
+ * file per area under `data/`, applied by `replacementMigrationRule`. A warning reports what cannot be rewritten.
1338
+ */
1339
+ const AREAS = [
1340
+ accordion,
1341
+ codeBlockAndIcon,
1342
+ core,
1343
+ dropdownAndSelect,
1344
+ filterBar,
1345
+ formField,
1346
+ formsControls,
1347
+ navbarAndLayout,
1348
+ popover,
1349
+ stateSignals,
1350
+ styles,
1351
+ tags,
1352
+ toast,
1353
+ tree,
1354
+ unusedApi
1355
+ ];
1356
+ /** TypeScript-source replacements (imports, identifiers, member accesses). */
1357
+ const tsReplacements = AREAS.flatMap((area) => area.tsReplacements ?? []);
1358
+ /** Replacements in templates, external `.html` files and inline `template:` strings alike. */
1359
+ const templateReplacements = AREAS.flatMap((area) => area.templateReplacements ?? []);
1360
+ /** Replacements in `.scss` and `.css` files. */
1361
+ const scssReplacements = AREAS.flatMap((area) => area.scssReplacements ?? []);
1362
+ /** Replacements in the `styles` entries of `angular.json`; an entry they turn into a duplicate is dropped. */
1363
+ const styleEntryReplacements = AREAS.flatMap((area) => area.styleEntryReplacements ?? []);
1364
+ /** What the migration reports instead of rewriting. */
1365
+ const warnPatterns = AREAS.flatMap((area) => area.warnPatterns ?? []);
1366
+
1367
+ exports.scssReplacements = scssReplacements;
1368
+ exports.styleEntryReplacements = styleEntryReplacements;
1369
+ exports.templateReplacements = templateReplacements;
1370
+ exports.tsReplacements = tsReplacements;
1371
+ exports.warnPatterns = warnPatterns;