@bravobit/bb-foundation 0.33.0 → 0.40.1

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 (444) 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 +1 -1
  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 +20 -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 +8 -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 +6 -5
  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 +38 -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 +9 -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/miscellaneous/coercion.mjs +5 -0
  161. package/esm2022/lib/core/services/exif.service.mjs +3 -3
  162. package/esm2022/lib/core/services/file-loader.service.mjs +3 -3
  163. package/esm2022/lib/core/services/files.service.mjs +3 -3
  164. package/esm2022/lib/core/services/image-converter.service.mjs +3 -3
  165. package/esm2022/lib/core/services/languages.service.mjs +3 -3
  166. package/esm2022/lib/core/services/network.service.mjs +3 -3
  167. package/esm2022/lib/core/services/patch.service.mjs +3 -3
  168. package/esm2022/localize/lib/interfaces/config.interfaces.mjs +2 -7
  169. package/esm2022/localize/lib/interfaces/functions.interfaces.mjs +6 -6
  170. package/esm2022/localize/lib/localizations/dutch.localization.mjs +19 -1
  171. package/esm2022/localize/lib/localizations/english.localization.mjs +19 -1
  172. package/esm2022/localize/lib/localize.config.mjs +43 -0
  173. package/esm2022/localize/lib/localize.module.mjs +10 -54
  174. package/esm2022/localize/lib/localize.pipe.mjs +6 -5
  175. package/esm2022/localize/lib/localize.service.mjs +26 -13
  176. package/esm2022/localize/lib/localize.tokens.mjs +18 -0
  177. package/esm2022/localize/lib/transforms/interpolate.transform.mjs +3 -2
  178. package/esm2022/localize/lib/transforms/plural.transform.mjs +5 -3
  179. package/esm2022/localize/lib/transforms/reference.transform.mjs +5 -3
  180. package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +6 -10
  181. package/esm2022/localize/lib/views/localize-template.directive.mjs +6 -5
  182. package/esm2022/localize/public_api.mjs +3 -3
  183. package/esm2022/masking/lib/directives/currency-mask.directive.mjs +6 -5
  184. package/esm2022/masking/lib/directives/date-mask.directive.mjs +6 -5
  185. package/esm2022/masking/lib/directives/input-mask.directive.mjs +6 -5
  186. package/esm2022/masking/lib/masking.module.mjs +6 -6
  187. package/esm2022/masking/lib/masking.service.mjs +3 -3
  188. package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +7 -9
  189. package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +8 -8
  190. package/esm2022/notifications/lib/notifications.config.mjs +8 -0
  191. package/esm2022/notifications/lib/notifications.interfaces.mjs +3 -1
  192. package/esm2022/notifications/lib/notifications.module.mjs +8 -18
  193. package/esm2022/notifications/lib/notifications.service.mjs +14 -8
  194. package/esm2022/notifications/public_api.mjs +2 -1
  195. package/esm2022/permissions/lib/directives/permission.directive.mjs +6 -5
  196. package/esm2022/permissions/lib/guards/permission.guard.mjs +23 -54
  197. package/esm2022/permissions/lib/permissions.config.mjs +20 -0
  198. package/esm2022/permissions/lib/permissions.interface.mjs +3 -1
  199. package/esm2022/permissions/lib/permissions.module.mjs +9 -23
  200. package/esm2022/permissions/lib/permissions.service.mjs +8 -5
  201. package/esm2022/permissions/public_api.mjs +2 -1
  202. package/esm2022/public_api.mjs +2 -10
  203. package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +12 -13
  204. package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +21 -36
  205. package/esm2022/recaptcha/lib/recaptcha.config.mjs +8 -0
  206. package/esm2022/recaptcha/lib/recaptcha.module.mjs +8 -8
  207. package/esm2022/recaptcha/public_api.mjs +2 -1
  208. package/esm2022/select/bravobit-bb-foundation-select.mjs +5 -0
  209. package/esm2022/select/lib/select/select.component.mjs +214 -0
  210. package/esm2022/select/lib/select-label.directive.mjs +17 -0
  211. package/esm2022/select/lib/select-option-group.directive.mjs +17 -0
  212. package/esm2022/select/lib/select-option.directive.mjs +17 -0
  213. package/esm2022/select/lib/select.module.mjs +35 -0
  214. package/esm2022/select/public_api.mjs +6 -0
  215. package/esm2022/storage/lib/storage.service.mjs +3 -3
  216. package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +2 -5
  217. package/esm2022/table/lib/components/table/table.component.mjs +21 -22
  218. package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +5 -5
  219. package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +14 -14
  220. package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +15 -17
  221. package/esm2022/table/lib/table.module.mjs +23 -21
  222. package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +11 -17
  223. package/esm2022/tooltip/lib/tooltip.directive.mjs +17 -27
  224. package/esm2022/tooltip/lib/tooltip.module.mjs +7 -22
  225. package/esm2022/tooltip/public_api.mjs +2 -2
  226. package/esm2022/utils/lib/directives/autosize.directive.mjs +9 -7
  227. package/esm2022/utils/lib/directives/focus-trap.directive.mjs +6 -5
  228. package/esm2022/utils/lib/directives/focus.directive.mjs +6 -5
  229. package/esm2022/utils/lib/directives/template.directive.mjs +6 -5
  230. package/esm2022/utils/lib/utils.module.mjs +6 -6
  231. package/fesm2022/bravobit-bb-foundation-auth.mjs +140 -175
  232. package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
  233. package/fesm2022/bravobit-bb-foundation-collections.mjs +451 -106
  234. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  235. package/fesm2022/bravobit-bb-foundation-combobox.mjs +18 -18
  236. package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
  237. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +106 -116
  238. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  239. package/fesm2022/bravobit-bb-foundation-dialog.mjs +125 -70
  240. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  241. package/fesm2022/bravobit-bb-foundation-elements.mjs +1652 -1378
  242. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  243. package/fesm2022/bravobit-bb-foundation-http.mjs +38 -27
  244. package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
  245. package/fesm2022/bravobit-bb-foundation-localize.mjs +310 -264
  246. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  247. package/fesm2022/bravobit-bb-foundation-masking.mjs +23 -20
  248. package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
  249. package/fesm2022/bravobit-bb-foundation-notifications.mjs +67 -62
  250. package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
  251. package/fesm2022/bravobit-bb-foundation-permissions.mjs +54 -72
  252. package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
  253. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +44 -54
  254. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  255. package/fesm2022/bravobit-bb-foundation-select.mjs +292 -0
  256. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -0
  257. package/fesm2022/bravobit-bb-foundation-storage.mjs +4 -7
  258. package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
  259. package/fesm2022/bravobit-bb-foundation-table.mjs +67 -66
  260. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  261. package/fesm2022/bravobit-bb-foundation-tooltip.mjs +31 -61
  262. package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
  263. package/fesm2022/bravobit-bb-foundation-utils.mjs +28 -23
  264. package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
  265. package/fesm2022/bravobit-bb-foundation.mjs +27 -144
  266. package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
  267. package/http/lib/http.config.d.ts +5 -0
  268. package/http/lib/http.interfaces.d.ts +3 -0
  269. package/http/lib/http.module.d.ts +2 -6
  270. package/http/public_api.d.ts +1 -0
  271. package/lib/core/miscellaneous/coercion.d.ts +2 -0
  272. package/localize/lib/interfaces/config.interfaces.d.ts +1 -1
  273. package/localize/lib/interfaces/functions.interfaces.d.ts +0 -2
  274. package/localize/lib/localizations/dutch.localization.d.ts +18 -0
  275. package/localize/lib/localizations/english.localization.d.ts +18 -0
  276. package/localize/lib/localize.config.d.ts +6 -0
  277. package/localize/lib/localize.module.d.ts +2 -7
  278. package/localize/lib/localize.pipe.d.ts +1 -1
  279. package/localize/lib/localize.service.d.ts +4 -4
  280. package/localize/lib/localize.tokens.d.ts +11 -0
  281. package/localize/lib/views/localize-string/localize-string.component.d.ts +1 -1
  282. package/localize/lib/views/localize-template.directive.d.ts +1 -1
  283. package/localize/public_api.d.ts +2 -2
  284. package/masking/lib/directives/currency-mask.directive.d.ts +1 -1
  285. package/masking/lib/directives/date-mask.directive.d.ts +1 -1
  286. package/masking/lib/directives/input-mask.directive.d.ts +1 -1
  287. package/masking/lib/masking.module.d.ts +1 -1
  288. package/notifications/lib/notifications-item/notifications-item.component.d.ts +1 -1
  289. package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -1
  290. package/notifications/lib/notifications.config.d.ts +3 -0
  291. package/notifications/lib/notifications.interfaces.d.ts +2 -1
  292. package/notifications/lib/notifications.module.d.ts +1 -5
  293. package/notifications/public_api.d.ts +1 -0
  294. package/package.json +17 -22
  295. package/permissions/lib/directives/permission.directive.d.ts +1 -1
  296. package/permissions/lib/guards/permission.guard.d.ts +3 -15
  297. package/permissions/lib/permissions.config.d.ts +3 -0
  298. package/permissions/lib/permissions.interface.d.ts +2 -1
  299. package/permissions/lib/permissions.module.d.ts +1 -1
  300. package/permissions/public_api.d.ts +1 -0
  301. package/public_api.d.ts +1 -9
  302. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +4 -7
  303. package/recaptcha/lib/recaptcha-loader.service.d.ts +9 -13
  304. package/recaptcha/lib/recaptcha.config.d.ts +3 -0
  305. package/recaptcha/lib/recaptcha.module.d.ts +2 -2
  306. package/recaptcha/public_api.d.ts +1 -0
  307. package/{theming → select}/index.d.ts +1 -1
  308. package/select/lib/select/select.component.d.ts +77 -0
  309. package/select/lib/select-label.directive.d.ts +8 -0
  310. package/select/lib/select-option-group.directive.d.ts +8 -0
  311. package/select/lib/select-option.directive.d.ts +8 -0
  312. package/select/lib/select.module.d.ts +10 -0
  313. package/select/public_api.d.ts +5 -0
  314. package/styles/colors.scss +20 -0
  315. package/styles/grid.scss +98 -0
  316. package/styles/reset.scss +65 -0
  317. package/styles/theme.scss +88 -0
  318. package/table/lib/components/table/table.component.d.ts +4 -6
  319. package/table/lib/components/table-cell/table-cell.component.d.ts +1 -1
  320. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +4 -7
  321. package/table/lib/components/table-pager/table-pager.component.d.ts +4 -8
  322. package/table/lib/table.module.d.ts +1 -5
  323. package/tooltip/lib/tooltip-container/tooltip-container.component.d.ts +3 -4
  324. package/tooltip/lib/tooltip.directive.d.ts +8 -17
  325. package/tooltip/lib/tooltip.module.d.ts +2 -5
  326. package/tooltip/public_api.d.ts +1 -1
  327. package/utils/lib/directives/autosize.directive.d.ts +2 -1
  328. package/utils/lib/directives/focus-trap.directive.d.ts +1 -1
  329. package/utils/lib/directives/focus.directive.d.ts +1 -1
  330. package/utils/lib/directives/template.directive.d.ts +1 -1
  331. package/utils/lib/utils.module.d.ts +1 -1
  332. package/auth/lib/directives/abstract.directive.d.ts +0 -12
  333. package/collections/lib/components/collections.directive.d.ts +0 -17
  334. package/controls/index.d.ts +0 -5
  335. package/controls/lib/checkbox/checkbox/checkbox.component.d.ts +0 -51
  336. package/controls/lib/checkbox/checkbox-group/checkbox-group.component.d.ts +0 -23
  337. package/controls/lib/checkbox/checkbox.module.d.ts +0 -10
  338. package/controls/lib/control-error/control-error/control-error.animation.d.ts +0 -1
  339. package/controls/lib/control-error/control-error/control-error.component.d.ts +0 -17
  340. package/controls/lib/control-error/control-error-submit.directive.d.ts +0 -15
  341. package/controls/lib/control-error/control-error.defaults.d.ts +0 -2
  342. package/controls/lib/control-error/control-error.interface.d.ts +0 -12
  343. package/controls/lib/control-error/control-error.module.d.ts +0 -9
  344. package/controls/lib/control-error/control-error.utils.d.ts +0 -3
  345. package/controls/lib/controls.interfaces.d.ts +0 -4
  346. package/controls/lib/controls.module.d.ts +0 -14
  347. package/controls/lib/form-control/form-control/form-control.component.d.ts +0 -29
  348. package/controls/lib/form-control/form-control-addon/form-control-addon.component.d.ts +0 -6
  349. package/controls/lib/form-control/form-control-input.directive.d.ts +0 -35
  350. package/controls/lib/form-control/form-control.module.d.ts +0 -12
  351. package/controls/lib/radio/radio-button/radio-button.component.d.ts +0 -24
  352. package/controls/lib/radio/radio-group/radio-group.component.d.ts +0 -53
  353. package/controls/lib/radio/radio.module.d.ts +0 -11
  354. package/controls/lib/toggle/toggle/toggle.component.d.ts +0 -45
  355. package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +0 -23
  356. package/controls/lib/toggle/toggle.module.d.ts +0 -10
  357. package/controls/public_api.d.ts +0 -20
  358. package/elements/lib/dropdown/dropdown.component.d.ts +0 -21
  359. package/elements/lib/tag/tag.component.d.ts +0 -7
  360. package/esm2022/auth/lib/directives/abstract.directive.mjs +0 -40
  361. package/esm2022/collections/lib/components/collections.directive.mjs +0 -43
  362. package/esm2022/controls/bravobit-bb-foundation-controls.mjs +0 -5
  363. package/esm2022/controls/lib/checkbox/checkbox/checkbox.component.mjs +0 -178
  364. package/esm2022/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +0 -68
  365. package/esm2022/controls/lib/checkbox/checkbox.module.mjs +0 -20
  366. package/esm2022/controls/lib/control-error/control-error/control-error.animation.mjs +0 -14
  367. package/esm2022/controls/lib/control-error/control-error/control-error.component.mjs +0 -63
  368. package/esm2022/controls/lib/control-error/control-error-submit.directive.mjs +0 -47
  369. package/esm2022/controls/lib/control-error/control-error.defaults.mjs +0 -26
  370. package/esm2022/controls/lib/control-error/control-error.interface.mjs +0 -3
  371. package/esm2022/controls/lib/control-error/control-error.module.mjs +0 -19
  372. package/esm2022/controls/lib/control-error/control-error.utils.mjs +0 -20
  373. package/esm2022/controls/lib/controls.interfaces.mjs +0 -2
  374. package/esm2022/controls/lib/controls.module.mjs +0 -62
  375. package/esm2022/controls/lib/form-control/form-control/form-control.component.mjs +0 -79
  376. package/esm2022/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +0 -22
  377. package/esm2022/controls/lib/form-control/form-control-input.directive.mjs +0 -124
  378. package/esm2022/controls/lib/form-control/form-control.module.mjs +0 -34
  379. package/esm2022/controls/lib/radio/radio-button/radio-button.component.mjs +0 -75
  380. package/esm2022/controls/lib/radio/radio-group/radio-group.component.mjs +0 -168
  381. package/esm2022/controls/lib/radio/radio.module.mjs +0 -21
  382. package/esm2022/controls/lib/toggle/toggle/toggle.component.mjs +0 -153
  383. package/esm2022/controls/lib/toggle/toggle-group/toggle-group.component.mjs +0 -62
  384. package/esm2022/controls/lib/toggle/toggle.module.mjs +0 -20
  385. package/esm2022/controls/public_api.mjs +0 -21
  386. package/esm2022/elements/lib/dropdown/dropdown.component.mjs +0 -100
  387. package/esm2022/elements/lib/tag/tag.component.mjs +0 -18
  388. package/esm2022/lib/core/mixins/can-disable.mjs +0 -16
  389. package/esm2022/lib/core/mixins/can-hide-errors.mjs +0 -16
  390. package/esm2022/lib/core/mixins/can-load.mjs +0 -16
  391. package/esm2022/lib/core/mixins/constructor.mjs +0 -2
  392. package/esm2022/lib/core/mixins/has-error.mjs +0 -16
  393. package/esm2022/lib/core/mixins/is-focused.mjs +0 -16
  394. package/esm2022/lib/core/mixins/is-grouped.mjs +0 -16
  395. package/esm2022/lib/core/mixins/is-readonly.mjs +0 -16
  396. package/esm2022/lib/core/mixins/is-required.mjs +0 -16
  397. package/esm2022/localize/lib/interfaces/transforms.interfaces.mjs +0 -3
  398. package/esm2022/localize/lib/locale.token.mjs +0 -14
  399. package/esm2022/theming/bravobit-bb-foundation-theming.mjs +0 -5
  400. package/esm2022/theming/lib/themes/checkbox-group.theme.mjs +0 -17
  401. package/esm2022/theming/lib/themes/checkbox.theme.mjs +0 -35
  402. package/esm2022/theming/lib/themes/control-error.theme.mjs +0 -11
  403. package/esm2022/theming/lib/themes/form-control-addon.theme.mjs +0 -6
  404. package/esm2022/theming/lib/themes/form-control.theme.mjs +0 -45
  405. package/esm2022/theming/lib/themes/radio-button.theme.mjs +0 -29
  406. package/esm2022/theming/lib/themes/radio-group.theme.mjs +0 -20
  407. package/esm2022/theming/lib/themes/toggle-group.theme.mjs +0 -17
  408. package/esm2022/theming/lib/themes/toggle.theme.mjs +0 -28
  409. package/esm2022/theming/lib/theming.data.mjs +0 -90
  410. package/esm2022/theming/lib/theming.directive.mjs +0 -38
  411. package/esm2022/theming/lib/theming.interface.mjs +0 -2
  412. package/esm2022/theming/lib/theming.module.mjs +0 -16
  413. package/esm2022/theming/lib/utils/theming.variable.mjs +0 -41
  414. package/esm2022/theming/public_api.mjs +0 -10
  415. package/fesm2022/bravobit-bb-foundation-controls.mjs +0 -1191
  416. package/fesm2022/bravobit-bb-foundation-controls.mjs.map +0 -1
  417. package/fesm2022/bravobit-bb-foundation-theming.mjs +0 -381
  418. package/fesm2022/bravobit-bb-foundation-theming.mjs.map +0 -1
  419. package/lib/core/mixins/can-disable.d.ts +0 -6
  420. package/lib/core/mixins/can-hide-errors.d.ts +0 -6
  421. package/lib/core/mixins/can-load.d.ts +0 -6
  422. package/lib/core/mixins/constructor.d.ts +0 -1
  423. package/lib/core/mixins/has-error.d.ts +0 -6
  424. package/lib/core/mixins/is-focused.d.ts +0 -6
  425. package/lib/core/mixins/is-grouped.d.ts +0 -6
  426. package/lib/core/mixins/is-readonly.d.ts +0 -6
  427. package/lib/core/mixins/is-required.d.ts +0 -6
  428. package/localize/lib/interfaces/transforms.interfaces.d.ts +0 -3
  429. package/localize/lib/locale.token.d.ts +0 -3
  430. package/theming/lib/themes/checkbox-group.theme.d.ts +0 -16
  431. package/theming/lib/themes/checkbox.theme.d.ts +0 -32
  432. package/theming/lib/themes/control-error.theme.d.ts +0 -9
  433. package/theming/lib/themes/form-control-addon.theme.d.ts +0 -5
  434. package/theming/lib/themes/form-control.theme.d.ts +0 -32
  435. package/theming/lib/themes/radio-button.theme.d.ts +0 -26
  436. package/theming/lib/themes/radio-group.theme.d.ts +0 -17
  437. package/theming/lib/themes/toggle-group.theme.d.ts +0 -16
  438. package/theming/lib/themes/toggle.theme.d.ts +0 -25
  439. package/theming/lib/theming.data.d.ts +0 -17
  440. package/theming/lib/theming.directive.d.ts +0 -13
  441. package/theming/lib/theming.interface.d.ts +0 -34
  442. package/theming/lib/theming.module.d.ts +0 -7
  443. package/theming/lib/utils/theming.variable.d.ts +0 -16
  444. package/theming/public_api.d.ts +0 -9
