@koobiq/components 20.4.1 → 21.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (771) hide show
  1. package/accordion/accordion-trigger.scss +3 -10
  2. package/accordion/accordion.scss +4 -6
  3. package/actions-panel/actions-panel-container.scss +45 -1
  4. package/alert/alert.component.scss +3 -2
  5. package/app-switcher/_app-switcher-theme.scss +0 -4
  6. package/app-switcher/app-switcher-dropdown-app.scss +3 -2
  7. package/app-switcher/app-switcher-dropdown-site.scss +2 -1
  8. package/app-switcher/{kbq-app-switcher-list-item.scss → app-switcher-list-item.scss} +18 -4
  9. package/app-switcher/app-switcher-tokens.scss +15 -0
  10. package/app-switcher/app-switcher.scss +14 -4
  11. package/autocomplete/autocomplete.scss +7 -6
  12. package/badge/badge.component.scss +5 -8
  13. package/breadcrumbs/breadcrumbs.scss +25 -10
  14. package/button/_button-base.scss +30 -7
  15. package/button/_button-theme.scss +16 -0
  16. package/button/button-group.scss +7 -0
  17. package/button/button-tokens.scss +0 -2
  18. package/button/button.scss +34 -2
  19. package/button-toggle/_button-toggle-theme.scss +7 -2
  20. package/button-toggle/button-toggle.scss +65 -15
  21. package/checkbox/_checkbox-theme.scss +4 -3
  22. package/checkbox/checkbox.scss +3 -6
  23. package/clamped-text/clamped-text.scss +6 -2
  24. package/code-block/code-block-tokens.scss +0 -224
  25. package/code-block/code-block.scss +20 -9
  26. package/content-panel/content-panel-aside.scss +3 -2
  27. package/content-panel/content-panel-container.scss +37 -0
  28. package/content-panel/content-panel.scss +4 -3
  29. package/core/highlight/_highlight-theme.scss +3 -1
  30. package/core/option/action-container.scss +2 -2
  31. package/core/option/action.scss +2 -1
  32. package/core/option/option.scss +2 -1
  33. package/core/pop-up/_pop-up.scss +0 -37
  34. package/core/selection/pseudo-checkbox/pseudo-checkbox.scss +5 -10
  35. package/core/styles/_core.scss +3 -0
  36. package/core/styles/_koobiq-theme.scss +5 -6
  37. package/core/styles/common/_animation.scss +44 -16
  38. package/core/styles/common/_groups-mixins.scss +21 -19
  39. package/core/styles/common/_groups.scss +4 -32
  40. package/core/styles/common/_index.scss +0 -2
  41. package/core/styles/common/_link.scss +117 -0
  42. package/core/styles/common/_list.scss +0 -26
  43. package/core/styles/common/_overlay.scss +8 -10
  44. package/core/styles/common/_rtl.scss +0 -14
  45. package/core/styles/common/_select.scss +33 -15
  46. package/core/styles/common/_squircle.scss +63 -0
  47. package/core/styles/common/_tokens.scss +0 -11
  48. package/core/styles/common/_vendor-prefixes.scss +0 -20
  49. package/core/styles/functions/_timing.scss +0 -22
  50. package/core/styles/theming/_scrollbar-theme.scss +6 -1
  51. package/core/styles/theming/_theming.scss +13 -65
  52. package/core/styles/typography/_index.scss +0 -1
  53. package/core/styles/typography/_typography.scss +0 -143
  54. package/core/styles/visual/_body.scss +1 -6
  55. package/core/styles/visual/_layout.scss +0 -12
  56. package/datepicker/calendar-body.scss +3 -1
  57. package/datepicker/calendar-header.scss +0 -1
  58. package/datepicker/datepicker-content.scss +33 -1
  59. package/datepicker/datepicker-toggle.scss +0 -38
  60. package/dl/dl-tokens.scss +10 -0
  61. package/dl/dl.scss +113 -13
  62. package/dropdown/_dropdown-theme.scss +4 -16
  63. package/dropdown/dropdown-item.scss +4 -10
  64. package/dropdown/dropdown.scss +2 -1
  65. package/empty-state/_empty-state-theme.scss +10 -4
  66. package/empty-state/empty-state-tokens.scss +4 -4
  67. package/empty-state/empty-state.scss +4 -0
  68. package/fesm2022/koobiq-components-accordion.mjs +347 -229
  69. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  70. package/fesm2022/koobiq-components-actions-panel.mjs +302 -187
  71. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  72. package/fesm2022/koobiq-components-alert.mjs +39 -39
  73. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  74. package/fesm2022/koobiq-components-app-switcher.mjs +677 -367
  75. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  76. package/fesm2022/koobiq-components-autocomplete.mjs +620 -253
  77. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  78. package/fesm2022/koobiq-components-badge.mjs +46 -48
  79. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  80. package/fesm2022/koobiq-components-breadcrumbs.mjs +221 -169
  81. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-button-toggle.mjs +565 -196
  83. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-button.mjs +332 -116
  85. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-checkbox.mjs +172 -132
  87. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-clamped-text.mjs +165 -158
  89. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-code-block.mjs +755 -601
  91. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-content-panel.mjs +260 -143
  93. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-core.mjs +4342 -1595
  95. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-datepicker.mjs +1713 -1606
  97. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  98. package/fesm2022/koobiq-components-divider.mjs +73 -36
  99. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-dl.mjs +447 -89
  101. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-dropdown.mjs +703 -599
  103. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-dynamic-translation.mjs +20 -20
  105. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-ellipsis-center.mjs +46 -31
  107. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-empty-state.mjs +116 -60
  109. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-file-upload.mjs +550 -290
  111. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-filter-bar.mjs +2810 -2538
  113. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  114. package/fesm2022/koobiq-components-flag.mjs +79 -24
  115. package/fesm2022/koobiq-components-flag.mjs.map +1 -1
  116. package/fesm2022/koobiq-components-form-field.mjs +389 -525
  117. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  118. package/fesm2022/koobiq-components-icon.mjs +366 -136
  119. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  120. package/fesm2022/koobiq-components-inline-edit.mjs +429 -212
  121. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  122. package/fesm2022/koobiq-components-input.mjs +601 -459
  123. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  124. package/fesm2022/koobiq-components-link-deprecated.mjs +196 -0
  125. package/fesm2022/koobiq-components-link-deprecated.mjs.map +1 -0
  126. package/fesm2022/koobiq-components-link.mjs +328 -125
  127. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  128. package/fesm2022/koobiq-components-list.mjs +583 -433
  129. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  130. package/fesm2022/koobiq-components-loader-overlay.mjs +167 -68
  131. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  132. package/fesm2022/koobiq-components-markdown.mjs +55 -78
  133. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  134. package/fesm2022/koobiq-components-modal.mjs +853 -475
  135. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  136. package/fesm2022/koobiq-components-navbar.mjs +895 -556
  137. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  138. package/fesm2022/koobiq-components-notification-center.mjs +680 -310
  139. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  140. package/fesm2022/koobiq-components-overflow-items.mjs +46 -64
  141. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  142. package/fesm2022/koobiq-components-popover.mjs +684 -285
  143. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  144. package/fesm2022/koobiq-components-progress-bar.mjs +87 -33
  145. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  146. package/fesm2022/koobiq-components-progress-spinner.mjs +52 -43
  147. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  148. package/fesm2022/koobiq-components-radio.mjs +450 -231
  149. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  150. package/fesm2022/koobiq-components-resizer.mjs +127 -21
  151. package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
  152. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs +299 -0
  153. package/fesm2022/koobiq-components-scrollbar-deprecated.mjs.map +1 -0
  154. package/fesm2022/koobiq-components-scrollbar.mjs +745 -222
  155. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  156. package/fesm2022/koobiq-components-search-expandable.mjs +288 -126
  157. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  158. package/fesm2022/koobiq-components-select.mjs +883 -693
  159. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  160. package/fesm2022/koobiq-components-sidebar.mjs +207 -88
  161. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  162. package/fesm2022/koobiq-components-sidepanel.mjs +689 -296
  163. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  164. package/fesm2022/koobiq-components-skeleton.mjs +815 -41
  165. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  166. package/fesm2022/koobiq-components-split-button.mjs +109 -88
  167. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  168. package/fesm2022/koobiq-components-splitter-deprecated.mjs +591 -0
  169. package/fesm2022/koobiq-components-splitter-deprecated.mjs.map +1 -0
  170. package/fesm2022/koobiq-components-splitter.mjs +890 -501
  171. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  172. package/fesm2022/koobiq-components-table.mjs +63 -49
  173. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  174. package/fesm2022/koobiq-components-tabs.mjs +1062 -603
  175. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  176. package/fesm2022/koobiq-components-tags.mjs +886 -733
  177. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  178. package/fesm2022/koobiq-components-textarea.mjs +213 -185
  179. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  180. package/fesm2022/koobiq-components-time-range.mjs +299 -147
  181. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  182. package/fesm2022/koobiq-components-timepicker.mjs +233 -245
  183. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  184. package/fesm2022/koobiq-components-timezone.mjs +344 -142
  185. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  186. package/fesm2022/koobiq-components-title.mjs +229 -145
  187. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  188. package/fesm2022/koobiq-components-toast.mjs +486 -165
  189. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  190. package/fesm2022/koobiq-components-toggle.mjs +177 -130
  191. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  192. package/fesm2022/koobiq-components-tooltip.mjs +657 -214
  193. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  194. package/fesm2022/koobiq-components-top-bar.mjs +61 -32
  195. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  196. package/fesm2022/koobiq-components-tree-select.mjs +719 -488
  197. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  198. package/fesm2022/koobiq-components-tree.mjs +1506 -558
  199. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  200. package/fesm2022/koobiq-components-username.mjs +290 -135
  201. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  202. package/file-upload/dropzone.scss +31 -3
  203. package/file-upload/file-upload-tokens.scss +2 -22
  204. package/file-upload/file-upload.scss +6 -0
  205. package/file-upload/multiple-file-upload.component.scss +14 -12
  206. package/file-upload/single-file-upload.component.scss +3 -2
  207. package/filter-bar/filters.scss +7 -0
  208. package/filter-bar/pipes/base-pipe.scss +3 -3
  209. package/filter-bar/pipes/pipe-date.scss +8 -1
  210. package/flag/flag-tokens.scss +22 -0
  211. package/flag/flag.scss +34 -21
  212. package/form-field/{_fiedset-theme.scss → _fieldset-theme.scss} +1 -5
  213. package/form-field/_form-field-theme.scss +4 -9
  214. package/form-field/cleaner.scss +3 -1
  215. package/form-field/fieldset.scss +3 -4
  216. package/form-field/form-field.scss +26 -21
  217. package/form-field/password-toggle.scss +3 -1
  218. package/icon/_icon-button-theme.scss +7 -0
  219. package/icon/_icon-theme.scss +10 -7
  220. package/icon/icon-button.scss +0 -2
  221. package/icon/icon-tokens.scss +12 -9
  222. package/inline-edit/inline-edit.scss +40 -54
  223. package/input/input.scss +4 -0
  224. package/link/{_link-theme.scss → deprecated/_link-theme.scss} +11 -6
  225. package/link/deprecated/link-tokens.scss +27 -0
  226. package/link/link-tokens.scss +6 -25
  227. package/link/link.scss +137 -0
  228. package/list/list.scss +3 -2
  229. package/loader-overlay/_loader-overlay-theme.scss +19 -10
  230. package/loader-overlay/loader-overlay-tokens.scss +0 -2
  231. package/loader-overlay/loader-overlay.scss +7 -1
  232. package/markdown/_markdown-theme.scss +16 -0
  233. package/markdown/markdown-tokens.scss +5 -0
  234. package/markdown/markdown.scss +2 -1
  235. package/modal/_modal-animation.scss +23 -14
  236. package/modal/modal-tokens.scss +2 -1
  237. package/modal/modal.scss +35 -31
  238. package/navbar/_navbar-item_horizontal.scss +8 -6
  239. package/navbar/_navbar-item_vertical.scss +18 -6
  240. package/navbar/_navbar-theme.scss +9 -1
  241. package/navbar/navbar-brand.scss +8 -6
  242. package/navbar/navbar-divider.scss +1 -1
  243. package/navbar/navbar-item.scss +8 -9
  244. package/navbar/navbar-toggle.scss +3 -3
  245. package/navbar/navbar-tokens.scss +14 -0
  246. package/navbar/navbar.scss +1 -2
  247. package/navbar/vertical-navbar.scss +2 -2
  248. package/notification-center/_notification-center-theme.scss +11 -6
  249. package/notification-center/notification-center-tokens.scss +33 -0
  250. package/notification-center/notification-center.scss +58 -20
  251. package/notification-center/notification-item.scss +15 -6
  252. package/package.json +112 -81
  253. package/popover/popover-tokens.scss +0 -2
  254. package/popover/popover.scss +41 -19
  255. package/prebuilt-themes/theme.css +1 -1
  256. package/progress-bar/_progress-bar-theme.scss +20 -3
  257. package/progress-bar/progress-bar-tokens.scss +3 -0
  258. package/progress-bar/progress-bar.scss +36 -8
  259. package/progress-spinner/progress-spinner.scss +4 -3
  260. package/radio/_radio-theme.scss +21 -4
  261. package/radio/radio-tokens.scss +7 -3
  262. package/radio/radio.scss +55 -8
  263. package/schematics/collection.json +399 -7
  264. package/schematics/migrations/accordion-state-saving-default/README.md +60 -0
  265. package/schematics/migrations/accordion-state-saving-default/data.js +75 -0
  266. package/schematics/migrations/accordion-state-saving-default/index.js +60 -0
  267. package/schematics/migrations/accordion-state-saving-default/schema.json +15 -0
  268. package/schematics/migrations/actions-panel-overlay-container/README.md +35 -0
  269. package/schematics/migrations/actions-panel-overlay-container/data.js +47 -0
  270. package/schematics/migrations/actions-panel-overlay-container/index.js +54 -0
  271. package/schematics/migrations/actions-panel-overlay-container/schema.json +15 -0
  272. package/schematics/migrations/alert-signals/README.md +13 -7
  273. package/schematics/migrations/alert-signals/data.js +3 -0
  274. package/schematics/migrations/alert-signals/index.js +70 -203
  275. package/schematics/migrations/angular-animations-removal/README.md +46 -0
  276. package/schematics/migrations/angular-animations-removal/data.js +150 -0
  277. package/schematics/migrations/angular-animations-removal/index.js +20 -0
  278. package/schematics/migrations/angular-animations-removal/schema.json +15 -0
  279. package/schematics/migrations/app-switcher-signals/README.md +88 -0
  280. package/schematics/migrations/app-switcher-signals/data.js +136 -0
  281. package/schematics/migrations/app-switcher-signals/index.js +365 -0
  282. package/schematics/migrations/app-switcher-signals/schema.json +20 -0
  283. package/schematics/migrations/autocomplete-panel-width-auto/README.md +2 -2
  284. package/schematics/migrations/autocomplete-panel-width-auto/index.js +1 -1
  285. package/schematics/migrations/autocomplete-signals/README.md +92 -0
  286. package/schematics/migrations/autocomplete-signals/data.js +149 -0
  287. package/schematics/migrations/autocomplete-signals/index.js +706 -0
  288. package/schematics/migrations/autocomplete-signals/schema.json +20 -0
  289. package/schematics/migrations/badge-signals/README.md +77 -0
  290. package/schematics/migrations/badge-signals/data.js +109 -0
  291. package/schematics/migrations/badge-signals/index.js +693 -0
  292. package/schematics/migrations/badge-signals/schema.json +20 -0
  293. package/schematics/migrations/button-state-and-styles/README.md +129 -0
  294. package/schematics/migrations/button-state-and-styles/data.js +136 -0
  295. package/schematics/migrations/button-state-and-styles/index.js +220 -0
  296. package/schematics/migrations/button-state-and-styles/schema.json +20 -0
  297. package/schematics/migrations/button-supported-colors/README.md +73 -0
  298. package/schematics/migrations/button-supported-colors/data.js +106 -0
  299. package/schematics/migrations/button-supported-colors/index.js +260 -0
  300. package/schematics/migrations/button-supported-colors/schema.json +20 -0
  301. package/schematics/migrations/button-toggle-signals-and-aria/README.md +137 -0
  302. package/schematics/migrations/button-toggle-signals-and-aria/data.js +200 -0
  303. package/schematics/migrations/button-toggle-signals-and-aria/index.js +496 -0
  304. package/schematics/migrations/button-toggle-signals-and-aria/schema.json +20 -0
  305. package/schematics/migrations/button-truncation/README.md +110 -0
  306. package/schematics/migrations/button-truncation/data.js +88 -0
  307. package/schematics/migrations/button-truncation/index.js +269 -0
  308. package/schematics/migrations/button-truncation/schema.json +20 -0
  309. package/schematics/migrations/checkbox-signals/README.md +76 -0
  310. package/schematics/migrations/checkbox-signals/data.js +114 -0
  311. package/schematics/migrations/checkbox-signals/index.js +634 -0
  312. package/schematics/migrations/checkbox-signals/schema.json +20 -0
  313. package/schematics/migrations/clamped-text-disclosure/README.md +62 -0
  314. package/schematics/migrations/clamped-text-disclosure/data.js +101 -0
  315. package/schematics/migrations/clamped-text-disclosure/index.js +59 -0
  316. package/schematics/migrations/clamped-text-disclosure/schema.json +15 -0
  317. package/schematics/migrations/code-block-signals/README.md +84 -0
  318. package/schematics/migrations/code-block-signals/data.js +121 -0
  319. package/schematics/migrations/code-block-signals/index.js +700 -0
  320. package/schematics/migrations/code-block-signals/schema.json +20 -0
  321. package/schematics/migrations/color-signals/README.md +46 -0
  322. package/schematics/migrations/color-signals/data.js +131 -0
  323. package/schematics/migrations/color-signals/index.js +19 -0
  324. package/schematics/migrations/color-signals/schema.json +20 -0
  325. package/schematics/migrations/core-mixins-removal/README.md +20 -0
  326. package/schematics/migrations/core-mixins-removal/data.js +27 -0
  327. package/schematics/migrations/core-mixins-removal/index.js +17 -0
  328. package/schematics/migrations/core-mixins-removal/schema.json +15 -0
  329. package/schematics/migrations/css-selectors/README.md +2 -2
  330. package/schematics/migrations/css-selectors/index.js +1 -1
  331. package/schematics/migrations/datepicker-signals/README.md +24 -0
  332. package/schematics/migrations/datepicker-signals/data.js +49 -0
  333. package/schematics/migrations/datepicker-signals/index.js +17 -0
  334. package/schematics/migrations/datepicker-signals/schema.json +15 -0
  335. package/schematics/migrations/deprecated-icons/README.md +2 -2
  336. package/schematics/migrations/deprecated-icons/index.js +1 -1
  337. package/schematics/migrations/design-tokens-v4/README.md +75 -0
  338. package/schematics/migrations/design-tokens-v4/index.js +59 -0
  339. package/schematics/migrations/design-tokens-v4/schema.json +15 -0
  340. package/schematics/migrations/divider-signals-and-aria/README.md +47 -0
  341. package/schematics/migrations/divider-signals-and-aria/data.js +62 -0
  342. package/schematics/migrations/divider-signals-and-aria/index.js +211 -0
  343. package/schematics/migrations/divider-signals-and-aria/schema.json +15 -0
  344. package/schematics/migrations/dl-attribute-coercion/README.md +59 -0
  345. package/schematics/migrations/dl-attribute-coercion/data.js +85 -0
  346. package/schematics/migrations/dl-attribute-coercion/index.js +161 -0
  347. package/schematics/migrations/dl-attribute-coercion/schema.json +15 -0
  348. package/schematics/migrations/dl-standalone-names/README.md +49 -0
  349. package/schematics/migrations/dl-standalone-names/data.js +44 -0
  350. package/schematics/migrations/dl-standalone-names/index.js +321 -0
  351. package/schematics/migrations/dl-standalone-names/schema.json +20 -0
  352. package/schematics/migrations/dropdown-demote-overlay/README.md +137 -0
  353. package/schematics/migrations/dropdown-demote-overlay/data.js +84 -0
  354. package/schematics/migrations/dropdown-demote-overlay/index.js +288 -0
  355. package/schematics/migrations/dropdown-demote-overlay/schema.json +20 -0
  356. package/schematics/migrations/dropdown-signals/README.md +83 -0
  357. package/schematics/migrations/dropdown-signals/data.js +152 -0
  358. package/schematics/migrations/dropdown-signals/index.js +19 -0
  359. package/schematics/migrations/dropdown-signals/schema.json +20 -0
  360. package/schematics/migrations/empty-state-error-color/README.md +84 -0
  361. package/schematics/migrations/empty-state-error-color/data.js +85 -0
  362. package/schematics/migrations/empty-state-error-color/index.js +71 -0
  363. package/schematics/migrations/empty-state-error-color/schema.json +15 -0
  364. package/schematics/migrations/empty-state-size-attr/README.md +2 -2
  365. package/schematics/migrations/empty-state-size-attr/index.js +1 -1
  366. package/schematics/migrations/file-upload-cva-and-primitives/README.md +70 -0
  367. package/schematics/migrations/file-upload-cva-and-primitives/data.js +97 -0
  368. package/schematics/migrations/file-upload-cva-and-primitives/index.js +60 -0
  369. package/schematics/migrations/file-upload-cva-and-primitives/schema.json +15 -0
  370. package/schematics/migrations/file-upload-deprecated-outputs/README.md +90 -0
  371. package/schematics/migrations/file-upload-deprecated-outputs/data.js +20 -0
  372. package/schematics/migrations/file-upload-deprecated-outputs/index.js +70 -0
  373. package/schematics/migrations/file-upload-deprecated-outputs/schema.json +20 -0
  374. package/schematics/migrations/filter-bar-rename-action/README.md +183 -0
  375. package/schematics/migrations/filter-bar-rename-action/data.js +151 -0
  376. package/schematics/migrations/filter-bar-rename-action/index.js +177 -0
  377. package/schematics/migrations/filter-bar-rename-action/schema.json +20 -0
  378. package/schematics/migrations/filter-bar-signals/README.md +27 -16
  379. package/schematics/migrations/filter-bar-signals/data.js +1 -2
  380. package/schematics/migrations/filter-bar-signals/index.js +100 -195
  381. package/schematics/migrations/filter-bar-state-saving-default/README.md +53 -0
  382. package/schematics/migrations/filter-bar-state-saving-default/data.js +87 -0
  383. package/schematics/migrations/filter-bar-state-saving-default/index.js +61 -0
  384. package/schematics/migrations/filter-bar-state-saving-default/schema.json +15 -0
  385. package/schematics/migrations/flag-inner-html/README.md +67 -0
  386. package/schematics/migrations/flag-inner-html/data.js +58 -0
  387. package/schematics/migrations/flag-inner-html/index.js +61 -0
  388. package/schematics/migrations/flag-inner-html/schema.json +15 -0
  389. package/schematics/migrations/form-field-signals/README.md +125 -0
  390. package/schematics/migrations/form-field-signals/data.js +288 -0
  391. package/schematics/migrations/form-field-signals/index.js +382 -0
  392. package/schematics/migrations/form-field-signals/schema.json +20 -0
  393. package/schematics/migrations/icon-semantics-and-api/README.md +65 -0
  394. package/schematics/migrations/icon-semantics-and-api/data.js +97 -0
  395. package/schematics/migrations/icon-semantics-and-api/index.js +64 -0
  396. package/schematics/migrations/icon-semantics-and-api/schema.json +15 -0
  397. package/schematics/migrations/icons-replacement/README.md +5 -5
  398. package/schematics/migrations/icons-replacement/index.js +1 -1
  399. package/schematics/migrations/inline-edit-a11y-and-types/README.md +82 -0
  400. package/schematics/migrations/inline-edit-a11y-and-types/data.js +117 -0
  401. package/schematics/migrations/inline-edit-a11y-and-types/index.js +97 -0
  402. package/schematics/migrations/inline-edit-a11y-and-types/schema.json +20 -0
  403. package/schematics/migrations/input-number-surface/README.md +140 -0
  404. package/schematics/migrations/input-number-surface/data.js +135 -0
  405. package/schematics/migrations/input-number-surface/index.js +292 -0
  406. package/schematics/migrations/input-number-surface/schema.json +20 -0
  407. package/schematics/migrations/input-signals/README.md +20 -0
  408. package/schematics/migrations/input-signals/data.js +30 -0
  409. package/schematics/migrations/input-signals/index.js +17 -0
  410. package/schematics/migrations/input-signals/schema.json +15 -0
  411. package/schematics/migrations/link-deprecated-path/README.md +144 -0
  412. package/schematics/migrations/link-deprecated-path/index.js +19 -0
  413. package/schematics/migrations/link-deprecated-path/schema.json +20 -0
  414. package/schematics/migrations/link-signals/README.md +71 -0
  415. package/schematics/migrations/link-signals/data.js +116 -0
  416. package/schematics/migrations/link-signals/index.js +415 -0
  417. package/schematics/migrations/link-signals/schema.json +20 -0
  418. package/schematics/migrations/list-signals/README.md +22 -0
  419. package/schematics/migrations/list-signals/data.js +35 -0
  420. package/schematics/migrations/list-signals/index.js +17 -0
  421. package/schematics/migrations/list-signals/schema.json +15 -0
  422. package/schematics/migrations/list-tree-multiple-input/README.md +105 -0
  423. package/schematics/migrations/list-tree-multiple-input/data.js +74 -0
  424. package/schematics/migrations/list-tree-multiple-input/index.js +221 -0
  425. package/schematics/migrations/list-tree-multiple-input/schema.json +20 -0
  426. package/schematics/migrations/loader-overlay-signals/README.md +62 -0
  427. package/schematics/migrations/loader-overlay-signals/data.js +101 -0
  428. package/schematics/migrations/loader-overlay-signals/index.js +697 -0
  429. package/schematics/migrations/loader-overlay-signals/schema.json +20 -0
  430. package/schematics/migrations/loader-overlay-size-attr/README.md +2 -2
  431. package/schematics/migrations/loader-overlay-size-attr/index.js +1 -1
  432. package/schematics/migrations/locale-configuration-providers/README.md +163 -0
  433. package/schematics/migrations/locale-configuration-providers/data.js +257 -0
  434. package/schematics/migrations/locale-configuration-providers/index.js +294 -0
  435. package/schematics/migrations/locale-configuration-providers/schema.json +20 -0
  436. package/schematics/migrations/mandatory-peer-dependencies/README.md +70 -0
  437. package/schematics/migrations/mandatory-peer-dependencies/index.js +42 -0
  438. package/schematics/migrations/mandatory-peer-dependencies/schema.json +15 -0
  439. package/schematics/migrations/markdown-signals/README.md +58 -0
  440. package/schematics/migrations/markdown-signals/data.js +79 -0
  441. package/schematics/migrations/markdown-signals/index.js +639 -0
  442. package/schematics/migrations/markdown-signals/schema.json +20 -0
  443. package/schematics/migrations/modal-dialog-semantics/README.md +106 -0
  444. package/schematics/migrations/modal-dialog-semantics/data.js +110 -0
  445. package/schematics/migrations/modal-dialog-semantics/index.js +58 -0
  446. package/schematics/migrations/modal-dialog-semantics/schema.json +15 -0
  447. package/schematics/migrations/modal-signals/README.md +88 -0
  448. package/schematics/migrations/modal-signals/data.js +132 -0
  449. package/schematics/migrations/modal-signals/index.js +19 -0
  450. package/schematics/migrations/modal-signals/schema.json +20 -0
  451. package/schematics/migrations/navbar-signals-and-aria/README.md +111 -0
  452. package/schematics/migrations/navbar-signals-and-aria/data.js +198 -0
  453. package/schematics/migrations/navbar-signals-and-aria/index.js +568 -0
  454. package/schematics/migrations/navbar-signals-and-aria/schema.json +20 -0
  455. package/schematics/migrations/new-icons-pack/README.md +10 -10
  456. package/schematics/migrations/new-icons-pack/index.js +1 -1
  457. package/schematics/migrations/notification-center-signals/README.md +67 -0
  458. package/schematics/migrations/notification-center-signals/data.js +66 -0
  459. package/schematics/migrations/notification-center-signals/index.js +61 -0
  460. package/schematics/migrations/notification-center-signals/schema.json +15 -0
  461. package/schematics/migrations/option-signals/README.md +37 -0
  462. package/schematics/migrations/option-signals/data.js +86 -0
  463. package/schematics/migrations/option-signals/index.js +19 -0
  464. package/schematics/migrations/option-signals/schema.json +20 -0
  465. package/schematics/migrations/popover-leave-delay/README.md +51 -0
  466. package/schematics/migrations/popover-leave-delay/data.js +61 -0
  467. package/schematics/migrations/popover-leave-delay/index.js +54 -0
  468. package/schematics/migrations/popover-leave-delay/schema.json +15 -0
  469. package/schematics/migrations/progress-bar-percentage-and-aria/README.md +54 -0
  470. package/schematics/migrations/progress-bar-percentage-and-aria/data.js +76 -0
  471. package/schematics/migrations/progress-bar-percentage-and-aria/index.js +58 -0
  472. package/schematics/migrations/progress-bar-percentage-and-aria/schema.json +15 -0
  473. package/schematics/migrations/progress-spinner-signals/README.md +72 -0
  474. package/schematics/migrations/progress-spinner-signals/data.js +83 -0
  475. package/schematics/migrations/progress-spinner-signals/index.js +694 -0
  476. package/schematics/migrations/progress-spinner-signals/schema.json +20 -0
  477. package/schematics/migrations/query-list-signals/README.md +32 -0
  478. package/schematics/migrations/query-list-signals/data.js +70 -0
  479. package/schematics/migrations/query-list-signals/index.js +17 -0
  480. package/schematics/migrations/query-list-signals/schema.json +15 -0
  481. package/schematics/migrations/radio-signals-and-aria/README.md +82 -0
  482. package/schematics/migrations/radio-signals-and-aria/data.js +163 -0
  483. package/schematics/migrations/radio-signals-and-aria/index.js +39 -0
  484. package/schematics/migrations/radio-signals-and-aria/schema.json +20 -0
  485. package/schematics/migrations/read-state-dwell-handlers/README.md +125 -0
  486. package/schematics/migrations/read-state-dwell-handlers/data.js +45 -0
  487. package/schematics/migrations/read-state-dwell-handlers/index.js +215 -0
  488. package/schematics/migrations/read-state-dwell-handlers/schema.json +20 -0
  489. package/schematics/migrations/scrollbar-deprecated-path/README.md +128 -0
  490. package/schematics/migrations/scrollbar-deprecated-path/index.js +20 -0
  491. package/schematics/migrations/scrollbar-deprecated-path/schema.json +20 -0
  492. package/schematics/migrations/select-signal-inputs/README.md +61 -0
  493. package/schematics/migrations/select-signal-inputs/data.js +99 -0
  494. package/schematics/migrations/select-signal-inputs/index.js +57 -0
  495. package/schematics/migrations/select-signal-inputs/schema.json +15 -0
  496. package/schematics/migrations/sidepanel-non-modal-behavior/README.md +57 -0
  497. package/schematics/migrations/sidepanel-non-modal-behavior/data.js +111 -0
  498. package/schematics/migrations/sidepanel-non-modal-behavior/index.js +57 -0
  499. package/schematics/migrations/sidepanel-non-modal-behavior/schema.json +15 -0
  500. package/schematics/migrations/signal-inputs-subclasses/README.md +28 -0
  501. package/schematics/migrations/signal-inputs-subclasses/data.js +69 -0
  502. package/schematics/migrations/signal-inputs-subclasses/index.js +17 -0
  503. package/schematics/migrations/signal-inputs-subclasses/schema.json +15 -0
  504. package/schematics/migrations/split-button-optional-disabled/README.md +47 -0
  505. package/schematics/migrations/split-button-optional-disabled/data.js +53 -0
  506. package/schematics/migrations/split-button-optional-disabled/index.js +57 -0
  507. package/schematics/migrations/split-button-optional-disabled/schema.json +15 -0
  508. package/schematics/migrations/splitter-deprecated-path/README.md +136 -0
  509. package/schematics/migrations/splitter-deprecated-path/index.js +20 -0
  510. package/schematics/migrations/splitter-deprecated-path/schema.json +20 -0
  511. package/schematics/migrations/state-saving-default/README.md +67 -0
  512. package/schematics/migrations/state-saving-default/data.js +88 -0
  513. package/schematics/migrations/state-saving-default/index.js +62 -0
  514. package/schematics/migrations/state-saving-default/schema.json +15 -0
  515. package/schematics/migrations/table-cell-content/README.md +55 -0
  516. package/schematics/migrations/table-cell-content/data.js +66 -0
  517. package/schematics/migrations/table-cell-content/index.js +66 -0
  518. package/schematics/migrations/table-cell-content/schema.json +15 -0
  519. package/schematics/migrations/tabs-signals-and-aria/README.md +93 -0
  520. package/schematics/migrations/tabs-signals-and-aria/data.js +139 -0
  521. package/schematics/migrations/tabs-signals-and-aria/index.js +65 -0
  522. package/schematics/migrations/tabs-signals-and-aria/schema.json +15 -0
  523. package/schematics/migrations/tag-list-cleaner/README.md +58 -0
  524. package/schematics/migrations/tag-list-cleaner/data.js +42 -0
  525. package/schematics/migrations/tag-list-cleaner/index.js +196 -0
  526. package/schematics/migrations/tag-list-cleaner/schema.json +20 -0
  527. package/schematics/migrations/tag-slots/README.md +41 -0
  528. package/schematics/migrations/tag-slots/index.js +190 -0
  529. package/schematics/migrations/tag-slots/schema.json +20 -0
  530. package/schematics/migrations/tags-signals/README.md +85 -0
  531. package/schematics/migrations/tags-signals/data.js +103 -0
  532. package/schematics/migrations/tags-signals/index.js +673 -0
  533. package/schematics/migrations/tags-signals/schema.json +20 -0
  534. package/schematics/migrations/textarea-signals/README.md +72 -0
  535. package/schematics/migrations/textarea-signals/data.js +121 -0
  536. package/schematics/migrations/textarea-signals/index.js +379 -0
  537. package/schematics/migrations/textarea-signals/schema.json +20 -0
  538. package/schematics/migrations/time-range-title-for/README.md +164 -0
  539. package/schematics/migrations/time-range-title-for/data.js +139 -0
  540. package/schematics/migrations/time-range-title-for/index.js +163 -0
  541. package/schematics/migrations/time-range-title-for/schema.json +20 -0
  542. package/schematics/migrations/timepicker-signals/README.md +78 -0
  543. package/schematics/migrations/timepicker-signals/data.js +82 -0
  544. package/schematics/migrations/timepicker-signals/index.js +709 -0
  545. package/schematics/migrations/timepicker-signals/schema.json +20 -0
  546. package/schematics/migrations/timezone-grouping-utils/README.md +73 -0
  547. package/schematics/migrations/timezone-grouping-utils/data.js +101 -0
  548. package/schematics/migrations/timezone-grouping-utils/index.js +64 -0
  549. package/schematics/migrations/timezone-grouping-utils/schema.json +15 -0
  550. package/schematics/migrations/title-encapsulation/README.md +49 -0
  551. package/schematics/migrations/title-encapsulation/data.js +69 -0
  552. package/schematics/migrations/title-encapsulation/index.js +57 -0
  553. package/schematics/migrations/title-encapsulation/schema.json +15 -0
  554. package/schematics/migrations/toast-stack-and-defaults/README.md +102 -0
  555. package/schematics/migrations/toast-stack-and-defaults/data.js +79 -0
  556. package/schematics/migrations/toast-stack-and-defaults/index.js +53 -0
  557. package/schematics/migrations/toast-stack-and-defaults/schema.json +15 -0
  558. package/schematics/migrations/tooltip-pointer-events-and-types/README.md +53 -0
  559. package/schematics/migrations/tooltip-pointer-events-and-types/data.js +89 -0
  560. package/schematics/migrations/tooltip-pointer-events-and-types/index.js +60 -0
  561. package/schematics/migrations/tooltip-pointer-events-and-types/schema.json +15 -0
  562. package/schematics/migrations/top-bar-container-selectors/README.md +111 -0
  563. package/schematics/migrations/top-bar-container-selectors/data.js +56 -0
  564. package/schematics/migrations/top-bar-container-selectors/index.js +84 -0
  565. package/schematics/migrations/top-bar-container-selectors/schema.json +20 -0
  566. package/schematics/migrations/tree-select-signals/README.md +61 -0
  567. package/schematics/migrations/tree-select-signals/data.js +106 -0
  568. package/schematics/migrations/tree-select-signals/index.js +58 -0
  569. package/schematics/migrations/tree-select-signals/schema.json +15 -0
  570. package/schematics/migrations/tree-signals/README.md +82 -0
  571. package/schematics/migrations/tree-signals/data.js +123 -0
  572. package/schematics/migrations/tree-signals/index.js +54 -0
  573. package/schematics/migrations/tree-signals/schema.json +15 -0
  574. package/schematics/migrations/tree-state-saving-default/README.md +66 -0
  575. package/schematics/migrations/tree-state-saving-default/data.js +78 -0
  576. package/schematics/migrations/tree-state-saving-default/index.js +60 -0
  577. package/schematics/migrations/tree-state-saving-default/schema.json +15 -0
  578. package/schematics/migrations/username-pipe-injection/README.md +59 -0
  579. package/schematics/migrations/username-pipe-injection/data.js +78 -0
  580. package/schematics/migrations/username-pipe-injection/index.js +58 -0
  581. package/schematics/migrations/username-pipe-injection/schema.json +15 -0
  582. package/schematics/migrations/v20-upgrade/README.md +36 -16
  583. package/schematics/migrations/v20-upgrade/data.js +124 -77
  584. package/schematics/migrations/v20-upgrade/index.js +6 -213
  585. package/schematics/migrations/v21-upgrade/README.md +271 -0
  586. package/schematics/migrations/v21-upgrade/data.js +1371 -0
  587. package/schematics/migrations/v21-upgrade/index.js +94 -0
  588. package/schematics/migrations/v21-upgrade/schema.json +20 -0
  589. package/schematics/migrations/zoneless-change-detection/README.md +30 -0
  590. package/schematics/migrations/zoneless-change-detection/data.js +29 -0
  591. package/schematics/migrations/zoneless-change-detection/index.js +20 -0
  592. package/schematics/migrations/zoneless-change-detection/schema.json +15 -0
  593. package/schematics/migrations.json +392 -2
  594. package/schematics/ng-add/index.js +515 -14
  595. package/schematics/ng-add/schema.json +15 -0
  596. package/schematics/utils/deprecated-path-migration.js +61 -0
  597. package/schematics/utils/package-config.js +9 -105
  598. package/scrollbar/{_scrollbar-component-theme.scss → deprecated/_scrollbar-component-theme.scss} +1 -1
  599. package/scrollbar/{scrollbar.component.scss → deprecated/scrollbar.component.scss} +1 -1
  600. package/scrollbar/native-scrollbar.scss +68 -0
  601. package/scrollbar/scrollbar-tokens.scss +13 -22
  602. package/scrollbar/scrollbar-track.scss +94 -0
  603. package/scrollbar/scrollbar-viewport.scss +33 -0
  604. package/scrollbar/scrollbar.scss +24 -0
  605. package/search-expandable/search-expandable-tokens.scss +4 -0
  606. package/search-expandable/search-expandable.scss +4 -2
  607. package/select/_select-theme.scss +3 -16
  608. package/select/select.scss +0 -6
  609. package/sidebar/sidebar.scss +20 -0
  610. package/sidepanel/_sidepanel-theme.scss +1 -1
  611. package/sidepanel/sidepanel-tokens.scss +7 -1
  612. package/sidepanel/sidepanel.scss +41 -5
  613. package/skeleton/skeleton-presets.scss +350 -0
  614. package/skeleton/skeleton-tokens.scss +127 -0
  615. package/skeleton/skeleton.scss +53 -45
  616. package/split-button/_split-button-theme.scss +4 -4
  617. package/split-button/split-button.scss +2 -6
  618. package/splitter/{_splitter-theme.scss → deprecated/_splitter-theme.scss} +1 -1
  619. package/splitter/deprecated/splitter.scss +51 -0
  620. package/splitter/splitter-tokens.scss +19 -0
  621. package/splitter/splitter.scss +148 -28
  622. package/table/_table-theme.scss +13 -12
  623. package/table/table-tokens.scss +8 -0
  624. package/table/table.scss +47 -22
  625. package/tabs/_tabs-common.scss +14 -14
  626. package/tabs/_tabs-theme.scss +4 -5
  627. package/tabs/tab-body.scss +49 -1
  628. package/tabs/tab-header.scss +2 -1
  629. package/tags/tag-list.scss +4 -0
  630. package/tags/tag.scss +19 -1
  631. package/time-range/time-range.scss +9 -0
  632. package/timezone/timezone-option.component.scss +4 -7
  633. package/timezone/timezone-select.component.scss +3 -0
  634. package/toast/_toast-theme.scss +1 -4
  635. package/toast/toast-container.component.scss +19 -13
  636. package/toast/toast-tokens.scss +12 -6
  637. package/toast/toast.component.scss +42 -19
  638. package/toggle/_toggle-theme.scss +4 -10
  639. package/toggle/toggle.scss +67 -26
  640. package/tooltip/_tooltip-theme.scss +7 -1
  641. package/tooltip/tooltip-tokens.scss +1 -2
  642. package/tooltip/tooltip.scss +55 -9
  643. package/top-bar/top-bar-tokens.scss +13 -2
  644. package/top-bar/top-bar.scss +24 -19
  645. package/tree/_tree-theme.scss +0 -1
  646. package/tree/toggle.scss +5 -9
  647. package/tree/tree-option.scss +2 -4
  648. package/tree/tree-tokens.scss +2 -1
  649. package/tree/tree.scss +3 -5
  650. package/tree-select/_tree-select-theme.scss +4 -15
  651. package/tree-select/tree-select-tokens.scss +16 -0
  652. package/tree-select/tree-select.scss +0 -6
  653. package/{accordion/index.d.ts → types/koobiq-components-accordion.d.ts} +102 -84
  654. package/{actions-panel/index.d.ts → types/koobiq-components-actions-panel.d.ts} +44 -59
  655. package/{alert/index.d.ts → types/koobiq-components-alert.d.ts} +8 -3
  656. package/types/koobiq-components-app-switcher.d.ts +406 -0
  657. package/types/koobiq-components-autocomplete.d.ts +443 -0
  658. package/{badge/index.d.ts → types/koobiq-components-badge.d.ts} +25 -20
  659. package/{breadcrumbs/index.d.ts → types/koobiq-components-breadcrumbs.d.ts} +97 -46
  660. package/types/koobiq-components-button-toggle.d.ts +340 -0
  661. package/types/koobiq-components-button.d.ts +296 -0
  662. package/types/koobiq-components-checkbox.d.ts +172 -0
  663. package/types/koobiq-components-clamped-text.d.ts +184 -0
  664. package/{code-block/index.d.ts → types/koobiq-components-code-block.d.ts} +114 -79
  665. package/{content-panel/index.d.ts → types/koobiq-components-content-panel.d.ts} +81 -25
  666. package/{core/index.d.ts → types/koobiq-components-core.d.ts} +2827 -865
  667. package/{datepicker/index.d.ts → types/koobiq-components-datepicker.d.ts} +161 -116
  668. package/types/koobiq-components-divider.d.ts +43 -0
  669. package/types/koobiq-components-dl.d.ts +235 -0
  670. package/{dropdown/index.d.ts → types/koobiq-components-dropdown.d.ts} +245 -239
  671. package/types/koobiq-components-ellipsis-center.d.ts +85 -0
  672. package/types/koobiq-components-empty-state.d.ts +106 -0
  673. package/{file-upload/index.d.ts → types/koobiq-components-file-upload.d.ts} +214 -107
  674. package/{filter-bar/index.d.ts → types/koobiq-components-filter-bar.d.ts} +410 -495
  675. package/types/koobiq-components-flag.d.ts +68 -0
  676. package/{form-field/index.d.ts → types/koobiq-components-form-field.d.ts} +167 -191
  677. package/types/koobiq-components-icon.d.ts +333 -0
  678. package/{inline-edit/index.d.ts → types/koobiq-components-inline-edit.d.ts} +109 -46
  679. package/types/koobiq-components-input.d.ts +477 -0
  680. package/types/koobiq-components-link-deprecated.d.ts +101 -0
  681. package/types/koobiq-components-link.d.ts +176 -0
  682. package/{list/index.d.ts → types/koobiq-components-list.d.ts} +162 -99
  683. package/types/koobiq-components-loader-overlay.d.ts +101 -0
  684. package/{markdown/index.d.ts → types/koobiq-components-markdown.d.ts} +16 -24
  685. package/types/koobiq-components-modal.d.ts +666 -0
  686. package/types/koobiq-components-navbar.d.ts +569 -0
  687. package/types/koobiq-components-notification-center.d.ts +500 -0
  688. package/{overflow-items/index.d.ts → types/koobiq-components-overflow-items.d.ts} +8 -22
  689. package/types/koobiq-components-popover.d.ts +468 -0
  690. package/types/koobiq-components-progress-bar.d.ts +67 -0
  691. package/{progress-spinner/index.d.ts → types/koobiq-components-progress-spinner.d.ts} +33 -10
  692. package/types/koobiq-components-radio.d.ts +294 -0
  693. package/{resizer/index.d.ts → types/koobiq-components-resizer.d.ts} +37 -2
  694. package/{scrollbar/index.d.ts → types/koobiq-components-scrollbar-deprecated.d.ts} +18 -1
  695. package/types/koobiq-components-scrollbar.d.ts +154 -0
  696. package/types/koobiq-components-search-expandable.d.ts +164 -0
  697. package/{select/index.d.ts → types/koobiq-components-select.d.ts} +360 -167
  698. package/types/koobiq-components-sidebar.d.ts +152 -0
  699. package/types/koobiq-components-sidepanel.d.ts +436 -0
  700. package/types/koobiq-components-skeleton.d.ts +234 -0
  701. package/types/koobiq-components-split-button.d.ts +65 -0
  702. package/{splitter/index.d.ts → types/koobiq-components-splitter-deprecated.d.ts} +44 -1
  703. package/types/koobiq-components-splitter.d.ts +406 -0
  704. package/types/koobiq-components-table.d.ts +44 -0
  705. package/types/koobiq-components-tabs.d.ts +888 -0
  706. package/{tags/index.d.ts → types/koobiq-components-tags.d.ts} +249 -133
  707. package/types/koobiq-components-textarea.d.ts +178 -0
  708. package/{time-range/index.d.ts → types/koobiq-components-time-range.d.ts} +135 -62
  709. package/types/koobiq-components-timepicker.d.ts +223 -0
  710. package/types/koobiq-components-timezone.d.ts +266 -0
  711. package/types/koobiq-components-title.d.ts +184 -0
  712. package/types/koobiq-components-toast.d.ts +289 -0
  713. package/types/koobiq-components-toggle.d.ts +121 -0
  714. package/types/koobiq-components-tooltip.d.ts +610 -0
  715. package/types/koobiq-components-top-bar.d.ts +61 -0
  716. package/types/koobiq-components-tree-select.d.ts +667 -0
  717. package/types/koobiq-components-tree.d.ts +1290 -0
  718. package/types/koobiq-components-username.d.ts +340 -0
  719. package/username/_username-theme.scss +35 -0
  720. package/username/username.scss +10 -34
  721. package/app-switcher/index.d.ts +0 -276
  722. package/autocomplete/index.d.ts +0 -286
  723. package/button/index.d.ts +0 -153
  724. package/button-toggle/index.d.ts +0 -162
  725. package/checkbox/index.d.ts +0 -163
  726. package/clamped-text/index.d.ts +0 -146
  727. package/core/styles/_tokens.scss +0 -7
  728. package/core/styles/common/_clearfix.scss +0 -13
  729. package/core/styles/common/_popup.scss +0 -6
  730. package/core/styles/functions/_index.scss +0 -3
  731. package/core/styles/functions/_number.scss +0 -60
  732. package/core/styles/functions/_string.scss +0 -18
  733. package/core/styles/theming/scrollbar-tokens.scss +0 -25
  734. package/core/styles/typography/_typography-utils.scss +0 -84
  735. package/divider/index.d.ts +0 -20
  736. package/dl/index.d.ts +0 -45
  737. package/ellipsis-center/index.d.ts +0 -71
  738. package/empty-state/index.d.ts +0 -45
  739. package/flag/index.d.ts +0 -44
  740. package/icon/index.d.ts +0 -200
  741. package/input/index.d.ts +0 -354
  742. package/link/index.d.ts +0 -56
  743. package/loader-overlay/index.d.ts +0 -57
  744. package/modal/index.d.ts +0 -339
  745. package/navbar/index.d.ts +0 -372
  746. package/notification-center/index.d.ts +0 -323
  747. package/popover/index.d.ts +0 -182
  748. package/prebuilt-themes/dark-theme.css +0 -1
  749. package/prebuilt-themes/light-theme.css +0 -1
  750. package/progress-bar/index.d.ts +0 -31
  751. package/radio/index.d.ts +0 -203
  752. package/search-expandable/index.d.ts +0 -101
  753. package/sidebar/index.d.ts +0 -94
  754. package/sidepanel/index.d.ts +0 -272
  755. package/skeleton/index.d.ts +0 -26
  756. package/split-button/index.d.ts +0 -46
  757. package/table/index.d.ts +0 -25
  758. package/tabs/index.d.ts +0 -677
  759. package/textarea/index.d.ts +0 -138
  760. package/timepicker/index.d.ts +0 -197
  761. package/timezone/index.d.ts +0 -125
  762. package/title/index.d.ts +0 -139
  763. package/toast/index.d.ts +0 -187
  764. package/toggle/index.d.ts +0 -104
  765. package/tooltip/index.d.ts +0 -335
  766. package/top-bar/index.d.ts +0 -33
  767. package/tree/index.d.ts +0 -802
  768. package/tree-select/index.d.ts +0 -475
  769. package/username/index.d.ts +0 -194
  770. /package/{dynamic-translation/index.d.ts → types/koobiq-components-dynamic-translation.d.ts} +0 -0
  771. /package/{index.d.ts → types/koobiq-components.d.ts} +0 -0
