@bravobit/bb-foundation 0.45.4 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) hide show
  1. package/auth/lib/auth.config.d.ts +0 -2
  2. package/auth/lib/auth.service.d.ts +1 -1
  3. package/auth/lib/directives/authenticated.directive.d.ts +1 -1
  4. package/collections/lib/directives/collections-data-row.directive.d.ts +1 -1
  5. package/collections/lib/directives/collections-data.directive.d.ts +1 -1
  6. package/collections/lib/directives/collections-empty.directive.d.ts +1 -1
  7. package/collections/lib/directives/collections-error.directive.d.ts +1 -1
  8. package/collections/lib/directives/collections-initial.directive.d.ts +1 -1
  9. package/collections/lib/directives/collections-item.directive.d.ts +1 -1
  10. package/dialog/lib/dialog-container/dialog-container.component.d.ts +1 -0
  11. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +1 -0
  12. package/fesm2022/bravobit-bb-foundation-auth.mjs +44 -50
  13. package/fesm2022/bravobit-bb-foundation-auth.mjs.map +1 -1
  14. package/fesm2022/bravobit-bb-foundation-collections.mjs +69 -75
  15. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  16. package/fesm2022/bravobit-bb-foundation-combobox.mjs +21 -24
  17. package/fesm2022/bravobit-bb-foundation-combobox.mjs.map +1 -1
  18. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +35 -35
  19. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  20. package/fesm2022/bravobit-bb-foundation-dialog.mjs +63 -47
  21. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  22. package/fesm2022/bravobit-bb-foundation-elements.mjs +119 -131
  23. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  24. package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
  25. package/fesm2022/bravobit-bb-foundation-http.mjs.map +1 -1
  26. package/fesm2022/bravobit-bb-foundation-localize.mjs +25 -32
  27. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  28. package/fesm2022/bravobit-bb-foundation-masking.mjs +19 -22
  29. package/fesm2022/bravobit-bb-foundation-masking.mjs.map +1 -1
  30. package/fesm2022/bravobit-bb-foundation-notifications.mjs +15 -17
  31. package/fesm2022/bravobit-bb-foundation-notifications.mjs.map +1 -1
  32. package/fesm2022/bravobit-bb-foundation-permissions.mjs +11 -12
  33. package/fesm2022/bravobit-bb-foundation-permissions.mjs.map +1 -1
  34. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +11 -11
  35. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs.map +1 -1
  36. package/fesm2022/bravobit-bb-foundation-rxjs.mjs.map +1 -1
  37. package/fesm2022/bravobit-bb-foundation-select.mjs +26 -30
  38. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
  39. package/fesm2022/bravobit-bb-foundation-storage.mjs +16 -8
  40. package/fesm2022/bravobit-bb-foundation-storage.mjs.map +1 -1
  41. package/fesm2022/bravobit-bb-foundation-table.mjs +29 -31
  42. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  43. package/fesm2022/bravobit-bb-foundation-tooltip.mjs +12 -13
  44. package/fesm2022/bravobit-bb-foundation-tooltip.mjs.map +1 -1
  45. package/fesm2022/bravobit-bb-foundation-utils.mjs +20 -24
  46. package/fesm2022/bravobit-bb-foundation-utils.mjs.map +1 -1
  47. package/fesm2022/bravobit-bb-foundation.mjs +21 -21
  48. package/fesm2022/bravobit-bb-foundation.mjs.map +1 -1
  49. package/localize/lib/localize.config.d.ts +0 -1
  50. package/localize/lib/localize.service.d.ts +1 -1
  51. package/localize/lib/views/localize-template.directive.d.ts +1 -1
  52. package/masking/lib/masking.service.d.ts +2 -2
  53. package/notifications/lib/notifications-list/notifications-list.component.d.ts +1 -2
  54. package/package.json +25 -63
  55. package/permissions/lib/directives/permission.directive.d.ts +1 -1
  56. package/storage/lib/interfaces/strategy.interface.d.ts +1 -1
  57. package/table/lib/components/table/table.component.d.ts +2 -2
  58. package/esm2022/auth/bravobit-bb-foundation-auth.mjs +0 -5
  59. package/esm2022/auth/lib/auth.config.mjs +0 -16
  60. package/esm2022/auth/lib/auth.interceptor.mjs +0 -87
  61. package/esm2022/auth/lib/auth.module.mjs +0 -25
  62. package/esm2022/auth/lib/auth.service.mjs +0 -261
  63. package/esm2022/auth/lib/auth.session.mjs +0 -142
  64. package/esm2022/auth/lib/directives/authenticated.directive.mjs +0 -78
  65. package/esm2022/auth/lib/guards/anonymous.guard.mjs +0 -29
  66. package/esm2022/auth/lib/guards/authenticated.guard.mjs +0 -32
  67. package/esm2022/auth/lib/helpers/jwt.helper.mjs +0 -67
  68. package/esm2022/auth/lib/interfaces/config.interface.mjs +0 -4
  69. package/esm2022/auth/lib/interfaces/provider.interface.mjs +0 -2
  70. package/esm2022/auth/lib/interfaces/token.interface.mjs +0 -2
  71. package/esm2022/auth/lib/providers/email.provider.mjs +0 -27
  72. package/esm2022/auth/lib/providers/verify.provider.mjs +0 -25
  73. package/esm2022/auth/lib/tokens/use-authorization.token.mjs +0 -3
  74. package/esm2022/auth/public_api.mjs +0 -15
  75. package/esm2022/bravobit-bb-foundation.mjs +0 -5
  76. package/esm2022/collections/bravobit-bb-foundation-collections.mjs +0 -5
  77. package/esm2022/collections/lib/classes/array.collection.mjs +0 -85
  78. package/esm2022/collections/lib/collection.mjs +0 -98
  79. package/esm2022/collections/lib/collections.module.mjs +0 -84
  80. package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +0 -37
  81. package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +0 -52
  82. package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +0 -114
  83. package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +0 -86
  84. package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +0 -30
  85. package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +0 -65
  86. package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +0 -37
  87. package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +0 -29
  88. package/esm2022/collections/lib/directives/collections-data.directive.mjs +0 -29
  89. package/esm2022/collections/lib/directives/collections-empty.directive.mjs +0 -29
  90. package/esm2022/collections/lib/directives/collections-error.directive.mjs +0 -29
  91. package/esm2022/collections/lib/directives/collections-initial.directive.mjs +0 -23
  92. package/esm2022/collections/lib/directives/collections-item.directive.mjs +0 -29
  93. package/esm2022/collections/lib/interfaces/array-collection.interface.mjs +0 -2
  94. package/esm2022/collections/lib/interfaces/collection.interface.mjs +0 -2
  95. package/esm2022/collections/lib/providers/api-collection.provider.mjs +0 -103
  96. package/esm2022/collections/lib/providers/collection.provider.mjs +0 -39
  97. package/esm2022/collections/lib/providers/local-collection.provider.mjs +0 -25
  98. package/esm2022/collections/public_api.mjs +0 -22
  99. package/esm2022/combobox/bravobit-bb-foundation-combobox.mjs +0 -5
  100. package/esm2022/combobox/combobox/combobox-container.directive.mjs +0 -137
  101. package/esm2022/combobox/combobox/combobox.component.mjs +0 -118
  102. package/esm2022/combobox/combobox-label.directive.mjs +0 -14
  103. package/esm2022/combobox/combobox-option.directive.mjs +0 -17
  104. package/esm2022/combobox/combobox-panel/combobox-panel.animation.mjs +0 -11
  105. package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +0 -42
  106. package/esm2022/combobox/combobox.interface.mjs +0 -2
  107. package/esm2022/combobox/public_api.mjs +0 -4
  108. package/esm2022/dashboard/bravobit-bb-foundation-dashboard.mjs +0 -5
  109. package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +0 -50
  110. package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +0 -25
  111. package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +0 -28
  112. package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +0 -32
  113. package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +0 -75
  114. package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +0 -93
  115. package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +0 -60
  116. package/esm2022/dashboard/lib/dashboard.module.mjs +0 -50
  117. package/esm2022/dashboard/public_api.mjs +0 -9
  118. package/esm2022/dialog/bravobit-bb-foundation-dialog.mjs +0 -5
  119. package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +0 -12
  120. package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +0 -44
  121. package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +0 -58
  122. package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +0 -15
  123. package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +0 -11
  124. package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +0 -57
  125. package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +0 -53
  126. package/esm2022/dialog/lib/dialog.config.mjs +0 -8
  127. package/esm2022/dialog/lib/dialog.insertion.mjs +0 -18
  128. package/esm2022/dialog/lib/dialog.interfaces.mjs +0 -9
  129. package/esm2022/dialog/lib/dialog.module.mjs +0 -64
  130. package/esm2022/dialog/lib/dialog.ref.mjs +0 -16
  131. package/esm2022/dialog/lib/dialog.service.mjs +0 -75
  132. package/esm2022/dialog/lib/directives/confirm.directive.mjs +0 -48
  133. package/esm2022/dialog/public_api.mjs +0 -12
  134. package/esm2022/elements/bravobit-bb-foundation-elements.mjs +0 -5
  135. package/esm2022/elements/lib/avatar/avatar.component.mjs +0 -175
  136. package/esm2022/elements/lib/button/button.component.mjs +0 -68
  137. package/esm2022/elements/lib/checkbox/checkbox.component.mjs +0 -116
  138. package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +0 -34
  139. package/esm2022/elements/lib/date-picker/date-picker.component.mjs +0 -323
  140. package/esm2022/elements/lib/directives/addon.directive.mjs +0 -27
  141. package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +0 -41
  142. package/esm2022/elements/lib/directives/file-drop.directive.mjs +0 -62
  143. package/esm2022/elements/lib/directives/form-submit.directive.mjs +0 -54
  144. package/esm2022/elements/lib/directives/form-submitter.directive.mjs +0 -24
  145. package/esm2022/elements/lib/directives/image-upload.directive.mjs +0 -143
  146. package/esm2022/elements/lib/directives/input.directive.mjs +0 -49
  147. package/esm2022/elements/lib/elements.config.mjs +0 -54
  148. package/esm2022/elements/lib/elements.interfaces.mjs +0 -5
  149. package/esm2022/elements/lib/elements.module.mjs +0 -146
  150. package/esm2022/elements/lib/file-picker/file-picker.component.mjs +0 -196
  151. package/esm2022/elements/lib/form-control/form-control.component.mjs +0 -46
  152. package/esm2022/elements/lib/form-error/form-error.component.mjs +0 -106
  153. package/esm2022/elements/lib/form-group/form-group.component.mjs +0 -19
  154. package/esm2022/elements/lib/icon/icon.component.mjs +0 -122
  155. package/esm2022/elements/lib/image-picker/image-picker.component.mjs +0 -126
  156. package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +0 -149
  157. package/esm2022/elements/lib/pipes/date.pipe.mjs +0 -28
  158. package/esm2022/elements/lib/pipes/file-image.pipe.mjs +0 -48
  159. package/esm2022/elements/lib/pipes/file-size.pipe.mjs +0 -27
  160. package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +0 -99
  161. package/esm2022/elements/lib/radio-button/radio-button.component.mjs +0 -60
  162. package/esm2022/elements/lib/radio-group/radio-group.component.mjs +0 -103
  163. package/esm2022/elements/lib/spinner/spinner.component.mjs +0 -22
  164. package/esm2022/elements/public_api.mjs +0 -30
  165. package/esm2022/http/bravobit-bb-foundation-http.mjs +0 -5
  166. package/esm2022/http/lib/classes/http.config.mjs +0 -32
  167. package/esm2022/http/lib/classes/http.error.mjs +0 -20
  168. package/esm2022/http/lib/http.config.mjs +0 -18
  169. package/esm2022/http/lib/http.interfaces.mjs +0 -4
  170. package/esm2022/http/lib/http.module.mjs +0 -31
  171. package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +0 -60
  172. package/esm2022/http/lib/interceptors/error.interceptor.mjs +0 -31
  173. package/esm2022/http/public_api.mjs +0 -8
  174. package/esm2022/lib/core/functions/array.utils.mjs +0 -7
  175. package/esm2022/lib/core/functions/date.utils.mjs +0 -31
  176. package/esm2022/lib/core/functions/password.utils.mjs +0 -17
  177. package/esm2022/lib/core/functions/route-cache.utils.mjs +0 -23
  178. package/esm2022/lib/core/miscellaneous/coercion.mjs +0 -5
  179. package/esm2022/lib/core/miscellaneous/regex.mjs +0 -44
  180. package/esm2022/lib/core/miscellaneous/validator.mjs +0 -85
  181. package/esm2022/lib/core/services/exif.service.mjs +0 -165
  182. package/esm2022/lib/core/services/file-loader.service.mjs +0 -85
  183. package/esm2022/lib/core/services/files.service.mjs +0 -78
  184. package/esm2022/lib/core/services/image-converter.service.mjs +0 -126
  185. package/esm2022/lib/core/services/languages.service.mjs +0 -75
  186. package/esm2022/lib/core/services/network.service.mjs +0 -58
  187. package/esm2022/lib/core/services/patch.service.mjs +0 -66
  188. package/esm2022/lib/core/tokens/accept-language.token.mjs +0 -3
  189. package/esm2022/lib/core/tokens/base-url.token.mjs +0 -3
  190. package/esm2022/lib/core/tokens/cookie.token.mjs +0 -3
  191. package/esm2022/lib/core/tokens/global-focus-mode.token.mjs +0 -10
  192. package/esm2022/lib/core/tokens/location.token.mjs +0 -6
  193. package/esm2022/lib/core/tokens/navigator.token.mjs +0 -6
  194. package/esm2022/lib/core/tokens/window.token.mjs +0 -12
  195. package/esm2022/localize/bravobit-bb-foundation-localize.mjs +0 -5
  196. package/esm2022/localize/lib/dictionary/dictionary.class.mjs +0 -96
  197. package/esm2022/localize/lib/dictionary/dictionary.context.mjs +0 -24
  198. package/esm2022/localize/lib/dictionary/dictionary.data.mjs +0 -7
  199. package/esm2022/localize/lib/functions/date.function.mjs +0 -18
  200. package/esm2022/localize/lib/functions/lowercase.function.mjs +0 -13
  201. package/esm2022/localize/lib/functions/uppercase.function.mjs +0 -13
  202. package/esm2022/localize/lib/handlers/missing.handler.mjs +0 -13
  203. package/esm2022/localize/lib/interfaces/config.interfaces.mjs +0 -2
  204. package/esm2022/localize/lib/interfaces/functions.interfaces.mjs +0 -8
  205. package/esm2022/localize/lib/interfaces/handlers.interfaces.mjs +0 -2
  206. package/esm2022/localize/lib/interfaces/options.interfaces.mjs +0 -6
  207. package/esm2022/localize/lib/localizations/dutch.localization.mjs +0 -64
  208. package/esm2022/localize/lib/localizations/english.localization.mjs +0 -64
  209. package/esm2022/localize/lib/localizations/papiamento.localization.mjs +0 -64
  210. package/esm2022/localize/lib/localizations/spanish.localization.mjs +0 -64
  211. package/esm2022/localize/lib/localize.config.mjs +0 -43
  212. package/esm2022/localize/lib/localize.module.mjs +0 -39
  213. package/esm2022/localize/lib/localize.pipe.mjs +0 -48
  214. package/esm2022/localize/lib/localize.service.mjs +0 -172
  215. package/esm2022/localize/lib/localize.tokens.mjs +0 -18
  216. package/esm2022/localize/lib/transforms/abstract.transform.mjs +0 -30
  217. package/esm2022/localize/lib/transforms/interpolate.transform.mjs +0 -45
  218. package/esm2022/localize/lib/transforms/plural.transform.mjs +0 -49
  219. package/esm2022/localize/lib/transforms/reference.transform.mjs +0 -19
  220. package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +0 -89
  221. package/esm2022/localize/lib/views/localize-template.directive.mjs +0 -23
  222. package/esm2022/localize/public_api.mjs +0 -27
  223. package/esm2022/masking/bravobit-bb-foundation-masking.mjs +0 -5
  224. package/esm2022/masking/lib/directives/currency-mask.directive.mjs +0 -41
  225. package/esm2022/masking/lib/directives/date-mask.directive.mjs +0 -41
  226. package/esm2022/masking/lib/directives/input-mask.directive.mjs +0 -126
  227. package/esm2022/masking/lib/input-mask.interface.mjs +0 -2
  228. package/esm2022/masking/lib/masking.module.mjs +0 -30
  229. package/esm2022/masking/lib/masking.service.mjs +0 -104
  230. package/esm2022/masking/public_api.mjs +0 -7
  231. package/esm2022/notifications/bravobit-bb-foundation-notifications.mjs +0 -5
  232. package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +0 -112
  233. package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +0 -48
  234. package/esm2022/notifications/lib/notifications.animations.mjs +0 -28
  235. package/esm2022/notifications/lib/notifications.config.mjs +0 -8
  236. package/esm2022/notifications/lib/notifications.interfaces.mjs +0 -31
  237. package/esm2022/notifications/lib/notifications.module.mjs +0 -20
  238. package/esm2022/notifications/lib/notifications.service.mjs +0 -161
  239. package/esm2022/notifications/public_api.mjs +0 -5
  240. package/esm2022/permissions/bravobit-bb-foundation-permissions.mjs +0 -5
  241. package/esm2022/permissions/lib/directives/permission.directive.mjs +0 -95
  242. package/esm2022/permissions/lib/guards/permission.guard.mjs +0 -25
  243. package/esm2022/permissions/lib/handlers/abstract.handler.mjs +0 -3
  244. package/esm2022/permissions/lib/handlers/local.handler.mjs +0 -29
  245. package/esm2022/permissions/lib/permissions.config.mjs +0 -20
  246. package/esm2022/permissions/lib/permissions.interface.mjs +0 -8
  247. package/esm2022/permissions/lib/permissions.module.mjs +0 -25
  248. package/esm2022/permissions/lib/permissions.service.mjs +0 -100
  249. package/esm2022/permissions/public_api.mjs +0 -9
  250. package/esm2022/public_api.mjs +0 -25
  251. package/esm2022/recaptcha/bravobit-bb-foundation-recaptcha.mjs +0 -5
  252. package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +0 -225
  253. package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +0 -80
  254. package/esm2022/recaptcha/lib/recaptcha.config.mjs +0 -8
  255. package/esm2022/recaptcha/lib/recaptcha.interface.mjs +0 -3
  256. package/esm2022/recaptcha/lib/recaptcha.module.mjs +0 -27
  257. package/esm2022/recaptcha/public_api.mjs +0 -6
  258. package/esm2022/rxjs/bravobit-bb-foundation-rxjs.mjs +0 -5
  259. package/esm2022/rxjs/lib/observables/get-control-value.observable.mjs +0 -6
  260. package/esm2022/rxjs/lib/observables/get-route-param.observable.mjs +0 -5
  261. package/esm2022/rxjs/lib/operators/combine-latest-map.operator.mjs +0 -10
  262. package/esm2022/rxjs/lib/operators/filter-nil.operator.mjs +0 -5
  263. package/esm2022/rxjs/public_api.mjs +0 -5
  264. package/esm2022/select/bravobit-bb-foundation-select.mjs +0 -5
  265. package/esm2022/select/lib/select/select.component.mjs +0 -289
  266. package/esm2022/select/lib/select-label.directive.mjs +0 -18
  267. package/esm2022/select/lib/select-multi-label.directive.mjs +0 -18
  268. package/esm2022/select/lib/select-option-group.directive.mjs +0 -18
  269. package/esm2022/select/lib/select-option.directive.mjs +0 -18
  270. package/esm2022/select/lib/select.config.mjs +0 -8
  271. package/esm2022/select/lib/select.module.mjs +0 -46
  272. package/esm2022/select/public_api.mjs +0 -8
  273. package/esm2022/storage/bravobit-bb-foundation-storage.mjs +0 -5
  274. package/esm2022/storage/lib/interfaces/attributes.interface.mjs +0 -2
  275. package/esm2022/storage/lib/interfaces/memory.interface.mjs +0 -2
  276. package/esm2022/storage/lib/interfaces/strategy.interface.mjs +0 -2
  277. package/esm2022/storage/lib/storage.service.mjs +0 -113
  278. package/esm2022/storage/lib/strategies/cookie-storage.strategy.mjs +0 -144
  279. package/esm2022/storage/lib/strategies/memory-storage.strategy.mjs +0 -54
  280. package/esm2022/storage/lib/strategies/polyfill-storage.strategy.mjs +0 -100
  281. package/esm2022/storage/public_api.mjs +0 -8
  282. package/esm2022/table/bravobit-bb-foundation-table.mjs +0 -5
  283. package/esm2022/table/lib/components/table/table.component.mjs +0 -200
  284. package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +0 -11
  285. package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +0 -135
  286. package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +0 -136
  287. package/esm2022/table/lib/data/datasource.data.mjs +0 -30
  288. package/esm2022/table/lib/data/generic.data.mjs +0 -84
  289. package/esm2022/table/lib/interfaces/datasource.interface.mjs +0 -2
  290. package/esm2022/table/lib/interfaces/table.interfaces.mjs +0 -2
  291. package/esm2022/table/lib/table.module.mjs +0 -44
  292. package/esm2022/table/public_api.mjs +0 -10
  293. package/esm2022/tooltip/bravobit-bb-foundation-tooltip.mjs +0 -5
  294. package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +0 -23
  295. package/esm2022/tooltip/lib/tooltip.directive.mjs +0 -130
  296. package/esm2022/tooltip/lib/tooltip.interfaces.mjs +0 -4
  297. package/esm2022/tooltip/lib/tooltip.module.mjs +0 -16
  298. package/esm2022/tooltip/public_api.mjs +0 -5
  299. package/esm2022/utils/bravobit-bb-foundation-utils.mjs +0 -5
  300. package/esm2022/utils/lib/directives/autosize.directive.mjs +0 -76
  301. package/esm2022/utils/lib/directives/focus-trap.directive.mjs +0 -80
  302. package/esm2022/utils/lib/directives/focus.directive.mjs +0 -57
  303. package/esm2022/utils/lib/directives/template.directive.mjs +0 -33
  304. package/esm2022/utils/lib/utils.module.mjs +0 -35
  305. package/esm2022/utils/public_api.mjs +0 -6
