@bravobit/bb-foundation 0.32.1 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/auth/lib/auth.config.d.ts +5 -0
  2. package/auth/lib/auth.interceptor.d.ts +2 -2
  3. package/auth/lib/auth.module.d.ts +1 -4
  4. package/auth/lib/auth.service.d.ts +2 -2
  5. package/auth/lib/directives/authenticated.directive.d.ts +11 -4
  6. package/auth/lib/guards/anonymous.guard.d.ts +2 -15
  7. package/auth/lib/guards/authenticated.guard.d.ts +2 -15
  8. package/auth/lib/interfaces/config.interface.d.ts +2 -1
  9. package/auth/public_api.d.ts +1 -0
  10. package/collections/lib/collections.module.d.ts +12 -3
  11. package/collections/lib/components/collections-actions/collections-actions.component.d.ts +10 -0
  12. package/collections/lib/components/collections-grid/collections-grid.component.d.ts +18 -0
  13. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +15 -14
  14. package/collections/lib/components/collections-table/collections-table.component.d.ts +24 -0
  15. package/collections/lib/components/collections-table-label/collections-table-label.component.d.ts +11 -0
  16. package/collections/lib/components/collections-table-sorting/collections-table-sorting.component.d.ts +18 -0
  17. package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +9 -5
  18. package/collections/lib/directives/collections-data-row.directive.d.ts +14 -0
  19. package/collections/lib/directives/collections-data.directive.d.ts +14 -0
  20. package/collections/lib/directives/collections-empty.directive.d.ts +14 -0
  21. package/collections/lib/directives/collections-error.directive.d.ts +14 -0
  22. package/collections/lib/directives/collections-initial.directive.d.ts +11 -0
  23. package/collections/lib/directives/collections-item.directive.d.ts +14 -0
  24. package/collections/public_api.d.ts +11 -1
  25. package/dashboard/lib/dashboard/dashboard.component.d.ts +5 -8
  26. package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +3 -5
  27. package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +1 -1
  28. package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +4 -7
  29. package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +3 -5
  30. package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +6 -11
  31. package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +2 -2
  32. package/dashboard/lib/dashboard.module.d.ts +1 -4
  33. package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +1 -1
  34. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +2 -2
  35. package/dialog/lib/dialog-container/dialog-container.component.d.ts +2 -2
  36. package/dialog/lib/dialog-header/dialog-header.component.d.ts +1 -1
  37. package/dialog/lib/dialog-link/dialog-link.component.d.ts +1 -1
  38. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +1 -1
  39. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +2 -2
  40. package/dialog/lib/dialog.config.d.ts +3 -0
  41. package/dialog/lib/dialog.insertion.d.ts +1 -1
  42. package/dialog/lib/dialog.interfaces.d.ts +2 -0
  43. package/dialog/lib/dialog.module.d.ts +2 -4
  44. package/dialog/lib/directives/confirm.directive.d.ts +13 -0
  45. package/dialog/public_api.d.ts +2 -0
  46. package/elements/lib/avatar/avatar.component.d.ts +2 -1
  47. package/elements/lib/button/button.component.d.ts +12 -14
  48. package/elements/lib/checkbox/checkbox.component.d.ts +29 -22
  49. package/elements/lib/checkbox-group/checkbox-group.component.d.ts +13 -0
  50. package/elements/lib/date-picker/date-picker.component.d.ts +17 -10
  51. package/elements/lib/directives/addon.directive.d.ts +2 -2
  52. package/elements/lib/directives/extra-error-controls.directive.d.ts +13 -0
  53. package/elements/lib/directives/form-submit.directive.d.ts +1 -1
  54. package/elements/lib/directives/form-submitter.directive.d.ts +1 -1
  55. package/elements/lib/directives/image-upload.directive.d.ts +28 -0
  56. package/elements/lib/directives/input.directive.d.ts +9 -31
  57. package/elements/lib/elements.config.d.ts +84 -0
  58. package/elements/lib/elements.module.d.ts +21 -102
  59. package/elements/lib/file-picker/file-picker.component.d.ts +14 -10
  60. package/elements/lib/form-control/form-control.component.d.ts +8 -9
  61. package/elements/lib/form-error/form-error.component.d.ts +12 -9
  62. package/elements/lib/form-group/form-group.component.d.ts +4 -7
  63. package/elements/lib/icon/icon.component.d.ts +4 -4
  64. package/elements/lib/image-picker/image-picker.component.d.ts +9 -9
  65. package/elements/lib/multi-file-control/multi-file-control.component.d.ts +58 -0
  66. package/elements/lib/pipes/date.pipe.d.ts +9 -0
  67. package/elements/lib/pipes/file-image.pipe.d.ts +1 -1
  68. package/elements/lib/pipes/file-size.pipe.d.ts +1 -1
  69. package/elements/lib/pipes/relative-time.pipe.d.ts +1 -1
  70. package/elements/lib/radio-button/radio-button.component.d.ts +18 -0
  71. package/elements/lib/radio-group/radio-group.component.d.ts +38 -0
  72. package/elements/lib/spinner/spinner.component.d.ts +4 -7
  73. package/elements/public_api.d.ts +9 -3
  74. package/esm2022/auth/lib/auth.config.mjs +16 -0
  75. package/esm2022/auth/lib/auth.interceptor.mjs +10 -7
  76. package/esm2022/auth/lib/auth.module.mjs +9 -19
  77. package/esm2022/auth/lib/auth.service.mjs +22 -13
  78. package/esm2022/auth/lib/directives/authenticated.directive.mjs +45 -11
  79. package/esm2022/auth/lib/guards/anonymous.guard.mjs +27 -51
  80. package/esm2022/auth/lib/guards/authenticated.guard.mjs +30 -54
  81. package/esm2022/auth/lib/helpers/jwt.helper.mjs +2 -2
  82. package/esm2022/auth/lib/interfaces/config.interface.mjs +2 -3
  83. package/esm2022/auth/public_api.mjs +2 -1
  84. package/esm2022/collections/lib/collections.module.mjs +53 -23
  85. package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +39 -0
  86. package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +52 -0
  87. package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +51 -60
  88. package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +86 -0
  89. package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +33 -0
  90. package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +62 -0
  91. package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +10 -7
  92. package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +26 -0
  93. package/esm2022/collections/lib/directives/collections-data.directive.mjs +26 -0
  94. package/esm2022/collections/lib/directives/collections-empty.directive.mjs +26 -0
  95. package/esm2022/collections/lib/directives/collections-error.directive.mjs +26 -0
  96. package/esm2022/collections/lib/directives/collections-initial.directive.mjs +22 -0
  97. package/esm2022/collections/lib/directives/collections-item.directive.mjs +26 -0
  98. package/esm2022/collections/public_api.mjs +12 -2
  99. package/esm2022/combobox/combobox/combobox-container.directive.mjs +3 -3
  100. package/esm2022/combobox/combobox/combobox.component.mjs +6 -6
  101. package/esm2022/combobox/combobox-label.directive.mjs +3 -3
  102. package/esm2022/combobox/combobox-option.directive.mjs +3 -3
  103. package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +5 -5
  104. package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +17 -24
  105. package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +12 -15
  106. package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +7 -8
  107. package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +20 -15
  108. package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +15 -14
  109. package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +20 -27
  110. package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +6 -10
  111. package/esm2022/dashboard/lib/dashboard.module.mjs +30 -27
  112. package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +6 -6
  113. package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +12 -15
  114. package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +10 -7
  115. package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +5 -6
  116. package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +5 -5
  117. package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +7 -7
  118. package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +11 -7
  119. package/esm2022/dialog/lib/dialog.config.mjs +8 -0
  120. package/esm2022/dialog/lib/dialog.insertion.mjs +6 -5
  121. package/esm2022/dialog/lib/dialog.interfaces.mjs +3 -1
  122. package/esm2022/dialog/lib/dialog.module.mjs +17 -25
  123. package/esm2022/dialog/lib/dialog.service.mjs +8 -5
  124. package/esm2022/dialog/lib/directives/confirm.directive.mjs +50 -0
  125. package/esm2022/dialog/public_api.mjs +3 -1
  126. package/esm2022/elements/lib/avatar/avatar.component.mjs +15 -14
  127. package/esm2022/elements/lib/button/button.component.mjs +37 -32
  128. package/esm2022/elements/lib/checkbox/checkbox.component.mjs +86 -47
  129. package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +36 -0
  130. package/esm2022/elements/lib/date-picker/date-picker.component.mjs +64 -51
  131. package/esm2022/elements/lib/directives/addon.directive.mjs +11 -13
  132. package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +43 -0
  133. package/esm2022/elements/lib/directives/form-submit.directive.mjs +6 -5
  134. package/esm2022/elements/lib/directives/form-submitter.directive.mjs +6 -5
  135. package/esm2022/elements/lib/directives/image-upload.directive.mjs +140 -0
  136. package/esm2022/elements/lib/directives/input.directive.mjs +21 -110
  137. package/esm2022/elements/lib/elements.config.mjs +42 -0
  138. package/esm2022/elements/lib/elements.module.mjs +42 -77
  139. package/esm2022/elements/lib/file-picker/file-picker.component.mjs +36 -24
  140. package/esm2022/elements/lib/form-control/form-control.component.mjs +21 -24
  141. package/esm2022/elements/lib/form-error/form-error.component.mjs +35 -60
  142. package/esm2022/elements/lib/form-group/form-group.component.mjs +15 -12
  143. package/esm2022/elements/lib/icon/icon.component.mjs +19 -24
  144. package/esm2022/elements/lib/image-picker/image-picker.component.mjs +33 -19
  145. package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +165 -0
  146. package/esm2022/elements/lib/pipes/date.pipe.mjs +30 -0
  147. package/esm2022/elements/lib/pipes/file-image.pipe.mjs +6 -5
  148. package/esm2022/elements/lib/pipes/file-size.pipe.mjs +6 -5
  149. package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +6 -5
  150. package/esm2022/elements/lib/radio-button/radio-button.component.mjs +59 -0
  151. package/esm2022/elements/lib/radio-group/radio-group.component.mjs +102 -0
  152. package/esm2022/elements/lib/spinner/spinner.component.mjs +12 -13
  153. package/esm2022/elements/public_api.mjs +10 -4
  154. package/esm2022/http/lib/http.config.mjs +18 -0
  155. package/esm2022/http/lib/http.interfaces.mjs +4 -2
  156. package/esm2022/http/lib/http.module.mjs +9 -22
  157. package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +9 -5
  158. package/esm2022/http/lib/interceptors/error.interceptor.mjs +10 -6
  159. package/esm2022/http/public_api.mjs +2 -1
  160. package/esm2022/lib/core/functions/array.utils.mjs +7 -0
  161. package/esm2022/lib/core/miscellaneous/coercion.mjs +5 -0
  162. package/esm2022/lib/core/miscellaneous/regex.mjs +41 -2
  163. package/esm2022/lib/core/services/exif.service.mjs +3 -3
  164. package/esm2022/lib/core/services/file-loader.service.mjs +3 -3
  165. package/esm2022/lib/core/services/files.service.mjs +86 -0
  166. package/esm2022/lib/core/services/image-converter.service.mjs +3 -3
  167. package/esm2022/lib/core/services/languages.service.mjs +3 -3
  168. package/esm2022/lib/core/services/network.service.mjs +5 -5
  169. package/esm2022/lib/core/services/patch.service.mjs +3 -3
  170. package/esm2022/localize/lib/interfaces/config.interfaces.mjs +2 -7
  171. package/esm2022/localize/lib/interfaces/functions.interfaces.mjs +6 -6
  172. package/esm2022/localize/lib/localizations/dutch.localization.mjs +19 -1
  173. package/esm2022/localize/lib/localizations/english.localization.mjs +19 -1
  174. package/esm2022/localize/lib/localize.config.mjs +43 -0
  175. package/esm2022/localize/lib/localize.module.mjs +10 -54
  176. package/esm2022/localize/lib/localize.pipe.mjs +6 -5
  177. package/esm2022/localize/lib/localize.service.mjs +26 -13
  178. package/esm2022/localize/lib/localize.tokens.mjs +18 -0
  179. package/esm2022/localize/lib/transforms/interpolate.transform.mjs +3 -2
  180. package/esm2022/localize/lib/transforms/plural.transform.mjs +5 -3
  181. package/esm2022/localize/lib/transforms/reference.transform.mjs +5 -3
  182. package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +6 -10
  183. package/esm2022/localize/lib/views/localize-template.directive.mjs +6 -5
  184. package/esm2022/localize/public_api.mjs +3 -3
  185. package/esm2022/masking/lib/directives/currency-mask.directive.mjs +6 -5
  186. package/esm2022/masking/lib/directives/date-mask.directive.mjs +6 -5
  187. package/esm2022/masking/lib/directives/input-mask.directive.mjs +6 -5
  188. package/esm2022/masking/lib/masking.module.mjs +6 -6
  189. package/esm2022/masking/lib/masking.service.mjs +3 -3
  190. package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +7 -9
  191. package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +8 -8
  192. package/esm2022/notifications/lib/notifications.config.mjs +8 -0
  193. package/esm2022/notifications/lib/notifications.interfaces.mjs +3 -1
  194. package/esm2022/notifications/lib/notifications.module.mjs +8 -18
  195. package/esm2022/notifications/lib/notifications.service.mjs +14 -8
  196. package/esm2022/notifications/public_api.mjs +2 -1
  197. package/esm2022/permissions/lib/directives/permission.directive.mjs +6 -5
  198. package/esm2022/permissions/lib/guards/permission.guard.mjs +23 -54
  199. package/esm2022/permissions/lib/permissions.config.mjs +20 -0
  200. package/esm2022/permissions/lib/permissions.interface.mjs +3 -1
  201. package/esm2022/permissions/lib/permissions.module.mjs +9 -23
  202. package/esm2022/permissions/lib/permissions.service.mjs +8 -5
  203. package/esm2022/permissions/public_api.mjs +2 -1
  204. package/esm2022/public_api.mjs +4 -11
  205. package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +12 -13
  206. package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +21 -36
  207. package/esm2022/recaptcha/lib/recaptcha.config.mjs +8 -0
  208. package/esm2022/recaptcha/lib/recaptcha.module.mjs +8 -8
  209. package/esm2022/recaptcha/public_api.mjs +2 -1
  210. package/esm2022/rxjs/lib/observables/get-route-param.observable.mjs +5 -0
  211. package/esm2022/rxjs/public_api.mjs +2 -1
  212. package/esm2022/select/bravobit-bb-foundation-select.mjs +5 -0
  213. package/esm2022/select/lib/select/select.component.mjs +210 -0
  214. package/esm2022/select/lib/select-label.directive.mjs +17 -0
  215. package/esm2022/select/lib/select-option-group.directive.mjs +17 -0
  216. package/esm2022/select/lib/select-option.directive.mjs +17 -0
  217. package/esm2022/select/lib/select.module.mjs +35 -0
  218. package/esm2022/select/public_api.mjs +6 -0
  219. package/esm2022/storage/lib/storage.service.mjs +3 -3
  220. package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +2 -5
  221. package/esm2022/table/lib/components/table/table.component.mjs +21 -22
  222. package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +5 -5
  223. package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +14 -14
  224. package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +15 -17
  225. package/esm2022/table/lib/table.module.mjs +23 -21
  226. package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +11 -17
  227. package/esm2022/tooltip/lib/tooltip.directive.mjs +17 -27
  228. package/esm2022/tooltip/lib/tooltip.module.mjs +7 -22
  229. package/esm2022/tooltip/public_api.mjs +2 -2
  230. package/esm2022/utils/lib/directives/autosize.directive.mjs +9 -7
  231. package/esm2022/utils/lib/directives/focus-trap.directive.mjs +6 -5
  232. package/esm2022/utils/lib/directives/focus.directive.mjs +6 -5
  233. package/esm2022/utils/lib/directives/template.directive.mjs +6 -5
  234. package/esm2022/utils/lib/utils.module.mjs +6 -6
  235. package/fesm2022/bravobit-bb-foundation-auth.mjs +140 -175
  236. package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
  237. package/fesm2022/bravobit-bb-foundation-collections.mjs +451 -106
  238. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  239. package/fesm2022/bravobit-bb-foundation-combobox.mjs +18 -18
  240. package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
  241. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +106 -116
  242. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  243. package/fesm2022/bravobit-bb-foundation-dialog.mjs +125 -70
  244. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  245. package/fesm2022/bravobit-bb-foundation-elements.mjs +1780 -1368
  246. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  247. package/fesm2022/bravobit-bb-foundation-http.mjs +38 -27
  248. package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
  249. package/fesm2022/bravobit-bb-foundation-localize.mjs +310 -264
  250. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  251. package/fesm2022/bravobit-bb-foundation-masking.mjs +23 -20
  252. package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
  253. package/fesm2022/bravobit-bb-foundation-notifications.mjs +67 -62
  254. package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
  255. package/fesm2022/bravobit-bb-foundation-permissions.mjs +54 -72
  256. package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
  257. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +44 -54
  258. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  259. package/fesm2022/bravobit-bb-foundation-rxjs.mjs +5 -1
  260. package/fesm2022/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  261. package/fesm2022/bravobit-bb-foundation-select.mjs +288 -0
  262. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -0
  263. package/fesm2022/bravobit-bb-foundation-storage.mjs +4 -7
  264. package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
  265. package/fesm2022/bravobit-bb-foundation-table.mjs +67 -66
  266. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  267. package/fesm2022/bravobit-bb-foundation-tooltip.mjs +31 -61
  268. package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
  269. package/fesm2022/bravobit-bb-foundation-utils.mjs +28 -23
  270. package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
  271. package/fesm2022/bravobit-bb-foundation.mjs +166 -222
  272. package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
  273. package/http/lib/http.config.d.ts +5 -0
  274. package/http/lib/http.interfaces.d.ts +3 -0
  275. package/http/lib/http.module.d.ts +2 -6
  276. package/http/public_api.d.ts +1 -0
  277. package/lib/core/functions/array.utils.d.ts +1 -0
  278. package/lib/core/miscellaneous/coercion.d.ts +2 -0
  279. package/lib/core/miscellaneous/regex.d.ts +1 -0
  280. package/lib/core/services/files.service.d.ts +19 -0
  281. package/localize/lib/interfaces/config.interfaces.d.ts +1 -1
  282. package/localize/lib/interfaces/functions.interfaces.d.ts +0 -2
  283. package/localize/lib/localizations/dutch.localization.d.ts +18 -0
  284. package/localize/lib/localizations/english.localization.d.ts +18 -0
  285. package/localize/lib/localize.config.d.ts +6 -0
  286. package/localize/lib/localize.module.d.ts +2 -7
  287. package/localize/lib/localize.pipe.d.ts +1 -1
  288. package/localize/lib/localize.service.d.ts +4 -4
  289. package/localize/lib/localize.tokens.d.ts +11 -0
  290. package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
  291. package/localize/lib/views/localize-template.directive.d.ts +1 -1
  292. package/localize/public_api.d.ts +2 -2
  293. package/masking/lib/directives/currency-mask.directive.d.ts +1 -1
  294. package/masking/lib/directives/date-mask.directive.d.ts +1 -1
  295. package/masking/lib/directives/input-mask.directive.d.ts +1 -1
  296. package/masking/lib/masking.module.d.ts +1 -1
  297. package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
  298. package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -1
  299. package/notifications/lib/notifications.config.d.ts +3 -0
  300. package/notifications/lib/notifications.interfaces.d.ts +2 -1
  301. package/notifications/lib/notifications.module.d.ts +1 -5
  302. package/notifications/public_api.d.ts +1 -0
  303. package/package.json +31 -36
  304. package/permissions/lib/directives/permission.directive.d.ts +1 -1
  305. package/permissions/lib/guards/permission.guard.d.ts +3 -15
  306. package/permissions/lib/permissions.config.d.ts +3 -0
  307. package/permissions/lib/permissions.interface.d.ts +2 -1
  308. package/permissions/lib/permissions.module.d.ts +1 -1
  309. package/permissions/public_api.d.ts +1 -0
  310. package/public_api.d.ts +3 -10
  311. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +4 -7
  312. package/recaptcha/lib/recaptcha-loader.service.d.ts +9 -13
  313. package/recaptcha/lib/recaptcha.config.d.ts +3 -0
  314. package/recaptcha/lib/recaptcha.module.d.ts +2 -2
  315. package/recaptcha/public_api.d.ts +1 -0
  316. package/rxjs/lib/observables/get-route-param.observable.d.ts +3 -0
  317. package/rxjs/public_api.d.ts +1 -0
  318. package/{theming → select}/index.d.ts +1 -1
  319. package/select/lib/select/select.component.d.ts +75 -0
  320. package/select/lib/select-label.directive.d.ts +8 -0
  321. package/select/lib/select-option-group.directive.d.ts +8 -0
  322. package/select/lib/select-option.directive.d.ts +8 -0
  323. package/select/lib/select.module.d.ts +10 -0
  324. package/select/public_api.d.ts +5 -0
  325. package/styles/colors.scss +20 -0
  326. package/styles/grid.scss +98 -0
  327. package/styles/reset.scss +65 -0
  328. package/styles/theme.scss +88 -0
  329. package/table/lib/components/table/table.component.d.ts +4 -6
  330. package/table/lib/components/table-cell/table-cell.component.d.ts +1 -1
  331. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +4 -7
  332. package/table/lib/components/table-pager/table-pager.component.d.ts +4 -8
  333. package/table/lib/table.module.d.ts +1 -5
  334. package/tooltip/lib/tooltip-container/tooltip-container.component.d.ts +3 -4
  335. package/tooltip/lib/tooltip.directive.d.ts +8 -17
  336. package/tooltip/lib/tooltip.module.d.ts +2 -5
  337. package/tooltip/public_api.d.ts +1 -1
  338. package/utils/lib/directives/autosize.directive.d.ts +2 -1
  339. package/utils/lib/directives/focus-trap.directive.d.ts +1 -1
  340. package/utils/lib/directives/focus.directive.d.ts +1 -1
  341. package/utils/lib/directives/template.directive.d.ts +1 -1
  342. package/utils/lib/utils.module.d.ts +1 -1
  343. package/auth/lib/directives/abstract.directive.d.ts +0 -12
  344. package/collections/lib/components/collections.directive.d.ts +0 -17
  345. package/controls/index.d.ts +0 -5
  346. package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +0 -51
  347. package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +0 -23
  348. package/controls/lib/checkbox/checkbox.module.d.ts +0 -10
  349. package/controls/lib/control-error/control-error/control-error.animation.d.ts +0 -1
  350. package/controls/lib/control-error/control-error/control-error.component.d.ts +0 -17
  351. package/controls/lib/control-error/control-error-submit.directive.d.ts +0 -15
  352. package/controls/lib/control-error/control-error.defaults.d.ts +0 -2
  353. package/controls/lib/control-error/control-error.interface.d.ts +0 -12
  354. package/controls/lib/control-error/control-error.module.d.ts +0 -9
  355. package/controls/lib/control-error/control-error.utils.d.ts +0 -3
  356. package/controls/lib/controls.interfaces.d.ts +0 -4
  357. package/controls/lib/controls.module.d.ts +0 -14
  358. package/controls/lib/form-control/form-control/form-control.component.d.ts +0 -29
  359. package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +0 -6
  360. package/controls/lib/form-control/form-control-input.directive.d.ts +0 -35
  361. package/controls/lib/form-control/form-control.module.d.ts +0 -12
  362. package/controls/lib/radio/radio-button/radio-button.component.d.ts +0 -24
  363. package/controls/lib/radio/radio-group/radio-group.component.d.ts +0 -53
  364. package/controls/lib/radio/radio.module.d.ts +0 -11
  365. package/controls/lib/toggle/toggle/toggle.component.d.ts +0 -45
  366. package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +0 -23
  367. package/controls/lib/toggle/toggle.module.d.ts +0 -10
  368. package/controls/public_api.d.ts +0 -20
  369. package/elements/lib/dropdown/dropdown.component.d.ts +0 -21
  370. package/elements/lib/tag/tag.component.d.ts +0 -7
  371. package/esm2022/auth/lib/directives/abstract.directive.mjs +0 -40
  372. package/esm2022/collections/lib/components/collections.directive.mjs +0 -43
  373. package/esm2022/controls/bravobit-bb-foundation-controls.mjs +0 -5
  374. package/esm2022/controls/lib/checkbox/checkbox/checkbox.component.mjs +0 -178
  375. package/esm2022/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +0 -68
  376. package/esm2022/controls/lib/checkbox/checkbox.module.mjs +0 -20
  377. package/esm2022/controls/lib/control-error/control-error/control-error.animation.mjs +0 -14
  378. package/esm2022/controls/lib/control-error/control-error/control-error.component.mjs +0 -63
  379. package/esm2022/controls/lib/control-error/control-error-submit.directive.mjs +0 -47
  380. package/esm2022/controls/lib/control-error/control-error.defaults.mjs +0 -26
  381. package/esm2022/controls/lib/control-error/control-error.interface.mjs +0 -3
  382. package/esm2022/controls/lib/control-error/control-error.module.mjs +0 -19
  383. package/esm2022/controls/lib/control-error/control-error.utils.mjs +0 -20
  384. package/esm2022/controls/lib/controls.interfaces.mjs +0 -2
  385. package/esm2022/controls/lib/controls.module.mjs +0 -62
  386. package/esm2022/controls/lib/form-control/form-control/form-control.component.mjs +0 -79
  387. package/esm2022/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +0 -22
  388. package/esm2022/controls/lib/form-control/form-control-input.directive.mjs +0 -124
  389. package/esm2022/controls/lib/form-control/form-control.module.mjs +0 -34
  390. package/esm2022/controls/lib/radio/radio-button/radio-button.component.mjs +0 -75
  391. package/esm2022/controls/lib/radio/radio-group/radio-group.component.mjs +0 -168
  392. package/esm2022/controls/lib/radio/radio.module.mjs +0 -21
  393. package/esm2022/controls/lib/toggle/toggle/toggle.component.mjs +0 -153
  394. package/esm2022/controls/lib/toggle/toggle-group/toggle-group.component.mjs +0 -62
  395. package/esm2022/controls/lib/toggle/toggle.module.mjs +0 -20
  396. package/esm2022/controls/public_api.mjs +0 -21
  397. package/esm2022/elements/lib/dropdown/dropdown.component.mjs +0 -100
  398. package/esm2022/elements/lib/tag/tag.component.mjs +0 -18
  399. package/esm2022/lib/core/mixins/can-disable.mjs +0 -16
  400. package/esm2022/lib/core/mixins/can-hide-errors.mjs +0 -16
  401. package/esm2022/lib/core/mixins/can-load.mjs +0 -16
  402. package/esm2022/lib/core/mixins/constructor.mjs +0 -2
  403. package/esm2022/lib/core/mixins/has-error.mjs +0 -16
  404. package/esm2022/lib/core/mixins/is-focused.mjs +0 -16
  405. package/esm2022/lib/core/mixins/is-grouped.mjs +0 -16
  406. package/esm2022/lib/core/mixins/is-readonly.mjs +0 -16
  407. package/esm2022/lib/core/mixins/is-required.mjs +0 -16
  408. package/esm2022/lib/core/services/clipboard.service.mjs +0 -70
  409. package/esm2022/localize/lib/interfaces/transforms.interfaces.mjs +0 -3
  410. package/esm2022/localize/lib/locale.token.mjs +0 -14
  411. package/esm2022/theming/bravobit-bb-foundation-theming.mjs +0 -5
  412. package/esm2022/theming/lib/themes/checkbox-group.theme.mjs +0 -17
  413. package/esm2022/theming/lib/themes/checkbox.theme.mjs +0 -35
  414. package/esm2022/theming/lib/themes/control-error.theme.mjs +0 -11
  415. package/esm2022/theming/lib/themes/form-control-addon.theme.mjs +0 -6
  416. package/esm2022/theming/lib/themes/form-control.theme.mjs +0 -45
  417. package/esm2022/theming/lib/themes/radio-button.theme.mjs +0 -29
  418. package/esm2022/theming/lib/themes/radio-group.theme.mjs +0 -20
  419. package/esm2022/theming/lib/themes/toggle-group.theme.mjs +0 -17
  420. package/esm2022/theming/lib/themes/toggle.theme.mjs +0 -28
  421. package/esm2022/theming/lib/theming.data.mjs +0 -90
  422. package/esm2022/theming/lib/theming.directive.mjs +0 -38
  423. package/esm2022/theming/lib/theming.interface.mjs +0 -2
  424. package/esm2022/theming/lib/theming.module.mjs +0 -16
  425. package/esm2022/theming/lib/utils/theming.variable.mjs +0 -41
  426. package/esm2022/theming/public_api.mjs +0 -10
  427. package/fesm2022/bravobit-bb-foundation-controls.mjs +0 -1191
  428. package/fesm2022/bravobit-bb-foundation-controls.mjs.map +0 -1
  429. package/fesm2022/bravobit-bb-foundation-theming.mjs +0 -381
  430. package/fesm2022/bravobit-bb-foundation-theming.mjs.map +0 -1
  431. package/lib/core/mixins/can-disable.d.ts +0 -6
  432. package/lib/core/mixins/can-hide-errors.d.ts +0 -6
  433. package/lib/core/mixins/can-load.d.ts +0 -6
  434. package/lib/core/mixins/constructor.d.ts +0 -1
  435. package/lib/core/mixins/has-error.d.ts +0 -6
  436. package/lib/core/mixins/is-focused.d.ts +0 -6
  437. package/lib/core/mixins/is-grouped.d.ts +0 -6
  438. package/lib/core/mixins/is-readonly.d.ts +0 -6
  439. package/lib/core/mixins/is-required.d.ts +0 -6
  440. package/lib/core/services/clipboard.service.d.ts +0 -18
  441. package/localize/lib/interfaces/transforms.interfaces.d.ts +0 -3
  442. package/localize/lib/locale.token.d.ts +0 -3
  443. package/theming/lib/themes/checkbox-group.theme.d.ts +0 -16
  444. package/theming/lib/themes/checkbox.theme.d.ts +0 -32
  445. package/theming/lib/themes/control-error.theme.d.ts +0 -9
  446. package/theming/lib/themes/form-control-addon.theme.d.ts +0 -5
  447. package/theming/lib/themes/form-control.theme.d.ts +0 -32
  448. package/theming/lib/themes/radio-button.theme.d.ts +0 -26
  449. package/theming/lib/themes/radio-group.theme.d.ts +0 -17
  450. package/theming/lib/themes/toggle-group.theme.d.ts +0 -16
  451. package/theming/lib/themes/toggle.theme.d.ts +0 -25
  452. package/theming/lib/theming.data.d.ts +0 -17
  453. package/theming/lib/theming.directive.d.ts +0 -13
  454. package/theming/lib/theming.interface.d.ts +0 -34
  455. package/theming/lib/theming.module.d.ts +0 -7
  456. package/theming/lib/utils/theming.variable.d.ts +0 -16
  457. package/theming/public_api.d.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-collections.mjs","sources":["../../../projects/bb-foundation/collections/src/lib/providers/collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/api-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/local-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/components/collections.directive.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.html","../../../projects/bb-foundation/collections/src/lib/collection.ts","../../../projects/bb-foundation/collections/src/lib/collections.module.ts","../../../projects/bb-foundation/collections/src/bravobit-bb-foundation-collections.ts"],"sourcesContent":["import {CollectionData, CollectionRequest} from '../interfaces/collection.interface';\nimport {Observable} from 'rxjs';\n\nexport abstract class CollectionProvider<T> {\n\n abstract transform(request: CollectionRequest): Observable<CollectionData<T>>;\n\n protected formatArrayToCollectionData(items: T[]) {\n const count = items?.length ?? 1;\n return <CollectionData<T>>{\n pageSize: count,\n totalEntries: count,\n pageNumber: 1,\n totalPages: 1,\n data: items\n };\n }\n\n}\n","import {CollectionApiResponse, CollectionData, CollectionApiParams, CollectionRequest} from '../interfaces/collection.interface';\nimport {combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './collection.provider';\nimport {HttpClient} from '@angular/common/http';\nimport {map, switchMap} from 'rxjs/operators';\n\nexport class ApiCollectionProvider<T> extends CollectionProvider<T> {\n\n // State.\n protected extraParams: Record<string, Observable<CollectionApiParams>> = {};\n protected extraObjectParams: Observable<Record<string, CollectionApiParams>>[] = [];\n\n constructor(protected readonly endpoint: string | Observable<string>,\n protected readonly httpClient: HttpClient) {\n super();\n }\n\n append(name: string, value: CollectionApiParams | Observable<CollectionApiParams>) {\n this.extraParams[name] = isObservable(value) ? value : of(value);\n return this;\n }\n\n appendObject(value: Record<string, CollectionApiParams> | Observable<Record<string, CollectionApiParams>>) {\n const params = isObservable(value) ? value : of(value);\n this.extraObjectParams.push(params);\n }\n\n transform(request: CollectionRequest) {\n const endpoint$ = isObservable(this.endpoint) ? this.endpoint : of(this.endpoint);\n const params = this.getBackendFormat(request);\n const extraParams$ = this.getExtraParams(this.extraParams);\n const extraObjectParams$ = this.getExtraObjectParams(this.extraObjectParams);\n\n return combineLatest([endpoint$, extraParams$, extraObjectParams$]).pipe(\n switchMap(([endpoint, extraParams, extraObjectParams]) => {\n return this.httpClient.get<CollectionApiResponse<T> | T[]>(endpoint, {\n params: {...params, ...extraParams, ...extraObjectParams}\n });\n }),\n map(response => this.formatToCollectionData(response))\n );\n }\n\n protected getExtraParams(params: Record<string, Observable<CollectionApiParams>>) {\n const keys = Object.keys(params ?? {});\n if (keys?.length <= 0) {\n return of({});\n }\n\n const observables$ = keys.map(key => params?.[key]);\n return combineLatest(observables$).pipe(\n map(data => {\n return data.reduce((previous, current, index) => {\n if (current === null || current === undefined) {\n return previous;\n }\n const key = keys?.[index];\n return {...previous, [key]: current};\n }, {});\n })\n );\n }\n\n protected getExtraObjectParams(params$: Observable<Record<string, CollectionApiParams>>[]) {\n if (params$?.length <= 0) {\n return of({});\n }\n return combineLatest(params$).pipe(\n map(data => (data ?? []).reduce((previous, current) => ({...previous, ...(current ?? {})}), {})),\n map(data => {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current] ?? null;\n if (value === null || value === undefined) {\n return previous;\n }\n\n return {...previous, [current]: value};\n }, {});\n })\n );\n }\n\n protected formatToCollectionData(response: CollectionApiResponse<T> | T[]) {\n if (Array.isArray(response)) {\n return this.formatArrayToCollectionData(response);\n }\n\n return <CollectionData<T>>{\n pageSize: response?.page_size,\n pageNumber: response?.page_number,\n totalPages: response?.total_pages,\n totalEntries: response?.total_entries,\n data: response?.data,\n raw: response\n };\n }\n\n protected getBackendFormat(request: CollectionRequest) {\n const params = {};\n\n params['page'] = request?.pageNumber ?? 1;\n params['page_size'] = request?.pageSize ?? 25;\n\n if (request?.sort) {\n const sort = Array.isArray(request?.sort) ? request?.sort : [request?.sort];\n const filteredSort = sort?.filter(item => !!item?.name && !!item?.direction);\n\n params['sort'] = filteredSort?.map(item => item?.name)?.join(',');\n params['sort_direction'] = filteredSort?.map(item => item?.direction)?.join(',');\n }\n\n if (request?.query && request?.query?.length > 0 && request?.queryFields && request?.queryFields?.length > 0) {\n params['query'] = request?.query;\n params['query_fields'] = request?.queryFields?.join(',');\n }\n\n return params;\n }\n\n}\n","import {CollectionRequest} from '../interfaces/collection.interface';\nimport {CollectionProvider} from './collection.provider';\nimport {delay, map} from 'rxjs/operators';\nimport {BehaviorSubject} from 'rxjs';\n\nexport class LocalCollectionProvider<T> extends CollectionProvider<T> {\n\n private _items$ = new BehaviorSubject<T[]>([]);\n\n constructor(items: T[]) {\n super();\n this.update(items);\n }\n\n update(value: T[]) {\n this._items$.next(value);\n }\n\n transform(_request: CollectionRequest) {\n return this._items$.pipe(\n map(items => this.formatArrayToCollectionData(items)),\n delay(1)\n );\n }\n\n}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[bbCollectionsData]'\n})\nexport class BbCollectionsData<T> {\n}\n\n@Directive({\n selector: '[bbCollectionsEmpty]'\n})\nexport class BbCollectionsEmpty {\n}\n\n@Directive({\n selector: '[bbCollectionsError]'\n})\nexport class BbCollectionsError {\n}\n\n@Directive({\n selector: '[bbCollectionsInitial]'\n})\nexport class BbCollectionsInitial {\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport {\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n} from '../collections.directive';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: '[bb-collections-viewer]',\n templateUrl: './collections-viewer.component.html',\n styleUrls: ['./collections-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-viewer'},\n preserveWhitespaces: false\n})\nexport class BbCollectionsViewer<T = unknown> {\n\n // Content.\n @ContentChild(BbCollectionsData, {read: TemplateRef, static: false}) dataTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsEmpty, {read: TemplateRef, static: false}) emptyTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsError, {read: TemplateRef, static: false}) errorTemplate?: TemplateRef<any>;\n @ContentChild(BbCollectionsInitial, {read: TemplateRef, static: false}) initialTemplate?: TemplateRef<any>;\n\n // Inputs.\n @Input() collection: Collection<T> | null = null;\n\n}\n","<ng-container *ngIf=\"collection?.data$ | async as data\"\n [ngSwitch]=\"data?.state\">\n <ng-container *ngSwitchDefault>\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'initial'\">\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'empty'\">\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'error'\">\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n </ng-container>\n</ng-container>\n","import {ChangeDetectionStrategy, Component, Input, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {CollectionData} from '../../interfaces/collection.interface';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {Collection} from '../../collection';\nimport {map} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-collections-pager',\n templateUrl: './collections-pager.component.html',\n styleUrls: ['./collections-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-pager'},\n preserveWhitespaces: false\n})\nexport class BbCollectionsPager implements OnInit, OnDestroy {\n\n // Readonly data.\n readonly maxAmountOfButtons: number = 5;\n\n // Inputs.\n @Input()\n set label(value: string) {\n this._label = value;\n this.cache$.next(this.cache$.getValue());\n }\n\n @Input()\n set collection(collection: Collection<unknown> | null) {\n this._collection = collection;\n this.observeCollectionChanges();\n }\n\n // Data.\n data$: Observable<{\n totalPages: number,\n pageNumber: number,\n pages: { page: number, active: boolean }[],\n allowNext: boolean\n allowPrevious: boolean,\n label: string\n }>;\n cache$ = new BehaviorSubject<Partial<CollectionData<unknown>>>({});\n\n // State and subscriptions.\n private _label: string | null = null;\n private _collection: Collection<unknown> | null = null;\n private _subscription: Subscription | null = null;\n\n ngOnInit() {\n this.data$ = this.cache$.pipe(\n map(cache => {\n const pageSize = cache?.pageSize ?? 1;\n const pageNumber = cache?.pageNumber ?? 1;\n\n const totalPages = Math.max(0, cache?.totalPages ?? 1);\n const totalEntries = Math.max(0, cache?.totalEntries ?? 0);\n const fromStart = Math.max(0, Math.min((pageSize * (pageNumber - 1)) + 1, totalEntries));\n const fromEnd = Math.max(0, Math.min((fromStart - 1) + pageSize, totalEntries));\n\n const pages = this.filterActivePages(pageNumber, totalPages);\n\n const allowNext = pageNumber < totalPages;\n const allowPrevious = pageNumber > 1;\n\n return {\n totalPages,\n pages,\n pageNumber,\n allowNext,\n allowPrevious,\n label: this.calculateLabel(fromStart, fromEnd, totalEntries)\n };\n })\n );\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n setPage(pageNumber: number, totalPages: number) {\n // Calculate the new value.\n const newValue = Math.min(\n totalPages,\n Math.max(1, pageNumber)\n );\n\n // Validate the value is actually different.\n const currentValue = this._collection?.pageNumberControl?.value;\n if (currentValue === newValue) {\n return;\n }\n\n this._collection?.pageNumberControl?.setValue(pageNumber);\n }\n\n private observeCollectionChanges() {\n if (!this._collection) {\n return;\n }\n\n if (this._subscription) {\n this._subscription?.unsubscribe();\n }\n\n const pageNumber = this._collection?.pageNumberControl?.value;\n const pageSize = this._collection?.pageSizeControl?.value;\n\n this.cache$.next({pageNumber, pageSize});\n\n this._subscription = this._collection.raw$.subscribe(data => {\n if (data) {\n this.cache$.next(data);\n }\n });\n }\n\n private calculateLabel(start: number, end: number, total: number) {\n const startPoint = '[start]';\n const endPoint = '[end]';\n const totalPoint = '[total]';\n const label = this._label ?? `Showing ${startPoint} to ${endPoint} of ${totalPoint} results`;\n\n return label\n .replace(startPoint, `<strong>${start}</strong>`)\n .replace(endPoint, `<strong>${end}</strong>`)\n .replace(totalPoint, `<strong>${total}</strong>`);\n }\n\n private calculatePages(pageNumber: number, totalPages: number) {\n const min = 1;\n const max = totalPages;\n const amount = Math.max(1, this.maxAmountOfButtons);\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, totalPages)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","<ng-container *ngIf=\"data$ | async as data\">\n <div [innerHTML]=\"data?.label\"\n class=\"bb-collections-pager-text\">\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"!data?.allowPrevious\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n &#8592;\n </button>\n </li>\n <li *ngFor=\"let item of data?.pages\"\n [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"!data?.allowNext\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n &#8594;\n </button>\n </li>\n </ul>\n </div>\n</ng-container>\n","import {catchError, debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap, tap} from 'rxjs/operators';\nimport {CollectionData, CollectionRequest, CollectionRequestSort} from './interfaces/collection.interface';\nimport {BehaviorSubject, combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './providers/collection.provider';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {FormControl} from '@angular/forms';\n\nexport const enum CollectionState {\n Initial = 'initial',\n Error = 'error',\n Empty = 'empty',\n Data = 'data'\n}\n\nexport class Collection<T> {\n\n // Controls.\n readonly queryControl: FormControl<string | null>;\n readonly queryFieldsControl: FormControl<string[]>;\n readonly pageNumberControl: FormControl<number>;\n readonly pageSizeControl: FormControl<number>;\n readonly sortControl: FormControl<CollectionRequestSort | CollectionRequestSort[]>;\n\n // Request.\n readonly data$: Observable<{\n response?: CollectionData<T>,\n request?: CollectionRequest,\n error?: Error\n state: CollectionState,\n loading: boolean,\n initial: boolean\n }>;\n\n readonly raw$ = new BehaviorSubject<CollectionData<T> | null>(null);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n // State.\n private _formatter: (item: T[]) => T[] | Observable<T[]> = null;\n private _refresh$ = new BehaviorSubject<number>(0);\n private _requestCache: CollectionRequest | null = null;\n\n constructor(private readonly _provider: CollectionProvider<T>,\n readonly _initialValues: Partial<CollectionRequest> = {}) {\n this.queryControl = new FormControl<string | null>(_initialValues?.query ?? null);\n this.queryFieldsControl = new FormControl<string[]>(_initialValues?.queryFields ?? []);\n this.pageNumberControl = new FormControl<number>(_initialValues?.pageNumber ?? 1);\n this.pageSizeControl = new FormControl<number>(_initialValues?.pageSize ?? 25);\n this.sortControl = new FormControl<CollectionRequestSort | CollectionRequestSort[] | null>(_initialValues?.sort ?? null);\n\n this.data$ = this.getData();\n }\n\n refresh() {\n this._refresh$.next(0);\n }\n\n setFormatter(callback: (items: T[]) => T[] | Observable<T[]>) {\n this._formatter = callback;\n return this;\n }\n\n private getData() {\n const data$ = this.request.pipe(\n tap(() => this.loading$.next(true)),\n map(request => this.validateRequest(request)),\n switchMap(request => {\n return this._provider.transform(request).pipe(\n tap(response => this.cacheCollectionData(response)),\n map(response => ({response, request, initial: false})),\n catchError(error => of<{ error: Error, response: CollectionData<T> | null, request: CollectionRequest, initial: boolean }>({\n error,\n request,\n response: null,\n initial: false\n }))\n );\n }),\n startWith<{ initial: boolean, response: CollectionData<T> | null }>({initial: true, response: null}),\n shareReplay({refCount: true, bufferSize: 1})\n );\n\n return combineLatest([data$, this.loading$.asObservable()]).pipe(\n switchMap(([data, loading]) => {\n const combined = {...data, loading};\n return this.formatResponse(data?.response).pipe(\n map(response => {\n const data = {...combined, response};\n return {...data, state: this.getState(data)};\n })\n );\n })\n );\n }\n\n private formatResponse(response: CollectionData<T>) {\n if (!response || !this._formatter) {\n return of(response);\n }\n\n const items = response?.data ?? [];\n const data = this._formatter?.(items) ?? items;\n const data$ = isObservable(data) ? data : of(data);\n\n return data$.pipe(\n map(data => ({...response, data}))\n );\n }\n\n private validateRequest(request: CollectionRequest) {\n // We should reset the page number whenever we change the query or the page size.\n if (this._requestCache && request && (this._requestCache?.query !== request?.query || this._requestCache?.pageSize !== request?.pageSize)) {\n this.pageNumberControl?.setValue(1, {emitEvent: false});\n request.pageNumber = this.pageNumberControl?.value;\n }\n\n this._requestCache = {...request};\n\n return request;\n }\n\n private getState(data: { response?: CollectionData<T>, request?: CollectionRequest, error?: Error, loading: boolean, initial: boolean }) {\n if (!!data?.error) {\n return CollectionState.Error;\n }\n\n if (!!data?.initial) {\n return CollectionState.Initial;\n }\n\n const count = data?.response?.data?.length ?? 0;\n if (count <= 0) {\n return CollectionState.Empty;\n }\n\n return CollectionState.Data;\n }\n\n private cacheCollectionData(data: CollectionData<T>) {\n this.raw$.next(data);\n this.loading$.next(false);\n }\n\n private get request() {\n const pageNumber$ = getControlValue<number>(this.pageNumberControl);\n const pageSize$ = getControlValue<number>(this.pageSizeControl);\n const query$ = this.getQueryObservable();\n const queryFields$ = getControlValue<string[]>(this.queryFieldsControl);\n const sort$ = getControlValue<CollectionRequestSort | CollectionRequestSort[]>(this.sortControl);\n\n return combineLatest([pageNumber$, pageSize$, query$, queryFields$, sort$, this._refresh$.asObservable()]).pipe(\n map(([pageNumber, pageSize, query, queryFields, sort]) => ({\n pageNumber,\n pageSize,\n query,\n queryFields,\n sort\n }))\n );\n }\n\n private getQueryObservable() {\n return this.queryControl.valueChanges.pipe(\n debounceTime<string>(400),\n distinctUntilChanged<string>(),\n startWith(this.queryControl?.value as string | null)\n );\n }\n\n}\n\n","import {\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n} from './components/collections.directive';\nimport {BbCollectionsViewer} from './components/collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from './components/collections-pager/collections-pager.component';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [\n // Components.\n BbCollectionsViewer,\n BbCollectionsPager,\n // Directives.\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n ],\n exports: [\n // Components.\n BbCollectionsViewer,\n BbCollectionsPager,\n // Directives.\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial\n ]\n})\nexport class CollectionsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-collections.mjs","sources":["../../../projects/bb-foundation/collections/src/lib/providers/collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/api-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/providers/local-collection.provider.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-data.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-data-row.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-empty.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-error.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-initial.directive.ts","../../../projects/bb-foundation/collections/src/lib/directives/collections-item.directive.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-viewer/collections-viewer.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-pager/collections-pager.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-actions/collections-actions.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-actions/collections-actions.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table/collections-table.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table/collections-table.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table-sorting/collections-table-sorting.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table-sorting/collections-table-sorting.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-table-label/collections-table-label.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-table-label/collections-table-label.component.html","../../../projects/bb-foundation/collections/src/lib/components/collections-grid/collections-grid.component.ts","../../../projects/bb-foundation/collections/src/lib/components/collections-grid/collections-grid.component.html","../../../projects/bb-foundation/collections/src/lib/collection.ts","../../../projects/bb-foundation/collections/src/lib/collections.module.ts","../../../projects/bb-foundation/collections/src/bravobit-bb-foundation-collections.ts"],"sourcesContent":["import {CollectionData, CollectionRequest} from '../interfaces/collection.interface';\nimport {Observable} from 'rxjs';\n\nexport abstract class CollectionProvider<T> {\n\n abstract transform(request: CollectionRequest): Observable<CollectionData<T>>;\n\n protected formatArrayToCollectionData(items: T[]) {\n const count = items?.length ?? 1;\n return <CollectionData<T>>{\n pageSize: count,\n totalEntries: count,\n pageNumber: 1,\n totalPages: 1,\n data: items\n };\n }\n\n}\n","import {CollectionApiResponse, CollectionData, CollectionApiParams, CollectionRequest} from '../interfaces/collection.interface';\nimport {combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './collection.provider';\nimport {HttpClient} from '@angular/common/http';\nimport {map, switchMap} from 'rxjs/operators';\n\nexport class ApiCollectionProvider<T> extends CollectionProvider<T> {\n\n // State.\n protected extraParams: Record<string, Observable<CollectionApiParams>> = {};\n protected extraObjectParams: Observable<Record<string, CollectionApiParams>>[] = [];\n\n constructor(protected readonly endpoint: string | Observable<string>,\n protected readonly httpClient: HttpClient) {\n super();\n }\n\n append(name: string, value: CollectionApiParams | Observable<CollectionApiParams>) {\n this.extraParams[name] = isObservable(value) ? value : of(value);\n return this;\n }\n\n appendObject(value: Record<string, CollectionApiParams> | Observable<Record<string, CollectionApiParams>>) {\n const params = isObservable(value) ? value : of(value);\n this.extraObjectParams.push(params);\n }\n\n transform(request: CollectionRequest) {\n const endpoint$ = isObservable(this.endpoint) ? this.endpoint : of(this.endpoint);\n const params = this.getBackendFormat(request);\n const extraParams$ = this.getExtraParams(this.extraParams);\n const extraObjectParams$ = this.getExtraObjectParams(this.extraObjectParams);\n\n return combineLatest([endpoint$, extraParams$, extraObjectParams$]).pipe(\n switchMap(([endpoint, extraParams, extraObjectParams]) => {\n return this.httpClient.get<CollectionApiResponse<T> | T[]>(endpoint, {\n params: {...params, ...extraParams, ...extraObjectParams}\n });\n }),\n map(response => this.formatToCollectionData(response))\n );\n }\n\n protected getExtraParams(params: Record<string, Observable<CollectionApiParams>>) {\n const keys = Object.keys(params ?? {});\n if (keys?.length <= 0) {\n return of({});\n }\n\n const observables$ = keys.map(key => params?.[key]);\n return combineLatest(observables$).pipe(\n map(data => {\n return data.reduce((previous, current, index) => {\n if (current === null || current === undefined) {\n return previous;\n }\n const key = keys?.[index];\n return {...previous, [key]: current};\n }, {});\n })\n );\n }\n\n protected getExtraObjectParams(params$: Observable<Record<string, CollectionApiParams>>[]) {\n if (params$?.length <= 0) {\n return of({});\n }\n return combineLatest(params$).pipe(\n map(data => (data ?? []).reduce((previous, current) => ({...previous, ...(current ?? {})}), {})),\n map(data => {\n return Object.keys(data ?? {}).reduce((previous, current) => {\n const value = data?.[current] ?? null;\n if (value === null || value === undefined) {\n return previous;\n }\n\n return {...previous, [current]: value};\n }, {});\n })\n );\n }\n\n protected formatToCollectionData(response: CollectionApiResponse<T> | T[]) {\n if (Array.isArray(response)) {\n return this.formatArrayToCollectionData(response);\n }\n\n return <CollectionData<T>>{\n pageSize: response?.page_size,\n pageNumber: response?.page_number,\n totalPages: response?.total_pages,\n totalEntries: response?.total_entries,\n data: response?.data,\n raw: response\n };\n }\n\n protected getBackendFormat(request: CollectionRequest) {\n const params = {};\n\n params['page'] = request?.pageNumber ?? 1;\n params['page_size'] = request?.pageSize ?? 25;\n\n if (request?.sort) {\n const sort = Array.isArray(request?.sort) ? request?.sort : [request?.sort];\n const filteredSort = sort?.filter(item => !!item?.name && !!item?.direction);\n\n params['sort'] = filteredSort?.map(item => item?.name)?.join(',');\n params['sort_direction'] = filteredSort?.map(item => item?.direction)?.join(',');\n }\n\n if (request?.query && request?.query?.length > 0 && request?.queryFields && request?.queryFields?.length > 0) {\n params['query'] = request?.query;\n params['query_fields'] = request?.queryFields?.join(',');\n }\n\n return params;\n }\n\n}\n","import {CollectionRequest} from '../interfaces/collection.interface';\nimport {CollectionProvider} from './collection.provider';\nimport {delay, map} from 'rxjs/operators';\nimport {BehaviorSubject} from 'rxjs';\n\nexport class LocalCollectionProvider<T> extends CollectionProvider<T> {\n\n private _items$ = new BehaviorSubject<T[]>([]);\n\n constructor(items: T[]) {\n super();\n this.update(items);\n }\n\n update(value: T[]) {\n this._items$.next(value);\n }\n\n transform(_request: CollectionRequest) {\n return this._items$.pipe(\n map(items => this.formatArrayToCollectionData(items)),\n delay(1)\n );\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsDataContext<T> {\n items!: T[];\n loading!: boolean;\n\n constructor(items: T[], loading: boolean) {\n this.items = items;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: '[bbCollectionsData]',\n standalone: true\n})\nexport class BbCollectionsData<T> {\n\n constructor(public template: TemplateRef<BbCollectionsDataContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsData<T>, ctx: unknown): ctx is BbCollectionsDataContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsDataRowContext<T> {\n item!: T;\n $implicit!: T;\n\n constructor(item: T) {\n this.item = item;\n this.$implicit = item;\n }\n}\n\n@Directive({\n selector: '[bbCollectionsDataRow]',\n standalone: true\n})\nexport class BbCollectionsDataRow<T> {\n\n constructor(public template: TemplateRef<BbCollectionsDataRowContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsDataRow<T>, ctx: unknown): ctx is BbCollectionsDataRowContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsEmptyContext<T> {\n query!: string;\n loading!: boolean;\n\n constructor(query: string, loading: boolean) {\n this.query = query;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: '[bbCollectionsEmpty]',\n standalone: true\n})\nexport class BbCollectionsEmpty<T> {\n\n constructor(public template: TemplateRef<BbCollectionsEmptyContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsEmpty<T>, ctx: unknown): ctx is BbCollectionsEmptyContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsErrorContext<T> {\n error!: Error;\n loading!: boolean;\n\n constructor(error: Error, loading: boolean) {\n this.error = error;\n this.loading = loading;\n }\n}\n\n@Directive({\n selector: '[bbCollectionsError]',\n standalone: true\n})\nexport class BbCollectionsError<T> {\n\n constructor(public template: TemplateRef<BbCollectionsErrorContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsError<T>, ctx: unknown): ctx is BbCollectionsErrorContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsInitialContext<T> {\n}\n\n@Directive({\n selector: '[bbCollectionsInitial]',\n standalone: true\n})\nexport class BbCollectionsInitial<T> {\n\n constructor(public template: TemplateRef<BbCollectionsInitialContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsInitial<T>, ctx: unknown): ctx is BbCollectionsInitialContext<T> {\n return true;\n }\n\n}\n","import {Directive, TemplateRef} from '@angular/core';\n\nexport class BbCollectionsItemContext<T> {\n item!: T;\n $implicit!: T;\n\n constructor(item: T) {\n this.item = item;\n this.$implicit = item;\n }\n}\n\n@Directive({\n selector: '[bbCollectionsItem]',\n standalone: true\n})\nexport class BbCollectionsItem<T> {\n\n constructor(public template: TemplateRef<BbCollectionsItemContext<T>>) {\n }\n\n static ngTemplateContextGuard<T>(dir: BbCollectionsItem<T>, ctx: unknown): ctx is BbCollectionsItemContext<T> {\n return true;\n }\n\n}\n","import {ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsInitial, BbCollectionsInitialContext} from '../../directives/collections-initial.directive';\nimport {BbCollectionsError, BbCollectionsErrorContext} from '../../directives/collections-error.directive';\nimport {BbCollectionsEmpty, BbCollectionsEmptyContext} from '../../directives/collections-empty.directive';\nimport {BbCollectionsData, BbCollectionsDataContext} from '../../directives/collections-data.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: '[bb-collections-viewer]',\n templateUrl: './collections-viewer.component.html',\n styleUrls: ['./collections-viewer.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-viewer'},\n preserveWhitespaces: false,\n standalone: true,\n imports: [AsyncPipe, NgTemplateOutlet]\n})\nexport class BbCollectionsViewer<T = unknown> {\n\n // Content.\n @ContentChild(BbCollectionsData, {read: TemplateRef, static: false}) dataTemplate?: TemplateRef<BbCollectionsDataContext<T>>;\n @ContentChild(BbCollectionsEmpty, {read: TemplateRef, static: false}) emptyTemplate?: TemplateRef<BbCollectionsEmptyContext<T>>;\n @ContentChild(BbCollectionsError, {read: TemplateRef, static: false}) errorTemplate?: TemplateRef<BbCollectionsErrorContext<T>>;\n @ContentChild(BbCollectionsInitial, {read: TemplateRef, static: false}) initialTemplate?: TemplateRef<BbCollectionsInitialContext<T>>;\n\n // Inputs.\n @Input() collection: Collection<T> | null = null;\n\n}\n","@if (collection?.data$ | async; as data) {\n @switch (data?.state) {\n @case ('initial') {\n <ng-container *ngTemplateOutlet=\"initialTemplate\"></ng-container>\n }\n @case ('empty') {\n <ng-container\n *ngTemplateOutlet=\"emptyTemplate; context: {query: data?.request?.query, loading: data?.loading}\"></ng-container>\n }\n @case ('error') {\n <ng-container\n *ngTemplateOutlet=\"errorTemplate; context: {error: data?.error, loading: data?.loading}\"></ng-container>\n }\n @default {\n <ng-container\n *ngTemplateOutlet=\"dataTemplate; context: {items: data?.response?.data, loading: data?.loading}\"></ng-container>\n }\n }\n}\n","import {ChangeDetectionStrategy, Component, Input, numberAttribute, OnDestroy, OnInit, ViewEncapsulation} from '@angular/core';\nimport {BbLocalize, BbLocalizeString, BbLocalizeTemplate} from '@bravobit/bb-foundation/localize';\nimport {CollectionData} from '../../interfaces/collection.interface';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {combineLatestMap} from '@bravobit/bb-foundation/rxjs';\nimport {map, shareReplay} from 'rxjs/operators';\nimport {Collection} from '../../collection';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n selector: 'bb-collections-pager',\n templateUrl: './collections-pager.component.html',\n styleUrls: ['./collections-pager.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-pager'},\n preserveWhitespaces: false,\n standalone: true,\n imports: [AsyncPipe, BbLocalizeString, BbLocalize, BbLocalizeTemplate]\n})\nexport class BbCollectionsPager implements OnInit, OnDestroy {\n\n @Input({transform: numberAttribute})\n set maxAmountOfButtons(value: number) {\n this._maxAmountOfButtons$.next(Math.max(1, value));\n }\n\n get maxAmountOfButtons() {\n return this._maxAmountOfButtons$.getValue();\n }\n\n @Input({required: true})\n set collection(collection: Collection<unknown> | null) {\n this._collection = collection;\n this.observeCollectionChanges();\n }\n\n get collection() {\n return this._collection;\n }\n\n // Data.\n data$: Observable<{\n start?: number,\n end?: number,\n totalEntries?: number,\n totalPages?: number,\n pageNumber?: number,\n pages?: { page: number, active: boolean }[]\n }>;\n\n // State and subscriptions.\n private _collection: Collection<unknown> | null = null;\n private _subscription: Subscription | null = null;\n private _cache$ = new BehaviorSubject<Partial<CollectionData<unknown>>>({});\n private _maxAmountOfButtons$ = new BehaviorSubject<number>(3);\n\n ngOnInit() {\n this.setData();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n setPage(pageNumber: number, totalPages: number) {\n // Calculate the new value.\n const newValue = Math.min(\n totalPages,\n Math.max(1, pageNumber)\n );\n\n // Validate the value is actually different.\n const currentValue = this._collection?.pageNumberControl?.value;\n if (currentValue === newValue) {\n return;\n }\n\n this._collection?.pageNumberControl?.setValue(pageNumber);\n }\n\n private setData() {\n this.data$ = combineLatestMap({\n cache: this._cache$,\n maxAmountOfButtons: this._maxAmountOfButtons$\n }).pipe(\n map(({cache, maxAmountOfButtons}) => {\n const pageSize = cache?.pageSize ?? 1;\n const pageNumber = cache?.pageNumber ?? 1;\n\n const totalEntries = Math.max(0, cache?.totalEntries ?? 0);\n const start = Math.max(0, Math.min((pageSize * (pageNumber - 1)) + 1, totalEntries));\n const end = Math.max(0, Math.min((start - 1) + pageSize, totalEntries));\n const totalPages = Math.max(0, cache?.totalPages ?? 1);\n\n const pages = this.filterActivePages(pageNumber, totalPages, maxAmountOfButtons);\n\n return {start, end, totalEntries, totalPages, pages, pageNumber};\n }),\n shareReplay({refCount: true, bufferSize: 1})\n );\n }\n\n private observeCollectionChanges() {\n if (this._subscription) {\n this._subscription?.unsubscribe();\n }\n\n if (!this._collection) {\n return;\n }\n\n this._subscription = this._collection.raw$.subscribe(data => {\n if (data) {\n this._cache$.next(data);\n }\n });\n }\n\n private calculatePages(pageNumber: number, totalPages: number, maxAmountOfButtons: number) {\n const min = 1;\n const max = totalPages;\n const amount = Math.max(1, maxAmountOfButtons);\n\n const start = Math.max(0, pageNumber - Math.floor(amount / 2));\n const data = Array(amount)\n .fill(0)\n .map((_, index) => start + index);\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, maxAmountOfButtons: number) {\n return this.calculatePages(pageNumber, totalPages, maxAmountOfButtons)\n .filter(page => page > 0 && page <= totalPages)\n .map(page => ({page, active: pageNumber === page}));\n }\n\n}\n","@if (data$ | async; as data) {\n <div [bb-localize-string]=\"'collection.showing_label' | bbLocalize\"\n class=\"bb-collections-pager-text\">\n <strong *bbLocalizeTemplate=\"'start'\">{{ data?.start }}</strong>\n <strong *bbLocalizeTemplate=\"'end'\">{{ data?.end }}</strong>\n <strong *bbLocalizeTemplate=\"'total'\">{{ data?.totalEntries }}</strong>\n </div>\n\n <div class=\"bb-collections-pager-container\">\n <ul class=\"bb-collections-pager-list\">\n <li class=\"bb-collections-pager-item\"\n title=\"Previous page\">\n <button [disabled]=\"data?.pageNumber <= 1\"\n (click)=\"setPage(data?.pageNumber - 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow first\"\n type=\"button\">\n &#8592;\n </button>\n </li>\n @for (item of data?.pages; track item?.page) {\n <li [title]=\"'Page ' + item?.page\"\n class=\"bb-collections-pager-item\">\n <button [class.active]=\"item?.active\"\n (click)=\"setPage(item?.page, data?.totalPages)\"\n class=\"bb-collections-pager-button\"\n type=\"button\">\n {{ item?.page }}\n </button>\n </li>\n }\n <li class=\"bb-collections-pager-item\"\n title=\"Next page\">\n <button [disabled]=\"data?.pageNumber >= data?.totalPages\"\n (click)=\"setPage(data?.pageNumber + 1, data?.totalPages)\"\n class=\"bb-collections-pager-button arrow last\"\n type=\"button\">\n &#8594;\n </button>\n </li>\n </ul>\n </div>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from '@angular/core';\nimport {BbFormControl, BbIcon, BbInput, BbPrefix} from '@bravobit/bb-foundation/elements';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {Collection} from '../../collection';\n\n@Component({\n selector: 'bb-collections-actions',\n templateUrl: './collections-actions.component.html',\n styleUrls: ['./collections-actions.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-actions',\n '[class.standalone]': 'standalone'\n },\n preserveWhitespaces: false,\n standalone: true,\n imports: [\n ReactiveFormsModule,\n BbInput,\n BbLocalize,\n BbIcon,\n BbFormControl,\n BbPrefix\n ]\n})\nexport class BbCollectionsActions<T> {\n\n // Inputs.\n @Input({required: true}) collection: Collection<T> | null = null;\n @Input() queryPlaceholder: string | null = null;\n @Input({transform: booleanAttribute}) standalone: boolean = false;\n\n}\n","<div class=\"bb-collections-actions-row\">\n <bb-form-control class=\"bb-collections-actions-search\">\n <bb-icon bbPrefix\n src=\"material:search\"></bb-icon>\n <input [formControl]=\"collection?.queryControl\"\n [placeholder]=\"queryPlaceholder ?? ('collection.search_label' | bbLocalize)\"\n bbInput\n autocomplete=\"off\"\n type=\"search\">\n </bb-form-control>\n <ng-content select=\"[data-collections-action]\"></ng-content>\n</div>\n<ng-content></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsDataRow, BbCollectionsDataRowContext} from '../../directives/collections-data-row.directive';\nimport {BbLocalize, BbLocalizeString, BbLocalizeTemplate} from '@bravobit/bb-foundation/localize';\nimport {BbCollectionsActions} from '../collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from '../collections-viewer/collections-viewer.component';\nimport {BbCollectionsInitial} from '../../directives/collections-initial.directive';\nimport {BbCollectionsPager} from '../collections-pager/collections-pager.component';\nimport {BbCollectionsEmpty} from '../../directives/collections-empty.directive';\nimport {BbCollectionsError} from '../../directives/collections-error.directive';\nimport {BbCollectionsData} from '../../directives/collections-data.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbSpinner} from '@bravobit/bb-foundation/elements';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {Collection} from '../../collection';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-collections-table',\n templateUrl: './collections-table.component.html',\n styleUrls: ['./collections-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-table',\n '[class.include-vertical-lines]': 'includeVerticalLines'\n },\n preserveWhitespaces: false,\n standalone: true,\n imports: [\n NgTemplateOutlet,\n BbCollectionsViewer,\n BbCollectionsData,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsActions,\n BbCollectionsPager,\n BbLocalizeString,\n BbTemplate,\n BbLocalize,\n BbLocalizeTemplate,\n BbSpinner,\n AsyncPipe\n ]\n})\nexport class BbCollectionsTable<T> {\n\n // Readonly data.\n readonly collection$ = new BehaviorSubject<Collection<T> | null>(null);\n\n // Views.\n @ContentChild(BbCollectionsDataRow, {read: TemplateRef, static: false}) dataRowTemplate?: TemplateRef<BbCollectionsDataRowContext<T>>;\n\n // Inputs.\n @Input() queryPlaceholder: string | null = null;\n @Input() emptyContent: string | TemplateRef<any> | null = null;\n @Input() noResultsContent: string | TemplateRef<any> | null = null;\n @Input() errorContent: string | TemplateRef<any> | null = null;\n @Input() trackByProperty: string | null = 'id';\n @Input({transform: booleanAttribute}) includeVerticalLines: boolean = false;\n @Input({transform: booleanAttribute}) hideActions: boolean = false;\n @Input({transform: booleanAttribute}) hidePager: boolean = false;\n\n @Input({required: true})\n set collection(collection: Collection<T>) {\n this.collection$.next(collection);\n }\n\n get collection() {\n return this.collection$.getValue();\n }\n\n}\n","@if (!hideActions) {\n <bb-collections-actions [collection]=\"collection\"\n [queryPlaceholder]=\"queryPlaceholder\">\n <ng-content ngProjectAs=\"[data-collections-action]\"\n select=\"[data-collections-action]\"></ng-content>\n <ng-content ngProjectAs=\"[data-collections-row]\"\n select=\"[data-collections-row]\"></ng-content>\n </bb-collections-actions>\n}\n\n<div [collection]=\"collection\"\n [class.loading]=\"collection?.loading$ | async\"\n class=\"bb-collections-table-container\"\n bb-collections-viewer>\n <table *bbCollectionsData=\"let items = items; let loading = loading\">\n <ng-content select=\"thead\"></ng-content>\n <tbody>\n @for (item of items; track (trackByProperty === null ? $index : item[trackByProperty])) {\n <ng-container\n *ngTemplateOutlet=\"dataRowTemplate; context: {$implicit: item, item: item}\"></ng-container>\n }\n </tbody>\n <ng-content select=\"tfoot\"></ng-content>\n </table>\n <div *bbCollectionsEmpty=\"let query = query\"\n class=\"bb-collections-table-info\">\n <div class=\"bb-collections-table-image empty\"></div>\n @if (query?.length > 0) {\n <ng-template [bbTemplate]=\"noResultsContent\">\n <p [bb-localize-string]=\"$any(noResultsContent) ?? ('collection.no_results_label' | bbLocalize)\"\n class=\"bb-collections-table-info-text\">\n <strong *bbLocalizeTemplate=\"'query'\">{{ query ?? '...' }}</strong>\n </p>\n </ng-template>\n } @else {\n <ng-template [bbTemplate]=\"emptyContent\">\n <p class=\"bb-collections-table-info-text\">\n {{ $any(emptyContent) ?? ('collection.empty_label' | bbLocalize) }}\n </p>\n </ng-template>\n }\n </div>\n <div *bbCollectionsError=\"let error = error\"\n class=\"bb-collections-table-info\">\n <div class=\"bb-collections-table-image error\"></div>\n <ng-template [bbTemplate]=\"errorContent\">\n <p class=\"bb-collections-table-info-text\">\n {{ $any(errorContent) ?? ('collection.error_label' | bbLocalize) }}\n </p>\n </ng-template>\n </div>\n <div *bbCollectionsInitial\n class=\"bb-collections-table-info\">\n <bb-spinner class=\"block\"></bb-spinner>\n </div>\n</div>\n\n@if (!hidePager) {\n <footer class=\"bb-collections-table-footer\">\n <bb-collections-pager [collection]=\"collection\"></bb-collections-pager>\n </footer>\n}\n","import {Attribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, HostListener, OnDestroy, OnInit, Optional, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsTable} from '../collections-table/collections-table.component';\nimport {distinctUntilChanged, map, switchMap} from 'rxjs/operators';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {Subscription} from 'rxjs';\n\n@Component({\n selector: 'th[bb-collections-table-sorting]',\n templateUrl: './collections-table-sorting.component.html',\n styleUrls: ['./collections-table-sorting.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-collections-table-sorting',\n '[class.asc]': 'direction === \\'asc\\'',\n '[class.desc]': 'direction === \\'desc\\''\n },\n preserveWhitespaces: false,\n standalone: true\n})\nexport class BbCollectionsTableSorting implements OnInit, OnDestroy {\n\n // Readonly data.\n readonly orderedOptions: [null, 'asc', 'desc'] = [null, 'asc', 'desc'];\n\n // State.\n direction: 'asc' | 'desc' | null = null;\n\n // Subscription.\n private _subscription = new Subscription();\n\n constructor(@Attribute('bb-collections-table-sorting') private _name: string,\n private _changeDetectorRef: ChangeDetectorRef,\n @Optional() private _parent?: BbCollectionsTable<unknown>) {\n }\n\n ngOnInit() {\n const direction$ = this._parent.collection$.pipe(\n switchMap(collection => getControlValue(collection.sortControl)),\n map(value => Array.isArray(value) ? value : [value]),\n map(value => value?.find(item => item?.name === this._name)),\n map(sorting => sorting?.direction ?? null),\n distinctUntilChanged()\n );\n const subscription = direction$.subscribe(direction => {\n this.direction = direction;\n this._changeDetectorRef.markForCheck();\n });\n this._subscription.add(subscription);\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n @HostListener('click')\n onClick() {\n if (!this._name) {\n return;\n }\n\n const nextDirection = this.getNextOption(this.direction);\n const controlValue = nextDirection === null ? null : {name: this._name, direction: nextDirection};\n this._parent?.collection?.sortControl?.setValue(controlValue);\n }\n\n private getNextOption(direction: string) {\n const index = this.orderedOptions.findIndex(item => item === direction);\n const newIndex = (index + 1) % this.orderedOptions?.length;\n return this.orderedOptions?.[newIndex] ?? null;\n }\n\n}\n","<ng-content></ng-content>\n","import {ChangeDetectionStrategy, Component, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbAvatar} from '@bravobit/bb-foundation/elements';\n\n@Component({\n selector: '[bb-collections-table-label]',\n templateUrl: './collections-table-label.component.html',\n styleUrls: ['./collections-table-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-table-label'},\n preserveWhitespaces: false,\n imports: [\n BbAvatar\n ],\n standalone: true\n})\nexport class BbCollectionsTableLabel {\n\n // Inputs.\n @Input({required: true}) titleLabel: string | TemplateRef<any> | null = null;\n @Input() descriptionLabel: string | TemplateRef<any> | null = null;\n @Input() imageUrl: string | null = null;\n @Input() alt: string | null = null;\n @Input() type: 'image' | 'avatar' | 'content' = 'image';\n\n}\n","@switch (type) {\n @case ('avatar') {\n <bb-avatar [title]=\"alt ?? '...'\"\n [src]=\"imageUrl\"\n [size]=\"2\"\n class=\"bb-collections-table-label-avatar\">\n </bb-avatar>\n }\n @case ('content') {\n <ng-content></ng-content>\n }\n @default {\n @if (imageUrl; as src) {\n <div [style.background-image]=\"'url(' + src + ')'\"\n class=\"bb-collections-table-label-image\"></div>\n }\n }\n}\n\n<div class=\"bb-collections-table-label-content\">\n <span class=\"bb-collections-table-label-title\">{{ titleLabel }}</span>\n @if (descriptionLabel) {\n <small class=\"bb-collections-table-label-description\">{{ descriptionLabel }}</small>\n }\n</div>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbCollectionsItem, BbCollectionsItemContext} from '../../directives/collections-item.directive';\nimport {BbCollectionsActions} from '../collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from '../collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from '../collections-pager/collections-pager.component';\nimport {BbCollectionsData} from '../../directives/collections-data.directive';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {Collection} from '../../collection';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n selector: 'bb-collections-grid',\n templateUrl: './collections-grid.component.html',\n styleUrls: ['./collections-grid.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-collections-grid'},\n preserveWhitespaces: false,\n standalone: true,\n imports: [\n BbCollectionsData,\n BbCollectionsViewer,\n NgTemplateOutlet,\n BbCollectionsActions,\n BbCollectionsPager\n ]\n})\nexport class BbCollectionsGrid<T> {\n\n // Readonly data.\n readonly collection$ = new BehaviorSubject<Collection<T> | null>(null);\n\n // Views.\n @ContentChild(BbCollectionsItem, {read: TemplateRef, static: false}) itemTemplate?: TemplateRef<BbCollectionsItemContext<T>>;\n\n // Inputs.\n @Input() queryPlaceholder: string | null = null;\n @Input({transform: booleanAttribute}) hideActions: boolean = false;\n @Input({transform: booleanAttribute}) hidePager: boolean = false;\n\n @Input({required: true})\n set collection(collection: Collection<T>) {\n this.collection$.next(collection);\n }\n\n get collection() {\n return this.collection$.getValue();\n }\n\n}\n","@if (!hideActions) {\n <bb-collections-actions [collection]=\"collection\"\n [queryPlaceholder]=\"queryPlaceholder\"\n standalone>\n <ng-content ngProjectAs=\"[data-collections-action]\"\n select=\"[data-collections-action]\"></ng-content>\n <ng-content ngProjectAs=\"[data-collections-row]\"\n select=\"[data-collections-row]\"></ng-content>\n </bb-collections-actions>\n}\n\n<div [collection]=\"collection\"\n class=\"bb-collections-grid-container\"\n bb-collections-viewer>\n <ul *bbCollectionsData=\"let items = items\"\n class=\"bb-collections-grid-list\">\n @for (item of items; track $index) {\n <li class=\"bb-collections-grid-item\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item, item: item}\"></ng-container>\n </li>\n }\n </ul>\n</div>\n\n@if (!hidePager) {\n <footer class=\"bb-collections-grid-footer\">\n <bb-collections-pager [collection]=\"collection\"></bb-collections-pager>\n </footer>\n}\n","import {catchError, debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap, tap} from 'rxjs/operators';\nimport {CollectionData, CollectionRequest, CollectionRequestSort} from './interfaces/collection.interface';\nimport {BehaviorSubject, combineLatest, isObservable, Observable, of} from 'rxjs';\nimport {CollectionProvider} from './providers/collection.provider';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {FormControl} from '@angular/forms';\n\nexport const enum CollectionState {\n Initial = 'initial',\n Error = 'error',\n Empty = 'empty',\n Data = 'data'\n}\n\nexport class Collection<T> {\n\n // Controls.\n readonly queryControl: FormControl<string | null>;\n readonly queryFieldsControl: FormControl<string[]>;\n readonly pageNumberControl: FormControl<number>;\n readonly pageSizeControl: FormControl<number>;\n readonly sortControl: FormControl<CollectionRequestSort | CollectionRequestSort[]>;\n\n // Request.\n readonly data$: Observable<{\n response?: CollectionData<T>,\n request?: CollectionRequest,\n error?: Error\n state: CollectionState,\n loading: boolean,\n initial: boolean\n }>;\n\n readonly raw$ = new BehaviorSubject<CollectionData<T> | null>(null);\n readonly loading$ = new BehaviorSubject<boolean>(true);\n\n // State.\n private _formatter: (item: T[]) => T[] | Observable<T[]> = null;\n private _refresh$ = new BehaviorSubject<number>(0);\n private _requestCache: CollectionRequest | null = null;\n\n constructor(private readonly _provider: CollectionProvider<T>,\n readonly _initialValues: Partial<CollectionRequest> = {}) {\n this.queryControl = new FormControl<string | null>(_initialValues?.query ?? null);\n this.queryFieldsControl = new FormControl<string[]>(_initialValues?.queryFields ?? []);\n this.pageNumberControl = new FormControl<number>(_initialValues?.pageNumber ?? 1);\n this.pageSizeControl = new FormControl<number>(_initialValues?.pageSize ?? 25);\n this.sortControl = new FormControl<CollectionRequestSort | CollectionRequestSort[] | null>(_initialValues?.sort ?? null);\n\n this.data$ = this.getData();\n }\n\n refresh() {\n this._refresh$.next(0);\n }\n\n setFormatter(callback: (items: T[]) => T[] | Observable<T[]>) {\n this._formatter = callback;\n return this;\n }\n\n private getData() {\n const data$ = this.request.pipe(\n tap(() => this.loading$.next(true)),\n map(request => this.validateRequest(request)),\n switchMap(request => {\n return this._provider.transform(request).pipe(\n tap(response => this.cacheCollectionData(response)),\n map(response => ({response, request, initial: false})),\n catchError(error => of<{ error: Error, response: CollectionData<T> | null, request: CollectionRequest, initial: boolean }>({\n error,\n request,\n response: null,\n initial: false\n }))\n );\n }),\n startWith<{ initial: boolean, response: CollectionData<T> | null }>({initial: true, response: null}),\n shareReplay({refCount: true, bufferSize: 1})\n );\n\n return combineLatest([data$, this.loading$.asObservable()]).pipe(\n switchMap(([data, loading]) => {\n const combined = {...data, loading};\n return this.formatResponse(data?.response).pipe(\n map(response => {\n const data = {...combined, response};\n return {...data, state: this.getState(data)};\n })\n );\n })\n );\n }\n\n private formatResponse(response: CollectionData<T>) {\n if (!response || !this._formatter) {\n return of(response);\n }\n\n const items = response?.data ?? [];\n const data = this._formatter?.(items) ?? items;\n const data$ = isObservable(data) ? data : of(data);\n\n return data$.pipe(\n map(data => ({...response, data}))\n );\n }\n\n private validateRequest(request: CollectionRequest) {\n // We should reset the page number whenever we change the query or the page size.\n if (this._requestCache && request && (this._requestCache?.query !== request?.query || this._requestCache?.pageSize !== request?.pageSize)) {\n this.pageNumberControl?.setValue(1, {emitEvent: false});\n request.pageNumber = this.pageNumberControl?.value;\n }\n\n this._requestCache = {...request};\n\n return request;\n }\n\n private getState(data: { response?: CollectionData<T>, request?: CollectionRequest, error?: Error, loading: boolean, initial: boolean }) {\n if (!!data?.error) {\n return CollectionState.Error;\n }\n\n if (!!data?.initial) {\n return CollectionState.Initial;\n }\n\n const count = data?.response?.data?.length ?? 0;\n if (count <= 0) {\n return CollectionState.Empty;\n }\n\n return CollectionState.Data;\n }\n\n private cacheCollectionData(data: CollectionData<T>) {\n this.raw$.next(data);\n this.loading$.next(false);\n }\n\n private get request() {\n const pageNumber$ = getControlValue<number>(this.pageNumberControl);\n const pageSize$ = getControlValue<number>(this.pageSizeControl);\n const query$ = this.getQueryObservable();\n const queryFields$ = getControlValue<string[]>(this.queryFieldsControl);\n const sort$ = getControlValue<CollectionRequestSort | CollectionRequestSort[]>(this.sortControl);\n\n return combineLatest([pageNumber$, pageSize$, query$, queryFields$, sort$, this._refresh$.asObservable()]).pipe(\n map(([pageNumber, pageSize, query, queryFields, sort]) => ({\n pageNumber,\n pageSize,\n query,\n queryFields,\n sort\n }))\n );\n }\n\n private getQueryObservable() {\n return this.queryControl.valueChanges.pipe(\n debounceTime<string>(400),\n distinctUntilChanged<string>(),\n startWith(this.queryControl?.value as string | null)\n );\n }\n\n}\n\n","import {BbCollectionsTableSorting} from './components/collections-table-sorting/collections-table-sorting.component';\nimport {BbCollectionsTableLabel} from './components/collections-table-label/collections-table-label.component';\nimport {BbCollectionsActions} from './components/collections-actions/collections-actions.component';\nimport {BbCollectionsViewer} from './components/collections-viewer/collections-viewer.component';\nimport {BbCollectionsPager} from './components/collections-pager/collections-pager.component';\nimport {BbCollectionsTable} from './components/collections-table/collections-table.component';\nimport {BbCollectionsGrid} from './components/collections-grid/collections-grid.component';\nimport {BbCollectionsDataRow} from './directives/collections-data-row.directive';\nimport {BbCollectionsInitial} from './directives/collections-initial.directive';\nimport {BbCollectionsEmpty} from './directives/collections-empty.directive';\nimport {BbCollectionsError} from './directives/collections-error.directive';\nimport {BbCollectionsData} from './directives/collections-data.directive';\nimport {BbCollectionsItem} from './directives/collections-item.directive';\nimport {NgModule} from '@angular/core';\n\n@NgModule({\n imports: [\n BbCollectionsViewer,\n BbCollectionsPager,\n BbCollectionsTable,\n BbCollectionsTableSorting,\n BbCollectionsTableLabel,\n BbCollectionsGrid,\n BbCollectionsActions,\n BbCollectionsData,\n BbCollectionsDataRow,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsItem\n ],\n exports: [\n BbCollectionsViewer,\n BbCollectionsPager,\n BbCollectionsTable,\n BbCollectionsTableSorting,\n BbCollectionsTableLabel,\n BbCollectionsGrid,\n BbCollectionsActions,\n BbCollectionsData,\n BbCollectionsDataRow,\n BbCollectionsEmpty,\n BbCollectionsError,\n BbCollectionsInitial,\n BbCollectionsItem\n ]\n})\nexport class CollectionsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BbCollectionsTable"],"mappings":"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"}
@@ -35,17 +35,17 @@ class BbComboboxPanel {
35
35
  this._combobox.select(item?.value ?? null);
36
36
  this._container.close();
37
37
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbComboboxPanel, deps: [{ token: BbCombobox }, { token: BbComboboxContainer }], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.1", type: BbComboboxPanel, isStandalone: true, selector: "bb-combobox-panel", host: { attributes: { "role": "listbox" }, properties: { "@comboboxPanelAnimation": "this.animation" }, classAttribute: "bb-combobox-panel" }, hostDirectives: [{ directive: i3.CdkTrapFocus }], ngImport: i0, template: "@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n", styles: [".bb-combobox-panel{width:100%;padding:8px;display:block;overflow-y:auto;overflow-x:hidden;border-radius:8px;background-color:#fff;box-shadow:#00000014 0 10px 40px 10px}.bb-combobox-panel-item{cursor:pointer;padding:12px 20px;border-radius:8px}.bb-combobox-panel-item:hover,.bb-combobox-panel-item:focus{background-color:orange}.bb-combobox-panel-item:active{background-color:red}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [comboboxPanelAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbComboboxPanel, deps: [{ token: BbCombobox }, { token: BbComboboxContainer }], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: BbComboboxPanel, isStandalone: true, selector: "bb-combobox-panel", host: { attributes: { "role": "listbox" }, properties: { "@comboboxPanelAnimation": "this.animation" }, classAttribute: "bb-combobox-panel" }, hostDirectives: [{ directive: i3.CdkTrapFocus }], ngImport: i0, template: "@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n", styles: [".bb-combobox-panel{width:100%;display:block;padding:.5rem;overflow-y:auto;overflow-x:hidden;border-radius:.5rem;background-color:#fff;box-shadow:#00000014 0 10px 40px 10px}.bb-combobox-panel-item{cursor:pointer;border-radius:.5rem;padding:.75rem 1.5rem}.bb-combobox-panel-item:hover,.bb-combobox-panel-item:focus{background-color:orange}.bb-combobox-panel-item:active{background-color:red}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [comboboxPanelAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbComboboxPanel, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbComboboxPanel, decorators: [{
42
42
  type: Component,
43
43
  args: [{ selector: 'bb-combobox-panel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
44
44
  'class': 'bb-combobox-panel',
45
45
  'role': 'listbox'
46
46
  }, hostDirectives: [
47
47
  { directive: CdkTrapFocus }
48
- ], preserveWhitespaces: false, standalone: true, imports: [AsyncPipe, NgTemplateOutlet], animations: [comboboxPanelAnimation], template: "@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n", styles: [".bb-combobox-panel{width:100%;padding:8px;display:block;overflow-y:auto;overflow-x:hidden;border-radius:8px;background-color:#fff;box-shadow:#00000014 0 10px 40px 10px}.bb-combobox-panel-item{cursor:pointer;padding:12px 20px;border-radius:8px}.bb-combobox-panel-item:hover,.bb-combobox-panel-item:focus{background-color:orange}.bb-combobox-panel-item:active{background-color:red}\n"] }]
48
+ ], preserveWhitespaces: false, standalone: true, imports: [AsyncPipe, NgTemplateOutlet], animations: [comboboxPanelAnimation], template: "@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n", styles: [".bb-combobox-panel{width:100%;display:block;padding:.5rem;overflow-y:auto;overflow-x:hidden;border-radius:.5rem;background-color:#fff;box-shadow:#00000014 0 10px 40px 10px}.bb-combobox-panel-item{cursor:pointer;border-radius:.5rem;padding:.75rem 1.5rem}.bb-combobox-panel-item:hover,.bb-combobox-panel-item:focus{background-color:orange}.bb-combobox-panel-item:active{background-color:red}\n"] }]
49
49
  }], ctorParameters: () => [{ type: BbCombobox }, { type: BbComboboxContainer }], propDecorators: { animation: [{
50
50
  type: HostBinding,
51
51
  args: ['@comboboxPanelAnimation']
@@ -155,10 +155,10 @@ class BbComboboxContainer {
155
155
  const subscription = resize$.subscribe(() => this.resize());
156
156
  this._subscription.add(subscription);
157
157
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbComboboxContainer, deps: [{ token: i1.Overlay }, { token: BbCombobox }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: WINDOW, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
159
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: BbComboboxContainer, isStandalone: true, selector: "[bbComboboxContainer]", host: { listeners: { "click": "toggle()" } }, ngImport: i0 }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbComboboxContainer, deps: [{ token: i1.Overlay }, { token: BbCombobox }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: WINDOW, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
159
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BbComboboxContainer, isStandalone: true, selector: "[bbComboboxContainer]", host: { listeners: { "click": "toggle()" } }, ngImport: i0 }); }
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbComboboxContainer, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbComboboxContainer, decorators: [{
162
162
  type: Directive,
163
163
  args: [{
164
164
  selector: '[bbComboboxContainer]',
@@ -178,10 +178,10 @@ class BbComboboxOption {
178
178
  static ngTemplateContextGuard(directive, context) {
179
179
  return true;
180
180
  }
181
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbComboboxOption, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
182
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: BbComboboxOption, isStandalone: true, selector: "ng-template[bbComboboxOption]", ngImport: i0 }); }
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbComboboxOption, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
182
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BbComboboxOption, isStandalone: true, selector: "ng-template[bbComboboxOption]", ngImport: i0 }); }
183
183
  }