@@ -1,54 +1,96 @@
1
- import { trigger, state, style, transition, animate } from '@angular/animations';
2
- import { CdkTrapFocus, A11yModule, ConfigurableFocusTrapFactory, FocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY } from '@angular/cdk/a11y';
1
+ import { ConfigurableFocusTrapFactory, FocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, CdkTrapFocus, FocusMonitor } from '@angular/cdk/a11y';
3
2
  import * as i0 from '@angular/core';
4
- import { viewChild, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, InjectionToken, inject, Renderer2, input, booleanAttribute, EventEmitter, numberAttribute, Output, Input, Directive, output, NgModule } from '@angular/core';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { viewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, InjectionToken, inject, input, booleanAttribute, EventEmitter, untracked, Directive, signal, output, effect, NgModule } from '@angular/core';
4
+ import { takeUntilDestroyed, outputFromObservable } from '@angular/core/rxjs-interop';
6
5
  import * as i1 from '@koobiq/components/button';
7
6
  import { KbqButtonModule } from '@koobiq/components/button';
8
- import { KbqPopUp, KbqOverflowShadowContainer, KbqComponentColors, applyPopupMargins, KbqOverflowShadowTop, KbqOverflowShadowBottom, KbqPopUpTrigger, PopUpTriggers, PopUpSizes, POSITION_TO_CSS_MAP, kbqSiblingPopupProvider, EmptyFocusTrapStrategy } from '@koobiq/components/core';
7
+ import { EmptyFocusTrapStrategy, KbqPopUp, kbqInjectA11yLocaleConfiguration, KbqOverflowShadowContainer, KbqComponentColors, applyPopupMargins, KbqOverflowShadowTop, KbqOverflowShadowBottom, kbqRepositionScrollStrategyFactory, KbqPopUpTrigger, KBQ_OVERLAY_LAYERS, PopUpTriggers, PopUpSizes, kbqOptionalNumberAttribute, PopUpPlacements, POSITION_TO_CSS_MAP, kbqSiblingPopupProvider, kbqInjectPopoverConfirmLocaleConfiguration } from '@koobiq/components/core';
9
8
  import { NEVER, merge, Subject } from 'rxjs';