@@ -1,47 +1,33 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, Input, numberAttribute, ViewEncapsulation } from '@angular/core';
2
+ import { BbLocalize, BbLocalizeString, BbLocalizeTemplate } from '@bravobit/bb-foundation/localize';
2
3
  import { BehaviorSubject } from 'rxjs';
3
- import { map } from 'rxjs/operators';
4
+ import { combineLatestMap } from '@bravobit/bb-foundation/rxjs';
5
+ import { map, shareReplay } from 'rxjs/operators';
6
+ import { AsyncPipe } from '@angular/common';
4
7
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
8
  export class BbCollectionsPager {
7
9
  constructor() {
8
- // Readonly data.
9
- this.maxAmountOfButtons = 5;
10
- this.cache$ = new BehaviorSubject({});
11
10
  // State and subscriptions.
12
- this._label = null;
13
11
  this._collection = null;
14
12
  this._subscription = null;
13
+ this._cache$ = new BehaviorSubject({});
14
+ this._maxAmountOfButtons$ = new BehaviorSubject(3);
15
15
  }
16
- // Inputs.
17
- set label(value) {
18
- this._label = value;
19
- this.cache$.next(this.cache$.getValue());
16
+ set maxAmountOfButtons(value) {
17
+ this._maxAmountOfButtons$.next(Math.max(1, value));
18
+ }
19
+ get maxAmountOfButtons() {
20
+ return this._maxAmountOfButtons$.getValue();
20
21
  }
21
22
  set collection(collection) {
22
23
  this._collection = collection;
23
24
  this.observeCollectionChanges();
24
25
  }
26
+ get collection() {
27
+ return this._collection;
28
+ }
25
29
  ngOnInit() {
26
- this.data$ = this.cache$.pipe(map(cache => {
27
- const pageSize = cache?.pageSize ?? 1;
28
- const pageNumber = cache?.pageNumber ?? 1;
29
- const totalPages = Math.max(0, cache?.totalPages ?? 1);
30
- const totalEntries = Math.max(0, cache?.totalEntries ?? 0);
31
- const fromStart = Math.max(0, Math.min((pageSize * (pageNumber - 1)) + 1, totalEntries));
32
- const fromEnd = Math.max(0, Math.min((fromStart - 1) + pageSize, totalEntries));
33
- const pages = this.filterActivePages(pageNumber, totalPages);
34
- const allowNext = pageNumber < totalPages;
35
- const allowPrevious = pageNumber > 1;
36
- return {
37
- totalPages,
38
- pages,
39
- pageNumber,
40
- allowNext,
41
- allowPrevious,
42
- label: this.calculateLabel(fromStart, fromEnd, totalEntries)
43
- };
44
- }));
30
+ this.setData();
45
31
  }
46
32
  ngOnDestroy() {
47
33
  this._subscription?.unsubscribe();
@@ -56,39 +42,42 @@ export class BbCollectionsPager {
56
42
  }
57
43
  this._collection?.pageNumberControl?.setValue(pageNumber);
58
44
  }
45
+ setData() {
46
+ this.data$ = combineLatestMap({
47
+ cache: this._cache$,
48
+ maxAmountOfButtons: this._maxAmountOfButtons$
49
+ }).pipe(map(({ cache, maxAmountOfButtons }) => {
50
+ const pageSize = cache?.pageSize ?? 1;
51
+ const pageNumber = cache?.pageNumber ?? 1;
52
+ const totalEntries = Math.max(0, cache?.totalEntries ?? 0);
53
+ const start = Math.max(0, Math.min((pageSize * (pageNumber - 1)) + 1, totalEntries));
54
+ const end = Math.max(0, Math.min((start - 1) + pageSize, totalEntries));
55
+ const totalPages = Math.max(0, cache?.totalPages ?? 1);
56
+ const pages = this.filterActivePages(pageNumber, totalPages, maxAmountOfButtons);
57
+ return { start, end, totalEntries, totalPages, pages, pageNumber };
58
+ }), shareReplay({ refCount: true, bufferSize: 1 }));
59
+ }
59
60
  observeCollectionChanges() {
60
- if (!this._collection) {
61
- return;
62
- }
63
61
  if (this._subscription) {
64
62
  this._subscription?.unsubscribe();
65
63
  }
66
- const pageNumber = this._collection?.pageNumberControl?.value;
67
- const pageSize = this._collection?.pageSizeControl?.value;
68
- this.cache$.next({ pageNumber, pageSize });
64
+ if (!this._collection) {
65
+ return;
66
+ }
69
67
  this._subscription = this._collection.raw$.subscribe(data => {
70
68
  if (data) {
71
- this.cache$.next(data);
69
+ this._cache$.next(data);
72
70
  }
73
71
  });
74
72
  }
75
- calculateLabel(start, end, total) {
76
- const startPoint = '[start]';
77
- const endPoint = '[end]';
78
- const totalPoint = '[total]';
79
- const label = this._label ?? `Showing ${startPoint} to ${endPoint} of ${totalPoint} results`;
80
- return label
81
- .replace(startPoint, `<strong>${start}</strong>`)
82
- .replace(endPoint, `<strong>${end}</strong>`)
83
- .replace(totalPoint, `<strong>${total}</strong>`);
84
- }
85
- calculatePages(pageNumber, totalPages) {
73
+ calculatePages(pageNumber, totalPages, maxAmountOfButtons) {
86
74
  const min = 1;
87
75
  const max = totalPages;
88
- const amount = Math.max(1, this.maxAmountOfButtons);
76
+ const amount = Math.max(1, maxAmountOfButtons);
77
+ const start = Math.max(0, pageNumber - Math.floor(amount / 2));
89
78
  const data = Array(amount)
90
79
  .fill(0)
91
- .map((_, index) => pageNumber + (index - 1));
80
+ .map((_, index) => start + index);
92
81
  // Validate if the minimum value less than
93
82
  // the first value.
94
83
  if (data[0] < min) {
@@ -104,20 +93,22 @@ export class BbCollectionsPager {
104
93
  // Just return the default data.
105
94
  return data;
106
95
  }
107
- filterActivePages(pageNumber, totalPages) {
108
- return this.calculatePages(pageNumber, totalPages)
96
+ filterActivePages(pageNumber, totalPages, maxAmountOfButtons) {
97
+ return this.calculatePages(pageNumber, totalPages, maxAmountOfButtons)
109
98
  .filter(page => page > 0 && page <= totalPages)
110
99
  .map(page => ({ page, active: pageNumber === page }));
111
100
  }
112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BbCollectionsPager, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: BbCollectionsPager, selector: "bb-collections-pager", inputs: { label: "label", collection: "collection" }, host: { classAttribute: "bb-collections-pager" }, ngImport: i0, template: "<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", styles: [".bb-collections-pager{display:flex;align-items:center;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:10px}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;border-radius:6px;align-items:center;background-color:#fff;border:1px solid rgba(67,90,111,.3);box-shadow:#435a6f24 0 1px 2px inset}.bb-collections-pager-item:not(:last-child){border-right:1px solid #cccccc}.bb-collections-pager-button{height:34px;border:none;display:flex;padding:0 4px;min-width:40px;appearance:none;min-height:34px;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{color:#1565c0;font-weight:500}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:#1565c00d}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:#1565c033}.bb-collections-pager-button:not(.arrow):hover,.bb-collections-pager-button:not(.arrow):focus{outline:1px solid rgba(21,101,192,.5)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{outline:1px solid #1565c0;box-shadow:#1565c066 0 0 0 3px}.bb-collections-pager-button:not(.arrow).active{outline:1px solid #1565c0}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:2px;border-bottom-left-radius:2px}.bb-collections-pager-button.arrow.last{border-top-right-radius:2px;border-bottom-right-radius:2px}.bb-collections-pager-button:disabled{color:#000;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCollectionsPager, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
102
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: BbCollectionsPager, isStandalone: true, selector: "bb-collections-pager", inputs: { maxAmountOfButtons: ["maxAmountOfButtons", "maxAmountOfButtons", numberAttribute], collection: "collection" }, host: { classAttribute: "bb-collections-pager" }, ngImport: i0, template: "@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", styles: [".bb-collections-pager{display:flex;align-items:center;font-size:.875rem;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:.75rem}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;align-items:center;border-radius:.5rem;background-color:#fff;border:1px solid hsl(213,8%,74%);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-collections-pager-item:not(:last-child){border-right:1px solid hsl(213,8%,74%)}.bb-collections-pager-button{height:2rem;border:none;display:flex;appearance:none;min-height:2rem;min-width:2.5rem;-webkit-user-select:none;user-select:none;padding:0 .25rem;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{font-weight:400;color:var(--bb-collections-pager-color)}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:var(--bb-collections-pager-hover-background-color)}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:var(--bb-collections-pager-active-background-color)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{box-shadow:var(--bb-collections-pager-focus-box-shadow)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active,.bb-collections-pager-button:not(.arrow).active{outline:1px solid var(--bb-collections-pager-outline-color)}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.bb-collections-pager-button.arrow.last{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.bb-collections-pager-button:disabled{color:#111;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: BbLocalizeString, selector: "[bb-localize-string]", inputs: ["substitutions", "bb-localize-string"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "directive", type: BbLocalizeTemplate, selector: "[bbLocalizeTemplate]", inputs: ["bbLocalizeTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
114
103
  }
115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BbCollectionsPager, decorators: [{
104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCollectionsPager, decorators: [{
116
105
  type: Component,
117
- args: [{ selector: 'bb-collections-pager', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-pager' }, preserveWhitespaces: false, template: "<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", styles: [".bb-collections-pager{display:flex;align-items:center;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:10px}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;border-radius:6px;align-items:center;background-color:#fff;border:1px solid rgba(67,90,111,.3);box-shadow:#435a6f24 0 1px 2px inset}.bb-collections-pager-item:not(:last-child){border-right:1px solid #cccccc}.bb-collections-pager-button{height:34px;border:none;display:flex;padding:0 4px;min-width:40px;appearance:none;min-height:34px;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{color:#1565c0;font-weight:500}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:#1565c00d}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:#1565c033}.bb-collections-pager-button:not(.arrow):hover,.bb-collections-pager-button:not(.arrow):focus{outline:1px solid rgba(21,101,192,.5)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{outline:1px solid #1565c0;box-shadow:#1565c066 0 0 0 3px}.bb-collections-pager-button:not(.arrow).active{outline:1px solid #1565c0}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:2px;border-bottom-left-radius:2px}.bb-collections-pager-button.arrow.last{border-top-right-radius:2px;border-bottom-right-radius:2px}.bb-collections-pager-button:disabled{color:#000;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"] }]
118
- }], propDecorators: { label: [{
119
- type: Input
106
+ args: [{ selector: 'bb-collections-pager', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-pager' }, preserveWhitespaces: false, standalone: true, imports: [AsyncPipe, BbLocalizeString, BbLocalize, BbLocalizeTemplate], template: "@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", styles: [".bb-collections-pager{display:flex;align-items:center;font-size:.875rem;flex-direction:column-reverse}.bb-collections-pager-text{display:block;margin-top:.75rem}.bb-collections-pager-text>strong{font-weight:500}.bb-collections-pager-container{width:100%;display:flex;overflow-x:auto;align-items:center;justify-content:center}.bb-collections-pager-list{display:flex;align-items:center;border-radius:.5rem;background-color:#fff;border:1px solid hsl(213,8%,74%);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-collections-pager-item:not(:last-child){border-right:1px solid hsl(213,8%,74%)}.bb-collections-pager-button{height:2rem;border:none;display:flex;appearance:none;min-height:2rem;min-width:2.5rem;-webkit-user-select:none;user-select:none;padding:0 .25rem;align-items:center;justify-content:center;background-color:transparent}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus,.bb-collections-pager-button:active,.bb-collections-pager-button.active{font-weight:400;color:var(--bb-collections-pager-color)}.bb-collections-pager-button:hover,.bb-collections-pager-button:focus{background-color:var(--bb-collections-pager-hover-background-color)}.bb-collections-pager-button:active,.bb-collections-pager-button.active{background-color:var(--bb-collections-pager-active-background-color)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active{box-shadow:var(--bb-collections-pager-focus-box-shadow)}.bb-collections-pager-button:not(.arrow):focus,.bb-collections-pager-button:not(.arrow):active,.bb-collections-pager-button:not(.arrow).active{outline:1px solid var(--bb-collections-pager-outline-color)}.bb-collections-pager-button.arrow{font-weight:500}.bb-collections-pager-button.arrow.first{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.bb-collections-pager-button.arrow.last{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.bb-collections-pager-button:disabled{color:#111;outline:none;opacity:.25;cursor:default;pointer-events:none;background-color:transparent}@media only screen and (min-width: 768px){.bb-collections-pager{flex-wrap:wrap;align-items:center;flex-direction:row;justify-content:space-between}.bb-collections-pager-text{margin-top:0}.bb-collections-pager-container{width:auto;overflow-x:unset}}\n"] }]
107
+ }], propDecorators: { maxAmountOfButtons: [{
108
+ type: Input,
109
+ args: [{ transform: numberAttribute }]
120
110
  }], collection: [{
121
- type: Input
111
+ type: Input,
112
+ args: [{ required: true }]
122
113
  }] } });
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMtcGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtcGFnZXIvY29sbGVjdGlvbnMtcGFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtcGFnZXIvY29sbGVjdGlvbnMtcGFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTlHLE9BQU8sRUFBQyxlQUFlLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBV25DLE1BQU0sT0FBTyxrQkFBa0I7SUFUL0I7UUFXSSxpQkFBaUI7UUFDUix1QkFBa0IsR0FBVyxDQUFDLENBQUM7UUF3QnhDLFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBbUMsRUFBRSxDQUFDLENBQUM7UUFFbkUsMkJBQTJCO1FBQ25CLFdBQU0sR0FBa0IsSUFBSSxDQUFDO1FBQzdCLGdCQUFXLEdBQStCLElBQUksQ0FBQztRQUMvQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7S0FvSHJEO0lBL0lHLFVBQVU7SUFDVixJQUNJLEtBQUssQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lB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QUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0IsRUFBQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUMsdUJBQ2xCLEtBQUs7OEJBU3RCLEtBQUs7c0JBRFIsS0FBSztnQkFPRixVQUFVO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb2xsZWN0aW9uRGF0YX0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb2xsZWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q29sbGVjdGlvbn0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbic7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiLWNvbGxlY3Rpb25zLXBhZ2VyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sbGVjdGlvbnMtcGFnZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbGxlY3Rpb25zLXBhZ2VyLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7J2NsYXNzJzogJ2JiLWNvbGxlY3Rpb25zLXBhZ2VyJ30sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQmJDb2xsZWN0aW9uc1BhZ2VyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLy8gUmVhZG9ubHkgZGF0YS5cbiAgICByZWFkb25seSBtYXhBbW91bnRPZkJ1dHRvbnM6IG51bWJlciA9IDU7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KClcbiAgICBzZXQgbGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9sYWJlbCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmNhY2hlJC5uZXh0KHRoaXMuY2FjaGUkLmdldFZhbHVlKCkpO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbGxlY3Rpb24oY29sbGVjdGlvbjogQ29sbGVjdGlvbjx1bmtub3duPiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gICAgICAgIHRoaXMub2JzZXJ2ZUNvbGxlY3Rpb25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLy8gRGF0YS5cbiAgICBkYXRhJDogT2JzZXJ2YWJsZTx7XG4gICAgICAgIHRvdGFsUGFnZXM6IG51bWJlcixcbiAgICAgICAgcGFnZU51bWJlcjogbnVtYmVyLFxuICAgICAgICBwYWdlczogeyBwYWdlOiBudW1iZXIsIGFjdGl2ZTogYm9vbGVhbiB9W10sXG4gICAgICAgIGFsbG93TmV4dDogYm9vbGVhblxuICAgICAgICBhbGxvd1ByZXZpb3VzOiBib29sZWFuLFxuICAgICAgICBsYWJlbDogc3RyaW5nXG4gICAgfT47XG4gICAgY2FjaGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYXJ0aWFsPENvbGxlY3Rpb25EYXRhPHVua25vd24+Pj4oe30pO1xuXG4gICAgLy8gU3RhdGUgYW5kIHN1YnNjcmlwdGlvbnMuXG4gICAgcHJpdmF0ZSBfbGFiZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX2NvbGxlY3Rpb246IENvbGxlY3Rpb248dW5rbm93bj4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZGF0YSQgPSB0aGlzLmNhY2hlJC5waXBlKFxuICAgICAgICAgICAgbWFwKGNhY2hlID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlU2l6ZSA9IGNhY2hlPy5wYWdlU2l6ZSA/PyAxO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSBjYWNoZT8ucGFnZU51bWJlciA/PyAxO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgdG90YWxQYWdlcyA9IE1hdGgubWF4KDAsIGNhY2hlPy50b3RhbFBhZ2VzID8/IDEpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsRW50cmllcyA9IE1hdGgubWF4KDAsIGNhY2hlPy50b3RhbEVudHJpZXMgPz8gMCk7XG4gICAgICAgICAgICAgICAgY29uc3QgZnJvbVN0YXJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oKHBhZ2VTaXplICogKHBhZ2VOdW1iZXIgLSAxKSkgKyAxLCB0b3RhbEVudHJpZXMpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBmcm9tRW5kID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oKGZyb21TdGFydCAtIDEpICsgcGFnZVNpemUsIHRvdGFsRW50cmllcykpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZXMgPSB0aGlzLmZpbHRlckFjdGl2ZVBhZ2VzKHBhZ2VOdW1iZXIsIHRvdGFsUGFnZXMpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYWxsb3dOZXh0ID0gcGFnZU51bWJlciA8IHRvdGFsUGFnZXM7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsb3dQcmV2aW91cyA9IHBhZ2VOdW1iZXIgPiAxO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICAgICAgICAgICAgICAgcGFnZXMsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgIGFsbG93TmV4dCxcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dQcmV2aW91cyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuY2FsY3VsYXRlTGFiZWwoZnJvbVN0YXJ0LCBmcm9tRW5kLCB0b3RhbEVudHJpZXMpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBzZXRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlciwgdG90YWxQYWdlczogbnVtYmVyKSB7XG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbmV3IHZhbHVlLlxuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IE1hdGgubWluKFxuICAgICAgICAgICAgdG90YWxQYWdlcyxcbiAgICAgICAgICAgIE1hdGgubWF4KDEsIHBhZ2VOdW1iZXIpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIHZhbHVlIGlzIGFjdHVhbGx5IGRpZmZlcmVudC5cbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5fY29sbGVjdGlvbj8ucGFnZU51bWJlckNvbnRyb2w/LnZhbHVlO1xuICAgICAgICBpZiAoY3VycmVudFZhbHVlID09PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fY29sbGVjdGlvbj8ucGFnZU51bWJlckNvbnRyb2w/LnNldFZhbHVlKHBhZ2VOdW1iZXIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb2JzZXJ2ZUNvbGxlY3Rpb25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhZ2VOdW1iZXIgPSB0aGlzLl9jb2xsZWN0aW9uPy5wYWdlTnVtYmVyQ29udHJvbD8udmFsdWU7XG4gICAgICAgIGNvbnN0IHBhZ2VTaXplID0gdGhpcy5fY29sbGVjdGlvbj8ucGFnZVNpemVDb250cm9sPy52YWx1ZTtcblxuICAgICAgICB0aGlzLmNhY2hlJC5uZXh0KHtwYWdlTnVtYmVyLCBwYWdlU2l6ZX0pO1xuXG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbiA9IHRoaXMuX2NvbGxlY3Rpb24ucmF3JC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FjaGUkLm5leHQoZGF0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlTGFiZWwoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRvdGFsOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3Qgc3RhcnRQb2ludCA9ICdbc3RhcnRdJztcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSAnW2VuZF0nO1xuICAgICAgICBjb25zdCB0b3RhbFBvaW50ID0gJ1t0b3RhbF0nO1xuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMuX2xhYmVsID8/IGBTaG93aW5nICR7c3RhcnRQb2ludH0gdG8gJHtlbmRQb2ludH0gb2YgJHt0b3RhbFBvaW50fSByZXN1bHRzYDtcblxuICAgICAgICByZXR1cm4gbGFiZWxcbiAgICAgICAgICAgIC5yZXBsYWNlKHN0YXJ0UG9pbnQsIGA8c3Ryb25nPiR7c3RhcnR9PC9zdHJvbmc+YClcbiAgICAgICAgICAgIC5yZXBsYWNlKGVuZFBvaW50LCBgPHN0cm9uZz4ke2VuZH08L3N0cm9uZz5gKVxuICAgICAgICAgICAgLnJlcGxhY2UodG90YWxQb2ludCwgYDxzdHJvbmc+JHt0b3RhbH08L3N0cm9uZz5gKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVBhZ2VzKHBhZ2VOdW1iZXI6IG51bWJlciwgdG90YWxQYWdlczogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IG1pbiA9IDE7XG4gICAgICAgIGNvbnN0IG1heCA9IHRvdGFsUGFnZXM7XG4gICAgICAgIGNvbnN0IGFtb3VudCA9IE1hdGgubWF4KDEsIHRoaXMubWF4QW1vdW50T2ZCdXR0b25zKTtcblxuICAgICAgICBjb25zdCBkYXRhID0gQXJyYXkoYW1vdW50KVxuICAgICAgICAgICAgLmZpbGwoMClcbiAgICAgICAgICAgIC5tYXAoKF8sIGluZGV4KSA9PiBwYWdlTnVtYmVyICsgKGluZGV4IC0gMSkpO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIGlmIHRoZSBtaW5pbXVtIHZhbHVlIGxlc3MgdGhhblxuICAgICAgICAvLyB0aGUgZmlyc3QgdmFsdWUuXG4gICAgICAgIGlmIChkYXRhWzBdIDwgbWluKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiBpdGVtICsgMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2Ugd2l0aCB0aGUgbWF4XG4gICAgICAgIC8vIGlmIHRoaXMgdmFsdWUgaXMgaGlnaGVyIHRoYW4gMCB3ZSBzaG91bGQgbWludXMgaXQuXG4gICAgICAgIGNvbnN0IGxhc3RWYWx1ZUluQXJyYXkgPSBkYXRhW2RhdGEubGVuZ3RoIC0gMV07XG4gICAgICAgIGNvbnN0IGRpZmZlcmVuY2VXaXRoTWF4ID0gbGFzdFZhbHVlSW5BcnJheSAtIG1heDtcbiAgICAgICAgaWYgKGRpZmZlcmVuY2VXaXRoTWF4ID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEubWFwKGl0ZW0gPT4gaXRlbSAtIGRpZmZlcmVuY2VXaXRoTWF4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEp1c3QgcmV0dXJuIHRoZSBkZWZhdWx0IGRhdGEuXG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsdGVyQWN0aXZlUGFnZXMocGFnZU51bWJlcjogbnVtYmVyLCB0b3RhbFBhZ2VzOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlUGFnZXMocGFnZU51bWJlciwgdG90YWxQYWdlcylcbiAgICAgICAgICAgIC5maWx0ZXIocGFnZSA9PiBwYWdlID4gMCAmJiBwYWdlIDw9IHRvdGFsUGFnZXMpXG4gICAgICAgICAgICAubWFwKHBhZ2UgPT4gKHtwYWdlLCBhY3RpdmU6IHBhZ2VOdW1iZXIgPT09IHBhZ2V9KSk7XG4gICAgfVxuXG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YSQgfCBhc3luYyBhcyBkYXRhXCI+XG4gICAgPGRpdiBbaW5uZXJIVE1MXT1cImRhdGE/LmxhYmVsXCJcbiAgICAgICAgIGNsYXNzPVwiYmItY29sbGVjdGlvbnMtcGFnZXItdGV4dFwiPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXBhZ2VyLWNvbnRhaW5lclwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy1wYWdlci1saXN0XCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy1wYWdlci1pdGVtXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlByZXZpb3VzIHBhZ2VcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhZGF0YT8uYWxsb3dQcmV2aW91c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0UGFnZShkYXRhPy5wYWdlTnVtYmVyIC0gMSwgZGF0YT8udG90YWxQYWdlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy1wYWdlci1idXR0b24gYXJyb3cgZmlyc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAmIzg1OTI7XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGE/LnBhZ2VzXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ1BhZ2UgJyArIGl0ZW0/LnBhZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmItY29sbGVjdGlvbnMtcGFnZXItaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gW2NsYXNzLmFjdGl2ZV09XCJpdGVtPy5hY3RpdmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFBhZ2UoaXRlbT8ucGFnZSwgZGF0YT8udG90YWxQYWdlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy1wYWdlci1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5wYWdlIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiYmItY29sbGVjdGlvbnMtcGFnZXItaXRlbVwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJOZXh0IHBhZ2VcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCIhZGF0YT8uYWxsb3dOZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZXRQYWdlKGRhdGE/LnBhZ2VOdW1iZXIgKyAxLCBkYXRhPy50b3RhbFBhZ2VzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXBhZ2VyLWJ1dHRvbiBhcnJvdyBsYXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgJiM4NTk0O1xuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMtcGFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtcGFnZXIvY29sbGVjdGlvbnMtcGFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtcGFnZXIvY29sbGVjdGlvbnMtcGFnZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFxQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvSCxPQUFPLEVBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFFbEcsT0FBTyxFQUFDLGVBQWUsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFDLEdBQUcsRUFBRSxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBYTFDLE1BQU0sT0FBTyxrQkFBa0I7SUFYL0I7UUEwQ0ksMkJBQTJCO1FBQ25CLGdCQUFXLEdBQStCLElBQUksQ0FBQztRQUMvQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFDMUMsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFtQyxFQUFFLENBQUMsQ0FBQztRQUNwRSx5QkFBb0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQztLQWtHakU7SUFuSUcs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QUUsc0JBQXNCLEVBQUMsdUJBQ2xCLEtBQUssY0FDZCxJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixDQUFDOzhCQUtsRSxrQkFBa0I7c0JBRHJCLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZUFBZSxFQUFDO2dCQVUvQixVQUFVO3NCQURiLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgbnVtYmVyQXR0cmlidXRlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYkxvY2FsaXplLCBCYkxvY2FsaXplU3RyaW5nLCBCYkxvY2FsaXplVGVtcGxhdGV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL2xvY2FsaXplJztcbmltcG9ydCB7Q29sbGVjdGlvbkRhdGF9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29sbGVjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3RNYXB9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL3J4anMnO1xuaW1wb3J0IHttYXAsIHNoYXJlUmVwbGF5fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge0NvbGxlY3Rpb259IGZyb20gJy4uLy4uL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHtBc3luY1BpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmItY29sbGVjdGlvbnMtcGFnZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xsZWN0aW9ucy1wYWdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sbGVjdGlvbnMtcGFnZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsnY2xhc3MnOiAnYmItY29sbGVjdGlvbnMtcGFnZXInfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtBc3luY1BpcGUsIEJiTG9jYWxpemVTdHJpbmcsIEJiTG9jYWxpemUsIEJiTG9jYWxpemVUZW1wbGF0ZV1cbn0pXG5leHBvcnQgY2xhc3MgQmJDb2xsZWN0aW9uc1BhZ2VyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgQElucHV0KHt0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZX0pXG4gICAgc2V0IG1heEFtb3VudE9mQnV0dG9ucyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21heEFtb3VudE9mQnV0dG9ucyQubmV4dChNYXRoLm1heCgxLCB2YWx1ZSkpO1xuICAgIH1cblxuICAgIGdldCBtYXhBbW91bnRPZkJ1dHRvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tYXhBbW91bnRPZkJ1dHRvbnMkLmdldFZhbHVlKCk7XG4gICAgfVxuXG4gICAgQElucHV0KHtyZXF1aXJlZDogdHJ1ZX0pXG4gICAgc2V0IGNvbGxlY3Rpb24oY29sbGVjdGlvbjogQ29sbGVjdGlvbjx1bmtub3duPiB8IG51bGwpIHtcbiAgICAgICAgdGhpcy5fY29sbGVjdGlvbiA9IGNvbGxlY3Rpb247XG4gICAgICAgIHRoaXMub2JzZXJ2ZUNvbGxlY3Rpb25DaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbGxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb2xsZWN0aW9uO1xuICAgIH1cblxuICAgIC8vIERhdGEuXG4gICAgZGF0YSQ6IE9ic2VydmFibGU8e1xuICAgICAgICBzdGFydD86IG51bWJlcixcbiAgICAgICAgZW5kPzogbnVtYmVyLFxuICAgICAgICB0b3RhbEVudHJpZXM/OiBudW1iZXIsXG4gICAgICAgIHRvdGFsUGFnZXM/OiBudW1iZXIsXG4gICAgICAgIHBhZ2VOdW1iZXI/OiBudW1iZXIsXG4gICAgICAgIHBhZ2VzPzogeyBwYWdlOiBudW1iZXIsIGFjdGl2ZTogYm9vbGVhbiB9W11cbiAgICB9PjtcblxuICAgIC8vIFN0YXRlIGFuZCBzdWJzY3JpcHRpb25zLlxuICAgIHByaXZhdGUgX2NvbGxlY3Rpb246IENvbGxlY3Rpb248dW5rbm93bj4gfCBudWxsID0gbnVsbDtcbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgX2NhY2hlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8UGFydGlhbDxDb2xsZWN0aW9uRGF0YTx1bmtub3duPj4+KHt9KTtcbiAgICBwcml2YXRlIF9tYXhBbW91bnRPZkJ1dHRvbnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDMpO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgc2V0UGFnZShwYWdlTnVtYmVyOiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlcikge1xuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG5ldyB2YWx1ZS5cbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBNYXRoLm1pbihcbiAgICAgICAgICAgIHRvdGFsUGFnZXMsXG4gICAgICAgICAgICBNYXRoLm1heCgxLCBwYWdlTnVtYmVyKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSB2YWx1ZSBpcyBhY3R1YWxseSBkaWZmZXJlbnQuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuX2NvbGxlY3Rpb24/LnBhZ2VOdW1iZXJDb250cm9sPy52YWx1ZTtcbiAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSA9PT0gbmV3VmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2NvbGxlY3Rpb24/LnBhZ2VOdW1iZXJDb250cm9sPy5zZXRWYWx1ZShwYWdlTnVtYmVyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERhdGEoKSB7XG4gICAgICAgIHRoaXMuZGF0YSQgPSBjb21iaW5lTGF0ZXN0TWFwKHtcbiAgICAgICAgICAgIGNhY2hlOiB0aGlzLl9jYWNoZSQsXG4gICAgICAgICAgICBtYXhBbW91bnRPZkJ1dHRvbnM6IHRoaXMuX21heEFtb3VudE9mQnV0dG9ucyRcbiAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoe2NhY2hlLCBtYXhBbW91bnRPZkJ1dHRvbnN9KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZVNpemUgPSBjYWNoZT8ucGFnZVNpemUgPz8gMTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlTnVtYmVyID0gY2FjaGU/LnBhZ2VOdW1iZXIgPz8gMTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsRW50cmllcyA9IE1hdGgubWF4KDAsIGNhY2hlPy50b3RhbEVudHJpZXMgPz8gMCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigocGFnZVNpemUgKiAocGFnZU51bWJlciAtIDEpKSArIDEsIHRvdGFsRW50cmllcykpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVuZCA9IE1hdGgubWF4KDAsIE1hdGgubWluKChzdGFydCAtIDEpICsgcGFnZVNpemUsIHRvdGFsRW50cmllcykpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSBNYXRoLm1heCgwLCBjYWNoZT8udG90YWxQYWdlcyA/PyAxKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VzID0gdGhpcy5maWx0ZXJBY3RpdmVQYWdlcyhwYWdlTnVtYmVyLCB0b3RhbFBhZ2VzLCBtYXhBbW91bnRPZkJ1dHRvbnMpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtzdGFydCwgZW5kLCB0b3RhbEVudHJpZXMsIHRvdGFsUGFnZXMsIHBhZ2VzLCBwYWdlTnVtYmVyfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoe3JlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9ic2VydmVDb2xsZWN0aW9uQ2hhbmdlcygpIHtcbiAgICAgICAgaWYgKHRoaXMuX3N1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9jb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl9jb2xsZWN0aW9uLnJhdyQuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZSQubmV4dChkYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYWxjdWxhdGVQYWdlcyhwYWdlTnVtYmVyOiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlciwgbWF4QW1vdW50T2ZCdXR0b25zOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbWluID0gMTtcbiAgICAgICAgY29uc3QgbWF4ID0gdG90YWxQYWdlcztcbiAgICAgICAgY29uc3QgYW1vdW50ID0gTWF0aC5tYXgoMSwgbWF4QW1vdW50T2ZCdXR0b25zKTtcblxuICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWF4KDAsIHBhZ2VOdW1iZXIgLSBNYXRoLmZsb29yKGFtb3VudCAvIDIpKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IEFycmF5KGFtb3VudClcbiAgICAgICAgICAgIC5maWxsKDApXG4gICAgICAgICAgICAubWFwKChfLCBpbmRleCkgPT4gc3RhcnQgKyBpbmRleCk7XG5cbiAgICAgICAgLy8gVmFsaWRhdGUgaWYgdGhlIG1pbmltdW0gdmFsdWUgbGVzcyB0aGFuXG4gICAgICAgIC8vIHRoZSBmaXJzdCB2YWx1ZS5cbiAgICAgICAgaWYgKGRhdGFbMF0gPCBtaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhLm1hcChpdGVtID0+IGl0ZW0gKyAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZGlmZmVyZW5jZSB3aXRoIHRoZSBtYXhcbiAgICAgICAgLy8gaWYgdGhpcyB2YWx1ZSBpcyBoaWdoZXIgdGhhbiAwIHdlIHNob3VsZCBtaW51cyBpdC5cbiAgICAgICAgY29uc3QgbGFzdFZhbHVlSW5BcnJheSA9IGRhdGFbZGF0YS5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZVdpdGhNYXggPSBsYXN0VmFsdWVJbkFycmF5IC0gbWF4O1xuICAgICAgICBpZiAoZGlmZmVyZW5jZVdpdGhNYXggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YS5tYXAoaXRlbSA9PiBpdGVtIC0gZGlmZmVyZW5jZVdpdGhNYXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSnVzdCByZXR1cm4gdGhlIGRlZmF1bHQgZGF0YS5cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaWx0ZXJBY3RpdmVQYWdlcyhwYWdlTnVtYmVyOiBudW1iZXIsIHRvdGFsUGFnZXM6IG51bWJlciwgbWF4QW1vdW50T2ZCdXR0b25zOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlUGFnZXMocGFnZU51bWJlciwgdG90YWxQYWdlcywgbWF4QW1vdW50T2ZCdXR0b25zKVxuICAgICAgICAgICAgLmZpbHRlcihwYWdlID0+IHBhZ2UgPiAwICYmIHBhZ2UgPD0gdG90YWxQYWdlcylcbiAgICAgICAgICAgIC5tYXAocGFnZSA9PiAoe3BhZ2UsIGFjdGl2ZTogcGFnZU51bWJlciA9PT0gcGFnZX0pKTtcbiAgICB9XG5cbn1cbiIsIkBpZiAoZGF0YSQgfCBhc3luYzsgYXMgZGF0YSkge1xuICAgIDxkaXYgW2JiLWxvY2FsaXplLXN0cmluZ109XCInY29sbGVjdGlvbi5zaG93aW5nX2xhYmVsJyB8IGJiTG9jYWxpemVcIlxuICAgICAgICAgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy1wYWdlci10ZXh0XCI+XG4gICAgICAgIDxzdHJvbmcgKmJiTG9jYWxpemVUZW1wbGF0ZT1cIidzdGFydCdcIj57eyBkYXRhPy5zdGFydCB9fTwvc3Ryb25nPlxuICAgICAgICA8c3Ryb25nICpiYkxvY2FsaXplVGVtcGxhdGU9XCInZW5kJ1wiPnt7IGRhdGE/LmVuZCB9fTwvc3Ryb25nPlxuICAgICAgICA8c3Ryb25nICpiYkxvY2FsaXplVGVtcGxhdGU9XCIndG90YWwnXCI+e3sgZGF0YT8udG90YWxFbnRyaWVzIH19PC9zdHJvbmc+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmItY29sbGVjdGlvbnMtcGFnZXItY29udGFpbmVyXCI+XG4gICAgICAgIDx1bCBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXBhZ2VyLWxpc3RcIj5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXBhZ2VyLWl0ZW1cIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiUHJldmlvdXMgcGFnZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImRhdGE/LnBhZ2VOdW1iZXIgPD0gMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0UGFnZShkYXRhPy5wYWdlTnVtYmVyIC0gMSwgZGF0YT8udG90YWxQYWdlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy1wYWdlci1idXR0b24gYXJyb3cgZmlyc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgICAgICAmIzg1OTI7XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBkYXRhPy5wYWdlczsgdHJhY2sgaXRlbT8ucGFnZSkge1xuICAgICAgICAgICAgICAgIDxsaSBbdGl0bGVdPVwiJ1BhZ2UgJyArIGl0ZW0/LnBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXBhZ2VyLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbY2xhc3MuYWN0aXZlXT1cIml0ZW0/LmFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFBhZ2UoaXRlbT8ucGFnZSwgZGF0YT8udG90YWxQYWdlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmItY29sbGVjdGlvbnMtcGFnZXItYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5wYWdlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy1wYWdlci1pdGVtXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIk5leHQgcGFnZVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImRhdGE/LnBhZ2VOdW1iZXIgPj0gZGF0YT8udG90YWxQYWdlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0UGFnZShkYXRhPy5wYWdlTnVtYmVyICsgMSwgZGF0YT8udG90YWxQYWdlcylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy1wYWdlci1idXR0b24gYXJyb3cgbGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICYjODU5NDtcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG59XG4iXX0=
@@ -0,0 +1,86 @@
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation } from '@angular/core';
2
+ import { BbCollectionsDataRow } from '../../directives/collections-data-row.directive';
3
+ import { BbLocalize, BbLocalizeString, BbLocalizeTemplate } from '@bravobit/bb-foundation/localize';
4
+ import { BbCollectionsActions } from '../collections-actions/collections-actions.component';
5
+ import { BbCollectionsViewer } from '../collections-viewer/collections-viewer.component';
6
+ import { BbCollectionsInitial } from '../../directives/collections-initial.directive';
7
+ import { BbCollectionsPager } from '../collections-pager/collections-pager.component';
8
+ import { BbCollectionsEmpty } from '../../directives/collections-empty.directive';
9
+ import { BbCollectionsError } from '../../directives/collections-error.directive';
10
+ import { BbCollectionsData } from '../../directives/collections-data.directive';
11
+ import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
12
+ import { BbSpinner } from '@bravobit/bb-foundation/elements';
13
+ import { BbTemplate } from '@bravobit/bb-foundation/utils';
14
+ import { BehaviorSubject } from 'rxjs';
15
+ import * as i0 from "@angular/core";
16
+ export class BbCollectionsTable {
17
+ constructor() {
18
+ // Readonly data.
19
+ this.collection$ = new BehaviorSubject(null);
20
+ // Inputs.
21
+ this.queryPlaceholder = null;
22
+ this.emptyContent = null;
23
+ this.noResultsContent = null;
24
+ this.errorContent = null;
25
+ this.trackByProperty = 'id';
26
+ this.includeVerticalLines = false;
27
+ this.hideActions = false;
28
+ this.hidePager = false;
29
+ }
30
+ set collection(collection) {
31
+ this.collection$.next(collection);
32
+ }
33
+ get collection() {
34
+ return this.collection$.getValue();
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCollectionsTable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
37
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: BbCollectionsTable, isStandalone: true, selector: "bb-collections-table", inputs: { queryPlaceholder: "queryPlaceholder", emptyContent: "emptyContent", noResultsContent: "noResultsContent", errorContent: "errorContent", trackByProperty: "trackByProperty", includeVerticalLines: ["includeVerticalLines", "includeVerticalLines", booleanAttribute], hideActions: ["hideActions", "hideActions", booleanAttribute], hidePager: ["hidePager", "hidePager", booleanAttribute], collection: "collection" }, host: { properties: { "class.include-vertical-lines": "includeVerticalLines" }, classAttribute: "bb-collections-table" }, queries: [{ propertyName: "dataRowTemplate", first: true, predicate: BbCollectionsDataRow, descendants: true, read: TemplateRef }], ngImport: i0, template: "@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", styles: ["@charset \"UTF-8\";.bb-collections-table{color:#111;display:block;position:relative;font-size:.875rem;border-radius:.5rem;background-color:#fff;box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-collections-table.include-vertical-lines td:not(:last-child),.bb-collections-table.include-vertical-lines th:not(:last-child){border-right:1px solid hsl(213,8%,90%)}.bb-collections-table-footer{padding:.75rem 1rem;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem;background-color:#fbf9f9;border-top:1px solid hsl(213,8%,90%)}.bb-collections-table-container{overflow-x:auto;position:relative}.bb-collections-table-container.loading>table>tbody,.bb-collections-table-container.loading>.bb-collections-table-info{animation:collectionsBlink 1s linear infinite}.bb-collections-table-container.loading:after{top:0;left:0;right:0;z-index:1;opacity:0;content:\"\";height:.25rem;position:absolute;will-change:left,right;background-color:#1565c1;animation:collectionsFadeIn .12s cubic-bezier(.65,.815,.735,.395) .4s forwards,collectionsIndeterminate 2.1s cubic-bezier(.65,.815,.735,.395) .4s infinite}.bb-collections-table-container>table{width:100%}.bb-collections-table-container>table th,.bb-collections-table-container>table td{padding:1rem;text-align:left;font-weight:400;font-size:.875rem}.bb-collections-table-container>table th.fit,.bb-collections-table-container>table td.fit{width:1%;white-space:nowrap}.bb-collections-table-container>table th.left,.bb-collections-table-container>table td.left{text-align:left}.bb-collections-table-container>table th.right,.bb-collections-table-container>table td.right{text-align:right}.bb-collections-table-container>table>thead{background-color:#fbf9f9;border-bottom:1px solid hsl(213,8%,90%)}.bb-collections-table-container>table>thead>tr>th{padding:1rem;color:#525252}.bb-collections-table-container>table>tbody>tr>td{color:#111}.bb-collections-table-container>table>tbody>tr:not(:last-child){border-bottom:1px solid hsl(213,8%,90%)}.bb-collections-table-info{padding:3rem 1.5rem}.bb-collections-table-info-text{color:#525252;margin:0 auto;display:block;line-height:2;max-width:30rem;text-align:center;font-size:.875rem}.bb-collections-table-info-text>strong{font-weight:500}.bb-collections-table-info-text>strong:before{content:\"\\201c\"}.bb-collections-table-info-text>strong:after{content:\"\\201d\"}.bb-collections-table-image{width:100%;height:auto;display:flex;max-width:7.5rem;margin:0 auto 1.5rem;background-size:contain;background-repeat:no-repeat;background-position:center center}.bb-collections-table-image.empty{aspect-ratio:154/132;-webkit-mask-image:linear-gradient(to bottom,black 25%,transparent 100%);mask-image:linear-gradient(to bottom,black 25%,transparent 100%);background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 154 132\"%3E%3Cg fill=\"none\" fill-rule=\"evenodd\"%3E%3Crect width=\"154\" height=\"40\" fill=\"%23FFF\" fill-rule=\"nonzero\" rx=\"8\"/%3E%3Crect width=\"24\" height=\"24\" x=\"8\" y=\"8\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"4\"/%3E%3Crect width=\"60\" height=\"6\" x=\"40\" y=\"11\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"106\" height=\"6\" x=\"40\" y=\"23\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"153\" height=\"39\" x=\".5\" y=\".5\" stroke=\"%23E5E7EB\" rx=\"7.5\"/%3E%3Cg transform=\"translate(0 46)\"%3E%3Crect width=\"154\" height=\"40\" fill=\"%23FFF\" fill-rule=\"nonzero\" rx=\"8\"/%3E%3Crect width=\"24\" height=\"24\" x=\"8\" y=\"8\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"4\"/%3E%3Crect width=\"60\" height=\"6\" x=\"40\" y=\"11\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"106\" height=\"6\" x=\"40\" y=\"23\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"153\" height=\"39\" x=\".5\" y=\".5\" stroke=\"%23E5E7EB\" rx=\"7.5\"/%3E%3C/g%3E%3Cg transform=\"translate(0 92)\"%3E%3Crect width=\"154\" height=\"40\" fill=\"%23FFF\" fill-rule=\"nonzero\" rx=\"8\"/%3E%3Crect width=\"24\" height=\"24\" x=\"8\" y=\"8\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"4\"/%3E%3Crect width=\"60\" height=\"6\" x=\"40\" y=\"11\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"106\" height=\"6\" x=\"40\" y=\"23\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"153\" height=\"39\" x=\".5\" y=\".5\" stroke=\"%23E5E7EB\" rx=\"7.5\"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E')}.bb-collections-table-image.error{max-width:4rem;aspect-ratio:1;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 132 132\"%3E%3Cpath fill=\"%23C23934\" d=\"M65.958253 98.6024096c.8892771 0 1.6486747-.3008433 2.2781928-.9025301.6295181-.6016867.9442771-1.3471687.9442771-2.2364458 0-.8892771-.3008434-1.6486747-.9025301-2.2781927-.6016868-.6295181-1.3471687-.9442771-2.2364458-.9442771-.8892771 0-1.6486747.3008433-2.2781928.9025301-.6295181.6016867-.9442771 1.3471687-.9442771 2.2364458 0 .8892771.3008434 1.6486747.9025301 2.2781927.6016868.6295181 1.3471687.9442771 2.2364458.9442771Zm-1.9462048-21.4698795h3.9759036V29.4216867h-3.9759036v47.7108434ZM66.0894578 132c-9.0716867 0-17.6205421-1.715602-25.6465662-5.146807-8.0260241-3.431205-15.0547591-8.159217-21.0862049-14.184036-6.032771-6.02482-10.76674694-13.0416269-14.20192766-21.0504221C1.71825301 83.6086145 0 75.0504819 0 65.9443373 0 56.8368675 1.71560241 48.303253 5.14680723 40.343494c3.43120482-7.9597591 8.15921687-14.9553615 14.18403617-20.9868073 6.0248193-6.032771 13.0416265-10.76674694 21.0504217-14.20192766C48.3913855 1.71825301 56.9495181 0 66.0556627 0 75.1631325 0 83.696747 1.71560241 91.656506 5.14680723c7.9597591 3.43120482 14.955361 8.15921687 20.986807 14.18403617 6.032771 6.0248193 10.766747 13.0263855 14.201928 21.0046988C130.281747 48.3138554 132 56.8388554 132 65.9105422c0 9.0716867-1.715602 17.6205421-5.146807 25.6465662-3.431205 8.0260241-8.159217 15.0547586-14.184036 21.0862046-6.02482 6.032771-13.0263859 10.766747-21.0046992 14.201928C83.6861446 130.281747 75.1611446 132 66.0894578 132ZM66 128.024096c17.2289157 0 31.873494-6.03012 43.933735-18.090361C121.993976 97.873494 128.024096 83.2289157 128.024096 66c0-17.2289157-6.03012-31.873494-18.090361-43.9337349C97.873494 10.0060241 83.2289157 3.97590361 66 3.97590361c-17.2289157 0-31.873494 6.03012049-43.9337349 18.09036149C10.0060241 34.126506 3.97590361 48.7710843 3.97590361 66c0 17.2289157 6.03012049 31.873494 18.09036149 43.933735C34.126506 121.993976 48.7710843 128.024096 66 128.024096Z\"/%3E%3C/svg%3E')}@keyframes collectionsFadeIn{0%{opacity:0}to{opacity:1}}@keyframes collectionsIndeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes collectionsBlink{25%{opacity:.6}50%{opacity:.4}75%{opacity:.6}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BbCollectionsViewer, selector: "[bb-collections-viewer]", inputs: ["collection"] }, { kind: "directive", type: BbCollectionsData, selector: "[bbCollectionsData]" }, { kind: "directive", type: BbCollectionsEmpty, selector: "[bbCollectionsEmpty]" }, { kind: "directive", type: BbCollectionsError, selector: "[bbCollectionsError]" }, { kind: "directive", type: BbCollectionsInitial, selector: "[bbCollectionsInitial]" }, { kind: "component", type: BbCollectionsActions, selector: "bb-collections-actions", inputs: ["collection", "queryPlaceholder", "standalone"] }, { kind: "component", type: BbCollectionsPager, selector: "bb-collections-pager", inputs: ["maxAmountOfButtons", "collection"] }, { kind: "component", type: BbLocalizeString, selector: "[bb-localize-string]", inputs: ["substitutions", "bb-localize-string"] }, { kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "directive", type: BbLocalizeTemplate, selector: "[bbLocalizeTemplate]", inputs: ["bbLocalizeTemplate"] }, { kind: "component", type: BbSpinner, selector: "bb-spinner", inputs: ["color", "alt", "disabled"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCollectionsTable, decorators: [{
40
+ type: Component,
41
+ args: [{ selector: 'bb-collections-table', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
42
+ 'class': 'bb-collections-table',
43
+ '[class.include-vertical-lines]': 'includeVerticalLines'
44
+ }, preserveWhitespaces: false, standalone: true, imports: [
45
+ NgTemplateOutlet,
46
+ BbCollectionsViewer,
47
+ BbCollectionsData,
48
+ BbCollectionsEmpty,
49
+ BbCollectionsError,
50
+ BbCollectionsInitial,
51
+ BbCollectionsActions,
52
+ BbCollectionsPager,
53
+ BbLocalizeString,
54
+ BbTemplate,
55
+ BbLocalize,
56
+ BbLocalizeTemplate,
57
+ BbSpinner,
58
+ AsyncPipe
59
+ ], template: "@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", styles: ["@charset \"UTF-8\";.bb-collections-table{color:#111;display:block;position:relative;font-size:.875rem;border-radius:.5rem;background-color:#fff;box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-collections-table.include-vertical-lines td:not(:last-child),.bb-collections-table.include-vertical-lines th:not(:last-child){border-right:1px solid hsl(213,8%,90%)}.bb-collections-table-footer{padding:.75rem 1rem;border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem;background-color:#fbf9f9;border-top:1px solid hsl(213,8%,90%)}.bb-collections-table-container{overflow-x:auto;position:relative}.bb-collections-table-container.loading>table>tbody,.bb-collections-table-container.loading>.bb-collections-table-info{animation:collectionsBlink 1s linear infinite}.bb-collections-table-container.loading:after{top:0;left:0;right:0;z-index:1;opacity:0;content:\"\";height:.25rem;position:absolute;will-change:left,right;background-color:#1565c1;animation:collectionsFadeIn .12s cubic-bezier(.65,.815,.735,.395) .4s forwards,collectionsIndeterminate 2.1s cubic-bezier(.65,.815,.735,.395) .4s infinite}.bb-collections-table-container>table{width:100%}.bb-collections-table-container>table th,.bb-collections-table-container>table td{padding:1rem;text-align:left;font-weight:400;font-size:.875rem}.bb-collections-table-container>table th.fit,.bb-collections-table-container>table td.fit{width:1%;white-space:nowrap}.bb-collections-table-container>table th.left,.bb-collections-table-container>table td.left{text-align:left}.bb-collections-table-container>table th.right,.bb-collections-table-container>table td.right{text-align:right}.bb-collections-table-container>table>thead{background-color:#fbf9f9;border-bottom:1px solid hsl(213,8%,90%)}.bb-collections-table-container>table>thead>tr>th{padding:1rem;color:#525252}.bb-collections-table-container>table>tbody>tr>td{color:#111}.bb-collections-table-container>table>tbody>tr:not(:last-child){border-bottom:1px solid hsl(213,8%,90%)}.bb-collections-table-info{padding:3rem 1.5rem}.bb-collections-table-info-text{color:#525252;margin:0 auto;display:block;line-height:2;max-width:30rem;text-align:center;font-size:.875rem}.bb-collections-table-info-text>strong{font-weight:500}.bb-collections-table-info-text>strong:before{content:\"\\201c\"}.bb-collections-table-info-text>strong:after{content:\"\\201d\"}.bb-collections-table-image{width:100%;height:auto;display:flex;max-width:7.5rem;margin:0 auto 1.5rem;background-size:contain;background-repeat:no-repeat;background-position:center center}.bb-collections-table-image.empty{aspect-ratio:154/132;-webkit-mask-image:linear-gradient(to bottom,black 25%,transparent 100%);mask-image:linear-gradient(to bottom,black 25%,transparent 100%);background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 154 132\"%3E%3Cg fill=\"none\" fill-rule=\"evenodd\"%3E%3Crect width=\"154\" height=\"40\" fill=\"%23FFF\" fill-rule=\"nonzero\" rx=\"8\"/%3E%3Crect width=\"24\" height=\"24\" x=\"8\" y=\"8\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"4\"/%3E%3Crect width=\"60\" height=\"6\" x=\"40\" y=\"11\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"106\" height=\"6\" x=\"40\" y=\"23\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"153\" height=\"39\" x=\".5\" y=\".5\" stroke=\"%23E5E7EB\" rx=\"7.5\"/%3E%3Cg transform=\"translate(0 46)\"%3E%3Crect width=\"154\" height=\"40\" fill=\"%23FFF\" fill-rule=\"nonzero\" rx=\"8\"/%3E%3Crect width=\"24\" height=\"24\" x=\"8\" y=\"8\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"4\"/%3E%3Crect width=\"60\" height=\"6\" x=\"40\" y=\"11\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"106\" height=\"6\" x=\"40\" y=\"23\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"153\" height=\"39\" x=\".5\" y=\".5\" stroke=\"%23E5E7EB\" rx=\"7.5\"/%3E%3C/g%3E%3Cg transform=\"translate(0 92)\"%3E%3Crect width=\"154\" height=\"40\" fill=\"%23FFF\" fill-rule=\"nonzero\" rx=\"8\"/%3E%3Crect width=\"24\" height=\"24\" x=\"8\" y=\"8\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"4\"/%3E%3Crect width=\"60\" height=\"6\" x=\"40\" y=\"11\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"106\" height=\"6\" x=\"40\" y=\"23\" fill=\"%23E5E7EB\" fill-rule=\"nonzero\" rx=\"3\"/%3E%3Crect width=\"153\" height=\"39\" x=\".5\" y=\".5\" stroke=\"%23E5E7EB\" rx=\"7.5\"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E')}.bb-collections-table-image.error{max-width:4rem;aspect-ratio:1;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 132 132\"%3E%3Cpath fill=\"%23C23934\" d=\"M65.958253 98.6024096c.8892771 0 1.6486747-.3008433 2.2781928-.9025301.6295181-.6016867.9442771-1.3471687.9442771-2.2364458 0-.8892771-.3008434-1.6486747-.9025301-2.2781927-.6016868-.6295181-1.3471687-.9442771-2.2364458-.9442771-.8892771 0-1.6486747.3008433-2.2781928.9025301-.6295181.6016867-.9442771 1.3471687-.9442771 2.2364458 0 .8892771.3008434 1.6486747.9025301 2.2781927.6016868.6295181 1.3471687.9442771 2.2364458.9442771Zm-1.9462048-21.4698795h3.9759036V29.4216867h-3.9759036v47.7108434ZM66.0894578 132c-9.0716867 0-17.6205421-1.715602-25.6465662-5.146807-8.0260241-3.431205-15.0547591-8.159217-21.0862049-14.184036-6.032771-6.02482-10.76674694-13.0416269-14.20192766-21.0504221C1.71825301 83.6086145 0 75.0504819 0 65.9443373 0 56.8368675 1.71560241 48.303253 5.14680723 40.343494c3.43120482-7.9597591 8.15921687-14.9553615 14.18403617-20.9868073 6.0248193-6.032771 13.0416265-10.76674694 21.0504217-14.20192766C48.3913855 1.71825301 56.9495181 0 66.0556627 0 75.1631325 0 83.696747 1.71560241 91.656506 5.14680723c7.9597591 3.43120482 14.955361 8.15921687 20.986807 14.18403617 6.032771 6.0248193 10.766747 13.0263855 14.201928 21.0046988C130.281747 48.3138554 132 56.8388554 132 65.9105422c0 9.0716867-1.715602 17.6205421-5.146807 25.6465662-3.431205 8.0260241-8.159217 15.0547586-14.184036 21.0862046-6.02482 6.032771-13.0263859 10.766747-21.0046992 14.201928C83.6861446 130.281747 75.1611446 132 66.0894578 132ZM66 128.024096c17.2289157 0 31.873494-6.03012 43.933735-18.090361C121.993976 97.873494 128.024096 83.2289157 128.024096 66c0-17.2289157-6.03012-31.873494-18.090361-43.9337349C97.873494 10.0060241 83.2289157 3.97590361 66 3.97590361c-17.2289157 0-31.873494 6.03012049-43.9337349 18.09036149C10.0060241 34.126506 3.97590361 48.7710843 3.97590361 66c0 17.2289157 6.03012049 31.873494 18.09036149 43.933735C34.126506 121.993976 48.7710843 128.024096 66 128.024096Z\"/%3E%3C/svg%3E')}@keyframes collectionsFadeIn{0%{opacity:0}to{opacity:1}}@keyframes collectionsIndeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}to{left:100%;right:-90%}}@keyframes collectionsBlink{25%{opacity:.6}50%{opacity:.4}75%{opacity:.6}}\n"] }]
60
+ }], propDecorators: { dataRowTemplate: [{
61
+ type: ContentChild,
62
+ args: [BbCollectionsDataRow, { read: TemplateRef, static: false }]
63
+ }], queryPlaceholder: [{
64
+ type: Input
65
+ }], emptyContent: [{
66
+ type: Input
67
+ }], noResultsContent: [{
68
+ type: Input
69
+ }], errorContent: [{
70
+ type: Input
71
+ }], trackByProperty: [{
72
+ type: Input
73
+ }], includeVerticalLines: [{
74
+ type: Input,
75
+ args: [{ transform: booleanAttribute }]
76
+ }], hideActions: [{
77
+ type: Input,
78
+ args: [{ transform: booleanAttribute }]
79
+ }], hidePager: [{
80
+ type: Input,
81
+ args: [{ transform: booleanAttribute }]
82
+ }], collection: [{
83
+ type: Input,
84
+ args: [{ required: true }]
85
+ }] } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtdGFibGUvY29sbGVjdGlvbnMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtdGFibGUvY29sbGVjdGlvbnMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUMsb0JBQW9CLEVBQThCLE1BQU0saURBQWlELENBQUM7QUFDbEgsT0FBTyxFQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBQzFGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ3ZGLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLGdEQUFnRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9B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ZSwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmJDb2xsZWN0aW9uc0RhdGFSb3csIEJiQ29sbGVjdGlvbnNEYXRhUm93Q29udGV4dH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb2xsZWN0aW9ucy1kYXRhLXJvdy5kaXJlY3RpdmUnO1xuaW1wb3J0IHtCYkxvY2FsaXplLCBCYkxvY2FsaXplU3RyaW5nLCBCYkxvY2FsaXplVGVtcGxhdGV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL2xvY2FsaXplJztcbmltcG9ydCB7QmJDb2xsZWN0aW9uc0FjdGlvbnN9IGZyb20gJy4uL2NvbGxlY3Rpb25zLWFjdGlvbnMvY29sbGVjdGlvbnMtYWN0aW9ucy5jb21wb25lbnQnO1xuaW1wb3J0IHtCYkNvbGxlY3Rpb25zVmlld2VyfSBmcm9tICcuLi9jb2xsZWN0aW9ucy12aWV3ZXIvY29sbGVjdGlvbnMtdmlld2VyLmNvbXBvbmVudCc7XG5pbXBvcnQge0JiQ29sbGVjdGlvbnNJbml0aWFsfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbGxlY3Rpb25zLWluaXRpYWwuZGlyZWN0aXZlJztcbmltcG9ydCB7QmJDb2xsZWN0aW9uc1BhZ2VyfSBmcm9tICcuLi9jb2xsZWN0aW9ucy1wYWdlci9jb2xsZWN0aW9ucy1wYWdlci5jb21wb25lbnQnO1xuaW1wb3J0IHtCYkNvbGxlY3Rpb25zRW1wdHl9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvY29sbGVjdGlvbnMtZW1wdHkuZGlyZWN0aXZlJztcbmltcG9ydCB7QmJDb2xsZWN0aW9uc0Vycm9yfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbGxlY3Rpb25zLWVycm9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0JiQ29sbGVjdGlvbnNEYXRhfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbGxlY3Rpb25zLWRhdGEuZGlyZWN0aXZlJztcbmltcG9ydCB7QXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCYlNwaW5uZXJ9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzJztcbmltcG9ydCB7QmJUZW1wbGF0ZX0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vdXRpbHMnO1xuaW1wb3J0IHtDb2xsZWN0aW9ufSBmcm9tICcuLi8uLi9jb2xsZWN0aW9uJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1jb2xsZWN0aW9ucy10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbGxlY3Rpb25zLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2xsZWN0aW9ucy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItY29sbGVjdGlvbnMtdGFibGUnLFxuICAgICAgICAnW2NsYXNzLmluY2x1ZGUtdmVydGljYWwtbGluZXNdJzogJ2luY2x1ZGVWZXJ0aWNhbExpbmVzJ1xuICAgIH0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIEJiQ29sbGVjdGlvbnNWaWV3ZXIsXG4gICAgICAgIEJiQ29sbGVjdGlvbnNEYXRhLFxuICAgICAgICBCYkNvbGxlY3Rpb25zRW1wdHksXG4gICAgICAgIEJiQ29sbGVjdGlvbnNFcnJvcixcbiAgICAgICAgQmJDb2xsZWN0aW9uc0luaXRpYWwsXG4gICAgICAgIEJiQ29sbGVjdGlvbnNBY3Rpb25zLFxuICAgICAgICBCYkNvbGxlY3Rpb25zUGFnZXIsXG4gICAgICAgIEJiTG9jYWxpemVTdHJpbmcsXG4gICAgICAgIEJiVGVtcGxhdGUsXG4gICAgICAgIEJiTG9jYWxpemUsXG4gICAgICAgIEJiTG9jYWxpemVUZW1wbGF0ZSxcbiAgICAgICAgQmJTcGlubmVyLFxuICAgICAgICBBc3luY1BpcGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIEJiQ29sbGVjdGlvbnNUYWJsZTxUPiB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHJlYWRvbmx5IGNvbGxlY3Rpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb2xsZWN0aW9uPFQ+IHwgbnVsbD4obnVsbCk7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAQ29udGVudENoaWxkKEJiQ29sbGVjdGlvbnNEYXRhUm93LCB7cmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogZmFsc2V9KSBkYXRhUm93VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxCYkNvbGxlY3Rpb25zRGF0YVJvd0NvbnRleHQ8VD4+O1xuXG4gICAgLy8gSW5wdXRzLlxuICAgIEBJbnB1dCgpIHF1ZXJ5UGxhY2Vob2xkZXI6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGVtcHR5Q29udGVudDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIG5vUmVzdWx0c0NvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBlcnJvckNvbnRlbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSB0cmFja0J5UHJvcGVydHk6IHN0cmluZyB8IG51bGwgPSAnaWQnO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgaW5jbHVkZVZlcnRpY2FsTGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIGhpZGVBY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBoaWRlUGFnZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KVxuICAgIHNldCBjb2xsZWN0aW9uKGNvbGxlY3Rpb246IENvbGxlY3Rpb248VD4pIHtcbiAgICAgICAgdGhpcy5jb2xsZWN0aW9uJC5uZXh0KGNvbGxlY3Rpb24pO1xuICAgIH1cblxuICAgIGdldCBjb2xsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2xsZWN0aW9uJC5nZXRWYWx1ZSgpO1xuICAgIH1cblxufVxuIiwiQGlmICghaGlkZUFjdGlvbnMpIHtcbiAgICA8YmItY29sbGVjdGlvbnMtYWN0aW9ucyBbY29sbGVjdGlvbl09XCJjb2xsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcXVlcnlQbGFjZWhvbGRlcl09XCJxdWVyeVBsYWNlaG9sZGVyXCI+XG4gICAgICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwiW2RhdGEtY29sbGVjdGlvbnMtYWN0aW9uXVwiXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdD1cIltkYXRhLWNvbGxlY3Rpb25zLWFjdGlvbl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwiW2RhdGEtY29sbGVjdGlvbnMtcm93XVwiXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdD1cIltkYXRhLWNvbGxlY3Rpb25zLXJvd11cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9iYi1jb2xsZWN0aW9ucy1hY3Rpb25zPlxufVxuXG48ZGl2IFtjb2xsZWN0aW9uXT1cImNvbGxlY3Rpb25cIlxuICAgICBbY2xhc3MubG9hZGluZ109XCJjb2xsZWN0aW9uPy5sb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy10YWJsZS1jb250YWluZXJcIlxuICAgICBiYi1jb2xsZWN0aW9ucy12aWV3ZXI+XG4gICAgPHRhYmxlICpiYkNvbGxlY3Rpb25zRGF0YT1cImxldCBpdGVtcyA9IGl0ZW1zOyBsZXQgbG9hZGluZyA9IGxvYWRpbmdcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidGhlYWRcIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXM7IHRyYWNrICh0cmFja0J5UHJvcGVydHkgPT09IG51bGwgPyAkaW5kZXggOiBpdGVtW3RyYWNrQnlQcm9wZXJ0eV0pKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRhdGFSb3dUZW1wbGF0ZTsgY29udGV4dDogeyRpbXBsaWNpdDogaXRlbSwgaXRlbTogaXRlbX1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwidGZvb3RcIj48L25nLWNvbnRlbnQ+XG4gICAgPC90YWJsZT5cbiAgICA8ZGl2ICpiYkNvbGxlY3Rpb25zRW1wdHk9XCJsZXQgcXVlcnkgPSBxdWVyeVwiXG4gICAgICAgICBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXRhYmxlLWluZm9cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXRhYmxlLWltYWdlIGVtcHR5XCI+PC9kaXY+XG4gICAgICAgIEBpZiAocXVlcnk/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJub1Jlc3VsdHNDb250ZW50XCI+XG4gICAgICAgICAgICAgICAgPHAgW2JiLWxvY2FsaXplLXN0cmluZ109XCIkYW55KG5vUmVzdWx0c0NvbnRlbnQpID8/ICgnY29sbGVjdGlvbi5ub19yZXN1bHRzX2xhYmVsJyB8IGJiTG9jYWxpemUpXCJcbiAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXRhYmxlLWluZm8tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3Ryb25nICpiYkxvY2FsaXplVGVtcGxhdGU9XCIncXVlcnknXCI+e3sgcXVlcnkgPz8gJy4uLicgfX08L3N0cm9uZz5cbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJlbXB0eUNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXRhYmxlLWluZm8tdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAkYW55KGVtcHR5Q29udGVudCkgPz8gKCdjb2xsZWN0aW9uLmVtcHR5X2xhYmVsJyB8IGJiTG9jYWxpemUpIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXYgKmJiQ29sbGVjdGlvbnNFcnJvcj1cImxldCBlcnJvciA9IGVycm9yXCJcbiAgICAgICAgIGNsYXNzPVwiYmItY29sbGVjdGlvbnMtdGFibGUtaW5mb1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmItY29sbGVjdGlvbnMtdGFibGUtaW1hZ2UgZXJyb3JcIj48L2Rpdj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImVycm9yQ29udGVudFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy10YWJsZS1pbmZvLXRleHRcIj5cbiAgICAgICAgICAgICAgICB7eyAkYW55KGVycm9yQ29udGVudCkgPz8gKCdjb2xsZWN0aW9uLmVycm9yX2xhYmVsJyB8IGJiTG9jYWxpemUpIH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqYmJDb2xsZWN0aW9uc0luaXRpYWxcbiAgICAgICAgIGNsYXNzPVwiYmItY29sbGVjdGlvbnMtdGFibGUtaW5mb1wiPlxuICAgICAgICA8YmItc3Bpbm5lciBjbGFzcz1cImJsb2NrXCI+PC9iYi1zcGlubmVyPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbkBpZiAoIWhpZGVQYWdlcikge1xuICAgIDxmb290ZXIgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy10YWJsZS1mb290ZXJcIj5cbiAgICAgICAgPGJiLWNvbGxlY3Rpb25zLXBhZ2VyIFtjb2xsZWN0aW9uXT1cImNvbGxlY3Rpb25cIj48L2JiLWNvbGxlY3Rpb25zLXBhZ2VyPlxuICAgIDwvZm9vdGVyPlxufVxuIl19
@@ -0,0 +1,33 @@
1
+ import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
2
+ import { BbAvatar } from '@bravobit/bb-foundation/elements';
3
+ import * as i0 from "@angular/core";
4
+ export class BbCollectionsTableLabel {
5
+ constructor() {
6
+ // Inputs.
7
+ this.titleLabel = null;
8
+ this.descriptionLabel = null;
9
+ this.imageUrl = null;
10
+ this.alt = null;
11
+ this.type = 'image';
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCollectionsTableLabel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.5", type: BbCollectionsTableLabel, isStandalone: true, selector: "[bb-collections-table-label]", inputs: { titleLabel: "titleLabel", descriptionLabel: "descriptionLabel", imageUrl: "imageUrl", alt: "alt", type: "type" }, host: { classAttribute: "bb-collections-table-label" }, ngImport: i0, template: "@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", styles: [".bb-collections-table-label{align-items:center;display:inline-flex}a.bb-collections-table-label{text-decoration:none}a.bb-collections-table-label>.bb-collections-table-label-content>.bb-collections-table-label-title,a.bb-collections-table-label:visited>.bb-collections-table-label-content>.bb-collections-table-label-title{text-underline-offset:.25rem;text-decoration-thickness:1px;text-decoration:dotted underline;color:var(--bb-collections-table-label-color)}a.bb-collections-table-label>.bb-collections-table-label-content>.bb-collections-table-label-description,a.bb-collections-table-label:visited>.bb-collections-table-label-content>.bb-collections-table-label-description{color:#758795}a.bb-collections-table-label:hover>.bb-collections-table-label-content>.bb-collections-table-label-title,a.bb-collections-table-label:focus>.bb-collections-table-label-content>.bb-collections-table-label-title{text-decoration-style:solid}.bb-collections-table-label-image,.bb-collections-table-label-avatar{width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin-right:.5rem}.bb-collections-table-label-image{background-size:contain;background-repeat:no-repeat;background-position:center center}.bb-collections-table-label-content{display:block}.bb-collections-table-label-title{display:block;color:#111;font-size:.875rem}.bb-collections-table-label-description{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "component", type: BbAvatar, selector: "bb-avatar", inputs: ["size", "src", "title", "tintColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCollectionsTableLabel, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: '[bb-collections-table-label]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-collections-table-label' }, preserveWhitespaces: false, imports: [
19
+ BbAvatar
20
+ ], standalone: true, template: "@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", styles: [".bb-collections-table-label{align-items:center;display:inline-flex}a.bb-collections-table-label{text-decoration:none}a.bb-collections-table-label>.bb-collections-table-label-content>.bb-collections-table-label-title,a.bb-collections-table-label:visited>.bb-collections-table-label-content>.bb-collections-table-label-title{text-underline-offset:.25rem;text-decoration-thickness:1px;text-decoration:dotted underline;color:var(--bb-collections-table-label-color)}a.bb-collections-table-label>.bb-collections-table-label-content>.bb-collections-table-label-description,a.bb-collections-table-label:visited>.bb-collections-table-label-content>.bb-collections-table-label-description{color:#758795}a.bb-collections-table-label:hover>.bb-collections-table-label-content>.bb-collections-table-label-title,a.bb-collections-table-label:focus>.bb-collections-table-label-content>.bb-collections-table-label-title{text-decoration-style:solid}.bb-collections-table-label-image,.bb-collections-table-label-avatar{width:2rem;height:2rem;min-width:2rem;min-height:2rem;margin-right:.5rem}.bb-collections-table-label-image{background-size:contain;background-repeat:no-repeat;background-position:center center}.bb-collections-table-label-content{display:block}.bb-collections-table-label-title{display:block;color:#111;font-size:.875rem}.bb-collections-table-label-description{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
21
+ }], propDecorators: { titleLabel: [{
22
+ type: Input,
23
+ args: [{ required: true }]
24
+ }], descriptionLabel: [{
25
+ type: Input
26
+ }], imageUrl: [{
27
+ type: Input
28
+ }], alt: [{
29
+ type: Input
30
+ }], type: [{
31
+ type: Input
32
+ }] } });
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMtdGFibGUtbGFiZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtdGFibGUtbGFiZWwvY29sbGVjdGlvbnMtdGFibGUtbGFiZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtdGFibGUtbGFiZWwvY29sbGVjdGlvbnMtdGFibGUtbGFiZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDeEcsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGtDQUFrQyxDQUFDOztBQWUxRCxNQUFNLE9BQU8sdUJBQXVCO0lBYnBDO1FBZUksVUFBVTtRQUNlLGVBQVUsR0FBcUMsSUFBSSxDQUFDO1FBQ3BFLHFCQUFnQixHQUFxQyxJQUFJLENBQUM7UUFDMUQsYUFBUSxHQUFrQixJQUFJLENBQUM7UUFDL0IsUUFBRyxHQUFrQixJQUFJLENBQUM7UUFDMUIsU0FBSSxHQUFtQyxPQUFPLENBQUM7S0FFM0Q7OEdBVFksdUJBQXVCO2tHQUF2Qix1QkFBdUIsNFFDaEJwQyxneUJBeUJBLDY5Q0RiUSxRQUFROzsyRkFJSCx1QkFBdUI7a0JBYm5DLFNBQVM7K0JBQ0ksOEJBQThCLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUMsT0FBTyxFQUFFLDRCQUE0QixFQUFDLHVCQUN4QixLQUFLLFdBQ2pCO3dCQUNMLFFBQVE7cUJBQ1gsY0FDVyxJQUFJOzhCQUtTLFVBQVU7c0JBQWxDLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUNkLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYkF2YXRhcn0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vZWxlbWVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ1tiYi1jb2xsZWN0aW9ucy10YWJsZS1sYWJlbF0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xsZWN0aW9ucy10YWJsZS1sYWJlbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sbGVjdGlvbnMtdGFibGUtbGFiZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHsnY2xhc3MnOiAnYmItY29sbGVjdGlvbnMtdGFibGUtbGFiZWwnfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEJiQXZhdGFyXG4gICAgXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEJiQ29sbGVjdGlvbnNUYWJsZUxhYmVsIHtcblxuICAgIC8vIElucHV0cy5cbiAgICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgdGl0bGVMYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGRlc2NyaXB0aW9uTGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBpbWFnZVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgYWx0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSB0eXBlOiAnaW1hZ2UnIHwgJ2F2YXRhcicgfCAnY29udGVudCcgPSAnaW1hZ2UnO1xuXG59XG4iLCJAc3dpdGNoICh0eXBlKSB7XG4gICAgQGNhc2UgKCdhdmF0YXInKSB7XG4gICAgICAgIDxiYi1hdmF0YXIgW3RpdGxlXT1cImFsdCA/PyAnLi4uJ1wiXG4gICAgICAgICAgICAgICAgICAgW3NyY109XCJpbWFnZVVybFwiXG4gICAgICAgICAgICAgICAgICAgW3NpemVdPVwiMlwiXG4gICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy10YWJsZS1sYWJlbC1hdmF0YXJcIj5cbiAgICAgICAgPC9iYi1hdmF0YXI+XG4gICAgfVxuICAgIEBjYXNlICgnY29udGVudCcpIHtcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIH1cbiAgICBAZGVmYXVsdCB7XG4gICAgICAgIEBpZiAoaW1hZ2VVcmw7IGFzIHNyYykge1xuICAgICAgICAgICAgPGRpdiBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCIndXJsKCcgKyBzcmMgKyAnKSdcIlxuICAgICAgICAgICAgICAgICBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXRhYmxlLWxhYmVsLWltYWdlXCI+PC9kaXY+XG4gICAgICAgIH1cbiAgICB9XG59XG5cbjxkaXYgY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy10YWJsZS1sYWJlbC1jb250ZW50XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJiYi1jb2xsZWN0aW9ucy10YWJsZS1sYWJlbC10aXRsZVwiPnt7IHRpdGxlTGFiZWwgfX08L3NwYW4+XG4gICAgQGlmIChkZXNjcmlwdGlvbkxhYmVsKSB7XG4gICAgICAgIDxzbWFsbCBjbGFzcz1cImJiLWNvbGxlY3Rpb25zLXRhYmxlLWxhYmVsLWRlc2NyaXB0aW9uXCI+e3sgZGVzY3JpcHRpb25MYWJlbCB9fTwvc21hbGw+XG4gICAgfVxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,62 @@
1
+ import { Attribute, ChangeDetectionStrategy, Component, HostListener, Optional, ViewEncapsulation } from '@angular/core';
2
+ import { distinctUntilChanged, map, switchMap } from 'rxjs/operators';
3
+ import { getControlValue } from '@bravobit/bb-foundation/rxjs';
4
+ import { Subscription } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../collections-table/collections-table.component";
7
+ export class BbCollectionsTableSorting {
8
+ constructor(_name, _changeDetectorRef, _parent) {
9
+ this._name = _name;
10
+ this._changeDetectorRef = _changeDetectorRef;
11
+ this._parent = _parent;
12
+ // Readonly data.
13
+ this.orderedOptions = [null, 'asc', 'desc'];
14
+ // State.
15
+ this.direction = null;
16
+ // Subscription.
17
+ this._subscription = new Subscription();
18
+ }
19
+ ngOnInit() {
20
+ const direction$ = this._parent.collection$.pipe(switchMap(collection => getControlValue(collection.sortControl)), map(value => Array.isArray(value) ? value : [value]), map(value => value?.find(item => item?.name === this._name)), map(sorting => sorting?.direction ?? null), distinctUntilChanged());
21
+ const subscription = direction$.subscribe(direction => {
22
+ this.direction = direction;
23
+ this._changeDetectorRef.markForCheck();
24
+ });
25
+ this._subscription.add(subscription);
26
+ }
27
+ ngOnDestroy() {
28
+ this._subscription?.unsubscribe();
29
+ }
30
+ onClick() {
31
+ if (!this._name) {
32
+ return;
33
+ }
34
+ const nextDirection = this.getNextOption(this.direction);
35
+ const controlValue = nextDirection === null ? null : { name: this._name, direction: nextDirection };
36
+ this._parent?.collection?.sortControl?.setValue(controlValue);
37
+ }
38
+ getNextOption(direction) {
39
+ const index = this.orderedOptions.findIndex(item => item === direction);
40
+ const newIndex = (index + 1) % this.orderedOptions?.length;
41
+ return this.orderedOptions?.[newIndex] ?? null;
42
+ }
43
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCollectionsTableSorting, deps: [{ token: 'bb-collections-table-sorting', attribute: true }, { token: i0.ChangeDetectorRef }, { token: i1.BbCollectionsTable, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.5", type: BbCollectionsTableSorting, isStandalone: true, selector: "th[bb-collections-table-sorting]", host: { listeners: { "click": "onClick()" }, properties: { "class.asc": "direction === 'asc'", "class.desc": "direction === 'desc'" }, classAttribute: "bb-collections-table-sorting" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bb-collections-table-sorting{cursor:pointer;-webkit-user-select:none;user-select:none;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E');background-repeat:no-repeat;padding-right:2.5rem!important;background-size:.5625rem .9375rem;background-position:center right 1rem;transition:background-color .12s cubic-bezier(0,0,.2,1)}.bb-collections-table-sorting:hover,.bb-collections-table-sorting:focus{background-color:#f4f0f0}.bb-collections-table-sorting:active{background-color:#f0ebeb}.bb-collections-table-sorting.asc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"black\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}.bb-collections-table-sorting.desc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"black\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: BbCollectionsTableSorting, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'th[bb-collections-table-sorting]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
49
+ 'class': 'bb-collections-table-sorting',
50
+ '[class.asc]': 'direction === \'asc\'',
51
+ '[class.desc]': 'direction === \'desc\''
52
+ }, preserveWhitespaces: false, standalone: true, template: "<ng-content></ng-content>\n", styles: [".bb-collections-table-sorting{cursor:pointer;-webkit-user-select:none;user-select:none;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E');background-repeat:no-repeat;padding-right:2.5rem!important;background-size:.5625rem .9375rem;background-position:center right 1rem;transition:background-color .12s cubic-bezier(0,0,.2,1)}.bb-collections-table-sorting:hover,.bb-collections-table-sorting:focus{background-color:#f4f0f0}.bb-collections-table-sorting:active{background-color:#f0ebeb}.bb-collections-table-sorting.asc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"black\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}.bb-collections-table-sorting.desc{background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 9 15\" width=\"9\" height=\"15\"%3E%3Cpath fill=\"%23dcdcdc\" d=\"M4.5 0L0 7h9z\"%3E%3C/path%3E%3Cpath fill=\"black\" d=\"M4.5 15L9 8H0z\"%3E%3C/path%3E%3C/svg%3E')}\n"] }]
53
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
54
+ type: Attribute,
55
+ args: ['bb-collections-table-sorting']
56
+ }] }, { type: i0.ChangeDetectorRef }, { type: i1.BbCollectionsTable, decorators: [{
57
+ type: Optional
58
+ }] }], propDecorators: { onClick: [{
59
+ type: HostListener,
60
+ args: ['click']
61
+ }] } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sbGVjdGlvbnMtdGFibGUtc29ydGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2NvbGxlY3Rpb25zL3NyYy9saWIvY29tcG9uZW50cy9jb2xsZWN0aW9ucy10YWJsZS1zb3J0aW5nL2NvbGxlY3Rpb25zLXRhYmxlLXNvcnRpbmcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb2xsZWN0aW9ucy9zcmMvbGliL2NvbXBvbmVudHMvY29sbGVjdGlvbnMtdGFibGUtc29ydGluZy9jb2xsZWN0aW9ucy10YWJsZS1zb3J0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQXFCLFFBQVEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3SixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7QUFnQmxDLE1BQU0sT0FBTyx5QkFBeUI7SUFXbEMsWUFBK0QsS0FBYSxFQUN4RCxrQkFBcUMsRUFDekIsT0FBcUM7UUFGTixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ3hELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBOEI7UUFYckUsaUJBQWlCO1FBQ1IsbUJBQWMsR0FBMEIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXZFLFNBQVM7UUFDVCxjQUFTLEdBQTBCLElBQUksQ0FB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ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JiQ29sbGVjdGlvbnNUYWJsZX0gZnJvbSAnLi4vY29sbGVjdGlvbnMtdGFibGUvY29sbGVjdGlvbnMtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7ZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3dpdGNoTWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge2dldENvbnRyb2xWYWx1ZX0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vcnhqcyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhbYmItY29sbGVjdGlvbnMtdGFibGUtc29ydGluZ10nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xsZWN0aW9ucy10YWJsZS1zb3J0aW5nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2xsZWN0aW9ucy10YWJsZS1zb3J0aW5nLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1jb2xsZWN0aW9ucy10YWJsZS1zb3J0aW5nJyxcbiAgICAgICAgJ1tjbGFzcy5hc2NdJzogJ2RpcmVjdGlvbiA9PT0gXFwnYXNjXFwnJyxcbiAgICAgICAgJ1tjbGFzcy5kZXNjXSc6ICdkaXJlY3Rpb24gPT09IFxcJ2Rlc2NcXCcnXG4gICAgfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIEJiQ29sbGVjdGlvbnNUYWJsZVNvcnRpbmcgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHJlYWRvbmx5IG9yZGVyZWRPcHRpb25zOiBbbnVsbCwgJ2FzYycsICdkZXNjJ10gPSBbbnVsbCwgJ2FzYycsICdkZXNjJ107XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCA9IG51bGw7XG5cbiAgICAvLyBTdWJzY3JpcHRpb24uXG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgY29uc3RydWN0b3IoQEF0dHJpYnV0ZSgnYmItY29sbGVjdGlvbnMtdGFibGUtc29ydGluZycpIHByaXZhdGUgX25hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGFyZW50PzogQmJDb2xsZWN0aW9uc1RhYmxlPHVua25vd24+KSB7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGRpcmVjdGlvbiQgPSB0aGlzLl9wYXJlbnQuY29sbGVjdGlvbiQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcChjb2xsZWN0aW9uID0+IGdldENvbnRyb2xWYWx1ZShjb2xsZWN0aW9uLnNvcnRDb250cm9sKSksXG4gICAgICAgICAgICBtYXAodmFsdWUgPT4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZSA6IFt2YWx1ZV0pLFxuICAgICAgICAgICAgbWFwKHZhbHVlID0+IHZhbHVlPy5maW5kKGl0ZW0gPT4gaXRlbT8ubmFtZSA9PT0gdGhpcy5fbmFtZSkpLFxuICAgICAgICAgICAgbWFwKHNvcnRpbmcgPT4gc29ydGluZz8uZGlyZWN0aW9uID8/IG51bGwpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBkaXJlY3Rpb24kLnN1YnNjcmliZShkaXJlY3Rpb24gPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgICBvbkNsaWNrKCkge1xuICAgICAgICBpZiAoIXRoaXMuX25hbWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5leHREaXJlY3Rpb24gPSB0aGlzLmdldE5leHRPcHRpb24odGhpcy5kaXJlY3Rpb24pO1xuICAgICAgICBjb25zdCBjb250cm9sVmFsdWUgPSBuZXh0RGlyZWN0aW9uID09PSBudWxsID8gbnVsbCA6IHtuYW1lOiB0aGlzLl9uYW1lLCBkaXJlY3Rpb246IG5leHREaXJlY3Rpb259O1xuICAgICAgICB0aGlzLl9wYXJlbnQ/LmNvbGxlY3Rpb24/LnNvcnRDb250cm9sPy5zZXRWYWx1ZShjb250cm9sVmFsdWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TmV4dE9wdGlvbihkaXJlY3Rpb246IHN0cmluZykge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMub3JkZXJlZE9wdGlvbnMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbSA9PT0gZGlyZWN0aW9uKTtcbiAgICAgICAgY29uc3QgbmV3SW5kZXggPSAoaW5kZXggKyAxKSAlIHRoaXMub3JkZXJlZE9wdGlvbnM/Lmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJlZE9wdGlvbnM/LltuZXdJbmRleF0gPz8gbnVsbDtcbiAgICB9XG5cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==