@@ -1,196 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { animate, style, transition, trigger } from '@angular/animations';
4
- import { BbFormError } from '../form-error/form-error.component';
5
- import { BbFileDrop } from '../directives/file-drop.directive';
6
- import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
7
- import { BbLocalize } from '@bravobit/bb-foundation/localize';
8
- import { BbTemplate } from '@bravobit/bb-foundation/utils';
9
- import { BbFileImage } from '../pipes/file-image.pipe';
10
- import { BbFileSize } from '../pipes/file-size.pipe';
11
- import { BehaviorSubject } from 'rxjs';
12
- import * as i0 from "@angular/core";
13
- let nextUniqueId = 0;
14
- export class BbFilePicker {
15
- // Readonly data.
16
- labelId = `bb-file-picker-${nextUniqueId++}`;
17
- // Views.
18
- fileInput;
19
- extraTemplate;
20
- // Inputs.
21
- label = null;
22
- hint = null;
23
- accept = null;
24
- showImages = true;
25
- grouped = false;
26
- required = false;
27
- disabled = false;
28
- hideErrors = false;
29
- // State.
30
- error = false;
31
- value$ = new BehaviorSubject({});
32
- // Callbacks.
33
- onTouchedCallback = () => ({});
34
- onChangeCallback = () => ({});
35
- get value() {
36
- const { file } = this.value$.getValue();
37
- return file;
38
- }
39
- valueChange = new EventEmitter();
40
- set value(value) {
41
- this.value$.next({ file: value });
42
- this.valueChange.emit(value);
43
- }
44
- onButtonPressed(file) {
45
- if (file) {
46
- this.value = null;
47
- this.onChangeCallback(this.value);
48
- return;
49
- }
50
- return this.openFilePicker();
51
- }
52
- openFilePicker() {
53
- return this.fileInput
54
- && this.fileInput.nativeElement
55
- && this.fileInput.nativeElement.click
56
- && this.fileInput.nativeElement.click();
57
- }
58
- onFileChange(event) {
59
- if (this.disabled) {
60
- return;
61
- }
62
- // Extract the file from the event.
63
- const files = this.getFilesFromEvent(event);
64
- this.saveFile(files);
65
- // Clear the file input.
66
- if (this.fileInput && this.fileInput.nativeElement) {
67
- this.fileInput.nativeElement.value = '';
68
- }
69
- }
70
- writeValue(value) {
71
- this.value = value;
72
- }
73
- registerOnChange(method) {
74
- this.onChangeCallback = method;
75
- }
76
- registerOnTouched(method) {
77
- this.onTouchedCallback = method;
78
- }
79
- setDisabledState(isDisabled) {
80
- this.disabled = isDisabled;
81
- }
82
- onErrorChange(error) {
83
- this.error = !!error;
84
- }
85
- validate({ value }) {
86
- if (value === null || value === undefined) {
87
- return null;
88
- }
89
- const regexString = (this.accept || '*')
90
- .replace(/\*/g, '.\*')
91
- .replace(/,/g, '|');
92
- const mimeTypeRegex = new RegExp(regexString);
93
- const isNotValid = (typeof File === 'undefined') || !(value instanceof File) || !mimeTypeRegex.test(value?.type);
94
- return isNotValid && { invalidFileType: true };
95
- }
96
- saveFile(files) {
97
- const file = files?.[0] ?? null;
98
- if (!file || this.disabled) {
99
- return;
100
- }
101
- this.value = file;
102
- this.onChangeCallback(this.value);
103
- }
104
- getFilesFromEvent(event) {
105
- const element = event.target;
106
- if (!element) {
107
- return null;
108
- }
109
- return Array.from(element.files);
110
- }
111
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFilePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BbFilePicker, isStandalone: true, selector: "bb-file-picker", inputs: { label: "label", hint: "hint", accept: "accept", showImages: "showImages", grouped: ["grouped", "grouped", booleanAttribute], required: ["required", "required", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute], value: "value" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.required": "required", "class.disabled": "disabled", "class.grouped": "grouped", "class.error": "error" }, classAttribute: "bb-file-picker" }, providers: [
113
- {
114
- provide: NG_VALUE_ACCESSOR,
115
- useExisting: forwardRef(() => BbFilePicker),
116
- multi: true
117
- },
118
- {
119
- provide: NG_VALIDATORS,
120
- useExisting: BbFilePicker,
121
- multi: true
122
- }
123
- ], queries: [{ propertyName: "extraTemplate", first: true, predicate: ["extra"], descendants: true }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n <div [bbFileDropDisabled]=\"disabled\"\n (bbFileDrop)=\"saveFile($event)\"\n class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n <div class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n @if (!!extraTemplate) {\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n }\n\n @if (showImages) {\n @if (data?.file | bbFileImage | async; as image) {\n <div class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n }\n }\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n @if (data?.file?.name; as name) {\n <span>{{ name }}</span>\n }\n @if (data?.file?.size; as size) {\n <span>{{ size | bbFileSize }}</span>\n }\n </div>\n </div>\n}\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n", styles: [".bb-file-picker{display:block}.bb-file-picker.full>.bb-file-picker-wrapper{width:100%}.bb-file-picker:not(.disabled) .bb-file-picker-button{background-color:#fff}.bb-file-picker:focus,.bb-file-picker-wrapper.is-hovered{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-file-picker-box-shadow)}.bb-file-picker.grouped{margin-bottom:1.5rem}.bb-file-picker.disabled>.bb-file-picker-wrapper{cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-file-picker.required>.bb-file-picker-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-file-picker.error>.bb-file-picker-label{color:#c23934}.bb-file-picker.error>.bb-file-picker-hint{display:none}.bb-file-picker.error>.bb-file-picker-wrapper{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-file-picker.error .bb-file-picker-button{background-color:transparent}.bb-file-picker-wrapper{max-width:100%;-webkit-user-select:none;user-select:none;display:inline-flex;flex-direction:column;border-radius:var(--bb-file-picker-border-radius);border:1px solid var(--bb-file-picker-border-color);transition:box-shadow .2s cubic-bezier(0,0,.2,1);background-color:var(--bb-file-picker-background-color);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-file-picker-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-file-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-file-picker-container{min-height:2.5rem;display:inline-flex}.bb-file-picker-button{margin:0;z-index:1;border:none;line-height:1;cursor:pointer;font-size:1rem;appearance:none;font-weight:400;padding:0 .75rem;align-items:center;white-space:nowrap;display:inline-flex;background-color:transparent;color:var(--bb-file-picker-color);border-right:1px solid hsl(213,8%,74%);transition:box-shadow .2s cubic-bezier(0,0,.2,1);border-top-left-radius:var(--bb-file-picker-border-radius);border-bottom-left-radius:var(--bb-file-picker-border-radius)}.bb-file-picker-button:focus{box-shadow:var(--bb-file-picker-box-shadow)}.bb-file-picker-button:disabled{cursor:default}.bb-file-picker-button.destructive{color:#f55656}.bb-file-picker-icon{margin-right:.25rem}.bb-file-picker-zone{flex:1;color:#758795;line-height:1.125;font-size:.875rem;align-items:center;display:inline-flex;padding:.5rem .75rem;justify-content:center}.bb-file-picker-info{height:0;color:#848f99;overflow:hidden;padding:0 .75rem;align-items:center;line-height:2.5rem;display:inline-flex;border-top:0 solid #b6bbc1;background-color:transparent;transition:height .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-info.visible{height:2.5rem;border-top-width:1px}.bb-file-picker-info>span{opacity:.4;max-width:100%;overflow:hidden;font-size:.875rem;white-space:nowrap;text-overflow:ellipsis}.bb-file-picker-info>span:first-child{flex:1}.bb-file-picker-info>span:last-child{margin-left:.75rem}.bb-file-picker-image-container{overflow:hidden;border-top:1px solid hsl(213,8%,74%)}.bb-file-picker-image-wrapper{width:100%;max-width:40%;margin:1.5rem auto}.bb-file-picker-image{width:100%;display:flex;overflow:hidden;position:relative;will-change:opacity;background-size:cover;background-position:center;background-repeat:no-repeat;border-radius:var(--bb-file-picker-border-radius)}.bb-file-picker-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }, { kind: "pipe", type: BbFileSize, name: "bbFileSize" }, { kind: "pipe", type: BbFileImage, name: "bbFileImage" }, { kind: "directive", type: BbFileDrop, selector: "[bbFileDrop]", inputs: ["bbFileDropDisabled"], outputs: ["bbFileDrop"] }], animations: [
124
- trigger('bbFilePickerImageAnimation', [
125
- transition(':enter', [
126
- style({ opacity: 0 }),
127
- animate('200ms', style({ opacity: 1 }))
128
- ]),
129
- transition(':leave', [
130
- animate('200ms', style({ opacity: 0 }))
131
- ])
132
- ])
133
- ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
134
- }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFilePicker, decorators: [{
136
- type: Component,
137
- args: [{ selector: 'bb-file-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
138
- {
139
- provide: NG_VALUE_ACCESSOR,
140
- useExisting: forwardRef(() => BbFilePicker),
141
- multi: true
142
- },
143
- {
144
- provide: NG_VALIDATORS,
145
- useExisting: BbFilePicker,
146
- multi: true
147
- }
148
- ], host: {
149
- 'class': 'bb-file-picker',
150
- '[class.required]': 'required',
151
- '[class.disabled]': 'disabled',
152
- '[class.grouped]': 'grouped',
153
- '[class.error]': 'error'
154
- }, animations: [
155
- trigger('bbFilePickerImageAnimation', [
156
- transition(':enter', [
157
- style({ opacity: 0 }),
158
- animate('200ms', style({ opacity: 1 }))
159
- ]),
160
- transition(':leave', [
161
- animate('200ms', style({ opacity: 0 }))
162
- ])
163
- ])
164
- ], preserveWhitespaces: false, imports: [BbTemplate, AsyncPipe, NgTemplateOutlet, BbLocalize, BbFormError, BbFileSize, BbFileImage, BbFileDrop], standalone: true, template: "<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n <div [bbFileDropDisabled]=\"disabled\"\n (bbFileDrop)=\"saveFile($event)\"\n class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n <div class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n @if (!!extraTemplate) {\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n }\n\n @if (showImages) {\n @if (data?.file | bbFileImage | async; as image) {\n <div class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n }\n }\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n @if (data?.file?.name; as name) {\n <span>{{ name }}</span>\n }\n @if (data?.file?.size; as size) {\n <span>{{ size | bbFileSize }}</span>\n }\n </div>\n </div>\n}\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n", styles: [".bb-file-picker{display:block}.bb-file-picker.full>.bb-file-picker-wrapper{width:100%}.bb-file-picker:not(.disabled) .bb-file-picker-button{background-color:#fff}.bb-file-picker:focus,.bb-file-picker-wrapper.is-hovered{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-file-picker-box-shadow)}.bb-file-picker.grouped{margin-bottom:1.5rem}.bb-file-picker.disabled>.bb-file-picker-wrapper{cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-file-picker.required>.bb-file-picker-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-file-picker.error>.bb-file-picker-label{color:#c23934}.bb-file-picker.error>.bb-file-picker-hint{display:none}.bb-file-picker.error>.bb-file-picker-wrapper{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-file-picker.error .bb-file-picker-button{background-color:transparent}.bb-file-picker-wrapper{max-width:100%;-webkit-user-select:none;user-select:none;display:inline-flex;flex-direction:column;border-radius:var(--bb-file-picker-border-radius);border:1px solid var(--bb-file-picker-border-color);transition:box-shadow .2s cubic-bezier(0,0,.2,1);background-color:var(--bb-file-picker-background-color);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-file-picker-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-file-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-file-picker-container{min-height:2.5rem;display:inline-flex}.bb-file-picker-button{margin:0;z-index:1;border:none;line-height:1;cursor:pointer;font-size:1rem;appearance:none;font-weight:400;padding:0 .75rem;align-items:center;white-space:nowrap;display:inline-flex;background-color:transparent;color:var(--bb-file-picker-color);border-right:1px solid hsl(213,8%,74%);transition:box-shadow .2s cubic-bezier(0,0,.2,1);border-top-left-radius:var(--bb-file-picker-border-radius);border-bottom-left-radius:var(--bb-file-picker-border-radius)}.bb-file-picker-button:focus{box-shadow:var(--bb-file-picker-box-shadow)}.bb-file-picker-button:disabled{cursor:default}.bb-file-picker-button.destructive{color:#f55656}.bb-file-picker-icon{margin-right:.25rem}.bb-file-picker-zone{flex:1;color:#758795;line-height:1.125;font-size:.875rem;align-items:center;display:inline-flex;padding:.5rem .75rem;justify-content:center}.bb-file-picker-info{height:0;color:#848f99;overflow:hidden;padding:0 .75rem;align-items:center;line-height:2.5rem;display:inline-flex;border-top:0 solid #b6bbc1;background-color:transparent;transition:height .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-info.visible{height:2.5rem;border-top-width:1px}.bb-file-picker-info>span{opacity:.4;max-width:100%;overflow:hidden;font-size:.875rem;white-space:nowrap;text-overflow:ellipsis}.bb-file-picker-info>span:first-child{flex:1}.bb-file-picker-info>span:last-child{margin-left:.75rem}.bb-file-picker-image-container{overflow:hidden;border-top:1px solid hsl(213,8%,74%)}.bb-file-picker-image-wrapper{width:100%;max-width:40%;margin:1.5rem auto}.bb-file-picker-image{width:100%;display:flex;overflow:hidden;position:relative;will-change:opacity;background-size:cover;background-position:center;background-repeat:no-repeat;border-radius:var(--bb-file-picker-border-radius)}.bb-file-picker-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
165
- }], propDecorators: { fileInput: [{
166
- type: ViewChild,
167
- args: ['fileInput', { static: true }]
168
- }], extraTemplate: [{
169
- type: ContentChild,
170
- args: ['extra']
171
- }], label: [{
172
- type: Input
173
- }], hint: [{
174
- type: Input
175
- }], accept: [{
176
- type: Input
177
- }], showImages: [{
178
- type: Input
179
- }], grouped: [{
180
- type: Input,
181
- args: [{ transform: booleanAttribute }]
182
- }], required: [{
183
- type: Input,
184
- args: [{ transform: booleanAttribute }]
185
- }], disabled: [{
186
- type: Input,
187
- args: [{ transform: booleanAttribute }]
188
- }], hideErrors: [{
189
- type: Input,
190
- args: [{ transform: booleanAttribute }]
191
- }], value: [{
192
- type: Input
193
- }], valueChange: [{
194
- type: Output
195
- }] } });
196
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBb0MsYUFBYSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUVyQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUEwQ3JCLE1BQU0sT0FBTyxZQUFZO0lBRXJCLGlCQUFpQjtJQUNSLE9BQU8sR0FBVyxrQkFBa0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztJQUU5RCxTQUFTO0lBQytCLFNBQVMsQ0FBK0I7SUFDekQsYUFBYSxDQUFtQjtJQUV2RCxVQUFVO0lBQ0QsS0FBSyxHQUFxQyxJQUFJLENBQUM7SUFDL0MsSUFBSSxHQUFxQyxJQUFJLENBQUM7SUFDOUMsTUFBTSxHQUFrQixJQUFJLENBQUM7SUFDN0IsVUFBVSxHQUFZLElBQUksQ0FBQztJQUNFLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDekIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLFVBQVUsR0FBWSxLQUFLLENBQUM7SUFFbEUsU0FBUztJQUNULEtBQUssR0FBWSxLQUFLLENBQUM7SUFDdkIsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFrQixFQUFFLENBQUMsQ0FBQztJQUVsRCxhQUFhO0lBQ2IsaUJBQWlCLEdBQWUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxnQkFBZ0IsR0FBNkIsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUV4RCxJQUNJLEtBQUs7UUFDTCxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRVMsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFlLENBQUM7SUFFeEQsSUFBSSxLQUFLLENBQUMsS0FBa0I7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVc7UUFDdkIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEMsT0FBTztRQUNYLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVM7ZUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWE7ZUFDNUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBSztlQUNsQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVk7UUFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNYLENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsd0JBQXdCO1FBQ3hCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDNUMsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBa0I7UUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQUVELGdCQUFnQixDQUFDLE1BQWdDO1FBQzdDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUVELGlCQUFpQixDQUFDLE1BQWtCO1FBQ2hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQW1CO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBMkM7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRLENBQUMsRUFBQyxLQUFLLEVBQW9CO1FBQy9CLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUM7YUFDbkMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7YUFDckIsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5QyxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqSCxPQUFPLFVBQVUsSUFBSSxFQUFDLGVBQWUsRUFBRSxJQUFJLEVBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWE7UUFDbEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBWTtRQUNsQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUNqRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDWCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO3dHQXpIUSxZQUFZOzRGQUFaLFlBQVksc0tBY0YsZ0JBQWdCLHNDQUNoQixnQkFBZ0Isc0NBQ2hCLGdCQUFnQiw0Q0FDaEIsZ0JBQWdCLHFQQW5EeEI7WUFDUDtnQkFDSSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDM0MsS0FBSyxFQUFFLElBQUk7YUFDZDtZQUNEO2dCQUNJLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixXQUFXLEVBQUUsWUFBWTtnQkFDekIsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLG9QQzVDTCxtNEhBd0dBLCtoSER4Q2MsVUFBVSw0RUFBRSxTQUFTLDhDQUFFLGdCQUFnQiwrSUFBRSxVQUFVLG1EQUFFLFdBQVcsb0dBQUUsVUFBVSw4Q0FBRSxXQUFXLG9EQUFFLFVBQVUsb0dBWm5HO1lBQ1IsT0FBTyxDQUFDLDRCQUE0QixFQUFFO2dCQUNsQyxVQUFVLENBQUMsUUFBUSxFQUFFO29CQUNqQixLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUM7b0JBQ25CLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7aUJBQ3hDLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQztpQkFDeEMsQ0FBQzthQUNMLENBQUM7U0FDTDs7NEZBS1EsWUFBWTtrQkF4Q3hCLFNBQVM7K0JBQ0ksZ0JBQWdCLG1CQUdULHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDOzRCQUMzQyxLQUFLLEVBQUUsSUFBSTt5QkFDZDt3QkFDRDs0QkFDSSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsV0FBVyxjQUFjOzRCQUN6QixLQUFLLEVBQUUsSUFBSTt5QkFDZDtxQkFDSixRQUNLO3dCQUNGLE9BQU8sRUFBRSxnQkFBZ0I7d0JBQ3pCLGtCQUFrQixFQUFFLFVBQVU7d0JBQzlCLGtCQUFrQixFQUFFLFVBQVU7d0JBQzlCLGlCQUFpQixFQUFFLFNBQVM7d0JBQzVCLGVBQWUsRUFBRSxPQUFPO3FCQUMzQixjQUNXO3dCQUNSLE9BQU8sQ0FBQyw0QkFBNEIsRUFBRTs0QkFDbEMsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDakIsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDO2dDQUNuQixPQUFPLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDOzZCQUN4QyxDQUFDOzRCQUNGLFVBQVUsQ0FBQyxRQUFRLEVBQUU7Z0NBQ2pCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7NkJBQ3hDLENBQUM7eUJBQ0wsQ0FBQztxQkFDTCx1QkFDb0IsS0FBSyxXQUNqQixDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxjQUNwRyxJQUFJOzhCQVF3QixTQUFTO3NCQUFoRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ2YsYUFBYTtzQkFBbkMsWUFBWTt1QkFBQyxPQUFPO2dCQUdaLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ2dDLE9BQU87c0JBQTVDLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBQ0UsUUFBUTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFDRSxRQUFRO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDO2dCQUNFLFVBQVU7c0JBQS9DLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBV2hDLEtBQUs7c0JBRFIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge2FuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7QmJGb3JtRXJyb3J9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQnO1xuaW1wb3J0IHtCYkZpbGVEcm9wfSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZpbGUtZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0JiTG9jYWxpemV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL2xvY2FsaXplJztcbmltcG9ydCB7QmJUZW1wbGF0ZX0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vdXRpbHMnO1xuaW1wb3J0IHtCYkZpbGVJbWFnZX0gZnJvbSAnLi4vcGlwZXMvZmlsZS1pbWFnZS5waXBlJztcbmltcG9ydCB7QmJGaWxlU2l6ZX0gZnJvbSAnLi4vcGlwZXMvZmlsZS1zaXplLnBpcGUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1maWxlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQmJGaWxlUGlja2VyKSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogQmJGaWxlUGlja2VyLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItZmlsZS1waWNrZXInLFxuICAgICAgICAnW2NsYXNzLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCcsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJyxcbiAgICAgICAgJ1tjbGFzcy5lcnJvcl0nOiAnZXJyb3InXG4gICAgfSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2JiRmlsZVBpY2tlckltYWdlQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtvcGFjaXR5OiAwfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMnLCBzdHlsZSh7b3BhY2l0eTogMX0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMnLCBzdHlsZSh7b3BhY2l0eTogMH0pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIGltcG9ydHM6IFtCYlRlbXBsYXRlLCBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQsIEJiTG9jYWxpemUsIEJiRm9ybUVycm9yLCBCYkZpbGVTaXplLCBCYkZpbGVJbWFnZSwgQmJGaWxlRHJvcF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCYkZpbGVQaWNrZXIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHJlYWRvbmx5IGxhYmVsSWQ6IHN0cmluZyA9IGBiYi1maWxlLXBpY2tlci0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7c3RhdGljOiB0cnVlfSkgZmlsZUlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2V4dHJhJykgZXh0cmFUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8vIElucHV0cy5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIHNob3dJbWFnZXM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgZ3JvdXBlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBoaWRlRXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBmaWxlPzogRmlsZSB9Pih7fSk7XG5cbiAgICAvLyBDYWxsYmFja3MuXG4gICAgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuICAgIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBGaWxlIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgY29uc3Qge2ZpbGV9ID0gdGhpcy52YWx1ZSQuZ2V0VmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlIHwgbnVsbD4oKTtcblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogRmlsZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQubmV4dCh7ZmlsZTogdmFsdWV9KTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvblByZXNzZWQoZmlsZT86IEZpbGUpIHtcbiAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbkZpbGVQaWNrZXIoKTtcbiAgICB9XG5cbiAgICBvcGVuRmlsZVBpY2tlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZUlucHV0XG4gICAgICAgICAgICAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrXG4gICAgICAgICAgICAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgb25GaWxlQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXh0cmFjdCB0aGUgZmlsZSBmcm9tIHRoZSBldmVudC5cbiAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzRnJvbUV2ZW50KGV2ZW50KTtcbiAgICAgICAgdGhpcy5zYXZlRmlsZShmaWxlcyk7XG5cbiAgICAgICAgLy8gQ2xlYXIgdGhlIGZpbGUgaW5wdXQuXG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dCAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBGaWxlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShtZXRob2Q6IChfOiBGaWxlIHwgbnVsbCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQobWV0aG9kOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG9uRXJyb3JDaGFuZ2UoZXJyb3I6IHsgdG9rZW46IHN0cmluZywgZGF0YT86IGFueSB9IHwgbnVsbCkge1xuICAgICAgICB0aGlzLmVycm9yID0gISFlcnJvcjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh7dmFsdWV9OiBGb3JtQ29udHJvbDxGaWxlPikge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWdleFN0cmluZyA9ICh0aGlzLmFjY2VwdCB8fCAnKicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwqL2csICcuXFwqJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICd8Jyk7XG4gICAgICAgIGNvbnN0IG1pbWVUeXBlUmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4U3RyaW5nKTtcblxuICAgICAgICBjb25zdCBpc05vdFZhbGlkID0gKHR5cGVvZiBGaWxlID09PSAndW5kZWZpbmVkJykgfHwgISh2YWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHx8ICFtaW1lVHlwZVJlZ2V4LnRlc3QodmFsdWU/LnR5cGUpO1xuICAgICAgICByZXR1cm4gaXNOb3RWYWxpZCAmJiB7aW52YWxpZEZpbGVUeXBlOiB0cnVlfTtcbiAgICB9XG5cbiAgICBzYXZlRmlsZShmaWxlczogRmlsZVtdKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcz8uWzBdID8/IG51bGw7XG4gICAgICAgIGlmICghZmlsZSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZSA9IGZpbGU7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbGVzRnJvbUV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5maWxlcyk7XG4gICAgfVxuXG59XG4iLCI8IS0tIFRoZSBsYWJlbCBvZiB0aGUgaW5wdXQuIC0tPlxuQGlmIChsYWJlbDsgYXMgbGFiZWxDb250ZW50KSB7XG4gICAgPGxhYmVsIFtmb3JdPVwibGFiZWxJZFwiXG4gICAgICAgICAgIGNsYXNzPVwiYmItZmlsZS1waWNrZXItbGFiZWxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImxhYmVsQ29udGVudFwiPnt7IGxhYmVsQ29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9sYWJlbD5cbn1cblxuPCEtLSBUaGUgaW5wdXQgdGhhdCBjYW4gb3BlbiB0aGUgZmlsZSBwaWNrZXIuIC0tPlxuPGlucHV0ICNmaWxlSW5wdXRcbiAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWlucHV0XCJcbiAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgdGFiaW5kZXg9XCItMVwiPlxuXG5AaWYgKHZhbHVlJCB8IGFzeW5jOyBhcyBkYXRhKSB7XG4gICAgPGRpdiBbYmJGaWxlRHJvcERpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgIChiYkZpbGVEcm9wKT1cInNhdmVGaWxlKCRldmVudClcIlxuICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci13cmFwcGVyXCI+XG4gICAgICAgIDwhLS0gVGhlIGJ1dHRvbiB0aGF0IGFjY2VwdHMgZmlsZXMuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZmlsZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5kZXN0cnVjdGl2ZV09XCIhIWRhdGE/LmZpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwibGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvblByZXNzZWQoZGF0YT8uZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1idXR0b25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0YT8uZmlsZSA/IGNsb3NlSWNvbiA6IHVwbG9hZEljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB7eyAoZGF0YT8uZmlsZSA/ICdmaWxlLXBpY2tlci5yZW1vdmUnIDogJ2ZpbGUtcGlja2VyLmNob29zZScpIHwgYmJMb2NhbGl6ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZmlsZS1waWNrZXItem9uZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdmaWxlLXBpY2tlci5kcm9wJyB8IGJiTG9jYWxpemUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKCEhZXh0cmFUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4dHJhVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGE/LmZpbGV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHNob3dJbWFnZXMpIHtcbiAgICAgICAgICAgIEBpZiAoZGF0YT8uZmlsZSB8IGJiRmlsZUltYWdlIHwgYXN5bmM7IGFzIGltYWdlKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZmlsZS1waWNrZXItaW1hZ2Utd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbQGJiRmlsZVBpY2tlckltYWdlQW5pbWF0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZy10b3AuJV09XCJpbWFnZT8uYXNwZWN0UmF0aW8gKiAxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCJpbWFnZT8uYmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmItZmlsZS1waWNrZXItaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRXh0cmEgaW5mb3JtYXRpb24gb2YgdGhlIGZpbGUuIC0tPlxuICAgICAgICA8ZGl2IFtjbGFzcy52aXNpYmxlXT1cIiEhZGF0YT8uZmlsZVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pbmZvXCI+XG4gICAgICAgICAgICBAaWYgKGRhdGE/LmZpbGU/Lm5hbWU7IGFzIG5hbWUpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBuYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChkYXRhPy5maWxlPy5zaXplOyBhcyBzaXplKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgc2l6ZSB8IGJiRmlsZVNpemUgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuXG5AaWYgKCFoaWRlRXJyb3JzKSB7XG4gICAgPGJiLWZvcm0tZXJyb3IgKGVycm9yQ2hhbmdlKT1cIm9uRXJyb3JDaGFuZ2UoJGV2ZW50KVwiPjwvYmItZm9ybS1lcnJvcj5cbn1cblxuPCEtLSBUaGUgZmlsZSBwaWNrZXIgaGludC4gLS0+XG5AaWYgKGhpbnQ7IGFzIGhpbnRDb250ZW50KSB7XG4gICAgPHAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1oaW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPnt7IGhpbnRDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3A+XG59XG5cbjwhLS0gVXBsb2FkIGljb24uIC0tPlxuPG5nLXRlbXBsYXRlICN1cGxvYWRJY29uPlxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWljb25cIlxuICAgICAgICAgd2lkdGg9XCIxLjVyZW1cIlxuICAgICAgICAgaGVpZ2h0PVwiMS41cmVtXCJcbiAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIGQ9XCJNMiAxMi41QzIgOS40NiA0LjQ2IDcgNy41IDdIMThjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRIOS41YTIuNSAyLjUgMCAwMTAtNUgxN3YySDkuNDFjLS41NSAwLS41NSAxIDAgMUgxOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTJINy41QzUuNTcgOSA0IDEwLjU3IDQgMTIuNVM1LjU3IDE2IDcuNSAxNkgxN3YySDcuNUM0LjQ2IDE4IDIgMTUuNTQgMiAxMi41elwiPjwvcGF0aD5cbiAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBDbG9zZSBpY29uLiAtLT5cbjxuZy10ZW1wbGF0ZSAjY2xvc2VJY29uPlxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWljb25cIlxuICAgICAgICAgd2lkdGg9XCIxLjVyZW1cIlxuICAgICAgICAgaGVpZ2h0PVwiMS41cmVtXCJcbiAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIGQ9XCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiPjwvcGF0aD5cbiAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,46 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, ViewEncapsulation } from '@angular/core';
2
- import { BbFormError } from '../form-error/form-error.component';
3
- import { BbTemplate } from '@bravobit/bb-foundation/utils';
4
- import { NgControl } from '@angular/forms';
5
- import * as i0 from "@angular/core";
6
- let nextUniqueId = 0;
7
- export class BbFormControl {
8
- // Readonly data.
9
- labelId = `bb-form-control-${nextUniqueId++}`;
10
- // Views.
11
- ngControl;
12
- // Inputs.
13
- label = null;
14
- hint = null;
15
- grouped = false;
16
- hideErrors = false;
17
- // State.
18
- error = false;
19
- onErrorChange(error) {
20
- this.error = !!error;
21
- }
22
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFormControl, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BbFormControl, isStandalone: true, selector: "bb-form-control", inputs: { label: "label", hint: "hint", grouped: ["grouped", "grouped", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute] }, host: { properties: { "class.grouped": "grouped", "class.error": "error" }, classAttribute: "bb-form-control" }, queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-form-control{color:#111;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control>.bb-form-control-container>*.bb-prefix{margin-left:.5rem}.bb-form-control>.bb-form-control-container>*.bb-suffix{margin-right:.5rem}.bb-form-control.grouped{margin-bottom:1.5rem}.bb-form-control.small{max-width:15rem}.bb-form-control.medium{max-width:30rem}.bb-form-control.large{max-width:45rem}.bb-form-control:has(input:required,textarea:required,select:required)>.bb-form-control-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border-color:var(--bb-form-control-focus-border-color);box-shadow:var(--bb-form-control-focus-box-shadow)}.bb-form-control-container:has(input:not(:disabled):read-only,textarea:not(:disabled):read-only){cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-form-control-container:has(input:disabled,textarea:disabled,select:disabled){cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#b51c1c}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#ea7b7b}.bb-form-control.error>.bb-form-control-container,.bb-form-control.error>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-form-control-container:has(select):after{top:0;right:0;bottom:0;content:\"\";width:1.5rem;display:flex;height:2.5rem;min-width:1.5rem;position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:.75rem .375rem;background-position:calc(100% - .5rem) center;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 6\"%3E%3Cpath fill=\"%23D8D8D8\" fill-rule=\"evenodd\" d=\"m6 6 6-6H0z\"/%3E%3C/svg%3E')}.bb-form-control-container{width:100%;display:flex;color:#111;overflow:hidden;position:relative;align-items:center;transition-duration:.25s;box-shadow:var(--bb-form-control-box-shadow);transition-property:background-color,box-shadow;border:1px solid var(--bb-form-control-border-color);transition-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--bb-form-control-background-color);border-radius:var(--bb-form-control-border-radius, .5rem)}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d1d1d1;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:inherit;font-size:1rem;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:2.5rem;padding:0 .5rem}.bb-form-control-container>select{padding-right:2rem}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:.5rem}.bb-form-control-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-form-control-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
24
- }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFormControl, decorators: [{
26
- type: Component,
27
- args: [{ selector: 'bb-form-control', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
28
- 'class': 'bb-form-control',
29
- '[class.grouped]': 'grouped',
30
- '[class.error]': 'error'
31
- }, preserveWhitespaces: false, standalone: true, imports: [BbTemplate, BbFormError], template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-form-control{color:#111;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control>.bb-form-control-container>*.bb-prefix{margin-left:.5rem}.bb-form-control>.bb-form-control-container>*.bb-suffix{margin-right:.5rem}.bb-form-control.grouped{margin-bottom:1.5rem}.bb-form-control.small{max-width:15rem}.bb-form-control.medium{max-width:30rem}.bb-form-control.large{max-width:45rem}.bb-form-control:has(input:required,textarea:required,select:required)>.bb-form-control-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border-color:var(--bb-form-control-focus-border-color);box-shadow:var(--bb-form-control-focus-box-shadow)}.bb-form-control-container:has(input:not(:disabled):read-only,textarea:not(:disabled):read-only){cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-form-control-container:has(input:disabled,textarea:disabled,select:disabled){cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#b51c1c}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#ea7b7b}.bb-form-control.error>.bb-form-control-container,.bb-form-control.error>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-form-control-container:has(select):after{top:0;right:0;bottom:0;content:\"\";width:1.5rem;display:flex;height:2.5rem;min-width:1.5rem;position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:.75rem .375rem;background-position:calc(100% - .5rem) center;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 6\"%3E%3Cpath fill=\"%23D8D8D8\" fill-rule=\"evenodd\" d=\"m6 6 6-6H0z\"/%3E%3C/svg%3E')}.bb-form-control-container{width:100%;display:flex;color:#111;overflow:hidden;position:relative;align-items:center;transition-duration:.25s;box-shadow:var(--bb-form-control-box-shadow);transition-property:background-color,box-shadow;border:1px solid var(--bb-form-control-border-color);transition-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--bb-form-control-background-color);border-radius:var(--bb-form-control-border-radius, .5rem)}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d1d1d1;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:inherit;font-size:1rem;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:2.5rem;padding:0 .5rem}.bb-form-control-container>select{padding-right:2rem}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:.5rem}.bb-form-control-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-form-control-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
32
- }], propDecorators: { ngControl: [{
33
- type: ContentChild,
34
- args: [NgControl]
35
- }], label: [{
36
- type: Input
37
- }], hint: [{
38
- type: Input
39
- }], grouped: [{
40
- type: Input,
41
- args: [{ transform: booleanAttribute }]
42
- }], hideErrors: [{
43
- type: Input,
44
- args: [{ transform: booleanAttribute }]
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFekMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBaUJyQixNQUFNLE9BQU8sYUFBYTtJQUV0QixpQkFBaUI7SUFDUixPQUFPLEdBQVcsbUJBQW1CLFlBQVksRUFBRSxFQUFFLENBQUM7SUFFL0QsU0FBUztJQUNnQixTQUFTLENBQVk7SUFFOUMsVUFBVTtJQUNELEtBQUssR0FBcUMsSUFBSSxDQUFDO0lBQy9DLElBQUksR0FBcUMsSUFBSSxDQUFDO0lBQ2pCLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDekIsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVsRSxTQUFTO0lBQ1QsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUV2QixhQUFhLENBQUMsS0FBMkM7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pCLENBQUM7d0dBbkJRLGFBQWE7NEZBQWIsYUFBYSwySEFXSCxnQkFBZ0IsNENBQ2hCLGdCQUFnQixxTEFOckIsU0FBUyxnREM1QjNCLHMzQkE0QkEsaXVJRFJjLFVBQVUsaUZBQUUsV0FBVzs7NEZBRXhCLGFBQWE7a0JBZnpCLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsaUJBQWlCLEVBQUUsU0FBUzt3QkFDNUIsZUFBZSxFQUFFLE9BQU87cUJBQzNCLHVCQUNvQixLQUFLLGNBQ2QsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQzs4QkFRVCxTQUFTO3NCQUFqQyxZQUFZO3VCQUFDLFNBQVM7Z0JBR2QsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDZ0MsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFDRSxVQUFVO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYkZvcm1FcnJvcn0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0JiVGVtcGxhdGV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL3V0aWxzJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiLWZvcm0tY29udHJvbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1mb3JtLWNvbnRyb2wnLFxuICAgICAgICAnW2NsYXNzLmdyb3VwZWRdJzogJ2dyb3VwZWQnLFxuICAgICAgICAnW2NsYXNzLmVycm9yXSc6ICdlcnJvcidcbiAgICB9LFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0JiVGVtcGxhdGUsIEJiRm9ybUVycm9yXVxufSlcbmV4cG9ydCBjbGFzcyBCYkZvcm1Db250cm9sIHtcblxuICAgIC8vIFJlYWRvbmx5IGRhdGEuXG4gICAgcmVhZG9ubHkgbGFiZWxJZDogc3RyaW5nID0gYGJiLWZvcm0tY29udHJvbC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAQ29udGVudENoaWxkKE5nQ29udHJvbCkgbmdDb250cm9sOiBOZ0NvbnRyb2w7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBncm91cGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBoaWRlRXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgb25FcnJvckNoYW5nZShlcnJvcjogeyB0b2tlbjogc3RyaW5nLCBkYXRhPzogYW55IH0gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSAhIWVycm9yO1xuICAgIH1cblxufVxuIiwiPCEtLSBMYWJlbCBvZiB0aGUgZm9ybSBjb250cm9sLiAtLT5cbkBpZiAobGFiZWw7IGFzIGxhYmVsQ29udGVudCkge1xuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwibGFiZWxJZFwiXG4gICAgICAgICAgIGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWxhYmVsXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgIDwvbGFiZWw+XG59XG5cbjwhLS0gVGhlIGlucHV0IHdpdGggdGhlIGFkZG9ucy4gLS0+XG48ZGl2IGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYlByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JiSW5wdXRdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYlN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPCEtLSBUaGUgZXJyb3IgY29tcG9uZW50LiAtLT5cbkBpZiAoIWhpZGVFcnJvcnMpIHtcbiAgICA8YmItZm9ybS1lcnJvciBbY29udHJvbF09XCJuZ0NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIChlcnJvckNoYW5nZSk9XCJvbkVycm9yQ2hhbmdlKCRldmVudClcIj5cbiAgICA8L2JiLWZvcm0tZXJyb3I+XG59XG5cbjwhLS0gVGhlIGZvcm0gY29udHJvbCBoaW50LiAtLT5cbkBpZiAoaGludDsgYXMgaGludENvbnRlbnQpIHtcbiAgICA8cCBjbGFzcz1cImJiLWZvcm0tY29udHJvbC1oaW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPnt7IGhpbnRDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3A+XG59XG4iXX0=
@@ -1,106 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, ViewEncapsulation } from '@angular/core';
2
- import { delay, distinctUntilChanged, map, startWith, tap } from 'rxjs/operators';
3
- import { ELEMENTS_ERRORS } from '../elements.interfaces';
4
- import { BbLocalize } from '@bravobit/bb-foundation/localize';
5
- import { combineLatest, of } from 'rxjs';
6
- import { AsyncPipe } from '@angular/common';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../directives/form-submit.directive";
9
- import * as i2 from "@angular/forms";
10
- import * as i3 from "../directives/form-submitter.directive";
11
- import * as i4 from "../directives/extra-error-controls.directive";
12
- export class BbFormError {
13
- _form;
14
- _ngControl;
15
- _formSubmitter;
16
- _extraErrorControls;
17
- _errors;
18
- // Readonly data.
19
- errorsMap;
20
- // Inputs.
21
- control = null;
22
- // Outputs.
23
- errorChange = new EventEmitter();
24
- // State.
25
- error$;
26
- constructor(_form, _ngControl, _formSubmitter, _extraErrorControls, _errors) {
27
- this._form = _form;
28
- this._ngControl = _ngControl;
29
- this._formSubmitter = _formSubmitter;
30
- this._extraErrorControls = _extraErrorControls;
31
- this._errors = _errors;
32
- this.errorsMap = this._errors.reduce((previous, current) => ({ ...previous, ...current }), {});
33
- }
34
- ngOnInit() {
35
- this.setControl();
36
- this.setError();
37
- }
38
- setControl() {
39
- if (!this.control) {
40
- this.control = this._ngControl;
41
- }
42
- }
43
- setError() {
44
- const submitStatus$ = this.submitStatusChanges();
45
- const errorChanges$ = this.getErrors().pipe(map(errors => this.formatError(errors)), distinctUntilChanged(), map(error => typeof error === 'string' ? { token: error } : error));
46
- this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(map(([submitted, error]) => submitted ? error : null), tap(value => this.errorChange.emit(value)));
47
- }
48
- formatError(errors) {
49
- const [errorName] = Object.keys(errors ?? {});
50
- const error = errors?.[errorName];
51
- if (!error) {
52
- return null;
53
- }
54
- const errorFunction = this.errorsMap?.[errorName] ?? this.errorsMap?.['unknown'];
55
- if (!errorFunction) {
56
- return null;
57
- }
58
- return errorFunction(error);
59
- }
60
- submitStatusChanges() {
61
- const native$ = this.getNativeFormSubmit();
62
- const manual$ = this.getManualFormSubmit();
63
- return combineLatest([native$, manual$]).pipe(map(([native, manual]) => native || manual), distinctUntilChanged());
64
- }
65
- getNativeFormSubmit() {
66
- if (!this._form) {
67
- return of(true);
68
- }
69
- return this._form.submitStatus$;
70
- }
71
- getManualFormSubmit() {
72
- if (!this._formSubmitter) {
73
- return of(false);
74
- }
75
- return this._formSubmitter.submitted$.pipe(distinctUntilChanged());
76
- }
77
- getErrors() {
78
- const error$ = (this.control?.statusChanges ?? of(null)).pipe(startWith(this.control?.status), map(_ => this.control?.errors ?? null), delay(0));
79
- const extraError$ = this._extraErrorControls?.changes?.asObservable() ?? of(null);
80
- return combineLatest([error$, extraError$]).pipe(map(([error, extraError]) => error ?? extraError ?? null), distinctUntilChanged());
81
- }
82
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFormError, deps: [{ token: i1.BbFormSubmit, optional: true }, { token: i2.NgControl, optional: true }, { token: i3.BbFormSubmitter, optional: true }, { token: i4.BbExtraErrorControls, optional: true }, { token: ELEMENTS_ERRORS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: BbFormError, isStandalone: true, selector: "bb-form-error", inputs: { control: "control" }, outputs: { errorChange: "errorChange" }, host: { classAttribute: "bb-form-error" }, ngImport: i0, template: "@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
84
- }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFormError, decorators: [{
86
- type: Component,
87
- args: [{ selector: 'bb-form-error', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-form-error' }, preserveWhitespaces: false, standalone: true, imports: [AsyncPipe, BbLocalize], template: "@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem}\n"] }]
88
- }], ctorParameters: () => [{ type: i1.BbFormSubmit, decorators: [{
89
- type: Optional
90
- }] }, { type: i2.NgControl, decorators: [{
91
- type: Optional
92
- }] }, { type: i3.BbFormSubmitter, decorators: [{
93
- type: Optional
94
- }] }, { type: i4.BbExtraErrorControls, decorators: [{
95
- type: Optional
96
- }] }, { type: undefined, decorators: [{
97
- type: Optional
98
- }, {
99
- type: Inject,
100
- args: [ELEMENTS_ERRORS]
101
- }] }], propDecorators: { control: [{
102
- type: Input
103
- }], errorChange: [{
104
- type: Output
105
- }] } });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1lcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNJLE9BQU8sRUFBQyxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRixPQUFPLEVBQUMsZUFBZSxFQUFnQixNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUU1RCxPQUFPLEVBQUMsYUFBYSxFQUFjLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQWExQyxNQUFNLE9BQU8sV0FBVztJQWNZO0lBQ0E7SUFDQTtJQUNBO0lBQ3lCO0lBaEJ6RCxpQkFBaUI7SUFDUixTQUFTLENBQWdCO0lBRWxDLFVBQVU7SUFDRCxPQUFPLEdBQXFCLElBQUksQ0FBQztJQUUxQyxXQUFXO0lBQ0QsV0FBVyxHQUFHLElBQUksWUFBWSxFQUF3QyxDQUFDO0lBRWpGLFNBQVM7SUFDVCxNQUFNLENBQW1EO0lBRXpELFlBQWdDLEtBQW9CLEVBQ3BCLFVBQXNCLEVBQ3RCLGNBQWdDLEVBQ2hDLG1CQUEwQyxFQUNqQixPQUF5QjtRQUpsRCxVQUFLLEdBQUwsS0FBSyxDQUFlO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBdUI7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDOUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTyxVQUFVO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUM7SUFFTyxRQUFRO1FBQ1osTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUN2QyxvQkFBb0IsRUFBRSxFQUN0QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FDbkUsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUMsYUFBYSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RCxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUNyRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUM3QyxDQUFDO0lBQ04sQ0FBQztJQUVPLFdBQVcsQ0FBQyxNQUF5QjtRQUN6QyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3ZCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNDLE9BQU8sYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxFQUMzQyxvQkFBb0IsRUFBRSxDQUN6QixDQUFDO0lBQ04sQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2QsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7SUFDcEMsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDdEMsb0JBQW9CLEVBQUUsQ0FDekIsQ0FBQztJQUNOLENBQUM7SUFFTyxTQUFTO1FBQ2IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLGFBQWEsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3pELFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUMvQixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsRUFDdEMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNYLENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRixPQUFPLGFBQWEsQ0FBQyxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLEVBQ3pELG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDO3dHQXRHUSxXQUFXLDBNQWtCWSxlQUFlOzRGQWxCdEMsV0FBVyw2TEN0QnhCLG1NQUtBLDRMRGVjLFNBQVMseUNBQUUsVUFBVTs7NEZBRXRCLFdBQVc7a0JBWHZCLFNBQVM7K0JBQ0ksZUFBZSxtQkFHUix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBQyx1QkFDWCxLQUFLLGNBQ2QsSUFBSSxXQUNQLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQzs7MEJBZ0JuQixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7eUNBWnRDLE9BQU87c0JBQWYsS0FBSztnQkFHSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYkV4dHJhRXJyb3JDb250cm9sc30gZnJvbSAnLi4vZGlyZWN0aXZlcy9leHRyYS1lcnJvci1jb250cm9scy5kaXJlY3RpdmUnO1xuaW1wb3J0IHtkZWxheSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3RhcnRXaXRoLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7QmJGb3JtU3VibWl0dGVyfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvcm0tc3VibWl0dGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0VMRU1FTlRTX0VSUk9SUywgRWxlbWVudHNFcnJvcn0gZnJvbSAnLi4vZWxlbWVudHMuaW50ZXJmYWNlcyc7XG5pbXBvcnQge0JiRm9ybVN1Ym1pdH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9mb3JtLXN1Ym1pdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtCYkxvY2FsaXplfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbi9sb2NhbGl6ZSc7XG5pbXBvcnQge05nQ29udHJvbCwgVmFsaWRhdGlvbkVycm9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FzeW5jUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1mb3JtLWVycm9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1lcnJvci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1lcnJvci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDogeydjbGFzcyc6ICdiYi1mb3JtLWVycm9yJ30sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBCYkxvY2FsaXplXVxufSlcbmV4cG9ydCBjbGFzcyBCYkZvcm1FcnJvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHJlYWRvbmx5IGVycm9yc01hcDogRWxlbWVudHNFcnJvcjtcblxuICAgIC8vIElucHV0cy5cbiAgICBASW5wdXQoKSBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIE91dHB1dHMuXG4gICAgQE91dHB1dCgpIGVycm9yQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjx7IHRva2VuOiBzdHJpbmcsIGRhdGE/OiBhbnkgfSB8IG51bGw+KCk7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBlcnJvciQ6IE9ic2VydmFibGU8eyB0b2tlbjogc3RyaW5nLCBkYXRhPzogYW55IH0gfCBudWxsPjtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIHByaXZhdGUgX2Zvcm0/OiBCYkZvcm1TdWJtaXQsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfbmdDb250cm9sPzogTmdDb250cm9sLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2Zvcm1TdWJtaXR0ZXI/OiBCYkZvcm1TdWJtaXR0ZXIsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZXh0cmFFcnJvckNvbnRyb2xzPzogQmJFeHRyYUVycm9yQ29udHJvbHMsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChFTEVNRU5UU19FUlJPUlMpIHByaXZhdGUgX2Vycm9ycz86IEVsZW1lbnRzRXJyb3JbXSkge1xuICAgICAgICB0aGlzLmVycm9yc01hcCA9IHRoaXMuX2Vycm9ycy5yZWR1Y2UoKHByZXZpb3VzLCBjdXJyZW50KSA9PiAoey4uLnByZXZpb3VzLCAuLi5jdXJyZW50fSksIHt9KTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5zZXRDb250cm9sKCk7XG4gICAgICAgIHRoaXMuc2V0RXJyb3IoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldENvbnRyb2woKSB7XG4gICAgICAgIGlmICghdGhpcy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLl9uZ0NvbnRyb2w7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEVycm9yKCkge1xuICAgICAgICBjb25zdCBzdWJtaXRTdGF0dXMkID0gdGhpcy5zdWJtaXRTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgIGNvbnN0IGVycm9yQ2hhbmdlcyQgPSB0aGlzLmdldEVycm9ycygpLnBpcGUoXG4gICAgICAgICAgICBtYXAoZXJyb3JzID0+IHRoaXMuZm9ybWF0RXJyb3IoZXJyb3JzKSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgbWFwKGVycm9yID0+IHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycgPyB7dG9rZW46IGVycm9yfSA6IGVycm9yKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZXJyb3IkID0gY29tYmluZUxhdGVzdChbc3VibWl0U3RhdHVzJCwgZXJyb3JDaGFuZ2VzJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtzdWJtaXR0ZWQsIGVycm9yXSkgPT4gc3VibWl0dGVkID8gZXJyb3IgOiBudWxsKSxcbiAgICAgICAgICAgIHRhcCh2YWx1ZSA9PiB0aGlzLmVycm9yQ2hhbmdlLmVtaXQodmFsdWUpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ybWF0RXJyb3IoZXJyb3JzPzogVmFsaWRhdGlvbkVycm9ycykge1xuICAgICAgICBjb25zdCBbZXJyb3JOYW1lXSA9IE9iamVjdC5rZXlzKGVycm9ycyA/PyB7fSk7XG4gICAgICAgIGNvbnN0IGVycm9yID0gZXJyb3JzPy5bZXJyb3JOYW1lXTtcbiAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBlcnJvckZ1bmN0aW9uID0gdGhpcy5lcnJvcnNNYXA/LltlcnJvck5hbWVdID8/IHRoaXMuZXJyb3JzTWFwPy5bJ3Vua25vd24nXTtcbiAgICAgICAgaWYgKCFlcnJvckZ1bmN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlcnJvckZ1bmN0aW9uKGVycm9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN1Ym1pdFN0YXR1c0NoYW5nZXMoKSB7XG4gICAgICAgIGNvbnN0IG5hdGl2ZSQgPSB0aGlzLmdldE5hdGl2ZUZvcm1TdWJtaXQoKTtcbiAgICAgICAgY29uc3QgbWFudWFsJCA9IHRoaXMuZ2V0TWFudWFsRm9ybVN1Ym1pdCgpO1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbbmF0aXZlJCwgbWFudWFsJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtuYXRpdmUsIG1hbnVhbF0pID0+IG5hdGl2ZSB8fCBtYW51YWwpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TmF0aXZlRm9ybVN1Ym1pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mb3JtKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fZm9ybS5zdWJtaXRTdGF0dXMkO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0TWFudWFsRm9ybVN1Ym1pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mb3JtU3VibWl0dGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1TdWJtaXR0ZXIuc3VibWl0dGVkJC5waXBlKFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RXJyb3JzKCkge1xuICAgICAgICBjb25zdCBlcnJvciQgPSAodGhpcy5jb250cm9sPy5zdGF0dXNDaGFuZ2VzID8/IG9mKG51bGwpKS5waXBlKFxuICAgICAgICAgICAgc3RhcnRXaXRoKHRoaXMuY29udHJvbD8uc3RhdHVzKSxcbiAgICAgICAgICAgIG1hcChfID0+IHRoaXMuY29udHJvbD8uZXJyb3JzID8/IG51bGwpLFxuICAgICAgICAgICAgZGVsYXkoMClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBleHRyYUVycm9yJCA9IHRoaXMuX2V4dHJhRXJyb3JDb250cm9scz8uY2hhbmdlcz8uYXNPYnNlcnZhYmxlKCkgPz8gb2YobnVsbCk7XG5cbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2Vycm9yJCwgZXh0cmFFcnJvciRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbZXJyb3IsIGV4dHJhRXJyb3JdKSA9PiBlcnJvciA/PyBleHRyYUVycm9yID8/IG51bGwpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICApO1xuICAgIH1cblxufVxuIiwiQGlmIChlcnJvciQgfCBhc3luYzsgYXMgZXJyb3IpIHtcbiAgICBAaWYgKGVycm9yPy50b2tlbiB8IGJiTG9jYWxpemU6e29wdGlvbmFsOiB0cnVlLCBkYXRhOiBlcnJvcj8uZGF0YX07IGFzIG1lc3NhZ2UpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJiYi1mb3JtLWVycm9yLW1lc3NhZ2VcIj57eyBtZXNzYWdlIH19PC9wPlxuICAgIH1cbn1cbiJdfQ==
@@ -1,19 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class BbFormGroup {
4
- // Inputs.
5
- grouped = false;
6
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFormGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.12", type: BbFormGroup, isStandalone: true, selector: "bb-form-group", inputs: { grouped: ["grouped", "grouped", booleanAttribute] }, host: { properties: { "class.grouped": "grouped" }, classAttribute: "bb-form-group" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-.75rem}.bb-form-group>*{margin-top:.75rem}.bb-form-group>*:not(:first-child){margin-left:.75rem}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:1.5rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8
- }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: BbFormGroup, decorators: [{
10
- type: Component,
11
- args: [{ selector: 'bb-form-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
12
- 'class': 'bb-form-group',
13
- '[class.grouped]': 'grouped'
14
- }, preserveWhitespaces: false, standalone: true, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-.75rem}.bb-form-group>*{margin-top:.75rem}.bb-form-group>*:not(:first-child){margin-left:.75rem}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:1.5rem}\n"] }]
15
- }], propDecorators: { grouped: [{
16
- type: Input,
17
- args: [{ transform: booleanAttribute }]
18
- }] } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZm9ybS1ncm91cC9mb3JtLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWdyb3VwL2Zvcm0tZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBZTdHLE1BQU0sT0FBTyxXQUFXO0lBRXBCLFVBQVU7SUFDNEIsT0FBTyxHQUFZLEtBQUssQ0FBQzt3R0FIdEQsV0FBVzs0RkFBWCxXQUFXLDJGQUdELGdCQUFnQixvSENsQnZDLDZCQUNBOzs0RkRjYSxXQUFXO2tCQWJ2QixTQUFTOytCQUNJLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixPQUFPLEVBQUUsZUFBZTt3QkFDeEIsaUJBQWlCLEVBQUUsU0FBUztxQkFDL0IsdUJBQ29CLEtBQUssY0FDZCxJQUFJOzhCQUtzQixPQUFPO3NCQUE1QyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiLWZvcm0tZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1mb3JtLWdyb3VwJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJ1xuICAgIH0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCYkZvcm1Hcm91cCB7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBncm91cGVkOiBib29sZWFuID0gZmFsc2U7XG5cbn1cbiIsIjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==