10
9
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
11
10
  import { CdkObserveContent } from '@angular/cdk/observers';
12
- import { Overlay, OverlayContainer, OverlayModule } from '@angular/cdk/overlay';
13
- import { NgTemplateOutlet } from '@angular/common';
11
+ import { ScrollDispatcher } from '@angular/cdk/overlay';
12
+ import { NgTemplateOutlet, DOCUMENT } from '@angular/common';
14
13
  import * as i2 from '@koobiq/components/icon';
15
14
  import { KbqIconModule } from '@koobiq/components/icon';
16
-
17
- const kbqPopoverAnimations = {
18
- /** Animation that transitions a tooltip in and out. */
19
- popoverState: trigger('state', [
20
- state('initial', style({
21
- opacity: 0,
22
- transform: 'scale(1, 0.8)'
23
- })),
24
- transition('* => visible', animate('120ms cubic-bezier(0, 0, 0.2, 1)', style({
25
- opacity: 1,
26
- transform: 'scale(1, 1)'
27
- }))),
28
- transition('* => hidden', animate('100ms linear', style({ opacity: 0 })))
29
- ])
30
- };
15
+ import { KbqScrollbarViewport } from '@koobiq/components/scrollbar';
31
16
 
32
17
  const defaultOffsetYWithArrow = 8;
18
+ /** Leave delay applied to a hover-triggered popover when `kbqLeaveDelay` is not bound. */
19
+ const defaultHoverLeaveDelay = 500;
20
+ /** Default `kbqPopoverBackdropClass`. */
21
+ const defaultBackdropClass = 'cdk-overlay-transparent-backdrop';
22
+ /** Debounce of the content-mutation observer that drives the scroll shadows, in milliseconds. */
23
+ const contentObserverDebounce = 15;
24
+ /** DOM event names the shared pop-up base records right before opening on a pointer or focus event. */
25
+ const passiveOpenEvents = ['mouseenter', 'focus'];
26
+ let nextUniqueId = 0;
27
+ /**
28
+ * Focus-trap wiring of a popover panel.
29
+ *
30
+ * Provided on the panel components rather than on `KbqPopoverModule`: both entries are injector-wide, so at
31
+ * module level they replaced the CDK inert strategy for every other focus trap in the importing injector.
32
+ *
33
+ * @docs-private
34
+ */
35
+ const KBQ_POPOVER_FOCUS_TRAP_PROVIDERS = [
36
+ { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },
37
+ { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }
38
+ ];
33
39
  class KbqPopoverComponent extends KbqPopUp {
34
40
  constructor() {
35
41
  super(...arguments);
42
+ /** Accessible name for the icon-only close button. */
43
+ this.a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();
44
+ /** Debounce shared by the mutation observer and the scroll-shadow container (both expose `debounce`). */
45
+ this.contentObserverDebounce = contentObserverDebounce;
36
46
  this.prefix = 'kbq-popover';
37
47
  this.isTrapFocus = false;
38
48
  this.hasCloseButton = false;
49
+ this.popoverElement = viewChild('popover', ...(ngDevMode ? [{ debugName: "popoverElement" }] : /* istanbul ignore next */ []));
39
50
  this.cdkTrapFocus = viewChild.required(CdkTrapFocus);
40
51
  /** @docs-private */
41
- this.overflowContainer = viewChild(KbqOverflowShadowContainer, ...(ngDevMode ? [{ debugName: "overflowContainer" }] : []));
52
+ this.overflowContainer = viewChild(KbqOverflowShadowContainer, ...(ngDevMode ? [{ debugName: "overflowContainer" }] : /* istanbul ignore next */ []));
53
+ this.scrollbarViewport = viewChild(KbqScrollbarViewport, ...(ngDevMode ? [{ debugName: "scrollbarViewport" }] : /* istanbul ignore next */ []));
42
54
  this.componentColors = KbqComponentColors;
43
55
  }
56
+ /**
57
+ * Panel element (`.kbq-popover`), not the component host.
58
+ *
59
+ * Deliberately shadows the injected `KbqPopUp.elementRef`: the base measures and decorates the visible
60
+ * panel, so both `applyPopupMargins` here and `setStickPosition`/`addEventListenerForHide` in the base
61
+ * must resolve to the same element. The confirm template carries the matching `#popover` reference.
62
+ */
63
+ get elementRef() {
64
+ return this.popoverElement();
65
+ }
66
+ /** Id of the header text node, referenced by the panel's `aria-labelledby`. */
67
+ get headerId() {
68
+ return `${this.panelId}-header`;
69
+ }
70
+ /**
71
+ * Whether the header can name the dialog. Only a string header renders a text node with an id to point
72
+ * `aria-labelledby` at; a template header is arbitrary markup, so those panels fall back to `ariaLabel`.
73
+ */
74
+ get labelledByHeader() {
75
+ return !!this.header && !this.isTemplateRef(this.header);
76
+ }
44
77
  ngAfterViewInit() {
45
78
  this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {
46
79
  if (this.offset !== null && state && this.elementRef) {
47
80
  applyPopupMargins(this.renderer, this.elementRef.nativeElement, this.prefix, `${this.offset.toString()}px`);
48
81
  this.setStickPosition();
49
82
  }
83
+ // Every closing path ends here, and the panel is still in the DOM at this point, so this is the
84
+ // one place where focus can be handed back to the trigger instead of falling to `<body>`.
85
+ if (!state) {
86
+ this.trigger?.restoreFocus();
87
+ }
50
88
  });
51
- this.cdkTrapFocus().focusTrap.focusFirstTabbableElement();
89
+ // A hover- or focus-triggered popover is dismissed by the pointer leaving it, so capturing the
90
+ // keyboard would strand focus on `<body>` when it auto-hides.
91
+ if (this.trigger?.capturesFocusOnOpen ?? true) {
92
+ this.cdkTrapFocus().focusTrap.focusFirstTabbableElement();
93
+ }
52
94
  }
