@koobiq/components 19.8.3 → 20.1.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 (732) hide show
  1. package/accordion/accordion-trigger.component.scss +0 -18
  2. package/accordion/accordion.component.scss +9 -2
  3. package/accordion/index.d.ts +238 -1
  4. package/actions-panel/index.d.ts +304 -5
  5. package/alert/_alert-theme.scss +0 -4
  6. package/alert/alert-tokens.scss +4 -4
  7. package/alert/index.d.ts +54 -1
  8. package/app-switcher/app-switcher-dropdown-app.scss +2 -0
  9. package/app-switcher/index.d.ts +239 -1
  10. package/autocomplete/index.d.ts +265 -1
  11. package/badge/index.d.ts +57 -1
  12. package/breadcrumbs/breadcrumbs.scss +4 -0
  13. package/breadcrumbs/index.d.ts +244 -1
  14. package/button/button-group.scss +42 -2
  15. package/button/index.d.ts +153 -1
  16. package/button-toggle/button-toggle.scss +23 -0
  17. package/button-toggle/index.d.ts +157 -1
  18. package/checkbox/checkbox.scss +5 -4
  19. package/checkbox/index.d.ts +159 -1
  20. package/clamped-text/index.d.ts +145 -4
  21. package/code-block/_code-block-theme.scss +0 -6
  22. package/code-block/code-block-tokens.scss +0 -2
  23. package/code-block/index.d.ts +383 -1
  24. package/content-panel/content-panel.scss +0 -8
  25. package/content-panel/index.d.ts +158 -2
  26. package/core/highlight/_highlight-theme.scss +9 -0
  27. package/core/index.d.ts +4794 -1
  28. package/core/styles/_koobiq-theme.scss +1 -0
  29. package/core/styles/common/_animation.scss +4 -0
  30. package/core/styles/common/_overlay.scss +3 -4
  31. package/core/styles/theming/_components-theming.scss +1 -63
  32. package/core/styles/theming/_scrollbar-theme.scss +4 -0
  33. package/datepicker/_datepicker-theme.scss +1 -1
  34. package/datepicker/datepicker-toggle.scss +3 -3
  35. package/datepicker/index.d.ts +699 -1
  36. package/divider/index.d.ts +20 -1
  37. package/dl/index.d.ts +38 -1
  38. package/dropdown/dropdown.scss +2 -2
  39. package/dropdown/index.d.ts +473 -1
  40. package/dynamic-translation/index.d.ts +81 -2
  41. package/ellipsis-center/index.d.ts +38 -1
  42. package/empty-state/index.d.ts +45 -1
  43. package/fesm2022/koobiq-components-accordion.mjs +104 -115
  44. package/fesm2022/koobiq-components-accordion.mjs.map +1 -1
  45. package/fesm2022/koobiq-components-actions-panel.mjs +16 -16
  46. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  47. package/fesm2022/koobiq-components-alert.mjs +35 -49
  48. package/fesm2022/koobiq-components-alert.mjs.map +1 -1
  49. package/fesm2022/koobiq-components-app-switcher.mjs +82 -87
  50. package/fesm2022/koobiq-components-app-switcher.mjs.map +1 -1
  51. package/fesm2022/koobiq-components-autocomplete.mjs +294 -304
  52. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  53. package/fesm2022/koobiq-components-badge.mjs +35 -42
  54. package/fesm2022/koobiq-components-badge.mjs.map +1 -1
  55. package/fesm2022/koobiq-components-breadcrumbs.mjs +79 -101
  56. package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
  57. package/fesm2022/koobiq-components-button-toggle.mjs +92 -88
  58. package/fesm2022/koobiq-components-button-toggle.mjs.map +1 -1
  59. package/fesm2022/koobiq-components-button.mjs +56 -51
  60. package/fesm2022/koobiq-components-button.mjs.map +1 -1
  61. package/fesm2022/koobiq-components-checkbox.mjs +50 -52
  62. package/fesm2022/koobiq-components-checkbox.mjs.map +1 -1
  63. package/fesm2022/koobiq-components-clamped-text.mjs +46 -49
  64. package/fesm2022/koobiq-components-clamped-text.mjs.map +1 -1
  65. package/fesm2022/koobiq-components-code-block.mjs +115 -136
  66. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  67. package/fesm2022/koobiq-components-content-panel.mjs +90 -107
  68. package/fesm2022/koobiq-components-content-panel.mjs.map +1 -1
  69. package/fesm2022/koobiq-components-core.mjs +2048 -703
  70. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  71. package/fesm2022/koobiq-components-datepicker.mjs +285 -349
  72. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-divider.mjs +14 -25
  74. package/fesm2022/koobiq-components-divider.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-dl.mjs +30 -31
  76. package/fesm2022/koobiq-components-dl.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-dropdown.mjs +159 -160
  78. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-dynamic-translation.mjs +23 -23
  80. package/fesm2022/koobiq-components-dynamic-translation.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-ellipsis-center.mjs +16 -21
  82. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  83. package/fesm2022/koobiq-components-empty-state.mjs +35 -39
  84. package/fesm2022/koobiq-components-empty-state.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-file-upload.mjs +160 -248
  86. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-filter-bar.mjs +1160 -1184
  88. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-flag.mjs +66 -0
  90. package/fesm2022/koobiq-components-flag.mjs.map +1 -0
  91. package/fesm2022/koobiq-components-form-field.mjs +211 -430
  92. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-icon.mjs +42 -43
  94. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  95. package/fesm2022/koobiq-components-inline-edit.mjs +85 -61
  96. package/fesm2022/koobiq-components-inline-edit.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-input.mjs +116 -155
  98. package/fesm2022/koobiq-components-input.mjs.map +1 -1
  99. package/fesm2022/koobiq-components-link.mjs +38 -53
  100. package/fesm2022/koobiq-components-link.mjs.map +1 -1
  101. package/fesm2022/koobiq-components-list.mjs +138 -128
  102. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  103. package/fesm2022/koobiq-components-loader-overlay.mjs +38 -45
  104. package/fesm2022/koobiq-components-loader-overlay.mjs.map +1 -1
  105. package/fesm2022/koobiq-components-markdown.mjs +31 -35
  106. package/fesm2022/koobiq-components-markdown.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-modal.mjs +174 -164
  108. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  109. package/fesm2022/koobiq-components-navbar.mjs +164 -169
  110. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  111. package/fesm2022/koobiq-components-notification-center.mjs +80 -59
  112. package/fesm2022/koobiq-components-notification-center.mjs.map +1 -1
  113. package/fesm2022/koobiq-components-overflow-items.mjs +40 -36
  114. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  115. package/fesm2022/koobiq-components-popover.mjs +94 -85
  116. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  117. package/fesm2022/koobiq-components-progress-bar.mjs +24 -30
  118. package/fesm2022/koobiq-components-progress-bar.mjs.map +1 -1
  119. package/fesm2022/koobiq-components-progress-spinner.mjs +25 -32
  120. package/fesm2022/koobiq-components-progress-spinner.mjs.map +1 -1
  121. package/fesm2022/koobiq-components-radio.mjs +95 -85
  122. package/fesm2022/koobiq-components-radio.mjs.map +1 -1
  123. package/fesm2022/koobiq-components-resizer.mjs +17 -17
  124. package/fesm2022/koobiq-components-resizer.mjs.map +1 -1
  125. package/fesm2022/koobiq-components-scrollbar.mjs +69 -60
  126. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -1
  127. package/fesm2022/koobiq-components-search-expandable.mjs +44 -35
  128. package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
  129. package/fesm2022/koobiq-components-select.mjs +279 -244
  130. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  131. package/fesm2022/koobiq-components-sidebar.mjs +63 -55
  132. package/fesm2022/koobiq-components-sidebar.mjs.map +1 -1
  133. package/fesm2022/koobiq-components-sidepanel.mjs +88 -128
  134. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  135. package/fesm2022/koobiq-components-skeleton.mjs +13 -13
  136. package/fesm2022/koobiq-components-skeleton.mjs.map +1 -1
  137. package/fesm2022/koobiq-components-split-button.mjs +29 -22
  138. package/fesm2022/koobiq-components-split-button.mjs.map +1 -1
  139. package/fesm2022/koobiq-components-splitter.mjs +114 -96
  140. package/fesm2022/koobiq-components-splitter.mjs.map +1 -1
  141. package/fesm2022/koobiq-components-table.mjs +23 -23
  142. package/fesm2022/koobiq-components-table.mjs.map +1 -1
  143. package/fesm2022/koobiq-components-tabs.mjs +260 -275
  144. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  145. package/fesm2022/koobiq-components-tags.mjs +179 -267
  146. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  147. package/fesm2022/koobiq-components-textarea.mjs +42 -68
  148. package/fesm2022/koobiq-components-textarea.mjs.map +1 -1
  149. package/fesm2022/koobiq-components-time-range.mjs +65 -66
  150. package/fesm2022/koobiq-components-time-range.mjs.map +1 -1
  151. package/fesm2022/koobiq-components-timepicker.mjs +46 -38
  152. package/fesm2022/koobiq-components-timepicker.mjs.map +1 -1
  153. package/fesm2022/koobiq-components-timezone.mjs +58 -58
  154. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  155. package/fesm2022/koobiq-components-title.mjs +150 -39
  156. package/fesm2022/koobiq-components-title.mjs.map +1 -1
  157. package/fesm2022/koobiq-components-toast.mjs +54 -69
  158. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  159. package/fesm2022/koobiq-components-toggle.mjs +51 -63
  160. package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
  161. package/fesm2022/koobiq-components-tooltip.mjs +141 -121
  162. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  163. package/fesm2022/koobiq-components-top-bar.mjs +22 -25
  164. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  165. package/fesm2022/koobiq-components-tree-select.mjs +264 -231
  166. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  167. package/fesm2022/koobiq-components-tree.mjs +273 -239
  168. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  169. package/fesm2022/koobiq-components-username.mjs +62 -49
  170. package/fesm2022/koobiq-components-username.mjs.map +1 -1
  171. package/file-upload/file-upload-tokens.scss +1 -0
  172. package/file-upload/index.d.ts +577 -1
  173. package/filter-bar/_filter-bar-theme.scss +86 -0
  174. package/filter-bar/filter-bar-tokens.scss +6 -0
  175. package/filter-bar/filter-bar.scss +10 -4
  176. package/filter-bar/filter-refresher.scss +1 -1
  177. package/filter-bar/filters.scss +23 -19
  178. package/filter-bar/index.d.ts +1165 -1
  179. package/filter-bar/pipes/base-pipe.scss +14 -35
  180. package/filter-bar/pipes/pipe-date.scss +20 -14
  181. package/filter-bar/pipes/pipe-multi-tree-select.scss +5 -3
  182. package/filter-bar/pipes/pipe-multiselect.scss +5 -3
  183. package/filter-bar/pipes/pipe-readonly.scss +4 -13
  184. package/filter-bar/pipes/pipe-select.scss +3 -1
  185. package/filter-bar/pipes/pipe-tree-select.scss +3 -1
  186. package/flag/flag.scss +53 -0
  187. package/flag/index.d.ts +44 -0
  188. package/form-field/index.d.ts +569 -1
  189. package/icon/index.d.ts +162 -1
  190. package/index.d.ts +2 -1
  191. package/inline-edit/index.d.ts +176 -2
  192. package/inline-edit/inline-edit.scss +7 -7
  193. package/input/index.d.ts +339 -1
  194. package/link/index.d.ts +56 -1
  195. package/link/link-tokens.scss +2 -2
  196. package/list/index.d.ts +229 -1
  197. package/loader-overlay/index.d.ts +57 -1
  198. package/loader-overlay/loader-overlay-tokens.scss +1 -1
  199. package/markdown/index.d.ts +68 -1
  200. package/modal/_modal-animation.scss +6 -6
  201. package/modal/_modal-theme.scss +3 -6
  202. package/modal/index.d.ts +313 -1
  203. package/modal/modal.scss +15 -0
  204. package/navbar/index.d.ts +305 -1
  205. package/navbar/navbar.scss +1 -2
  206. package/notification-center/index.d.ts +322 -1
  207. package/notification-center/notification-center.scss +14 -9
  208. package/notification-center/notification-item.scss +2 -1
  209. package/overflow-items/index.d.ts +162 -2
  210. package/package.json +13 -17
  211. package/popover/index.d.ts +182 -1
  212. package/popover/popover.scss +8 -12
  213. package/prebuilt-themes/dark-theme.css +1 -1
  214. package/prebuilt-themes/light-theme.css +1 -1
  215. package/prebuilt-themes/theme.css +1 -1
  216. package/progress-bar/index.d.ts +31 -1
  217. package/progress-bar/progress-bar.scss +4 -0
  218. package/progress-spinner/index.d.ts +37 -1
  219. package/progress-spinner/progress-spinner.scss +5 -1
  220. package/radio/index.d.ts +203 -1
  221. package/radio/radio.scss +18 -4
  222. package/resizer/index.d.ts +85 -2
  223. package/schematics/collection.json +10 -0
  224. package/schematics/migrations/css-selectors/index.js +1 -1
  225. package/schematics/migrations/deprecated-icons/index.js +1 -1
  226. package/schematics/migrations/filter-bar-signals/README.md +66 -0
  227. package/schematics/migrations/filter-bar-signals/data.js +72 -0
  228. package/schematics/migrations/filter-bar-signals/index.js +316 -0
  229. package/schematics/migrations/filter-bar-signals/schema.json +20 -0
  230. package/schematics/migrations/new-icons-pack/index.js +1 -1
  231. package/schematics/migrations/v20-upgrade/README.md +72 -0
  232. package/schematics/migrations/v20-upgrade/data.js +274 -0
  233. package/schematics/migrations/v20-upgrade/index.js +222 -0
  234. package/schematics/migrations/v20-upgrade/schema.json +20 -0
  235. package/schematics/migrations.json +15 -0
  236. package/schematics/ng-add/index.js +3 -4
  237. package/scrollbar/index.d.ts +136 -1
  238. package/search-expandable/index.d.ts +98 -1
  239. package/select/index.d.ts +701 -1
  240. package/sidebar/index.d.ts +93 -1
  241. package/sidepanel/index.d.ts +263 -1
  242. package/sidepanel/sidepanel.scss +0 -8
  243. package/skeleton/index.d.ts +26 -2
  244. package/skeleton/skeleton.scss +4 -0
  245. package/split-button/_split-button-theme.scss +2 -2
  246. package/split-button/index.d.ts +46 -1
  247. package/splitter/_splitter-theme.scss +2 -2
  248. package/splitter/index.d.ts +142 -1
  249. package/table/_table-theme.scss +4 -0
  250. package/table/index.d.ts +24 -1
  251. package/tabs/index.d.ts +647 -1
  252. package/tabs/tab-header.scss +1 -0
  253. package/tabs/tabs-tokens.scss +1 -1
  254. package/tags/index.d.ts +706 -1
  255. package/textarea/index.d.ts +133 -1
  256. package/time-range/index.d.ts +310 -7
  257. package/time-range/time-range.scss +0 -8
  258. package/timepicker/index.d.ts +193 -1
  259. package/timepicker/timepicker.scss +2 -2
  260. package/timezone/index.d.ts +123 -1
  261. package/title/index.d.ts +131 -1
  262. package/toast/index.d.ts +164 -1
  263. package/toggle/index.d.ts +84 -1
  264. package/tooltip/index.d.ts +211 -1
  265. package/top-bar/index.d.ts +33 -1
  266. package/top-bar/top-bar.scss +1 -2
  267. package/tree/_tree-theme.scss +2 -7
  268. package/tree/index.d.ts +733 -1
  269. package/tree/toggle.scss +5 -0
  270. package/tree/tree-option.scss +20 -11
  271. package/tree-select/_tree-select-theme.scss +1 -1
  272. package/tree-select/index.d.ts +384 -1
  273. package/username/index.d.ts +194 -5
  274. package/accordion/accordion-content.d.ts +0 -6
  275. package/accordion/accordion-content.directive.d.ts +0 -27
  276. package/accordion/accordion-header.d.ts +0 -6
  277. package/accordion/accordion-header.directive.d.ts +0 -7
  278. package/accordion/accordion-item.d.ts +0 -77
  279. package/accordion/accordion-trigger.component.d.ts +0 -24
  280. package/accordion/accordion-trigger.directive.d.ts +0 -21
  281. package/accordion/accordion.component.d.ts +0 -79
  282. package/accordion/accordion.module.d.ts +0 -12
  283. package/accordion/public-api.d.ts +0 -9
  284. package/actions-panel/actions-panel-config.d.ts +0 -82
  285. package/actions-panel/actions-panel-container.d.ts +0 -90
  286. package/actions-panel/actions-panel-ref.d.ts +0 -44
  287. package/actions-panel/actions-panel.d.ts +0 -85
  288. package/actions-panel/module.d.ts +0 -7
  289. package/alert/alert.component.d.ts +0 -43
  290. package/alert/alert.module.d.ts +0 -9
  291. package/alert/public-api.d.ts +0 -2
  292. package/app-switcher/app-switcher-animations.d.ts +0 -5
  293. package/app-switcher/app-switcher-dropdown-app.d.ts +0 -11
  294. package/app-switcher/app-switcher-dropdown-site.d.ts +0 -9
  295. package/app-switcher/app-switcher.d.ts +0 -198
  296. package/app-switcher/app-switcher.module.d.ts +0 -10
  297. package/app-switcher/kbq-app-switcher-list-item.d.ts +0 -16
  298. package/app-switcher/public-api.d.ts +0 -6
  299. package/autocomplete/autocomplete-origin.directive.d.ts +0 -12
  300. package/autocomplete/autocomplete-trigger.directive.d.ts +0 -169
  301. package/autocomplete/autocomplete.component.d.ts +0 -88
  302. package/autocomplete/autocomplete.module.d.ts +0 -12
  303. package/autocomplete/public-api.d.ts +0 -4
  304. package/badge/badge.component.d.ts +0 -46
  305. package/badge/badge.module.d.ts +0 -9
  306. package/badge/public-api.d.ts +0 -2
  307. package/breadcrumbs/breadcrumbs.d.ts +0 -121
  308. package/breadcrumbs/breadcrumbs.module.d.ts +0 -7
  309. package/breadcrumbs/breadcrumbs.types.d.ts +0 -22
  310. package/breadcrumbs/public-api.d.ts +0 -5
  311. package/breadcrumbs/roving-focus-group.directive.d.ts +0 -50
  312. package/breadcrumbs/roving-focus-item.directive.d.ts +0 -50
  313. package/breadcrumbs/utils.d.ts +0 -19
  314. package/button/button-group.d.ts +0 -45
  315. package/button/button-slots.d.ts +0 -11
  316. package/button/button.component.d.ts +0 -74
  317. package/button/button.dropdown-trigger.directive.d.ts +0 -14
  318. package/button/button.module.d.ts +0 -13
  319. package/button/public-api.d.ts +0 -5
  320. package/button-toggle/button-toggle.component.d.ts +0 -146
  321. package/button-toggle/button-toggle.module.d.ts +0 -9
  322. package/button-toggle/public-api.d.ts +0 -2
  323. package/checkbox/checkbox-config.d.ts +0 -13
  324. package/checkbox/checkbox-module.d.ts +0 -9
  325. package/checkbox/checkbox-required-validator.d.ts +0 -13
  326. package/checkbox/checkbox.d.ts +0 -128
  327. package/checkbox/public-api.d.ts +0 -4
  328. package/clamped-text/clamped-list.d.ts +0 -41
  329. package/clamped-text/clamped-text.d.ts +0 -65
  330. package/clamped-text/constants.d.ts +0 -34
  331. package/clamped-text/module.d.ts +0 -8
  332. package/code-block/code-block-highlight.d.ts +0 -98
  333. package/code-block/code-block.d.ts +0 -259
  334. package/code-block/code-block.module.d.ts +0 -7
  335. package/code-block/public-api.d.ts +0 -4
  336. package/code-block/types.d.ts +0 -36
  337. package/content-panel/content-panel.d.ts +0 -149
  338. package/content-panel/module.d.ts +0 -7
  339. package/core/animation/animation.d.ts +0 -37
  340. package/core/animation/fade-animations.d.ts +0 -2
  341. package/core/animation/index.d.ts +0 -3
  342. package/core/animation/select-animations.d.ts +0 -12
  343. package/core/common-behaviors/checkbox.d.ts +0 -5
  344. package/core/common-behaviors/clipboard.d.ts +0 -12
  345. package/core/common-behaviors/color.d.ts +0 -50
  346. package/core/common-behaviors/common-module.d.ts +0 -38
  347. package/core/common-behaviors/constructor.d.ts +0 -9
  348. package/core/common-behaviors/disabled.d.ts +0 -8
  349. package/core/common-behaviors/error-state.d.ts +0 -46
  350. package/core/common-behaviors/flex.d.ts +0 -4
  351. package/core/common-behaviors/hover.d.ts +0 -15
  352. package/core/common-behaviors/index.d.ts +0 -14
  353. package/core/common-behaviors/orientation.d.ts +0 -4
  354. package/core/common-behaviors/read-state.d.ts +0 -12
  355. package/core/common-behaviors/size.d.ts +0 -4
  356. package/core/common-behaviors/tabindex.d.ts +0 -8
  357. package/core/datetime/date-adapter.d.ts +0 -12
  358. package/core/datetime/date-formats.d.ts +0 -4
  359. package/core/datetime/index.d.ts +0 -2
  360. package/core/error/error-state-matcher.d.ts +0 -39
  361. package/core/form-field/field-sizing-content.d.ts +0 -21
  362. package/core/form-field/form-field-ref.d.ts +0 -28
  363. package/core/form-field/index.d.ts +0 -2
  364. package/core/formatters/date/formatter.d.ts +0 -11
  365. package/core/formatters/date/formatter.pipe.d.ts +0 -139
  366. package/core/formatters/filesize/config.d.ts +0 -66
  367. package/core/formatters/filesize/formatter.d.ts +0 -17
  368. package/core/formatters/filesize/index.d.ts +0 -3
  369. package/core/formatters/filesize/size.d.ts +0 -52
  370. package/core/formatters/index.d.ts +0 -13
  371. package/core/formatters/number/formatter.d.ts +0 -101
  372. package/core/forms/forms-module.d.ts +0 -7
  373. package/core/forms/forms.directive.d.ts +0 -22
  374. package/core/forms/index.d.ts +0 -3
  375. package/core/forms/validators.d.ts +0 -120
  376. package/core/highlight/highlight.pipe.d.ts +0 -10
  377. package/core/highlight/index.d.ts +0 -9
  378. package/core/line/line.d.ts +0 -23
  379. package/core/locales/en-US.d.ts +0 -176
  380. package/core/locales/es-LA.d.ts +0 -175
  381. package/core/locales/formatters.d.ts +0 -190
  382. package/core/locales/index.d.ts +0 -9
  383. package/core/locales/locale-service.d.ts +0 -1117
  384. package/core/locales/locale-service.module.d.ts +0 -6
  385. package/core/locales/pt-BR.d.ts +0 -175
  386. package/core/locales/ru-RU.d.ts +0 -176
  387. package/core/locales/tk-TM.d.ts +0 -176
  388. package/core/locales/types.d.ts +0 -77
  389. package/core/navbar/index.d.ts +0 -1
  390. package/core/navbar/rectangle-item.d.ts +0 -14
  391. package/core/option/action-container.d.ts +0 -5
  392. package/core/option/action.d.ts +0 -38
  393. package/core/option/index.d.ts +0 -5
  394. package/core/option/optgroup.d.ts +0 -16
  395. package/core/option/option-module.d.ts +0 -10
  396. package/core/option/option.d.ts +0 -170
  397. package/core/overlay/overlay-position-map.d.ts +0 -40
  398. package/core/pop-up/constants.d.ts +0 -56
  399. package/core/pop-up/focus-trap-strategy.d.ts +0 -5
  400. package/core/pop-up/index.d.ts +0 -5
  401. package/core/pop-up/pop-up-styles.d.ts +0 -2
  402. package/core/pop-up/pop-up-trigger.d.ts +0 -104
  403. package/core/pop-up/pop-up.d.ts +0 -57
  404. package/core/public-api.d.ts +0 -23
  405. package/core/select/common.d.ts +0 -59
  406. package/core/select/constants.d.ts +0 -22
  407. package/core/select/errors.d.ts +0 -19
  408. package/core/select/events.d.ts +0 -1
  409. package/core/select/index.d.ts +0 -4
  410. package/core/selection/constants.d.ts +0 -4
  411. package/core/selection/index.d.ts +0 -3
  412. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +0 -23
  413. package/core/selection/pseudo-checkbox/pseudo-checkbox.module.d.ts +0 -8
  414. package/core/services/measure-scrollbar.service.d.ts +0 -11
  415. package/core/services/theme.service.d.ts +0 -41
  416. package/core/title/index.d.ts +0 -1
  417. package/core/title/title-text-ref.d.ts +0 -6
  418. package/core/tokens/index.d.ts +0 -1
  419. package/core/tokens/window.d.ts +0 -5
  420. package/core/utils/dom.d.ts +0 -4
  421. package/core/utils/index.d.ts +0 -2
  422. package/core/utils/public-api.d.ts +0 -1
  423. package/core/utils/utils.d.ts +0 -25
  424. package/core/validation/index.d.ts +0 -1
  425. package/core/validation/validation.d.ts +0 -29
  426. package/core/version.d.ts +0 -2
  427. package/datepicker/calendar-body.component.d.ts +0 -55
  428. package/datepicker/calendar-header.component.d.ts +0 -51
  429. package/datepicker/calendar.component.d.ts +0 -89
  430. package/datepicker/datepicker-animations.d.ts +0 -9
  431. package/datepicker/datepicker-errors.d.ts +0 -2
  432. package/datepicker/datepicker-input.directive.d.ts +0 -221
  433. package/datepicker/datepicker-intl.d.ts +0 -32
  434. package/datepicker/datepicker-module.d.ts +0 -21
  435. package/datepicker/datepicker-toggle.component.d.ts +0 -57
  436. package/datepicker/datepicker.component.d.ts +0 -148
  437. package/datepicker/month-view.component.d.ts +0 -73
  438. package/datepicker/public-api.d.ts +0 -10
  439. package/divider/divider.component.d.ts +0 -18
  440. package/divider/divider.module.d.ts +0 -8
  441. package/divider/public-api.d.ts +0 -2
  442. package/dl/dl.component.d.ts +0 -26
  443. package/dl/dl.module.d.ts +0 -9
  444. package/dl/public-api.d.ts +0 -2
  445. package/dropdown/dropdown-animations.d.ts +0 -11
  446. package/dropdown/dropdown-content.directive.d.ts +0 -32
  447. package/dropdown/dropdown-errors.d.ts +0 -17
  448. package/dropdown/dropdown-item.component.d.ts +0 -52
  449. package/dropdown/dropdown-trigger.directive.d.ts +0 -167
  450. package/dropdown/dropdown.component.d.ts +0 -134
  451. package/dropdown/dropdown.module.d.ts +0 -13
  452. package/dropdown/dropdown.types.d.ts +0 -67
  453. package/dropdown/public-api.d.ts +0 -8
  454. package/dynamic-translation/dynamic-translation.d.ts +0 -72
  455. package/dynamic-translation/module.d.ts +0 -7
  456. package/ellipsis-center/ellipsis-center.directive.d.ts +0 -36
  457. package/ellipsis-center/public-api.d.ts +0 -1
  458. package/empty-state/empty-state.component.d.ts +0 -36
  459. package/empty-state/empty-state.module.d.ts +0 -9
  460. package/empty-state/public-api.d.ts +0 -2
  461. package/fesm2022/koobiq-components-navbar-ic.mjs +0 -863
  462. package/fesm2022/koobiq-components-navbar-ic.mjs.map +0 -1
  463. package/fesm2022/koobiq-components-risk-level.mjs +0 -75
  464. package/fesm2022/koobiq-components-risk-level.mjs.map +0 -1
  465. package/file-upload/dropzone.d.ts +0 -147
  466. package/file-upload/file-upload.d.ts +0 -102
  467. package/file-upload/file-upload.module.d.ts +0 -20
  468. package/file-upload/multiple-file-upload.component.d.ts +0 -138
  469. package/file-upload/primitives/file-drop.d.ts +0 -35
  470. package/file-upload/primitives/file-picker.d.ts +0 -82
  471. package/file-upload/primitives/index.d.ts +0 -2
  472. package/file-upload/public-api.d.ts +0 -7
  473. package/file-upload/single-file-upload.component.d.ts +0 -118
  474. package/filter-bar/filter-bar-button.d.ts +0 -14
  475. package/filter-bar/filter-bar.d.ts +0 -81
  476. package/filter-bar/filter-bar.module.d.ts +0 -17
  477. package/filter-bar/filter-bar.types.d.ts +0 -143
  478. package/filter-bar/filter-refresher.d.ts +0 -5
  479. package/filter-bar/filter-reset.d.ts +0 -15
  480. package/filter-bar/filter-search.d.ts +0 -54
  481. package/filter-bar/filter-search.scss +0 -12
  482. package/filter-bar/filters.d.ts +0 -122
  483. package/filter-bar/pipe-add.d.ts +0 -28
  484. package/filter-bar/pipe.directive.d.ts +0 -13
  485. package/filter-bar/pipes/base-pipe.d.ts +0 -74
  486. package/filter-bar/pipes/pipe-button.d.ts +0 -21
  487. package/filter-bar/pipes/pipe-date.d.ts +0 -65
  488. package/filter-bar/pipes/pipe-datetime.d.ts +0 -66
  489. package/filter-bar/pipes/pipe-multi-select.d.ts +0 -56
  490. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +0 -67
  491. package/filter-bar/pipes/pipe-readonly.d.ts +0 -7
  492. package/filter-bar/pipes/pipe-select.d.ts +0 -30
  493. package/filter-bar/pipes/pipe-state.d.ts +0 -21
  494. package/filter-bar/pipes/pipe-text.d.ts +0 -26
  495. package/filter-bar/pipes/pipe-title.d.ts +0 -27
  496. package/filter-bar/pipes/pipe-tree-select.d.ts +0 -42
  497. package/filter-bar/public-api.d.ts +0 -21
  498. package/form-field/cleaner.d.ts +0 -11
  499. package/form-field/error.d.ts +0 -8
  500. package/form-field/fieldset.d.ts +0 -27
  501. package/form-field/form-field-control.d.ts +0 -40
  502. package/form-field/form-field.d.ts +0 -298
  503. package/form-field/form-field.module.d.ts +0 -19
  504. package/form-field/hint.d.ts +0 -15
  505. package/form-field/label.d.ts +0 -6
  506. package/form-field/password-hint.d.ts +0 -53
  507. package/form-field/password-toggle.d.ts +0 -56
  508. package/form-field/prefix.d.ts +0 -6
  509. package/form-field/public-api.d.ts +0 -15
  510. package/form-field/reactive-password-hint.d.ts +0 -20
  511. package/form-field/stepper.d.ts +0 -59
  512. package/form-field/suffix.d.ts +0 -6
  513. package/form-field/validate.directive.d.ts +0 -53
  514. package/icon/icon-button.component.d.ts +0 -28
  515. package/icon/icon-item.component.d.ts +0 -11
  516. package/icon/icon-registry-providers.d.ts +0 -34
  517. package/icon/icon-registry.d.ts +0 -50
  518. package/icon/icon.component.d.ts +0 -33
  519. package/icon/icon.module.d.ts +0 -9
  520. package/icon/public-api.d.ts +0 -6
  521. package/inline-edit/inline-edit.d.ts +0 -161
  522. package/inline-edit/module.d.ts +0 -7
  523. package/input/input-errors.d.ts +0 -1
  524. package/input/input-number-validators.d.ts +0 -35
  525. package/input/input-number.d.ts +0 -96
  526. package/input/input-password.d.ts +0 -99
  527. package/input/input-value-accessor.d.ts +0 -4
  528. package/input/input.d.ts +0 -109
  529. package/input/input.module.d.ts +0 -14
  530. package/input/public-api.d.ts +0 -6
  531. package/link/link.component.d.ts +0 -53
  532. package/link/link.module.d.ts +0 -8
  533. package/link/public-api.d.ts +0 -2
  534. package/list/list-selection.component.d.ts +0 -196
  535. package/list/list.component.d.ts +0 -18
  536. package/list/list.module.d.ts +0 -11
  537. package/list/public-api.d.ts +0 -3
  538. package/loader-overlay/loader-overlay.component.d.ts +0 -47
  539. package/loader-overlay/loader-overlay.module.d.ts +0 -10
  540. package/loader-overlay/public-api.d.ts +0 -2
  541. package/markdown/markdown.component.d.ts +0 -31
  542. package/markdown/markdown.module.d.ts +0 -7
  543. package/markdown/markdown.service.d.ts +0 -19
  544. package/markdown/markdown.values.d.ts +0 -10
  545. package/markdown/public-api.d.ts +0 -4
  546. package/modal/css-unit.pipe.d.ts +0 -7
  547. package/modal/modal-control.service.d.ts +0 -20
  548. package/modal/modal-ref.class.d.ts +0 -37
  549. package/modal/modal-util.d.ts +0 -15
  550. package/modal/modal.component.d.ts +0 -141
  551. package/modal/modal.directive.d.ts +0 -20
  552. package/modal/modal.module.d.ts +0 -15
  553. package/modal/modal.service.d.ts +0 -42
  554. package/modal/modal.type.d.ts +0 -72
  555. package/modal/public-api.d.ts +0 -6
  556. package/navbar/navbar-brand.component.d.ts +0 -41
  557. package/navbar/navbar-item.component.d.ts +0 -131
  558. package/navbar/navbar-toggle.component.d.ts +0 -23
  559. package/navbar/navbar.component.d.ts +0 -68
  560. package/navbar/navbar.module.d.ts +0 -15
  561. package/navbar/public-api.d.ts +0 -6
  562. package/navbar/vertical-navbar.component.d.ts +0 -47
  563. package/navbar-ic/_navbar-ic-theme.scss +0 -81
  564. package/navbar-ic/index.d.ts +0 -1
  565. package/navbar-ic/navbar-ic-divider.scss +0 -7
  566. package/navbar-ic/navbar-ic-header.d.ts +0 -22
  567. package/navbar-ic/navbar-ic-header.scss +0 -49
  568. package/navbar-ic/navbar-ic-item.d.ts +0 -144
  569. package/navbar-ic/navbar-ic-item.scss +0 -92
  570. package/navbar-ic/navbar-ic-tokens.scss +0 -22
  571. package/navbar-ic/navbar-ic.animation.d.ts +0 -3
  572. package/navbar-ic/navbar-ic.d.ts +0 -118
  573. package/navbar-ic/navbar-ic.module.d.ts +0 -14
  574. package/navbar-ic/navbar-ic.scss +0 -32
  575. package/navbar-ic/public-api.d.ts +0 -4
  576. package/notification-center/notification-center-animations.d.ts +0 -5
  577. package/notification-center/notification-center.d.ts +0 -184
  578. package/notification-center/notification-center.module.d.ts +0 -7
  579. package/notification-center/notification-center.service.d.ts +0 -115
  580. package/notification-center/notification-item.d.ts +0 -27
  581. package/notification-center/public-api.d.ts +0 -4
  582. package/overflow-items/module.d.ts +0 -7
  583. package/overflow-items/overflow-items.d.ts +0 -152
  584. package/popover/popover-animations.d.ts +0 -4
  585. package/popover/popover-confirm.component.d.ts +0 -28
  586. package/popover/popover.component.d.ts +0 -139
  587. package/popover/popover.module.d.ts +0 -14
  588. package/popover/public-api.d.ts +0 -4
  589. package/progress-bar/progress-bar.component.d.ts +0 -20
  590. package/progress-bar/progress-bar.module.d.ts +0 -8
  591. package/progress-bar/public-api.d.ts +0 -2
  592. package/progress-spinner/progress-spinner.component.d.ts +0 -26
  593. package/progress-spinner/progress-spinner.module.d.ts +0 -9
  594. package/progress-spinner/public-api.d.ts +0 -2
  595. package/public-api.d.ts +0 -1
  596. package/radio/public-api.d.ts +0 -2
  597. package/radio/radio.component.d.ts +0 -200
  598. package/radio/radio.module.d.ts +0 -8
  599. package/resizer/module.d.ts +0 -7
  600. package/resizer/resizer.d.ts +0 -75
  601. package/risk-level/_risk-level-theme.scss +0 -74
  602. package/risk-level/index.d.ts +0 -1
  603. package/risk-level/public-api.d.ts +0 -2
  604. package/risk-level/risk-level-tokens.scss +0 -33
  605. package/risk-level/risk-level.component.d.ts +0 -21
  606. package/risk-level/risk-level.component.scss +0 -22
  607. package/risk-level/risk-level.module.d.ts +0 -12
  608. package/scrollbar/public-api.d.ts +0 -4
  609. package/scrollbar/scrollbar.component.d.ts +0 -37
  610. package/scrollbar/scrollbar.directive.d.ts +0 -29
  611. package/scrollbar/scrollbar.module.d.ts +0 -8
  612. package/scrollbar/scrollbar.types.d.ts +0 -33
  613. package/search-expandable/public-api.d.ts +0 -2
  614. package/search-expandable/search-expandable.d.ts +0 -89
  615. package/search-expandable/search-expandable.module.d.ts +0 -7
  616. package/select/public-api.d.ts +0 -4
  617. package/select/select-common.d.ts +0 -30
  618. package/select/select-option.directive.d.ts +0 -21
  619. package/select/select.component.d.ts +0 -627
  620. package/select/select.module.d.ts +0 -17
  621. package/sidebar/public-api.d.ts +0 -2
  622. package/sidebar/sidebar-animations.d.ts +0 -8
  623. package/sidebar/sidebar.component.d.ts +0 -80
  624. package/sidebar/sidebar.module.d.ts +0 -8
  625. package/sidepanel/public-api.d.ts +0 -6
  626. package/sidepanel/sidepanel-animations.d.ts +0 -20
  627. package/sidepanel/sidepanel-config.d.ts +0 -43
  628. package/sidepanel/sidepanel-container.component.d.ts +0 -67
  629. package/sidepanel/sidepanel-directives.d.ts +0 -61
  630. package/sidepanel/sidepanel-ref.d.ts +0 -36
  631. package/sidepanel/sidepanel.module.d.ts +0 -14
  632. package/sidepanel/sidepanel.service.d.ts +0 -58
  633. package/skeleton/module.d.ts +0 -7
  634. package/skeleton/skeleton.d.ts +0 -17
  635. package/split-button/public-api.d.ts +0 -2
  636. package/split-button/split-button.d.ts +0 -37
  637. package/split-button/split-button.module.d.ts +0 -7
  638. package/splitter/public-api.d.ts +0 -2
  639. package/splitter/splitter.component.d.ts +0 -136
  640. package/splitter/splitter.module.d.ts +0 -8
  641. package/table/public-api.d.ts +0 -2
  642. package/table/table.component.d.ts +0 -12
  643. package/table/table.module.d.ts +0 -9
  644. package/tabs/paginated-tab-header.d.ts +0 -182
  645. package/tabs/public-api.d.ts +0 -10
  646. package/tabs/tab-body.component.d.ts +0 -95
  647. package/tabs/tab-content.directive.d.ts +0 -9
  648. package/tabs/tab-group.component.d.ts +0 -137
  649. package/tabs/tab-header.component.d.ts +0 -34
  650. package/tabs/tab-label-wrapper.directive.d.ts +0 -29
  651. package/tabs/tab-label.directive.d.ts +0 -11
  652. package/tabs/tab-nav-bar.d.ts +0 -91
  653. package/tabs/tab.component.d.ts +0 -70
  654. package/tabs/tabs-animations.d.ts +0 -4
  655. package/tabs/tabs.module.d.ts +0 -20
  656. package/tags/public-api.d.ts +0 -5
  657. package/tags/tag-default-options.d.ts +0 -13
  658. package/tags/tag-input.d.ts +0 -110
  659. package/tags/tag-list.component.d.ts +0 -373
  660. package/tags/tag-text-control.d.ts +0 -10
  661. package/tags/tag.component.d.ts +0 -272
  662. package/tags/tag.module.d.ts +0 -10
  663. package/textarea/public-api.d.ts +0 -2
  664. package/textarea/textarea.component.d.ts +0 -123
  665. package/textarea/textarea.module.d.ts +0 -10
  666. package/time-range/constants.d.ts +0 -19
  667. package/time-range/module.d.ts +0 -10
  668. package/time-range/time-range-editor.d.ts +0 -65
  669. package/time-range/time-range-title-as-form-field.d.ts +0 -41
  670. package/time-range/time-range-title.d.ts +0 -18
  671. package/time-range/time-range.d.ts +0 -78
  672. package/time-range/time-range.service.d.ts +0 -25
  673. package/time-range/types.d.ts +0 -69
  674. package/timepicker/public-api.d.ts +0 -3
  675. package/timepicker/timepicker.constants.d.ts +0 -22
  676. package/timepicker/timepicker.directive.d.ts +0 -159
  677. package/timepicker/timepicker.module.d.ts +0 -11
  678. package/timezone/cities-by-filter.pipe.d.ts +0 -7
  679. package/timezone/public-api.d.ts +0 -6
  680. package/timezone/timezone-option.component.d.ts +0 -15
  681. package/timezone/timezone-option.directive.d.ts +0 -22
  682. package/timezone/timezone-select.component.d.ts +0 -16
  683. package/timezone/timezone.models.d.ts +0 -16
  684. package/timezone/timezone.module.d.ts +0 -20
  685. package/timezone/timezone.utils.d.ts +0 -22
  686. package/timezone/utc-offset.pipe.d.ts +0 -9
  687. package/title/public-api.d.ts +0 -2
  688. package/title/title.directive.d.ts +0 -33
  689. package/title/title.module.d.ts +0 -8
  690. package/toast/public-api.d.ts +0 -5
  691. package/toast/toast-animations.d.ts +0 -5
  692. package/toast/toast-container.component.d.ts +0 -19
  693. package/toast/toast.component.d.ts +0 -41
  694. package/toast/toast.module.d.ts +0 -8
  695. package/toast/toast.service.d.ts +0 -61
  696. package/toast/toast.type.d.ts +0 -44
  697. package/toggle/public-api.d.ts +0 -2
  698. package/toggle/toggle.component.d.ts +0 -77
  699. package/toggle/toggle.module.d.ts +0 -8
  700. package/tooltip/public-api.d.ts +0 -2
  701. package/tooltip/tooltip.animations.d.ts +0 -8
  702. package/tooltip/tooltip.component.d.ts +0 -156
  703. package/tooltip/tooltip.module.d.ts +0 -7
  704. package/top-bar/module.d.ts +0 -7
  705. package/top-bar/public-api.d.ts +0 -2
  706. package/top-bar/top-bar.d.ts +0 -25
  707. package/tree/control/base-tree-control.d.ts +0 -40
  708. package/tree/control/flat-tree-control.d.ts +0 -55
  709. package/tree/control/flat-tree-control.filters.d.ts +0 -27
  710. package/tree/control/nested-tree-control.d.ts +0 -19
  711. package/tree/control/tree-control.d.ts +0 -44
  712. package/tree/data-source/flat-data-source.d.ts +0 -80
  713. package/tree/data-source/nested-data-source.d.ts +0 -15
  714. package/tree/node.d.ts +0 -34
  715. package/tree/outlet.d.ts +0 -9
  716. package/tree/padding.directive.d.ts +0 -45
  717. package/tree/public-api.d.ts +0 -16
  718. package/tree/toggle.d.ts +0 -28
  719. package/tree/tree-base.d.ts +0 -96
  720. package/tree/tree-errors.d.ts +0 -25
  721. package/tree/tree-option.component.d.ts +0 -89
  722. package/tree/tree-selection.component.d.ts +0 -156
  723. package/tree/tree.d.ts +0 -6
  724. package/tree/tree.module.d.ts +0 -16
  725. package/tree-select/public-api.d.ts +0 -2
  726. package/tree-select/tree-select.component.d.ts +0 -360
  727. package/tree-select/tree-select.module.d.ts +0 -15
  728. package/username/constants.d.ts +0 -15
  729. package/username/module.d.ts +0 -8
  730. package/username/types.d.ts +0 -62
  731. package/username/username.d.ts +0 -68
  732. package/username/username.pipe.d.ts +0 -23
