@bravobit/bb-foundation 0.20.3 → 0.21.2

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 (273) hide show
  1. package/auth/{bravobit-bb-foundation-auth.d.ts → index.d.ts} +0 -0
  2. package/auth/lib/directives/authenticated.directive.d.ts +1 -1
  3. package/auth/lib/directives/permission.directive.d.ts +1 -1
  4. package/auth/lib/directives/role.directive.d.ts +1 -1
  5. package/collections/{bravobit-bb-foundation-collections.d.ts → index.d.ts} +0 -0
  6. package/collections/lib/collection.d.ts +6 -7
  7. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +1 -1
  8. package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +1 -1
  9. package/collections/lib/components/collections.directive.d.ts +4 -4
  10. package/collections/lib/interfaces/collection.interface.d.ts +1 -0
  11. package/collections/lib/providers/api-collection.provider.d.ts +7 -8
  12. package/controls/{bravobit-bb-foundation-controls.d.ts → index.d.ts} +0 -0
  13. package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +10 -10
  14. package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +9 -5
  15. package/dashboard/{bravobit-bb-foundation-dashboard.d.ts → index.d.ts} +0 -0
  16. package/dashboard/lib/dashboard/dashboard.component.d.ts +1 -1
  17. package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +1 -1
  18. package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
  19. package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +1 -1
  20. package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +1 -1
  21. package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +1 -1
  22. package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +1 -1
  23. package/dialog/{bravobit-bb-foundation-dialog.d.ts → index.d.ts} +0 -0
  24. package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +1 -1
  25. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +1 -1
  26. package/dialog/lib/dialog-container/dialog-container.component.d.ts +1 -1
  27. package/dialog/lib/dialog-header/dialog-header.component.d.ts +1 -1
  28. package/dialog/lib/dialog-link/dialog-link.component.d.ts +1 -1
  29. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
  30. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +1 -1
  31. package/dialog/lib/dialog.insertion.d.ts +1 -1
  32. package/elements/{bravobit-bb-foundation-elements.d.ts → index.d.ts} +0 -0
  33. package/elements/lib/avatar/avatar.component.d.ts +1 -1
  34. package/elements/lib/button/button.component.d.ts +2 -2
  35. package/elements/lib/checkbox/checkbox.component.d.ts +1 -1
  36. package/elements/lib/date-picker/date-picker.component.d.ts +2 -2
  37. package/elements/lib/directives/addon.directive.d.ts +2 -2
  38. package/elements/lib/directives/autosize.directive.d.ts +1 -1
  39. package/elements/lib/directives/focus-trap.directive.d.ts +1 -1
  40. package/elements/lib/directives/focus.directive.d.ts +1 -1
  41. package/elements/lib/directives/form-submit.directive.d.ts +1 -1
  42. package/elements/lib/directives/input.directive.d.ts +2 -2
  43. package/elements/lib/directives/template.directive.d.ts +1 -1
  44. package/elements/lib/dropdown/dropdown.component.d.ts +2 -2
  45. package/elements/lib/file-picker/file-picker.component.d.ts +2 -2
  46. package/elements/lib/form-control/form-control.component.d.ts +1 -1
  47. package/elements/lib/form-error/form-error.component.d.ts +1 -1
  48. package/elements/lib/form-group/form-group.component.d.ts +1 -1
  49. package/elements/lib/icon/icon.component.d.ts +1 -1
  50. package/elements/lib/image-picker/image-picker.component.d.ts +1 -1
  51. package/elements/lib/pipes/file-image.pipe.d.ts +1 -1
  52. package/elements/lib/pipes/file-size.pipe.d.ts +1 -1
  53. package/elements/lib/pipes/relative-time.pipe.d.ts +1 -1
  54. package/elements/lib/spinner/spinner.component.d.ts +1 -1
  55. package/elements/lib/tag/tag.component.d.ts +1 -1
  56. package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
  57. package/esm2020/auth/lib/auth.module.mjs +6 -6
  58. package/esm2020/auth/lib/auth.service.mjs +5 -5
  59. package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
  60. package/esm2020/auth/lib/directives/permission.directive.mjs +3 -3
  61. package/esm2020/auth/lib/directives/role.directive.mjs +3 -3
  62. package/esm2020/auth/lib/guards/anonymous.guard.mjs +5 -5
  63. package/esm2020/auth/lib/guards/authenticated.guard.mjs +3 -3
  64. package/esm2020/auth/lib/helpers/mapper.helper.mjs +3 -3
  65. package/esm2020/auth/lib/permissions.service.mjs +3 -3
  66. package/esm2020/collections/lib/collection.mjs +10 -12
  67. package/esm2020/collections/lib/collections.module.mjs +5 -5
  68. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
  69. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
  70. package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
  71. package/esm2020/collections/lib/interfaces/collection.interface.mjs +1 -1
  72. package/esm2020/collections/lib/providers/api-collection.provider.mjs +24 -4
  73. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +6 -6
  74. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +19 -6
  75. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +5 -5
  76. package/esm2020/controls/lib/controls.module.mjs +5 -5
  77. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
  78. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
  79. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
  80. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
  81. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
  82. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +5 -5
  83. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
  84. package/esm2020/dashboard/lib/dashboard.module.mjs +5 -5
  85. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  86. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +8 -8
  87. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +4 -4
  88. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
  89. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
  90. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
  91. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
  92. package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
  93. package/esm2020/dialog/lib/dialog.module.mjs +7 -9
  94. package/esm2020/dialog/lib/dialog.service.mjs +3 -3
  95. package/esm2020/elements/lib/avatar/avatar.component.mjs +3 -3
  96. package/esm2020/elements/lib/button/button.component.mjs +6 -6
  97. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +5 -5
  98. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +12 -12
  99. package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
  100. package/esm2020/elements/lib/directives/autosize.directive.mjs +3 -3
  101. package/esm2020/elements/lib/directives/focus-trap.directive.mjs +3 -3
  102. package/esm2020/elements/lib/directives/focus.directive.mjs +3 -3
  103. package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
  104. package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
  105. package/esm2020/elements/lib/directives/template.directive.mjs +3 -3
  106. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +7 -7
  107. package/esm2020/elements/lib/elements.module.mjs +5 -5
  108. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +10 -10
  109. package/esm2020/elements/lib/form-control/form-control.component.mjs +6 -6
  110. package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
  111. package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
  112. package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
  113. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +5 -5
  114. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
  115. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
  116. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
  117. package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
  118. package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
  119. package/esm2020/http/lib/http.module.mjs +5 -5
  120. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
  121. package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
  122. package/esm2020/lib/core/services/clipboard.service.mjs +3 -3
  123. package/esm2020/lib/core/services/exif.service.mjs +3 -3
  124. package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
  125. package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
  126. package/esm2020/lib/core/services/languages.service.mjs +3 -3
  127. package/esm2020/lib/core/services/network.service.mjs +3 -3
  128. package/esm2020/lib/core/services/patch.service.mjs +3 -3
  129. package/esm2020/lib/core/services/platform.service.mjs +3 -3
  130. package/esm2020/localize/lib/localize.module.mjs +5 -5
  131. package/esm2020/localize/lib/localize.pipe.mjs +3 -3
  132. package/esm2020/localize/lib/localize.service.mjs +3 -3
  133. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
  134. package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +3 -3
  135. package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
  136. package/esm2020/masking/bravobit-bb-foundation-masking.mjs +5 -0
  137. package/esm2020/masking/lib/input-mask.directive.mjs +110 -0
  138. package/esm2020/masking/lib/input-mask.interface.mjs +2 -0
  139. package/esm2020/masking/lib/masking.module.mjs +16 -0
  140. package/esm2020/masking/lib/masking.service.mjs +94 -0
  141. package/esm2020/masking/public_api.mjs +5 -0
  142. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
  143. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +6 -6
  144. package/esm2020/notifications/lib/notifications.module.mjs +5 -5
  145. package/esm2020/notifications/lib/notifications.service.mjs +3 -3
  146. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
  147. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
  148. package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
  149. package/esm2020/rxjs/lib/observables/get-control-value.observable.mjs +6 -0
  150. package/esm2020/rxjs/public_api.mjs +2 -1
  151. package/esm2020/storage/lib/storage.service.mjs +8 -8
  152. package/esm2020/table/lib/components/table/table.component.mjs +14 -14
  153. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
  154. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +4 -4
  155. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +6 -6
  156. package/esm2020/table/lib/table.module.mjs +5 -5
  157. package/esm2020/theming/bravobit-bb-foundation-theming.mjs +5 -0
  158. package/esm2020/theming/lib/themes/checkbox-group.theme.mjs +2 -0
  159. package/esm2020/theming/lib/themes/checkbox.theme.mjs +2 -0
  160. package/esm2020/theming/lib/themes/theme.mjs +34 -0
  161. package/esm2020/theming/lib/theming.interface.mjs +3 -0
  162. package/esm2020/theming/lib/theming.module.mjs +38 -0
  163. package/esm2020/theming/lib/theming.service.mjs +77 -0
  164. package/esm2020/theming/public_api.mjs +7 -0
  165. package/fesm2015/bravobit-bb-foundation-auth.mjs +33 -33
  166. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
  167. package/fesm2015/bravobit-bb-foundation-collections.mjs +56 -37
  168. package/fesm2015/bravobit-bb-foundation-collections.mjs.map +1 -1
  169. package/fesm2015/bravobit-bb-foundation-controls.mjs +31 -18
  170. package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
  171. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +26 -26
  172. package/fesm2015/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  173. package/fesm2015/bravobit-bb-foundation-dialog.mjs +34 -36
  174. package/fesm2015/bravobit-bb-foundation-dialog.mjs.map +1 -1
  175. package/fesm2015/bravobit-bb-foundation-elements.mjs +143 -143
  176. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
  177. package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
  178. package/fesm2015/bravobit-bb-foundation-http.mjs.map +1 -1
  179. package/fesm2015/bravobit-bb-foundation-localize.mjs +19 -19
  180. package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
  181. package/fesm2015/bravobit-bb-foundation-masking.mjs +235 -0
  182. package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -0
  183. package/fesm2015/bravobit-bb-foundation-notifications.mjs +14 -14
  184. package/fesm2015/bravobit-bb-foundation-notifications.mjs.map +1 -1
  185. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
  186. package/fesm2015/bravobit-bb-foundation-rxjs.mjs +7 -3
  187. package/fesm2015/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  188. package/fesm2015/bravobit-bb-foundation-storage.mjs +7 -7
  189. package/fesm2015/bravobit-bb-foundation-storage.mjs.map +1 -1
  190. package/fesm2015/bravobit-bb-foundation-table.mjs +27 -27
  191. package/fesm2015/bravobit-bb-foundation-table.mjs.map +1 -1
  192. package/fesm2015/bravobit-bb-foundation-theming.mjs +164 -0
  193. package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -0
  194. package/fesm2015/bravobit-bb-foundation.mjs +24 -24
  195. package/fesm2020/bravobit-bb-foundation-auth.mjs +33 -33
  196. package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
  197. package/fesm2020/bravobit-bb-foundation-collections.mjs +55 -37
  198. package/fesm2020/bravobit-bb-foundation-collections.mjs.map +1 -1
  199. package/fesm2020/bravobit-bb-foundation-controls.mjs +31 -18
  200. package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
  201. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +26 -26
  202. package/fesm2020/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  203. package/fesm2020/bravobit-bb-foundation-dialog.mjs +34 -36
  204. package/fesm2020/bravobit-bb-foundation-dialog.mjs.map +1 -1
  205. package/fesm2020/bravobit-bb-foundation-elements.mjs +143 -143
  206. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
  207. package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
  208. package/fesm2020/bravobit-bb-foundation-http.mjs.map +1 -1
  209. package/fesm2020/bravobit-bb-foundation-localize.mjs +19 -19
  210. package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
  211. package/fesm2020/bravobit-bb-foundation-masking.mjs +223 -0
  212. package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -0
  213. package/fesm2020/bravobit-bb-foundation-notifications.mjs +14 -14
  214. package/fesm2020/bravobit-bb-foundation-notifications.mjs.map +1 -1
  215. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
  216. package/fesm2020/bravobit-bb-foundation-rxjs.mjs +7 -3
  217. package/fesm2020/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  218. package/fesm2020/bravobit-bb-foundation-storage.mjs +7 -7
  219. package/fesm2020/bravobit-bb-foundation-storage.mjs.map +1 -1
  220. package/fesm2020/bravobit-bb-foundation-table.mjs +27 -27
  221. package/fesm2020/bravobit-bb-foundation-table.mjs.map +1 -1
  222. package/fesm2020/bravobit-bb-foundation-theming.mjs +154 -0
  223. package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -0
  224. package/fesm2020/bravobit-bb-foundation.mjs +24 -24
  225. package/http/{bravobit-bb-foundation-http.d.ts → index.d.ts} +0 -0
  226. package/{bravobit-bb-foundation.d.ts → index.d.ts} +0 -0
  227. package/localize/{bravobit-bb-foundation-localize.d.ts → index.d.ts} +0 -0
  228. package/localize/lib/localize.pipe.d.ts +1 -1
  229. package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
  230. package/localize/lib/views/localize-template-or-string.directive.d.ts +1 -1
  231. package/localize/lib/views/localize-template.directive.d.ts +1 -1
  232. package/masking/index.d.ts +5 -0
  233. package/masking/lib/input-mask.directive.d.ts +36 -0
  234. package/masking/lib/input-mask.interface.d.ts +20 -0
  235. package/masking/lib/masking.module.d.ts +7 -0
  236. package/masking/lib/masking.service.d.ts +12 -0
  237. package/masking/public_api.d.ts +4 -0
  238. package/notifications/{bravobit-bb-foundation-notifications.d.ts → index.d.ts} +0 -0
  239. package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
  240. package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -1
  241. package/package.json +36 -19
  242. package/recaptcha/{bravobit-bb-foundation-recaptcha.d.ts → index.d.ts} +0 -0
  243. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +1 -1
  244. package/rxjs/{bravobit-bb-foundation-rxjs.d.ts → index.d.ts} +0 -0
  245. package/rxjs/lib/observables/get-control-value.observable.d.ts +3 -0
  246. package/rxjs/public_api.d.ts +1 -0
  247. package/storage/{bravobit-bb-foundation-storage.d.ts → index.d.ts} +0 -0
  248. package/table/{bravobit-bb-foundation-table.d.ts → index.d.ts} +0 -0
  249. package/table/lib/components/table/table.component.d.ts +7 -7
  250. package/table/lib/components/table-cell/table-cell.component.d.ts +1 -1
  251. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +1 -1
  252. package/table/lib/components/table-pager/table-pager.component.d.ts +1 -1
  253. package/theming/index.d.ts +5 -0
  254. package/theming/lib/themes/checkbox-group.theme.d.ts +5 -0
  255. package/theming/lib/themes/checkbox.theme.d.ts +19 -0
  256. package/theming/lib/themes/theme.d.ts +12 -0
  257. package/theming/lib/theming.interface.d.ts +15 -0
  258. package/theming/lib/theming.module.d.ts +13 -0
  259. package/theming/lib/theming.service.d.ts +22 -0
  260. package/theming/public_api.d.ts +6 -0
  261. package/auth/package.json +0 -10
  262. package/collections/package.json +0 -10
  263. package/controls/package.json +0 -10
  264. package/dashboard/package.json +0 -10
  265. package/dialog/package.json +0 -10
  266. package/elements/package.json +0 -10
  267. package/http/package.json +0 -10
  268. package/localize/package.json +0 -10
  269. package/notifications/package.json +0 -10
  270. package/recaptcha/package.json +0 -10
  271. package/rxjs/package.json +0 -10
  272. package/storage/package.json +0 -10
  273. package/table/package.json +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-table.mjs","sources":["../../../projects/bb-foundation/table/src/lib/data/datasource.data.ts","../../../projects/bb-foundation/table/src/lib/data/generic.data.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.html","../../../projects/bb-foundation/table/src/lib/components/table/table.component.ts","../../../projects/bb-foundation/table/src/lib/components/table/table.component.html","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.html","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.html","../../../projects/bb-foundation/table/src/lib/table.module.ts","../../../projects/bb-foundation/table/src/bravobit-bb-foundation-table.ts"],"sourcesContent":["import {DataSourcePageRequest, DataSourcePageResponse} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport class DataSourceRequest {\n\n // Data.\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\n private _loading$ = new BehaviorSubject<boolean>(true);\n\n get loading() {\n return this._loading$.asObservable();\n }\n\n get when() {\n return this._request$.pipe(\n filter(data => !!data)\n );\n }\n\n startLoading() {\n this._loading$.next(true);\n }\n\n stopLoading() {\n this._loading$.next(false);\n }\n\n update(params: Partial<DataSourcePageRequest> = {}) {\n const currentValue = this._request$.getValue();\n\n // Set the page number to 1 if the query or page size was changed.\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\n params.pageNumber = 1;\n }\n\n this._request$.next({...currentValue, ...params});\n }\n\n}\n\nexport abstract class DataSource<T = any> {\n\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\n\n}\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {DataSource, DataSourceRequest} from './datasource.data';\nimport {map, share, switchMap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class GenericDataSource<T = any> extends DataSource<T> {\n\n private readonly _httpClient: HttpClient;\n private readonly _endpoint$: Observable<string>;\n\n // Data.\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\n private _fn: (data: T[]) => T[] = data => data;\n\n constructor(httpClient: HttpClient,\n endpoint: Observable<string> | string) {\n super();\n\n this._httpClient = httpClient;\n this._endpoint$ = typeof endpoint === 'string'\n ? of<string>(endpoint)\n : endpoint;\n\n }\n\n append(item: Observable<{ [key: string]: string } | null>) {\n const currentValue = this._items$.getValue();\n const newValue = [...currentValue, item];\n this._items$.next(newValue);\n\n return this;\n }\n\n data(fn: (data: T[]) => T[]) {\n this._fn = fn;\n return this;\n }\n\n handle(request: DataSourceRequest) {\n const extraParams$ = this._items$.pipe(\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\n );\n\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\n switchMap(([params, endpoint, extraParams]) => {\n // Start the loading.\n request.startLoading();\n\n const formattedParams = this.formatParams(params);\n const combinedParams = {...formattedParams, ...extraParams};\n\n return this._httpClient.get(endpoint, {\n params: combinedParams\n }).pipe(\n map(data => this.formatResponse(data)),\n map(result => ({\n ...result,\n data: this._fn(result?.data ?? [])\n }))\n );\n }),\n share()\n );\n }\n\n private formatResponse = <T = any>(data: unknown) => {\n return {\n pageSize: data?.['page_size'] as number,\n pageNumber: data?.['page_number'] as number,\n totalPages: data?.['total_pages'] as number,\n totalEntries: data?.['total_entries'] as number,\n data: data?.['data'] as T[]\n };\n };\n\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\n const params = {};\n\n params['page'] = `${data?.pageNumber ?? 1}`;\n params['page_size'] = `${data?.pageSize ?? 25}`;\n\n const sort = (data?.sort ?? [])\n .map(({name}) => name)\n .filter(name => !!name)\n .join(',');\n\n const sortDirection = (data?.sort ?? [])\n .map(({direction}) => direction)\n .filter(direction => !!direction)\n .join(',');\n\n if (sort?.length > 0 && sortDirection?.length > 0) {\n params['sort'] = sort;\n params['sort_direction'] = sortDirection;\n }\n\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\n params['query'] = data?.query;\n params['query_fields'] = data?.queryFields?.join(',');\n }\n\n return params;\n };\n\n}\n","import {ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\nclass BbTablePagerBase {\n}\n\nconst BbTablePagerMixinBase: CanDisableConstructor\n & typeof BbTablePagerBase\n = mixinDisabled(BbTablePagerBase);\n\n@Component({\n selector: 'bb-table-pager',\n templateUrl: './table-pager.component.html',\n styleUrls: ['./table-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-pager',\n '[class.disabled]': 'disabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\n ]\n})\nexport class BbTablePager extends BbTablePagerMixinBase implements OnInit, ControlValueAccessor {\n\n // Inputs.\n @Input() amountOfButtons: number = 5;\n @Input() showArrowButtons: boolean = true;\n\n // Observables.\n isPreviousDisabled$: Observable<boolean>;\n isNextDisabled$: Observable<boolean>;\n list$: Observable<{ page: number, active: boolean }[]>;\n\n // Methods.\n onChange: (newValue: number) => void = () => ({});\n onTouched: () => void = () => ({});\n trackByIndex = (_, item) => item.page;\n\n // Data.\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n\n ngOnInit() {\n // Validate the previous button is disabled.\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\n map(pageNumber => pageNumber === 1)\n );\n\n // Validate the next button is disabled.\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\n );\n\n // Create the list with page numbers.\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\n share()\n );\n }\n\n get pageNumber() {\n return this._pageNumber$.getValue();\n }\n\n @Input()\n set pageNumber(newValue: number) {\n this.update(newValue);\n }\n\n get totalPages() {\n return this._totalPages$.getValue();\n }\n\n @Input()\n set totalPages(newValue: number) {\n const newTotalPages = Math.max(1, newValue);\n this._totalPages$.next(newTotalPages);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: number) {\n this.update(newValue, false);\n }\n\n goToPrevious() {\n const newValue = this._pageNumber$.getValue() - 1;\n return this.update(newValue);\n }\n\n goToNext() {\n const newValue = this._pageNumber$.getValue() + 1;\n return this.update(newValue);\n }\n\n goToIndex(index: number) {\n return this.update(index);\n }\n\n private update(pageNumber: number, notify: boolean = true) {\n // You can only update when not disabled.\n if (this.disabled) {\n return;\n }\n\n // Calculate the new value.\n const newValue = Math.min(\n this.totalPages,\n Math.max(1, pageNumber)\n );\n\n // Don't do anything if the page number is the same.\n if (this._pageNumber$.getValue() === newValue) {\n return;\n }\n\n // Push the new value.\n this._pageNumber$.next(newValue);\n\n if (notify) {\n return this.onChange(pageNumber);\n }\n }\n\n private calculatePages(pageNumber: number) {\n const min = 1;\n const max = this.totalPages;\n const amount = Math.max(1, this.amountOfButtons);\n\n const data = Array(amount)\n .fill(0)\n .map((_, index) => pageNumber + (index - 1));\n\n // Validate if the minimum value less than\n // the first value.\n if (data[0] < min) {\n return data.map(item => item + 1);\n }\n\n // Calculate the difference with the max\n // if this value is higher than 0 we should minus it.\n const lastValueInArray = data[data.length - 1];\n const differenceWithMax = lastValueInArray - max;\n if (differenceWithMax > 0) {\n return data.map(item => item - differenceWithMax);\n }\n\n // Just return the default data.\n return data;\n }\n\n private filterActivePages(pageNumber: number, totalPages: number) {\n return this.calculatePages(pageNumber)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\n </button>\n </li>\n\n <!-- The list of number buttons to navigate through the list. -->\n <ng-container *ngIf=\"list$ | async as list\">\n <li *ngFor=\"let item of list; trackBy: trackByIndex\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n </ng-container>\n\n <!-- The next page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\n </button>\n </li>\n</ul>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChild,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {FormControl, FormGroup} from '@angular/forms';\n\n@Directive({\n selector: '[bbTableColumnDef]'\n})\nexport class BbTableColumnDef {\n}\n\n@Directive({\n selector: '[bbTableRowDef]'\n})\nexport class BbTableRowDef {\n}\n\n@Component({\n selector: 'bb-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n host: {'class': 'bb-table'},\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTable implements OnInit, OnDestroy {\n\n // Content.\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() identifier: string | null = null;\n @Input() dataSource: DataSource;\n @Input() queryFields: string[] = [];\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\n @Input() header: TemplateRef<any> | boolean = true;\n @Input() footer: TemplateRef<any> | boolean = true;\n\n // Sizes.\n private _sizes: number[] = [25, 50, 75, 100];\n\n get sizes() {\n return this._sizes;\n }\n\n @Input()\n set sizes(newValue: number[]) {\n this.updateSizes(newValue);\n }\n\n // Optimizations.\n trackByFn = (index, item) => this.identifier ? item[this.identifier] : index;\n trackByValue = (_, item) => item;\n\n // Data.\n request: DataSourceRequest;\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\n isLoading$: Observable<boolean>;\n\n // Form.\n form: FormGroup;\n queryControl = new FormControl('');\n\n // State.\n private _headerCount: number = 0;\n\n // Subscriptions.\n private _subscription: Subscription;\n\n ngOnInit() {\n this.composeForm();\n this.watchDataChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n get headerCount() {\n return this._headerCount;\n }\n\n get sortControl() {\n return this.form?.get('sort') as FormGroup;\n }\n\n get pageNumberControl() {\n return this.form?.get('pageNumber') as FormControl;\n }\n\n get pageSizeControl() {\n return this.form?.get('pageSize') as FormControl;\n }\n\n refresh() {\n return this.request.update();\n }\n\n setHeaderCount(amount: -1 | 1) {\n this._headerCount += amount;\n }\n\n private updateSizes(newValue: number[]) {\n // Validate the sizes has at least one value.\n if (newValue.length <= 0) {\n throw new Error('Cannot set an empty array as the sizes.');\n }\n\n // Set the new size.\n this._sizes = newValue;\n\n // Validate that the form exists already.\n if (!this.form) {\n return;\n }\n\n // Check if the current selected value is\n // in the new sizes array.\n const pageSizeControl = this.form.get('pageSize');\n if (this._sizes.includes(pageSizeControl.value)) {\n return;\n }\n\n // Set the first value in the array as\n // the new value.\n const firstValue = this._sizes[0];\n pageSizeControl.setValue(firstValue);\n }\n\n private composeForm() {\n // Setup the form.\n this.form = new FormGroup({\n pageSize: new FormControl(this._sizes[0]),\n pageNumber: new FormControl(1),\n sort: new FormGroup({})\n });\n }\n\n private watchDataChanges() {\n // Create a new request.\n this.request = new DataSourceRequest();\n this.isLoading$ = this.request.loading;\n\n if (!this.dataSource) {\n this.data$ = of({state: 'error_datasource'}).pipe(\n tap(() => this.request.stopLoading())\n );\n return;\n }\n\n // Pass the request to the data source.\n this.data$ = this.dataSource.handle(this.request).pipe(\n tap(() => this.request.stopLoading()),\n map(result => {\n const count = (result && result.data && result.data.length) || 0;\n if (count <= 0) {\n return {state: 'empty', result};\n }\n\n return {state: 'success', result};\n }),\n catchError(error => {\n this.request.stopLoading();\n\n const statusCode = error?.status ?? null;\n const states = {\n 0: 'error_down',\n 401: 'error_unauthorized',\n 403: 'error_forbidden',\n 404: 'error_not_found',\n 500: 'error_server'\n };\n\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\n })\n );\n\n // Subscribe to the data changes.\n this.subscribeToChanges();\n }\n\n private subscribeToChanges() {\n const form$ = this.getFormChanges();\n const query$ = this.getQueryChanges();\n\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\n const {pageNumber, pageSize} = form;\n const sort = Object.keys(form.sort)\n .map(name => ({name, direction: form.sort[name]}))\n .filter(item => ['asc', 'desc'].includes(item.direction));\n\n this.request.startLoading();\n return this.request.update({\n sort,\n query,\n pageSize,\n pageNumber,\n queryFields: this.queryFields\n });\n });\n }\n\n private getQueryChanges() {\n return this.queryControl.valueChanges.pipe(\n debounceTime(400),\n distinctUntilChanged(),\n startWith(this.queryControl.value as string)\n );\n }\n\n private getFormChanges() {\n return this.form.valueChanges.pipe(\n startWith(this.form.value as object)\n );\n }\n\n}\n","<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\n class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</header>\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n <div *ngIf=\"isLoading$ | async\"\n class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchCase=\"'success'\">\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\n </ng-container>\n\n <ng-template #tableCellsTemplates>\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_datasource'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_not_found'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_server'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_down'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\n class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</footer>\n\n<ng-template #isLoadingTemplate>\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\n bbSuffix\n src=\"material:search\">\n </bb-icon>\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n <bb-form-control *ngIf=\"sizes?.length > 1\">\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\n [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n </select>\n </bb-form-control>\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<!--\n This the template that will be used when the user\n has filled in some data in the query control.\n-->\n\n<ng-template #closeButtonTemplate>\n <button bbSuffix\n (click)=\"queryControl?.patchValue('')\"\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n</ng-template>\n\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n <span *ngIf=\"status as statusCode\"\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n </div>\n </td>\n </tr>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-table-cell'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableCell {\n}\n","<div>\n <ng-content></ng-content>\n</div>","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Host,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\nimport {BbTable} from '../table/table.component';\nimport {FormControl} from '@angular/forms';\nimport {startWith} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\n\nclass BbTableHeaderCellBase {\n}\n\nconst BbTableHeaderCellMixinBase: CanDisableConstructor\n & typeof BbTableHeaderCellBase = mixinDisabled(BbTableHeaderCellBase);\n\n@Component({\n selector: 'bb-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-header-cell',\n '[class.disabled]': 'isDisabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableHeaderCell extends BbTableHeaderCellMixinBase implements OnInit, OnDestroy, CanDisable {\n\n // Constants.\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\n private readonly _control = new FormControl(this._sortDirections[0]);\n\n // Data.\n valueChanges$: Observable<string>;\n\n // Sort.\n @Input()\n set sort(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Set the value.\n this._control.setValue(value);\n }\n\n get sort() {\n return this._control.value;\n }\n\n constructor(@Optional() @Host() private _table?: BbTable,\n @Optional() @Attribute('name') private _name?: string) {\n super();\n }\n\n ngOnInit() {\n // Validate that the name and table are set.\n this._table?.setHeaderCount?.(1);\n if (!this._table || !this._name) {\n return;\n }\n\n // Check if the control already exists in the table.\n if (this._table.sortControl?.contains(this._name)) {\n this.disabled = true;\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\n }\n\n // Register the header cell with the table.\n this._table.sortControl?.addControl(this._name, this._control);\n\n // Get all the value changes.\n this.valueChanges$ = this._control.valueChanges.pipe(\n startWith(this._control.value as string)\n );\n }\n\n ngOnDestroy() {\n this._table?.setHeaderCount?.(-1);\n // Validate that the name and table are set.\n if (!this._table || !this._name) {\n return;\n }\n\n // Un-register the header cell with the table.\n if (this._table?.sortControl?.contains(this._name)) {\n this._table?.sortControl?.removeControl(this._name);\n }\n }\n\n get isDisabled() {\n return this.disabled || !this._name;\n }\n\n @HostListener('click')\n onClick() {\n // Check if the header cell is disabled.\n if (this.isDisabled) {\n return;\n }\n\n // Find the index of the current sort and\n // create the new index.\n const index = this._sortDirections.findIndex(item => item === this._control.value);\n const newIndex = (index + 1) % this._sortDirections.length;\n const newSort = this._sortDirections[newIndex];\n\n // Set the new sort.\n return this.updateTableAndHeaderCell(newSort);\n }\n\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Validate the table exists.\n if (!this._table) {\n return this._control.setValue(value);\n }\n\n // Handle the single sorting strategy.\n if (this._table.sortingStrategy === 'single') {\n return this.handleSingleSortingStrategy(value);\n }\n\n // Default case when no other strategy\n // is used.\n return this._control.setValue(value);\n }\n\n private handleSingleSortingStrategy(value: string) {\n // Get the sort control.\n const control = this._table.sortControl;\n\n // Set each value to false since we only want to\n // sort on one property at a time with this strategy.\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\n previous[current] = current === this._name ? value : 'none';\n return previous;\n }, {});\n\n // Patch the entire sort value.\n this._table?.sortControl?.patchValue(newValue);\n }\n\n private logWarning = (message: string) => {\n console && console.warn && console.warn(message);\n };\n\n}\n","<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n<ng-container *ngIf=\"valueChanges$ | async as value\">\n <button *ngIf=\"!isDisabled\"\n [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n</ng-container>\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\nimport {BbTablePager} from './components/table-pager/table-pager.component';\nimport {BbTableCell} from './components/table-cell/table-cell.component';\nimport {ElementsModule} from '@bravobit/bb-foundation/elements';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nconst DECLARATIONS_EXPORTS = [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n];\n\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule],\n declarations: [...DECLARATIONS_EXPORTS],\n exports: [...DECLARATIONS_EXPORTS]\n})\nexport class TableModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i2.BbTablePager"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-table.mjs","sources":["../../../projects/bb-foundation/table/src/lib/data/datasource.data.ts","../../../projects/bb-foundation/table/src/lib/data/generic.data.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-pager/table-pager.component.html","../../../projects/bb-foundation/table/src/lib/components/table/table.component.ts","../../../projects/bb-foundation/table/src/lib/components/table/table.component.html","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-cell/table-cell.component.html","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.ts","../../../projects/bb-foundation/table/src/lib/components/table-header-cell/table-header-cell.component.html","../../../projects/bb-foundation/table/src/lib/table.module.ts","../../../projects/bb-foundation/table/src/bravobit-bb-foundation-table.ts"],"sourcesContent":["import {DataSourcePageRequest, DataSourcePageResponse} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport class DataSourceRequest {\n\n // Data.\n private _request$ = new BehaviorSubject<DataSourcePageRequest | null>(null);\n private _loading$ = new BehaviorSubject<boolean>(true);\n\n get loading() {\n return this._loading$.asObservable();\n }\n\n get when() {\n return this._request$.pipe(\n filter(data => !!data)\n );\n }\n\n startLoading() {\n this._loading$.next(true);\n }\n\n stopLoading() {\n this._loading$.next(false);\n }\n\n update(params: Partial<DataSourcePageRequest> = {}) {\n const currentValue = this._request$.getValue();\n\n // Set the page number to 1 if the query or page size was changed.\n if (currentValue && params && (currentValue?.query !== params?.query || currentValue?.pageSize !== params?.pageSize)) {\n params.pageNumber = 1;\n }\n\n this._request$.next({...currentValue, ...params});\n }\n\n}\n\nexport abstract class DataSource<T = any> {\n\n abstract handle(request: DataSourceRequest): Observable<DataSourcePageResponse<T>>;\n\n}\n","import {DataSourcePageRequest} from '../interfaces/datasource.interface';\nimport {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {DataSource, DataSourceRequest} from './datasource.data';\nimport {map, share, switchMap} from 'rxjs/operators';\nimport {HttpClient} from '@angular/common/http';\n\nexport class GenericDataSource<T = any> extends DataSource<T> {\n\n private readonly _httpClient: HttpClient;\n private readonly _endpoint$: Observable<string>;\n\n // Data.\n private _items$ = new BehaviorSubject<Observable<{ [key: string]: string } | null>[]>([]);\n private _fn: (data: T[]) => T[] = data => data;\n\n constructor(httpClient: HttpClient,\n endpoint: Observable<string> | string) {\n super();\n\n this._httpClient = httpClient;\n this._endpoint$ = typeof endpoint === 'string'\n ? of<string>(endpoint)\n : endpoint;\n\n }\n\n append(item: Observable<{ [key: string]: string } | null>) {\n const currentValue = this._items$.getValue();\n const newValue = [...currentValue, item];\n this._items$.next(newValue);\n\n return this;\n }\n\n data(fn: (data: T[]) => T[]) {\n this._fn = fn;\n return this;\n }\n\n handle(request: DataSourceRequest) {\n const extraParams$ = this._items$.pipe(\n switchMap(items => items?.length <= 0 ? of([]) : combineLatest(items)),\n map(items => items.reduce((previous, current) => ({...previous, ...(current ?? {})}), {}))\n );\n\n return combineLatest([request.when, this._endpoint$, extraParams$]).pipe(\n switchMap(([params, endpoint, extraParams]) => {\n // Start the loading.\n request.startLoading();\n\n const formattedParams = this.formatParams(params);\n const combinedParams = {...formattedParams, ...extraParams};\n\n return this._httpClient.get(endpoint, {\n params: combinedParams\n }).pipe(\n map(data => this.formatResponse(data)),\n map(result => ({\n ...result,\n data: this._fn(result?.data ?? [])\n }))\n );\n }),\n share()\n );\n }\n\n private formatResponse = <T = any>(data: unknown) => {\n return {\n pageSize: data?.['page_size'] as number,\n pageNumber: data?.['page_number'] as number,\n totalPages: data?.['total_pages'] as number,\n totalEntries: data?.['total_entries'] as number,\n data: data?.['data'] as T[]\n };\n };\n\n private formatParams = (data: Partial<DataSourcePageRequest>) => {\n const params = {};\n\n params['page'] = `${data?.pageNumber ?? 1}`;\n params['page_size'] = `${data?.pageSize ?? 25}`;\n\n const sort = (data?.sort ?? [])\n .map(({name}) => name)\n .filter(name => !!name)\n .join(',');\n\n const sortDirection = (data?.sort ?? [])\n .map(({direction}) => direction)\n .filter(direction => !!direction)\n .join(',');\n\n if (sort?.length > 0 && sortDirection?.length > 0) {\n params['sort'] = sort;\n params['sort_direction'] = sortDirection;\n }\n\n if (data?.query && data?.query?.length > 0 && data?.queryFields && data?.queryFields?.length > 0) {\n params['query'] = data?.query;\n params['query_fields'] = data?.queryFields?.join(',');\n }\n\n return params;\n };\n\n}\n","import {ChangeDetectionStrategy, Component, forwardRef, Input, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable} from 'rxjs';\nimport {map, share} from 'rxjs/operators';\n\nclass BbTablePagerBase {\n}\n\nconst BbTablePagerMixinBase: CanDisableConstructor\n & typeof BbTablePagerBase\n = mixinDisabled(BbTablePagerBase);\n\n@Component({\n selector: 'bb-table-pager',\n templateUrl: './table-pager.component.html',\n styleUrls: ['./table-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-pager',\n '[class.disabled]': 'disabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbTablePager), multi: true}\n ]\n})\nexport class BbTablePager extends BbTablePagerMixinBase implements OnInit, ControlValueAccessor {\n\n // Inputs.\n @Input() amountOfButtons: number = 5;\n @Input() showArrowButtons: boolean = true;\n\n // Observables.\n isPreviousDisabled$: Observable<boolean>;\n isNextDisabled$: Observable<boolean>;\n list$: Observable<{ page: number, active: boolean }[]>;\n\n // Methods.\n onChange: (newValue: number) => void = () => ({});\n onTouched: () => void = () => ({});\n trackByIndex = (_, item) => item.page;\n\n // Data.\n private _totalPages$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n private _pageNumber$: BehaviorSubject<number> = new BehaviorSubject<number>(1);\n\n ngOnInit() {\n // Validate the previous button is disabled.\n this.isPreviousDisabled$ = this._pageNumber$.pipe(\n map(pageNumber => pageNumber === 1)\n );\n\n // Validate the next button is disabled.\n this.isNextDisabled$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => pageNumber === totalPages)\n );\n\n // Create the list with page numbers.\n this.list$ = combineLatest([this._pageNumber$, this._totalPages$]).pipe(\n map(([pageNumber, totalPages]) => this.filterActivePages(pageNumber, totalPages)),\n share()\n );\n }\n\n get pageNumber() {\n return this._pageNumber$.getValue();\n }\n\n @Input()\n set pageNumber(newValue: number) {\n this.update(newValue);\n }\n\n get totalPages() {\n return this._totalPages$.getValue();\n }\n\n @Input()\n set totalPages(newValue: number) {\n const newTotalPages = Math.max(1, newValue);\n this._totalPages$.next(newTotalPages);\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: number) {\n this.update(newValue, false);\n }\n\n goToPrevious() {\n const newValue = this._pageNumber$.getValue() - 1;\n return this.update(newValue);\n }\n\n goToNext() {\n const newValue = this._pageNumber$.getValue() + 1;\n return this.update(newValue);\n }\n\n goToIndex(index: number) {\n return this.update(index);\n }\n\n private update(pageNumber: number, notify: boolean = true) {\n // You can only update when not disabled.\n if (this.disabled) {\n return;\n }\n\n // Calculate the new value.\n const newValue = Math.min(\n this.totalPages,\n Math.max(1, pageNumber)\n );\n\n // Don't do anything if the page number is the same.\n if (this._pageNumber$.getValue() === newValue) {\n return;\n }\n\n // Push the new value.\n this._pageNumber$.next(newValue);\n\n if (notify) {\n return this.onChange(pageNumber);\n }\n }\n\n private calculatePages(pageNumber: number) {\n const min = 1;\n const max = this.totalPages;\n const amount = Math.max(1, this.amountOfButtons);\n\n const data = Array(amount)\n .fill(0)\n .map((_, index) => pageNumber + (index - 1));\n\n // Validate if the minimum value less than\n // the first value.\n if (data[0] < min) {\n return data.map(item => item + 1);\n }\n\n // Calculate the difference with the max\n // if this value is higher than 0 we should minus it.\n const lastValueInArray = data[data.length - 1];\n const differenceWithMax = lastValueInArray - max;\n if (differenceWithMax > 0) {\n return data.map(item => item - differenceWithMax);\n }\n\n // Just return the default data.\n return data;\n }\n\n private filterActivePages(pageNumber: number, totalPages: number) {\n return this.calculatePages(pageNumber)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ul class=\"bb-pager-list\">\n <!-- The previous page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Previous page\">\n <button [disabled]=\"isPreviousDisabled$ | async\"\n (click)=\"goToPrevious()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_left\"></bb-icon>\n </button>\n </li>\n\n <!-- The list of number buttons to navigate through the list. -->\n <ng-container *ngIf=\"list$ | async as list\">\n <li *ngFor=\"let item of list; trackBy: trackByIndex\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-pager-list-item\">\n <button (click)=\"goToIndex(item?.page)\"\n [class.active]=\"item?.active\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n </ng-container>\n\n <!-- The next page arrow button. -->\n <li *ngIf=\"showArrowButtons\"\n class=\"bb-pager-list-item\"\n title=\"Next page\">\n <button [disabled]=\"isNextDisabled$ | async\"\n (click)=\"goToNext()\"\n class=\"bb-pager-list-button\"\n type=\"button\">\n <bb-icon src=\"material:keyboard_arrow_right\"></bb-icon>\n </button>\n </li>\n</ul>\n","import {\n ChangeDetectionStrategy,\n Component, ContentChild,\n ContentChildren,\n Directive,\n Input,\n OnDestroy,\n OnInit,\n QueryList,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {catchError, debounceTime, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {DataSourcePageResponse} from '../../interfaces/datasource.interface';\nimport {DataSource, DataSourceRequest} from '../../data/datasource.data';\nimport {combineLatest, Observable, of, Subscription} from 'rxjs';\nimport {FormControl, FormGroup} from '@angular/forms';\n\n@Directive({\n selector: '[bbTableColumnDef]'\n})\nexport class BbTableColumnDef {\n}\n\n@Directive({\n selector: '[bbTableRowDef]'\n})\nexport class BbTableRowDef {\n}\n\n@Component({\n selector: 'bb-table',\n templateUrl: './table.component.html',\n styleUrls: ['./table.component.scss'],\n host: {'class': 'bb-table'},\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTable implements OnInit, OnDestroy {\n\n // Content.\n @ContentChildren(BbTableColumnDef, {read: TemplateRef}) tableColumnTemplates: QueryList<TemplateRef<any>>;\n @ContentChild(BbTableRowDef, {read: TemplateRef, static: false}) tableRowTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() identifier: string | null = null;\n @Input() dataSource: DataSource;\n @Input() queryFields: string[] = [];\n @Input() sortingStrategy: 'single' | 'multiple' = 'single';\n @Input() header: TemplateRef<any> | boolean = true;\n @Input() footer: TemplateRef<any> | boolean = true;\n\n // Sizes.\n private _sizes: number[] = [25, 50, 75, 100];\n\n get sizes() {\n return this._sizes;\n }\n\n @Input()\n set sizes(newValue: number[]) {\n this.updateSizes(newValue);\n }\n\n // Optimizations.\n trackByFn = (index, item) => this.identifier ? item[this.identifier] : index;\n trackByValue = (_, item) => item;\n\n // Data.\n request: DataSourceRequest;\n data$: Observable<{ state: string, statusCode?: number, result?: DataSourcePageResponse }>;\n isLoading$: Observable<boolean>;\n\n // Form.\n form: FormGroup;\n queryControl = new FormControl('');\n\n // State.\n private _headerCount: number = 0;\n\n // Subscriptions.\n private _subscription: Subscription;\n\n ngOnInit() {\n this.composeForm();\n this.watchDataChanges();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n get headerCount() {\n return this._headerCount;\n }\n\n get sortControl() {\n return this.form?.get('sort') as FormGroup;\n }\n\n get pageNumberControl() {\n return this.form?.get('pageNumber') as FormControl<number>;\n }\n\n get pageSizeControl() {\n return this.form?.get('pageSize') as FormControl<number>;\n }\n\n refresh() {\n return this.request.update();\n }\n\n setHeaderCount(amount: -1 | 1) {\n this._headerCount += amount;\n }\n\n private updateSizes(newValue: number[]) {\n // Validate the sizes has at least one value.\n if (newValue.length <= 0) {\n throw new Error('Cannot set an empty array as the sizes.');\n }\n\n // Set the new size.\n this._sizes = newValue;\n\n // Validate that the form exists already.\n if (!this.form) {\n return;\n }\n\n // Check if the current selected value is\n // in the new sizes array.\n const pageSizeControl = this.form.get('pageSize');\n if (this._sizes.includes(pageSizeControl.value)) {\n return;\n }\n\n // Set the first value in the array as\n // the new value.\n const firstValue = this._sizes[0];\n pageSizeControl.setValue(firstValue);\n }\n\n private composeForm() {\n // Setup the form.\n this.form = new FormGroup({\n pageSize: new FormControl<number>(this._sizes[0]),\n pageNumber: new FormControl<number>(1),\n sort: new FormGroup({})\n });\n }\n\n private watchDataChanges() {\n // Create a new request.\n this.request = new DataSourceRequest();\n this.isLoading$ = this.request.loading;\n\n if (!this.dataSource) {\n this.data$ = of({state: 'error_datasource'}).pipe(\n tap(() => this.request.stopLoading())\n );\n return;\n }\n\n // Pass the request to the data source.\n this.data$ = this.dataSource.handle(this.request).pipe(\n tap(() => this.request.stopLoading()),\n map(result => {\n const count = (result && result.data && result.data.length) || 0;\n if (count <= 0) {\n return {state: 'empty', result};\n }\n\n return {state: 'success', result};\n }),\n catchError(error => {\n this.request.stopLoading();\n\n const statusCode = error?.status ?? null;\n const states = {\n 0: 'error_down',\n 401: 'error_unauthorized',\n 403: 'error_forbidden',\n 404: 'error_not_found',\n 500: 'error_server'\n };\n\n return of({state: states?.[statusCode] ?? 'error_unknown', statusCode: statusCode});\n })\n );\n\n // Subscribe to the data changes.\n this.subscribeToChanges();\n }\n\n private subscribeToChanges() {\n const form$ = this.getFormChanges();\n const query$ = this.getQueryChanges();\n\n this._subscription = combineLatest([form$, query$]).subscribe(([form, query]) => {\n const {pageNumber, pageSize} = form;\n const sort = Object.keys(form.sort)\n .map(name => ({name, direction: form.sort[name]}))\n .filter(item => ['asc', 'desc'].includes(item.direction));\n\n this.request.startLoading();\n return this.request.update({\n sort,\n query,\n pageSize,\n pageNumber,\n queryFields: this.queryFields\n });\n });\n }\n\n private getQueryChanges() {\n return this.queryControl.valueChanges.pipe(\n debounceTime(400),\n distinctUntilChanged(),\n startWith(this.queryControl.value as string)\n );\n }\n\n private getFormChanges() {\n return this.form.valueChanges.pipe(\n startWith(this.form.value as object)\n );\n }\n\n}\n","<!--\n This is the header of the table. It can be a user\n defined custom header or just the default header.\n-->\n\n<header *ngIf=\"(header === true ? headerTemplate : header) as template\"\n class=\"bb-table-top-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</header>\n\n<!--\n This is the table that contains the\n rows and columns.\n-->\n\n<div class=\"bb-table-wrapper\">\n <div *ngIf=\"isLoading$ | async\"\n class=\"bb-table-progress\">\n <div class=\"bb-table-indeterminate\"></div>\n </div>\n <table class=\"bb-table-container\">\n <thead>\n <tr>\n <ng-content select=\"bb-table-header-cell\"></ng-content>\n </tr>\n </thead>\n <tbody *ngIf=\"data$ | async as data; else isLoadingTemplate\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchCase=\"'success'\">\n <ng-container *ngIf=\"!!tableRowTemplate; else tableCellsTemplates\">\n <ng-container\n *ngTemplateOutlet=\"tableRowTemplate; context: {data: data?.result?.data || []}\"></ng-container>\n </ng-container>\n\n <ng-template #tableCellsTemplates>\n <tr *ngFor=\"let item of data?.result?.data; trackBy: trackByFn\">\n <ng-container *ngFor=\"let template of tableColumnTemplates\">\n <ng-container *ngTemplateOutlet=\"template; context: {item: item}\"></ng-container>\n </ng-container>\n </tr>\n </ng-template>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_datasource'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_not_found'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_server'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'error_down'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: data\"></ng-container>\n </ng-container>\n </tbody>\n </table>\n</div>\n\n<footer *ngIf=\"(footer === true ? footerTemplate : footer) as template\"\n class=\"bb-table-bottom-actions\">\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n</footer>\n\n<ng-template #isLoadingTemplate>\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n {{ 'tables.loading' | bbLocalize }}\n </div>\n </td>\n </tr>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom header template.\n-->\n\n<ng-template #headerTemplate>\n <ng-content></ng-content>\n <bb-form-control>\n <input [formControl]=\"queryControl\"\n [placeholder]=\"'tables.search' | bbLocalize\"\n bbInput\n autocomplete=\"off\">\n <bb-icon *ngIf=\"queryControl?.value?.length <= 0; else closeButtonTemplate\"\n bbSuffix\n src=\"material:search\">\n </bb-icon>\n </bb-form-control>\n</ng-template>\n\n<!--\n This is the template that will be used when the user has not\n supplied a custom footer template.\n-->\n\n<ng-template #footerTemplate>\n <bb-form-control *ngIf=\"sizes?.length > 1\">\n <select [formControl]=\"pageSizeControl\"\n bbInput\n title=\"Sizes\">\n <option *ngFor=\"let item of sizes; trackBy: trackByValue\"\n [ngValue]=\"item\">\n {{ item }} / {{ 'tables.page' | bbLocalize }}\n </option>\n </select>\n </bb-form-control>\n\n <bb-table-pager [totalPages]=\"(data$ | async)?.result?.totalPages\"\n [formControl]=\"pageNumberControl\">\n </bb-table-pager>\n</ng-template>\n\n<!--\n This the template that will be used when the user\n has filled in some data in the query control.\n-->\n\n<ng-template #closeButtonTemplate>\n <button bbSuffix\n (click)=\"queryControl?.patchValue('')\"\n type=\"button\"\n class=\"bb-table-progress-close-query\">\n <bb-icon src=\"material:close\"></bb-icon>\n </button>\n</ng-template>\n\n<ng-template #errorTemplate let-state=\"state\" let-status=\"statusCode\">\n <tr>\n <td [attr.colspan]=\"headerCount\"\n class=\"bb-table-template\">\n <div class=\"bb-table-template-content\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(0 1)\">\n <ellipse cx=\"32\" cy=\"33\" fill=\"#F5F5F5\" rx=\"32\" ry=\"7\"></ellipse>\n <g fill-rule=\"nonzero\" stroke=\"#D9D9D9\">\n <path\n d=\"M55 12.7605604L44.8543047 1.25739633C44.3674414.47382661 43.6558789 0 42.9067617 0H21.0932383c-.7491172 0-1.4606797.47395025-1.947543 1.25739633L9 12.7605604V22h46v-9.2394396z\"></path>\n <path fill=\"#FAFAFA\"\n d=\"M41.6132813 15.9315c0-1.6056489.9936718-2.931266 2.2264179-2.9315H55v18.1371277C55 33.2589574 53.6793867 35 52.0504297 35H11.94957031C10.32052344 35 9 33.2588404 9 31.1371277V13h11.1603008c1.2327461 0 2.226418 1.3228085 2.226418 2.9284574v.0211809c0 1.6056489 1.0049921 2.9015426 2.2377382 2.9015426h14.751086c1.2327461 0 2.2377383-1.3078298 2.2377383-2.9134788V15.9315z\"></path>\n </g>\n </g>\n </svg>\n <span *ngIf=\"state as stateLabel\">{{ ('tables.' + stateLabel) | bbLocalize }}</span>\n <span *ngIf=\"status as statusCode\"\n class=\"bb-table-template-content-code\">(HTTP {{ statusCode }})</span>\n </div>\n </td>\n </tr>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, ViewEncapsulation} from '@angular/core';\n\n@Component({\n selector: 'bb-table-cell',\n templateUrl: './table-cell.component.html',\n styleUrls: ['./table-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'class': 'bb-table-cell'},\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableCell {\n}\n","<div>\n <ng-content></ng-content>\n</div>","import {\n Attribute,\n ChangeDetectionStrategy,\n Component,\n Host,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n ViewEncapsulation\n} from '@angular/core';\nimport {CanDisable, CanDisableConstructor, mixinDisabled} from '@bravobit/bb-foundation';\nimport {TableColumnSortStrategy} from '../../interfaces/table.interfaces';\nimport {BbTable} from '../table/table.component';\nimport {FormControl} from '@angular/forms';\nimport {startWith} from 'rxjs/operators';\nimport {Observable} from 'rxjs';\n\nclass BbTableHeaderCellBase {\n}\n\nconst BbTableHeaderCellMixinBase: CanDisableConstructor\n & typeof BbTableHeaderCellBase = mixinDisabled(BbTableHeaderCellBase);\n\n@Component({\n selector: 'bb-table-header-cell',\n templateUrl: './table-header-cell.component.html',\n styleUrls: ['./table-header-cell.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n 'class': 'bb-table-header-cell',\n '[class.disabled]': 'isDisabled'\n },\n inputs: ['disabled'],\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false\n})\nexport class BbTableHeaderCell extends BbTableHeaderCellMixinBase implements OnInit, OnDestroy, CanDisable {\n\n // Constants.\n private readonly _sortDirections: TableColumnSortStrategy[] = ['none', 'asc', 'desc'];\n private readonly _control = new FormControl<TableColumnSortStrategy>(this._sortDirections[0]);\n\n // Data.\n valueChanges$: Observable<string>;\n\n // Sort.\n @Input()\n set sort(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Set the value.\n this._control.setValue(value);\n }\n\n get sort() {\n return this._control.value;\n }\n\n constructor(@Optional() @Host() private _table?: BbTable,\n @Optional() @Attribute('name') private _name?: string) {\n super();\n }\n\n ngOnInit() {\n // Validate that the name and table are set.\n this._table?.setHeaderCount?.(1);\n if (!this._table || !this._name) {\n return;\n }\n\n // Check if the control already exists in the table.\n if (this._table.sortControl?.contains(this._name)) {\n this.disabled = true;\n return this.logWarning(`BbTableHeaderCell: The name \"${this._name}\" is not unique in the table; Control was not registered.`);\n }\n\n // Register the header cell with the table.\n this._table.sortControl?.addControl(this._name, this._control);\n\n // Get all the value changes.\n this.valueChanges$ = this._control.valueChanges.pipe(\n startWith(this._control.value as string)\n );\n }\n\n ngOnDestroy() {\n this._table?.setHeaderCount?.(-1);\n // Validate that the name and table are set.\n if (!this._table || !this._name) {\n return;\n }\n\n // Un-register the header cell with the table.\n if (this._table?.sortControl?.contains(this._name)) {\n this._table?.sortControl?.removeControl(this._name);\n }\n }\n\n get isDisabled() {\n return this.disabled || !this._name;\n }\n\n @HostListener('click')\n onClick() {\n // Check if the header cell is disabled.\n if (this.isDisabled) {\n return;\n }\n\n // Find the index of the current sort and\n // create the new index.\n const index = this._sortDirections.findIndex(item => item === this._control.value);\n const newIndex = (index + 1) % this._sortDirections.length;\n const newSort = this._sortDirections[newIndex];\n\n // Set the new sort.\n return this.updateTableAndHeaderCell(newSort);\n }\n\n private updateTableAndHeaderCell(value: TableColumnSortStrategy) {\n // Check if the new value is a valid value.\n if (!this._sortDirections.includes(value)) {\n return;\n }\n\n // Validate the table exists.\n if (!this._table) {\n return this._control.setValue(value);\n }\n\n // Handle the single sorting strategy.\n if (this._table.sortingStrategy === 'single') {\n return this.handleSingleSortingStrategy(value);\n }\n\n // Default case when no other strategy\n // is used.\n return this._control.setValue(value);\n }\n\n private handleSingleSortingStrategy(value: string) {\n // Get the sort control.\n const control = this._table.sortControl;\n\n // Set each value to false since we only want to\n // sort on one property at a time with this strategy.\n const newValue = Object.keys(control.controls).reduce((previous, current) => {\n previous[current] = current === this._name ? value : 'none';\n return previous;\n }, {});\n\n // Patch the entire sort value.\n this._table?.sortControl?.patchValue(newValue);\n }\n\n private logWarning = (message: string) => {\n console && console.warn && console.warn(message);\n };\n\n}\n","<!-- The content. -->\n<ng-content></ng-content>\n\n<!-- The indicator for the sort direction. -->\n<ng-container *ngIf=\"valueChanges$ | async as value\">\n <button *ngIf=\"!isDisabled\"\n [class.asc]=\"value === 'asc'\"\n [class.desc]=\"value === 'desc'\"\n class=\"bb-table-header-cell-toggle\"\n type=\"button\"></button>\n</ng-container>\n","import {BbTableHeaderCell} from './components/table-header-cell/table-header-cell.component';\nimport {BbTable, BbTableColumnDef, BbTableRowDef} from './components/table/table.component';\nimport {BbTablePager} from './components/table-pager/table-pager.component';\nimport {BbTableCell} from './components/table-cell/table-cell.component';\nimport {ElementsModule} from '@bravobit/bb-foundation/elements';\nimport {LocalizeModule} from '@bravobit/bb-foundation/localize';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\nconst DECLARATIONS_EXPORTS = [\n BbTable,\n BbTableColumnDef,\n BbTableRowDef,\n BbTableHeaderCell,\n BbTableCell,\n BbTablePager\n];\n\n@NgModule({\n imports: [CommonModule, ReactiveFormsModule, ElementsModule, LocalizeModule],\n declarations: [...DECLARATIONS_EXPORTS],\n exports: [...DECLARATIONS_EXPORTS]\n})\nexport class TableModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i4.BbTablePager"],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, Optional, Inject, APP_INITIALIZER, NgModule, SkipSelf } from '@angular/core';
3
+ import { DOCUMENT } from '@angular/common';
4
+
5
+ class ThemingOptions {
6
+ }
7
+
8
+ class Theming {
9
+ constructor(_options, _rendererFactory, _document) {
10
+ this._options = _options;
11
+ this._rendererFactory = _rendererFactory;
12
+ this._document = _document;
13
+ // Readonly data.
14
+ this._attribute = 'data-theme';
15
+ this._renderer = this._rendererFactory.createRenderer(null, null);
16
+ // State.
17
+ this._currentTheme = null;
18
+ this.setCssVariables();
19
+ this.setFirstTheme();
20
+ }
21
+ get all() {
22
+ var _a, _b;
23
+ return (_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.themes) !== null && _b !== void 0 ? _b : [];
24
+ }
25
+ get current() {
26
+ var _a;
27
+ return (_a = this._currentTheme) !== null && _a !== void 0 ? _a : null;
28
+ }
29
+ set(name) {
30
+ var _a;
31
+ const theme = (_a = this.all) === null || _a === void 0 ? void 0 : _a.find(theme => (theme === null || theme === void 0 ? void 0 : theme.name) === name);
32
+ if (!theme) {
33
+ throw new Error('Invalid theme.');
34
+ }
35
+ const document = this._document.documentElement;
36
+ if (!document) {
37
+ return;
38
+ }
39
+ this._renderer.setAttribute(document, this._attribute, name);
40
+ this._currentTheme = theme;
41
+ }
42
+ setCssVariables() {
43
+ var _a, _b, _c;
44
+ const style = this._renderer.createElement('style');
45
+ this._renderer.setAttribute(style, 'id', 'theming-style');
46
+ const variables = this.getCssVariables();
47
+ this._renderer.setProperty(style, 'innerHTML', variables);
48
+ const head = (_b = (_a = this._document) === null || _a === void 0 ? void 0 : _a.head) !== null && _b !== void 0 ? _b : null;
49
+ if (!head) {
50
+ return;
51
+ }
52
+ this._renderer.appendChild((_c = this._document) === null || _c === void 0 ? void 0 : _c.head, style);
53
+ }
54
+ getCssVariables() {
55
+ return this.all
56
+ .map(theme => `:root[${this._attribute}="${theme === null || theme === void 0 ? void 0 : theme.name}"] {${this.getThemeContents(theme)}}`)
57
+ .join('\n');
58
+ }
59
+ getThemeContents(theme) {
60
+ var _a;
61
+ const themeData = (_a = theme === null || theme === void 0 ? void 0 : theme.data) !== null && _a !== void 0 ? _a : {};
62
+ return Object.keys(themeData)
63
+ .map(key => `${key}: ${themeData === null || themeData === void 0 ? void 0 : themeData[key]};`)
64
+ .join(' ');
65
+ }
66
+ setFirstTheme() {
67
+ var _a, _b, _c;
68
+ const theme = (_b = (_a = this.all) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : null;
69
+ if (!theme) {
70
+ throw new Error('No theme found.');
71
+ }
72
+ const themeName = (_c = theme === null || theme === void 0 ? void 0 : theme.name) !== null && _c !== void 0 ? _c : null;
73
+ return this.set(themeName);
74
+ }
75
+ }
76
+ Theming.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Theming, deps: [{ token: ThemingOptions }, { token: i0.RendererFactory2 }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
77
+ Theming.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Theming });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Theming, decorators: [{
79
+ type: Injectable
80
+ }], ctorParameters: function () {
81
+ return [{ type: ThemingOptions }, { type: i0.RendererFactory2 }, { type: Document, decorators: [{
82
+ type: Optional
83
+ }, {
84
+ type: Inject,
85
+ args: [DOCUMENT]
86
+ }] }];
87
+ } });
88
+
89
+ class ThemingModule {
90
+ constructor(_parent) {
91
+ this._parent = _parent;
92
+ if (this._parent) {
93
+ throw new Error('ThemingModule is already loaded; Import it in the core module only.');
94
+ }
95
+ }
96
+ static forRoot(options) {
97
+ return {
98
+ ngModule: ThemingModule,
99
+ providers: [
100
+ Theming,
101
+ { provide: APP_INITIALIZER, deps: [Theming], useFactory: initializeTheme, multi: true },
102
+ { provide: ThemingOptions, useValue: options }
103
+ ]
104
+ };
105
+ }
106
+ }
107
+ ThemingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ThemingModule, deps: [{ token: ThemingModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
108
+ ThemingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.4", ngImport: i0, type: ThemingModule });
109
+ ThemingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ThemingModule });
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ThemingModule, decorators: [{
111
+ type: NgModule,
112
+ args: [{}]
113
+ }], ctorParameters: function () {
114
+ return [{ type: ThemingModule, decorators: [{
115
+ type: Optional
116
+ }, {
117
+ type: SkipSelf
118
+ }] }];
119
+ } });
120
+ function initializeTheme(_) {
121
+ // Note: We just need to initialize the theme.
122
+ return () => ({});
123
+ }
124
+
125
+ class Theme {
126
+ constructor(_name, _data) {
127
+ this._name = _name;
128
+ this._data = _data;
129
+ this._parsed = this.parseData(_data !== null && _data !== void 0 ? _data : {});
130
+ }
131
+ get name() {
132
+ return this._name;
133
+ }
134
+ get data() {
135
+ return this._parsed;
136
+ }
137
+ update(data) {
138
+ this._parsed = Object.assign(Object.assign({}, this._parsed), this.parseData(data));
139
+ return this;
140
+ }
141
+ parseData(data, scope = null) {
142
+ return Object.keys(data).reduce((previous, current) => {
143
+ const value = data === null || data === void 0 ? void 0 : data[current];
144
+ const token = this.getFormattedToken(current, scope);
145
+ if (typeof value === 'object' && value !== null) {
146
+ const formatted = this.parseData(value, token);
147
+ return Object.assign(Object.assign({}, previous), formatted);
148
+ }
149
+ return Object.assign(Object.assign({}, previous), { [`--${token}`]: value });
150
+ }, {});
151
+ }
152
+ getFormattedToken(key, scope = null) {
153
+ const result = key.replace(/([A-Z])/g, ' $1');
154
+ const current = result.split(' ').join('-').toLowerCase();
155
+ return [scope, current].filter(item => !!item).join('-');
156
+ }
157
+ }
158
+
159
+ /**
160
+ * Generated bundle index. Do not edit.
161
+ */
162
+
163
+ export { Theme, Theming, ThemingModule, ThemingOptions, initializeTheme };
164
+ //# sourceMappingURL=bravobit-bb-foundation-theming.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bravobit-bb-foundation-theming.mjs","sources":["../../../projects/bb-foundation/theming/src/lib/theming.interface.ts","../../../projects/bb-foundation/theming/src/lib/theming.service.ts","../../../projects/bb-foundation/theming/src/lib/theming.module.ts","../../../projects/bb-foundation/theming/src/lib/themes/theme.ts","../../../projects/bb-foundation/theming/src/bravobit-bb-foundation-theming.ts"],"sourcesContent":["import {CheckboxGroupTheme} from './themes/checkbox-group.theme';\nimport {CheckboxTheme} from './themes/checkbox.theme';\nimport {Theme} from './themes/theme';\n\nexport class ThemingOptions {\n themes: Theme[];\n}\n\nexport type ThemeDataRecord = Record<string, string> | string;\n\nexport interface ThemeData {\n accentColor?: string;\n checkbox?: Partial<CheckboxTheme>;\n checkboxGroup?: Partial<CheckboxGroupTheme>\n\n custom?: { [key: string]: ThemeDataRecord };\n}\n","import {Inject, Injectable, Optional, Renderer2, RendererFactory2} from '@angular/core';\nimport {ThemingOptions} from './theming.interface';\nimport {DOCUMENT} from '@angular/common';\nimport {Theme} from './themes/theme';\n\n@Injectable()\nexport class Theming {\n\n // Readonly data.\n private readonly _attribute: string = 'data-theme';\n private readonly _renderer: Renderer2 = this._rendererFactory.createRenderer(null, null);\n\n // State.\n private _currentTheme: Theme | null = null;\n\n constructor(private _options: ThemingOptions,\n private _rendererFactory: RendererFactory2,\n @Optional() @Inject(DOCUMENT) private _document: Document) {\n this.setCssVariables();\n this.setFirstTheme();\n }\n\n get all() {\n return this._options?.themes ?? [];\n }\n\n get current() {\n return this._currentTheme ?? null;\n }\n\n set(name: string) {\n const theme = this.all?.find(theme => theme?.name === name);\n if (!theme) {\n throw new Error('Invalid theme.');\n }\n\n const document = this._document.documentElement;\n if (!document) {\n return;\n }\n\n this._renderer.setAttribute(document, this._attribute, name);\n this._currentTheme = theme;\n }\n\n private setCssVariables() {\n const style = this._renderer.createElement('style');\n this._renderer.setAttribute(style, 'id', 'theming-style');\n\n const variables = this.getCssVariables();\n this._renderer.setProperty(style, 'innerHTML', variables);\n\n const head = this._document?.head ?? null;\n if (!head) {\n return;\n }\n\n this._renderer.appendChild(this._document?.head, style);\n }\n\n private getCssVariables() {\n return this.all\n .map(theme => `:root[${this._attribute}=\"${theme?.name}\"] {${this.getThemeContents(theme)}}`)\n .join('\\n');\n }\n\n private getThemeContents(theme: Theme) {\n const themeData = theme?.data ?? {};\n return Object.keys(themeData)\n .map(key => `${key}: ${themeData?.[key]};`)\n .join(' ');\n }\n\n private setFirstTheme() {\n const theme = this.all?.[0] ?? null;\n if (!theme) {\n throw new Error('No theme found.');\n }\n\n const themeName = theme?.name ?? null;\n return this.set(themeName);\n }\n\n}\n","import {APP_INITIALIZER, ModuleWithProviders, NgModule, Optional, SkipSelf} from '@angular/core';\nimport {ThemingOptions} from './theming.interface';\nimport {Theming} from './theming.service';\n\n@NgModule({})\nexport class ThemingModule {\n\n constructor(@Optional() @SkipSelf() private _parent?: ThemingModule) {\n if (this._parent) {\n throw new Error('ThemingModule is already loaded; Import it in the core module only.');\n }\n }\n\n static forRoot(options: ThemingOptions): ModuleWithProviders<ThemingModule> {\n return {\n ngModule: ThemingModule,\n providers: [\n Theming,\n {provide: APP_INITIALIZER, deps: [Theming], useFactory: initializeTheme, multi: true},\n {provide: ThemingOptions, useValue: options}\n ]\n };\n }\n\n}\n\nexport function initializeTheme(_: Theming) {\n // Note: We just need to initialize the theme.\n return () => ({});\n}\n","import {ThemeData} from '../theming.interface';\n\nexport class Theme {\n\n // Readonly data.\n private _parsed: Record<string, string>;\n\n constructor(private _name: string,\n private _data?: ThemeData) {\n this._parsed = this.parseData(_data ?? {});\n }\n\n get name() {\n return this._name;\n }\n\n get data() {\n return this._parsed;\n }\n\n update(data: ThemeData) {\n this._parsed = {...this._parsed, ...this.parseData(data)};\n return this;\n }\n\n protected parseData(data: object, scope: string | null = null) {\n return Object.keys(data).reduce((previous, current) => {\n const value = data?.[current];\n const token = this.getFormattedToken(current, scope);\n if (typeof value === 'object' && value !== null) {\n const formatted = this.parseData(value, token);\n return {...previous, ...formatted};\n }\n return {...previous, [`--${token}`]: value};\n }, {});\n }\n\n protected getFormattedToken(key: string, scope: string | null = null) {\n const result = key.replace(/([A-Z])/g, ' $1');\n const current = result.split(' ').join('-').toLowerCase();\n return [scope, current].filter(item => !!item).join('-');\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -33,9 +33,9 @@ class Platform {
33
33
  this.isDesktop = this.isBrowser && !(/(iPhone|iPod|iPad|Android|BlackBerry|IEMobile)/.test(navigator.userAgent));