53
95
  updateClassMap(placement, customClass, size) {
54
96
  super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });
@@ -56,64 +98,100 @@ class KbqPopoverComponent extends KbqPopUp {
56
98
  updateTrapFocus(isTrapFocus) {
57
99
  this.isTrapFocus = isTrapFocus;
58
100
  }
59
- onEscape() {
60
- this.hide(0);
61
- this.trigger.focus();
101
+ /** Closes the panel on `Escape` inside it, unless a control there spent the key closing a popup of its own. */
102
+ onEscape(event) {
103
+ if (event?.defaultPrevented || this.trigger?.preventClose)
104
+ return;
105
+ // Spent, so that a container closing on Escape, such as a modal around an overlay layer, stays open.
106
+ event?.preventDefault();
107
+ this.requestClose();
108
+ }
109
+ /** Handles a click on the close button. */
110
+ onClose() {
111
+ this.requestClose();
112
+ }
113
+ /**
114
+ * Closes the panel through its trigger, so that `kbqPopoverPreventClose` is honored and focus is restored
115
+ * the same way as on every other closing path.
116
+ *
117
+ * The component is exported and can be rendered without a trigger — `ngAfterViewInit` already allows for
118
+ * that — and such a panel has no `preventClose` to honor and no trigger to hand focus back to, so it hides
119
+ * itself rather than throwing on a keypress.
120
+ */
121
+ requestClose() {
122
+ if (this.trigger) {
123
+ this.trigger.close();
124
+ }
125
+ else {
126
+ this.hide(0);
127
+ }
128
+ }
129
+ /**
130
+ * Whether the scrollable content region needs its own tab stop and landmark (AXE
131
+ * `scrollable-region-focusable`). An unconditional `tabindex` would add a stop to every popover.
132
+ */
133
+ isScrollableRegion(container) {
134
+ const { top, bottom } = container.overflow();
135
+ return top || bottom;
62
136
  }
63
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
64
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.30", type: KbqPopoverComponent, isStandalone: true, selector: "kbq-popover-component", host: { listeners: { "keydown.esc": "onEscape()" } }, viewQueries: [{ propertyName: "cdkTrapFocus", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }, { propertyName: "overflowContainer", first: true, predicate: KbqOverflowShadowContainer, descendants: true, isSignal: true }, { propertyName: "elementRef", first: true, predicate: ["popover"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div\n #popover\n class=\"kbq-popover\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n class=\"kbq-popover__content kbq-scrollbar\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"15\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (hasCloseButton && !header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container [ngTemplateOutlet]=\"closeButton\" />\n </div>\n }\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton && header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container [ngTemplateOutlet]=\"closeButton\" />\n </div>\n }\n\n <ng-template #closeButton>\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button kbq-button class=\"kbq-button_transparent\" [color]=\"componentColors.Contrast\" (click)=\"hide(0)\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </ng-template>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}@media(prefers-reduced-motion:reduce){.kbq-progress:after{animation:none}}.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top);--kbq-popover-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: KbqOverflowShadowContainer, selector: "[kbqOverflowShadowContainer]", inputs: ["debounce"], exportAs: ["kbqOverflowShadowContainer"] }, { kind: "directive", type: KbqOverflowShadowTop, selector: "[kbqOverflowShadowTop]", inputs: ["kbqOverflowShadowTop", "shadow"], exportAs: ["kbqOverflowShadowTop"] }, { kind: "directive", type: KbqOverflowShadowBottom, selector: "[kbqOverflowShadowBottom]", inputs: ["kbqOverflowShadowBottom", "shadow"], exportAs: ["kbqOverflowShadowBottom"] }], animations: [kbqPopoverAnimations.popoverState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
137
+ afterShowAnimation() {
138
+ this.scrollbarViewport()?.flashScrollIndicators();
139
+ }
140
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
141
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqPopoverComponent, isStandalone: true, selector: "kbq-popover-component", host: { listeners: { "keydown.esc": "onEscape($event)" } }, providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, viewQueries: [{ propertyName: "popoverElement", first: true, predicate: ["popover"], descendants: true, isSignal: true }, { propertyName: "cdkTrapFocus", first: true, predicate: CdkTrapFocus, descendants: true, isSignal: true }, { propertyName: "overflowContainer", first: true, predicate: KbqOverflowShadowContainer, descendants: true, isSignal: true }, { propertyName: "scrollbarViewport", first: true, predicate: KbqScrollbarViewport, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!--\n The dialog role is dropped when nothing names the panel: a screen reader announces an unnamed dialog as\n just \"dialog\", and the `aria-dialog-name` audit fails it. A named panel keeps the role.\n-->\n<div\n #popover\n class=\"kbq-popover\"\n [attr.role]=\"labelledByHeader || ariaLabel ? 'dialog' : null\"\n [attr.aria-label]=\"labelledByHeader ? null : ariaLabel\"\n [attr.aria-labelledby]=\"labelledByHeader ? headerId : null\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\" [id]=\"headerId\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n kbqScrollbarViewport\n class=\"kbq-popover__content\"\n [attr.tabindex]=\"isScrollableRegion(popoverContent) ? 0 : null\"\n [attr.role]=\"isScrollableRegion(popoverContent) && labelledByHeader ? 'region' : null\"\n [attr.aria-labelledby]=\"isScrollableRegion(popoverContent) && labelledByHeader ? headerId : null\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"contentObserverDebounce\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton) {\n <div class=\"kbq-popover__close-container\" [class.kbq-popover__close-container_without-header]=\"!header\">\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button\n kbq-button\n class=\"kbq-button_transparent\"\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClose()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </div>\n }\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-inline-start:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-end-start-radius:0;border-end-end-radius:0;border-start-end-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){corner-shape:squircle;border-start-end-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){corner-shape:squircle;border-end-start-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-end-start-radius:0;border-end-end-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-start-end-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover{box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1;opacity:0;transform:scaleY(.8)}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover.kbq-popover_visible{opacity:1;transform:none;transition:opacity .12s cubic-bezier(0,0,.2,1),transform .12s cubic-bezier(0,0,.2,1)}.kbq-popover.kbq-popover_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-popover.kbq-popover_visible{animation:none;transition:none}}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover__container{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__close-container_without-header .kbq-popover__close{top:0;inset-inline-end:0;transform:translateY(-50%) translate(50%)}[dir=rtl] .kbq-popover__close-container_without-header .kbq-popover__close{transform:translateY(-50%) translate(-50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-inline-end:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);inset-inline-end:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-popover__close{corner-shape:squircle;border-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i2.KbqIcon, selector: "[kbq-icon]", inputs: ["aria-hidden", "iconSize", "autoColor", "kbq-icon"] }, { kind: "directive", type: KbqScrollbarViewport, selector: "[kbqScrollbarViewport]", inputs: ["kbqScrollbarMode", "kbqScrollbarHideDelay"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: KbqOverflowShadowContainer, selector: "[kbqOverflowShadowContainer]", inputs: ["debounce"], exportAs: ["kbqOverflowShadowContainer"] }, { kind: "directive", type: KbqOverflowShadowTop, selector: "[kbqOverflowShadowTop]", inputs: ["kbqOverflowShadowTop", "shadow"], exportAs: ["kbqOverflowShadowTop"] }, { kind: "directive", type: KbqOverflowShadowBottom, selector: "[kbqOverflowShadowBottom]", inputs: ["kbqOverflowShadowBottom", "shadow"], exportAs: ["kbqOverflowShadowBottom"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
65
142
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverComponent, decorators: [{
143
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverComponent, decorators: [{
67
144
  type: Component,
68
145
  args: [{ selector: 'kbq-popover-component', imports: [
69
146
  NgTemplateOutlet,
70
147
  CdkObserveContent,
71
148
  KbqButtonModule,
72
149
  KbqIconModule,
150
+ KbqScrollbarViewport,
73
151
  CdkTrapFocus,
74
152
  KbqOverflowShadowContainer,
75
153
  KbqOverflowShadowTop,
76
154
  KbqOverflowShadowBottom
77
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
78
- '(keydown.esc)': 'onEscape()'
79
- }, animations: [kbqPopoverAnimations.popoverState], preserveWhitespaces: false, template: "<div\n #popover\n class=\"kbq-popover\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n class=\"kbq-popover__content kbq-scrollbar\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"15\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (hasCloseButton && !header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container [ngTemplateOutlet]=\"closeButton\" />\n </div>\n }\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton && header) {\n <div class=\"kbq-popover__close-container\">\n <ng-container [ngTemplateOutlet]=\"closeButton\" />\n </div>\n }\n\n <ng-template #closeButton>\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button kbq-button class=\"kbq-button_transparent\" [color]=\"componentColors.Contrast\" (click)=\"hide(0)\">\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </ng-template>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}@media(prefers-reduced-motion:reduce){.kbq-progress:after{animation:none}}.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top);--kbq-popover-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"] }]
80
- }], propDecorators: { elementRef: [{
81
- type: ViewChild,
82
- args: ['popover']
83
- }], cdkTrapFocus: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }], overflowContainer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => KbqOverflowShadowContainer), { isSignal: true }] }] } });
155
+ ], providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
156
+ '(keydown.esc)': 'onEscape($event)'
157
+ }, preserveWhitespaces: false, template: "<!--\n The dialog role is dropped when nothing names the panel: a screen reader announces an unnamed dialog as\n just \"dialog\", and the `aria-dialog-name` audit fails it. A named panel keeps the role.\n-->\n<div\n #popover\n class=\"kbq-popover\"\n [attr.role]=\"labelledByHeader || ariaLabel ? 'dialog' : null\"\n [attr.aria-label]=\"labelledByHeader ? null : ariaLabel\"\n [attr.aria-labelledby]=\"labelledByHeader ? headerId : null\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div\n class=\"kbq-popover__container\"\n [class.kbq-popover__container_with-footer]=\"footer\"\n [class.kbq-popover__container_with-header]=\"header\"\n >\n @if (header) {\n <div\n class=\"kbq-popover__header\"\n [class.kbq-popover__header_default-paddings]=\"defaultPaddings\"\n [class.kbq-popover__header_with-close-button]=\"hasCloseButton\"\n [kbqOverflowShadowTop]=\"overflowContainer()\"\n >\n @if (isTemplateRef(header)) {\n <ng-container [ngTemplateOutlet]=\"$any(header)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div class=\"kbq-popover__header-text\" [id]=\"headerId\">{{ header }}</div>\n }\n </div>\n }\n\n @if (content) {\n <div\n #popoverContent=\"kbqOverflowShadowContainer\"\n kbqOverflowShadowContainer\n kbqScrollbarViewport\n class=\"kbq-popover__content\"\n [attr.tabindex]=\"isScrollableRegion(popoverContent) ? 0 : null\"\n [attr.role]=\"isScrollableRegion(popoverContent) && labelledByHeader ? 'region' : null\"\n [attr.aria-labelledby]=\"isScrollableRegion(popoverContent) && labelledByHeader ? headerId : null\"\n [class.kbq-popover__content_default-paddings]=\"defaultPaddings\"\n [debounce]=\"contentObserverDebounce\"\n (cdkObserveContent)=\"popoverContent.checkOverflow()\"\n >\n @if (isTemplateRef(content)) {\n <ng-container [ngTemplateOutlet]=\"$any(content)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ content }}</div>\n }\n </div>\n }\n\n @if (footer) {\n <div\n class=\"kbq-popover__footer\"\n [class.kbq-popover__footer_default-paddings]=\"defaultPaddings\"\n [kbqOverflowShadowBottom]=\"overflowContainer()\"\n >\n @if (isTemplateRef(footer)) {\n <ng-container [ngTemplateOutlet]=\"$any(footer)\" [ngTemplateOutletContext]=\"context\" />\n } @else {\n <div>{{ footer }}</div>\n }\n </div>\n }\n </div>\n\n @if (hasCloseButton) {\n <div class=\"kbq-popover__close-container\" [class.kbq-popover__close-container_without-header]=\"!header\">\n <div class=\"kbq-popover__close\" [class.kbq-popover__close_background-overlay-inverse]=\"!header\">\n <button\n kbq-button\n class=\"kbq-button_transparent\"\n [attr.aria-label]=\"a11yLocaleConfiguration().close\"\n [color]=\"componentColors.Contrast\"\n (click)=\"onClose()\"\n >\n <i kbq-icon=\"kbq-xmark_16\" [color]=\"componentColors.Contrast\"></i>\n </button>\n </div>\n </div>\n }\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-inline-start:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-end-start-radius:0;border-end-end-radius:0;border-start-end-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){corner-shape:squircle;border-start-end-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){corner-shape:squircle;border-end-start-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-end-start-radius:0;border-end-end-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-start-end-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover{box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1;opacity:0;transform:scaleY(.8)}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover.kbq-popover_visible{opacity:1;transform:none;transition:opacity .12s cubic-bezier(0,0,.2,1),transform .12s cubic-bezier(0,0,.2,1)}.kbq-popover.kbq-popover_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-popover.kbq-popover_visible{animation:none;transition:none}}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover__container{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__close-container_without-header .kbq-popover__close{top:0;inset-inline-end:0;transform:translateY(-50%) translate(50%)}[dir=rtl] .kbq-popover__close-container_without-header .kbq-popover__close{transform:translateY(-50%) translate(-50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-inline-end:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);inset-inline-end:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-popover__close{corner-shape:squircle;border-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"] }]
158
+ }], propDecorators: { popoverElement: [{ type: i0.ViewChild, args: ['popover', { isSignal: true }] }], cdkTrapFocus: [{ type: i0.ViewChild, args: [i0.forwardRef(() => CdkTrapFocus), { isSignal: true }] }], overflowContainer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => KbqOverflowShadowContainer), { isSignal: true }] }], scrollbarViewport: [{ type: i0.ViewChild, args: [i0.forwardRef(() => KbqScrollbarViewport), { isSignal: true }] }] } });
84
159
  const KBQ_POPOVER_SCROLL_STRATEGY = new InjectionToken('kbq-popover-scroll-strategy', {
85
160
  providedIn: 'root',
86
- factory: () => kbqPopoverScrollStrategyFactory(inject(Overlay))
161
+ factory: () => kbqPopoverScrollStrategyFactory(inject(ScrollDispatcher))
87
162
  });
88
163
  /** @docs-private */
89
- function kbqPopoverScrollStrategyFactory(overlay) {
90
- return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });
164
+ function kbqPopoverScrollStrategyFactory(scrollDispatcher) {
165
+ return kbqRepositionScrollStrategyFactory(scrollDispatcher, { scrollThrottle: 20 });
91
166
  }
92
- /** @docs-private */
167
+ /**
168
+ * Redundant to the root factory of the token; kept so an app can restore the default under its own override (#DS-2196).
169
+ *
170
+ * @docs-private
171
+ */
93
172
  const KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER = {
94
173
  provide: KBQ_POPOVER_SCROLL_STRATEGY,
95
- deps: [Overlay],
174
+ deps: [ScrollDispatcher],
96
175
  useFactory: kbqPopoverScrollStrategyFactory
97
176
  };