184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbComboboxOption, decorators: [{
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbComboboxOption, decorators: [{
185
185
  type: Directive,
186
186
  args: [{
187
187
  selector: 'ng-template[bbComboboxOption]',
@@ -190,10 +190,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImpor
190
190
  }] });
191
191
 
192
192
  class BbComboboxLabel {
193
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbComboboxLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
194
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: BbComboboxLabel, isStandalone: true, selector: "[bbComboboxLabel]", ngImport: i0 }); }
193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbComboboxLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
194
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.5", type: BbComboboxLabel, isStandalone: true, selector: "[bbComboboxLabel]", ngImport: i0 }); }
195
195
  }
196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbComboboxLabel, decorators: [{
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbComboboxLabel, decorators: [{
197
197
  type: Directive,
198
198
  args: [{
199
199
  selector: '[bbComboboxLabel]',
@@ -277,16 +277,16 @@ class BbCombobox {
277
277
  this.onChange?.(this.value);
278
278
  this.valueChange.emit(this.value);
279
279
  }
280
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbCombobox, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
281
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.1", type: BbCombobox, isStandalone: true, selector: "bb-combobox", inputs: { value: "value", bindLabel: "bindLabel", bindValue: "bindValue", disabled: ["disabled", "disabled", booleanAttribute], data: "data" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "bb-combobox" }, providers: [
280
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCombobox, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
281
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.5", type: BbCombobox, isStandalone: true, selector: "bb-combobox", inputs: { value: "value", bindLabel: "bindLabel", bindValue: "bindValue", disabled: ["disabled", "disabled", booleanAttribute], data: "data" }, outputs: { valueChange: "valueChange" }, host: { classAttribute: "bb-combobox" }, providers: [
282
282
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCombobox), multi: true }
283
- ], queries: [{ propertyName: "labelComponent", first: true, predicate: BbComboboxLabel, descendants: true, read: TemplateRef }, { propertyName: "optionTemplate", first: true, predicate: BbComboboxOption, descendants: true, read: TemplateRef }], ngImport: i0, template: "<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n", styles: [".bb-combobox{display:block}.bb-combobox-container{width:100%;height:40px;display:block;padding:0 10px;line-height:40px;border:1px solid black}\n"], dependencies: [{ kind: "directive", type: BbComboboxContainer, selector: "[bbComboboxContainer]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
283
+ ], queries: [{ propertyName: "labelComponent", first: true, predicate: BbComboboxLabel, descendants: true, read: TemplateRef }, { propertyName: "optionTemplate", first: true, predicate: BbComboboxOption, descendants: true, read: TemplateRef }], ngImport: i0, template: "<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n", styles: [".bb-combobox{display:block}.bb-combobox-container{width:100%;height:2.5rem;display:block;padding:0 .75rem;line-height:2.5rem;border:1px solid black}\n"], dependencies: [{ kind: "directive", type: BbComboboxContainer, selector: "[bbComboboxContainer]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
284
284
  }
285
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BbCombobox, decorators: [{
285
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCombobox, decorators: [{
286
286
  type: Component,
287
287
  args: [{ selector: 'bb-combobox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-combobox' }, preserveWhitespaces: false, providers: [
288
288
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCombobox), multi: true }
289
- ], imports: [BbComboboxContainer], standalone: true, template: "<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n", styles: [".bb-combobox{display:block}.bb-combobox-container{width:100%;height:40px;display:block;padding:0 10px;line-height:40px;border:1px solid black}\n"] }]
289
+ ], imports: [BbComboboxContainer], standalone: true, template: "<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n", styles: [".bb-combobox{display:block}.bb-combobox-container{width:100%;height:2.5rem;display:block;padding:0 .75rem;line-height:2.5rem;border:1px solid black}\n"] }]
290
290
  }], propDecorators: { labelComponent: [{
291
291
  type: ContentChild,
292
292
  args: [BbComboboxLabel, { read: TemplateRef, static: false }]
@@ -1 +1 @@
1
- {"version":3,"file":"bravobit-bb-foundation-combobox.mjs","sources":["../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.animation.ts","../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.component.ts","../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.component.html","../../../projects/bb-foundation/combobox/src/combobox/combobox-container.directive.ts","../../../projects/bb-foundation/combobox/src/combobox-option.directive.ts","../../../projects/bb-foundation/combobox/src/combobox-label.directive.ts","../../../projects/bb-foundation/combobox/src/combobox/combobox.component.ts","../../../projects/bb-foundation/combobox/src/combobox/combobox.component.html","../../../projects/bb-foundation/combobox/src/bravobit-bb-foundation-combobox.ts"],"sourcesContent":["import {animate, style, transition, trigger} from '@angular/animations';\n\nexport const comboboxPanelAnimation = trigger('comboboxPanelAnimation', [\n transition(':enter', [\n style({opacity: 0, transform: 'translateY(5px)'}),\n animate('300ms cubic-bezier(0, 0, .2, 1)', style({opacity: 1, transform: 'none'}))\n ]),\n transition(':leave', [\n animate('300ms cubic-bezier(0, 0, .2, 1)', style({opacity: 0, transform: 'translateY(5px)'}))\n ])\n]);\n","import {ChangeDetectionStrategy, Component, HostBinding, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbComboboxContainer} from '../combobox/combobox-container.directive';\nimport {ComboboxItem, ComboboxOptionContext} from '../combobox.interface';\nimport {comboboxPanelAnimation} from './combobox-panel.animation';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbCombobox} from '../combobox/combobox.component';\nimport {CdkTrapFocus} from '@angular/cdk/a11y';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'bb-combobox-panel',\n templateUrl: './combobox-panel.component.html',\n styleUrls: ['./combobox-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-combobox-panel',\n 'role': 'listbox'\n },\n hostDirectives: [\n {directive: CdkTrapFocus}\n ],\n preserveWhitespaces: false,\n standalone: true,\n imports: [AsyncPipe, NgTemplateOutlet],\n animations: [comboboxPanelAnimation]\n})\nexport class BbComboboxPanel {\n\n // Readonly data.\n readonly items$: Observable<ComboboxItem<unknown>[]> = this._combobox.items$;\n readonly optionTemplate: TemplateRef<ComboboxOptionContext> = this._combobox?.optionTemplate ?? null;\n\n // Host bindings.\n @HostBinding('@comboboxPanelAnimation') animation: boolean = true;\n\n constructor(private _combobox: BbCombobox,\n private _container: BbComboboxContainer) {\n }\n\n select(item: ComboboxItem<unknown>) {\n this._combobox.select(item?.value ?? null);\n this._container.close();\n }\n\n}\n","@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n","import {Directive, ElementRef, HostListener, Inject, Injector, OnDestroy, OnInit, Optional, ViewContainerRef} from '@angular/core';\nimport {ConnectedPosition, Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {BbComboboxPanel} from '../combobox-panel/combobox-panel.component';\nimport {fromEvent, Subscription, throttleTime} from 'rxjs';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {BbCombobox} from './combobox.component';\nimport {WINDOW} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: '[bbComboboxContainer]',\n standalone: true\n})\nexport class BbComboboxContainer implements OnInit, OnDestroy {\n\n // State.\n private _overlayRef: OverlayRef | null = null;\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _overlay: Overlay,\n private _combobox: BbCombobox,\n private _viewContainerRef: ViewContainerRef,\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() @Inject(WINDOW) private _window: Window) {\n }\n\n get width() {\n return this._elementRef?.nativeElement?.clientWidth ?? 0;\n }\n\n ngOnInit() {\n this.createOverlay();\n this.handleResizing();\n this.handleBackdropClick();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n this._overlayRef?.dispose();\n this._overlayRef = null;\n }\n\n @HostListener('click')\n toggle() {\n if (!this._overlayRef) {\n return;\n }\n\n this._overlayRef?.hasAttached() ? this.close() : this.open();\n }\n\n open() {\n const injector = Injector.create({\n providers: [\n {provide: BbComboboxContainer, useValue: this},\n {provide: BbCombobox, useValue: this._combobox}\n ]\n });\n\n const component = new ComponentPortal(BbComboboxPanel, this._viewContainerRef, injector);\n this._overlayRef.attach(component);\n }\n\n close() {\n this._overlayRef?.detach();\n }\n\n private getPositionStrategy() {\n const positions = this.getPositions();\n return this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withFlexibleDimensions(true)\n .withGrowAfterOpen(true)\n .withPush(false)\n .withViewportMargin(20)\n .withPositions(positions);\n }\n\n private getPositions() {\n return [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10\n }\n ] satisfies ConnectedPosition[];\n }\n\n private resize() {\n this._overlayRef.updateSize({width: this.width});\n }\n\n private createOverlay() {\n const positionStrategy = this.getPositionStrategy();\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n backdropClass: null,\n disposeOnNavigation: true,\n width: this.width\n });\n }\n\n private handleBackdropClick() {\n if (!this._overlayRef) {\n return;\n }\n\n const subscription = this._overlayRef.backdropClick()\n .subscribe(() => this.close());\n this._subscription.add(subscription);\n }\n\n private handleResizing() {\n if (!this._window) {\n return;\n }\n\n const resize$ = fromEvent(this._window, 'resize').pipe(\n throttleTime(20)\n );\n\n const subscription = resize$.subscribe(() => this.resize());\n this._subscription.add(subscription);\n }\n\n}\n","import {ComboboxOptionContext} from './combobox.interface';\nimport {Directive} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[bbComboboxOption]',\n standalone: true\n})\nexport class BbComboboxOption {\n\n static ngTemplateContextGuard(directive: BbComboboxOption, context: unknown): context is ComboboxOptionContext {\n return true;\n }\n\n}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[bbComboboxLabel]',\n standalone: true\n})\nexport class BbComboboxLabel {\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, OnDestroy, OnInit, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BehaviorSubject, isObservable, Observable, Subscription} from 'rxjs';\nimport {ComboboxItem, ComboboxOptionContext} from '../combobox.interface';\nimport {BbComboboxContainer} from './combobox-container.directive';\nimport {BbComboboxOption} from '../combobox-option.directive';\nimport {BbComboboxLabel} from '../combobox-label.directive';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {map, shareReplay} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-combobox',\n templateUrl: './combobox.component.html',\n styleUrls: ['./combobox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-combobox'},\n preserveWhitespaces: false,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCombobox), multi: true}\n ],\n imports: [BbComboboxContainer],\n standalone: true\n})\nexport class BbCombobox<T = unknown> implements OnInit, OnDestroy {\n\n // Children.\n @ContentChild(BbComboboxLabel, {read: TemplateRef, static: false}) labelComponent?: TemplateRef<BbComboboxLabel>;\n @ContentChild(BbComboboxOption, {read: TemplateRef, static: false}) optionTemplate?: TemplateRef<ComboboxOptionContext>;\n\n // Inputs.\n @Input() value: T | null = null;\n @Input() bindLabel: string | null = null;\n @Input() bindValue: string | null = null;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n @Input()\n set data(items: T[] | Observable<T[]>) {\n this.handleData(items);\n }\n\n get data() {\n return this._cache$.getValue();\n }\n\n // Outputs.\n @Output() valueChange = new EventEmitter<T>();\n\n // State.\n items$: Observable<ComboboxItem<T>[]>;\n\n // Methods.\n onChange: (newValue: T) => void = () => ({});\n onTouched: () => void = () => ({});\n\n // Cache.\n private _cache$ = new BehaviorSubject<T[]>([]);\n\n // Subscriptions.\n private _dataSubscription = new Subscription();\n\n ngOnInit() {\n this.setItems();\n }\n\n ngOnDestroy() {\n this._dataSubscription?.unsubscribe();\n }\n\n registerOnChange(fn: (newValue: T) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: T) {\n this.value = newValue;\n }\n\n select(value: T) {\n this.value = value;\n this.emitChangeEvent();\n }\n\n private setItems() {\n this.items$ = this._cache$.pipe(\n map(items => items.map(item => this.createComboboxItem(item))),\n shareReplay({bufferSize: 1, refCount: true})\n );\n }\n\n private createComboboxItem(data: T) {\n return <ComboboxItem<T>>{\n data,\n label: !!this.bindLabel ? (data?.[this.bindLabel] ?? null) : data,\n value: !!this.bindValue ? (data?.[this.bindValue] ?? null) : data\n };\n }\n\n private setCache(items: T[]) {\n if (items === null || items === undefined) {\n return;\n }\n this._cache$.next(items);\n }\n\n private handleData(items: T[] | Observable<T[]>) {\n if (isObservable(items)) {\n return this.handleDataObservable(items);\n }\n\n return this.setCache(items);\n }\n\n private handleDataObservable(items$: Observable<T[]>) {\n this._dataSubscription?.unsubscribe();\n const subscription = items$.subscribe(items => this.setCache(items));\n this._dataSubscription.add(subscription);\n }\n\n private emitChangeEvent() {\n this.onChange?.(this.value);\n this.valueChange.emit(this.value);\n }\n\n}\n","<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BbCombobox","i2.BbComboboxContainer"],"mappings":"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"}
1
+ {"version":3,"file":"bravobit-bb-foundation-combobox.mjs","sources":["../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.animation.ts","../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.component.ts","../../../projects/bb-foundation/combobox/src/combobox-panel/combobox-panel.component.html","../../../projects/bb-foundation/combobox/src/combobox/combobox-container.directive.ts","../../../projects/bb-foundation/combobox/src/combobox-option.directive.ts","../../../projects/bb-foundation/combobox/src/combobox-label.directive.ts","../../../projects/bb-foundation/combobox/src/combobox/combobox.component.ts","../../../projects/bb-foundation/combobox/src/combobox/combobox.component.html","../../../projects/bb-foundation/combobox/src/bravobit-bb-foundation-combobox.ts"],"sourcesContent":["import {animate, style, transition, trigger} from '@angular/animations';\n\nexport const comboboxPanelAnimation = trigger('comboboxPanelAnimation', [\n transition(':enter', [\n style({opacity: 0, transform: 'translateY(5px)'}),\n animate('300ms cubic-bezier(0, 0, .2, 1)', style({opacity: 1, transform: 'none'}))\n ]),\n transition(':leave', [\n animate('300ms cubic-bezier(0, 0, .2, 1)', style({opacity: 0, transform: 'translateY(5px)'}))\n ])\n]);\n","import {ChangeDetectionStrategy, Component, HostBinding, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbComboboxContainer} from '../combobox/combobox-container.directive';\nimport {ComboboxItem, ComboboxOptionContext} from '../combobox.interface';\nimport {comboboxPanelAnimation} from './combobox-panel.animation';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbCombobox} from '../combobox/combobox.component';\nimport {CdkTrapFocus} from '@angular/cdk/a11y';\nimport {Observable} from 'rxjs';\n\n@Component({\n selector: 'bb-combobox-panel',\n templateUrl: './combobox-panel.component.html',\n styleUrls: ['./combobox-panel.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'bb-combobox-panel',\n 'role': 'listbox'\n },\n hostDirectives: [\n {directive: CdkTrapFocus}\n ],\n preserveWhitespaces: false,\n standalone: true,\n imports: [AsyncPipe, NgTemplateOutlet],\n animations: [comboboxPanelAnimation]\n})\nexport class BbComboboxPanel {\n\n // Readonly data.\n readonly items$: Observable<ComboboxItem<unknown>[]> = this._combobox.items$;\n readonly optionTemplate: TemplateRef<ComboboxOptionContext> = this._combobox?.optionTemplate ?? null;\n\n // Host bindings.\n @HostBinding('@comboboxPanelAnimation') animation: boolean = true;\n\n constructor(private _combobox: BbCombobox,\n private _container: BbComboboxContainer) {\n }\n\n select(item: ComboboxItem<unknown>) {\n this._combobox.select(item?.value ?? null);\n this._container.close();\n }\n\n}\n","@if (items$ | async; as items) {\n @for (item of items; track $index) {\n <div (click)=\"select(item)\"\n tabindex=\"0\"\n role=\"option\"\n class=\"bb-combobox-panel-item\">\n @if (optionTemplate) {\n <ng-container *ngTemplateOutlet=\"optionTemplate; context: {item: item}\"></ng-container>\n } @else {\n {{ item?.label }}\n }\n </div>\n }\n\n}\n","import {Directive, ElementRef, HostListener, Inject, Injector, OnDestroy, OnInit, Optional, ViewContainerRef} from '@angular/core';\nimport {ConnectedPosition, Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {BbComboboxPanel} from '../combobox-panel/combobox-panel.component';\nimport {fromEvent, Subscription, throttleTime} from 'rxjs';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {BbCombobox} from './combobox.component';\nimport {WINDOW} from '@bravobit/bb-foundation';\n\n@Directive({\n selector: '[bbComboboxContainer]',\n standalone: true\n})\nexport class BbComboboxContainer implements OnInit, OnDestroy {\n\n // State.\n private _overlayRef: OverlayRef | null = null;\n\n // Subscriptions.\n private _subscription = new Subscription();\n\n constructor(private _overlay: Overlay,\n private _combobox: BbCombobox,\n private _viewContainerRef: ViewContainerRef,\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() @Inject(WINDOW) private _window: Window) {\n }\n\n get width() {\n return this._elementRef?.nativeElement?.clientWidth ?? 0;\n }\n\n ngOnInit() {\n this.createOverlay();\n this.handleResizing();\n this.handleBackdropClick();\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n this._overlayRef?.dispose();\n this._overlayRef = null;\n }\n\n @HostListener('click')\n toggle() {\n if (!this._overlayRef) {\n return;\n }\n\n this._overlayRef?.hasAttached() ? this.close() : this.open();\n }\n\n open() {\n const injector = Injector.create({\n providers: [\n {provide: BbComboboxContainer, useValue: this},\n {provide: BbCombobox, useValue: this._combobox}\n ]\n });\n\n const component = new ComponentPortal(BbComboboxPanel, this._viewContainerRef, injector);\n this._overlayRef.attach(component);\n }\n\n close() {\n this._overlayRef?.detach();\n }\n\n private getPositionStrategy() {\n const positions = this.getPositions();\n return this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withFlexibleDimensions(true)\n .withGrowAfterOpen(true)\n .withPush(false)\n .withViewportMargin(20)\n .withPositions(positions);\n }\n\n private getPositions() {\n return [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 10\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -10\n }\n ] satisfies ConnectedPosition[];\n }\n\n private resize() {\n this._overlayRef.updateSize({width: this.width});\n }\n\n private createOverlay() {\n const positionStrategy = this.getPositionStrategy();\n const scrollStrategy = this._overlay.scrollStrategies.reposition();\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy,\n hasBackdrop: true,\n backdropClass: null,\n disposeOnNavigation: true,\n width: this.width\n });\n }\n\n private handleBackdropClick() {\n if (!this._overlayRef) {\n return;\n }\n\n const subscription = this._overlayRef.backdropClick()\n .subscribe(() => this.close());\n this._subscription.add(subscription);\n }\n\n private handleResizing() {\n if (!this._window) {\n return;\n }\n\n const resize$ = fromEvent(this._window, 'resize').pipe(\n throttleTime(20)\n );\n\n const subscription = resize$.subscribe(() => this.resize());\n this._subscription.add(subscription);\n }\n\n}\n","import {ComboboxOptionContext} from './combobox.interface';\nimport {Directive} from '@angular/core';\n\n@Directive({\n selector: 'ng-template[bbComboboxOption]',\n standalone: true\n})\nexport class BbComboboxOption {\n\n static ngTemplateContextGuard(directive: BbComboboxOption, context: unknown): context is ComboboxOptionContext {\n return true;\n }\n\n}\n","import {Directive} from '@angular/core';\n\n@Directive({\n selector: '[bbComboboxLabel]',\n standalone: true\n})\nexport class BbComboboxLabel {\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, OnDestroy, OnInit, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BehaviorSubject, isObservable, Observable, Subscription} from 'rxjs';\nimport {ComboboxItem, ComboboxOptionContext} from '../combobox.interface';\nimport {BbComboboxContainer} from './combobox-container.directive';\nimport {BbComboboxOption} from '../combobox-option.directive';\nimport {BbComboboxLabel} from '../combobox-label.directive';\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {map, shareReplay} from 'rxjs/operators';\n\n@Component({\n selector: 'bb-combobox',\n templateUrl: './combobox.component.html',\n styleUrls: ['./combobox.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {'class': 'bb-combobox'},\n preserveWhitespaces: false,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCombobox), multi: true}\n ],\n imports: [BbComboboxContainer],\n standalone: true\n})\nexport class BbCombobox<T = unknown> implements OnInit, OnDestroy {\n\n // Children.\n @ContentChild(BbComboboxLabel, {read: TemplateRef, static: false}) labelComponent?: TemplateRef<BbComboboxLabel>;\n @ContentChild(BbComboboxOption, {read: TemplateRef, static: false}) optionTemplate?: TemplateRef<ComboboxOptionContext>;\n\n // Inputs.\n @Input() value: T | null = null;\n @Input() bindLabel: string | null = null;\n @Input() bindValue: string | null = null;\n @Input({transform: booleanAttribute}) disabled: boolean = false;\n\n @Input()\n set data(items: T[] | Observable<T[]>) {\n this.handleData(items);\n }\n\n get data() {\n return this._cache$.getValue();\n }\n\n // Outputs.\n @Output() valueChange = new EventEmitter<T>();\n\n // State.\n items$: Observable<ComboboxItem<T>[]>;\n\n // Methods.\n onChange: (newValue: T) => void = () => ({});\n onTouched: () => void = () => ({});\n\n // Cache.\n private _cache$ = new BehaviorSubject<T[]>([]);\n\n // Subscriptions.\n private _dataSubscription = new Subscription();\n\n ngOnInit() {\n this.setItems();\n }\n\n ngOnDestroy() {\n this._dataSubscription?.unsubscribe();\n }\n\n registerOnChange(fn: (newValue: T) => void) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n writeValue(newValue: T) {\n this.value = newValue;\n }\n\n select(value: T) {\n this.value = value;\n this.emitChangeEvent();\n }\n\n private setItems() {\n this.items$ = this._cache$.pipe(\n map(items => items.map(item => this.createComboboxItem(item))),\n shareReplay({bufferSize: 1, refCount: true})\n );\n }\n\n private createComboboxItem(data: T) {\n return <ComboboxItem<T>>{\n data,\n label: !!this.bindLabel ? (data?.[this.bindLabel] ?? null) : data,\n value: !!this.bindValue ? (data?.[this.bindValue] ?? null) : data\n };\n }\n\n private setCache(items: T[]) {\n if (items === null || items === undefined) {\n return;\n }\n this._cache$.next(items);\n }\n\n private handleData(items: T[] | Observable<T[]>) {\n if (isObservable(items)) {\n return this.handleDataObservable(items);\n }\n\n return this.setCache(items);\n }\n\n private handleDataObservable(items$: Observable<T[]>) {\n this._dataSubscription?.unsubscribe();\n const subscription = items$.subscribe(items => this.setCache(items));\n this._dataSubscription.add(subscription);\n }\n\n private emitChangeEvent() {\n this.onChange?.(this.value);\n this.valueChange.emit(this.value);\n }\n\n}\n","<div bbComboboxContainer\n class=\"bb-combobox-container\">\n {{ value }}\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.BbCombobox","i2.BbComboboxContainer"],"mappings":"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"}