@bravobit/bb-foundation 0.26.3 → 0.28.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 (384) hide show
  1. package/auth/lib/auth.service.d.ts +2 -2
  2. package/auth/lib/directives/authenticated.directive.d.ts +1 -1
  3. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +1 -1
  4. package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +1 -1
  5. package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +1 -1
  6. package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +1 -1
  7. package/controls/lib/control-error/control-error/control-error.component.d.ts +1 -1
  8. package/controls/lib/form-control/form-control/form-control.component.d.ts +1 -1
  9. package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +1 -1
  10. package/controls/lib/form-control/form-control-input.directive.d.ts +1 -1
  11. package/controls/lib/radio/radio-button/radio-button.component.d.ts +1 -1
  12. package/controls/lib/radio/radio-group/radio-group.component.d.ts +1 -1
  13. package/controls/lib/toggle/toggle/toggle.component.d.ts +1 -1
  14. package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +1 -1
  15. package/dashboard/lib/dashboard/dashboard.component.d.ts +1 -1
  16. package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
  17. package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +1 -1
  18. package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +1 -1
  19. package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +1 -1
  20. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
  21. package/elements/lib/avatar/avatar.component.d.ts +1 -1
  22. package/elements/lib/button/button.component.d.ts +2 -2
  23. package/elements/lib/checkbox/checkbox.component.d.ts +1 -1
  24. package/elements/lib/date-picker/date-picker.component.d.ts +1 -1
  25. package/elements/lib/directives/input.directive.d.ts +2 -2
  26. package/elements/lib/dropdown/dropdown.component.d.ts +1 -1
  27. package/elements/lib/file-picker/file-picker.component.d.ts +2 -2
  28. package/elements/lib/form-control/form-control.component.d.ts +1 -1
  29. package/elements/lib/form-error/form-error.component.d.ts +1 -1
  30. package/elements/lib/form-group/form-group.component.d.ts +1 -1
  31. package/elements/lib/icon/icon.component.d.ts +1 -1
  32. package/elements/lib/image-picker/image-picker.component.d.ts +1 -1
  33. package/elements/lib/spinner/spinner.component.d.ts +1 -1
  34. package/{esm2020 → esm2022}/auth/lib/auth.interceptor.mjs +4 -4
  35. package/{esm2020 → esm2022}/auth/lib/auth.module.mjs +5 -5
  36. package/esm2022/auth/lib/auth.service.mjs +269 -0
  37. package/{esm2020 → esm2022}/auth/lib/directives/authenticated.directive.mjs +4 -4
  38. package/{esm2020 → esm2022}/auth/lib/guards/anonymous.guard.mjs +4 -4
  39. package/{esm2020 → esm2022}/auth/lib/guards/authenticated.guard.mjs +4 -4
  40. package/{esm2020 → esm2022}/collections/lib/collections.module.mjs +21 -21
  41. package/{esm2020 → esm2022}/collections/lib/components/collections-pager/collections-pager.component.mjs +4 -4
  42. package/{esm2020 → esm2022}/collections/lib/components/collections-viewer/collections-viewer.component.mjs +4 -4
  43. package/{esm2020 → esm2022}/collections/lib/components/collections.directive.mjs +13 -13
  44. package/{esm2020 → esm2022}/controls/lib/checkbox/checkbox/checkbox.component.mjs +6 -6
  45. package/{esm2020 → esm2022}/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +4 -4
  46. package/{esm2020 → esm2022}/controls/lib/checkbox/checkbox.module.mjs +5 -5
  47. package/{esm2020 → esm2022}/controls/lib/control-error/control-error/control-error.component.mjs +4 -4
  48. package/{esm2020 → esm2022}/controls/lib/control-error/control-error-submit.directive.mjs +4 -4
  49. package/{esm2020 → esm2022}/controls/lib/control-error/control-error.module.mjs +5 -5
  50. package/{esm2020 → esm2022}/controls/lib/controls.module.mjs +21 -21
  51. package/{esm2020 → esm2022}/controls/lib/form-control/form-control/form-control.component.mjs +4 -4
  52. package/{esm2020 → esm2022}/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +4 -4
  53. package/{esm2020 → esm2022}/controls/lib/form-control/form-control-input.directive.mjs +4 -4
  54. package/{esm2020 → esm2022}/controls/lib/form-control/form-control.module.mjs +9 -9
  55. package/{esm2020 → esm2022}/controls/lib/radio/radio-button/radio-button.component.mjs +4 -4
  56. package/{esm2020 → esm2022}/controls/lib/radio/radio-group/radio-group.component.mjs +6 -6
  57. package/{esm2020 → esm2022}/controls/lib/radio/radio.module.mjs +5 -5
  58. package/{esm2020 → esm2022}/controls/lib/toggle/toggle/toggle.component.mjs +6 -6
  59. package/{esm2020 → esm2022}/controls/lib/toggle/toggle-group/toggle-group.component.mjs +4 -4
  60. package/{esm2020 → esm2022}/controls/lib/toggle/toggle.module.mjs +5 -5
  61. package/{esm2020 → esm2022}/dashboard/lib/dashboard/dashboard.component.mjs +4 -4
  62. package/{esm2020 → esm2022}/dashboard/lib/dashboard-header/dashboard-header.component.mjs +4 -4
  63. package/{esm2020 → esm2022}/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +4 -4
  64. package/{esm2020 → esm2022}/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +4 -4
  65. package/{esm2020 → esm2022}/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +4 -4
  66. package/{esm2020 → esm2022}/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +4 -4
  67. package/{esm2020 → esm2022}/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +4 -4
  68. package/{esm2020 → esm2022}/dashboard/lib/dashboard.module.mjs +17 -17
  69. package/{esm2020 → esm2022}/dialog/lib/dialog-actions/dialog-actions.component.mjs +4 -4
  70. package/{esm2020 → esm2022}/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +4 -4
  71. package/{esm2020 → esm2022}/dialog/lib/dialog-container/dialog-container.component.mjs +4 -4
  72. package/{esm2020 → esm2022}/dialog/lib/dialog-header/dialog-header.component.mjs +4 -4
  73. package/{esm2020 → esm2022}/dialog/lib/dialog-link/dialog-link.component.mjs +4 -4
  74. package/{esm2020 → esm2022}/dialog/lib/dialog-modal/dialog-modal.component.mjs +4 -4
  75. package/{esm2020 → esm2022}/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +4 -4
  76. package/{esm2020 → esm2022}/dialog/lib/dialog.insertion.mjs +4 -4
  77. package/{esm2020 → esm2022}/dialog/lib/dialog.module.mjs +20 -20
  78. package/{esm2020 → esm2022}/dialog/lib/dialog.service.mjs +4 -4
  79. package/{esm2020 → esm2022}/elements/lib/avatar/avatar.component.mjs +4 -4
  80. package/{esm2020 → esm2022}/elements/lib/button/button.component.mjs +7 -7
  81. package/{esm2020 → esm2022}/elements/lib/checkbox/checkbox.component.mjs +6 -6
  82. package/esm2022/elements/lib/date-picker/date-picker.component.mjs +307 -0
  83. package/{esm2020 → esm2022}/elements/lib/directives/addon.directive.mjs +7 -7
  84. package/{esm2020 → esm2022}/elements/lib/directives/form-submit.directive.mjs +4 -4
  85. package/{esm2020 → esm2022}/elements/lib/directives/form-submitter.directive.mjs +4 -4
  86. package/{esm2020 → esm2022}/elements/lib/directives/input.directive.mjs +7 -7
  87. package/esm2022/elements/lib/dropdown/dropdown.component.mjs +100 -0
  88. package/{esm2020 → esm2022}/elements/lib/elements.module.mjs +65 -65
  89. package/esm2022/elements/lib/file-picker/file-picker.component.mjs +236 -0
  90. package/{esm2020 → esm2022}/elements/lib/form-control/form-control.component.mjs +4 -4
  91. package/{esm2020 → esm2022}/elements/lib/form-error/form-error.component.mjs +4 -4
  92. package/{esm2020 → esm2022}/elements/lib/form-group/form-group.component.mjs +4 -4
  93. package/{esm2020 → esm2022}/elements/lib/icon/icon.component.mjs +4 -4
  94. package/{esm2020 → esm2022}/elements/lib/image-picker/image-picker.component.mjs +4 -4
  95. package/{esm2020 → esm2022}/elements/lib/pipes/file-image.pipe.mjs +4 -4
  96. package/{esm2020 → esm2022}/elements/lib/pipes/file-size.pipe.mjs +4 -4
  97. package/{esm2020 → esm2022}/elements/lib/pipes/relative-time.pipe.mjs +4 -4
  98. package/{esm2020 → esm2022}/elements/lib/spinner/spinner.component.mjs +4 -4
  99. package/{esm2020 → esm2022}/elements/lib/tag/tag.component.mjs +4 -4
  100. package/esm2022/http/lib/classes/http.config.mjs +28 -0
  101. package/{esm2020 → esm2022}/http/lib/http.interfaces.mjs +1 -1
  102. package/{esm2020 → esm2022}/http/lib/http.module.mjs +5 -5
  103. package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +64 -0
  104. package/{esm2020 → esm2022}/http/lib/interceptors/error.interceptor.mjs +4 -4
  105. package/{esm2020 → esm2022}/lib/core/services/clipboard.service.mjs +4 -4
  106. package/{esm2020 → esm2022}/lib/core/services/exif.service.mjs +4 -4
  107. package/{esm2020 → esm2022}/lib/core/services/file-loader.service.mjs +4 -4
  108. package/{esm2020 → esm2022}/lib/core/services/image-converter.service.mjs +4 -4
  109. package/{esm2020 → esm2022}/lib/core/services/languages.service.mjs +4 -4
  110. package/{esm2020 → esm2022}/lib/core/services/network.service.mjs +4 -4
  111. package/{esm2020 → esm2022}/lib/core/services/patch.service.mjs +4 -4
  112. package/{esm2020 → esm2022}/localize/lib/localize.module.mjs +9 -9
  113. package/{esm2020 → esm2022}/localize/lib/localize.pipe.mjs +4 -4
  114. package/{esm2020 → esm2022}/localize/lib/localize.service.mjs +4 -4
  115. package/{esm2020 → esm2022}/localize/lib/transforms/interpolate.transform.mjs +2 -3
  116. package/{esm2020 → esm2022}/localize/lib/transforms/reference.transform.mjs +2 -3
  117. package/{esm2020 → esm2022}/localize/lib/views/localize-string/localize-string.component.mjs +4 -4
  118. package/{esm2020 → esm2022}/localize/lib/views/localize-template.directive.mjs +4 -4
  119. package/{esm2020 → esm2022}/masking/lib/directives/currency-mask.directive.mjs +4 -4
  120. package/{esm2020 → esm2022}/masking/lib/directives/date-mask.directive.mjs +4 -4
  121. package/{esm2020 → esm2022}/masking/lib/directives/input-mask.directive.mjs +4 -4
  122. package/{esm2020 → esm2022}/masking/lib/masking.module.mjs +9 -9
  123. package/{esm2020 → esm2022}/masking/lib/masking.service.mjs +4 -4
  124. package/{esm2020 → esm2022}/notifications/lib/notifications-item/notifications-item.component.mjs +4 -4
  125. package/{esm2020 → esm2022}/notifications/lib/notifications-list/notifications-list.component.mjs +4 -4
  126. package/{esm2020 → esm2022}/notifications/lib/notifications.module.mjs +5 -5
  127. package/{esm2020 → esm2022}/notifications/lib/notifications.service.mjs +4 -4
  128. package/{esm2020 → esm2022}/permissions/lib/directives/permission.directive.mjs +4 -4
  129. package/{esm2020 → esm2022}/permissions/lib/guards/permission.guard.mjs +4 -4
  130. package/{esm2020 → esm2022}/permissions/lib/permissions.module.mjs +5 -5
  131. package/{esm2020 → esm2022}/permissions/lib/permissions.service.mjs +4 -4
  132. package/{esm2020 → esm2022}/recaptcha/lib/recaptcha/recaptcha.component.mjs +10 -10
  133. package/{esm2020 → esm2022}/recaptcha/lib/recaptcha-loader.service.mjs +4 -4
  134. package/{esm2020 → esm2022}/recaptcha/lib/recaptcha.module.mjs +5 -5
  135. package/{esm2020 → esm2022}/storage/lib/storage.service.mjs +4 -4
  136. package/{esm2020 → esm2022}/table/lib/components/table/table.component.mjs +10 -10
  137. package/{esm2020 → esm2022}/table/lib/components/table-cell/table-cell.component.mjs +4 -4
  138. package/{esm2020 → esm2022}/table/lib/components/table-header-cell/table-header-cell.component.mjs +4 -4
  139. package/{esm2020 → esm2022}/table/lib/components/table-pager/table-pager.component.mjs +6 -6
  140. package/{esm2020 → esm2022}/table/lib/table.module.mjs +15 -15
  141. package/{esm2020 → esm2022}/theming/lib/theming.directive.mjs +4 -4
  142. package/{esm2020 → esm2022}/theming/lib/theming.module.mjs +5 -5
  143. package/{esm2020 → esm2022}/tooltip/lib/tooltip-container/tooltip-container.component.mjs +4 -4
  144. package/{esm2020 → esm2022}/tooltip/lib/tooltip.directive.mjs +4 -4
  145. package/{esm2020 → esm2022}/tooltip/lib/tooltip.module.mjs +8 -8
  146. package/{esm2020 → esm2022}/utils/lib/directives/autosize.directive.mjs +4 -4
  147. package/{esm2020 → esm2022}/utils/lib/directives/focus-trap.directive.mjs +4 -4
  148. package/{esm2020 → esm2022}/utils/lib/directives/focus.directive.mjs +4 -4
  149. package/{esm2020 → esm2022}/utils/lib/directives/template.directive.mjs +4 -4
  150. package/{esm2020 → esm2022}/utils/lib/utils.module.mjs +11 -11
  151. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-auth.mjs +21 -22
  152. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-auth.mjs.map +1 -1
  153. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-collections.mjs +38 -38
  154. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-collections.mjs.map +1 -1
  155. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-controls.mjs +83 -83
  156. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-controls.mjs.map +1 -1
  157. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dashboard.mjs +37 -37
  158. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  159. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dialog.mjs +46 -46
  160. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-dialog.mjs.map +1 -1
  161. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-elements.mjs +185 -185
  162. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -0
  163. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-http.mjs +37 -23
  164. package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -0
  165. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-localize.mjs +20 -20
  166. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-localize.mjs.map +1 -1
  167. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-masking.mjs +20 -20
  168. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-masking.mjs.map +1 -1
  169. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-notifications.mjs +13 -13
  170. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-notifications.mjs.map +1 -1
  171. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-permissions.mjs +13 -13
  172. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-permissions.mjs.map +1 -1
  173. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-recaptcha.mjs +16 -16
  174. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  175. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-storage.mjs +3 -3
  176. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-storage.mjs.map +1 -1
  177. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-table.mjs +34 -34
  178. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-table.mjs.map +1 -1
  179. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-theming.mjs +7 -7
  180. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-theming.mjs.map +1 -1
  181. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-tooltip.mjs +13 -13
  182. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-tooltip.mjs.map +1 -1
  183. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-utils.mjs +22 -22
  184. package/{fesm2020 → fesm2022}/bravobit-bb-foundation-utils.mjs.map +1 -1
  185. package/{fesm2020 → fesm2022}/bravobit-bb-foundation.mjs +21 -21
  186. package/{fesm2020 → fesm2022}/bravobit-bb-foundation.mjs.map +1 -1
  187. package/http/lib/classes/http.config.d.ts +2 -2
  188. package/http/lib/http.interfaces.d.ts +9 -4
  189. package/http/lib/interceptors/base-url.interceptor.d.ts +3 -1
  190. package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
  191. package/localize/lib/views/localize-template.directive.d.ts +1 -1
  192. package/masking/lib/directives/currency-mask.directive.d.ts +1 -1
  193. package/masking/lib/directives/date-mask.directive.d.ts +1 -1
  194. package/masking/lib/directives/input-mask.directive.d.ts +1 -1
  195. package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
  196. package/package.json +64 -106
  197. package/permissions/lib/directives/permission.directive.d.ts +1 -1
  198. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +1 -1
  199. package/table/lib/components/table/table.component.d.ts +1 -1
  200. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +1 -1
  201. package/table/lib/components/table-pager/table-pager.component.d.ts +1 -1
  202. package/theming/lib/theming.directive.d.ts +1 -1
  203. package/tooltip/lib/tooltip.directive.d.ts +1 -1
  204. package/utils/lib/directives/autosize.directive.d.ts +1 -1
  205. package/utils/lib/directives/template.directive.d.ts +1 -1
  206. package/esm2020/auth/lib/auth.service.mjs +0 -270
  207. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +0 -307
  208. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +0 -100
  209. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +0 -236
  210. package/esm2020/http/lib/classes/http.config.mjs +0 -28
  211. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +0 -50
  212. package/fesm2015/bravobit-bb-foundation-auth.mjs +0 -851
  213. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +0 -1
  214. package/fesm2015/bravobit-bb-foundation-collections.mjs +0 -474
  215. package/fesm2015/bravobit-bb-foundation-collections.mjs.map +0 -1
  216. package/fesm2015/bravobit-bb-foundation-controls.mjs +0 -1217
  217. package/fesm2015/bravobit-bb-foundation-controls.mjs.map +0 -1
  218. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +0 -417
  219. package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +0 -1
  220. package/fesm2015/bravobit-bb-foundation-dialog.mjs +0 -512
  221. package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +0 -1
  222. package/fesm2015/bravobit-bb-foundation-elements.mjs +0 -1883
  223. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +0 -1
  224. package/fesm2015/bravobit-bb-foundation-http.mjs +0 -176
  225. package/fesm2015/bravobit-bb-foundation-http.mjs.map +0 -1
  226. package/fesm2015/bravobit-bb-foundation-localize.mjs +0 -835
  227. package/fesm2015/bravobit-bb-foundation-localize.mjs.map +0 -1
  228. package/fesm2015/bravobit-bb-foundation-masking.mjs +0 -334
  229. package/fesm2015/bravobit-bb-foundation-masking.mjs.map +0 -1
  230. package/fesm2015/bravobit-bb-foundation-notifications.mjs +0 -357
  231. package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +0 -1
  232. package/fesm2015/bravobit-bb-foundation-permissions.mjs +0 -310
  233. package/fesm2015/bravobit-bb-foundation-permissions.mjs.map +0 -1
  234. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +0 -349
  235. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs.map +0 -1
  236. package/fesm2015/bravobit-bb-foundation-rxjs.mjs +0 -22
  237. package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +0 -1
  238. package/fesm2015/bravobit-bb-foundation-storage.mjs +0 -418
  239. package/fesm2015/bravobit-bb-foundation-storage.mjs.map +0 -1
  240. package/fesm2015/bravobit-bb-foundation-table.mjs +0 -613
  241. package/fesm2015/bravobit-bb-foundation-table.mjs.map +0 -1
  242. package/fesm2015/bravobit-bb-foundation-theming.mjs +0 -382
  243. package/fesm2015/bravobit-bb-foundation-theming.mjs.map +0 -1
  244. package/fesm2015/bravobit-bb-foundation-tooltip.mjs +0 -210
  245. package/fesm2015/bravobit-bb-foundation-tooltip.mjs.map +0 -1
  246. package/fesm2015/bravobit-bb-foundation-utils.mjs +0 -246
  247. package/fesm2015/bravobit-bb-foundation-utils.mjs.map +0 -1
  248. package/fesm2015/bravobit-bb-foundation.mjs +0 -929
  249. package/fesm2015/bravobit-bb-foundation.mjs.map +0 -1
  250. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +0 -1
  251. package/fesm2020/bravobit-bb-foundation-http.mjs.map +0 -1
  252. /package/{esm2020 → esm2022}/auth/bravobit-bb-foundation-auth.mjs +0 -0
  253. /package/{esm2020 → esm2022}/auth/lib/auth.session.mjs +0 -0
  254. /package/{esm2020 → esm2022}/auth/lib/directives/abstract.directive.mjs +0 -0
  255. /package/{esm2020 → esm2022}/auth/lib/helpers/jwt.helper.mjs +0 -0
  256. /package/{esm2020 → esm2022}/auth/lib/interfaces/config.interface.mjs +0 -0
  257. /package/{esm2020 → esm2022}/auth/lib/interfaces/provider.interface.mjs +0 -0
  258. /package/{esm2020 → esm2022}/auth/lib/interfaces/token.interface.mjs +0 -0
  259. /package/{esm2020 → esm2022}/auth/lib/providers/email.provider.mjs +0 -0
  260. /package/{esm2020 → esm2022}/auth/lib/providers/verify.provider.mjs +0 -0
  261. /package/{esm2020 → esm2022}/auth/lib/tokens/use-authorization.token.mjs +0 -0
  262. /package/{esm2020 → esm2022}/auth/public_api.mjs +0 -0
  263. /package/{esm2020 → esm2022}/bravobit-bb-foundation.mjs +0 -0
  264. /package/{esm2020 → esm2022}/collections/bravobit-bb-foundation-collections.mjs +0 -0
  265. /package/{esm2020 → esm2022}/collections/lib/collection.mjs +0 -0
  266. /package/{esm2020 → esm2022}/collections/lib/interfaces/collection.interface.mjs +0 -0
  267. /package/{esm2020 → esm2022}/collections/lib/providers/api-collection.provider.mjs +0 -0
  268. /package/{esm2020 → esm2022}/collections/lib/providers/collection.provider.mjs +0 -0
  269. /package/{esm2020 → esm2022}/collections/lib/providers/local-collection.provider.mjs +0 -0
  270. /package/{esm2020 → esm2022}/collections/public_api.mjs +0 -0
  271. /package/{esm2020 → esm2022}/controls/bravobit-bb-foundation-controls.mjs +0 -0
  272. /package/{esm2020 → esm2022}/controls/lib/control-error/control-error/control-error.animation.mjs +0 -0
  273. /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.defaults.mjs +0 -0
  274. /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.interface.mjs +0 -0
  275. /package/{esm2020 → esm2022}/controls/lib/control-error/control-error.utils.mjs +0 -0
  276. /package/{esm2020 → esm2022}/controls/lib/controls.interfaces.mjs +0 -0
  277. /package/{esm2020 → esm2022}/controls/public_api.mjs +0 -0
  278. /package/{esm2020 → esm2022}/dashboard/bravobit-bb-foundation-dashboard.mjs +0 -0
  279. /package/{esm2020 → esm2022}/dashboard/public_api.mjs +0 -0
  280. /package/{esm2020 → esm2022}/dialog/bravobit-bb-foundation-dialog.mjs +0 -0
  281. /package/{esm2020 → esm2022}/dialog/lib/dialog-container/dialog-container.animations.mjs +0 -0
  282. /package/{esm2020 → esm2022}/dialog/lib/dialog-overlay/dialog-overlay.animations.mjs +0 -0
  283. /package/{esm2020 → esm2022}/dialog/lib/dialog.interfaces.mjs +0 -0
  284. /package/{esm2020 → esm2022}/dialog/lib/dialog.ref.mjs +0 -0
  285. /package/{esm2020 → esm2022}/dialog/public_api.mjs +0 -0
  286. /package/{esm2020 → esm2022}/elements/bravobit-bb-foundation-elements.mjs +0 -0
  287. /package/{esm2020 → esm2022}/elements/lib/elements.interfaces.mjs +0 -0
  288. /package/{esm2020 → esm2022}/elements/public_api.mjs +0 -0
  289. /package/{esm2020 → esm2022}/http/bravobit-bb-foundation-http.mjs +0 -0
  290. /package/{esm2020 → esm2022}/http/lib/classes/http.error.mjs +0 -0
  291. /package/{esm2020 → esm2022}/http/public_api.mjs +0 -0
  292. /package/{esm2020 → esm2022}/lib/core/functions/date.utils.mjs +0 -0
  293. /package/{esm2020 → esm2022}/lib/core/functions/password.utils.mjs +0 -0
  294. /package/{esm2020 → esm2022}/lib/core/miscellaneous/regex.mjs +0 -0
  295. /package/{esm2020 → esm2022}/lib/core/miscellaneous/validator.mjs +0 -0
  296. /package/{esm2020 → esm2022}/lib/core/mixins/can-disable.mjs +0 -0
  297. /package/{esm2020 → esm2022}/lib/core/mixins/can-hide-errors.mjs +0 -0
  298. /package/{esm2020 → esm2022}/lib/core/mixins/can-load.mjs +0 -0
  299. /package/{esm2020 → esm2022}/lib/core/mixins/constructor.mjs +0 -0
  300. /package/{esm2020 → esm2022}/lib/core/mixins/has-error.mjs +0 -0
  301. /package/{esm2020 → esm2022}/lib/core/mixins/is-focused.mjs +0 -0
  302. /package/{esm2020 → esm2022}/lib/core/mixins/is-grouped.mjs +0 -0
  303. /package/{esm2020 → esm2022}/lib/core/mixins/is-readonly.mjs +0 -0
  304. /package/{esm2020 → esm2022}/lib/core/mixins/is-required.mjs +0 -0
  305. /package/{esm2020 → esm2022}/lib/core/tokens/accept-language.token.mjs +0 -0
  306. /package/{esm2020 → esm2022}/lib/core/tokens/base-url.token.mjs +0 -0
  307. /package/{esm2020 → esm2022}/lib/core/tokens/cookie.token.mjs +0 -0
  308. /package/{esm2020 → esm2022}/lib/core/tokens/location.token.mjs +0 -0
  309. /package/{esm2020 → esm2022}/lib/core/tokens/navigator.token.mjs +0 -0
  310. /package/{esm2020 → esm2022}/lib/core/tokens/window.token.mjs +0 -0
  311. /package/{esm2020 → esm2022}/localize/bravobit-bb-foundation-localize.mjs +0 -0
  312. /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.class.mjs +0 -0
  313. /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.context.mjs +0 -0
  314. /package/{esm2020 → esm2022}/localize/lib/dictionary/dictionary.data.mjs +0 -0
  315. /package/{esm2020 → esm2022}/localize/lib/functions/date.function.mjs +0 -0
  316. /package/{esm2020 → esm2022}/localize/lib/functions/lowercase.function.mjs +0 -0
  317. /package/{esm2020 → esm2022}/localize/lib/functions/uppercase.function.mjs +0 -0
  318. /package/{esm2020 → esm2022}/localize/lib/handlers/missing.handler.mjs +0 -0
  319. /package/{esm2020 → esm2022}/localize/lib/interfaces/config.interfaces.mjs +0 -0
  320. /package/{esm2020 → esm2022}/localize/lib/interfaces/functions.interfaces.mjs +0 -0
  321. /package/{esm2020 → esm2022}/localize/lib/interfaces/handlers.interfaces.mjs +0 -0
  322. /package/{esm2020 → esm2022}/localize/lib/interfaces/options.interfaces.mjs +0 -0
  323. /package/{esm2020 → esm2022}/localize/lib/interfaces/transforms.interfaces.mjs +0 -0
  324. /package/{esm2020 → esm2022}/localize/lib/locale.token.mjs +0 -0
  325. /package/{esm2020 → esm2022}/localize/lib/localizations/dutch.localization.mjs +0 -0
  326. /package/{esm2020 → esm2022}/localize/lib/localizations/english.localization.mjs +0 -0
  327. /package/{esm2020 → esm2022}/localize/lib/transforms/abstract.transform.mjs +0 -0
  328. /package/{esm2020 → esm2022}/localize/public_api.mjs +0 -0
  329. /package/{esm2020 → esm2022}/masking/bravobit-bb-foundation-masking.mjs +0 -0
  330. /package/{esm2020 → esm2022}/masking/lib/input-mask.interface.mjs +0 -0
  331. /package/{esm2020 → esm2022}/masking/public_api.mjs +0 -0
  332. /package/{esm2020 → esm2022}/notifications/bravobit-bb-foundation-notifications.mjs +0 -0
  333. /package/{esm2020 → esm2022}/notifications/lib/notifications.animations.mjs +0 -0
  334. /package/{esm2020 → esm2022}/notifications/lib/notifications.interfaces.mjs +0 -0
  335. /package/{esm2020 → esm2022}/notifications/public_api.mjs +0 -0
  336. /package/{esm2020 → esm2022}/permissions/bravobit-bb-foundation-permissions.mjs +0 -0
  337. /package/{esm2020 → esm2022}/permissions/lib/handlers/abstract.handler.mjs +0 -0
  338. /package/{esm2020 → esm2022}/permissions/lib/handlers/local.handler.mjs +0 -0
  339. /package/{esm2020 → esm2022}/permissions/lib/permissions.interface.mjs +0 -0
  340. /package/{esm2020 → esm2022}/permissions/public_api.mjs +0 -0
  341. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  342. /package/{esm2020 → esm2022}/recaptcha/bravobit-bb-foundation-recaptcha.mjs +0 -0
  343. /package/{esm2020 → esm2022}/recaptcha/lib/recaptcha.interface.mjs +0 -0
  344. /package/{esm2020 → esm2022}/recaptcha/public_api.mjs +0 -0
  345. /package/{esm2020 → esm2022}/rxjs/bravobit-bb-foundation-rxjs.mjs +0 -0
  346. /package/{esm2020 → esm2022}/rxjs/lib/observables/get-control-value.observable.mjs +0 -0
  347. /package/{esm2020 → esm2022}/rxjs/lib/operators/combine-latest-map.operator.mjs +0 -0
  348. /package/{esm2020 → esm2022}/rxjs/lib/operators/filter-nil.operator.mjs +0 -0
  349. /package/{esm2020 → esm2022}/rxjs/public_api.mjs +0 -0
  350. /package/{esm2020 → esm2022}/storage/bravobit-bb-foundation-storage.mjs +0 -0
  351. /package/{esm2020 → esm2022}/storage/lib/interfaces/attributes.interface.mjs +0 -0
  352. /package/{esm2020 → esm2022}/storage/lib/interfaces/memory.interface.mjs +0 -0
  353. /package/{esm2020 → esm2022}/storage/lib/interfaces/strategy.interface.mjs +0 -0
  354. /package/{esm2020 → esm2022}/storage/lib/strategies/cookie-storage.strategy.mjs +0 -0
  355. /package/{esm2020 → esm2022}/storage/lib/strategies/memory-storage.strategy.mjs +0 -0
  356. /package/{esm2020 → esm2022}/storage/lib/strategies/polyfill-storage.strategy.mjs +0 -0
  357. /package/{esm2020 → esm2022}/storage/public_api.mjs +0 -0
  358. /package/{esm2020 → esm2022}/table/bravobit-bb-foundation-table.mjs +0 -0
  359. /package/{esm2020 → esm2022}/table/lib/data/datasource.data.mjs +0 -0
  360. /package/{esm2020 → esm2022}/table/lib/data/generic.data.mjs +0 -0
  361. /package/{esm2020 → esm2022}/table/lib/interfaces/datasource.interface.mjs +0 -0
  362. /package/{esm2020 → esm2022}/table/lib/interfaces/table.interfaces.mjs +0 -0
  363. /package/{esm2020 → esm2022}/table/public_api.mjs +0 -0
  364. /package/{esm2020 → esm2022}/theming/bravobit-bb-foundation-theming.mjs +0 -0
  365. /package/{esm2020 → esm2022}/theming/lib/themes/checkbox-group.theme.mjs +0 -0
  366. /package/{esm2020 → esm2022}/theming/lib/themes/checkbox.theme.mjs +0 -0
  367. /package/{esm2020 → esm2022}/theming/lib/themes/control-error.theme.mjs +0 -0
  368. /package/{esm2020 → esm2022}/theming/lib/themes/form-control-addon.theme.mjs +0 -0
  369. /package/{esm2020 → esm2022}/theming/lib/themes/form-control.theme.mjs +0 -0
  370. /package/{esm2020 → esm2022}/theming/lib/themes/radio-button.theme.mjs +0 -0
  371. /package/{esm2020 → esm2022}/theming/lib/themes/radio-group.theme.mjs +0 -0
  372. /package/{esm2020 → esm2022}/theming/lib/themes/toggle-group.theme.mjs +0 -0
  373. /package/{esm2020 → esm2022}/theming/lib/themes/toggle.theme.mjs +0 -0
  374. /package/{esm2020 → esm2022}/theming/lib/theming.data.mjs +0 -0
  375. /package/{esm2020 → esm2022}/theming/lib/theming.interface.mjs +0 -0
  376. /package/{esm2020 → esm2022}/theming/lib/utils/theming.variable.mjs +0 -0
  377. /package/{esm2020 → esm2022}/theming/public_api.mjs +0 -0
  378. /package/{esm2020 → esm2022}/tooltip/bravobit-bb-foundation-tooltip.mjs +0 -0
  379. /package/{esm2020 → esm2022}/tooltip/lib/tooltip.interfaces.mjs +0 -0
  380. /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
  381. /package/{esm2020 → esm2022}/utils/bravobit-bb-foundation-utils.mjs +0 -0
  382. /package/{esm2020 → esm2022}/utils/public_api.mjs +0 -0
  383. /package/{fesm2020 → fesm2022}/bravobit-bb-foundation-rxjs.mjs +0 -0
  384. /package/{fesm2020 → fesm2022}/bravobit-bb-foundation-rxjs.mjs.map +0 -0