98
- /** Creates an error to be thrown if the user supplied an invalid popover position. */
99
- function getKbqPopoverInvalidPositionError(position) {
100
- return Error(`KbqPopover position "${position}" is invalid.`);
101
- }
102
177
  class KbqPopoverTrigger extends KbqPopUpTrigger {
103
178
  constructor() {
104
179
  super(...arguments);
105
- this.overlayContainer = inject(OverlayContainer);
106
- this.renderer = inject(Renderer2);
107
180
  this.scrollStrategy = inject(KBQ_POPOVER_SCROLL_STRATEGY);
108
- /** Controls whether the component should be hidden when it is not visible in the viewport. */
109
- this.hideIfNotInViewPort = input(true, ...(ngDevMode ? [{ debugName: "hideIfNotInViewPort", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
181
+ this.focusMonitor = inject(FocusMonitor);
182
+ this.document = inject(DOCUMENT);
183
+ this.overlayLayers = inject(KBQ_OVERLAY_LAYERS);
184
+ /** Id of the panel this trigger controls, shared with `aria-controls`. */
185
+ this.panelId = `kbq-popover-${nextUniqueId++}`;
186
+ /**
187
+ * Input (`kbqPopoverHideIfNotInViewPort`) — whether the popover closes once its trigger scrolls out of the
188
+ * nearest scrollable ancestor. A bound `null` or `undefined` restores the default, `true`.
189
+ */
190
+ this.popoverHideIfNotInViewPort = input(true, { ...(ngDevMode ? { debugName: "popoverHideIfNotInViewPort" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverHideIfNotInViewPort',
191
+ transform: (value) => (value == null ? true : booleanAttribute(value)) });
110
192
  /** prevents closure by any event */
111
- // TODO: Skipped for migration because:
112
- // Your application code writes to the input. This prevents migration.
113
193
  this.preventClose = false;
114
- /** disables default padding for all popover elements (header, content and footer) */
115
- // TODO: Skipped for migration because:
116
- // Class of this input is referenced in the signature of another class.
194
+ /** Whether the header, content and footer keep their default paddings. Bound with `kbqPopoverDefaultPaddings`. */
117
195
  this.defaultPaddings = true;
118
196
  this._hasBackdrop = false;
119
197
  this._trigger = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;
@@ -121,68 +199,181 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
121
199
  this._context = null;
122
200
  this._hasCloseButton = false;
123
201
  this._closeOnScroll = null;
124
- // TODO: Skipped for migration because:
125
- // Class of this input is referenced in the signature of another class.
126
- this.backdropClass = 'cdk-overlay-transparent-backdrop';
127
- // @TODO add realization for arrow (#DS-2514)
128
- // TODO: Skipped for migration because:
129
- // This input overrides a field from a superclass, while the superclass field
130
- // is not migrated.
202
+ this._backdropClass = defaultBackdropClass;
203
+ /** Input (`kbqPopoverArrow`) — renders the arrow pointing at the trigger. */
131
204
  this.arrow = true;
132
- // TODO: Skipped for migration because:
133
- // Class of this input is referenced in the signature of another class.
205
+ /** Input (`kbqPopoverOffset`) — distance between the trigger and the panel, in pixels. */
134
206
  this.offset = defaultOffsetYWithArrow;
207
+ /**
208
+ * Input (`kbqPopoverAutoFocus`) — whether opening the popover moves the keyboard focus into the panel. Turn it
209
+ * off for a panel that must not disturb what the reader is doing: taking focus away from a text selection
210
+ * collapses it. Focus then never enters the panel, so its content has to be reachable some other way.
211
+ */
212
+ this.autoFocus = true;
213
+ /** Input (`kbqEnterDelay`) — delay before opening, in milliseconds. Defaults to `0`. */
214
+ this.enterDelay = 0;
215
+ this.leaveDelayBound = false;
216
+ /**
217
+ * Emits the resolved placement whenever the panel is repositioned.
218
+ *
219
+ * Declared as `string` to match the abstract member on `KbqPopUpTrigger`: `EventEmitter` is invariant,
220
+ * so a narrower emitter cannot override a wider one. Narrowing both is a change to the shared pop-up
221
+ * base and belongs to the branch that owns it.
222
+ */
135
223
  this.placementChange = new EventEmitter();
224
+ /** @docs-private */
225
+ this.placementChangeOutput = outputFromObservable(this.placementChange, { alias: 'kbqPopoverPlacementChange' });
226
+ /** Emits `true` when the panel opens and `false` when it closes. */
136
227
  this.visibleChange = new EventEmitter();
228
+ /** @docs-private */
229
+ this.visibleChangeOutput = outputFromObservable(this.visibleChange, { alias: 'kbqPopoverVisibleChange' });
137
230
  this.originSelector = '.kbq-popover';
138
- this.classAddedToOverlayContainer = false;
231
+ /** Whether a position re-apply is already queued for this turn. */
232
+ this.repositionScheduled = false;
233
+ /**
234
+ * Whether the open currently on screen was a deliberate one rather than a pointer or focus one.
235
+ *
236
+ * The shared base records the event that opened the pop-up in `triggerName`, but its keyboard opener is
237
+ * the one listener registered without that bookkeeping, and it defers the open to a task of its own —
238
+ * by then `triggerName` still holds whatever the pointer last did. Frozen on every `show()`, which the
239
+ * pointer and focus listeners reach with the name they have just written.
240
+ */
241
+ this.deliberateOpen = true;
242
+ /** @docs-private */
243
+ this.triggerInput = input(undefined, { ...(ngDevMode ? { debugName: "triggerInput" } : /* istanbul ignore next */ {}), alias: 'kbqTrigger' });
244
+ /** @docs-private */
245
+ this.kbqLeaveDelayInput = input(undefined, { ...(ngDevMode ? { debugName: "kbqLeaveDelayInput" } : /* istanbul ignore next */ {}), alias: 'kbqLeaveDelay',
246
+ transform: kbqOptionalNumberAttribute });
247
+ /** @docs-private */
248
+ this.enterDelayInput = input(undefined, { ...(ngDevMode ? { debugName: "enterDelayInput" } : /* istanbul ignore next */ {}), alias: 'kbqEnterDelay',
249
+ transform: kbqOptionalNumberAttribute });
250
+ /** @docs-private */
251
+ this.preventCloseInput = input(undefined, { ...(ngDevMode ? { debugName: "preventCloseInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverPreventClose',
252
+ transform: booleanAttribute });
253
+ /** @docs-private */
254
+ this.stickToWindowInput = input(undefined, { ...(ngDevMode ? { debugName: "stickToWindowInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverStickToWindow' });
255
+ /** @docs-private */
256
+ this.popoverContainerInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverContainerInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverContainer' });
257
+ /** @docs-private */
258
+ this.popoverHasBackdropInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverHasBackdropInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverHasBackdrop',
259
+ transform: booleanAttribute });
260
+ /** @docs-private */
261
+ this.popoverBackdropClassInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverBackdropClassInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverBackdropClass' });
262
+ /** @docs-private */
263
+ this.popoverDefaultPaddingsInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverDefaultPaddingsInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverDefaultPaddings',
264
+ transform: booleanAttribute });
265
+ /** @docs-private */
266
+ this.sizeInput = input(undefined, { ...(ngDevMode ? { debugName: "sizeInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverSize' });
267
+ /** @docs-private */
268
+ this.customClassInput = input(undefined, { ...(ngDevMode ? { debugName: "customClassInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverClass' });
269
+ /** @docs-private */
270
+ this.headerInput = input(undefined, { ...(ngDevMode ? { debugName: "headerInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverHeader' });
271
+ /** @docs-private */
272
+ this.contentInput = input(undefined, { ...(ngDevMode ? { debugName: "contentInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverContent' });
273
+ /** @docs-private */
274
+ this.footerInput = input(undefined, { ...(ngDevMode ? { debugName: "footerInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverFooter' });
275
+ /** @docs-private */
276
+ this.contextInput = input(undefined, { ...(ngDevMode ? { debugName: "contextInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverContext' });
277
+ /** @docs-private */
278
+ this.ariaLabelInput = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabelInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverAriaLabel' });
279
+ /** @docs-private */
280
+ this.popoverHasCloseButtonInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverHasCloseButtonInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverHasCloseButton',
281
+ transform: booleanAttribute });
282
+ /** @docs-private */
283
+ this.popoverCloseOnScrollInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverCloseOnScrollInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverCloseOnScroll',
284
+ transform: booleanAttribute });
285
+ /** @docs-private */
286
+ this.arrowInput = input(undefined, { ...(ngDevMode ? { debugName: "arrowInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverArrow',
287
+ transform: booleanAttribute });
288
+ /** @docs-private */
289
+ this.offsetInput = input(undefined, { ...(ngDevMode ? { debugName: "offsetInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverOffset',
290
+ transform: kbqOptionalNumberAttribute });
291
+ /** @docs-private */
292
+ this.autoFocusInput = input(undefined, { ...(ngDevMode ? { debugName: "autoFocusInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverAutoFocus',
293
+ transform: booleanAttribute });
294
+ /** @docs-private */
295
+ this.popoverOriginInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverOriginInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverOrigin' });
296
+ /** @docs-private */
297
+ this.disabledInput = input(undefined, { ...(ngDevMode ? { debugName: "disabledInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverDisabled',
298
+ transform: booleanAttribute });
299
+ /** @docs-private */
300
+ this.popoverPlacementPriorityInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverPlacementPriorityInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverPlacementPriority' });
301
+ /** @docs-private */
302
+ this.popoverPlacementInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverPlacementInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverPlacement' });
303
+ /** @docs-private */
304
+ this.popoverVisibleInput = input(undefined, { ...(ngDevMode ? { debugName: "popoverVisibleInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverVisible' });
305
+ /** Closes the popover once it has scrolled out of its nearest scrollable ancestor. */
139
306
  this.hideIfScrolledOutOfView = () => {
140
- if (!this.scrollable || !this.hideIfNotInViewPort())
307
+ if (!this.instance || !this.scrollable || !this.popoverHideIfNotInViewPort())
141
308
  return;
142
309
  const rect = this.elementRef.nativeElement.getBoundingClientRect();
143
310
  const containerRect = this.scrollable.getElementRef().nativeElement.getBoundingClientRect();
144
- if (!(rect.bottom >= containerRect.top &&
311
+ const intersectsContainer = rect.bottom >= containerRect.top &&
145
312
  rect.right >= containerRect.left &&
146
313
  rect.top <= containerRect.bottom &&
147
- rect.left <= containerRect.right)) {
314
+ rect.left <= containerRect.right;
315
+ if (!intersectsContainer) {
316
+ this.hide();
317
+ }
318
+ };
319
+ /** Closes the popover once its trigger has scrolled out of a `.kbq-hide-nested-popup` container. */
320
+ this.hideIfNestedPopupScrolledAway = (scrollable) => {
321
+ if (!this.instance)
322
+ return;
323
+ if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup'))
324
+ return;
325
+ const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();
326
+ const childRects = this.elementRef.nativeElement.getBoundingClientRect();
327
+ if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {
148
328
  this.hide();
149
329
  }
150
330
  };
151
331
  }
152
- // TODO: Skipped for migration because:
153
- // Accessor inputs cannot be migrated as they are too complex.
332
+ /** Input (`kbqPopoverDefaultPaddings`) — sets {@link defaultPaddings}. */
333
+ set popoverDefaultPaddings(value) {
334
+ this.defaultPaddings = value;
335
+ }
336
+ /** Input (`kbqPopoverVisible`) — opens the popover when set to `true` and closes it when set to `false`. */
154
337
  get popoverVisible() {
155
338
  return this.visible;
156
339
  }
157
340
  set popoverVisible(value) {
158
341
  super.updateVisible(value);
159
342
  }
160
- // TODO: Skipped for migration because:
161
- // Accessor inputs cannot be migrated as they are too complex.
343
+ /** Input (`kbqPopoverPlacement`) — preferred placement of the panel relative to the trigger. */
162
344
  get popoverPlacement() {
163
345
  return this.placement;
164
346
  }
165
347
  set popoverPlacement(value) {
166
348
  super.updatePlacement(value);
167
349
  }
168
- // TODO: Skipped for migration because:
169
- // Accessor inputs cannot be migrated as they are too complex.
350
+ /** Input (`kbqPopoverPlacementPriority`) — ordered placements tried before the default strategy. */
170
351
  get popoverPlacementPriority() {
171
352
  return this.placementPriority;
172
353
  }
173
354
  set popoverPlacementPriority(value) {
174
355
  super.updatePlacementPriority(value);
175
356
  }
176
- // TODO: Skipped for migration because:
177
- // Accessor inputs cannot be migrated as they are too complex.
357
+ /** Input (`kbqPopoverContainer`) — sets {@link container}. */
358
+ set popoverContainer(value) {
359
+ this.container = value;
360
+ }
361
+ /**
362
+ * Whether a backdrop is rendered behind the panel. With a backdrop the popover closes on a backdrop click
363
+ * instead of on any outside pointer event. Bound with `kbqPopoverHasBackdrop`.
364
+ */
178
365
  get hasBackdrop() {
179
366
  return this._hasBackdrop;
180
367
  }
181
368
  set hasBackdrop(value) {
182
369
  this._hasBackdrop = coerceBooleanProperty(value);
370
+ this.invalidateOverlay();
371
+ }
372
+ /** Input (`kbqPopoverHasBackdrop`) — sets {@link hasBackdrop}. */
373
+ set popoverHasBackdrop(value) {
374
+ this.hasBackdrop = value;
183
375
  }
184
- // TODO: Skipped for migration because:
185
- // Accessor inputs cannot be migrated as they are too complex.
376
+ /** Input (`kbqPopoverHeader`) — header of the panel, as a string or a template. */
186
377
  get header() {
187
378
  return this._header;
188
379
  }
@@ -190,8 +381,7 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
190
381
  this._header = value;
191
382
  this.updateData();
192
383
  }
193
- // TODO: Skipped for migration because:
194
- // Accessor inputs cannot be migrated as they are too complex.
384
+ /** Input (`kbqPopoverContent`) — content of the panel, as a string or a template. */
195
385
  get content() {
196
386
  return this._content;
197
387
  }
@@ -199,8 +389,7 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
199
389
  this._content = value;
200
390
  this.updateData();
201
391
  }
202
- // TODO: Skipped for migration because:
203
- // Accessor inputs cannot be migrated as they are too complex.
392
+ /** Input (`kbqPopoverFooter`) — footer of the panel, as a string or a template. */
204
393
  get footer() {
205
394
  return this._footer;
206
395
  }
@@ -208,8 +397,7 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
208
397
  this._footer = value;
209
398
  this.updateData();
210
399
  }
211
- // TODO: Skipped for migration because:
212
- // Accessor inputs cannot be migrated as they are too complex.
400
+ /** Input (`kbqPopoverDisabled`) — disables the trigger and closes an open popover. */
213
401
  get disabled() {
214
402
  return this._disabled;
215
403
  }
@@ -219,8 +407,11 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
219
407
  this.hide();
220
408
  }
221
409
  }
222
- // TODO: Skipped for migration because:
223
- // Accessor inputs cannot be migrated as they are too complex.
410
+ /**
411
+ * Input (`kbqTrigger`) with the comma-separated trigger events. An empty value resets to click + keydown
412
+ * and rebinds listeners. The alias is shared with `kbqTooltip`, so binding it on an element that carries
413
+ * both reconfigures both.
414
+ */
224
415
  get trigger() {
225
416
  return this._trigger;
226
417
  }
@@ -229,16 +420,24 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
229
420
  this._trigger = value;
230
421
  if (this.trigger.includes(PopUpTriggers.Hover)) {
231
422
  this.hideWithTimeout = true;
232
- this.leaveDelay = this.leaveDelay ?? 500;
233
423
  }
234
424
  }
235
425
  else {
236
426
  this._trigger = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;
237
427
  }
428
+ // Re-derived from the trigger on every change rather than applied once to an unset delay: a popover
429
+ // switched to `hover` later closes on the 0 it was born with otherwise, leaving no time to cross the
430
+ // gap between the trigger and the panel.
431
+ if (!this.leaveDelayBound) {
432
+ this.leaveDelay = this.defaultLeaveDelay;
433
+ }
238
434
  this.initListeners();
239
435
  }
240
- // TODO: Skipped for migration because:
241
- // Accessor inputs cannot be migrated as they are too complex.
436
+ /** Leave delay while `kbqLeaveDelay` is not bound. */
437
+ get defaultLeaveDelay() {
438
+ return this._trigger.includes(PopUpTriggers.Hover) ? defaultHoverLeaveDelay : 0;
439
+ }
440
+ /** Input (`kbqPopoverSize`) — preset width of the panel. An unknown value falls back to `medium`. */
242
441
  get size() {
243
442
  return this._size;
244
443
  }
@@ -249,10 +448,11 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
249
448
  }
250
449
  else {
251
450
  this._size = PopUpSizes.Medium;
451
+ // eslint-disable-next-line no-console
452
+ console.warn(`Unknown size: ${value}. Will use the default size: ${this._size}`);
252
453
  }
253
454
  }
254
- // TODO: Skipped for migration because:
255
- // Accessor inputs cannot be migrated as they are too complex.
455
+ /** Input (`kbqPopoverClass`) with extra CSS classes applied to the panel. */
256
456
  get customClass() {
257
457
  return this._customClass;
258
458
  }
@@ -261,8 +461,6 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
261
461
  this.updateClassMap();
262
462
  }
263
463
  /** Context for popover templates (kbqPopoverHeader, kbqPopoverContent and kbqPopoverFooter). */
264
- // TODO: Skipped for migration because:
265
- // Accessor inputs cannot be migrated as they are too complex.
266
464
  get context() {
267
465
  return this._context;
268
466
  }
@@ -270,8 +468,18 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
270
468
  this._context = ctx;
271
469
  this.updateData();
272
470
  }
273
- // TODO: Skipped for migration because:
274
- // Accessor inputs cannot be migrated as they are too complex.
471
+ /**
472
+ * Accessible name of the panel. Ignored while a string `kbqPopoverHeader` is set — the header labels the
473
+ * dialog then — and recommended for every header-less popover.
474
+ */
475
+ get ariaLabel() {
476
+ return this._ariaLabel;
477
+ }
478
+ set ariaLabel(value) {
479
+ this._ariaLabel = value;
480
+ this.updateData();
481
+ }
482
+ /** Renders the icon-only close button in the top corner of the panel. Bound with `kbqPopoverHasCloseButton`. */
275
483
  get hasCloseButton() {
276
484
  return this._hasCloseButton;
277
485
  }
@@ -279,26 +487,81 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
279
487
  this._hasCloseButton = value;
280
488
  this.updateData();
281
489
  }
490
+ /** Input (`kbqPopoverHasCloseButton`) — sets {@link hasCloseButton}. */
491
+ set popoverHasCloseButton(value) {
492
+ this.hasCloseButton = value;
493
+ }
282
494
  /**
283
- * Controls the behavior of closing the component on scroll.
284
- * The default value is `false`.
495
+ * Controls the behavior of closing the component on scroll. Bound with `kbqPopoverCloseOnScroll`. Three
496
+ * states:
497
+ * - `null` (default) — the popover survives a scroll, except when it scrolls out of a
498
+ * `.kbq-hide-nested-popup` container, which closes it;
499
+ * - `true` — any scroll closes the popover;
500
+ * - `false` — no scroll closes the popover, not even a `.kbq-hide-nested-popup` one.
501
+ *
285
502
  * Use CloseScrollStrategy as alternative
286
503
  */
287
- // TODO: Skipped for migration because:
288
- // Accessor inputs cannot be migrated as they are too complex.
289
504
  get closeOnScroll() {
290
505
  return this._closeOnScroll;
291
506
  }
292
507
  set closeOnScroll(value) {
293
508
  this._closeOnScroll = coerceBooleanProperty(value);
294
509
  }
510
+ /** Input (`kbqPopoverCloseOnScroll`) — sets {@link closeOnScroll}. */
511
+ set popoverCloseOnScroll(value) {
512
+ this.closeOnScroll = value;
513
+ }
514
+ /** Whether the trigger opens the popover on click, which is also what makes it a labelled dialog opener. */
295
515
  get hasClickTrigger() {
296
516
  return this.trigger.includes(PopUpTriggers.Click);
297
517
  }
518
+ /**
519
+ * Whether opening the popover should move the keyboard focus into the panel. Only deliberate opens
520
+ * (click, keyboard, programmatic) do — a hover- or focus-triggered popover must not steal focus.
521
+ */
522
+ get capturesFocusOnOpen() {
523
+ return this.autoFocus && (this.hasClickTrigger || this.deliberateOpen);
524
+ }
298
525
  /** @docs-private */
299
526
  get instanceDestroyRef() {
300
527
  return this.instance.destroyRef;
301
528
  }
529
+ /** CSS class applied to the backdrop, when there is one. Bound with `kbqPopoverBackdropClass`. */
530
+ get backdropClass() {
531
+ return this._backdropClass;
532
+ }
533
+ set backdropClass(value) {
534
+ this._backdropClass = value;
535
+ this.invalidateOverlay();
536
+ }
537
+ /** Input (`kbqPopoverBackdropClass`) — sets {@link backdropClass}. */
538
+ set popoverBackdropClass(value) {
539
+ this.backdropClass = value;
540
+ }
541
+ /**
542
+ * Input (`kbqPopoverOrigin`) — what the panel is positioned against: an element, or a rectangle in viewport
543
+ * coordinates such as the one `kbqCreateCaretOrigin` keeps on the caret. `null` anchors it to the trigger.
544
+ *
545
+ * Bind it before `kbqPopoverVisible`, which opens the panel as it is written.
546
+ */
547
+ get popoverOrigin() {
548
+ return this.origin;
549
+ }
550
+ set popoverOrigin(value) {
551
+ this.updateOrigin(value);
552
+ }
553
+ /**
554
+ * Input (`kbqLeaveDelay`) — delay before closing, in milliseconds. Defaults to `0`, and to
555
+ * {@link defaultHoverLeaveDelay} when `kbqTrigger` includes `hover`.
556
+ */
557
+ // A write-only input rather than an accessor over `leaveDelay`: the base declares that member as a
558
+ // plain field, and TypeScript refuses to override a property with an accessor (TS2611).
559
+ set kbqLeaveDelay(value) {
560
+ this.leaveDelay = value;
561
+ // Tracked instead of comparing the delay against a sentinel: an explicit `kbqLeaveDelay="0"` and an
562
+ // unbound one are indistinguishable by value, and only the latter takes the hover default.
563
+ this.leaveDelayBound = true;
564
+ }
302
565
  // NB: the trigger↔popover gap is a CSS `margin` on `.kbq-popover` (see `applyPopupMargins`), which sits inside
303
566
  // this `pointer-events: auto` pane, so the gap band is already covered and not click/hover-through. This is why
304
567
  // the connected-overlay `offsetY`→in-pane-padding fix (KBQ_CONNECTED_OVERLAY_* / --kbq-connected-overlay-gap,
@@ -311,6 +574,113 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
311
574
  backdropClass: this.backdropClass
312
575
  };
313
576
  }
577
+ ngOnChanges(changes) {
578
+ // A bound input is handed to its member, a bound `undefined` restoring the
579
+ // member's default; unbound, it leaves what code wrote. The `booleanAttribute` inputs are the exception:
580
+ // the transform reads a bound `undefined` as `false`.
581
+ if (changes['triggerInput']) {
582
+ this.trigger = this.triggerInput() ?? '';
583
+ }
584
+ if (changes['kbqLeaveDelayInput']) {
585
+ const kbqLeaveDelay = this.kbqLeaveDelayInput();
586
+ if (kbqLeaveDelay === undefined) {
587
+ // Counts as unbound, so that a hover popover gets its default delay back.
588
+ this.leaveDelayBound = false;
589
+ this.leaveDelay = this.defaultLeaveDelay;
590
+ }
591
+ else {
592
+ this.kbqLeaveDelay = kbqLeaveDelay;
593
+ }
594
+ }
595
+ if (changes['enterDelayInput']) {
596
+ this.enterDelay = this.enterDelayInput() ?? 0;
597
+ }
598
+ if (changes['preventCloseInput']) {
599
+ const preventClose = this.preventCloseInput();
600
+ if (preventClose !== undefined)
601
+ this.preventClose = preventClose;
602
+ }
603
+ if (changes['stickToWindowInput']) {
604
+ this.stickToWindow = this.stickToWindowInput();
605
+ }
606
+ if (changes['popoverContainerInput']) {
607
+ this.popoverContainer = this.popoverContainerInput();
608
+ }
609
+ if (changes['popoverHasBackdropInput']) {
610
+ const popoverHasBackdrop = this.popoverHasBackdropInput();
611
+ if (popoverHasBackdrop !== undefined)
612
+ this.popoverHasBackdrop = popoverHasBackdrop;
613
+ }
614
+ if (changes['popoverBackdropClassInput']) {
615
+ this.popoverBackdropClass = this.popoverBackdropClassInput() ?? defaultBackdropClass;
616
+ }
617
+ if (changes['popoverDefaultPaddingsInput']) {
618
+ const popoverDefaultPaddings = this.popoverDefaultPaddingsInput();
619
+ if (popoverDefaultPaddings !== undefined)
620
+ this.popoverDefaultPaddings = popoverDefaultPaddings;
621
+ }
622
+ if (changes['sizeInput']) {
623
+ this.size = this.sizeInput() ?? PopUpSizes.Medium;
624
+ }
625
+ if (changes['customClassInput']) {
626
+ this.customClass = this.customClassInput() ?? '';
627
+ }
628
+ if (changes['headerInput']) {
629
+ this.header = this.headerInput() ?? '';
630
+ }
631
+ if (changes['contentInput']) {
632
+ this.content = this.contentInput() ?? '';
633
+ }
634
+ if (changes['footerInput']) {
635
+ this.footer = this.footerInput() ?? '';
636
+ }
637
+ if (changes['contextInput']) {
638
+ this.context = this.contextInput();
639
+ }
640
+ if (changes['ariaLabelInput']) {
641
+ this.ariaLabel = this.ariaLabelInput();
642
+ }
643
+ if (changes['popoverHasCloseButtonInput']) {
644
+ const popoverHasCloseButton = this.popoverHasCloseButtonInput();
645
+ if (popoverHasCloseButton !== undefined)
646
+ this.popoverHasCloseButton = popoverHasCloseButton;
647
+ }
648
+ if (changes['popoverCloseOnScrollInput']) {
649
+ const popoverCloseOnScroll = this.popoverCloseOnScrollInput();
650
+ if (popoverCloseOnScroll !== undefined)
651
+ this.popoverCloseOnScroll = popoverCloseOnScroll;
652
+ }
653
+ if (changes['arrowInput']) {
654
+ const arrow = this.arrowInput();
655
+ if (arrow !== undefined)
656
+ this.arrow = arrow;
657
+ }
658
+ if (changes['offsetInput']) {
659
+ this.offset = this.offsetInput() ?? defaultOffsetYWithArrow;
660
+ }
661
+ if (changes['autoFocusInput']) {
662
+ const autoFocus = this.autoFocusInput();
663
+ if (autoFocus !== undefined)
664
+ this.autoFocus = autoFocus;
665
+ }
666
+ if (changes['popoverOriginInput']) {
667
+ this.popoverOrigin = this.popoverOriginInput() ?? null;
668
+ }
669
+ if (changes['disabledInput']) {
670
+ const disabled = this.disabledInput();
671
+ if (disabled !== undefined)
672
+ this.disabled = disabled;
673
+ }
674
+ if (changes['popoverPlacementPriorityInput']) {
675
+ this.popoverPlacementPriority = this.popoverPlacementPriorityInput() ?? null;
676
+ }
677
+ if (changes['popoverPlacementInput']) {
678
+ this.popoverPlacement = this.popoverPlacementInput() ?? PopUpPlacements.Top;
679
+ }
680
+ if (changes['popoverVisibleInput']) {
681
+ this.popoverVisible = this.popoverVisibleInput() ?? false;
682
+ }
683
+ }
314
684
  ngOnInit() {
315
685
  super.ngOnInit();
316
686
  this.scrollable
@@ -323,46 +693,61 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
323
693
  this.scrollDispatcher
324
694
  .scrolled()
325
695
  .pipe(takeUntilDestroyed(this.destroyRef))
326
- .subscribe((scrollable) => {
327
- if (!scrollable?.getElementRef().nativeElement.classList.contains('kbq-hide-nested-popup'))
328
- return;
329
- const parentRects = scrollable.getElementRef().nativeElement.getBoundingClientRect();
330
- const childRects = this.elementRef.nativeElement.getBoundingClientRect();
331
- if (childRects.bottom < parentRects.top || childRects.top > parentRects.bottom) {
332
- this.hide();
333
- }
334
- });
696
+ .subscribe(this.hideIfNestedPopupScrolledAway);
335
697
  }
336
698
  }
337
- /**
338
- * Overrides the base `show` method to display the overlay component with the
339
- * specified entry delay and apply default positioning offsets.
340
- */
699
+ /** @docs-private */
341
700
  show(delay = this.enterDelay) {
701
+ this.deliberateOpen = !passiveOpenEvents.includes(this.triggerName);
342
702
  super.show(delay);
343
- this.addClassToOverlayContainer();
344
- }
345
- hide(delay = this.leaveDelay) {
346
- super.hide(delay);
347
- this.removeClassFromOverlayContainer();
348
703
  }
704
+ /** @docs-private */
349
705
  updateData() {
706
+ // Untracked: an input written from a consumer's `effect()` lands here, and `isOpen` read on the way would make
707
+ // the effect run again on every open and close.
708
+ untracked(() => this.pushData());
709
+ }
710
+ /** Body of `updateData()`. */
711
+ pushData() {
350
712
  if (!this.instance)
351
713
  return;
352
714
  this.instance.header = this.header;
353
715
  this.instance.content = this.content;
354
- this.instance.context = this.context && { $implicit: this.context };
355
- this.instance.arrow = this.arrow;
716
+ // `!= null` rather than a truthy check: `0`, `''` and `false` are legitimate template contexts, and
717
+ // dropping them left the template rendering the previous context instead.
718
+ this.instance.context = this.context != null ? { $implicit: this.context } : null;
719
+ // `setStickPosition` drops the arrow because a stuck panel no longer points at its trigger; copying
720
+ // the input back would resurrect a detached rotated square on the next update.
721
+ this.instance.arrow = this.stickToWindow ? false : this.arrow;
356
722
  this.instance.offset = this.offset;
357
723
  this.instance.footer = this.footer;
358
724
  this.instance.hasCloseButton = this.hasCloseButton;
359
725
  this.instance.defaultPaddings = this.defaultPaddings;
726
+ this.instance.panelId = this.panelId;
727
+ this.instance.ariaLabel = this.ariaLabel;
360
728
  this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);
729
+ // As the tooltip does: this mostly runs from an input setter, while the trigger's view is being checked,
730
+ // and the panel renders in an overlay of its own that nothing else would check.
731
+ this.instance.detectChanges();
361
732
  if (this.isOpen) {
362
- this.updatePosition(true);
733
+ this.scheduleReposition();
363
734
  }
364
735
  }
365
- /** Updates the position of the current popover. */
736
+ /** @docs-private */
737
+ createOverlay() {
738
+ const overlayRef = super.createOverlay();
739
+ // Read on every attach: a popover stuck to a window edge stays above the bars.
740
+ this.overlayLayers.adopt(overlayRef, () => (this.stickToWindow ? null : this.getNativeElement()));
741
+ return overlayRef;
742
+ }
743
+ /**
744
+ * Re-applies the overlay position.
745
+ *
746
+ * Deliberately narrower than the inherited one, which also rebuilds the closing-action subscription:
747
+ * that stream carries a `delay(0)`, so a reposition coalesced into the same task as an outside click —
748
+ * which is the task in which that click's change detection writes a popover input — would drop the
749
+ * close the click had already scheduled.
750
+ */
366
751
  updatePosition(reapplyPosition = false) {
367
752
  this.overlayRef = this.createOverlay();
368
753
  const position = this.overlayRef.getConfig().positionStrategy
@@ -372,47 +757,90 @@ class KbqPopoverTrigger extends KbqPopUpTrigger {
372
757
  setTimeout(() => position.reapplyLastPosition());
373
758
  }
374
759
  }
760
+ /** @docs-private */
375
761
  getOverlayHandleComponentType() {
376
762
  return KbqPopoverComponent;
377
763
  }
764
+ /** @docs-private */
378
765
  updateClassMap(newPlacement = this.placement) {
379
766
  if (!this.instance) {
380
767
  return;
381
768
  }
382
769
  this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);
383
- this.instance.markForCheck();
384
770
  }
771
+ /** @docs-private */
385
772
  closingActionsForClick() {
386
773
  if (this.hasClickTrigger) {
387
774
  return this.defaultClosingActions();
388
775
  }
389
776
  return [];
390
777
  }
778
+ /** @docs-private */
391
779
  defaultClosingActions() {
392
780
  return [
393
781
  this.overlayRef.backdropClick(),
394
782
  this.hasBackdrop ? NEVER : this.overlayRef.outsidePointerEvents()
395
783
  ];
396
784
  }
785
+ /** @docs-private */
397
786
  closingActions() {
398
- return merge(...this.closingActionsForClick(), this.closeOnScroll ? this.scrollDispatcher.scrolled() : NEVER);
787
+ // Inner panel scrolling must not trigger closeOnScroll.
788
+ const scrolled = this.closeOnScroll ? this.scrollDispatcher.ancestorScrolled(this.getNativeElement()) : NEVER;
789
+ return merge(...this.closingActionsForClick(), scrolled);
399
790
  }
400
- addClassToOverlayContainer() {
401
- const overlayContainer = this.overlayContainer?.getContainerElement();
402
- if (overlayContainer.childNodes.length === 1) {
403
- this.classAddedToOverlayContainer = true;
404
- this.renderer.addClass(overlayContainer, 'cdk-overlay-container_dropdown');
405
- }
791
+ /**
792
+ * Returns focus to the trigger when the popover is closed while focus is still inside its panel.
793
+ *
794
+ * Goes through `FocusMonitor` rather than a native `focus()` call: the kbq focus ring is only rendered
795
+ * for a monitored origin, and a `program` origin keeps a tooltip on the same element from re-opening.
796
+ */
797
+ restoreFocus() {
798
+ if (!this.overlayRef?.overlayElement?.contains(this.document.activeElement))
799
+ return;
800
+ this.focusMonitor.focusVia(this.getNativeElement(), 'program');
406
801
  }
407
- removeClassFromOverlayContainer() {
408
- if (this.classAddedToOverlayContainer) {
409
- this.renderer.removeClass(this.overlayContainer.getContainerElement(), 'cdk-overlay-container_dropdown');
410
- }
802
+ /**
803
+ * Closes the popover on a deliberate action — the panel's close button, or `Escape` inside the panel.
804
+ *
805
+ * `hide()` keeps a hover popover open while the pointer rests on the panel, so that the pointer can
806
+ * travel from the trigger to the content; that is exactly where the pointer is when the close button is
807
+ * clicked, so a deliberate close answers to `kbqPopoverPreventClose` and to nothing else.
808
+ */
809
+ close() {
810
+ if (this.preventClose)
811
+ return;
812
+ this.instance?.hide(0);
813
+ }
814
+ /**
815
+ * Coalesces the position re-apply: a burst of input writes — or a parent change-detection pass that
816
+ * recreates the object bound to `kbqPopoverContext` — schedules one reposition per turn instead of one
817
+ * per write, each of which costs a forced layout read per candidate position.
818
+ */
819
+ scheduleReposition() {
820
+ if (this.repositionScheduled)
821
+ return;
822
+ this.repositionScheduled = true;
823
+ queueMicrotask(() => {
824
+ this.repositionScheduled = false;
825
+ if (this.isOpen && this.overlayRef?.hasAttached()) {
826
+ this.updatePosition(true);
827
+ }
828
+ });
411
829
  }
412
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
413
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.30", type: KbqPopoverTrigger, isStandalone: true, selector: "[kbqPopover]", inputs: { hideIfNotInViewPort: { classPropertyName: "hideIfNotInViewPort", publicName: "hideIfNotInViewPort", isSignal: true, isRequired: false, transformFunction: null }, preventClose: { classPropertyName: "preventClose", publicName: "kbqPopoverPreventClose", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, defaultPaddings: { classPropertyName: "defaultPaddings", publicName: "defaultPaddings", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, popoverVisible: { classPropertyName: "popoverVisible", publicName: "kbqPopoverVisible", isSignal: false, isRequired: false, transformFunction: null }, popoverPlacement: { classPropertyName: "popoverPlacement", publicName: "kbqPopoverPlacement", isSignal: false, isRequired: false, transformFunction: null }, popoverPlacementPriority: { classPropertyName: "popoverPlacementPriority", publicName: "kbqPopoverPlacementPriority", isSignal: false, isRequired: false, transformFunction: null }, stickToWindow: { classPropertyName: "stickToWindow", publicName: "kbqPopoverStickToWindow", isSignal: false, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "container", isSignal: false, isRequired: false, transformFunction: null }, hasBackdrop: { classPropertyName: "hasBackdrop", publicName: "hasBackdrop", isSignal: false, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "kbqPopoverHeader", isSignal: false, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "kbqPopoverContent", isSignal: false, isRequired: false, transformFunction: null }, footer: { classPropertyName: "footer", publicName: "kbqPopoverFooter", isSignal: false, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "kbqPopoverDisabled", isSignal: false, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "kbqTrigger", isSignal: false, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "kbqPopoverSize", isSignal: false, isRequired: false, transformFunction: null }, customClass: { classPropertyName: "customClass", publicName: "kbqPopoverClass", isSignal: false, isRequired: false, transformFunction: null }, context: { classPropertyName: "context", publicName: "kbqPopoverContext", isSignal: false, isRequired: false, transformFunction: null }, hasCloseButton: { classPropertyName: "hasCloseButton", publicName: "hasCloseButton", isSignal: false, isRequired: false, transformFunction: null }, closeOnScroll: { classPropertyName: "closeOnScroll", publicName: "closeOnScroll", isSignal: false, isRequired: false, transformFunction: null }, backdropClass: { classPropertyName: "backdropClass", publicName: "backdropClass", isSignal: false, isRequired: false, transformFunction: null }, arrow: { classPropertyName: "arrow", publicName: "kbqPopoverArrow", isSignal: false, isRequired: false, transformFunction: booleanAttribute }, offset: { classPropertyName: "offset", publicName: "kbqPopoverOffset", isSignal: false, isRequired: false, transformFunction: numberAttribute }, leaveDelay: { classPropertyName: "leaveDelay", publicName: "kbqLeaveDelay", isSignal: false, isRequired: false, transformFunction: numberAttribute } }, outputs: { placementChange: "kbqPopoverPlacementChange", visibleChange: "kbqPopoverVisibleChange" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()" }, properties: { "class.kbq-popover_open": "isOpen", "class.kbq-active": "hasClickTrigger && isOpen" } }, providers: [kbqSiblingPopupProvider(KbqPopoverTrigger)], exportAs: ["kbqPopover"], usesInheritance: true, ngImport: i0 }); }
830
+ /**
831
+ * Drops a closed overlay so the next `show()` rebuilds it. The backdrop and its class are baked into the
832
+ * overlay when it is created, and CDK does not re-render them from the config afterwards.
833
+ */
834
+ invalidateOverlay() {
835
+ if (!this.overlayRef || this.overlayRef.hasAttached())
836
+ return;
837
+ this.overlayRef.dispose();
838
+ this.overlayRef = null;
839
+ }
840
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
841
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqPopoverTrigger, isStandalone: true, selector: "[kbqPopover]", inputs: { popoverHideIfNotInViewPort: { classPropertyName: "popoverHideIfNotInViewPort", publicName: "kbqPopoverHideIfNotInViewPort", isSignal: true, isRequired: false, transformFunction: null }, triggerInput: { classPropertyName: "triggerInput", publicName: "kbqTrigger", isSignal: true, isRequired: false, transformFunction: null }, kbqLeaveDelayInput: { classPropertyName: "kbqLeaveDelayInput", publicName: "kbqLeaveDelay", isSignal: true, isRequired: false, transformFunction: null }, enterDelayInput: { classPropertyName: "enterDelayInput", publicName: "kbqEnterDelay", isSignal: true, isRequired: false, transformFunction: null }, preventCloseInput: { classPropertyName: "preventCloseInput", publicName: "kbqPopoverPreventClose", isSignal: true, isRequired: false, transformFunction: null }, stickToWindowInput: { classPropertyName: "stickToWindowInput", publicName: "kbqPopoverStickToWindow", isSignal: true, isRequired: false, transformFunction: null }, popoverContainerInput: { classPropertyName: "popoverContainerInput", publicName: "kbqPopoverContainer", isSignal: true, isRequired: false, transformFunction: null }, popoverHasBackdropInput: { classPropertyName: "popoverHasBackdropInput", publicName: "kbqPopoverHasBackdrop", isSignal: true, isRequired: false, transformFunction: null }, popoverBackdropClassInput: { classPropertyName: "popoverBackdropClassInput", publicName: "kbqPopoverBackdropClass", isSignal: true, isRequired: false, transformFunction: null }, popoverDefaultPaddingsInput: { classPropertyName: "popoverDefaultPaddingsInput", publicName: "kbqPopoverDefaultPaddings", isSignal: true, isRequired: false, transformFunction: null }, sizeInput: { classPropertyName: "sizeInput", publicName: "kbqPopoverSize", isSignal: true, isRequired: false, transformFunction: null }, customClassInput: { classPropertyName: "customClassInput", publicName: "kbqPopoverClass", isSignal: true, isRequired: false, transformFunction: null }, headerInput: { classPropertyName: "headerInput", publicName: "kbqPopoverHeader", isSignal: true, isRequired: false, transformFunction: null }, contentInput: { classPropertyName: "contentInput", publicName: "kbqPopoverContent", isSignal: true, isRequired: false, transformFunction: null }, footerInput: { classPropertyName: "footerInput", publicName: "kbqPopoverFooter", isSignal: true, isRequired: false, transformFunction: null }, contextInput: { classPropertyName: "contextInput", publicName: "kbqPopoverContext", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelInput: { classPropertyName: "ariaLabelInput", publicName: "kbqPopoverAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, popoverHasCloseButtonInput: { classPropertyName: "popoverHasCloseButtonInput", publicName: "kbqPopoverHasCloseButton", isSignal: true, isRequired: false, transformFunction: null }, popoverCloseOnScrollInput: { classPropertyName: "popoverCloseOnScrollInput", publicName: "kbqPopoverCloseOnScroll", isSignal: true, isRequired: false, transformFunction: null }, arrowInput: { classPropertyName: "arrowInput", publicName: "kbqPopoverArrow", isSignal: true, isRequired: false, transformFunction: null }, offsetInput: { classPropertyName: "offsetInput", publicName: "kbqPopoverOffset", isSignal: true, isRequired: false, transformFunction: null }, autoFocusInput: { classPropertyName: "autoFocusInput", publicName: "kbqPopoverAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, popoverOriginInput: { classPropertyName: "popoverOriginInput", publicName: "kbqPopoverOrigin", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "kbqPopoverDisabled", isSignal: true, isRequired: false, transformFunction: null }, popoverPlacementPriorityInput: { classPropertyName: "popoverPlacementPriorityInput", publicName: "kbqPopoverPlacementPriority", isSignal: true, isRequired: false, transformFunction: null }, popoverPlacementInput: { classPropertyName: "popoverPlacementInput", publicName: "kbqPopoverPlacement", isSignal: true, isRequired: false, transformFunction: null }, popoverVisibleInput: { classPropertyName: "popoverVisibleInput", publicName: "kbqPopoverVisible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { placementChangeOutput: "kbqPopoverPlacementChange", visibleChangeOutput: "kbqPopoverVisibleChange" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()" }, properties: { "class.kbq-popover_open": "isOpen", "class.kbq-active": "hasClickTrigger && isOpen", "attr.aria-expanded": "hasClickTrigger ? isOpen : null", "attr.aria-haspopup": "hasClickTrigger ? \"dialog\" : null", "attr.aria-controls": "hasClickTrigger && isOpen ? panelId : null" } }, providers: [kbqSiblingPopupProvider(KbqPopoverTrigger)], exportAs: ["kbqPopover"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
414
842
  }
415
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverTrigger, decorators: [{
843
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverTrigger, decorators: [{
416
844
  type: Directive,
417
845
  args: [{
418
846
  selector: '[kbqPopover]',
@@ -420,148 +848,162 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
420
848
  host: {
421
849
  '[class.kbq-popover_open]': 'isOpen',
422
850
  '[class.kbq-active]': 'hasClickTrigger && isOpen',
851
+ '[attr.aria-expanded]': 'hasClickTrigger ? isOpen : null',
852
+ '[attr.aria-haspopup]': 'hasClickTrigger ? "dialog" : null',
853
+ '[attr.aria-controls]': 'hasClickTrigger && isOpen ? panelId : null',
423
854
  '(keydown)': 'keydownHandler($event)',
424
855
  '(touchend)': 'touchendHandler()'
425
856
  },
426
857
  exportAs: 'kbqPopover'
427
858
  }]
428
- }], propDecorators: { hideIfNotInViewPort: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideIfNotInViewPort", required: false }] }], preventClose: [{
429
- type: Input,
430
- args: [{ alias: 'kbqPopoverPreventClose', transform: booleanAttribute }]
431
- }], defaultPaddings: [{
432
- type: Input,
433
- args: [{ transform: booleanAttribute }]
434
- }], popoverVisible: [{
435
- type: Input,
436
- args: ['kbqPopoverVisible']
437
- }], popoverPlacement: [{
438
- type: Input,
439
- args: ['kbqPopoverPlacement']
440
- }], popoverPlacementPriority: [{
441
- type: Input,
442
- args: ['kbqPopoverPlacementPriority']
443
- }], stickToWindow: [{
444
- type: Input,
445
- args: ['kbqPopoverStickToWindow']
446
- }], container: [{
447
- type: Input
448
- }], hasBackdrop: [{
449
- type: Input
450
- }], header: [{
451
- type: Input,
452
- args: ['kbqPopoverHeader']
453
- }], content: [{
454
- type: Input,
455
- args: ['kbqPopoverContent']
456
- }], footer: [{
457
- type: Input,
458
- args: ['kbqPopoverFooter']
459
- }], disabled: [{
460
- type: Input,
461
- args: ['kbqPopoverDisabled']
462
- }], trigger: [{
463
- type: Input,
464
- args: ['kbqTrigger']
465
- }], size: [{
466
- type: Input,
467
- args: ['kbqPopoverSize']
468
- }], customClass: [{
469
- type: Input,
470
- args: ['kbqPopoverClass']
471
- }], context: [{
472
- type: Input,
473
- args: ['kbqPopoverContext']
474
- }], hasCloseButton: [{
475
- type: Input
476
- }], closeOnScroll: [{
477
- type: Input
478
- }], backdropClass: [{
479
- type: Input
480
- }], arrow: [{
481
- type: Input,
482
- args: [{ alias: 'kbqPopoverArrow', transform: booleanAttribute }]
483
- }], offset: [{
484
- type: Input,
485
- args: [{ alias: 'kbqPopoverOffset', transform: numberAttribute }]
486
- }], leaveDelay: [{
487
- type: Input,
488
- args: [{ alias: 'kbqLeaveDelay', transform: numberAttribute }]
489
- }], placementChange: [{
490
- type: Output,
491
- args: ['kbqPopoverPlacementChange']
492
- }], visibleChange: [{
493
- type: Output,
494
- args: ['kbqPopoverVisibleChange']
495
- }] } });
859
+ }], propDecorators: { popoverHideIfNotInViewPort: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverHideIfNotInViewPort", required: false }] }], placementChangeOutput: [{ type: i0.Output, args: ["kbqPopoverPlacementChange"] }], visibleChangeOutput: [{ type: i0.Output, args: ["kbqPopoverVisibleChange"] }], triggerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqTrigger", required: false }] }], kbqLeaveDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqLeaveDelay", required: false }] }], enterDelayInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqEnterDelay", required: false }] }], preventCloseInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverPreventClose", required: false }] }], stickToWindowInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverStickToWindow", required: false }] }], popoverContainerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverContainer", required: false }] }], popoverHasBackdropInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverHasBackdrop", required: false }] }], popoverBackdropClassInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverBackdropClass", required: false }] }], popoverDefaultPaddingsInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverDefaultPaddings", required: false }] }], sizeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverSize", required: false }] }], customClassInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverClass", required: false }] }], headerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverHeader", required: false }] }], contentInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverContent", required: false }] }], footerInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverFooter", required: false }] }], contextInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverContext", required: false }] }], ariaLabelInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverAriaLabel", required: false }] }], popoverHasCloseButtonInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverHasCloseButton", required: false }] }], popoverCloseOnScrollInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverCloseOnScroll", required: false }] }], arrowInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverArrow", required: false }] }], offsetInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverOffset", required: false }] }], autoFocusInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverAutoFocus", required: false }] }], popoverOriginInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverOrigin", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverDisabled", required: false }] }], popoverPlacementPriorityInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverPlacementPriority", required: false }] }], popoverPlacementInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverPlacement", required: false }] }], popoverVisibleInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverVisible", required: false }] }] } });
496
860
 