@@ -1 +1 @@
1
- {"version":3,"file":"koobiq-components-notification-center.mjs","sources":["../../../packages/components/notification-center/notification-center-animations.ts","../../../packages/components/notification-center/notification-center.service.ts","../../../packages/components/notification-center/notification-item.ts","../../../packages/components/notification-center/notification-item.html","../../../packages/components/notification-center/notification-center.ts","../../../packages/components/notification-center/notification-center.html","../../../packages/components/notification-center/notification-center.module.ts","../../../packages/components/notification-center/koobiq-components-notification-center.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationDurations } from '@koobiq/components/core';\n\n/** @docs-private */\nexport const KbqNotificationCenterAnimations: {\n readonly state: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions a tooltip in and out. */\n state: trigger('state', [\n state(\n 'initial',\n style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })\n ),\n transition(\n '* => visible',\n animate(\n '120ms cubic-bezier(0, 0, 0.2, 1)',\n style({\n opacity: 1,\n transform: 'scale(1, 1)'\n })\n )\n ),\n transition('* => hidden', animate(`${KbqAnimationDurations.Rapid} linear`, style({ opacity: 0 })))\n ])\n};\n","import { EventEmitter, inject, Injectable, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DateAdapter, DateFormatter } from '@koobiq/components/core';\nimport { KbqToastData, KbqToastService, KbqToastStyle } from '@koobiq/components/toast';\nimport { BehaviorSubject, combineLatestWith, merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface KbqNotificationItem extends Omit<KbqToastData, 'closeButton'> {\n id?: string;\n\n /** Numeric id of the shown toast, set by `push()` and consumed by `hideToast()`. */\n toastId?: number;\n\n title?: string | TemplateRef<unknown>;\n style?: string | KbqToastStyle;\n\n icon?: boolean | TemplateRef<unknown>;\n iconClass?: string;\n caption?: string | TemplateRef<unknown>;\n\n content?: string | TemplateRef<unknown>;\n actions?: TemplateRef<unknown>;\n\n date: string;\n read?: boolean;\n}\n\nexport const maxUnreadItemsLength = 99;\n\ntype KbqNotificationsGroup = { title: string; items: KbqNotificationItem[] };\n\ntype KbqNotificationsGroups = Record<string, KbqNotificationsGroup>;\n\n/** Payload emitted by `KbqNotificationCenterService.onDelete`. */\nexport type KbqNotificationDeleteEvent = {\n /** What was removed: a single item, a whole date group, or all notifications. */\n type: 'item' | 'group' | 'all';\n /** The notification items that were removed. */\n items: KbqNotificationItem[];\n};\n\n@Injectable({ providedIn: 'root' })\nexport class KbqNotificationCenterService {\n /** @docs-private */\n private readonly adapter = inject(DateAdapter);\n /** @docs-private */\n private readonly formatter = inject(DateFormatter);\n /** @docs-private */\n private readonly toastService = inject(KbqToastService);\n\n /** @docs-private */\n readonly silentMode = new BehaviorSubject(false);\n /** @docs-private */\n readonly loadingMode = new BehaviorSubject(false);\n /** @docs-private */\n readonly errorMode = new BehaviorSubject(false);\n /**\n * Whether the bottom \"load more\" spinner is shown while the next page is being loaded.\n * Note: this is the infinite-scroll indicator and is distinct from `loadingMode`,\n * which renders the full-screen loader instead of the list.\n */\n readonly loadingMore = new BehaviorSubject(false);\n /**\n * Whether the bottom \"load more\" error row (with a retry button) is shown.\n * Distinct from `errorMode`, which replaces the whole list with the full-screen error state.\n */\n readonly loadMoreErrorMode = new BehaviorSubject(false);\n /**\n * Whether there are more notifications to load. While `true`, scrolling to the bottom\n * emits `onNextPage`; set it to `false` to stop further infinite-scroll requests.\n */\n readonly hasMore = new BehaviorSubject(true);\n /** @docs-private */\n readonly onRead = new BehaviorSubject<KbqNotificationItem | null>(null);\n\n /** Triggers an event when the user presses the reload button. */\n readonly onReload = new EventEmitter<void>();\n\n /** Triggers an event when the list is scrolled to the bottom and the next page should be loaded. */\n readonly onNextPage = new EventEmitter<void>();\n\n /** Triggers an event when an item, a group, or all notifications are removed. */\n readonly onDelete = new EventEmitter<KbqNotificationDeleteEvent>();\n\n private originalItems = new BehaviorSubject([] as KbqNotificationItem[]);\n\n /**\n * Grouped notifications, always ordered from newest to oldest: day groups are sorted by date\n * descending, and notifications within each day are sorted by date descending.\n * @docs-private\n */\n readonly groupedItems = this.originalItems.pipe(\n map((items) => {\n const result: KbqNotificationsGroups = {};\n\n items.forEach((item) => this.makeGroup(item, result));\n\n const groups = Object.values(result);\n\n // Newest notifications first within each day.\n groups.forEach((group) => group.items.sort(this.compareByDateDesc));\n\n // Newest day first.\n return groups.sort((a, b) => this.compareByDateDesc(a.items[0], b.items[0]));\n })\n );\n\n /** Emits an event whenever the changes. */\n readonly changes = merge(\n this.silentMode,\n this.loadingMode,\n this.errorMode,\n this.loadingMore,\n this.loadMoreErrorMode,\n this.hasMore,\n this.originalItems,\n this.onRead\n );\n\n /** Notification items */\n get items() {\n return this.originalItems.value;\n }\n\n set items(values: KbqNotificationItem[]) {\n this.originalItems.next(this.setReadState(this.setIds(values)));\n }\n\n /** Number of unread notifications */\n get unreadItemsCounter(): Observable<string> {\n return this.originalItems.pipe(map((items) => items.filter((item) => item.read === false).length)).pipe(\n combineLatestWith(this.onRead),\n map(([value]) => {\n if (value < maxUnreadItemsLength) {\n return value ? value.toString() : '';\n } else {\n return `${maxUnreadItemsLength}+`;\n }\n })\n );\n }\n\n /** true if there are no notifications. */\n get isEmpty() {\n return this.originalItems.value.length === 0;\n }\n\n constructor() {\n this.toastService?.read.pipe(takeUntilDestroyed()).subscribe((toastData) => {\n const item = this.items.find((item) => item.id === toastData?.id);\n\n if (item && !item.read) {\n item.read = true;\n\n this.onRead.next(toastData as KbqNotificationItem);\n }\n });\n }\n\n /** Set silent mode */\n setSilentMode(value: boolean) {\n this.silentMode.next(value);\n }\n\n /** Set loading mode */\n setLoadingMode(value: boolean) {\n this.loadingMode.next(value);\n }\n\n /** Set error mode */\n setErrorMode(value: boolean) {\n this.errorMode.next(value);\n }\n\n /** Set the bottom \"load more\" spinner visibility. */\n setLoadingMore(value: boolean) {\n this.loadingMore.next(value);\n }\n\n /** Set the bottom \"load more\" error state visibility. */\n setLoadMoreErrorMode(value: boolean) {\n this.loadMoreErrorMode.next(value);\n }\n\n /** Set whether there are more notifications to load via infinite scroll. */\n setHasMore(value: boolean) {\n this.hasMore.next(value);\n }\n\n /** Push new notification item in center */\n push(item: KbqNotificationItem) {\n this.setReadState(this.setIds([item]));\n\n if (!this.silentMode.value) {\n item.toastId = this.toastService.show(item).id;\n }\n\n return this.originalItems.next([...this.originalItems.value, item]);\n }\n\n /** Hides the toast that corresponds to the given notification item. */\n hideToast(item: KbqNotificationItem): void {\n if (item.toastId === undefined) {\n return;\n }\n\n this.toastService.hide(item.toastId);\n item.toastId = undefined;\n }\n\n /** Remove notification item */\n remove(removedItem: KbqNotificationItem) {\n this.hideToast(removedItem);\n\n this.originalItems.next(this.originalItems.value.filter((item) => removedItem !== item));\n\n this.onDelete.emit({ type: 'item', items: [removedItem] });\n }\n\n /** Remove group of notification items */\n removeGroup(group: KbqNotificationsGroup) {\n group.items.forEach((item) => this.hideToast(item));\n\n this.originalItems.next(this.originalItems.value.filter((item) => !group.items.includes(item)));\n\n this.onDelete.emit({ type: 'group', items: [...group.items] });\n }\n\n /** Remove all notification items */\n removeAll() {\n const items = this.originalItems.value;\n\n items.forEach((item) => this.hideToast(item));\n\n this.originalItems.next([]);\n\n this.onDelete.emit({ type: 'all', items });\n }\n\n private makeGroup = (item: KbqNotificationItem, groups: KbqNotificationsGroups) => {\n const parsedDate = this.adapter.parse(item.date, '');\n const groupId = this.adapter.format(parsedDate, 'yyyyMMdd');\n const groupTitle = this.formatter.absoluteLongDate(parsedDate);\n\n if (groups[groupId]) {\n groups[groupId].items.push(item);\n } else {\n groups[groupId] = {\n title: groupTitle,\n items: [item]\n };\n }\n };\n\n /** Compares two notifications by date so the newest comes first. */\n private compareByDateDesc = (a: KbqNotificationItem, b: KbqNotificationItem): number => {\n const parsedA = this.adapter.parse(a.date, '');\n const parsedB = this.adapter.parse(b.date, '');\n\n if (!parsedA || !parsedB) {\n return 0;\n }\n\n return this.adapter.compareDateTime(parsedB, parsedA);\n };\n\n private setIds(items: KbqNotificationItem[]) {\n items.forEach((item) => (item.id = item.id ?? new Date().getTime().toString()));\n\n return items;\n }\n\n private setReadState(items: KbqNotificationItem[]) {\n items.forEach((item) => (item.read = item.read ?? false));\n\n return items;\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { DateAdapter, KbqReadStateDirective, PopUpPlacements, ThemePalette } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { filter } from 'rxjs/operators';\nimport { KbqNotificationCenterComponent } from './notification-center';\nimport { KbqNotificationCenterService, KbqNotificationItem } from './notification-center.service';\n\nlet id = 0;\n\n/** @docs-private */\n@Component({\n selector: 'kbq-notification-item',\n imports: [\n NgTemplateOutlet,\n KbqIconModule,\n NgClass,\n KbqTitleModule,\n KbqButtonModule,\n KbqTooltipTrigger\n ],\n templateUrl: './notification-item.html',\n styleUrls: ['./notification-item.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'kbq-notification-item',\n '[class]': 'style',\n 'data-testid': 'kbq-notification-item'\n },\n hostDirectives: [KbqReadStateDirective]\n})\nexport class KbqNotificationItemComponent {\n private readonly adapter = inject(DateAdapter);\n protected readonly service = inject(KbqNotificationCenterService);\n protected readonly readStateDirective = inject<KbqReadStateDirective>(KbqReadStateDirective, { host: true });\n protected readonly center = inject(KbqNotificationCenterComponent, { host: true });\n\n protected popUpPlacements = PopUpPlacements;\n\n themePalette = ThemePalette;\n id = id++;\n\n time: string;\n\n $implicit;\n\n get style() {\n return {\n [`kbq-notification-item_${this.data.style}`]: !!this.data.style\n };\n }\n\n @Input()\n get data(): KbqNotificationItem {\n return this._data;\n }\n\n set data(value: KbqNotificationItem) {\n this._data = value;\n\n this.time = this.adapter.format(this.adapter.parse(value.date, ''), 'HH:mm');\n }\n\n private _data: KbqNotificationItem;\n\n constructor() {\n this.$implicit = this;\n\n this.readStateDirective.read\n .pipe(\n filter((value: boolean) => value),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.data.read) {\n return;\n }\n\n this.data.read = true;\n\n this.service.onRead.next(this.data);\n });\n }\n\n isTemplateRef(value): boolean {\n return value instanceof TemplateRef;\n }\n}\n","@if (data.icon) {\n <div class=\"kbq-notification-item__icon-container layout-row layout-align-start-start\">\n @if (data.icon === true) {\n @switch (data.style) {\n @case ('contrast') {\n <i\n kbq-icon=\"kbq-circle-info_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('success') {\n <i\n kbq-icon=\"kbq-circle-check_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('warning') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n @case ('error') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [ngClass]=\"data.iconClass\"\n ></i>\n }\n }\n } @else if (isTemplateRef(data.icon)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.icon)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n\n<div class=\"kbq-notification-item__container\">\n @if (data.title) {\n <div\n kbq-title\n class=\"kbq-notification-item__title\"\n [class.kbq-notification-item__title_with-content]=\"data.caption || data.content\"\n >\n @if (isTemplateRef(data.title)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.title)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.title)) {\n <p>{{ data.title }}</p>\n }\n\n <div class=\"kbq-notification-item-time\" [class.kbq-notification-item-time_read]=\"data.read\">\n <div class=\"kbq-notification-item-time__value\">{{ time }}</div>\n <i class=\"kbq-notification-item-time__state\" kbq-icon=\"kbq-circle-xs_16\" [color]=\"'theme'\"></i>\n </div>\n </div>\n }\n\n @if (data.caption) {\n <div\n kbq-title\n [class.kbq-notification-item__text]=\"data.title\"\n [class.kbq-notification-item__title]=\"!data.title\"\n >\n @if (isTemplateRef(data.caption)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.caption)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.caption)) {\n {{ data.caption }}\n }\n </div>\n }\n\n @if (data.content) {\n <div class=\"kbq-notification-item__content\">\n @if (isTemplateRef(data.content)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.content)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.content)) {\n {{ data.content }}\n }\n </div>\n }\n\n @if (data.actions) {\n <div class=\"kbq-notification-item__actions\">\n @if (isTemplateRef(data.actions)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.actions)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n @if (!isTemplateRef(data.actions)) {\n {{ data.actions }}\n }\n </div>\n }\n</div>\n\n<button\n kbq-button\n class=\"kbq-notification-item__remove-button\"\n data-testid=\"kbq-notification-item-remove-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltipArrow]=\"false\"\n [kbqTooltip]=\"center.localeData.remove\"\n [kbqPlacement]=\"popUpPlacements.Right\"\n (click)=\"service.remove(data)\"\n>\n <i kbq-icon=\"kbq-trash_16\"></i>\n</button>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\n Output,\n TemplateRef,\n Type,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport {\n DateAdapter,\n KBQ_LOCALE_SERVICE,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpSizeValues,\n KbqPopUpTrigger,\n KbqStickToWindowPlacementValues,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpSizes,\n PopUpTriggers,\n applyPopupMargins,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLoaderOverlayModule } from '@koobiq/components/loader-overlay';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqScrollbar, KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { auditTime, distinctUntilChanged, filter, map, pairwise } from 'rxjs/operators';\nimport { KbqNotificationCenterAnimations } from './notification-center-animations';\nimport { KbqNotificationCenterService } from './notification-center.service';\nimport { KbqNotificationItemComponent } from './notification-item';\n\nconst defaultOffsetX = 8;\n\n/** Rate-limit window (ms) for the scroll-to-bottom check that drives infinite scroll. */\nconst SCROLLED_TO_BOTTOM_AUDIT_TIME = 100;\n\n/**default configuration of notification-center */\nexport const KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION = ruRULocaleData.notificationCenter;\n\n/** Injection Token for providing configuration of notification-center */\nexport const KBQ_NOTIFICATION_CENTER_CONFIGURATION = new InjectionToken('KbqNotificationCenterConfiguration');\n\n/** @docs-private */\nexport const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-notification-center-scroll-strategy'\n);\n\n/** @docs-private */\nexport function kbqNotificationCenterScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });\n}\n\n/** @docs-private */\nexport const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqNotificationCenterScrollStrategyFactory\n};\n\n/** @docs-private */\n@Component({\n selector: 'kbq-notification-center',\n imports: [\n KbqIconModule,\n KbqBadgeModule,\n KbqScrollbarModule,\n KbqButtonModule,\n KbqDividerModule,\n KbqDropdownModule,\n KbqToolTipModule,\n AsyncPipe,\n KbqNotificationItemComponent,\n KbqLoaderOverlayModule,\n KbqProgressSpinnerModule\n ],\n templateUrl: './notification-center.html',\n styleUrls: ['./notification-center.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n host: {\n class: 'kbq-notification-center',\n '[class.kbq-notification-center_popover]': 'popoverMode',\n '(keydown.escape)': 'escapeHandler()'\n },\n animations: [KbqNotificationCenterAnimations.state]\n})\nexport class KbqNotificationCenterComponent extends KbqPopUp implements AfterViewInit {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly dateAdapter = inject(DateAdapter);\n /** @docs-private */\n protected readonly service = inject(KbqNotificationCenterService);\n\n @ViewChild(KbqScrollbar) private scrollContainer: KbqScrollbar;\n\n readonly externalConfiguration = inject(KBQ_NOTIFICATION_CENTER_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** @docs-private */\n protected popoverMode: boolean;\n\n /** @docs-private */\n protected isTopOverflow: boolean = false;\n /** @docs-private */\n protected isBottomOverflow: boolean = false;\n\n /** Distance in pixels from the bottom of the list at which the next page is requested.\n * @docs-private */\n protected scrolledToBottomOffset: number = 0;\n\n /** Emits on every scroll of the list container; drives the scroll-to-bottom check. */\n private readonly scroll$ = new Subject<void>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n /** @docs-private */\n prefix = 'kbq-notification-center';\n /** @docs-private */\n trigger: KbqNotificationCenterTrigger;\n /** @docs-private */\n isTrapFocus: boolean = false;\n\n @ViewChild('notificationSwitcher') switcher: KbqButton;\n\n get popoverHeight(): string {\n return this._popoverHeight;\n }\n\n set popoverHeight(value: string) {\n this._popoverHeight = value;\n\n this.elementRef.nativeElement.style.height = value;\n }\n\n private _popoverHeight: string;\n\n constructor() {\n super();\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n }\n\n ngAfterViewInit() {\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {\n if (this.offset !== null && state) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n }\n\n this.setStickPosition();\n });\n\n this.service.changes\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n\n this.switcher.focus();\n\n setTimeout(this.checkOverflow);\n\n this.subscribeToScrolledToBottom();\n }\n\n /** Handles the list container scroll: updates overflow shadows and feeds the scroll-to-bottom check.\n * @docs-private */\n protected onContainerScroll(): void {\n this.checkOverflow();\n this.scroll$.next();\n }\n\n /** Retries loading the next page from the bottom error row.\n * @docs-private */\n protected retryLoadMore(): void {\n // The retry button is about to unmount; keep keyboard focus inside the panel instead of\n // letting it fall back to <body>.\n this.focusScrollContainer();\n\n // Clear the bottom error state here so the spinner and the error row can never be shown at\n // the same time, regardless of what the consumer's `onNextPage` handler does.\n this.service.setLoadMoreErrorMode(false);\n\n this.service.onNextPage.emit();\n }\n\n /**\n * Requests the next page (via `service.onNextPage`) once the list is scrolled to within\n * `scrolledToBottomOffset` pixels of the bottom. Two triggers feed it: the user scrolling, and a\n * page finishing loading. The latter keeps paging when a freshly loaded page is too short to\n * overflow the viewport — otherwise no further scroll event would fire and pagination would\n * stall. Suppressed while a load is in flight, errored, or when there is nothing more to load.\n */\n private subscribeToScrolledToBottom(): void {\n const scrolledToBottom$ = this.scroll$.pipe(\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME),\n map(() => this.isScrolledToBottom()),\n distinctUntilChanged(),\n filter(Boolean)\n );\n\n // Re-measure once a load completes (and the appended items have rendered): if the list still\n // sits at the bottom, continue paging instead of waiting for a scroll event that never comes.\n const loadCompleted$ = this.service.loadingMore.pipe(\n distinctUntilChanged(),\n pairwise(),\n filter(([wasLoading, isLoading]) => wasLoading && !isLoading),\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME),\n filter(() => this.isScrolledToBottom())\n );\n\n merge(scrolledToBottom$, loadCompleted$)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.requestNextPage());\n }\n\n /** Whether the list is scrolled to within `scrolledToBottomOffset` pixels of the bottom. */\n private isScrolledToBottom(): boolean {\n const { scrollTop, clientHeight, scrollHeight } = this.scrollContainer.contentElement.nativeElement;\n\n return scrollHeight - scrollTop - clientHeight <= this.scrolledToBottomOffset;\n }\n\n /** Emits `onNextPage` unless a load is already in flight, errored, or there is nothing more to load. */\n private requestNextPage(): void {\n if (this.service.hasMore.value && !this.service.loadingMore.value && !this.service.loadMoreErrorMode.value) {\n this.service.onNextPage.emit();\n }\n }\n\n private focusScrollContainer(): void {\n const element = this.scrollContainer.contentElement.nativeElement;\n\n // tabindex -1 keeps the container out of the Tab order while allowing programmatic focus.\n element.setAttribute('tabindex', '-1');\n element.focus({ preventScroll: true });\n }\n\n /** @docs-private */\n updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\n super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });\n }\n\n /** @docs-private */\n updateTrapFocus(isTrapFocus: boolean): void {\n this.isTrapFocus = isTrapFocus;\n }\n\n /** @docs-private */\n escapeHandler() {\n this.hide(0);\n }\n\n protected checkOverflow = () => {\n const nativeElement = this.scrollContainer.contentElement.nativeElement;\n\n const { scrollTop, offsetHeight, scrollHeight } = nativeElement;\n\n this.isTopOverflow = scrollTop > 0;\n\n this.isBottomOverflow = scrollTop + offsetHeight < scrollHeight;\n\n this.changeDetectorRef.markForCheck();\n };\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('notificationCenter');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION;\n }\n}\n\n@Directive({\n selector: '[kbqNotificationCenterTrigger]',\n exportAs: 'kbqNotificationCenterTrigger',\n host: {\n '[class.kbq-notification-center_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen'\n }\n})\nexport class KbqNotificationCenterTrigger\n extends KbqPopUpTrigger<KbqNotificationCenterComponent>\n implements AfterContentInit\n{\n /** @docs-private */\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY);\n /** @docs-private */\n protected readonly service = inject(KbqNotificationCenterService);\n\n // not used\n /** @docs-private */\n arrow: boolean = false;\n /** @docs-private */\n customClass: string;\n /** @docs-private */\n private hasBackdrop: boolean = false;\n /** @docs-private */\n private size: KbqPopUpSizeValues = PopUpSizes.Medium;\n /** @docs-private */\n content: string | TemplateRef<any>;\n /** @docs-private */\n header: string | TemplateRef<any>;\n /** @docs-private */\n footer: string | TemplateRef<any>;\n\n /** Number of unread notifications */\n get unreadItemsCounter() {\n return this.service.unreadItemsCounter;\n }\n\n /** Placement of popUp */\n @Input('kbqNotificationCenterPlacement') placement: KbqPopUpPlacementValues = PopUpPlacements.Right;\n\n /** Class that will be used in the background */\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Class that will be used in the panel */\n @Input('kbqNotificationCenterPanelClass') panelClass: string;\n\n /** Offset of popUp */\n @Input({ transform: numberAttribute }) offset: number | null = defaultOffsetX;\n\n /** Distance in pixels from the bottom of the list at which the next page is requested via `onNextPage`. */\n @Input({ transform: numberAttribute }) scrolledToBottomOffset: number = 0;\n\n /** Use popover or not */\n @Input({ transform: booleanAttribute })\n get popoverMode(): boolean {\n return this._popoverMode;\n }\n\n set popoverMode(value: boolean) {\n this._popoverMode = value;\n\n this.placement = PopUpPlacements.Bottom;\n this.updatePlacementPriority(['bottomCenter', 'bottomLeft', 'bottomRight']);\n }\n\n private _popoverMode: boolean = false;\n\n /** Set height of popover. Default is calc(100vh - 48px). 48px - height of navbar */\n @Input()\n get popoverHeight(): string {\n return this._popoverHeight;\n }\n\n set popoverHeight(value: string) {\n this._popoverHeight = value;\n\n if (this.instance?.popoverHeight) {\n this.instance.popoverHeight = value;\n }\n }\n\n private _popoverHeight: string;\n\n /** Whether the trigger is disabled. */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n /**\n * Additionally positions the element relative to the window side (Top, Right, Bottom and Left).\n * If container is specified, the positioning will be relative to it.\n * */\n @Input() stickToWindow: KbqStickToWindowPlacementValues;\n\n /** Container for additional positioning, used with stickToWindow */\n @Input() container: HTMLElement;\n\n /** @docs-private */\n get hasClickTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n /** Emits a change event whenever the placement state changes. */\n @Output('kbqPlacementChange') readonly placementChange = new EventEmitter();\n\n /** Emits a change event whenever the visible state changes. */\n @Output('kbqVisibleChange') readonly visibleChange = new EventEmitter<boolean>();\n\n /** @docs-private */\n trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** @docs-private */\n protected originSelector = '.kbq-notification-center';\n\n /** @docs-private */\n protected get overlayConfig(): OverlayConfig {\n const defaultPanelClass = 'kbq-notification-center__panel';\n\n return {\n panelClass: this.panelClass ? [defaultPanelClass, this.panelClass] : defaultPanelClass,\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n protected preventClosingByInnerScrollSubscription: Subscription;\n\n constructor() {\n super();\n\n this.updatePlacementPriority(['right', 'rightBottom', 'rightTop']);\n }\n\n ngAfterContentInit(): void {\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => {\n if (visible) {\n // eslint-disable-next-line rxjs/no-nested-subscribe\n this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => {\n if (event && event['scrollDispatcher']) {\n this.instance.setStickPosition();\n\n event['kbqPopoverPreventHide'] = true;\n event['type'] = 'click';\n }\n });\n } else {\n this.preventClosingByInnerScrollSubscription?.unsubscribe();\n this.focus();\n }\n });\n }\n\n /** @docs-private */\n updateData() {\n if (!this.instance) return;\n\n this.instance.header = this.header;\n this.instance.content = this.content;\n this.instance.arrow = this.arrow;\n this.instance.offset = this.offset;\n this.instance.footer = this.footer;\n this.instance.popoverMode = this.popoverMode;\n this.instance.popoverHeight = this.popoverHeight;\n this.instance.scrolledToBottomOffset = this.scrolledToBottomOffset;\n\n this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);\n\n if (this.isOpen) {\n this.updatePosition(true);\n }\n }\n\n /** Updates the current position.\n *\n * @docs-private */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** @docs-private */\n getOverlayHandleComponentType(): Type<KbqNotificationCenterComponent> {\n return KbqNotificationCenterComponent;\n }\n\n /** @docs-private */\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) return;\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);\n this.instance.markForCheck();\n }\n\n /** @docs-private */\n closingActions() {\n return merge(\n this.overlayRef!.outsidePointerEvents(),\n this.overlayRef!.backdropClick(),\n this.scrollDispatcher.scrolled()\n );\n }\n}\n","<div class=\"kbq-notification-center-header\">\n <div class=\"kbq-notification-center-title\">\n <div class=\"kbq-notification-center-title__text\">{{ localeData.notifications }}</div>\n <button\n #notificationSwitcher\n #dropdownTrigger=\"kbqDropdownTrigger\"\n kbq-button\n class=\"kbq-notification-center-title__button\"\n data-testid=\"kbq-notification-center-silent-mode-toggle\"\n [kbqDropdownTriggerFor]=\"notificationSwitcherDropdown\"\n [kbqTooltip]=\"service.silentMode.value ? localeData.doNotDisturb : localeData.showPopUpNotifications\"\n [kbqTooltipArrow]=\"false\"\n [kbqPlacement]=\"'right'\"\n [kbqTooltipOffset]=\"4\"\n [kbqTooltipDisabled]=\"dropdownTrigger.opened\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n >\n <i kbq-icon=\"{{ service.silentMode.value ? 'kbq-bell-slash_16' : 'kbq-bell_16' }}\"></i>\n </button>\n </div>\n <div class=\"kbq-notification-center-toolbar\">\n @if (!service.isEmpty) {\n <button\n kbq-button\n class=\"kbq-notification-center-toolbar__button\"\n data-testid=\"kbq-notification-center-remove-all-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n (click)=\"service.removeAll()\"\n >\n <i kbq-icon=\"kbq-trash_16\"></i>\n </button>\n\n <kbq-divider [vertical]=\"true\" />\n }\n\n <button\n kbq-button\n class=\"kbq-notification-center-toolbar__button\"\n data-testid=\"kbq-notification-center-close-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n (click)=\"hide(0)\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n</div>\n\n<div\n kbq-scrollbar\n class=\"kbq-notification-center-container\"\n data-testid=\"kbq-notification-center-container\"\n [class.kbq-notification-center_bottom-overflow]=\"isBottomOverflow\"\n (onScroll)=\"onContainerScroll()\"\n>\n @if (!service.errorMode.value) {\n @if (!service.loadingMode.value) {\n @for (group of service.groupedItems | async; track group) {\n <div\n class=\"kbq-notification-center-sub-header\"\n data-testid=\"kbq-notification-center-group\"\n [class.kbq-notification-center_top-overflow]=\"isTopOverflow\"\n >\n <div class=\"kbq-notification-center-sub-header__date\">{{ group.title }}</div>\n\n <button\n kbq-button\n class=\"kbq-notification-center-sub-header__button\"\n data-testid=\"kbq-notification-center-remove-group-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltip]=\"localeData.remove\"\n [kbqPlacement]=\"'right'\"\n [kbqTooltipArrow]=\"false\"\n (click)=\"service.removeGroup(group)\"\n >\n <i kbq-icon=\"kbq-trash_16\"></i>\n </button>\n </div>\n\n @for (item of group.items; track item) {\n <kbq-notification-item [data]=\"item\" />\n }\n } @empty {\n @if (!service.loadingMore.value) {\n <div class=\"kbq-notification-center-empty-container\" data-testid=\"kbq-notification-center-empty\">\n <i kbq-icon-item=\"kbq-bell_16\" [big]=\"true\" [color]=\"'contrast-fade'\"></i>\n {{ localeData.noNotifications }}\n </div>\n }\n }\n\n @if (service.loadingMore.value) {\n <div\n class=\"kbq-notification-center-load-more\"\n data-testid=\"kbq-notification-center-load-more\"\n role=\"status\"\n [attr.aria-label]=\"localeData.loadingMore\"\n >\n <kbq-progress-spinner [mode]=\"'indeterminate'\" [size]=\"'compact'\" />\n </div>\n }\n\n @if (service.loadMoreErrorMode.value) {\n <div\n class=\"kbq-notification-center-load-more-error\"\n data-testid=\"kbq-notification-center-load-more-error\"\n role=\"alert\"\n >\n {{ localeData.failedToLoadNotifications }}\n <button\n kbq-button\n data-testid=\"kbq-notification-center-load-more-retry-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'theme'\"\n (click)=\"retryLoadMore()\"\n >\n {{ localeData.repeat }}\n </button>\n </div>\n }\n } @else {\n <kbq-loader-overlay data-testid=\"kbq-notification-center-loader\" [transparent]=\"true\" />\n }\n } @else {\n <div class=\"kbq-notification-center-error-container\" data-testid=\"kbq-notification-center-error\">\n <i kbq-icon-item=\"kbq-bell_16\" [big]=\"true\" [color]=\"'error'\" [fade]=\"true\"></i>\n {{ localeData.failedToLoadNotifications }}\n <button\n kbq-button\n data-testid=\"kbq-notification-center-reload-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'theme'\"\n (click)=\"service.onReload.emit()\"\n >\n {{ localeData.repeat }}\n </button>\n </div>\n }\n</div>\n\n<kbq-dropdown #notificationSwitcherDropdown=\"kbqDropdown\">\n <button\n kbq-dropdown-item\n data-testid=\"kbq-notification-center-show-notifications-button\"\n (click)=\"service.setSilentMode(false)\"\n >\n <i kbq-icon=\"{{ !service.silentMode.value ? 'kbq-circle-xs_16' : '' }}\" [style.min-width.px]=\"16\"></i>\n {{ localeData.showPopUpNotifications }}\n </button>\n <button\n kbq-dropdown-item\n data-testid=\"kbq-notification-center-do-not-disturb-button\"\n (click)=\"service.setSilentMode(true)\"\n >\n <i kbq-icon=\"{{ service.silentMode.value ? 'kbq-circle-xs_16' : '' }}\" [style.min-width.px]=\"16\"></i>\n {{ localeData.doNotDisturb }}\n </button>\n</kbq-dropdown>\n","import { ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { DateAdapter, DateFormatter, EmptyFocusTrapStrategy } from '@koobiq/components/core';\nimport {\n KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n} from './notification-center';\nimport { KbqNotificationCenterService } from './notification-center.service';\n\n@NgModule({\n imports: [\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n ],\n exports: [\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n ],\n providers: [\n KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy },\n { provide: KbqNotificationCenterService, deps: [DateAdapter, DateFormatter] }\n ]\n})\nexport class KbqNotificationCenterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"koobiq-components-notification-center.mjs","sources":["../../../packages/components/notification-center/notification-center-animations.ts","../../../packages/components/notification-center/notification-center.service.ts","../../../packages/components/notification-center/notification-item.ts","../../../packages/components/notification-center/notification-item.html","../../../packages/components/notification-center/notification-center.ts","../../../packages/components/notification-center/notification-center.html","../../../packages/components/notification-center/notification-center.module.ts","../../../packages/components/notification-center/koobiq-components-notification-center.ts"],"sourcesContent":["import { animate, AnimationTriggerMetadata, state, style, transition, trigger } from '@angular/animations';\nimport { KbqAnimationDurations } from '@koobiq/components/core';\n\n/** @docs-private */\nexport const KbqNotificationCenterAnimations: {\n readonly state: AnimationTriggerMetadata;\n} = {\n /** Animation that transitions a tooltip in and out. */\n state: trigger('state', [\n state(\n 'initial',\n style({\n opacity: 0,\n transform: 'scale(1, 0.8)'\n })\n ),\n transition(\n '* => visible',\n animate(\n '120ms cubic-bezier(0, 0, 0.2, 1)',\n style({\n opacity: 1,\n transform: 'scale(1, 1)'\n })\n )\n ),\n transition('* => hidden', animate(`${KbqAnimationDurations.Rapid} linear`, style({ opacity: 0 })))\n ])\n};\n","import { EventEmitter, inject, Injectable, TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DateAdapter, DateFormatter } from '@koobiq/components/core';\nimport { KbqToastData, KbqToastService, KbqToastStyle } from '@koobiq/components/toast';\nimport { BehaviorSubject, combineLatestWith, merge, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport interface KbqNotificationItem extends Omit<KbqToastData, 'closeButton'> {\n id?: string;\n\n /** Numeric id of the shown toast, set by `push()` and consumed by `hideToast()`. */\n toastId?: number;\n\n title?: string | TemplateRef<unknown>;\n style?: string | KbqToastStyle;\n\n icon?: boolean | TemplateRef<unknown>;\n iconClass?: string;\n caption?: string | TemplateRef<unknown>;\n\n content?: string | TemplateRef<unknown>;\n actions?: TemplateRef<unknown>;\n\n date: string;\n read?: boolean;\n}\n\nexport const maxUnreadItemsLength = 99;\n\ntype KbqNotificationsGroup = { title: string; items: KbqNotificationItem[] };\n\ntype KbqNotificationsGroups = Record<string, KbqNotificationsGroup>;\n\n/** Payload emitted by `KbqNotificationCenterService.onDelete`. */\nexport type KbqNotificationDeleteEvent = {\n /** What was removed: a single item, a whole date group, or all notifications. */\n type: 'item' | 'group' | 'all';\n /** The notification items that were removed. */\n items: KbqNotificationItem[];\n};\n\n@Injectable({ providedIn: 'root' })\nexport class KbqNotificationCenterService {\n /** @docs-private */\n private readonly adapter = inject(DateAdapter);\n /** @docs-private */\n private readonly formatter = inject(DateFormatter);\n /** @docs-private */\n private readonly toastService = inject(KbqToastService);\n\n /** @docs-private */\n readonly silentMode = new BehaviorSubject(false);\n /** @docs-private */\n readonly loadingMode = new BehaviorSubject(false);\n /** @docs-private */\n readonly errorMode = new BehaviorSubject(false);\n /**\n * Whether the bottom \"load more\" spinner is shown while the next page is being loaded.\n * Note: this is the infinite-scroll indicator and is distinct from `loadingMode`,\n * which renders the full-screen loader instead of the list.\n */\n readonly loadingMore = new BehaviorSubject(false);\n /**\n * Whether the bottom \"load more\" error row (with a retry button) is shown.\n * Distinct from `errorMode`, which replaces the whole list with the full-screen error state.\n */\n readonly loadMoreErrorMode = new BehaviorSubject(false);\n /**\n * Whether there are more notifications to load. While `true`, scrolling to the bottom\n * emits `onNextPage`; set it to `false` to stop further infinite-scroll requests.\n */\n readonly hasMore = new BehaviorSubject(true);\n /** @docs-private */\n readonly onRead = new BehaviorSubject<KbqNotificationItem | null>(null);\n\n /** Triggers an event when the user presses the reload button. */\n readonly onReload = new EventEmitter<void>();\n\n /** Triggers an event when the list is scrolled to the bottom and the next page should be loaded. */\n readonly onNextPage = new EventEmitter<void>();\n\n /** Triggers an event when an item, a group, or all notifications are removed. */\n readonly onDelete = new EventEmitter<KbqNotificationDeleteEvent>();\n\n private originalItems = new BehaviorSubject([] as KbqNotificationItem[]);\n\n /**\n * Grouped notifications, always ordered from newest to oldest: day groups are sorted by date\n * descending, and notifications within each day are sorted by date descending.\n * @docs-private\n */\n readonly groupedItems = this.originalItems.pipe(\n map((items) => {\n const result: KbqNotificationsGroups = {};\n\n items.forEach((item) => this.makeGroup(item, result));\n\n const groups = Object.values(result);\n\n // Newest notifications first within each day.\n groups.forEach((group) => group.items.sort(this.compareByDateDesc));\n\n // Newest day first.\n return groups.sort((a, b) => this.compareByDateDesc(a.items[0], b.items[0]));\n })\n );\n\n /** Emits an event whenever the changes. */\n readonly changes = merge(\n this.silentMode,\n this.loadingMode,\n this.errorMode,\n this.loadingMore,\n this.loadMoreErrorMode,\n this.hasMore,\n this.originalItems,\n this.onRead\n );\n\n /** Notification items */\n get items() {\n return this.originalItems.value;\n }\n\n set items(values: KbqNotificationItem[]) {\n this.originalItems.next(this.setReadState(this.setIds(values)));\n }\n\n /** Number of unread notifications */\n get unreadItemsCounter(): Observable<string> {\n return this.originalItems.pipe(map((items) => items.filter((item) => item.read === false).length)).pipe(\n combineLatestWith(this.onRead),\n map(([value]) => {\n if (value < maxUnreadItemsLength) {\n return value ? value.toString() : '';\n } else {\n return `${maxUnreadItemsLength}+`;\n }\n })\n );\n }\n\n /** true if there are no notifications. */\n get isEmpty() {\n return this.originalItems.value.length === 0;\n }\n\n constructor() {\n this.toastService?.read.pipe(takeUntilDestroyed()).subscribe((toastData) => {\n const item = this.items.find((item) => item.id === toastData?.id);\n\n if (item && !item.read) {\n item.read = true;\n\n this.onRead.next(toastData as KbqNotificationItem);\n }\n });\n }\n\n /** Set silent mode */\n setSilentMode(value: boolean) {\n this.silentMode.next(value);\n }\n\n /** Set loading mode */\n setLoadingMode(value: boolean) {\n this.loadingMode.next(value);\n }\n\n /** Set error mode */\n setErrorMode(value: boolean) {\n this.errorMode.next(value);\n }\n\n /** Set the bottom \"load more\" spinner visibility. */\n setLoadingMore(value: boolean) {\n this.loadingMore.next(value);\n }\n\n /** Set the bottom \"load more\" error state visibility. */\n setLoadMoreErrorMode(value: boolean) {\n this.loadMoreErrorMode.next(value);\n }\n\n /** Set whether there are more notifications to load via infinite scroll. */\n setHasMore(value: boolean) {\n this.hasMore.next(value);\n }\n\n /** Push new notification item in center */\n push(item: KbqNotificationItem) {\n this.setReadState(this.setIds([item]));\n\n if (!this.silentMode.value) {\n item.toastId = this.toastService.show(item).id;\n }\n\n return this.originalItems.next([...this.originalItems.value, item]);\n }\n\n /** Hides the toast that corresponds to the given notification item. */\n hideToast(item: KbqNotificationItem): void {\n if (item.toastId === undefined) {\n return;\n }\n\n this.toastService.hide(item.toastId);\n item.toastId = undefined;\n }\n\n /** Remove notification item */\n remove(removedItem: KbqNotificationItem) {\n this.hideToast(removedItem);\n\n this.originalItems.next(this.originalItems.value.filter((item) => removedItem !== item));\n\n this.onDelete.emit({ type: 'item', items: [removedItem] });\n }\n\n /** Remove group of notification items */\n removeGroup(group: KbqNotificationsGroup) {\n group.items.forEach((item) => this.hideToast(item));\n\n this.originalItems.next(this.originalItems.value.filter((item) => !group.items.includes(item)));\n\n this.onDelete.emit({ type: 'group', items: [...group.items] });\n }\n\n /** Remove all notification items */\n removeAll() {\n const items = this.originalItems.value;\n\n items.forEach((item) => this.hideToast(item));\n\n this.originalItems.next([]);\n\n this.onDelete.emit({ type: 'all', items });\n }\n\n private makeGroup = (item: KbqNotificationItem, groups: KbqNotificationsGroups) => {\n const parsedDate = this.adapter.parse(item.date, '');\n const groupId = this.adapter.format(parsedDate, 'yyyyMMdd');\n const groupTitle = this.formatter.absoluteLongDate(parsedDate);\n\n if (groups[groupId]) {\n groups[groupId].items.push(item);\n } else {\n groups[groupId] = {\n title: groupTitle,\n items: [item]\n };\n }\n };\n\n /** Compares two notifications by date so the newest comes first. */\n private compareByDateDesc = (a: KbqNotificationItem, b: KbqNotificationItem): number => {\n const parsedA = this.adapter.parse(a.date, '');\n const parsedB = this.adapter.parse(b.date, '');\n\n if (!parsedA || !parsedB) {\n return 0;\n }\n\n return this.adapter.compareDateTime(parsedB, parsedA);\n };\n\n private setIds(items: KbqNotificationItem[]) {\n items.forEach((item) => (item.id = item.id ?? new Date().getTime().toString()));\n\n return items;\n }\n\n private setReadState(items: KbqNotificationItem[]) {\n items.forEach((item) => (item.read = item.read ?? false));\n\n return items;\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, Input, TemplateRef, ViewEncapsulation } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqButtonModule } from '@koobiq/components/button';\nimport { DateAdapter, KbqReadStateDirective, PopUpPlacements, ThemePalette } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqTitleModule } from '@koobiq/components/title';\nimport { KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { filter } from 'rxjs/operators';\nimport { KbqNotificationCenterComponent } from './notification-center';\nimport { KbqNotificationCenterService, KbqNotificationItem } from './notification-center.service';\n\nlet id = 0;\n\n/** @docs-private */\n@Component({\n selector: 'kbq-notification-item',\n imports: [\n NgTemplateOutlet,\n KbqIconModule,\n KbqTitleModule,\n KbqButtonModule,\n KbqTooltipTrigger\n ],\n templateUrl: './notification-item.html',\n styleUrls: ['./notification-item.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-notification-item',\n '[class]': 'style',\n 'data-testid': 'kbq-notification-item'\n },\n hostDirectives: [KbqReadStateDirective]\n})\nexport class KbqNotificationItemComponent {\n private readonly adapter = inject(DateAdapter);\n protected readonly service = inject(KbqNotificationCenterService);\n protected readonly readStateDirective = inject<KbqReadStateDirective>(KbqReadStateDirective, { host: true });\n protected readonly center = inject(KbqNotificationCenterComponent, { host: true });\n\n protected popUpPlacements = PopUpPlacements;\n\n themePalette = ThemePalette;\n id = id++;\n\n time: string;\n\n $implicit;\n\n get style() {\n return {\n [`kbq-notification-item_${this.data.style}`]: !!this.data.style\n };\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get data(): KbqNotificationItem {\n return this._data;\n }\n\n set data(value: KbqNotificationItem) {\n this._data = value;\n\n this.time = this.adapter.format(this.adapter.parse(value.date, ''), 'HH:mm');\n }\n\n private _data: KbqNotificationItem;\n\n constructor() {\n this.$implicit = this;\n\n this.readStateDirective.read\n .pipe(\n filter((value: boolean) => value),\n takeUntilDestroyed()\n )\n .subscribe(() => {\n if (this.data.read) {\n return;\n }\n\n this.data.read = true;\n\n this.service.onRead.next(this.data);\n });\n }\n\n isTemplateRef(value): boolean {\n return value instanceof TemplateRef;\n }\n}\n","@if (data.icon) {\n <div class=\"kbq-notification-item__icon-container layout-row layout-align-start-start\">\n @if (data.icon === true) {\n @switch (data.style) {\n @case ('contrast') {\n <i\n kbq-icon=\"kbq-circle-info_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('success') {\n <i\n kbq-icon=\"kbq-circle-check_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('warning') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n @case ('error') {\n <i\n kbq-icon=\"kbq-triangle-exclamation_16\"\n class=\"kbq-notification-item__icon\"\n [color]=\"$any(data.style)\"\n [class]=\"data.iconClass\"\n ></i>\n }\n }\n } @else if (isTemplateRef(data.icon)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.icon)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n }\n </div>\n}\n\n<div class=\"kbq-notification-item__container\">\n @if (data.title) {\n <div\n kbq-title\n class=\"kbq-notification-item__title\"\n [class.kbq-notification-item__title_with-content]=\"data.caption || data.content\"\n >\n @if (isTemplateRef(data.title)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.title)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n <p>{{ data.title }}</p>\n }\n\n <div class=\"kbq-notification-item-time\" [class.kbq-notification-item-time_read]=\"data.read\">\n <div class=\"kbq-notification-item-time__value\">{{ time }}</div>\n <i class=\"kbq-notification-item-time__state\" kbq-icon=\"kbq-circle-xs_16\" [color]=\"'theme'\"></i>\n </div>\n </div>\n }\n\n @if (data.caption) {\n <div\n kbq-title\n [class.kbq-notification-item__text]=\"data.title\"\n [class.kbq-notification-item__title]=\"!data.title\"\n >\n @if (isTemplateRef(data.caption)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.caption)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n {{ data.caption }}\n }\n </div>\n }\n\n @if (data.content) {\n <div class=\"kbq-notification-item__content\">\n @if (isTemplateRef(data.content)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.content)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n {{ data.content }}\n }\n </div>\n }\n\n @if (data.actions) {\n <div class=\"kbq-notification-item__actions\">\n @if (isTemplateRef(data.actions)) {\n <ng-container [ngTemplateOutlet]=\"$any(data.actions)\" [ngTemplateOutletContext]=\"{ $implicit }\" />\n } @else {\n {{ data.actions }}\n }\n </div>\n }\n</div>\n\n<button\n kbq-button\n class=\"kbq-notification-item__remove-button\"\n data-testid=\"kbq-notification-item-remove-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltipArrow]=\"false\"\n [kbqTooltip]=\"center.localeData.remove\"\n [kbqPlacement]=\"popUpPlacements.Right\"\n (click)=\"service.remove(data)\"\n>\n <i kbq-icon=\"kbq-trash_16\"></i>\n</button>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayConfig, ScrollStrategy } from '@angular/cdk/overlay';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\n Output,\n TemplateRef,\n Type,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n numberAttribute,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqBadgeModule } from '@koobiq/components/badge';\nimport { KbqButton, KbqButtonModule } from '@koobiq/components/button';\nimport {\n DateAdapter,\n KBQ_LOCALE_SERVICE,\n KbqOverflowShadowBottom,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqPopUp,\n KbqPopUpPlacementValues,\n KbqPopUpSizeValues,\n KbqPopUpTrigger,\n KbqStickToWindowPlacementValues,\n POSITION_TO_CSS_MAP,\n PopUpPlacements,\n PopUpSizes,\n PopUpTriggers,\n applyPopupMargins,\n ruRULocaleData\n} from '@koobiq/components/core';\nimport { KbqDividerModule } from '@koobiq/components/divider';\nimport { KbqDropdownModule } from '@koobiq/components/dropdown';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { KbqLoaderOverlayModule } from '@koobiq/components/loader-overlay';\nimport { KbqProgressSpinnerModule } from '@koobiq/components/progress-spinner';\nimport { KbqScrollbar, KbqScrollbarModule } from '@koobiq/components/scrollbar';\nimport { KbqToolTipModule } from '@koobiq/components/tooltip';\nimport { BehaviorSubject, Subject, Subscription, merge } from 'rxjs';\nimport { auditTime, distinctUntilChanged, filter, map, pairwise } from 'rxjs/operators';\nimport { KbqNotificationCenterAnimations } from './notification-center-animations';\nimport { KbqNotificationCenterService } from './notification-center.service';\nimport { KbqNotificationItemComponent } from './notification-item';\n\nconst defaultOffsetX = 8;\n\n/** Rate-limit window (ms) for the scroll-to-bottom check that drives infinite scroll. */\nconst SCROLLED_TO_BOTTOM_AUDIT_TIME = 100;\n\n/**default configuration of notification-center */\nexport const KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION = ruRULocaleData.notificationCenter;\n\n/** Injection Token for providing configuration of notification-center */\nexport const KBQ_NOTIFICATION_CENTER_CONFIGURATION = new InjectionToken('KbqNotificationCenterConfiguration');\n\n/** @docs-private */\nexport const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'kbq-notification-center-scroll-strategy'\n);\n\n/** @docs-private */\nexport function kbqNotificationCenterScrollStrategyFactory(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition({ scrollThrottle: 20 });\n}\n\n/** @docs-private */\nexport const KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: kbqNotificationCenterScrollStrategyFactory\n};\n\n/** @docs-private */\n@Component({\n selector: 'kbq-notification-center',\n imports: [\n KbqIconModule,\n KbqBadgeModule,\n KbqScrollbarModule,\n KbqButtonModule,\n KbqDividerModule,\n KbqDropdownModule,\n KbqToolTipModule,\n AsyncPipe,\n KbqNotificationItemComponent,\n KbqLoaderOverlayModule,\n KbqProgressSpinnerModule,\n KbqOverflowShadowContainer,\n KbqOverflowShadowTop,\n KbqOverflowShadowBottom\n ],\n templateUrl: './notification-center.html',\n styleUrls: ['./notification-center.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-notification-center',\n '[class.kbq-notification-center_popover]': 'popoverMode',\n '(keydown.escape)': 'escapeHandler()'\n },\n animations: [KbqNotificationCenterAnimations.state],\n preserveWhitespaces: false\n})\nexport class KbqNotificationCenterComponent extends KbqPopUp implements AfterViewInit {\n /** @docs-private */\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n /** @docs-private */\n protected readonly localeService = inject(KBQ_LOCALE_SERVICE, { optional: true });\n /** @docs-private */\n protected readonly dateAdapter = inject(DateAdapter);\n /** @docs-private */\n protected readonly service = inject(KbqNotificationCenterService);\n\n readonly externalConfiguration = inject(KBQ_NOTIFICATION_CENTER_CONFIGURATION, { optional: true });\n\n configuration;\n\n /** @docs-private */\n protected popoverMode: boolean;\n\n /** Distance in pixels from the bottom of the list at which the next page is requested.\n * @docs-private */\n protected scrolledToBottomOffset: number = 0;\n\n /** Emits on every scroll of the list container; drives the scroll-to-bottom check. */\n private readonly scroll$ = new Subject<void>();\n\n /** localized data\n * @docs-private */\n get localeData() {\n return this.configuration;\n }\n\n /** @docs-private */\n prefix = 'kbq-notification-center';\n /** @docs-private */\n trigger: KbqNotificationCenterTrigger;\n /** @docs-private */\n isTrapFocus: boolean = false;\n\n readonly switcher = viewChild.required<KbqButton>('notificationSwitcher');\n\n /** Scrollable list container; used to measure scroll position for infinite scroll. */\n private readonly scrollContainer = viewChild.required(KbqScrollbar);\n\n get popoverHeight(): string {\n return this._popoverHeight;\n }\n\n set popoverHeight(value: string) {\n this._popoverHeight = value;\n\n this.elementRef.nativeElement.style.height = value;\n }\n\n private _popoverHeight: string;\n\n constructor() {\n super();\n\n this.localeService?.changes.pipe(takeUntilDestroyed()).subscribe(this.updateLocaleParams);\n\n if (!this.localeService) {\n this.initDefaultParams();\n }\n }\n\n ngAfterViewInit() {\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((state) => {\n if (this.offset !== null && state) {\n applyPopupMargins(\n this.renderer,\n this.elementRef.nativeElement,\n this.prefix,\n `${this.offset!.toString()}px`\n );\n }\n\n this.setStickPosition();\n });\n\n this.service.changes\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n\n this.switcher().focus();\n\n this.subscribeToScrolledToBottom();\n this.subscribeToRevealLoadMoreRow();\n }\n\n /** Handles the list container scroll: feeds the scroll-to-bottom check that drives infinite scroll.\n * Overflow shadows are handled declaratively by the `kbqOverflowShadow*` directives.\n * @docs-private */\n protected onContainerScroll(): void {\n this.scroll$.next();\n }\n\n /** Retries loading the next page from the bottom error row.\n * @docs-private */\n protected retryLoadMore(): void {\n // The retry button is about to unmount; keep keyboard focus inside the panel instead of\n // letting it fall back to <body>.\n this.focusScrollContainer();\n\n // Clear the bottom error state here so the spinner and the error row can never be shown at\n // the same time, regardless of what the consumer's `onNextPage` handler does.\n this.service.setLoadMoreErrorMode(false);\n\n this.service.onNextPage.emit();\n }\n\n /**\n * Requests the next page (via `service.onNextPage`) once the list is scrolled to within\n * `scrolledToBottomOffset` pixels of the bottom. Two triggers feed it: the user scrolling, and a\n * page finishing loading. The latter keeps paging when a freshly loaded page is too short to\n * overflow the viewport — otherwise no further scroll event would fire and pagination would\n * stall. Suppressed while a load is in flight, errored, or when there is nothing more to load.\n */\n private subscribeToScrolledToBottom(): void {\n const scrolledToBottom$ = this.scroll$.pipe(\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME),\n map(() => this.isScrolledToBottom()),\n distinctUntilChanged(),\n filter(Boolean)\n );\n\n // Re-measure once a load completes (and the appended items have rendered): if the list still\n // sits at the bottom, continue paging instead of waiting for a scroll event that never comes.\n const loadCompleted$ = this.service.loadingMore.pipe(\n distinctUntilChanged(),\n pairwise(),\n filter(([wasLoading, isLoading]) => wasLoading && !isLoading),\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME),\n filter(() => this.isScrolledToBottom())\n );\n\n merge(scrolledToBottom$, loadCompleted$)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.requestNextPage());\n }\n\n /** Whether the list is scrolled to within `scrolledToBottomOffset` pixels of the bottom. */\n private isScrolledToBottom(): boolean {\n const { scrollTop, clientHeight, scrollHeight } = this.scrollContainer().contentElement().nativeElement;\n\n return scrollHeight - scrollTop - clientHeight <= this.scrolledToBottomOffset;\n }\n\n /** Emits `onNextPage` unless a load is already in flight, errored, or there is nothing more to load. */\n private requestNextPage(): void {\n if (this.service.hasMore.value && !this.service.loadingMore.value && !this.service.loadMoreErrorMode.value) {\n this.service.onNextPage.emit();\n }\n }\n\n /**\n * Reveals the bottom \"load more\" spinner / error row when it first appears. Both rows are appended\n * below the last item and can land outside the viewport (the next page is requested while the user\n * is up to `scrolledToBottomOffset` px above the true bottom). Only a genuine false->true transition\n * reveals the row: the BehaviorSubject's replayed current value is ignored (`pairwise` needs two\n * emissions), so the panel always opens scrolled to the top — reopening it while a load-more error\n * is still set never jumps to the bottom.\n */\n private subscribeToRevealLoadMoreRow(): void {\n const reveal = (source: BehaviorSubject<boolean>) =>\n source.pipe(\n distinctUntilChanged(),\n pairwise(),\n filter(([wasShown, isShown]) => !wasShown && isShown),\n auditTime(SCROLLED_TO_BOTTOM_AUDIT_TIME)\n );\n\n merge(reveal(this.service.loadingMore), reveal(this.service.loadMoreErrorMode))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.scrollToBottom());\n }\n\n /** Scrolls the list container to its bottom so a freshly-appended bottom row becomes visible. */\n private scrollToBottom(): void {\n const { scrollHeight } = this.scrollContainer().contentElement().nativeElement;\n\n this.scrollContainer().scrollTo({ top: scrollHeight });\n }\n\n private focusScrollContainer(): void {\n const element = this.scrollContainer().contentElement().nativeElement;\n\n // tabindex -1 keeps the container out of the Tab order while allowing programmatic focus.\n element.setAttribute('tabindex', '-1');\n element.focus({ preventScroll: true });\n }\n\n /** @docs-private */\n updateClassMap(placement: string, customClass: string, size: KbqPopUpSizeValues) {\n super.updateClassMap(placement, customClass, { [`${this.prefix}_${size}`]: !!size });\n }\n\n /** @docs-private */\n updateTrapFocus(isTrapFocus: boolean): void {\n this.isTrapFocus = isTrapFocus;\n }\n\n /** @docs-private */\n escapeHandler() {\n this.hide(0);\n }\n\n private updateLocaleParams = () => {\n this.configuration = this.externalConfiguration || this.localeService?.getParams('notificationCenter');\n\n this.changeDetectorRef.markForCheck();\n };\n\n private initDefaultParams() {\n this.configuration = KBQ_NOTIFICATION_CENTER_DEFAULT_CONFIGURATION;\n }\n}\n\n@Directive({\n selector: '[kbqNotificationCenterTrigger]',\n host: {\n '[class.kbq-notification-center_open]': 'isOpen',\n '[class.kbq-active]': 'hasClickTrigger && isOpen'\n },\n exportAs: 'kbqNotificationCenterTrigger'\n})\nexport class KbqNotificationCenterTrigger\n extends KbqPopUpTrigger<KbqNotificationCenterComponent>\n implements AfterContentInit\n{\n /** @docs-private */\n protected scrollStrategy: () => ScrollStrategy = inject(KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY);\n /** @docs-private */\n protected readonly service = inject(KbqNotificationCenterService);\n\n // not used\n /** @docs-private */\n arrow: boolean = false;\n /** @docs-private */\n customClass: string;\n /** @docs-private */\n private hasBackdrop: boolean = false;\n /** @docs-private */\n private size: KbqPopUpSizeValues = PopUpSizes.Medium;\n /** @docs-private */\n content: string | TemplateRef<any>;\n /** @docs-private */\n header: string | TemplateRef<any>;\n /** @docs-private */\n footer: string | TemplateRef<any>;\n\n /** Number of unread notifications */\n get unreadItemsCounter() {\n return this.service.unreadItemsCounter;\n }\n\n /** Placement of popUp */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input('kbqNotificationCenterPlacement') placement: KbqPopUpPlacementValues = PopUpPlacements.Right;\n\n /** Class that will be used in the background */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input() backdropClass: string = 'cdk-overlay-transparent-backdrop';\n\n /** Class that will be used in the panel */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input('kbqNotificationCenterPanelClass') panelClass: string;\n\n /** Offset of popUp */\n // TODO: Skipped for migration because:\n // Class of this input is referenced in the signature of another class.\n @Input({ transform: numberAttribute }) offset: number | null = defaultOffsetX;\n\n /** Distance in pixels from the bottom of the list at which the next page is requested via `onNextPage`. */\n @Input({ transform: numberAttribute }) scrolledToBottomOffset: number = 0;\n\n /** Use popover or not */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get popoverMode(): boolean {\n return this._popoverMode;\n }\n\n set popoverMode(value: boolean) {\n this._popoverMode = value;\n\n this.placement = PopUpPlacements.Bottom;\n this.updatePlacementPriority(['bottomCenter', 'bottomLeft', 'bottomRight']);\n }\n\n private _popoverMode: boolean = false;\n\n /** Set height of popover. Default is calc(100vh - 48px). 48px - height of navbar */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get popoverHeight(): string {\n return this._popoverHeight;\n }\n\n set popoverHeight(value: string) {\n this._popoverHeight = value;\n\n if (this.instance?.popoverHeight) {\n this.instance.popoverHeight = value;\n }\n }\n\n private _popoverHeight: string;\n\n /** Whether the trigger is disabled. */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return this._disabled;\n }\n\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n\n if (this._disabled) {\n this.hide();\n }\n }\n\n /**\n * Additionally positions the element relative to the window side (Top, Right, Bottom and Left).\n * If container is specified, the positioning will be relative to it.\n * */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() stickToWindow: KbqStickToWindowPlacementValues;\n\n /** Container for additional positioning, used with stickToWindow */\n // TODO: Skipped for migration because:\n // This input overrides a field from a superclass, while the superclass field\n // is not migrated.\n @Input() container: HTMLElement;\n\n /** @docs-private */\n get hasClickTrigger(): boolean {\n return this.trigger.includes(PopUpTriggers.Click);\n }\n\n /** Emits a change event whenever the placement state changes. */\n @Output('kbqPlacementChange') readonly placementChange = new EventEmitter();\n\n /** Emits a change event whenever the visible state changes. */\n @Output('kbqVisibleChange') readonly visibleChange = new EventEmitter<boolean>();\n\n /** @docs-private */\n trigger: string = `${PopUpTriggers.Click}, ${PopUpTriggers.Keydown}`;\n\n /** @docs-private */\n protected originSelector = '.kbq-notification-center';\n\n /** @docs-private */\n protected get overlayConfig(): OverlayConfig {\n const defaultPanelClass = 'kbq-notification-center__panel';\n\n return {\n panelClass: this.panelClass ? [defaultPanelClass, this.panelClass] : defaultPanelClass,\n hasBackdrop: this.hasBackdrop,\n backdropClass: this.backdropClass\n };\n }\n\n /** @docs-private */\n protected preventClosingByInnerScrollSubscription: Subscription;\n\n constructor() {\n super();\n\n this.updatePlacementPriority(['right', 'rightBottom', 'rightTop']);\n }\n\n ngAfterContentInit(): void {\n this.visibleChange.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((visible: boolean) => {\n if (visible) {\n // eslint-disable-next-line rxjs-x/no-nested-subscribe\n this.preventClosingByInnerScrollSubscription = this.closingActions().subscribe((event) => {\n if (event && event['scrollDispatcher']) {\n this.instance.setStickPosition();\n\n event['kbqPopoverPreventHide'] = true;\n event['type'] = 'click';\n }\n });\n } else {\n this.preventClosingByInnerScrollSubscription?.unsubscribe();\n this.focus();\n }\n });\n }\n\n /** @docs-private */\n updateData() {\n if (!this.instance) return;\n\n this.instance.header = this.header;\n this.instance.content = this.content;\n this.instance.arrow = this.arrow;\n this.instance.offset = this.offset;\n this.instance.footer = this.footer;\n this.instance.popoverMode = this.popoverMode;\n this.instance.popoverHeight = this.popoverHeight;\n this.instance.scrolledToBottomOffset = this.scrolledToBottomOffset;\n\n this.instance.updateTrapFocus(this.trigger !== PopUpTriggers.Focus);\n\n if (this.isOpen) {\n this.updatePosition(true);\n }\n }\n\n /** Updates the current position.\n *\n * @docs-private */\n updatePosition(reapplyPosition: boolean = false) {\n this.overlayRef = this.createOverlay();\n\n const position = (this.overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy)\n .withPositions(this.getAdjustedPositions())\n .withPush(true);\n\n if (reapplyPosition) {\n setTimeout(() => position.reapplyLastPosition());\n }\n }\n\n /** @docs-private */\n getOverlayHandleComponentType(): Type<KbqNotificationCenterComponent> {\n return KbqNotificationCenterComponent;\n }\n\n /** @docs-private */\n updateClassMap(newPlacement: string = this.placement) {\n if (!this.instance) return;\n\n this.instance.updateClassMap(POSITION_TO_CSS_MAP[newPlacement], this.customClass, this.size);\n this.instance.markForCheck();\n }\n\n /** @docs-private */\n closingActions() {\n return merge(\n this.overlayRef!.outsidePointerEvents(),\n this.overlayRef!.backdropClick(),\n this.scrollDispatcher.scrolled()\n );\n }\n}\n","<div class=\"kbq-notification-center-header\">\n <div class=\"kbq-notification-center-title\">\n <div class=\"kbq-notification-center-title__text\">{{ localeData.notifications }}</div>\n <button\n #notificationSwitcher\n #dropdownTrigger=\"kbqDropdownTrigger\"\n kbq-button\n class=\"kbq-notification-center-title__button\"\n data-testid=\"kbq-notification-center-silent-mode-toggle\"\n [kbqDropdownTriggerFor]=\"notificationSwitcherDropdown\"\n [kbqTooltip]=\"service.silentMode.value ? localeData.doNotDisturb : localeData.showPopUpNotifications\"\n [kbqTooltipArrow]=\"false\"\n [kbqPlacement]=\"'right'\"\n [kbqTooltipOffset]=\"4\"\n [kbqTooltipDisabled]=\"dropdownTrigger.opened\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n >\n <i kbq-icon=\"{{ service.silentMode.value ? 'kbq-bell-slash_16' : 'kbq-bell_16' }}\"></i>\n </button>\n </div>\n <div class=\"kbq-notification-center-toolbar\">\n @if (!service.isEmpty) {\n <button\n kbq-button\n class=\"kbq-notification-center-toolbar__button\"\n data-testid=\"kbq-notification-center-remove-all-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n (click)=\"service.removeAll()\"\n >\n <i kbq-icon=\"kbq-trash_16\"></i>\n </button>\n\n <kbq-divider [vertical]=\"true\" />\n }\n\n <button\n kbq-button\n class=\"kbq-notification-center-toolbar__button\"\n data-testid=\"kbq-notification-center-close-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n (click)=\"hide(0)\"\n >\n <i kbq-icon=\"kbq-xmark_16\"></i>\n </button>\n </div>\n</div>\n\n<div\n #notificationCenterContainer=\"kbqOverflowShadowContainer\"\n kbq-scrollbar\n kbqOverflowShadowContainer\n class=\"kbq-notification-center-container\"\n data-testid=\"kbq-notification-center-container\"\n [kbqOverflowShadowBottom]=\"notificationCenterContainer\"\n [shadow]=\"'var(--kbq-shadow-overflow-normal-bottom)'\"\n (onScroll)=\"onContainerScroll()\"\n>\n @if (!service.errorMode.value) {\n @if (!service.loadingMode.value) {\n @for (group of service.groupedItems | async; track group) {\n <div\n class=\"kbq-notification-center-sub-header\"\n data-testid=\"kbq-notification-center-group\"\n [kbqOverflowShadowTop]=\"$first ? notificationCenterContainer : undefined\"\n >\n <div class=\"kbq-notification-center-sub-header__date\">{{ group.title }}</div>\n\n <button\n kbq-button\n class=\"kbq-notification-center-sub-header__button\"\n data-testid=\"kbq-notification-center-remove-group-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'contrast'\"\n [kbqTooltip]=\"localeData.remove\"\n [kbqPlacement]=\"'right'\"\n [kbqTooltipArrow]=\"false\"\n (click)=\"service.removeGroup(group)\"\n >\n <i kbq-icon=\"kbq-trash_16\"></i>\n </button>\n </div>\n\n @for (item of group.items; track item) {\n <kbq-notification-item [data]=\"item\" />\n }\n } @empty {\n @if (!service.loadingMore.value) {\n <div class=\"kbq-notification-center-empty-container\" data-testid=\"kbq-notification-center-empty\">\n <i kbq-icon-item=\"kbq-bell_16\" [big]=\"true\" [color]=\"'contrast-fade'\"></i>\n {{ localeData.noNotifications }}\n </div>\n }\n }\n\n @if (service.loadingMore.value) {\n <div\n class=\"kbq-notification-center-load-more\"\n data-testid=\"kbq-notification-center-load-more\"\n role=\"status\"\n [attr.aria-label]=\"localeData.loadingMore\"\n >\n <kbq-progress-spinner [mode]=\"'indeterminate'\" [size]=\"'compact'\" />\n </div>\n }\n\n @if (service.loadMoreErrorMode.value) {\n <div\n class=\"kbq-notification-center-load-more-error\"\n data-testid=\"kbq-notification-center-load-more-error\"\n role=\"alert\"\n >\n {{ localeData.failedToLoadNotifications }}\n <button\n kbq-button\n data-testid=\"kbq-notification-center-load-more-retry-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'theme'\"\n (click)=\"retryLoadMore()\"\n >\n {{ localeData.repeat }}\n </button>\n </div>\n }\n } @else {\n <kbq-loader-overlay data-testid=\"kbq-notification-center-loader\" [transparent]=\"true\" />\n }\n } @else {\n <div class=\"kbq-notification-center-error-container\" data-testid=\"kbq-notification-center-error\">\n <i kbq-icon-item=\"kbq-bell_16\" [big]=\"true\" [color]=\"'error'\" [fade]=\"true\"></i>\n {{ localeData.failedToLoadNotifications }}\n <button\n kbq-button\n data-testid=\"kbq-notification-center-reload-button\"\n [kbqStyle]=\"'transparent'\"\n [color]=\"'theme'\"\n (click)=\"service.onReload.emit()\"\n >\n {{ localeData.repeat }}\n </button>\n </div>\n }\n</div>\n\n<kbq-dropdown #notificationSwitcherDropdown=\"kbqDropdown\">\n <button\n kbq-dropdown-item\n data-testid=\"kbq-notification-center-show-notifications-button\"\n (click)=\"service.setSilentMode(false)\"\n >\n <i kbq-icon=\"{{ !service.silentMode.value ? 'kbq-circle-xs_16' : '' }}\" [style.min-width.px]=\"16\"></i>\n {{ localeData.showPopUpNotifications }}\n </button>\n <button\n kbq-dropdown-item\n data-testid=\"kbq-notification-center-do-not-disturb-button\"\n (click)=\"service.setSilentMode(true)\"\n >\n <i kbq-icon=\"{{ service.silentMode.value ? 'kbq-circle-xs_16' : '' }}\" [style.min-width.px]=\"16\"></i>\n {{ localeData.doNotDisturb }}\n </button>\n</kbq-dropdown>\n","import { ConfigurableFocusTrapFactory, FOCUS_TRAP_INERT_STRATEGY, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { EmptyFocusTrapStrategy } from '@koobiq/components/core';\nimport {\n KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n} from './notification-center';\nimport { KbqNotificationCenterService } from './notification-center.service';\n\n@NgModule({\n imports: [\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n ],\n providers: [\n KBQ_NOTIFICATION_CENTER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n { provide: FocusTrapFactory, useClass: ConfigurableFocusTrapFactory },\n { provide: FOCUS_TRAP_INERT_STRATEGY, useClass: EmptyFocusTrapStrategy },\n KbqNotificationCenterService\n ],\n exports: [\n KbqNotificationCenterComponent,\n KbqNotificationCenterTrigger\n ]\n})\nexport class KbqNotificationCenterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i4","i3"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { inject, Renderer2, signal, computed, Directive, input, numberAttribute, booleanAttribute, contentChildren, contentChild, output, NgModule } from '@angular/core';
3
3
  import { SharedResizeObserver } from '@angular/cdk/observers/private';
4
+ import { Platform } from '@angular/cdk/platform';
4
5
  import { DOCUMENT } from '@angular/common';
5
6
  import { toSignal, outputToObservable, toObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
7
  import { kbqInjectNativeElement, KBQ_WINDOW } from '@koobiq/components/core';
@@ -14,7 +15,7 @@ import { merge, switchMap, skip, debounceTime } from 'rxjs';
14
15
  class ElementVisibilityManager {
15
16
  constructor() {
16
17
  this.renderer = inject(Renderer2);
17
- this.hiddenState = signal(false);
18
+ this.hiddenState = signal(false, ...(ngDevMode ? [{ debugName: "hiddenState" }] : []));
18
19
  /**
19
20
  * @docs-private
20
21
  */
@@ -24,7 +25,7 @@ class ElementVisibilityManager {
24
25
  *
25
26
  * @docs-private
26
27
  */
27
- this.hidden = computed(() => this.hiddenState());
28
+ this.hidden = computed(() => this.hiddenState(), ...(ngDevMode ? [{ debugName: "hidden" }] : []));
28
29
  }
29
30
  /**
30
31
  * Hides the element.
@@ -46,10 +47,10 @@ class ElementVisibilityManager {
46
47
  this.renderer.removeStyle(this.element, 'position');
47
48
  this.hiddenState.set(false);
48
49
  }
49
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: ElementVisibilityManager, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
50
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.21", type: ElementVisibilityManager, isStandalone: true, host: { properties: { "attr.aria-hidden": "hidden()", "class.kbq-overflow-item-hidden": "hidden()" } }, ngImport: i0 }); }
50
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ElementVisibilityManager, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
51
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: ElementVisibilityManager, isStandalone: true, host: { properties: { "attr.aria-hidden": "hidden()", "class.kbq-overflow-item-hidden": "hidden()" } }, ngImport: i0 }); }
51
52
  }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: ElementVisibilityManager, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: ElementVisibilityManager, decorators: [{
53
54
  type: Directive,
54
55
  args: [{
55
56
  host: {
@@ -63,15 +64,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
63
64
  * Directive for displaying the result of hidden items by the `KbqOverflowItems` directive.
64
65
  */
65
66
  class KbqOverflowItemsResult extends ElementVisibilityManager {
66
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItemsResult, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
67
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.21", type: KbqOverflowItemsResult, isStandalone: true, selector: "[kbqOverflowItemsResult]", host: { classAttribute: "kbq-overflow-items-result" }, exportAs: ["kbqOverflowItemsResult"], usesInheritance: true, ngImport: i0 }); }
67
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsResult, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
68
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.25", type: KbqOverflowItemsResult, isStandalone: true, selector: "[kbqOverflowItemsResult]", host: { classAttribute: "kbq-overflow-items-result" }, exportAs: ["kbqOverflowItemsResult"], usesInheritance: true, ngImport: i0 }); }
68
69
  }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItemsResult, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsResult, decorators: [{
70
71
  type: Directive,
71
72
  args: [{
72
73
  selector: '[kbqOverflowItemsResult]',
73
- exportAs: 'kbqOverflowItemsResult',
74
- host: { class: 'kbq-overflow-items-result' }
74
+ host: { class: 'kbq-overflow-items-result' },
75
+ exportAs: 'kbqOverflowItemsResult'
75
76
  }]
76
77
  }] });
77
78
  /**
@@ -83,17 +84,17 @@ class KbqOverflowItem extends ElementVisibilityManager {
83
84
  /**
84
85
  * Unique identifier for the item.
85
86
  */
86
- this.id = input.required({ alias: 'kbqOverflowItem' });
87
+ this.id = input.required(...(ngDevMode ? [{ debugName: "id", alias: 'kbqOverflowItem' }] : [{ alias: 'kbqOverflowItem' }]));
87
88
  /**
88
89
  * Defines the order in which the item is processed in the overflow container,
89
90
  * without changing its original position in the `QueryList`.
90
91
  */
91
- this.order = input(null, { transform: numberAttribute });
92
+ this.order = input(null, ...(ngDevMode ? [{ debugName: "order", transform: numberAttribute }] : [{ transform: numberAttribute }]));
92
93
  /**
93
94
  * Element with this attribute will be ignored when hiding and will always remain visible.
94
95
  * @default false
95
96
  */
96
- this.alwaysVisible = input(false, { transform: booleanAttribute });
97
+ this.alwaysVisible = input(false, ...(ngDevMode ? [{ debugName: "alwaysVisible", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
97
98
  }
98
99
  /**
99
100
  * @docs-private
@@ -103,20 +104,20 @@ class KbqOverflowItem extends ElementVisibilityManager {
103
104
  return;
104
105
  super.hide();
105
106
  }
106
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItem, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
107
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.21", type: KbqOverflowItem, isStandalone: true, selector: "[kbqOverflowItem]", inputs: { id: { classPropertyName: "id", publicName: "kbqOverflowItem", isSignal: true, isRequired: true, transformFunction: null }, order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null }, alwaysVisible: { classPropertyName: "alwaysVisible", publicName: "alwaysVisible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-overflow-item_always-visible": "alwaysVisible()" }, classAttribute: "kbq-overflow-item" }, exportAs: ["kbqOverflowItem"], usesInheritance: true, ngImport: i0 }); }
107
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItem, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
108
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.25", type: KbqOverflowItem, isStandalone: true, selector: "[kbqOverflowItem]", inputs: { id: { classPropertyName: "id", publicName: "kbqOverflowItem", isSignal: true, isRequired: true, transformFunction: null }, order: { classPropertyName: "order", publicName: "order", isSignal: true, isRequired: false, transformFunction: null }, alwaysVisible: { classPropertyName: "alwaysVisible", publicName: "alwaysVisible", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.kbq-overflow-item_always-visible": "alwaysVisible()" }, classAttribute: "kbq-overflow-item" }, exportAs: ["kbqOverflowItem"], usesInheritance: true, ngImport: i0 }); }
108
109
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItem, decorators: [{
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItem, decorators: [{
110
111
  type: Directive,
111
112
  args: [{
112
113
  selector: '[kbqOverflowItem]',
113
- exportAs: 'kbqOverflowItem',
114
114
  host: {
115
115
  class: 'kbq-overflow-item',
116
116
  '[class.kbq-overflow-item_always-visible]': 'alwaysVisible()'
117
- }
117
+ },
118
+ exportAs: 'kbqOverflowItem'
118
119
  }]
119
- }] });
120
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "kbqOverflowItem", required: true }] }], order: [{ type: i0.Input, args: [{ isSignal: true, alias: "order", required: false }] }], alwaysVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "alwaysVisible", required: false }] }] } });
120
121
  /**
121
122
  * Directive for managing the visibility of items that overflow the container.
122
123
  */
@@ -127,14 +128,15 @@ class KbqOverflowItems {
127
128
  this.renderer = inject(Renderer2);
128
129
  this.document = inject(DOCUMENT);
129
130
  this.window = inject(KBQ_WINDOW);
131
+ this.platform = inject(Platform);
130
132
  /**
131
133
  * `KbqOverflowItem` directive references.
132
134
  */
133
- this.items = contentChildren(KbqOverflowItem);
135
+ this.items = contentChildren(KbqOverflowItem, ...(ngDevMode ? [{ debugName: "items" }] : []));
134
136
  /**
135
137
  * `KbqOverflowItemsResult` directive reference.
136
138
  */
137
- this.result = contentChild(KbqOverflowItemsResult);
139
+ this.result = contentChild(KbqOverflowItemsResult, ...(ngDevMode ? [{ debugName: "result" }] : []));
138
140
  /**
139
141
  * Whether the overflow order should be reversed.
140
142
  *
@@ -145,19 +147,19 @@ class KbqOverflowItems {
145
147
  *
146
148
  * @default false
147
149
  */
148
- this.reverseOverflowOrder = input(false, { transform: booleanAttribute });
150
+ this.reverseOverflowOrder = input(false, ...(ngDevMode ? [{ debugName: "reverseOverflowOrder", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
149
151
  /**
150
152
  * Debounce time for recalculating items visibility.
151
153
  *
152
154
  * @default 0
153
155
  */
154
- this.debounceTime = input(0, { transform: numberAttribute });
156
+ this.debounceTime = input(0, ...(ngDevMode ? [{ debugName: "debounceTime", transform: numberAttribute }] : [{ transform: numberAttribute }]));
155
157
  /**
156
158
  * List of additional elements to observe for resize changes.
157
159
  *
158
160
  * @default document.body
159
161
  */
160
- this.additionalResizeObserverTargets = input(this.document.body);
162
+ this.additionalResizeObserverTargets = input(this.document.body, ...(ngDevMode ? [{ debugName: "additionalResizeObserverTargets" }] : []));
161
163
  /**
162
164
  * Emits when the set of hidden items changes.
163
165
  */
@@ -173,13 +175,13 @@ class KbqOverflowItems {
173
175
  *
174
176
  * @default 'horizontal'
175
177
  */
176
- this.orientation = input('horizontal');
178
+ this.orientation = input('horizontal', ...(ngDevMode ? [{ debugName: "orientation" }] : []));
177
179
  /**
178
180
  * Defines the wrap of the overflow items.
179
181
  *
180
182
  * @default 'nowrap'
181
183
  */
182
- this.wrap = input('nowrap');
184
+ this.wrap = input('nowrap', ...(ngDevMode ? [{ debugName: "wrap" }] : []));
183
185
  this.orientationConfig = {
184
186
  horizontal: {
185
187
  containerSize: (element) => element.getBoundingClientRect().width,
@@ -212,6 +214,8 @@ class KbqOverflowItems {
212
214
  this.setupObservers();
213
215
  }
214
216
  setupObservers() {
217
+ if (!this.platform.isBrowser)
218
+ return;
215
219
  const resizeObservers = merge(this.resizeObserver.observe(this.element), toObservable(this.additionalResizeObserverTargets).pipe(switchMap((targets) => {
216
220
  return Array.isArray(targets)
217
221
  ? merge(...targets.map((target) => this.resizeObserver.observe(target)))
@@ -290,17 +294,17 @@ class KbqOverflowItems {
290
294
  }
291
295
  return undefined;
292
296
  }
293
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItems, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
294
- /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.2.21", type: KbqOverflowItems, isStandalone: true, selector: "[kbqOverflowItems]", inputs: { reverseOverflowOrder: { classPropertyName: "reverseOverflowOrder", publicName: "reverseOverflowOrder", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, additionalResizeObserverTargets: { classPropertyName: "additionalResizeObserverTargets", publicName: "additionalResizeObserverTargets", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changes: "changes" }, host: { classAttribute: "kbq-overflow-items" }, queries: [{ propertyName: "items", predicate: KbqOverflowItem, isSignal: true }, { propertyName: "result", first: true, predicate: KbqOverflowItemsResult, descendants: true, isSignal: true }], exportAs: ["kbqOverflowItems"], ngImport: i0 }); }
297
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItems, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
298
+ /** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.3.25", type: KbqOverflowItems, isStandalone: true, selector: "[kbqOverflowItems]", inputs: { reverseOverflowOrder: { classPropertyName: "reverseOverflowOrder", publicName: "reverseOverflowOrder", isSignal: true, isRequired: false, transformFunction: null }, debounceTime: { classPropertyName: "debounceTime", publicName: "debounceTime", isSignal: true, isRequired: false, transformFunction: null }, additionalResizeObserverTargets: { classPropertyName: "additionalResizeObserverTargets", publicName: "additionalResizeObserverTargets", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changes: "changes" }, host: { classAttribute: "kbq-overflow-items" }, queries: [{ propertyName: "items", predicate: KbqOverflowItem, isSignal: true }, { propertyName: "result", first: true, predicate: KbqOverflowItemsResult, descendants: true, isSignal: true }], exportAs: ["kbqOverflowItems"], ngImport: i0 }); }
295
299
  }
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItems, decorators: [{
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItems, decorators: [{
297
301
  type: Directive,
298
302
  args: [{
299
303
  selector: '[kbqOverflowItems]',
300
- exportAs: 'kbqOverflowItems',
301
- host: { class: 'kbq-overflow-items' }
304
+ host: { class: 'kbq-overflow-items' },
305
+ exportAs: 'kbqOverflowItems'
302
306
  }]
303
- }], ctorParameters: () => [] });
307
+ }], ctorParameters: () => [], propDecorators: { items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => KbqOverflowItem), { isSignal: true }] }], result: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KbqOverflowItemsResult), { isSignal: true }] }], reverseOverflowOrder: [{ type: i0.Input, args: [{ isSignal: true, alias: "reverseOverflowOrder", required: false }] }], debounceTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceTime", required: false }] }], additionalResizeObserverTargets: [{ type: i0.Input, args: [{ isSignal: true, alias: "additionalResizeObserverTargets", required: false }] }], changes: [{ type: i0.Output, args: ["changes"] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], wrap: [{ type: i0.Input, args: [{ isSignal: true, alias: "wrap", required: false }] }] } });
304
308
 
305
309
  const COMPONENTS = [
306
310
  KbqOverflowItems,
@@ -308,15 +312,15 @@ const COMPONENTS = [
308
312
  KbqOverflowItemsResult
309
313
  ];
310
314
  class KbqOverflowItemsModule {
311
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItemsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
312
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItemsModule, imports: [KbqOverflowItems,
315
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
316
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsModule, imports: [KbqOverflowItems,
313
317
  KbqOverflowItem,
314
318
  KbqOverflowItemsResult], exports: [KbqOverflowItems,
315
319
  KbqOverflowItem,
316
320
  KbqOverflowItemsResult] }); }
317
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItemsModule }); }
321
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsModule }); }
318
322
  }
319
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: KbqOverflowItemsModule, decorators: [{
323
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: KbqOverflowItemsModule, decorators: [{
320
324
  type: NgModule,
321
325
  args: [{
322
326
  imports: COMPONENTS,