@@ -1,357 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, ViewChild, HostBinding, createEnvironmentInjector, createComponent, Injectable, Optional, NgModule } from '@angular/core';
3
- import { trigger, transition, query, group, style, stagger, animate } from '@angular/animations';
4
- import * as i2 from '@angular/common';
5
- import { CommonModule } from '@angular/common';
6
- import * as i1 from '@angular/cdk/platform';
7
- import * as i2$1 from '@bravobit/bb-foundation/localize';
8
- import { LocalizeModule } from '@bravobit/bb-foundation/localize';
9
- import { BehaviorSubject } from 'rxjs';
10
- import { share } from 'rxjs/operators';
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 {
30
- }
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
- ])
57
- ]);
58
-
59
- class BbNotificationsItem {
60
- get getClass() {
61
- return `bb-notifications-item ${this.notification.type}`;
62
- }
63
- constructor(_zone, _platform, _changeDetection) {
64
- this._zone = _zone;
65
- this._platform = _platform;
66
- this._changeDetection = _changeDetection;
67
- // Data.
68
- this._progress = 0;
69
- this._count = 0;
70
- // Data.
71
- this._radius = 19;
72
- this._circumference = this._radius * 2 * Math.PI;
73
- this.callActionAndDestroy = (notification, action) => {
74
- // Perform the callback (if it exists).
75
- action && action.callback && action.callback();
76
- // Call the destroy method (if it exists).
77
- notification && notification.destroy && notification.destroy();
78
- };
79
- this.instance = () => {
80
- // Calculate the difference.
81
- this._difference = (Date.now() - this._startTime) - (this._count * this._speed);
82
- // Add up the count.
83
- if (this._count++ === this._steps) {
84
- this.notification.destroy();
85
- }
86
- // Add the steps to the progress.
87
- this._progress += 100 / this._steps;
88
- // Set a new timer.
89
- this._timer = this.setTimeout(this.instance, this._speed - this._difference);
90
- // Run a new change detection cycle.
91
- this._zone.run(() => this._changeDetection.detectChanges());
92
- };
93
- this.setTimeout = (method, timeout) => {
94
- // Check if the window and method exist.
95
- if (!window || !window.setTimeout) {
96
- return null;
97
- }
98
- return window.setTimeout(method, timeout);
99
- };
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: "15.2.8", 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: "15.2.8", 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{inset: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: "15.2.8", 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{inset: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
- }] } });
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 === null || item === void 0 ? void 0 : 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
- var _a;
176
- const [y, x] = ((_a = this.data.position) !== null && _a !== void 0 ? _a : '').split('|');
177
- return { vertical: y !== null && y !== void 0 ? y : null, horizontal: x !== null && x !== void 0 ? x : null };
178
- }
179
- }
180
- BbNotificationsList.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbNotificationsList, deps: [{ token: NotificationsData }], target: i0.ɵɵFactoryTarget.Component });
181
- BbNotificationsList.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.8", 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{inset: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 });
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: BbNotificationsList, decorators: [{
183
- type: Component,
184
- args: [{ selector: 'bb-notifications-list', animations: [notificationAnimation], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
185
- 'class': 'bb-notifications-list',
186
- 'role': 'list'
187
- }, 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{inset: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"] }]
188
- }], ctorParameters: function () { return [{ type: NotificationsData }]; }, propDecorators: { horizontalPosition: [{
189
- type: HostBinding,
190
- args: ['style.justify-content']
191
- }], verticalPosition: [{
192
- type: HostBinding,
193
- args: ['style.align-items']
194
- }] } });
195
-
196
- class Notifications {
197
- constructor(_platform, _applicationRef, _environmentInjector, _localize, _config) {
198
- this._platform = _platform;
199
- this._applicationRef = _applicationRef;
200
- this._environmentInjector = _environmentInjector;
201
- this._localize = _localize;
202
- this._config = _config;
203
- // The data containing the notifications.
204
- this._notifications$ = new BehaviorSubject([]);
205
- this.getProperty = (property, defaultValue) => {
206
- return typeof property === 'undefined'
207
- ? defaultValue
208
- : property;
209
- };
210
- // Get the config.
211
- const config = this._config || {};
212
- // Set the config.
213
- this._defaultMode = this.getProperty(config.mode, 'prepend');
214
- this._defaultTimeout = this.getProperty(config.timeout, 8000);
215
- this._defaultLocalize = this.getProperty(config.localize, false);
216
- this._defaultDismiss = this.getProperty(config.dismiss, true);
217
- this._defaultDismissText = this.getProperty(config.dismissText, 'Dismiss');
218
- this._defaultPosition = this.getProperty(config.position, NotificationsPosition.TopRight);
219
- // Create the element that holds all notifications.
220
- this.createElement();
221
- }
222
- success(content, actions = [], timeout = this._defaultTimeout) {
223
- return this.create({ content, timeout, actions, type: NotificationType.Success });
224
- }
225
- error(content, actions = [], timeout = this._defaultTimeout) {
226
- return this.create({ content, timeout, actions, type: NotificationType.Error });
227
- }
228
- warn(content, actions = [], timeout = this._defaultTimeout) {
229
- return this.create({ content, timeout, actions, type: NotificationType.Warning });
230
- }
231
- info(content, actions = [], timeout = this._defaultTimeout) {
232
- return this.create({ content, timeout, actions, type: NotificationType.Info });
233
- }
234
- create(notification) {
235
- // Compose a new notification item.
236
- const item = this.compose(notification);
237
- // Add the destroy function to the notification.
238
- item.destroy = () => this.pull(item);
239
- // Add the notification to the list
240
- // and return the item.
241
- return this.push(item);
242
- }
243
- push(notification) {
244
- // Get the current list.
245
- const oldList = this._notifications$.getValue();
246
- // Check which mode is activated.
247
- let newList;
248
- switch (this._defaultMode) {
249
- case 'append':
250
- newList = [...oldList, notification];
251
- break;
252
- case 'prepend':
253
- default:
254
- newList = [notification, ...oldList];
255
- }
256
- // Push the new notifications.
257
- this._notifications$.next(newList);
258
- // Return the notification for further use.
259
- return notification;
260
- }
261
- pull(notification) {
262
- // Get the current list.
263
- const newList = this._notifications$
264
- .getValue()
265
- .filter(item => item.id !== notification.id);
266
- // Push a new list.
267
- this._notifications$.next(newList);
268
- }
269
- compose(notification) {
270
- // Attach a random id to the notification.
271
- notification.id = Math.random().toString(36).substring(2, 12);
272
- // Set all properties.
273
- notification.type = this.getProperty(notification.type, NotificationType.Custom);
274
- notification.content = this.getProperty(notification.content, null);
275
- notification.data = this.getProperty(notification.data, {});
276
- notification.timeout = this.getProperty(notification.timeout, this._defaultTimeout);
277
- notification.localize = this.getProperty(notification.localize, this._defaultLocalize);
278
- notification.dismiss = this.getProperty(notification.dismiss, this._defaultDismiss);
279
- // Dismiss text localization.
280
- const dismissText = this.getProperty(notification.dismissText, this._defaultDismissText);
281
- notification.dismissText = this._defaultLocalize && this._localize
282
- ? this._localize.translate(dismissText)
283
- : dismissText;
284
- // Return the composed notification.
285
- return notification;
286
- }
287
- createElement() {
288
- const environmentInjector = createEnvironmentInjector([
289
- {
290
- provide: NotificationsData,
291
- useValue: {
292
- data: this._notifications$.pipe(share()),
293
- dismissText: this._defaultDismissText,
294
- position: this._defaultPosition
295
- }
296
- }
297
- ], this._environmentInjector);
298
- // Create the component.
299
- this._ref = createComponent(BbNotificationsList, { environmentInjector });
300
- // Detect the changes.
301
- this._ref.changeDetectorRef.detectChanges();
302
- // Attach the component's view to the application
303
- // so that the change detection will run properly.
304
- this._applicationRef.attachView(this._ref.hostView);
305
- // If the platform is not a browser return.
306
- if (!this._platform.isBrowser) {
307
- return;
308
- }
309
- try {
310
- // Append the element to the DOM.
311
- document.body.appendChild(this._ref.location.nativeElement);
312
- }
313
- catch (_a) {
314
- // Don't do anything, because it must've failed.
315
- }
316
- }
317
- }
318
- Notifications.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: Notifications, deps: [{ token: i1.Platform }, { token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: i2$1.Localize, optional: true }, { token: NotificationsConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
319
- Notifications.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: Notifications });
320
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: Notifications, decorators: [{
321
- type: Injectable
322
- }], ctorParameters: function () {
323
- return [{ type: i1.Platform }, { type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }, { type: i2$1.Localize, decorators: [{
324
- type: Optional
325
- }] }, { type: NotificationsConfig, decorators: [{
326
- type: Optional
327
- }] }];
328
- } });
329
-
330
- class NotificationsModule {
331
- static forRoot(config) {
332
- return {
333
- ngModule: NotificationsModule,
334
- providers: [
335
- { provide: NotificationsConfig, useValue: config },
336
- Notifications
337
- ]
338
- };
339
- }
340
- }
341
- NotificationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NotificationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
342
- NotificationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.8", ngImport: i0, type: NotificationsModule, declarations: [BbNotificationsList, BbNotificationsItem], imports: [CommonModule, LocalizeModule] });
343
- NotificationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NotificationsModule, imports: [CommonModule, LocalizeModule] });
344
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: NotificationsModule, decorators: [{
345
- type: NgModule,
346
- args: [{
347
- imports: [CommonModule, LocalizeModule],
348
- declarations: [BbNotificationsList, BbNotificationsItem]
349
- }]
350
- }] });
351
-
352
- /**
353
- * Generated bundle index. Do not edit.
354
- */
355
-
356
- export { NotificationType, Notifications, NotificationsConfig, NotificationsData, NotificationsModule, NotificationsPosition };
357
- //# sourceMappingURL=bravobit-bb-foundation-notifications.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bravobit-bb-foundation-notifications.mjs","sources":["../../../projects/bb-foundation/notifications/src/lib/notifications.interfaces.ts","../../../projects/bb-foundation/notifications/src/lib/notifications.animations.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-item/notifications-item.component.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-item/notifications-item.component.html","../../../projects/bb-foundation/notifications/src/lib/notifications-list/notifications-list.component.ts","../../../projects/bb-foundation/notifications/src/lib/notifications-list/notifications-list.component.html","../../../projects/bb-foundation/notifications/src/lib/notifications.service.ts","../../../projects/bb-foundation/notifications/src/lib/notifications.module.ts","../../../projects/bb-foundation/notifications/src/bravobit-bb-foundation-notifications.ts"],"sourcesContent":["import {TemplateRef} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nexport interface Notification {\n content: string | TemplateRef<any>;\n\n id?: string;\n\n timeout?: number;\n localize?: boolean;\n dismiss?: boolean;\n dismissText?: string;\n data?: { [key: string]: any };\n type?: NotificationType;\n actions?: NotificationAction[];\n\n color?: string;\n backgroundColor?: string;\n\n destroy?: () => void;\n}\n\nexport interface NotificationAction {\n title: string;\n callback?: () => any;\n type?: 'default' | 'cancel';\n}\n\nexport enum NotificationType {\n Success = 'success',\n Error = 'error',\n Warning = 'warning',\n Info = 'info',\n Custom = 'custom'\n}\n\nexport class NotificationsConfig {\n mode?: 'append' | 'prepend';\n position?: NotificationsPosition;\n timeout?: number;\n dismiss?: boolean;\n localize?: boolean;\n dismissText?: string;\n}\n\nexport enum NotificationsPosition {\n TopRight = 'flex-start|flex-end',\n BottomRight = 'flex-end|flex-end',\n TopLeft = 'flex-start|flex-start',\n BottomLeft = 'flex-end|flex-start'\n}\n\nexport class NotificationsData {\n data: Observable<Notification[]>;\n dismissText: string;\n position: NotificationsPosition;\n}\n","import {animate, group, query, stagger, style, transition, trigger} from '@angular/animations';\n\nconst s = '250ms cubic-bezier(0, 0, .2, 1)';\nconst l = '400ms cubic-bezier(0, 0, .2, 1)';\n\nexport const notificationAnimation = trigger('notificationListAnimation', [\n transition('* => *', [\n query(':enter', group([\n // 1. Set the initial state.\n style({height: 0, opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'}),\n // 2. Start the animation to show the item.\n stagger(0, [\n animate(s, style({height: '*'})),\n animate(l, style({opacity: 1, transform: 'translateX(0) scale(0.95)'})),\n animate(s, style({transform: 'translateX(0) scale(1)'}))\n ])\n ]), {optional: true}),\n\n query(':leave', group([\n // 1. Set the initial state.\n style({height: '*', opacity: 1, transform: 'translateX(0) scale(1)'}),\n // 2. Start the animation to hide the item.\n stagger(0, [\n animate(s, style({transform: 'translateX(0) scale(0.95)'})),\n animate(l, style({opacity: 0, transform: 'translateX({{ to }}%) scale(0.95)'})),\n animate(s, style({height: 0}))\n ])\n ]), {optional: true})\n ])\n]);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport {Notification, NotificationAction} from '../notifications.interfaces';\nimport {Platform} from '@angular/cdk/platform';\n\n@Component({\n selector: 'bb-notifications-item',\n templateUrl: './notifications-item.component.html',\n styleUrls: ['./notifications-item.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'role': 'alert'\n }\n})\nexport class BbNotificationsItem implements OnInit, OnDestroy {\n\n // Inputs.\n @Input() notification: Notification;\n @Input() dismissButtonText: string | null;\n\n // Elements.\n @ViewChild('progress') progressElementRef: ElementRef;\n\n // Data.\n private _progress = 0;\n private _count = 0;\n\n // Helper variables.\n private _steps: number;\n private _speed: number;\n private _timer: number;\n private _startTime: number;\n private _difference: number;\n\n // Data.\n private readonly _radius = 19;\n private readonly _circumference = this._radius * 2 * Math.PI;\n\n @HostBinding('class') get getClass() {\n return `bb-notifications-item ${this.notification.type}`;\n }\n\n constructor(private _zone: NgZone,\n private _platform: Platform,\n private _changeDetection: ChangeDetectorRef) {\n }\n\n get progressStrokeArray() {\n const value = Math.floor(this._circumference);\n return `${value}, ${value}`;\n }\n\n get progressStrokeOffset() {\n return Math.floor(this._circumference - this._progress / 100 * this._circumference);\n }\n\n get isContentString() {\n return typeof this.notification.content === 'string';\n }\n\n ngOnInit() {\n // Check if the notification timeout is not 0 and the platform is a browser.\n if (this.notification.timeout <= 0 || !this._platform.isBrowser) {\n this.notification.dismiss = true;\n return;\n }\n\n // Start the timeout.\n this.startTimeout();\n }\n\n ngOnDestroy() {\n // Clear the timeout if it was set.\n this._timer && window && window.clearTimeout && window.clearTimeout(this._timer);\n }\n\n callActionAndDestroy = (notification: Notification, action: NotificationAction) => {\n // Perform the callback (if it exists).\n action && action.callback && action.callback();\n\n // Call the destroy method (if it exists).\n notification && notification.destroy && notification.destroy();\n };\n\n private startTimeout() {\n // Calculate the steps of the timeout.\n this._steps = this.notification.timeout / 10;\n\n // Calculate the speed of the timeout.\n this._speed = this.notification.timeout / this._steps;\n\n // Get the start time.\n this._startTime = Date.now();\n\n // Set a new timer outside of Angular.\n this._zone.runOutsideAngular(() => this._timer = this.setTimeout(this.instance, this._speed));\n }\n\n private instance = () => {\n // Calculate the difference.\n this._difference = (Date.now() - this._startTime) - (this._count * this._speed);\n\n // Add up the count.\n if (this._count++ === this._steps) {\n this.notification.destroy();\n }\n\n // Add the steps to the progress.\n this._progress += 100 / this._steps;\n\n // Set a new timer.\n this._timer = this.setTimeout(this.instance, this._speed - this._difference);\n\n // Run a new change detection cycle.\n this._zone.run(() => this._changeDetection.detectChanges());\n };\n\n private setTimeout = (method: () => void, timeout: number) => {\n // Check if the window and method exist.\n if (!window || !window.setTimeout) {\n return null;\n }\n\n return window.setTimeout(method, timeout);\n };\n\n}\n","<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","import {Notification, NotificationsData, NotificationsPosition} from '../notifications.interfaces';\nimport {ChangeDetectionStrategy, Component, HostBinding, ViewEncapsulation} from '@angular/core';\nimport {notificationAnimation} from '../notifications.animations';\n\n@Component({\n selector: 'bb-notifications-list',\n templateUrl: './notifications-list.component.html',\n styleUrls: ['./notifications-list.component.scss'],\n animations: [notificationAnimation],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n 'class': 'bb-notifications-list',\n 'role': 'list'\n }\n})\nexport class BbNotificationsList {\n\n // Data.\n position: NotificationsPosition | null = null;\n\n // Track by function.\n trackByFn = (_, item: Notification) => item?.id;\n\n constructor(public data: NotificationsData) {\n }\n\n @HostBinding('style.justify-content')\n get horizontalPosition() {\n return this.location.horizontal;\n }\n\n @HostBinding('style.align-items')\n get verticalPosition() {\n return this.location.vertical;\n }\n\n get animation() {\n const to = this.horizontalPosition === 'flex-start'\n ? -50\n : 50;\n\n return {to};\n }\n\n private get location() {\n const [y, x] = (this.data.position ?? '').split('|');\n\n return {vertical: y ?? null, horizontal: x ?? null};\n }\n\n}\n","<!--\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","import {Notification, NotificationAction, NotificationsPosition, NotificationsConfig, NotificationType, NotificationsData} from './notifications.interfaces';\nimport {ApplicationRef, ComponentRef, createComponent, createEnvironmentInjector, EnvironmentInjector, Injectable, Optional, TemplateRef} from '@angular/core';\nimport {BbNotificationsList} from './notifications-list/notifications-list.component';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {Platform} from '@angular/cdk/platform';\nimport {BehaviorSubject} from 'rxjs';\nimport {share} from 'rxjs/operators';\n\n@Injectable()\nexport class Notifications {\n\n // Reference to the list.\n private _ref: ComponentRef<BbNotificationsList>;\n\n // The default settings for the notifications.\n private readonly _defaultMode: 'prepend' | 'append';\n private readonly _defaultTimeout: number;\n private readonly _defaultLocalize: boolean;\n private readonly _defaultDismiss: boolean;\n private readonly _defaultDismissText: string;\n private readonly _defaultPosition: NotificationsPosition;\n\n // The data containing the notifications.\n private _notifications$ = new BehaviorSubject<Notification[]>([]);\n\n constructor(private _platform: Platform,\n private _applicationRef: ApplicationRef,\n private _environmentInjector: EnvironmentInjector,\n @Optional() private _localize?: Localize,\n @Optional() private _config?: NotificationsConfig) {\n // Get the config.\n const config = this._config || {};\n\n // Set the config.\n this._defaultMode = this.getProperty(config.mode, 'prepend');\n this._defaultTimeout = this.getProperty(config.timeout, 8000);\n this._defaultLocalize = this.getProperty(config.localize, false);\n this._defaultDismiss = this.getProperty(config.dismiss, true);\n this._defaultDismissText = this.getProperty(config.dismissText, 'Dismiss');\n this._defaultPosition = this.getProperty(config.position, NotificationsPosition.TopRight);\n\n // Create the element that holds all notifications.\n this.createElement();\n }\n\n success(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Success});\n }\n\n error(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Error});\n }\n\n warn(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Warning});\n }\n\n info(content: string | TemplateRef<any>, actions: NotificationAction[] = [], timeout = this._defaultTimeout) {\n return this.create({content, timeout, actions, type: NotificationType.Info});\n }\n\n create(notification: Notification) {\n // Compose a new notification item.\n const item = this.compose(notification);\n\n // Add the destroy function to the notification.\n item.destroy = () => this.pull(item);\n\n // Add the notification to the list\n // and return the item.\n return this.push(item);\n }\n\n private push(notification: Notification) {\n // Get the current list.\n const oldList = this._notifications$.getValue();\n\n // Check which mode is activated.\n let newList: Notification[];\n switch (this._defaultMode) {\n case 'append':\n newList = [...oldList, notification];\n break;\n case 'prepend':\n default:\n newList = [notification, ...oldList];\n }\n\n // Push the new notifications.\n this._notifications$.next(newList);\n\n // Return the notification for further use.\n return notification;\n }\n\n private pull(notification: Notification) {\n // Get the current list.\n const newList = this._notifications$\n .getValue()\n .filter(item => item.id !== notification.id);\n\n // Push a new list.\n this._notifications$.next(newList);\n }\n\n private compose(notification: Notification) {\n // Attach a random id to the notification.\n notification.id = Math.random().toString(36).substring(2, 12);\n\n // Set all properties.\n notification.type = this.getProperty(notification.type, NotificationType.Custom);\n notification.content = this.getProperty(notification.content, null);\n notification.data = this.getProperty(notification.data, {});\n notification.timeout = this.getProperty(notification.timeout, this._defaultTimeout);\n notification.localize = this.getProperty(notification.localize, this._defaultLocalize);\n notification.dismiss = this.getProperty(notification.dismiss, this._defaultDismiss);\n\n // Dismiss text localization.\n const dismissText = this.getProperty(notification.dismissText, this._defaultDismissText);\n notification.dismissText = this._defaultLocalize && this._localize\n ? this._localize.translate(dismissText)\n : dismissText;\n\n // Return the composed notification.\n return notification;\n }\n\n private createElement() {\n const environmentInjector = createEnvironmentInjector([\n {\n provide: NotificationsData,\n useValue: {\n data: this._notifications$.pipe(share()),\n dismissText: this._defaultDismissText,\n position: this._defaultPosition\n }\n }\n ], this._environmentInjector);\n\n // Create the component.\n this._ref = createComponent(BbNotificationsList, {environmentInjector});\n\n // Detect the changes.\n this._ref.changeDetectorRef.detectChanges();\n\n // Attach the component's view to the application\n // so that the change detection will run properly.\n this._applicationRef.attachView(this._ref.hostView);\n\n // If the platform is not a browser return.\n if (!this._platform.isBrowser) {\n return;\n }\n\n try {\n // Append the element to the DOM.\n document.body.appendChild(this._ref.location.nativeElement);\n } catch {\n // Don't do anything, because it must've failed.\n }\n }\n\n private getProperty = (property: any, defaultValue: any) => {\n return typeof property === 'undefined'\n ? defaultValue\n : property;\n };\n\n}\n","import {BbNotificationsList} from './notifications-list/notifications-list.component';\nimport {BbNotificationsItem} from './notifications-item/notifications-item.component';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {NotificationsConfig} from './notifications.interfaces';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {Notifications} from './notifications.service';\nimport {CommonModule} from '@angular/common';\n\n@NgModule({\n imports: [CommonModule, LocalizeModule],\n declarations: [BbNotificationsList, BbNotificationsItem]\n})\nexport class NotificationsModule {\n\n static forRoot(config?: NotificationsConfig): ModuleWithProviders<NotificationsModule> {\n return {\n ngModule: NotificationsModule,\n providers: [\n {provide: NotificationsConfig, useValue: config},\n Notifications\n ]\n };\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i1.NotificationsData","i3.BbNotificationsItem","i2","i3.NotificationsConfig"],"mappings":"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"}