497
- const KBQ_POPOVER_CONFIRM_TEXT = new InjectionToken('');
498
- const KBQ_POPOVER_CONFIRM_BUTTON_TEXT = new InjectionToken('');
861
+ /**
862
+ * Overrides the question of every confirmation popover in the injector scope. Takes precedence over the
863
+ * locale, but not over the `kbqPopoverConfirmText` input.
864
+ */
865
+ const KBQ_POPOVER_CONFIRM_TEXT = new InjectionToken('KbqPopoverConfirmText');
866
+ /**
867
+ * Overrides the confirm-button caption of every confirmation popover in the injector scope. Takes precedence
868
+ * over the locale, but not over the `kbqPopoverConfirmButtonText` input.
869
+ */
870
+ const KBQ_POPOVER_CONFIRM_BUTTON_TEXT = new InjectionToken('KbqPopoverConfirmButtonText');
499
871
  class KbqPopoverConfirmComponent extends KbqPopoverComponent {
500
872
  constructor() {
501
873
  super(...arguments);
874
+ /**
875
+ * Emits when the confirm button is pressed. Internal channel between the panel and its trigger — consume
876
+ * the trigger's `confirm` output instead.
877
+ *
878
+ * @docs-private
879
+ */
502
880
  this.onConfirm = new Subject();
881
+ this.confirmButtonTextState = signal(undefined, ...(ngDevMode ? [{ debugName: "confirmButtonTextState" }] : /* istanbul ignore next */ []));
882
+ this.confirmTextState = signal(undefined, ...(ngDevMode ? [{ debugName: "confirmTextState" }] : /* istanbul ignore next */ []));
883
+ }
884
+ /** Caption of the confirm button. Written by the trigger. */
885
+ get confirmButtonText() {
886
+ return this.confirmButtonTextState();
887
+ }
888
+ set confirmButtonText(value) {
889
+ this.confirmButtonTextState.set(value);
890
+ }
891
+ /** Question rendered in the panel. Written by the trigger. */
892
+ get confirmText() {
893
+ return this.confirmTextState();
503
894
  }
504
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverConfirmComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
505
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.30", type: KbqPopoverConfirmComponent, isStandalone: true, selector: "kbq-popover-confirm-component", usesInheritance: true, ngImport: i0, template: "<div\n cdkTrapFocus=\"true\"\n cdkTrapFocusAutoCapture=\"true\"\n class=\"kbq-popover-confirm kbq-popover\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"'contrast'\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n <div class=\"kbq-popover__arrow\"></div>\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}@media(prefers-reduced-motion:reduce){.kbq-progress:after{animation:none}}.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top);--kbq-popover-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }], animations: [kbqPopoverAnimations.popoverState], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
895
+ set confirmText(value) {
896
+ this.confirmTextState.set(value);
897
+ }
898
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverConfirmComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
899
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.25", type: KbqPopoverConfirmComponent, isStandalone: true, selector: "kbq-popover-confirm-component", providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, usesInheritance: true, ngImport: i0, template: "<div\n #popover\n role=\"dialog\"\n class=\"kbq-popover-confirm kbq-popover\"\n [attr.aria-label]=\"confirmText\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\" [class.kbq-popover__content_default-paddings]=\"defaultPaddings\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"componentColors.Contrast\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-inline-start:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-end-start-radius:0;border-end-end-radius:0;border-start-end-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){corner-shape:squircle;border-start-end-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){corner-shape:squircle;border-end-start-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-end-start-radius:0;border-end-end-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-start-end-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover{box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1;opacity:0;transform:scaleY(.8)}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover.kbq-popover_visible{opacity:1;transform:none;transition:opacity .12s cubic-bezier(0,0,.2,1),transform .12s cubic-bezier(0,0,.2,1)}.kbq-popover.kbq-popover_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-popover.kbq-popover_visible{animation:none;transition:none}}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover__container{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__close-container_without-header .kbq-popover__close{top:0;inset-inline-end:0;transform:translateY(-50%) translate(50%)}[dir=rtl] .kbq-popover__close-container_without-header .kbq-popover__close{transform:translateY(-50%) translate(-50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-inline-end:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);inset-inline-end:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-popover__close{corner-shape:squircle;border-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i1.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i1.KbqButtonCssStyler, selector: "[kbq-button]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
506
900
  }
