@bravobit/bb-foundation 0.20.3 → 0.21.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 (471) hide show
  1. package/README.md +47 -47
  2. package/auth/{bravobit-bb-foundation-auth.d.ts → index.d.ts} +5 -5
  3. package/auth/lib/auth.interceptor.d.ts +21 -21
  4. package/auth/lib/auth.module.d.ts +15 -15
  5. package/auth/lib/auth.service.d.ts +59 -59
  6. package/auth/lib/auth.session.d.ts +34 -34
  7. package/auth/lib/directives/authenticated.directive.d.ts +14 -14
  8. package/auth/lib/directives/permission.directive.d.ts +24 -24
  9. package/auth/lib/directives/role.directive.d.ts +16 -16
  10. package/auth/lib/guards/anonymous.guard.d.ts +11 -11
  11. package/auth/lib/guards/authenticated.guard.d.ts +11 -11
  12. package/auth/lib/helpers/jwt.helper.d.ts +8 -8
  13. package/auth/lib/helpers/mapper.helper.d.ts +23 -23
  14. package/auth/lib/interfaces/config.interface.d.ts +12 -12
  15. package/auth/lib/interfaces/mapper.interface.d.ts +19 -19
  16. package/auth/lib/interfaces/provider.interface.d.ts +16 -16
  17. package/auth/lib/interfaces/token.interface.d.ts +11 -11
  18. package/auth/lib/permissions.service.d.ts +14 -14
  19. package/auth/lib/providers/email.provider.d.ts +15 -15
  20. package/auth/lib/providers/verify.provider.d.ts +13 -13
  21. package/auth/lib/tokens/use-authorization.token.d.ts +2 -2
  22. package/auth/public_api.d.ts +18 -18
  23. package/collections/{bravobit-bb-foundation-collections.d.ts → index.d.ts} +5 -5
  24. package/collections/lib/collection.d.ts +43 -43
  25. package/collections/lib/collections.module.d.ts +10 -10
  26. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +34 -34
  27. package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +12 -12
  28. package/collections/lib/components/collections.directive.d.ts +17 -17
  29. package/collections/lib/interfaces/collection.interface.d.ts +26 -26
  30. package/collections/lib/providers/api-collection.provider.d.ts +19 -19
  31. package/collections/lib/providers/collection.provider.d.ts +6 -6
  32. package/collections/lib/providers/local-collection.provider.d.ts +8 -8
  33. package/collections/public_api.d.ts +9 -9
  34. package/controls/{bravobit-bb-foundation-controls.d.ts → index.d.ts} +5 -5
  35. package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +47 -47
  36. package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +22 -18
  37. package/controls/lib/checkbox/checkbox.module.d.ts +9 -9
  38. package/controls/lib/controls.module.d.ts +7 -7
  39. package/controls/public_api.d.ts +4 -4
  40. package/dashboard/{bravobit-bb-foundation-dashboard.d.ts → index.d.ts} +5 -5
  41. package/dashboard/lib/dashboard/dashboard.component.d.ts +19 -19
  42. package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +11 -11
  43. package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +9 -9
  44. package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +11 -11
  45. package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +21 -21
  46. package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +27 -27
  47. package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +16 -16
  48. package/dashboard/lib/dashboard.module.d.ts +16 -16
  49. package/dashboard/public_api.d.ts +8 -8
  50. package/dialog/{bravobit-bb-foundation-dialog.d.ts → index.d.ts} +5 -5
  51. package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +5 -5
  52. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +16 -16
  53. package/dialog/lib/dialog-container/dialog-container.component.d.ts +24 -24
  54. package/dialog/lib/dialog-header/dialog-header.component.d.ts +9 -9
  55. package/dialog/lib/dialog-link/dialog-link.component.d.ts +5 -5
  56. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +12 -12
  57. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +22 -22
  58. package/dialog/lib/dialog.injector.d.ts +8 -8
  59. package/dialog/lib/dialog.insertion.d.ts +8 -8
  60. package/dialog/lib/dialog.interfaces.d.ts +3 -3
  61. package/dialog/lib/dialog.module.d.ts +19 -19
  62. package/dialog/lib/dialog.ref.d.ts +8 -8
  63. package/dialog/lib/dialog.service.d.ts +19 -19
  64. package/dialog/public_api.d.ts +9 -9
  65. package/elements/{bravobit-bb-foundation-elements.d.ts → index.d.ts} +5 -5
  66. package/elements/lib/avatar/avatar.component.d.ts +25 -25
  67. package/elements/lib/button/button.component.d.ts +23 -23
  68. package/elements/lib/checkbox/checkbox.component.d.ts +27 -27
  69. package/elements/lib/date-picker/date-picker.component.d.ts +69 -69
  70. package/elements/lib/directives/addon.directive.d.ts +9 -9
  71. package/elements/lib/directives/autosize.directive.d.ts +18 -18
  72. package/elements/lib/directives/focus-trap.directive.d.ts +17 -17
  73. package/elements/lib/directives/focus.directive.d.ts +14 -14
  74. package/elements/lib/directives/form-submit.directive.d.ts +17 -17
  75. package/elements/lib/directives/input.directive.d.ts +38 -38
  76. package/elements/lib/directives/template.directive.d.ts +10 -10
  77. package/elements/lib/dropdown/dropdown.component.d.ts +21 -21
  78. package/elements/lib/elements.interfaces.d.ts +25 -25
  79. package/elements/lib/elements.module.d.ts +116 -116
  80. package/elements/lib/file-picker/file-picker.component.d.ts +49 -49
  81. package/elements/lib/form-control/form-control.component.d.ts +21 -21
  82. package/elements/lib/form-error/form-error.component.d.ts +29 -29
  83. package/elements/lib/form-group/form-group.component.d.ts +10 -10
  84. package/elements/lib/icon/icon.component.d.ts +22 -22
  85. package/elements/lib/image-picker/image-picker.component.d.ts +38 -38
  86. package/elements/lib/pipes/file-image.pipe.d.ts +13 -13
  87. package/elements/lib/pipes/file-size.pipe.d.ts +8 -8
  88. package/elements/lib/pipes/relative-time.pipe.d.ts +19 -19
  89. package/elements/lib/spinner/spinner.component.d.ts +12 -12
  90. package/elements/lib/tag/tag.component.d.ts +7 -7
  91. package/elements/public_api.d.ts +25 -25
  92. package/esm2020/auth/bravobit-bb-foundation-auth.mjs +4 -4
  93. package/esm2020/auth/lib/auth.interceptor.mjs +93 -93
  94. package/esm2020/auth/lib/auth.module.mjs +54 -54
  95. package/esm2020/auth/lib/auth.service.mjs +281 -281
  96. package/esm2020/auth/lib/auth.session.mjs +131 -131
  97. package/esm2020/auth/lib/directives/authenticated.directive.mjs +31 -31
  98. package/esm2020/auth/lib/directives/permission.directive.mjs +80 -80
  99. package/esm2020/auth/lib/directives/role.directive.mjs +37 -37
  100. package/esm2020/auth/lib/guards/anonymous.guard.mjs +34 -34
  101. package/esm2020/auth/lib/guards/authenticated.guard.mjs +35 -35
  102. package/esm2020/auth/lib/helpers/jwt.helper.mjs +69 -69
  103. package/esm2020/auth/lib/helpers/mapper.helper.mjs +35 -35
  104. package/esm2020/auth/lib/interfaces/config.interface.mjs +3 -3
  105. package/esm2020/auth/lib/interfaces/mapper.interface.mjs +2 -2
  106. package/esm2020/auth/lib/interfaces/provider.interface.mjs +2 -2
  107. package/esm2020/auth/lib/interfaces/token.interface.mjs +2 -2
  108. package/esm2020/auth/lib/permissions.service.mjs +56 -56
  109. package/esm2020/auth/lib/providers/email.provider.mjs +25 -25
  110. package/esm2020/auth/lib/providers/verify.provider.mjs +19 -19
  111. package/esm2020/auth/lib/tokens/use-authorization.token.mjs +3 -3
  112. package/esm2020/auth/public_api.mjs +19 -19
  113. package/esm2020/bravobit-bb-foundation.mjs +4 -4
  114. package/esm2020/collections/bravobit-bb-foundation-collections.mjs +4 -4
  115. package/esm2020/collections/lib/collection.mjs +102 -102
  116. package/esm2020/collections/lib/collections.module.mjs +54 -54
  117. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +123 -123
  118. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +31 -31
  119. package/esm2020/collections/lib/components/collections.directive.mjs +43 -43
  120. package/esm2020/collections/lib/interfaces/collection.interface.mjs +2 -2
  121. package/esm2020/collections/lib/providers/api-collection.provider.mjs +71 -71
  122. package/esm2020/collections/lib/providers/collection.provider.mjs +13 -13
  123. package/esm2020/collections/lib/providers/local-collection.provider.mjs +16 -16
  124. package/esm2020/collections/public_api.mjs +10 -10
  125. package/esm2020/controls/bravobit-bb-foundation-controls.mjs +4 -4
  126. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +153 -153
  127. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +61 -48
  128. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +19 -19
  129. package/esm2020/controls/lib/controls.module.mjs +16 -16
  130. package/esm2020/controls/public_api.mjs +5 -5
  131. package/esm2020/dashboard/bravobit-bb-foundation-dashboard.mjs +4 -4
  132. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +56 -56
  133. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +30 -30
  134. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +31 -31
  135. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +29 -29
  136. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +75 -75
  137. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +99 -99
  138. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +62 -62
  139. package/esm2020/dashboard/lib/dashboard.module.mjs +47 -47
  140. package/esm2020/dashboard/public_api.mjs +9 -9
  141. package/esm2020/dialog/bravobit-bb-foundation-dialog.mjs +4 -4
  142. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +12 -12
  143. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +37 -37
  144. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +153 -153
  145. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +25 -25
  146. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +11 -11
  147. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +46 -46
  148. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +134 -134
  149. package/esm2020/dialog/lib/dialog.injector.mjs +18 -18
  150. package/esm2020/dialog/lib/dialog.insertion.mjs +16 -16
  151. package/esm2020/dialog/lib/dialog.interfaces.mjs +3 -3
  152. package/esm2020/dialog/lib/dialog.module.mjs +68 -70
  153. package/esm2020/dialog/lib/dialog.ref.mjs +22 -22
  154. package/esm2020/dialog/lib/dialog.service.mjs +77 -77
  155. package/esm2020/dialog/public_api.mjs +10 -10
  156. package/esm2020/elements/bravobit-bb-foundation-elements.mjs +4 -4
  157. package/esm2020/elements/lib/avatar/avatar.component.mjs +145 -145
  158. package/esm2020/elements/lib/button/button.component.mjs +61 -61
  159. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +73 -73
  160. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +304 -304
  161. package/esm2020/elements/lib/directives/addon.directive.mjs +29 -29
  162. package/esm2020/elements/lib/directives/autosize.directive.mjs +72 -72
  163. package/esm2020/elements/lib/directives/focus-trap.directive.mjs +77 -77
  164. package/esm2020/elements/lib/directives/focus.directive.mjs +39 -39
  165. package/esm2020/elements/lib/directives/form-submit.directive.mjs +50 -50
  166. package/esm2020/elements/lib/directives/input.directive.mjs +136 -136
  167. package/esm2020/elements/lib/directives/template.directive.mjs +28 -28
  168. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +100 -100
  169. package/esm2020/elements/lib/elements.interfaces.mjs +4 -4
  170. package/esm2020/elements/lib/elements.module.mjs +177 -177
  171. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +236 -236
  172. package/esm2020/elements/lib/form-control/form-control.component.mjs +49 -49
  173. package/esm2020/elements/lib/form-error/form-error.component.mjs +108 -108
  174. package/esm2020/elements/lib/form-group/form-group.component.mjs +18 -18
  175. package/esm2020/elements/lib/icon/icon.component.mjs +102 -102
  176. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +106 -106
  177. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +42 -42
  178. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +28 -28
  179. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +94 -94
  180. package/esm2020/elements/lib/spinner/spinner.component.mjs +25 -25
  181. package/esm2020/elements/lib/tag/tag.component.mjs +18 -18
  182. package/esm2020/elements/public_api.mjs +26 -26
  183. package/esm2020/http/bravobit-bb-foundation-http.mjs +4 -4
  184. package/esm2020/http/lib/classes/http.config.mjs +29 -29
  185. package/esm2020/http/lib/classes/http.error.mjs +20 -20
  186. package/esm2020/http/lib/http.interfaces.mjs +2 -2
  187. package/esm2020/http/lib/http.module.mjs +43 -43
  188. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +50 -50
  189. package/esm2020/http/lib/interceptors/error.interceptor.mjs +32 -32
  190. package/esm2020/http/public_api.mjs +7 -7
  191. package/esm2020/lib/core/miscellaneous/regex.mjs +5 -5
  192. package/esm2020/lib/core/miscellaneous/validator.mjs +85 -85
  193. package/esm2020/lib/core/mixins/can-disable.mjs +16 -16
  194. package/esm2020/lib/core/mixins/can-hide-errors.mjs +16 -16
  195. package/esm2020/lib/core/mixins/can-load.mjs +16 -16
  196. package/esm2020/lib/core/mixins/constructor.mjs +2 -2
  197. package/esm2020/lib/core/mixins/has-error.mjs +16 -16
  198. package/esm2020/lib/core/mixins/is-focused.mjs +16 -16
  199. package/esm2020/lib/core/mixins/is-grouped.mjs +16 -16
  200. package/esm2020/lib/core/mixins/is-readonly.mjs +16 -16
  201. package/esm2020/lib/core/mixins/is-required.mjs +16 -16
  202. package/esm2020/lib/core/services/clipboard.service.mjs +70 -70
  203. package/esm2020/lib/core/services/exif.service.mjs +163 -163
  204. package/esm2020/lib/core/services/file-loader.service.mjs +87 -87
  205. package/esm2020/lib/core/services/image-converter.service.mjs +123 -123
  206. package/esm2020/lib/core/services/languages.service.mjs +74 -74
  207. package/esm2020/lib/core/services/network.service.mjs +55 -55
  208. package/esm2020/lib/core/services/patch.service.mjs +63 -63
  209. package/esm2020/lib/core/services/platform.service.mjs +42 -42
  210. package/esm2020/lib/core/tokens/accept-language.token.mjs +3 -3
  211. package/esm2020/lib/core/tokens/base-url.token.mjs +3 -3
  212. package/esm2020/lib/core/tokens/cookie.token.mjs +3 -3
  213. package/esm2020/lib/core/tokens/location.token.mjs +6 -6
  214. package/esm2020/lib/core/tokens/navigator.token.mjs +6 -6
  215. package/esm2020/lib/core/tokens/window.token.mjs +12 -12
  216. package/esm2020/localize/bravobit-bb-foundation-localize.mjs +4 -4
  217. package/esm2020/localize/lib/functions/date.function.mjs +18 -18
  218. package/esm2020/localize/lib/functions/lowercase.function.mjs +13 -13
  219. package/esm2020/localize/lib/functions/uppercase.function.mjs +13 -13
  220. package/esm2020/localize/lib/handlers/missing.handler.mjs +15 -15
  221. package/esm2020/localize/lib/interfaces/config.interfaces.mjs +7 -7
  222. package/esm2020/localize/lib/interfaces/functions.interfaces.mjs +8 -8
  223. package/esm2020/localize/lib/interfaces/handlers.interfaces.mjs +2 -2
  224. package/esm2020/localize/lib/interfaces/options.interfaces.mjs +6 -6
  225. package/esm2020/localize/lib/localizations/dutch.localization.mjs +45 -45
  226. package/esm2020/localize/lib/localizations/english.localization.mjs +45 -45
  227. package/esm2020/localize/lib/localize.dictionary.mjs +26 -26
  228. package/esm2020/localize/lib/localize.module.mjs +71 -71
  229. package/esm2020/localize/lib/localize.pipe.mjs +49 -49
  230. package/esm2020/localize/lib/localize.service.mjs +207 -207
  231. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +88 -88
  232. package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +28 -28
  233. package/esm2020/localize/lib/views/localize-template.directive.mjs +21 -21
  234. package/esm2020/localize/public_api.mjs +17 -17
  235. package/esm2020/masking/bravobit-bb-foundation-masking.mjs +5 -0
  236. package/esm2020/masking/lib/input-mask.directive.mjs +110 -0
  237. package/esm2020/masking/lib/input-mask.interface.mjs +2 -0
  238. package/esm2020/masking/lib/masking.module.mjs +16 -0
  239. package/esm2020/masking/lib/masking.service.mjs +94 -0
  240. package/esm2020/masking/public_api.mjs +5 -0
  241. package/esm2020/notifications/bravobit-bb-foundation-notifications.mjs +4 -4
  242. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +100 -100
  243. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +47 -47
  244. package/esm2020/notifications/lib/notifications.animations.mjs +28 -28
  245. package/esm2020/notifications/lib/notifications.injector.mjs +18 -18
  246. package/esm2020/notifications/lib/notifications.interfaces.mjs +20 -20
  247. package/esm2020/notifications/lib/notifications.module.mjs +30 -30
  248. package/esm2020/notifications/lib/notifications.service.mjs +145 -145
  249. package/esm2020/notifications/public_api.mjs +4 -4
  250. package/esm2020/public_api.mjs +29 -29
  251. package/esm2020/recaptcha/bravobit-bb-foundation-recaptcha.mjs +4 -4
  252. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +185 -185
  253. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +90 -90
  254. package/esm2020/recaptcha/lib/recaptcha.interface.mjs +3 -3
  255. package/esm2020/recaptcha/lib/recaptcha.module.mjs +27 -27
  256. package/esm2020/recaptcha/public_api.mjs +5 -5
  257. package/esm2020/rxjs/bravobit-bb-foundation-rxjs.mjs +4 -4
  258. package/esm2020/rxjs/lib/operators/combine-latest-map.operator.mjs +10 -10
  259. package/esm2020/rxjs/lib/operators/filter-nil.operator.mjs +5 -5
  260. package/esm2020/rxjs/public_api.mjs +3 -3
  261. package/esm2020/storage/bravobit-bb-foundation-storage.mjs +4 -4
  262. package/esm2020/storage/lib/interfaces/attributes.interface.mjs +2 -2
  263. package/esm2020/storage/lib/interfaces/memory.interface.mjs +2 -2
  264. package/esm2020/storage/lib/interfaces/strategy.interface.mjs +2 -2
  265. package/esm2020/storage/lib/storage.service.mjs +109 -109
  266. package/esm2020/storage/lib/strategies/cookie-storage.strategy.mjs +142 -142
  267. package/esm2020/storage/lib/strategies/memory-storage.strategy.mjs +56 -56
  268. package/esm2020/storage/lib/strategies/polyfill-storage.strategy.mjs +102 -102
  269. package/esm2020/storage/public_api.mjs +8 -8
  270. package/esm2020/table/bravobit-bb-foundation-table.mjs +4 -4
  271. package/esm2020/table/lib/components/table/table.component.mjs +191 -191
  272. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +11 -11
  273. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +131 -131
  274. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +136 -136
  275. package/esm2020/table/lib/data/datasource.data.mjs +32 -32
  276. package/esm2020/table/lib/data/generic.data.mjs +72 -72
  277. package/esm2020/table/lib/interfaces/datasource.interface.mjs +2 -2
  278. package/esm2020/table/lib/interfaces/table.interfaces.mjs +2 -2
  279. package/esm2020/table/lib/table.module.mjs +42 -42
  280. package/esm2020/table/public_api.mjs +10 -10
  281. package/esm2020/theming/bravobit-bb-foundation-theming.mjs +5 -0
  282. package/esm2020/theming/lib/themes/checkbox-group.theme.mjs +2 -0
  283. package/esm2020/theming/lib/themes/checkbox.theme.mjs +2 -0
  284. package/esm2020/theming/lib/theming.interface.mjs +3 -0
  285. package/esm2020/theming/lib/theming.module.mjs +38 -0
  286. package/esm2020/theming/lib/theming.service.mjs +100 -0
  287. package/esm2020/theming/public_api.mjs +4 -0
  288. package/fesm2015/bravobit-bb-foundation-auth.mjs +930 -930
  289. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
  290. package/fesm2015/bravobit-bb-foundation-collections.mjs +423 -423
  291. package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
  292. package/fesm2015/bravobit-bb-foundation-controls.mjs +229 -216
  293. package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
  294. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +383 -383
  295. package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  296. package/fesm2015/bravobit-bb-foundation-dialog.mjs +541 -543
  297. package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
  298. package/fesm2015/bravobit-bb-foundation-elements.mjs +1977 -1977
  299. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
  300. package/fesm2015/bravobit-bb-foundation-http.mjs +156 -156
  301. package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
  302. package/fesm2015/bravobit-bb-foundation-localize.mjs +608 -608
  303. package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
  304. package/fesm2015/bravobit-bb-foundation-masking.mjs +235 -0
  305. package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -0
  306. package/fesm2015/bravobit-bb-foundation-notifications.mjs +349 -349
  307. package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
  308. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +290 -290
  309. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  310. package/fesm2015/bravobit-bb-foundation-rxjs.mjs +7 -7
  311. package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  312. package/fesm2015/bravobit-bb-foundation-storage.mjs +401 -401
  313. package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
  314. package/fesm2015/bravobit-bb-foundation-table.mjs +575 -575
  315. package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
  316. package/fesm2015/bravobit-bb-foundation-theming.mjs +153 -0
  317. package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -0
  318. package/fesm2015/bravobit-bb-foundation.mjs +859 -859
  319. package/fesm2015/bravobit-bb-foundation.mjs.map +1 -1
  320. package/fesm2020/bravobit-bb-foundation-auth.mjs +882 -882
  321. package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
  322. package/fesm2020/bravobit-bb-foundation-collections.mjs +413 -413
  323. package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
  324. package/fesm2020/bravobit-bb-foundation-controls.mjs +227 -214
  325. package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
  326. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +371 -371
  327. package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  328. package/fesm2020/bravobit-bb-foundation-dialog.mjs +540 -542
  329. package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
  330. package/fesm2020/bravobit-bb-foundation-elements.mjs +1934 -1934
  331. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
  332. package/fesm2020/bravobit-bb-foundation-http.mjs +148 -148
  333. package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
  334. package/fesm2020/bravobit-bb-foundation-localize.mjs +587 -587
  335. package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
  336. package/fesm2020/bravobit-bb-foundation-masking.mjs +223 -0
  337. package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -0
  338. package/fesm2020/bravobit-bb-foundation-notifications.mjs +347 -347
  339. package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
  340. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +280 -280
  341. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  342. package/fesm2020/bravobit-bb-foundation-rxjs.mjs +10 -10
  343. package/fesm2020/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  344. package/fesm2020/bravobit-bb-foundation-storage.mjs +396 -396
  345. package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
  346. package/fesm2020/bravobit-bb-foundation-table.mjs +564 -564
  347. package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
  348. package/fesm2020/bravobit-bb-foundation-theming.mjs +143 -0
  349. package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -0
  350. package/fesm2020/bravobit-bb-foundation.mjs +831 -831
  351. package/fesm2020/bravobit-bb-foundation.mjs.map +1 -1
  352. package/http/{bravobit-bb-foundation-http.d.ts → index.d.ts} +5 -5
  353. package/http/lib/classes/http.config.d.ts +9 -9
  354. package/http/lib/classes/http.error.d.ts +7 -7
  355. package/http/lib/http.interfaces.d.ts +12 -12
  356. package/http/lib/http.module.d.ts +15 -15
  357. package/http/lib/interceptors/base-url.interceptor.d.ts +15 -15
  358. package/http/lib/interceptors/error.interceptor.d.ts +11 -11
  359. package/http/public_api.d.ts +6 -6
  360. package/{bravobit-bb-foundation.d.ts → index.d.ts} +5 -5
  361. package/lib/core/miscellaneous/regex.d.ts +4 -4
  362. package/lib/core/miscellaneous/validator.d.ts +13 -13
  363. package/lib/core/mixins/can-disable.d.ts +6 -6
  364. package/lib/core/mixins/can-hide-errors.d.ts +6 -6
  365. package/lib/core/mixins/can-load.d.ts +6 -6
  366. package/lib/core/mixins/constructor.d.ts +1 -1
  367. package/lib/core/mixins/has-error.d.ts +6 -6
  368. package/lib/core/mixins/is-focused.d.ts +6 -6
  369. package/lib/core/mixins/is-grouped.d.ts +6 -6
  370. package/lib/core/mixins/is-readonly.d.ts +6 -6
  371. package/lib/core/mixins/is-required.d.ts +6 -6
  372. package/lib/core/services/clipboard.service.d.ts +18 -18
  373. package/lib/core/services/exif.service.d.ts +15 -15
  374. package/lib/core/services/file-loader.service.d.ts +13 -13
  375. package/lib/core/services/image-converter.service.d.ts +21 -21
  376. package/lib/core/services/languages.service.d.ts +16 -16
  377. package/lib/core/services/network.service.d.ts +14 -14
  378. package/lib/core/services/patch.service.d.ts +16 -16
  379. package/lib/core/services/platform.service.d.ts +18 -18
  380. package/lib/core/tokens/accept-language.token.d.ts +2 -2
  381. package/lib/core/tokens/base-url.token.d.ts +2 -2
  382. package/lib/core/tokens/cookie.token.d.ts +2 -2
  383. package/lib/core/tokens/location.token.d.ts +2 -2
  384. package/lib/core/tokens/navigator.token.d.ts +2 -2
  385. package/lib/core/tokens/window.token.d.ts +2 -2
  386. package/localize/{bravobit-bb-foundation-localize.d.ts → index.d.ts} +5 -5
  387. package/localize/lib/functions/date.function.d.ts +5 -5
  388. package/localize/lib/functions/lowercase.function.d.ts +5 -5
  389. package/localize/lib/functions/uppercase.function.d.ts +5 -5
  390. package/localize/lib/handlers/missing.handler.d.ts +6 -6
  391. package/localize/lib/interfaces/config.interfaces.d.ts +18 -18
  392. package/localize/lib/interfaces/functions.interfaces.d.ts +9 -9
  393. package/localize/lib/interfaces/handlers.interfaces.d.ts +6 -6
  394. package/localize/lib/interfaces/options.interfaces.d.ts +10 -10
  395. package/localize/lib/localizations/dutch.localization.d.ts +44 -44
  396. package/localize/lib/localizations/english.localization.d.ts +44 -44
  397. package/localize/lib/localize.dictionary.d.ts +7 -7
  398. package/localize/lib/localize.module.d.ts +17 -17
  399. package/localize/lib/localize.pipe.d.ts +12 -12
  400. package/localize/lib/localize.service.d.ts +40 -40
  401. package/localize/lib/views/localize-string/localize-string.component.d.ts +23 -23
  402. package/localize/lib/views/localize-template-or-string.directive.d.ts +10 -10
  403. package/localize/lib/views/localize-template.directive.d.ts +9 -9
  404. package/localize/public_api.d.ts +16 -16
  405. package/masking/index.d.ts +5 -0
  406. package/masking/lib/input-mask.directive.d.ts +36 -0
  407. package/masking/lib/input-mask.interface.d.ts +20 -0
  408. package/masking/lib/masking.module.d.ts +7 -0
  409. package/masking/lib/masking.service.d.ts +12 -0
  410. package/masking/public_api.d.ts +4 -0
  411. package/notifications/{bravobit-bb-foundation-notifications.d.ts → index.d.ts} +5 -5
  412. package/notifications/lib/notifications-item/notifications-item.component.d.ts +34 -34
  413. package/notifications/lib/notifications-list/notifications-list.component.d.ts +16 -16
  414. package/notifications/lib/notifications.animations.d.ts +1 -1
  415. package/notifications/lib/notifications.injector.d.ts +8 -8
  416. package/notifications/lib/notifications.interfaces.d.ts +49 -49
  417. package/notifications/lib/notifications.module.d.ts +13 -13
  418. package/notifications/lib/notifications.service.d.ts +34 -34
  419. package/notifications/public_api.d.ts +3 -3
  420. package/package.json +36 -19
  421. package/public_api.d.ts +25 -25
  422. package/recaptcha/{bravobit-bb-foundation-recaptcha.d.ts → index.d.ts} +5 -5
  423. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +47 -47
  424. package/recaptcha/lib/recaptcha-loader.service.d.ts +22 -22
  425. package/recaptcha/lib/recaptcha.interface.d.ts +14 -14
  426. package/recaptcha/lib/recaptcha.module.d.ts +10 -10
  427. package/recaptcha/public_api.d.ts +4 -4
  428. package/rxjs/{bravobit-bb-foundation-rxjs.d.ts → index.d.ts} +5 -5
  429. package/rxjs/lib/operators/combine-latest-map.operator.d.ts +8 -8
  430. package/rxjs/lib/operators/filter-nil.operator.d.ts +1 -1
  431. package/rxjs/public_api.d.ts +2 -2
  432. package/storage/{bravobit-bb-foundation-storage.d.ts → index.d.ts} +5 -5
  433. package/storage/lib/interfaces/attributes.interface.d.ts +13 -13
  434. package/storage/lib/interfaces/memory.interface.d.ts +7 -7
  435. package/storage/lib/interfaces/strategy.interface.d.ts +17 -17
  436. package/storage/lib/storage.service.d.ts +26 -26
  437. package/storage/lib/strategies/cookie-storage.strategy.d.ts +20 -20
  438. package/storage/lib/strategies/memory-storage.strategy.d.ts +11 -11
  439. package/storage/lib/strategies/polyfill-storage.strategy.d.ts +15 -15
  440. package/storage/public_api.d.ts +7 -7
  441. package/table/{bravobit-bb-foundation-table.d.ts → index.d.ts} +5 -5
  442. package/table/lib/components/table/table.component.d.ts +56 -56
  443. package/table/lib/components/table-cell/table-cell.component.d.ts +5 -5
  444. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +29 -29
  445. package/table/lib/components/table-pager/table-pager.component.d.ts +41 -41
  446. package/table/lib/data/datasource.data.d.ts +14 -14
  447. package/table/lib/data/generic.data.d.ts +23 -23
  448. package/table/lib/interfaces/datasource.interface.d.ts +17 -17
  449. package/table/lib/interfaces/table.interfaces.d.ts +1 -1
  450. package/table/lib/table.module.d.ts +14 -14
  451. package/table/public_api.d.ts +9 -9
  452. package/theming/index.d.ts +5 -0
  453. package/theming/lib/themes/checkbox-group.theme.d.ts +5 -0
  454. package/theming/lib/themes/checkbox.theme.d.ts +19 -0
  455. package/theming/lib/theming.interface.d.ts +14 -0
  456. package/theming/lib/theming.module.d.ts +13 -0
  457. package/theming/lib/theming.service.d.ts +24 -0
  458. package/theming/public_api.d.ts +3 -0
  459. package/auth/package.json +0 -10
  460. package/collections/package.json +0 -10
  461. package/controls/package.json +0 -10
  462. package/dashboard/package.json +0 -10
  463. package/dialog/package.json +0 -10
  464. package/elements/package.json +0 -10
  465. package/http/package.json +0 -10
  466. package/localize/package.json +0 -10
  467. package/notifications/package.json +0 -10
  468. package/recaptcha/package.json +0 -10
  469. package/rxjs/package.json +0 -10
  470. package/storage/package.json +0 -10
  471. package/table/package.json +0 -10