34
34
  }
35
35
  }
36
- Platform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
37
- Platform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Platform, providedIn: 'root' });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Platform, decorators: [{
36
+ Platform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });
37
+ Platform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Platform, providedIn: 'root' });
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Platform, decorators: [{
39
39
  type: Injectable,
40
40
  args: [{
41
41
  providedIn: 'root'
@@ -125,9 +125,9 @@ class FileLoader {
125
125
  return this.blobToFile(blobFile, name);
126
126
  }
127
127
  }
128
- FileLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
129
- FileLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: FileLoader, providedIn: 'root' });
130
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: FileLoader, decorators: [{
128
+ FileLoader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: FileLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
129
+ FileLoader.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: FileLoader, providedIn: 'root' });
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: FileLoader, decorators: [{
131
131
  type: Injectable,
132
132
  args: [{
133
133
  providedIn: 'root'
@@ -288,9 +288,9 @@ class Exif {
288
288
  });
289
289
  }
290
290
  }
291
- Exif.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Exif, deps: [{ token: Platform }, { token: FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
292
- Exif.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Exif, providedIn: 'root' });
293
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Exif, decorators: [{
291
+ Exif.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Exif, deps: [{ token: Platform }, { token: FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
292
+ Exif.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Exif, providedIn: 'root' });
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Exif, decorators: [{
294
294
  type: Injectable,
295
295
  args: [{
296
296
  providedIn: 'root'
@@ -412,9 +412,9 @@ class ImageConverter {
412
412
  });
413
413
  }
414
414
  }
415
- ImageConverter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ImageConverter, deps: [{ token: Exif }, { token: Platform }, { token: FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
416
- ImageConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ImageConverter, providedIn: 'root' });
417
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: ImageConverter, decorators: [{
415
+ ImageConverter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ImageConverter, deps: [{ token: Exif }, { token: Platform }, { token: FileLoader }], target: i0.ɵɵFactoryTarget.Injectable });
416
+ ImageConverter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ImageConverter, providedIn: 'root' });
417
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: ImageConverter, decorators: [{
418
418
  type: Injectable,
419
419
  args: [{
420
420
  providedIn: 'root'
@@ -480,9 +480,9 @@ class Languages {
480
480
  .sort((a, b) => b.quality - a.quality);
481
481
  }
482
482
  }
483
- Languages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Languages, deps: [{ token: ACCEPT_LANGUAGE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
484
- Languages.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Languages, providedIn: 'root' });
485
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Languages, decorators: [{
483
+ Languages.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Languages, deps: [{ token: ACCEPT_LANGUAGE, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
484
+ Languages.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Languages, providedIn: 'root' });
485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Languages, decorators: [{
486
486
  type: Injectable,
487
487
  args: [{
488
488
  providedIn: 'root'
@@ -540,9 +540,9 @@ class Network {
540
540
  this._online$ = merge(now$, online$, offline$).pipe(map(value => value), distinctUntilChanged(), shareReplay(1));
541
541
  }
542
542
  }
543
- Network.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Network, deps: [{ token: Platform }, { token: WINDOW, optional: true }, { token: NAVIGATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
544
- Network.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Network, providedIn: 'root' });
545
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Network, decorators: [{
543
+ Network.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Network, deps: [{ token: Platform }, { token: WINDOW, optional: true }, { token: NAVIGATOR, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
544
+ Network.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Network, providedIn: 'root' });
545
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Network, decorators: [{
546
546
  type: Injectable,
547
547
  args: [{
548
548
  providedIn: 'root'
@@ -600,9 +600,9 @@ class Patch {
600
600
  this._subscription.add(subscription);
601
601
  }
602
602
  }
603
- Patch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Patch, deps: [{ token: Platform }, { token: WINDOW, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
604
- Patch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Patch, providedIn: 'root' });
605
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Patch, decorators: [{
603
+ Patch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Patch, deps: [{ token: Platform }, { token: WINDOW, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
604
+ Patch.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Patch, providedIn: 'root' });
605
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Patch, decorators: [{
606
606
  type: Injectable,
607
607
  args: [{
608
608
  providedIn: 'root'
@@ -635,9 +635,9 @@ class Clipboard {
635
635
  return new ClipboardCopy(text, this._document);
636
636
  }
637
637
  }
638
- Clipboard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Clipboard, deps: [{ token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
639
- Clipboard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Clipboard, providedIn: 'root' });
640
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Clipboard, decorators: [{
638
+ Clipboard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Clipboard, deps: [{ token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
639
+ Clipboard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Clipboard, providedIn: 'root' });
640
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: Clipboard, decorators: [{
641
641
  type: Injectable,
642
642
  args: [{
643
643
  providedIn: 'root'