507
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverConfirmComponent, decorators: [{
901
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverConfirmComponent, decorators: [{
508
902
  type: Component,
509
903
  args: [{ selector: 'kbq-popover-confirm-component', imports: [
510
904
  CdkTrapFocus,
511
905
  KbqButtonModule
512
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [kbqPopoverAnimations.popoverState], preserveWhitespaces: false, template: "<div\n cdkTrapFocus=\"true\"\n cdkTrapFocusAutoCapture=\"true\"\n class=\"kbq-popover-confirm kbq-popover\"\n [class]=\"classMap\"\n [@state]=\"visibility\"\n (@state.done)=\"animationDone($event)\"\n (@state.start)=\"animationStart()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"'contrast'\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n <div class=\"kbq-popover__arrow\"></div>\n</div>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:64px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 12px,#ffffff1a 12px 22px,#0000000a 22px 34px,#ffffff1a 34px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}@media(prefers-reduced-motion:reduce){.kbq-progress:after{animation:none}}.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-size-border-radius)}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-no-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius);box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__content .kbq-popover__close-container{display:flex;justify-content:flex-end;height:0}.kbq-popover__content .kbq-popover__close-container .kbq-popover__close{top:auto;right:auto;transform:translateY(-50%) translate(50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-right:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);right:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top);--kbq-popover-borderless-shadow: 0 2px 8px var(--kbq-shadow-key), 0 3px 8px var(--kbq-shadow-ambient)}\n"] }]
906
+ ], providers: KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, template: "<div\n #popover\n role=\"dialog\"\n class=\"kbq-popover-confirm kbq-popover\"\n [attr.aria-label]=\"confirmText\"\n [id]=\"panelId\"\n [class.kbq-popover_arrowless]=\"!arrow\"\n [cdkTrapFocus]=\"isTrapFocus\"\n [class]=\"classMap\"\n [class.kbq-animations-disabled]=\"animationsDisabled\"\n [class.kbq-popover_visible]=\"isVisible()\"\n>\n <div class=\"kbq-popover__container\">\n <div class=\"kbq-popover__content\" [class.kbq-popover__content_default-paddings]=\"defaultPaddings\">\n <div>{{ confirmText }}</div>\n <button kbq-button [color]=\"componentColors.Contrast\" (click)=\"onConfirm.next()\">\n {{ confirmButtonText }}\n </button>\n </div>\n </div>\n\n @if (arrow) {\n <div class=\"kbq-popover__arrow\"></div>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.kbq-group{display:flex;flex-direction:row}.kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-inline-start:calc(-1 * var(--kbq-size-border-width))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-start-end-radius:0;border-end-end-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-end-start-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-end-start-radius:0;border-end-end-radius:0;border-start-end-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){corner-shape:squircle;border-start-end-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){corner-shape:squircle;border-end-start-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-size-border-width))}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child) .kbq-form-field__container{border-end-start-radius:0;border-end-end-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child) .kbq-form-field__container{border-start-start-radius:0;border-start-end-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child) .kbq-form-field__container{border-radius:0}.kbq-truncate-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover{position:relative;border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover{box-sizing:border-box;list-style:none;white-space:pre-line;z-index:1;opacity:0;transform:scaleY(.8)}.kbq-popover.kbq-popover_small{width:var(--kbq-popover-size-container-width-small)}.kbq-popover.kbq-popover_small .kbq-popover__content_default-paddings.kbq-popover__content{padding:var(--kbq-size-l)}.kbq-popover.kbq-popover_medium{width:var(--kbq-popover-size-container-width-medium)}.kbq-popover.kbq-popover_large{width:var(--kbq-popover-size-container-width-large)}.kbq-popover.kbq-popover_placement-top,.kbq-popover.kbq-popover_placement-top-left,.kbq-popover.kbq-popover_placement-top-right{margin-bottom:8px}.kbq-popover.kbq-popover_placement-right,.kbq-popover.kbq-popover_placement-right-top,.kbq-popover.kbq-popover_placement-right-bottom{margin-left:8px}.kbq-popover.kbq-popover_placement-bottom,.kbq-popover.kbq-popover_placement-bottom-left,.kbq-popover.kbq-popover_placement-bottom-right{margin-top:8px}.kbq-popover.kbq-popover_placement-left,.kbq-popover.kbq-popover_placement-left-top,.kbq-popover.kbq-popover_placement-left-bottom{margin-right:8px}.kbq-popover.kbq-popover_visible{opacity:1;transform:none;transition:opacity .12s cubic-bezier(0,0,.2,1),transform .12s cubic-bezier(0,0,.2,1)}.kbq-popover.kbq-popover_visible.kbq-animations-disabled{animation:none;transition:none}@media(prefers-reduced-motion:reduce){.kbq-popover.kbq-popover_visible{animation:none;transition:none}}.kbq-popover__content{overflow-y:auto}.kbq-popover__content.kbq-popover__content_default-paddings{padding:var(--kbq-popover-size-content-padding-top) var(--kbq-popover-size-content-padding-horizontal) var(--kbq-popover-size-content-padding-bottom)}.kbq-popover__container{overflow:hidden;display:flex;flex-direction:column;max-height:var(--kbq-popover-size-container-max-height);border-radius:var(--kbq-popover-size-container-border-radius)}@supports (corner-shape: squircle){.kbq-popover__container{corner-shape:squircle;border-radius:clamp(var(--kbq-popover-size-container-border-radius) * 1.85,var(--kbq-popover-size-container-border-radius) * 2.3 - 3.6px,var(--kbq-popover-size-container-border-radius) * 2)}}.kbq-popover__container.kbq-popover__container_with-header .kbq-popover__content_default-paddings.kbq-popover__content{padding-top:var(--kbq-size-s)}.kbq-popover__container.kbq-popover__container_with-footer .kbq-popover__content_default-paddings.kbq-popover__content{padding-bottom:var(--kbq-size-s)}.kbq-popover__close-container_without-header .kbq-popover__close{top:0;inset-inline-end:0;transform:translateY(-50%) translate(50%)}[dir=rtl] .kbq-popover__close-container_without-header .kbq-popover__close{transform:translateY(-50%) translate(-50%)}.kbq-popover__header{position:relative;z-index:2;display:flex;flex-shrink:0;align-items:center;overflow:hidden}.kbq-popover__header .kbq-popover__header-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kbq-popover__header.kbq-popover__header_default-paddings{padding:var(--kbq-popover-size-header-padding-top) var(--kbq-popover-size-header-padding-horizontal) var(--kbq-popover-size-header-padding-bottom) var(--kbq-popover-size-header-padding-horizontal)}.kbq-popover__header_with-close-button{padding-inline-end:var(--kbq-size-4xl)}.kbq-popover__footer{position:relative;z-index:2}.kbq-popover__footer.kbq-popover__footer_default-paddings{padding:var(--kbq-popover-size-footer-padding-vertical) var(--kbq-popover-size-footer-padding-horizontal)}.kbq-popover__arrow{position:absolute;z-index:-1;width:12px;height:12px;transform:rotate(45deg)}.kbq-popover_placement-top .kbq-popover__arrow{bottom:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-top-left .kbq-popover__arrow{bottom:-5.5px;left:24px}.kbq-popover_placement-top-right .kbq-popover__arrow{bottom:-5.5px;right:24px}.kbq-popover_placement-right .kbq-popover__arrow{left:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-right-top .kbq-popover__arrow{left:-5.5px;top:24px}.kbq-popover_placement-right-bottom .kbq-popover__arrow{left:-5.5px;bottom:24px}.kbq-popover_placement-left .kbq-popover__arrow{right:-5.5px;top:50%;margin-top:-5.5px}.kbq-popover_placement-left-top .kbq-popover__arrow{right:-5.5px;top:24px}.kbq-popover_placement-left-bottom .kbq-popover__arrow{right:-5.5px;bottom:24px}.kbq-popover_placement-bottom .kbq-popover__arrow{top:-5.5px;left:50%;margin-left:-5.5px}.kbq-popover_placement-bottom-left .kbq-popover__arrow{top:-5.5px;left:24px}.kbq-popover_placement-bottom-right .kbq-popover__arrow{top:-5.5px;right:24px}.kbq-popover__close{position:absolute;z-index:2;top:var(--kbq-size-s);inset-inline-end:var(--kbq-size-s);border-radius:var(--kbq-size-border-radius)}@supports (corner-shape: squircle){.kbq-popover__close{corner-shape:squircle;border-radius:clamp(var(--kbq-size-border-radius) * 1.85,var(--kbq-size-border-radius) * 2.3 - 3.6px,var(--kbq-size-border-radius) * 2)}}.kbq-popover,.kbq-popover.kbq-popover_arrowless{box-shadow:var(--kbq-popover-container-shadow)}.kbq-popover__container{background:var(--kbq-popover-container-background)}.kbq-popover__arrow{box-shadow:var(--kbq-popover-container-shadow);background:var(--kbq-popover-container-background)}.kbq-popover__close.kbq-popover__close_background-overlay-inverse{background-color:var(--kbq-background-overlay-inverse)}.kbq-popover__header{color:var(--kbq-popover-header-text-color)}.kbq-popover__content{color:var(--kbq-popover-content-text-color)}.kbq-popover__header{font-size:var(--kbq-typography-subheading-font-size);font-style:var(--kbq-typography-subheading-font-style);font-weight:var(--kbq-typography-subheading-font-weight);line-height:var(--kbq-typography-subheading-line-height);font-family:var(--kbq-typography-subheading-font-family);text-transform:var(--kbq-typography-subheading-text-transform);font-feature-settings:var(--kbq-typography-subheading-font-feature-settings);letter-spacing:var(--kbq-typography-subheading-letter-spacing)}.kbq-popover__content{font-size:var(--kbq-typography-text-normal-font-size);font-style:var(--kbq-typography-text-normal-font-style);font-weight:var(--kbq-typography-text-normal-font-weight);line-height:var(--kbq-typography-text-normal-line-height);font-family:var(--kbq-typography-text-normal-font-family);text-transform:var(--kbq-typography-text-normal-text-transform);font-feature-settings:var(--kbq-typography-text-normal-font-feature-settings);letter-spacing:var(--kbq-typography-text-normal-letter-spacing)}\n", ".kbq-popover{--kbq-popover-size-container-width-small: 200px;--kbq-popover-size-container-width-medium: 400px;--kbq-popover-size-container-width-large: 640px;--kbq-popover-size-container-border-radius: var(--kbq-size-m);--kbq-popover-size-container-max-height: 480px;--kbq-popover-size-close-button-width: 32px;--kbq-popover-size-close-button-margin-right: -16px;--kbq-popover-size-close-button-margin-top: -10px;--kbq-popover-size-header-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-header-padding-top: var(--kbq-size-l);--kbq-popover-size-header-padding-bottom: var(--kbq-size-xs);--kbq-popover-size-content-padding-top: var(--kbq-size-xxl);--kbq-popover-size-content-padding-bottom: var(--kbq-size-3xl);--kbq-popover-size-content-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-size-content-padding-with-header-top: var(--kbq-size-s);--kbq-popover-size-content-padding-with-footer-bottom: var(--kbq-size-s);--kbq-popover-size-footer-padding-vertical: var(--kbq-size-l);--kbq-popover-size-footer-padding-horizontal: var(--kbq-size-xxl);--kbq-popover-container-background: var(--kbq-background-card);--kbq-popover-container-shadow: var(--kbq-shadow-popup);--kbq-popover-header-text-color: var(--kbq-foreground-contrast);--kbq-popover-header-scroll-shadow: var(--kbq-shadow-overflow-normal-bottom);--kbq-popover-content-text-color: var(--kbq-foreground-contrast);--kbq-popover-footer-scroll-shadow: var(--kbq-shadow-overflow-normal-top)}\n"] }]
513
907
  }] });