@@ -1,376 +1,376 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, HostBinding, Injectable, Optional, NgModule } from '@angular/core';
3
3
  import { trigger, transition, query, group, style, stagger, animate } from '@angular/animations';
4
- import * as i1 from '@bravobit/bb-foundation';
5
4
  import * as i2 from '@angular/common';
6
5
  import { CommonModule } from '@angular/common';
6
+ import * as i1 from '@bravobit/bb-foundation';
7
7
  import * as i2$1 from '@bravobit/bb-foundation/localize';
8
8
  import { LocalizeModule } from '@bravobit/bb-foundation/localize';
9
9
  import { BehaviorSubject } from 'rxjs';
10
10
  import { share } from 'rxjs/operators';
11
11
 
12
- var NotificationType;
13
- (function (NotificationType) {
14
- NotificationType["Success"] = "success";
15
- NotificationType["Error"] = "error";
16
- NotificationType["Warning"] = "warning";
17
- NotificationType["Info"] = "info";
18
- NotificationType["Custom"] = "custom";
19
- })(NotificationType || (NotificationType = {}));
20
- class NotificationsConfig {
21
- }
22
- var NotificationsPosition;
23
- (function (NotificationsPosition) {
24
- NotificationsPosition["TopRight"] = "flex-start|flex-end";
25
- NotificationsPosition["BottomRight"] = "flex-end|flex-end";
26
- NotificationsPosition["TopLeft"] = "flex-start|flex-start";
27
- NotificationsPosition["BottomLeft"] = "flex-end|flex-start";
28
- })(NotificationsPosition || (NotificationsPosition = {}));
29
- class NotificationsData {
12
+ var NotificationType;
13
+ (function (NotificationType) {
14
+ NotificationType["Success"] = "success";
15
+ NotificationType["Error"] = "error";
16
+ NotificationType["Warning"] = "warning";
17
+ NotificationType["Info"] = "info";
18
+ NotificationType["Custom"] = "custom";
19
+ })(NotificationType || (NotificationType = {}));
20
+ class NotificationsConfig {
21
+ }
22
+ var NotificationsPosition;
23
+ (function (NotificationsPosition) {
24
+ NotificationsPosition["TopRight"] = "flex-start|flex-end";
25
+ NotificationsPosition["BottomRight"] = "flex-end|flex-end";
26
+ NotificationsPosition["TopLeft"] = "flex-start|flex-start";
27
+ NotificationsPosition["BottomLeft"] = "flex-end|flex-start";
28
+ })(NotificationsPosition || (NotificationsPosition = {}));
29
+ class NotificationsData {
30
30
  }
31
31
 
32
- const s = '250ms cubic-bezier(0, 0, .2, 1)';
33
- const l = '400ms cubic-bezier(0, 0, .2, 1)';
34
- const notificationAnimation = trigger('notificationListAnimation', [
35
- transition('* => *', [
36
- query(':enter', group([
37
- // 1. Set the initial state.
38
- style({ height: 0, opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)' }),
39
- // 2. Start the animation to show the item.
40
- stagger(0, [
41
- animate(s, style({ height: '*' })),
42
- animate(l, style({ opacity: 1, transform: 'translateX(0) scale(0.95)' })),
43
- animate(s, style({ transform: 'translateX(0) scale(1)' }))
44
- ])
45
- ]), { optional: true }),
46
- query(':leave', group([
47
- // 1. Set the initial state.
48
- style({ height: '*', opacity: 1, transform: 'translateX(0) scale(1)' }),
49
- // 2. Start the animation to hide the item.
50
- stagger(0, [
51
- animate(s, style({ transform: 'translateX(0) scale(0.95)' })),
52
- animate(l, style({ opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)' })),
53
- animate(s, style({ height: 0 }))
54
- ])
55
- ]), { optional: true })
56
- ])
32
+ const s = '250ms cubic-bezier(0, 0, .2, 1)';
33
+ const l = '400ms cubic-bezier(0, 0, .2, 1)';
34
+ const notificationAnimation = trigger('notificationListAnimation', [
35
+ transition('* => *', [
36
+ query(':enter', group([
37
+ // 1. Set the initial state.
38
+ style({ height: 0, opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)' }),
39
+ // 2. Start the animation to show the item.
40
+ stagger(0, [
41
+ animate(s, style({ height: '*' })),
42
+ animate(l, style({ opacity: 1, transform: 'translateX(0) scale(0.95)' })),
43
+ animate(s, style({ transform: 'translateX(0) scale(1)' }))
44
+ ])
45
+ ]), { optional: true }),
46
+ query(':leave', group([
47
+ // 1. Set the initial state.
48
+ style({ height: '*', opacity: 1, transform: 'translateX(0) scale(1)' }),
49
+ // 2. Start the animation to hide the item.
50
+ stagger(0, [
51
+ animate(s, style({ transform: 'translateX(0) scale(0.95)' })),
52
+ animate(l, style({ opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)' })),
53
+ animate(s, style({ height: 0 }))
54
+ ])
55
+ ]), { optional: true })
56
+ ])
57
57
  ]);
58
58
 
59
- class BbNotificationsItem {
60
- constructor(_zone, _platform, _changeDetection) {
61
- this._zone = _zone;
62
- this._platform = _platform;
63
- this._changeDetection = _changeDetection;
64
- // Data.
65
- this._progress = 0;
66
- this._count = 0;
67
- // Data.
68
- this._radius = 19;
69
- this._circumference = this._radius * 2 * Math.PI;
70
- this.callActionAndDestroy = (notification, action) => {
71
- // Perform the callback (if it exists).
72
- action && action.callback && action.callback();
73
- // Call the destroy method (if it exists).
74
- notification && notification.destroy && notification.destroy();
75
- };
76
- this.instance = () => {
77
- // Calculate the difference.
78
- this._difference = (Date.now() - this._startTime) - (this._count * this._speed);
79
- // Add up the count.
80
- if (this._count++ === this._steps) {
81
- this.notification.destroy();
82
- }
83
- // Add the steps to the progress.
84
- this._progress += 100 / this._steps;
85
- // Set a new timer.
86
- this._timer = this.setTimeout(this.instance, this._speed - this._difference);
87
- // Run a new change detection cycle.
88
- this._zone.run(() => this._changeDetection.detectChanges());
89
- };
90
- this.setTimeout = (method, timeout) => {
91
- // Check if the window and method exist.
92
- if (!window || !window.setTimeout) {
93
- return null;
94
- }
95
- return window.setTimeout(method, timeout);
96
- };
97
- }
98
- get getClass() {
99
- return `bb-notifications-item ${this.notification.type}`;
100
- }
101
- get progressStrokeArray() {
102
- const value = Math.floor(this._circumference);
103
- return `${value}, ${value}`;
104
- }
105
- get progressStrokeOffset() {
106
- return Math.floor(this._circumference - this._progress / 100 * this._circumference);
107
- }
108
- get isContentString() {
109
- return typeof this.notification.content === 'string';
110
- }
111
- ngOnInit() {
112
- // Check if the notification timeout is not 0 and the platform is a browser.
113
- if (this.notification.timeout <= 0 || !this._platform.isBrowser) {
114
- this.notification.dismiss = true;
115
- return;
116
- }
117
- // Start the timeout.
118
- this.startTimeout();
119
- }
120
- ngOnDestroy() {
121
- // Clear the timeout if it was set.
122
- this._timer && window && window.clearTimeout && window.clearTimeout(this._timer);
123
- }
124
- startTimeout() {
125
- // Calculate the steps of the timeout.
126
- this._steps = this.notification.timeout / 10;
127
- // Calculate the speed of the timeout.
128
- this._speed = this.notification.timeout / this._steps;
129
- // Get the start time.
130
- this._startTime = Date.now();
131
- // Set a new timer outside of Angular.
132
- this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));
133
- }
134
- }
135
- BbNotificationsItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: BbNotificationsItem, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
136
- BbNotificationsItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: BbNotificationsItem, selector: "bb-notifications-item", inputs: { notification: "notification", dismissButtonText: "dismissButtonText" }, host: { attributes: { "role": "alert" }, properties: { "class": "this.getClass" } }, viewQueries: [{ propertyName: "progressElementRef", first: true, predicate: ["progress"], descendants: true }], ngImport: i0, template: "<div class=\"notification-content-wrapper\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\n", styles: [".bb-notifications-item{display:flex;border-radius:4px;flex-direction:column;background-color:#fff;border:1px solid #d6dbe0}.bb-notifications-item.success .notification-icon-wrapper{color:#2dc05d;background-color:#ebfaf0}.bb-notifications-item.success .notification-progress-circle{stroke:#36d068}.bb-notifications-item.error .notification-icon-wrapper{color:#f43e3e;background-color:#feeeee}.bb-notifications-item.error .notification-progress-circle{stroke:#f55656}.bb-notifications-item.warning .notification-icon-wrapper{color:#f1ae00;background-color:#fff8e7}.bb-notifications-item.warning .notification-progress-circle{stroke:#ffbc0b}.bb-notifications-item.info .notification-icon-wrapper{color:#099bf6;background-color:#e9f6fe}.bb-notifications-item.info .notification-progress-circle{stroke:#22a5f7}.bb-notifications-item.custom .notification-icon-wrapper{color:#657385;background-color:#f3f5f6}.bb-notifications-item.custom .notification-progress-circle{stroke:#657385}.notification-content-wrapper{padding:20px;display:flex;align-items:center}.notification-icon-wrapper{width:40px;height:40px;display:flex;-webkit-user-select:none;user-select:none;position:relative;border-radius:50%;align-items:center;justify-content:center;color:#657385;background-color:#f3f5f6}.notification-icon{width:100%;height:100%;padding:10px;fill:currentColor}.notification-content{flex:1;font-size:14px;line-height:1.5;font-weight:500;margin-left:20px;color:#000000d9}.notification-content i{font-style:italic}.notification-content,.notification-actions-button{font-family:inherit}.notification-actions{display:flex;margin:0 20px;-webkit-user-select:none;user-select:none;border-top:1px solid #f3f5f6}.notification-actions-button{flex:1;border:none;color:#22a5f7;cursor:pointer;font-size:14px;font-weight:500;padding:12px 2px;text-align:center;background-color:transparent}.notification-actions-button:hover>.notification-actions-button-highlight,.notification-actions-button:focus>.notification-actions-button-highlight{background-color:#22a5f71a}.notification-actions-button:active>.notification-actions-button-highlight{background-color:#22a5f733}.notification-actions-button.destructive{color:#f55656}.notification-actions-button.destructive:hover>.notification-actions-button-highlight,.notification-actions-button.destructive:focus>.notification-actions-button-highlight{background-color:#f556561a}.notification-actions-button.destructive:active>.notification-actions-button-highlight{background-color:#f5565633}.notification-actions-button-highlight{padding:4px 12px;border-radius:12px;display:inline-flex;transition:background-color .15s cubic-bezier(0,0,.2,1)}.notification-progress-ring{top:0;left:0;right:0;bottom:0;width:100%;height:100%;position:absolute}.notification-progress-circle{transform:rotate(-90deg);transform-origin:50% 50%;stroke:#657385}\n"], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "bbLocalize": i2$1.BbLocalize }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
137
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: BbNotificationsItem, decorators: [{
138
- type: Component,
139
- args: [{ selector: 'bb-notifications-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
140
- 'role': 'alert'
141
- }, template: "<div class=\"notification-content-wrapper\">\n <!--\n The icon for the notification.\n\n The icon is reflected by the type of the\n notification. Same goes for the color and\n background-color.\n -->\n <div [style.color]=\"notification?.color\"\n [style.background-color]=\"notification?.backgroundColor\"\n class=\"notification-icon-wrapper\">\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 16 19.5\"\n class=\"notification-icon\">\n <path\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\n </path>\n </svg>\n\n <!--\n The circular progress for the notification.\n\n The progress is only visible when a timeout is\n set. The progress adapts to the time remaining\n for the notification.\n -->\n <svg *ngIf=\"notification?.timeout > 0\"\n class=\"notification-progress-ring\"\n viewBox=\"0 0 40 40\"\n role=\"progressbar\">\n <circle #progress\n [attr.stroke-dasharray]=\"progressStrokeArray\"\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\n [style.stroke]=\"notification?.color\"\n class=\"notification-progress-circle\"\n stroke-width=\"2\"\n fill=\"transparent\"\n r=\"19\"\n cx=\"20\"\n cy=\"20\">\n </circle>\n </svg>\n </div>\n\n <!--\n The content for the notification.\n\n This displays a string or a template based\n on the given parameter by the user.\n -->\n <div class=\"notification-content\">\n <ng-container *ngIf=\"isContentString; else templateContent\"\n [ngSwitch]=\"notification?.localize\">\n <ng-container *ngSwitchCase=\"true\">\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ notification?.content }}\n </ng-container>\n </ng-container>\n </div>\n</div>\n\n<!--\n The actions of the notification.\n\n All actions are displayed here and are\n based on the actions array the user provided.\n-->\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\n class=\"notification-actions\">\n <button *ngFor=\"let action of notification?.actions\"\n (click)=\"callActionAndDestroy(notification, action)\"\n type=\"button\"\n [class.destructive]=\"action?.type === 'cancel'\"\n class=\"notification-actions-button\">\n <span [ngSwitch]=\"notification?.localize\"\n class=\"notification-actions-button-highlight\">\n <ng-container *ngSwitchCase=\"true\">\n {{ action?.title | bbLocalize:{data: notification?.data} }}\n </ng-container>\n <ng-container *ngSwitchDefault>\n {{ action?.title }}\n </ng-container>\n </span>\n </button>\n <button *ngIf=\"notification?.dismiss\"\n (click)=\"notification?.destroy()\"\n class=\"notification-actions-button destructive\"\n type=\"button\">\n <span class=\"notification-actions-button-highlight\">\n {{ notification?.dismissText || dismissButtonText }}\n </span>\n </button>\n</div>\n\n<!--\n The outlet for the notification content template ref.\n-->\n<ng-template #templateContent>\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\n</ng-template>\n", styles: [".bb-notifications-item{display:flex;border-radius:4px;flex-direction:column;background-color:#fff;border:1px solid #d6dbe0}.bb-notifications-item.success .notification-icon-wrapper{color:#2dc05d;background-color:#ebfaf0}.bb-notifications-item.success .notification-progress-circle{stroke:#36d068}.bb-notifications-item.error .notification-icon-wrapper{color:#f43e3e;background-color:#feeeee}.bb-notifications-item.error .notification-progress-circle{stroke:#f55656}.bb-notifications-item.warning .notification-icon-wrapper{color:#f1ae00;background-color:#fff8e7}.bb-notifications-item.warning .notification-progress-circle{stroke:#ffbc0b}.bb-notifications-item.info .notification-icon-wrapper{color:#099bf6;background-color:#e9f6fe}.bb-notifications-item.info .notification-progress-circle{stroke:#22a5f7}.bb-notifications-item.custom .notification-icon-wrapper{color:#657385;background-color:#f3f5f6}.bb-notifications-item.custom .notification-progress-circle{stroke:#657385}.notification-content-wrapper{padding:20px;display:flex;align-items:center}.notification-icon-wrapper{width:40px;height:40px;display:flex;-webkit-user-select:none;user-select:none;position:relative;border-radius:50%;align-items:center;justify-content:center;color:#657385;background-color:#f3f5f6}.notification-icon{width:100%;height:100%;padding:10px;fill:currentColor}.notification-content{flex:1;font-size:14px;line-height:1.5;font-weight:500;margin-left:20px;color:#000000d9}.notification-content i{font-style:italic}.notification-content,.notification-actions-button{font-family:inherit}.notification-actions{display:flex;margin:0 20px;-webkit-user-select:none;user-select:none;border-top:1px solid #f3f5f6}.notification-actions-button{flex:1;border:none;color:#22a5f7;cursor:pointer;font-size:14px;font-weight:500;padding:12px 2px;text-align:center;background-color:transparent}.notification-actions-button:hover>.notification-actions-button-highlight,.notification-actions-button:focus>.notification-actions-button-highlight{background-color:#22a5f71a}.notification-actions-button:active>.notification-actions-button-highlight{background-color:#22a5f733}.notification-actions-button.destructive{color:#f55656}.notification-actions-button.destructive:hover>.notification-actions-button-highlight,.notification-actions-button.destructive:focus>.notification-actions-button-highlight{background-color:#f556561a}.notification-actions-button.destructive:active>.notification-actions-button-highlight{background-color:#f5565633}.notification-actions-button-highlight{padding:4px 12px;border-radius:12px;display:inline-flex;transition:background-color .15s cubic-bezier(0,0,.2,1)}.notification-progress-ring{top:0;left:0;right:0;bottom:0;width:100%;height:100%;position:absolute}.notification-progress-circle{transform:rotate(-90deg);transform-origin:50% 50%;stroke:#657385}\n"] }]
142
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { notification: [{
143
- type: Input
144
- }], dismissButtonText: [{
145
- type: Input
146
- }], progressElementRef: [{
147
- type: ViewChild,
148
- args: ['progress']
149
- }], getClass: [{
150
- type: HostBinding,
151
- args: ['class']
59
+ class BbNotificationsItem {
60
+ constructor(_zone, _platform, _changeDetection) {
61
+ this._zone = _zone;
62
+ this._platform = _platform;
63
+ this._changeDetection = _changeDetection;
64
+ // Data.
65
+ this._progress = 0;
66
+ this._count = 0;
67
+ // Data.
68
+ this._radius = 19;
69
+ this._circumference = this._radius * 2 * Math.PI;
70
+ this.callActionAndDestroy = (notification, action) => {
71
+ // Perform the callback (if it exists).
72
+ action && action.callback && action.callback();
73
+ // Call the destroy method (if it exists).
74
+ notification && notification.destroy && notification.destroy();
75
+ };
76
+ this.instance = () => {
77
+ // Calculate the difference.
78
+ this._difference = (Date.now() - this._startTime) - (this._count * this._speed);
79
+ // Add up the count.
80
+ if (this._count++ === this._steps) {
81
+ this.notification.destroy();
82
+ }
83
+ // Add the steps to the progress.
84
+ this._progress += 100 / this._steps;
85
+ // Set a new timer.
86
+ this._timer = this.setTimeout(this.instance, this._speed - this._difference);
87
+ // Run a new change detection cycle.
88
+ this._zone.run(() => this._changeDetection.detectChanges());
89
+ };
90
+ this.setTimeout = (method, timeout) => {
91
+ // Check if the window and method exist.
92
+ if (!window || !window.setTimeout) {
93
+ return null;
94
+ }
95
+ return window.setTimeout(method, timeout);
96
+ };
97
+ }
98
+ get getClass() {
99
+ return `bb-notifications-item ${this.notification.type}`;
100
+ }
101
+ get progressStrokeArray() {
102
+ const value = Math.floor(this._circumference);
103
+ return `${value}, ${value}`;
104
+ }
105
+ get progressStrokeOffset() {
106
+ return Math.floor(this._circumference - this._progress / 100 * this._circumference);
107
+ }
108
+ get isContentString() {
109
+ return typeof this.notification.content === 'string';
110
+ }
111
+ ngOnInit() {
112
+ // Check if the notification timeout is not 0 and the platform is a browser.
113
+ if (this.notification.timeout <= 0 || !this._platform.isBrowser) {
114
+ this.notification.dismiss = true;
115
+ return;
116
+ }
117
+ // Start the timeout.
118
+ this.startTimeout();
119
+ }
120
+ ngOnDestroy() {
121
+ // Clear the timeout if it was set.
122
+ this._timer && window && window.clearTimeout && window.clearTimeout(this._timer);
123
+ }
124
+ startTimeout() {
125
+ // Calculate the steps of the timeout.
126
+ this._steps = this.notification.timeout / 10;
127
+ // Calculate the speed of the timeout.
128
+ this._speed = this.notification.timeout / this._steps;
129
+ // Get the start time.
130
+ this._startTime = Date.now();
131
+ // Set a new timer outside of Angular.
132
+ this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));
133
+ }
134
+ }
135
+ BbNotificationsItem.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbNotificationsItem, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
136
+ BbNotificationsItem.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: BbNotificationsItem, selector: "bb-notifications-item", inputs: { notification: "notification", dismissButtonText: "dismissButtonText" }, host: { attributes: { "role": "alert" }, properties: { "class": "this.getClass" } }, viewQueries: [{ propertyName: "progressElementRef", first: true, predicate: ["progress"], descendants: true }], ngImport: i0, template: "<div class=\"notification-content-wrapper\">\r\n <!--\r\n The icon for the notification.\r\n\r\n The icon is reflected by the type of the\r\n notification. Same goes for the color and\r\n background-color.\r\n -->\r\n <div [style.color]=\"notification?.color\"\r\n [style.background-color]=\"notification?.backgroundColor\"\r\n class=\"notification-icon-wrapper\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 16 19.5\"\r\n class=\"notification-icon\">\r\n <path\r\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\r\n </path>\r\n </svg>\r\n\r\n <!--\r\n The circular progress for the notification.\r\n\r\n The progress is only visible when a timeout is\r\n set. The progress adapts to the time remaining\r\n for the notification.\r\n -->\r\n <svg *ngIf=\"notification?.timeout > 0\"\r\n class=\"notification-progress-ring\"\r\n viewBox=\"0 0 40 40\"\r\n role=\"progressbar\">\r\n <circle #progress\r\n [attr.stroke-dasharray]=\"progressStrokeArray\"\r\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\r\n [style.stroke]=\"notification?.color\"\r\n class=\"notification-progress-circle\"\r\n stroke-width=\"2\"\r\n fill=\"transparent\"\r\n r=\"19\"\r\n cx=\"20\"\r\n cy=\"20\">\r\n </circle>\r\n </svg>\r\n </div>\r\n\r\n <!--\r\n The content for the notification.\r\n\r\n This displays a string or a template based\r\n on the given parameter by the user.\r\n -->\r\n <div class=\"notification-content\">\r\n <ng-container *ngIf=\"isContentString; else templateContent\"\r\n [ngSwitch]=\"notification?.localize\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ notification?.content }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--\r\n The actions of the notification.\r\n\r\n All actions are displayed here and are\r\n based on the actions array the user provided.\r\n-->\r\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\r\n class=\"notification-actions\">\r\n <button *ngFor=\"let action of notification?.actions\"\r\n (click)=\"callActionAndDestroy(notification, action)\"\r\n type=\"button\"\r\n [class.destructive]=\"action?.type === 'cancel'\"\r\n class=\"notification-actions-button\">\r\n <span [ngSwitch]=\"notification?.localize\"\r\n class=\"notification-actions-button-highlight\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ action?.title | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ action?.title }}\r\n </ng-container>\r\n </span>\r\n </button>\r\n <button *ngIf=\"notification?.dismiss\"\r\n (click)=\"notification?.destroy()\"\r\n class=\"notification-actions-button destructive\"\r\n type=\"button\">\r\n <span class=\"notification-actions-button-highlight\">\r\n {{ notification?.dismissText || dismissButtonText }}\r\n </span>\r\n </button>\r\n</div>\r\n\r\n<!--\r\n The outlet for the notification content template ref.\r\n-->\r\n<ng-template #templateContent>\r\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\r\n</ng-template>\r\n", styles: [".bb-notifications-item{display:flex;border-radius:4px;flex-direction:column;background-color:#fff;border:1px solid #d6dbe0}.bb-notifications-item.success .notification-icon-wrapper{color:#2dc05d;background-color:#ebfaf0}.bb-notifications-item.success .notification-progress-circle{stroke:#36d068}.bb-notifications-item.error .notification-icon-wrapper{color:#f43e3e;background-color:#feeeee}.bb-notifications-item.error .notification-progress-circle{stroke:#f55656}.bb-notifications-item.warning .notification-icon-wrapper{color:#f1ae00;background-color:#fff8e7}.bb-notifications-item.warning .notification-progress-circle{stroke:#ffbc0b}.bb-notifications-item.info .notification-icon-wrapper{color:#099bf6;background-color:#e9f6fe}.bb-notifications-item.info .notification-progress-circle{stroke:#22a5f7}.bb-notifications-item.custom .notification-icon-wrapper{color:#657385;background-color:#f3f5f6}.bb-notifications-item.custom .notification-progress-circle{stroke:#657385}.notification-content-wrapper{padding:20px;display:flex;align-items:center}.notification-icon-wrapper{width:40px;height:40px;display:flex;-webkit-user-select:none;user-select:none;position:relative;border-radius:50%;align-items:center;justify-content:center;color:#657385;background-color:#f3f5f6}.notification-icon{width:100%;height:100%;padding:10px;fill:currentColor}.notification-content{flex:1;font-size:14px;line-height:1.5;font-weight:500;margin-left:20px;color:#000000d9}.notification-content i{font-style:italic}.notification-content,.notification-actions-button{font-family:inherit}.notification-actions{display:flex;margin:0 20px;-webkit-user-select:none;user-select:none;border-top:1px solid #f3f5f6}.notification-actions-button{flex:1;border:none;color:#22a5f7;cursor:pointer;font-size:14px;font-weight:500;padding:12px 2px;text-align:center;background-color:transparent}.notification-actions-button:hover>.notification-actions-button-highlight,.notification-actions-button:focus>.notification-actions-button-highlight{background-color:#22a5f71a}.notification-actions-button:active>.notification-actions-button-highlight{background-color:#22a5f733}.notification-actions-button.destructive{color:#f55656}.notification-actions-button.destructive:hover>.notification-actions-button-highlight,.notification-actions-button.destructive:focus>.notification-actions-button-highlight{background-color:#f556561a}.notification-actions-button.destructive:active>.notification-actions-button-highlight{background-color:#f5565633}.notification-actions-button-highlight{padding:4px 12px;border-radius:12px;display:inline-flex;transition:background-color .15s cubic-bezier(0,0,.2,1)}.notification-progress-ring{top:0;left:0;right:0;bottom:0;width:100%;height:100%;position:absolute}.notification-progress-circle{transform:rotate(-90deg);transform-origin:50% 50%;stroke:#657385}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "pipe", type: i2$1.BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
137
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbNotificationsItem, decorators: [{
138
+ type: Component,
139
+ args: [{ selector: 'bb-notifications-item', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
140
+ 'role': 'alert'
141
+ }, template: "<div class=\"notification-content-wrapper\">\r\n <!--\r\n The icon for the notification.\r\n\r\n The icon is reflected by the type of the\r\n notification. Same goes for the color and\r\n background-color.\r\n -->\r\n <div [style.color]=\"notification?.color\"\r\n [style.background-color]=\"notification?.backgroundColor\"\r\n class=\"notification-icon-wrapper\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 16 19.5\"\r\n class=\"notification-icon\">\r\n <path\r\n d=\"M8 19.5c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zM14 13.5v-5c0-3.1-1.6-5.6-4.5-6.3v-.7C9.5.7 8.8 0 8 0S6.5.7 6.5 1.5v.7C3.6 2.9 2 5.4 2 8.5v5l-2 2v1h16v-1l-2-2z\">\r\n </path>\r\n </svg>\r\n\r\n <!--\r\n The circular progress for the notification.\r\n\r\n The progress is only visible when a timeout is\r\n set. The progress adapts to the time remaining\r\n for the notification.\r\n -->\r\n <svg *ngIf=\"notification?.timeout > 0\"\r\n class=\"notification-progress-ring\"\r\n viewBox=\"0 0 40 40\"\r\n role=\"progressbar\">\r\n <circle #progress\r\n [attr.stroke-dasharray]=\"progressStrokeArray\"\r\n [attr.stroke-dashoffset]=\"progressStrokeOffset\"\r\n [style.stroke]=\"notification?.color\"\r\n class=\"notification-progress-circle\"\r\n stroke-width=\"2\"\r\n fill=\"transparent\"\r\n r=\"19\"\r\n cx=\"20\"\r\n cy=\"20\">\r\n </circle>\r\n </svg>\r\n </div>\r\n\r\n <!--\r\n The content for the notification.\r\n\r\n This displays a string or a template based\r\n on the given parameter by the user.\r\n -->\r\n <div class=\"notification-content\">\r\n <ng-container *ngIf=\"isContentString; else templateContent\"\r\n [ngSwitch]=\"notification?.localize\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ $any(notification?.content) | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ notification?.content }}\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n\r\n<!--\r\n The actions of the notification.\r\n\r\n All actions are displayed here and are\r\n based on the actions array the user provided.\r\n-->\r\n<div *ngIf=\"notification?.actions?.length > 0 || notification?.dismiss\"\r\n class=\"notification-actions\">\r\n <button *ngFor=\"let action of notification?.actions\"\r\n (click)=\"callActionAndDestroy(notification, action)\"\r\n type=\"button\"\r\n [class.destructive]=\"action?.type === 'cancel'\"\r\n class=\"notification-actions-button\">\r\n <span [ngSwitch]=\"notification?.localize\"\r\n class=\"notification-actions-button-highlight\">\r\n <ng-container *ngSwitchCase=\"true\">\r\n {{ action?.title | bbLocalize:{data: notification?.data} }}\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n {{ action?.title }}\r\n </ng-container>\r\n </span>\r\n </button>\r\n <button *ngIf=\"notification?.dismiss\"\r\n (click)=\"notification?.destroy()\"\r\n class=\"notification-actions-button destructive\"\r\n type=\"button\">\r\n <span class=\"notification-actions-button-highlight\">\r\n {{ notification?.dismissText || dismissButtonText }}\r\n </span>\r\n </button>\r\n</div>\r\n\r\n<!--\r\n The outlet for the notification content template ref.\r\n-->\r\n<ng-template #templateContent>\r\n <ng-container *ngTemplateOutlet=\"$any(notification?.content)\"></ng-container>\r\n</ng-template>\r\n", styles: [".bb-notifications-item{display:flex;border-radius:4px;flex-direction:column;background-color:#fff;border:1px solid #d6dbe0}.bb-notifications-item.success .notification-icon-wrapper{color:#2dc05d;background-color:#ebfaf0}.bb-notifications-item.success .notification-progress-circle{stroke:#36d068}.bb-notifications-item.error .notification-icon-wrapper{color:#f43e3e;background-color:#feeeee}.bb-notifications-item.error .notification-progress-circle{stroke:#f55656}.bb-notifications-item.warning .notification-icon-wrapper{color:#f1ae00;background-color:#fff8e7}.bb-notifications-item.warning .notification-progress-circle{stroke:#ffbc0b}.bb-notifications-item.info .notification-icon-wrapper{color:#099bf6;background-color:#e9f6fe}.bb-notifications-item.info .notification-progress-circle{stroke:#22a5f7}.bb-notifications-item.custom .notification-icon-wrapper{color:#657385;background-color:#f3f5f6}.bb-notifications-item.custom .notification-progress-circle{stroke:#657385}.notification-content-wrapper{padding:20px;display:flex;align-items:center}.notification-icon-wrapper{width:40px;height:40px;display:flex;-webkit-user-select:none;user-select:none;position:relative;border-radius:50%;align-items:center;justify-content:center;color:#657385;background-color:#f3f5f6}.notification-icon{width:100%;height:100%;padding:10px;fill:currentColor}.notification-content{flex:1;font-size:14px;line-height:1.5;font-weight:500;margin-left:20px;color:#000000d9}.notification-content i{font-style:italic}.notification-content,.notification-actions-button{font-family:inherit}.notification-actions{display:flex;margin:0 20px;-webkit-user-select:none;user-select:none;border-top:1px solid #f3f5f6}.notification-actions-button{flex:1;border:none;color:#22a5f7;cursor:pointer;font-size:14px;font-weight:500;padding:12px 2px;text-align:center;background-color:transparent}.notification-actions-button:hover>.notification-actions-button-highlight,.notification-actions-button:focus>.notification-actions-button-highlight{background-color:#22a5f71a}.notification-actions-button:active>.notification-actions-button-highlight{background-color:#22a5f733}.notification-actions-button.destructive{color:#f55656}.notification-actions-button.destructive:hover>.notification-actions-button-highlight,.notification-actions-button.destructive:focus>.notification-actions-button-highlight{background-color:#f556561a}.notification-actions-button.destructive:active>.notification-actions-button-highlight{background-color:#f5565633}.notification-actions-button-highlight{padding:4px 12px;border-radius:12px;display:inline-flex;transition:background-color .15s cubic-bezier(0,0,.2,1)}.notification-progress-ring{top:0;left:0;right:0;bottom:0;width:100%;height:100%;position:absolute}.notification-progress-circle{transform:rotate(-90deg);transform-origin:50% 50%;stroke:#657385}\n"] }]
142
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { notification: [{
143
+ type: Input
144
+ }], dismissButtonText: [{
145
+ type: Input
146
+ }], progressElementRef: [{
147
+ type: ViewChild,
148
+ args: ['progress']
149
+ }], getClass: [{
150
+ type: HostBinding,
151
+ args: ['class']
152
152
  }] } });
153
153
 
154
- class BbNotificationsList {
155
- constructor(data) {
156
- this.data = data;
157
- // Data.
158
- this.position = null;
159
- // Track by function.
160
- this.trackByFn = (_, item) => item.id;
161
- }
162
- get horizontalPosition() {
163
- return this.location.horizontal;
164
- }
165
- get verticalPosition() {
166
- return this.location.vertical;
167
- }
168
- get animation() {
169
- const to = this.horizontalPosition === 'flex-start'
170
- ? -50
171
- : 50;
172
- return { to };
173
- }
174
- get location() {
175
- const [y, x] = (this.data.position || '').split('|');
176
- return { vertical: y || null, horizontal: x || null };
177
- }
178
- }
179
- BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: BbNotificationsList, deps: [{ token: NotificationsData }], target: i0.ɵɵFactoryTarget.Component });
180
- BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: BbNotificationsList, selector: "bb-notifications-list", host: { attributes: { "role": "list" }, properties: { "style.justify-content": "this.horizontalPosition", "style.align-items": "this.verticalPosition" }, classAttribute: "bb-notifications-list" }, ngImport: i0, template: "<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n", styles: [".bb-notifications-list{top:0;left:0;right:0;bottom:0;z-index:1100;padding:10px;display:flex;position:fixed;pointer-events:none}.notifications-list-wrapper{width:100%;display:block;max-width:400px;position:relative}.notifications-item-wrapper{padding:0;margin:0 0 10px;pointer-events:all}\n"], components: [{ type: BbNotificationsItem, selector: "bb-notifications-item", inputs: ["notification", "dismissButtonText"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i2.AsyncPipe }, animations: [notificationAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: BbNotificationsList, decorators: [{
182
- type: Component,
183
- args: [{ selector: 'bb-notifications-list', animations: [notificationAnimation], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
184
- 'class': 'bb-notifications-list',
185
- 'role': 'list'
186
- }, template: "<!--\n The notifications list.\n\n The list provides the animation effect for the\n incoming notifications.\n-->\n<div *ngIf=\"data?.data | async as notifications\"\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\n class=\"notifications-list-wrapper\">\n <!--\n The loop for the notifications.\n\n All notifications will be displayed here. They\n are wrapped within a wrapper which separates them.\n -->\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\n class=\"notifications-item-wrapper\">\n <bb-notifications-item [notification]=\"notification\"\n [dismissButtonText]=\"data?.dismissText\">\n </bb-notifications-item>\n </div>\n</div>\n", styles: [".bb-notifications-list{top:0;left:0;right:0;bottom:0;z-index:1100;padding:10px;display:flex;position:fixed;pointer-events:none}.notifications-list-wrapper{width:100%;display:block;max-width:400px;position:relative}.notifications-item-wrapper{padding:0;margin:0 0 10px;pointer-events:all}\n"] }]
187
- }], ctorParameters: function () { return [{ type: NotificationsData }]; }, propDecorators: { horizontalPosition: [{
188
- type: HostBinding,
189
- args: ['style.justify-content']
190
- }], verticalPosition: [{
191
- type: HostBinding,
192
- args: ['style.align-items']
154
+ class BbNotificationsList {
155
+ constructor(data) {
156
+ this.data = data;
157
+ // Data.
158
+ this.position = null;
159
+ // Track by function.
160
+ this.trackByFn = (_, item) => item.id;
161
+ }
162
+ get horizontalPosition() {
163
+ return this.location.horizontal;
164
+ }
165
+ get verticalPosition() {
166
+ return this.location.vertical;
167
+ }
168
+ get animation() {
169
+ const to = this.horizontalPosition === 'flex-start'
170
+ ? -50
171
+ : 50;
172
+ return { to };
173
+ }
174
+ get location() {
175
+ const [y, x] = (this.data.position || '').split('|');
176
+ return { vertical: y || null, horizontal: x || null };
177
+ }
178
+ }
179
+ BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbNotificationsList, deps: [{ token: NotificationsData }], target: i0.ɵɵFactoryTarget.Component });
180
+ BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: BbNotificationsList, selector: "bb-notifications-list", host: { attributes: { "role": "list" }, properties: { "style.justify-content": "this.horizontalPosition", "style.align-items": "this.verticalPosition" }, classAttribute: "bb-notifications-list" }, ngImport: i0, template: "<!--\r\n The notifications list.\r\n\r\n The list provides the animation effect for the\r\n incoming notifications.\r\n-->\r\n<div *ngIf=\"data?.data | async as notifications\"\r\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\r\n class=\"notifications-list-wrapper\">\r\n <!--\r\n The loop for the notifications.\r\n\r\n All notifications will be displayed here. They\r\n are wrapped within a wrapper which separates them.\r\n -->\r\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\r\n class=\"notifications-item-wrapper\">\r\n <bb-notifications-item [notification]=\"notification\"\r\n [dismissButtonText]=\"data?.dismissText\">\r\n </bb-notifications-item>\r\n </div>\r\n</div>\r\n", styles: [".bb-notifications-list{top:0;left:0;right:0;bottom:0;z-index:1100;padding:10px;display:flex;position:fixed;pointer-events:none}.notifications-list-wrapper{width:100%;display:block;max-width:400px;position:relative}.notifications-item-wrapper{padding:0;margin:0 0 10px;pointer-events:all}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: BbNotificationsItem, selector: "bb-notifications-item", inputs: ["notification", "dismissButtonText"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], animations: [notificationAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: BbNotificationsList, decorators: [{
182
+ type: Component,
183
+ args: [{ selector: 'bb-notifications-list', animations: [notificationAnimation], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
184
+ 'class': 'bb-notifications-list',
185
+ 'role': 'list'
186
+ }, template: "<!--\r\n The notifications list.\r\n\r\n The list provides the animation effect for the\r\n incoming notifications.\r\n-->\r\n<div *ngIf=\"data?.data | async as notifications\"\r\n [@notificationListAnimation]=\"{value: notifications?.length, params: animation}\"\r\n class=\"notifications-list-wrapper\">\r\n <!--\r\n The loop for the notifications.\r\n\r\n All notifications will be displayed here. They\r\n are wrapped within a wrapper which separates them.\r\n -->\r\n <div *ngFor=\"let notification of notifications; trackBy: trackByFn\"\r\n class=\"notifications-item-wrapper\">\r\n <bb-notifications-item [notification]=\"notification\"\r\n [dismissButtonText]=\"data?.dismissText\">\r\n </bb-notifications-item>\r\n </div>\r\n</div>\r\n", styles: [".bb-notifications-list{top:0;left:0;right:0;bottom:0;z-index:1100;padding:10px;display:flex;position:fixed;pointer-events:none}.notifications-list-wrapper{width:100%;display:block;max-width:400px;position:relative}.notifications-item-wrapper{padding:0;margin:0 0 10px;pointer-events:all}\n"] }]
187
+ }], ctorParameters: function () { return [{ type: NotificationsData }]; }, propDecorators: { horizontalPosition: [{
188
+ type: HostBinding,
189
+ args: ['style.justify-content']
190
+ }], verticalPosition: [{
191
+ type: HostBinding,
192
+ args: ['style.align-items']
193
193
  }] } });
194
194
 
195
- class NotificationsInjector {
196
- constructor(_parentInjector, _additionalTokens) {
197
- this._parentInjector = _parentInjector;
198
- this._additionalTokens = _additionalTokens;
199
- }
200
- get(token, notFoundValue) {
201
- // First check if the additional token
202
- // contains the token.
203
- const value = this._additionalTokens.get(token);
204
- // If that value exists return it.
205
- if (value) {
206
- return value;
207
- }
208
- // Else query the parent injector.
209
- return this._parentInjector.get(token, notFoundValue);
210
- }
195
+ class NotificationsInjector {
196
+ constructor(_parentInjector, _additionalTokens) {
197
+ this._parentInjector = _parentInjector;
198
+ this._additionalTokens = _additionalTokens;
199
+ }
200
+ get(token, notFoundValue) {
201
+ // First check if the additional token
202
+ // contains the token.
203
+ const value = this._additionalTokens.get(token);
204
+ // If that value exists return it.
205
+ if (value) {
206
+ return value;
207
+ }
208
+ // Else query the parent injector.
209
+ return this._parentInjector.get(token, notFoundValue);
210
+ }
211
211
  }
212
212
 
213
- class Notifications {
214
- constructor(_injector, _platform, _applicationRef, _localize, _config, _componentFactoryResolver) {
215
- this._injector = _injector;
216
- this._platform = _platform;
217
- this._applicationRef = _applicationRef;
218
- this._localize = _localize;
219
- this._config = _config;
220
- this._componentFactoryResolver = _componentFactoryResolver;
221
- // The data containing the notifications.
222
- this._notifications$ = new BehaviorSubject([]);
223
- this.getProperty = (property, defaultValue) => {
224
- return typeof property === 'undefined'
225
- ? defaultValue
226
- : property;
227
- };
228
- // Get the config.
229
- const config = this._config || {};
230
- // Set the config.
231
- this._defaultMode = this.getProperty(config.mode, 'prepend');
232
- this._defaultTimeout = this.getProperty(config.timeout, 8000);
233
- this._defaultLocalize = this.getProperty(config.localize, false);
234
- this._defaultDismiss = this.getProperty(config.dismiss, true);
235
- this._defaultDismissText = this.getProperty(config.dismissText, 'Dismiss');
236
- this._defaultPosition = this.getProperty(config.position, NotificationsPosition.TopRight);
237
- // Create the element that holds all notifications.
238
- this.createElement();
239
- }
240
- success(content, actions = [], timeout = this._defaultTimeout) {
241
- return this.create({ content, timeout, actions, type: NotificationType.Success });
242
- }
243
- error(content, actions = [], timeout = this._defaultTimeout) {
244
- return this.create({ content, timeout, actions, type: NotificationType.Error });
245
- }
246
- warn(content, actions = [], timeout = this._defaultTimeout) {
247
- return this.create({ content, timeout, actions, type: NotificationType.Warning });
248
- }
249
- info(content, actions = [], timeout = this._defaultTimeout) {
250
- return this.create({ content, timeout, actions, type: NotificationType.Info });
251
- }
252
- create(notification) {
253
- // Compose a new notification item.
254
- const item = this.compose(notification);
255
- // Add the destroy function to the notification.
256
- item.destroy = () => this.pull(item);
257
- // Add the notification to the list
258
- // and return the item.
259
- return this.push(item);
260
- }
261
- push(notification) {
262
- // Get the current list.
263
- const oldList = this._notifications$.getValue();
264
- // Check which mode is activated.
265
- let newList;
266
- switch (this._defaultMode) {
267
- case 'append':
268
- newList = [...oldList, notification];
269
- break;
270
- case 'prepend':
271
- default:
272
- newList = [notification, ...oldList];
273
- }
274
- // Push the new notifications.
275
- this._notifications$.next(newList);
276
- // Return the notification for further use.
277
- return notification;
278
- }
279
- pull(notification) {
280
- // Get the current list.
281
- const newList = this._notifications$
282
- .getValue()
283
- .filter(item => item.id !== notification.id);
284
- // Push a new list.
285
- this._notifications$.next(newList);
286
- }
287
- compose(notification) {
288
- // Attach a random id to the notification.
289
- notification.id = Math.random().toString(36).substr(2, 10);
290
- // Set all properties.
291
- notification.type = this.getProperty(notification.type, NotificationType.Custom);
292
- notification.content = this.getProperty(notification.content, null);
293
- notification.data = this.getProperty(notification.data, {});
294
- notification.timeout = this.getProperty(notification.timeout, this._defaultTimeout);
295
- notification.localize = this.getProperty(notification.localize, this._defaultLocalize);
296
- notification.dismiss = this.getProperty(notification.dismiss, this._defaultDismiss);
297
- // Dismiss text localization.
298
- const dismissText = this.getProperty(notification.dismissText, this._defaultDismissText);
299
- notification.dismissText = this._defaultLocalize && this._localize
300
- ? this._localize.translate(dismissText)
301
- : dismissText;
302
- // Return the composed notification.
303
- return notification;
304
- }
305
- createElement() {
306
- // Create a map with the config.
307
- const map = new WeakMap();
308
- map.set(NotificationsData, {
309
- data: this._notifications$.pipe(share()),
310
- dismissText: this._defaultDismissText,
311
- position: this._defaultPosition
312
- });
313
- // Create a custom injector.
314
- const notificationsInjector = new NotificationsInjector(this._injector, map);
315
- // Create the notification list and
316
- // get a reference to the component.
317
- this._ref = this._componentFactoryResolver
318
- .resolveComponentFactory(BbNotificationsList)
319
- .create(notificationsInjector);
320
- // Detect the changes.
321
- this._ref.changeDetectorRef.detectChanges();
322
- // Attach the component's view to the application
323
- // so that the change detection will run properly.
324
- this._applicationRef.attachView(this._ref.hostView);
325
- // If the platform is not a browser return.
326
- if (!this._platform.isBrowser) {
327
- return;
328
- }
329
- try {
330
- // Append the element to the DOM.
331
- document.body.appendChild(this._ref.location.nativeElement);
332
- }
333
- catch (_a) {
334
- // Don't do anything, because it must've failed.
335
- }
336
- }
337
- }
338
- Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Notifications, deps: [{ token: i0.Injector }, { token: i1.Platform }, { token: i0.ApplicationRef }, { token: i2$1.Localize, optional: true }, { token: NotificationsConfig, optional: true }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
339
- Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Notifications });
340
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Notifications, decorators: [{
341
- type: Injectable
342
- }], ctorParameters: function () {
343
- return [{ type: i0.Injector }, { type: i1.Platform }, { type: i0.ApplicationRef }, { type: i2$1.Localize, decorators: [{
344
- type: Optional
345
- }] }, { type: NotificationsConfig, decorators: [{
346
- type: Optional
347
- }] }, { type: i0.ComponentFactoryResolver }];
213
+ class Notifications {
214
+ constructor(_injector, _platform, _applicationRef, _localize, _config, _componentFactoryResolver) {
215
+ this._injector = _injector;
216
+ this._platform = _platform;
217
+ this._applicationRef = _applicationRef;
218
+ this._localize = _localize;
219
+ this._config = _config;
220
+ this._componentFactoryResolver = _componentFactoryResolver;
221
+ // The data containing the notifications.
222
+ this._notifications$ = new BehaviorSubject([]);
223
+ this.getProperty = (property, defaultValue) => {
224
+ return typeof property === 'undefined'
225
+ ? defaultValue
226
+ : property;
227
+ };
228
+ // Get the config.
229
+ const config = this._config || {};
230
+ // Set the config.
231
+ this._defaultMode = this.getProperty(config.mode, 'prepend');
232
+ this._defaultTimeout = this.getProperty(config.timeout, 8000);
233
+ this._defaultLocalize = this.getProperty(config.localize, false);
234
+ this._defaultDismiss = this.getProperty(config.dismiss, true);
235
+ this._defaultDismissText = this.getProperty(config.dismissText, 'Dismiss');
236
+ this._defaultPosition = this.getProperty(config.position, NotificationsPosition.TopRight);
237
+ // Create the element that holds all notifications.
238
+ this.createElement();
239
+ }
240
+ success(content, actions = [], timeout = this._defaultTimeout) {
241
+ return this.create({ content, timeout, actions, type: NotificationType.Success });
242
+ }
243
+ error(content, actions = [], timeout = this._defaultTimeout) {
244
+ return this.create({ content, timeout, actions, type: NotificationType.Error });
245
+ }
246
+ warn(content, actions = [], timeout = this._defaultTimeout) {
247
+ return this.create({ content, timeout, actions, type: NotificationType.Warning });
248
+ }
249
+ info(content, actions = [], timeout = this._defaultTimeout) {
250
+ return this.create({ content, timeout, actions, type: NotificationType.Info });
251
+ }
252
+ create(notification) {
253
+ // Compose a new notification item.
254
+ const item = this.compose(notification);
255
+ // Add the destroy function to the notification.
256
+ item.destroy = () => this.pull(item);
257
+ // Add the notification to the list
258
+ // and return the item.
259
+ return this.push(item);
260
+ }
261
+ push(notification) {
262
+ // Get the current list.
263
+ const oldList = this._notifications$.getValue();
264
+ // Check which mode is activated.
265
+ let newList;
266
+ switch (this._defaultMode) {
267
+ case 'append':
268
+ newList = [...oldList, notification];
269
+ break;
270
+ case 'prepend':
271
+ default:
272
+ newList = [notification, ...oldList];
273
+ }
274
+ // Push the new notifications.
275
+ this._notifications$.next(newList);
276
+ // Return the notification for further use.
277
+ return notification;
278
+ }
279
+ pull(notification) {
280
+ // Get the current list.
281
+ const newList = this._notifications$
282
+ .getValue()
283
+ .filter(item => item.id !== notification.id);
284
+ // Push a new list.
285
+ this._notifications$.next(newList);
286
+ }
287
+ compose(notification) {
288
+ // Attach a random id to the notification.
289
+ notification.id = Math.random().toString(36).substr(2, 10);
290
+ // Set all properties.
291
+ notification.type = this.getProperty(notification.type, NotificationType.Custom);
292
+ notification.content = this.getProperty(notification.content, null);
293
+ notification.data = this.getProperty(notification.data, {});
294
+ notification.timeout = this.getProperty(notification.timeout, this._defaultTimeout);
295
+ notification.localize = this.getProperty(notification.localize, this._defaultLocalize);
296
+ notification.dismiss = this.getProperty(notification.dismiss, this._defaultDismiss);
297
+ // Dismiss text localization.
298
+ const dismissText = this.getProperty(notification.dismissText, this._defaultDismissText);
299
+ notification.dismissText = this._defaultLocalize && this._localize
300
+ ? this._localize.translate(dismissText)
301
+ : dismissText;
302
+ // Return the composed notification.
303
+ return notification;
304
+ }
305
+ createElement() {
306
+ // Create a map with the config.
307
+ const map = new WeakMap();
308
+ map.set(NotificationsData, {
309
+ data: this._notifications$.pipe(share()),
310
+ dismissText: this._defaultDismissText,
311
+ position: this._defaultPosition
312
+ });
313
+ // Create a custom injector.
314
+ const notificationsInjector = new NotificationsInjector(this._injector, map);
315
+ // Create the notification list and
316
+ // get a reference to the component.
317
+ this._ref = this._componentFactoryResolver
318
+ .resolveComponentFactory(BbNotificationsList)
319
+ .create(notificationsInjector);
320
+ // Detect the changes.
321
+ this._ref.changeDetectorRef.detectChanges();
322
+ // Attach the component's view to the application
323
+ // so that the change detection will run properly.
324
+ this._applicationRef.attachView(this._ref.hostView);
325
+ // If the platform is not a browser return.
326
+ if (!this._platform.isBrowser) {
327
+ return;
328
+ }
329
+ try {
330
+ // Append the element to the DOM.
331
+ document.body.appendChild(this._ref.location.nativeElement);
332
+ }
333
+ catch (_a) {
334
+ // Don't do anything, because it must've failed.
335
+ }
336
+ }
337
+ }
338
+ Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Notifications, deps: [{ token: i0.Injector }, { token: i1.Platform }, { token: i0.ApplicationRef }, { token: i2$1.Localize, optional: true }, { token: NotificationsConfig, optional: true }, { token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Injectable });
339
+ Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Notifications });
340
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: Notifications, decorators: [{
341
+ type: Injectable
342
+ }], ctorParameters: function () {
343
+ return [{ type: i0.Injector }, { type: i1.Platform }, { type: i0.ApplicationRef }, { type: i2$1.Localize, decorators: [{
344
+ type: Optional
345
+ }] }, { type: NotificationsConfig, decorators: [{
346
+ type: Optional
347
+ }] }, { type: i0.ComponentFactoryResolver }];
348
348
  } });
349
349
 
350
- class NotificationsModule {
351
- static forRoot(config) {
352
- return {
353
- ngModule: NotificationsModule,
354
- providers: [
355
- { provide: NotificationsConfig, useValue: config },
356
- Notifications
357
- ]
358
- };
359
- }
360
- }
361
- NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: NotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
362
- NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: NotificationsModule, declarations: [BbNotificationsList, BbNotificationsItem], imports: [CommonModule, LocalizeModule] });
363
- NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: NotificationsModule, imports: [[CommonModule, LocalizeModule]] });
364
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: NotificationsModule, decorators: [{
365
- type: NgModule,
366
- args: [{
367
- imports: [CommonModule, LocalizeModule],
368
- declarations: [BbNotificationsList, BbNotificationsItem]
369
- }]
350
+ class NotificationsModule {
351
+ static forRoot(config) {
352
+ return {
353
+ ngModule: NotificationsModule,
354
+ providers: [
355
+ { provide: NotificationsConfig, useValue: config },
356
+ Notifications
357
+ ]
358
+ };
359
+ }
360
+ }
361
+ NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: NotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
362
+ NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.3", ngImport: i0, type: NotificationsModule, declarations: [BbNotificationsList, BbNotificationsItem], imports: [CommonModule, LocalizeModule] });
363
+ NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: NotificationsModule, imports: [CommonModule, LocalizeModule] });
364
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: NotificationsModule, decorators: [{
365
+ type: NgModule,
366
+ args: [{
367
+ imports: [CommonModule, LocalizeModule],
368
+ declarations: [BbNotificationsList, BbNotificationsItem]
369
+ }]
370
370
  }] });
371
371
 
372
- /**
373
- * Generated bundle index. Do not edit.
372
+ /**
373
+ * Generated bundle index. Do not edit.
374
374
  */
375
375
 
376
376
  export { NotificationType, Notifications, NotificationsConfig, NotificationsData, NotificationsModule, NotificationsPosition };