514
908
  class KbqPopoverConfirmTrigger extends KbqPopoverTrigger {
515
- // TODO: Skipped for migration because:
516
- // Accessor inputs cannot be migrated as they are too complex.
909
+ /**
910
+ * Input (`kbqPopoverConfirmText`) — question rendered in the panel. Falls back to
911
+ * {@link KBQ_POPOVER_CONFIRM_TEXT} and then to the `popoverConfirm` section of the active locale while
912
+ * unset or `undefined`.
913
+ */
517
914
  get confirmText() {
518
- return this._confirmText;
915
+ return this._confirmText() ?? this.externalConfirmText ?? this.localeConfiguration().confirmText;
519
916
  }
520
917
  set confirmText(value) {
521
- this._confirmText = value;
918
+ this._confirmText.set(value);
522
919
  this.updateData();
523
920
  }
524
- // TODO: Skipped for migration because:
525
- // Accessor inputs cannot be migrated as they are too complex.
921
+ /**
922
+ * Input (`kbqPopoverConfirmButtonText`) — caption of the confirm button. Falls back to
923
+ * {@link KBQ_POPOVER_CONFIRM_BUTTON_TEXT} and then to the `popoverConfirm` section of the active locale
924
+ * while unset or `undefined`.
925
+ */
526
926
  get confirmButtonText() {
527
- return this._confirmButtonText;
927
+ return (this._confirmButtonText() ?? this.externalConfirmButtonText ?? this.localeConfiguration().confirmButtonText);
528
928
  }
529
929
  set confirmButtonText(value) {
530
- this._confirmButtonText = value;
930
+ this._confirmButtonText.set(value);
531
931
  this.updateData();
532
932
  }
933
+ ngOnChanges(changes) {
934
+ super.ngOnChanges(changes);
935
+ // A bound input is handed to its member, a bound `undefined` restoring the
936
+ // fallback; unbound, it leaves what code wrote.
937
+ if (changes['confirmTextInput']) {
938
+ this.confirmText = this.confirmTextInput();
939
+ }
940
+ if (changes['confirmButtonTextInput']) {
941
+ this.confirmButtonText = this.confirmButtonTextInput();
942
+ }
943
+ }
533
944
  constructor() {
534
- const confirmText = inject(KBQ_POPOVER_CONFIRM_TEXT, { optional: true });
535
- const confirmButtonText = inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT, { optional: true });
536
945
  super();
946
+ /** Emits when the user confirms the action. */
537
947
  this.confirm = output();
538
- this._confirmButtonText = 'Да';
539
- this.confirmText = confirmText || 'Вы уверены, что хотите продолжить?';
540
- this.confirmButtonText = confirmButtonText || 'Да';
948
+ this.localeConfiguration = kbqInjectPopoverConfirmLocaleConfiguration();
949
+ this.externalConfirmText = inject(KBQ_POPOVER_CONFIRM_TEXT, { optional: true });
950
+ this.externalConfirmButtonText = inject(KBQ_POPOVER_CONFIRM_BUTTON_TEXT, { optional: true });
951
+ this._confirmText = signal(undefined, ...(ngDevMode ? [{ debugName: "_confirmText" }] : /* istanbul ignore next */ []));
952
+ this._confirmButtonText = signal(undefined, ...(ngDevMode ? [{ debugName: "_confirmButtonText" }] : /* istanbul ignore next */ []));
953
+ /** Panel the confirm handler is currently wired to, so it is wired once per attach. */
954
+ this.wiredInstance = null;
955
+ /** @docs-private */
956
+ this.confirmTextInput = input(undefined, { ...(ngDevMode ? { debugName: "confirmTextInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverConfirmText' });
957
+ /** @docs-private */
958
+ this.confirmButtonTextInput = input(undefined, { ...(ngDevMode ? { debugName: "confirmButtonTextInput" } : /* istanbul ignore next */ {}), alias: 'kbqPopoverConfirmButtonText' });
959
+ // The strings are resolved from signals (input, token, locale), so switching the locale while the
960
+ // popover is open has to reach the live panel — `updateData` alone only runs on input writes.
961
+ effect(() => {
962
+ const confirmText = this.confirmText;
963
+ const confirmButtonText = this.confirmButtonText;
964
+ if (!this.instance)
965
+ return;
966
+ this.instance.confirmText = confirmText;
967
+ this.instance.confirmButtonText = confirmButtonText;
968
+ });
541
969
  }
970
+ /** @docs-private */
542
971
  updateData() {
543
972
  if (!this.instance) {
544
973
  return;
545
974
  }
975
+ // Before `super.updateData()`, which renders the panel. Untracked as there: the texts follow the inputs and the
976
+ // locale.
977
+ untracked(() => {
978
+ this.instance.confirmButtonText = this.confirmButtonText;
979
+ this.instance.confirmText = this.confirmText;
980
+ });
546
981
  super.updateData();
547
- this.setupButtonEvents();
548
- this.instance.confirmButtonText = this.confirmButtonText;
549
- this.instance.confirmText = this.confirmText;
982
+ if (this.wiredInstance !== this.instance) {
983
+ this.wiredInstance = this.instance;
984
+ this.setupButtonEvents();
985
+ }
550
986
  }
987
+ /**
988
+ * Subscribes to the panel's confirm button. Called once per attach: the subscription is scoped to the
989
+ * panel, so it dies with it.
990
+ *
991
+ * @docs-private
992
+ */
551
993
  setupButtonEvents() {
552
- this.instance.onConfirm.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
553
- // TODO: The 'emit' function requires a mandatory void argument
994
+ this.instance.onConfirm.pipe(takeUntilDestroyed(this.instanceDestroyRef)).subscribe(() => {
554
995
  this.confirm.emit();
555
996
  this.hide();
556
997
  });
557
998
  }
999
+ /** @docs-private */
558
1000
  getOverlayHandleComponentType() {
559
1001
  return KbqPopoverConfirmComponent;
560
1002
  }
561
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverConfirmTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
562
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.30", type: KbqPopoverConfirmTrigger, isStandalone: true, selector: "[kbqPopoverConfirm]", inputs: { confirmText: ["kbqPopoverConfirmText", "confirmText"], confirmButtonText: ["kbqPopoverConfirmButtonText", "confirmButtonText"] }, outputs: { confirm: "confirm" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()" }, properties: { "class.kbq-popover_open": "isOpen" } }, providers: [kbqSiblingPopupProvider(KbqPopoverConfirmTrigger)], exportAs: ["kbqPopoverConfirm"], usesInheritance: true, ngImport: i0 }); }
1003
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverConfirmTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1004
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.25", type: KbqPopoverConfirmTrigger, isStandalone: true, selector: "[kbqPopoverConfirm]", inputs: { confirmTextInput: { classPropertyName: "confirmTextInput", publicName: "kbqPopoverConfirmText", isSignal: true, isRequired: false, transformFunction: null }, confirmButtonTextInput: { classPropertyName: "confirmButtonTextInput", publicName: "kbqPopoverConfirmButtonText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { confirm: "confirm" }, host: { listeners: { "keydown": "keydownHandler($event)", "touchend": "touchendHandler()" }, properties: { "class.kbq-popover_open": "isOpen", "attr.aria-expanded": "hasClickTrigger ? isOpen : null", "attr.aria-haspopup": "hasClickTrigger ? \"dialog\" : null", "attr.aria-controls": "hasClickTrigger && isOpen ? panelId : null" } }, providers: [kbqSiblingPopupProvider(KbqPopoverConfirmTrigger)], exportAs: ["kbqPopoverConfirm"], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
563
1005
  }
564
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverConfirmTrigger, decorators: [{
1006
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverConfirmTrigger, decorators: [{
565
1007
  type: Directive,
566
1008
  args: [{
567
1009
  selector: '[kbqPopoverConfirm]',
@@ -570,69 +1012,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
570
1012
  providers: [kbqSiblingPopupProvider(KbqPopoverConfirmTrigger)],
571
1013
  host: {
572
1014
  '[class.kbq-popover_open]': 'isOpen',
1015
+ '[attr.aria-expanded]': 'hasClickTrigger ? isOpen : null',
1016
+ '[attr.aria-haspopup]': 'hasClickTrigger ? "dialog" : null',
1017
+ '[attr.aria-controls]': 'hasClickTrigger && isOpen ? panelId : null',
573
1018
  '(keydown)': 'keydownHandler($event)',
574
1019
  '(touchend)': 'touchendHandler()'
575
1020
  },
576
1021
  exportAs: 'kbqPopoverConfirm'
577
1022
  }]
578
- }], ctorParameters: () => [], propDecorators: { confirm: [{ type: i0.Output, args: ["confirm"] }], confirmText: [{
579
- type: Input,
580
- args: ['kbqPopoverConfirmText']
581
- }], confirmButtonText: [{
582
- type: Input,
583
- args: ['kbqPopoverConfirmButtonText']
584
- }] } });
1023
+ }], ctorParameters: () => [], propDecorators: { confirm: [{ type: i0.Output, args: ["confirm"] }], confirmTextInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverConfirmText", required: false }] }], confirmButtonTextInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqPopoverConfirmButtonText", required: false }] }] } });
585
1024
 
586
1025
  class KbqPopoverModule {
587
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
588
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverModule, imports: [OverlayModule,
589
- KbqButtonModule,
590
- A11yModule,
591
- KbqIconModule,
592
- CdkObserveContent,
593
- NgTemplateOutlet,
594
- KbqPopoverComponent,
595
- KbqPopoverTrigger,
596
- KbqPopoverConfirmComponent,
597
- KbqPopoverConfirmTrigger], exports: [KbqPopoverComponent,
598
- KbqPopoverTrigger,
599
- KbqPopoverConfirmComponent,
600
- KbqPopoverConfirmTrigger] }); }
601
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverModule, providers: [
602
- { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },
603
- { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }
604
- ], imports: [OverlayModule,
605
- KbqButtonModule,
606
- A11yModule,
607
- KbqIconModule,
608
- KbqPopoverComponent,
609
- KbqPopoverConfirmComponent] }); }
1026
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1027
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverModule, imports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger], exports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger] }); }
1028
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverModule, imports: [KbqPopoverComponent, KbqPopoverConfirmComponent] }); }
610
1029
  }
611
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqPopoverModule, decorators: [{
1030
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: KbqPopoverModule, decorators: [{
612
1031
  type: NgModule,
613
1032
  args: [{
614
- imports: [
615
- OverlayModule,
616
- KbqButtonModule,
617
- A11yModule,
618
- KbqIconModule,
619
- CdkObserveContent,
620
- NgTemplateOutlet,
621
- KbqPopoverComponent,
622
- KbqPopoverTrigger,
623
- KbqPopoverConfirmComponent,
624
- KbqPopoverConfirmTrigger
625
- ],
626
- providers: [
627
- { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },
628
- { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy }
629
- ],
630
- exports: [
631
- KbqPopoverComponent,
632
- KbqPopoverTrigger,
633
- KbqPopoverConfirmComponent,
634
- KbqPopoverConfirmTrigger
635
- ]
1033
+ imports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger],
1034
+ exports: [KbqPopoverComponent, KbqPopoverTrigger, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger]
636
1035
  }]
637
1036
  }] });
638
1037
 
@@ -640,5 +1039,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.30", ngImpo
640
1039
  * Generated bundle index. Do not edit.
641
1040
  */
642
1041
 
643
- export { KBQ_POPOVER_CONFIRM_BUTTON_TEXT, KBQ_POPOVER_CONFIRM_TEXT, KBQ_POPOVER_SCROLL_STRATEGY, KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER, KbqPopoverComponent, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger, KbqPopoverModule, KbqPopoverTrigger, defaultOffsetYWithArrow, getKbqPopoverInvalidPositionError, kbqPopoverAnimations, kbqPopoverScrollStrategyFactory };
1042
+ export { KBQ_POPOVER_CONFIRM_BUTTON_TEXT, KBQ_POPOVER_CONFIRM_TEXT, KBQ_POPOVER_FOCUS_TRAP_PROVIDERS, KBQ_POPOVER_SCROLL_STRATEGY, KBQ_POPOVER_SCROLL_STRATEGY_FACTORY_PROVIDER, KbqPopoverComponent, KbqPopoverConfirmComponent, KbqPopoverConfirmTrigger, KbqPopoverModule, KbqPopoverTrigger, defaultHoverLeaveDelay, defaultOffsetYWithArrow, kbqPopoverScrollStrategyFactory };
644
1043
  //# sourceMappingURL=koobiq-components-popover.mjs.map