@bravobit/bb-foundation 0.14.2 → 0.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/README.md +47 -47
  2. package/auth/bravobit-bb-foundation-auth.d.ts +5 -5
  3. package/auth/lib/auth.interceptor.d.ts +21 -21
  4. package/auth/lib/auth.module.d.ts +15 -15
  5. package/auth/lib/auth.service.d.ts +59 -59
  6. package/auth/lib/auth.session.d.ts +34 -34
  7. package/auth/lib/directives/authenticated.directive.d.ts +14 -14
  8. package/auth/lib/directives/permission.directive.d.ts +24 -24
  9. package/auth/lib/directives/role.directive.d.ts +16 -16
  10. package/auth/lib/guards/anonymous.guard.d.ts +11 -11
  11. package/auth/lib/guards/authenticated.guard.d.ts +11 -11
  12. package/auth/lib/helpers/jwt.helper.d.ts +8 -8
  13. package/auth/lib/helpers/mapper.helper.d.ts +23 -23
  14. package/auth/lib/interfaces/config.interface.d.ts +12 -12
  15. package/auth/lib/interfaces/mapper.interface.d.ts +19 -19
  16. package/auth/lib/interfaces/provider.interface.d.ts +16 -16
  17. package/auth/lib/interfaces/token.interface.d.ts +11 -11
  18. package/auth/lib/permissions.service.d.ts +14 -14
  19. package/auth/lib/providers/email.provider.d.ts +15 -15
  20. package/auth/lib/providers/verify.provider.d.ts +13 -13
  21. package/auth/lib/tokens/use-authorization.token.d.ts +2 -2
  22. package/auth/public_api.d.ts +18 -18
  23. package/bravobit-bb-foundation.d.ts +5 -5
  24. package/bundles/bravobit-bb-foundation-auth.umd.js +1400 -1402
  25. package/bundles/bravobit-bb-foundation-auth.umd.js.map +1 -1
  26. package/bundles/bravobit-bb-foundation-collections.umd.js +851 -0
  27. package/bundles/bravobit-bb-foundation-collections.umd.js.map +1 -0
  28. package/bundles/bravobit-bb-foundation-dashboard.umd.js +817 -819
  29. package/bundles/bravobit-bb-foundation-dashboard.umd.js.map +1 -1
  30. package/bundles/bravobit-bb-foundation-dialog.umd.js +649 -651
  31. package/bundles/bravobit-bb-foundation-dialog.umd.js.map +1 -1
  32. package/bundles/bravobit-bb-foundation-elements.umd.js +2651 -2653
  33. package/bundles/bravobit-bb-foundation-elements.umd.js.map +1 -1
  34. package/bundles/bravobit-bb-foundation-http.umd.js +488 -490
  35. package/bundles/bravobit-bb-foundation-http.umd.js.map +1 -1
  36. package/bundles/bravobit-bb-foundation-localize.umd.js +1208 -1210
  37. package/bundles/bravobit-bb-foundation-localize.umd.js.map +1 -1
  38. package/bundles/bravobit-bb-foundation-notifications.umd.js +743 -745
  39. package/bundles/bravobit-bb-foundation-notifications.umd.js.map +1 -1
  40. package/bundles/bravobit-bb-foundation-recaptcha.umd.js +640 -642
  41. package/bundles/bravobit-bb-foundation-recaptcha.umd.js.map +1 -1
  42. package/bundles/bravobit-bb-foundation-rxjs.umd.js +13 -13
  43. package/bundles/bravobit-bb-foundation-rxjs.umd.js.map +1 -1
  44. package/bundles/bravobit-bb-foundation-storage.umd.js +756 -758
  45. package/bundles/bravobit-bb-foundation-storage.umd.js.map +1 -1
  46. package/bundles/bravobit-bb-foundation-table.umd.js +993 -995
  47. package/bundles/bravobit-bb-foundation-table.umd.js.map +1 -1
  48. package/bundles/bravobit-bb-foundation.umd.js +1336 -1263
  49. package/bundles/bravobit-bb-foundation.umd.js.map +1 -1
  50. package/collections/bravobit-bb-foundation-collections.d.ts +5 -0
  51. package/collections/lib/collection.d.ts +40 -0
  52. package/collections/lib/collections.module.d.ts +10 -0
  53. package/collections/lib/components/collections-pager/collections-pager.component.d.ts +34 -0
  54. package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +12 -0
  55. package/collections/lib/components/collections.directive.d.ts +17 -0
  56. package/collections/lib/interfaces/collection.interface.d.ts +26 -0
  57. package/collections/lib/providers/api-collection.provider.d.ts +15 -0
  58. package/collections/lib/providers/collection.provider.d.ts +6 -0
  59. package/collections/lib/providers/local-collection.provider.d.ts +8 -0
  60. package/collections/package.json +10 -0
  61. package/collections/public_api.d.ts +9 -0
  62. package/dashboard/bravobit-bb-foundation-dashboard.d.ts +5 -5
  63. package/dashboard/lib/dashboard/dashboard.component.d.ts +19 -19
  64. package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +11 -11
  65. package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +9 -9
  66. package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +11 -11
  67. package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +21 -21
  68. package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +27 -27
  69. package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +16 -16
  70. package/dashboard/lib/dashboard.module.d.ts +16 -16
  71. package/dashboard/public_api.d.ts +8 -8
  72. package/dialog/bravobit-bb-foundation-dialog.d.ts +5 -5
  73. package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +5 -5
  74. package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +16 -16
  75. package/dialog/lib/dialog-container/dialog-container.component.d.ts +24 -24
  76. package/dialog/lib/dialog-header/dialog-header.component.d.ts +9 -9
  77. package/dialog/lib/dialog-link/dialog-link.component.d.ts +5 -5
  78. package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +12 -12
  79. package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +22 -22
  80. package/dialog/lib/dialog.injector.d.ts +8 -8
  81. package/dialog/lib/dialog.insertion.d.ts +8 -8
  82. package/dialog/lib/dialog.interfaces.d.ts +3 -3
  83. package/dialog/lib/dialog.module.d.ts +19 -19
  84. package/dialog/lib/dialog.ref.d.ts +8 -8
  85. package/dialog/lib/dialog.service.d.ts +19 -19
  86. package/dialog/public_api.d.ts +9 -9
  87. package/elements/bravobit-bb-foundation-elements.d.ts +5 -5
  88. package/elements/lib/avatar/avatar.component.d.ts +25 -25
  89. package/elements/lib/button/button.component.d.ts +23 -23
  90. package/elements/lib/checkbox/checkbox.component.d.ts +27 -27
  91. package/elements/lib/date-picker/date-picker.component.d.ts +69 -69
  92. package/elements/lib/directives/addon.directive.d.ts +9 -9
  93. package/elements/lib/directives/autosize.directive.d.ts +18 -18
  94. package/elements/lib/directives/focus-trap.directive.d.ts +17 -17
  95. package/elements/lib/directives/focus.directive.d.ts +14 -14
  96. package/elements/lib/directives/form-submit.directive.d.ts +17 -17
  97. package/elements/lib/directives/input.directive.d.ts +38 -38
  98. package/elements/lib/directives/template.directive.d.ts +10 -10
  99. package/elements/lib/dropdown/dropdown.component.d.ts +21 -21
  100. package/elements/lib/elements.interfaces.d.ts +25 -25
  101. package/elements/lib/elements.module.d.ts +116 -116
  102. package/elements/lib/file-picker/file-picker.component.d.ts +49 -49
  103. package/elements/lib/form-control/form-control.component.d.ts +21 -21
  104. package/elements/lib/form-error/form-error.component.d.ts +29 -29
  105. package/elements/lib/form-group/form-group.component.d.ts +10 -10
  106. package/elements/lib/icon/icon.component.d.ts +22 -22
  107. package/elements/lib/image-picker/image-picker.component.d.ts +38 -38
  108. package/elements/lib/pipes/file-image.pipe.d.ts +13 -13
  109. package/elements/lib/pipes/file-size.pipe.d.ts +8 -8
  110. package/elements/lib/pipes/relative-time.pipe.d.ts +19 -19
  111. package/elements/lib/spinner/spinner.component.d.ts +12 -12
  112. package/elements/lib/tag/tag.component.d.ts +7 -7
  113. package/elements/public_api.d.ts +25 -25
  114. package/esm2015/auth/bravobit-bb-foundation-auth.js +4 -4
  115. package/esm2015/auth/lib/auth.interceptor.js +95 -95
  116. package/esm2015/auth/lib/auth.module.js +54 -54
  117. package/esm2015/auth/lib/auth.service.js +299 -299
  118. package/esm2015/auth/lib/auth.session.js +136 -136
  119. package/esm2015/auth/lib/directives/authenticated.directive.js +32 -32
  120. package/esm2015/auth/lib/directives/permission.directive.js +81 -81
  121. package/esm2015/auth/lib/directives/role.directive.js +38 -38
  122. package/esm2015/auth/lib/guards/anonymous.guard.js +35 -35
  123. package/esm2015/auth/lib/guards/authenticated.guard.js +36 -36
  124. package/esm2015/auth/lib/helpers/jwt.helper.js +69 -69
  125. package/esm2015/auth/lib/helpers/mapper.helper.js +35 -35
  126. package/esm2015/auth/lib/interfaces/config.interface.js +3 -3
  127. package/esm2015/auth/lib/interfaces/mapper.interface.js +2 -2
  128. package/esm2015/auth/lib/interfaces/provider.interface.js +2 -2
  129. package/esm2015/auth/lib/interfaces/token.interface.js +2 -2
  130. package/esm2015/auth/lib/permissions.service.js +58 -58
  131. package/esm2015/auth/lib/providers/email.provider.js +26 -26
  132. package/esm2015/auth/lib/providers/verify.provider.js +20 -20
  133. package/esm2015/auth/lib/tokens/use-authorization.token.js +3 -3
  134. package/esm2015/auth/public_api.js +19 -19
  135. package/esm2015/bravobit-bb-foundation.js +4 -4
  136. package/esm2015/collections/bravobit-bb-foundation-collections.js +5 -0
  137. package/esm2015/collections/lib/collection.js +88 -0
  138. package/esm2015/collections/lib/collections.module.js +54 -0
  139. package/esm2015/collections/lib/components/collections-pager/collections-pager.component.js +136 -0
  140. package/esm2015/collections/lib/components/collections-viewer/collections-viewer.component.js +39 -0
  141. package/esm2015/collections/lib/components/collections.directive.js +43 -0
  142. package/esm2015/collections/lib/interfaces/collection.interface.js +2 -0
  143. package/esm2015/collections/lib/providers/api-collection.provider.js +69 -0
  144. package/esm2015/collections/lib/providers/collection.provider.js +14 -0
  145. package/esm2015/collections/lib/providers/local-collection.provider.js +16 -0
  146. package/esm2015/collections/public_api.js +10 -0
  147. package/esm2015/dashboard/bravobit-bb-foundation-dashboard.js +4 -4
  148. package/esm2015/dashboard/lib/dashboard/dashboard.component.js +64 -64
  149. package/esm2015/dashboard/lib/dashboard-header/dashboard-header.component.js +41 -41
  150. package/esm2015/dashboard/lib/dashboard-menu/dashboard-menu.component.js +39 -39
  151. package/esm2015/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.js +38 -38
  152. package/esm2015/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.js +83 -83
  153. package/esm2015/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.js +110 -110
  154. package/esm2015/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.js +71 -71
  155. package/esm2015/dashboard/lib/dashboard.module.js +47 -47
  156. package/esm2015/dashboard/public_api.js +9 -9
  157. package/esm2015/dialog/bravobit-bb-foundation-dialog.js +4 -4
  158. package/esm2015/dialog/lib/dialog-actions/dialog-actions.component.js +20 -20
  159. package/esm2015/dialog/lib/dialog-confirm/dialog-confirm.component.js +45 -45
  160. package/esm2015/dialog/lib/dialog-container/dialog-container.component.js +162 -162
  161. package/esm2015/dialog/lib/dialog-header/dialog-header.component.js +33 -33
  162. package/esm2015/dialog/lib/dialog-link/dialog-link.component.js +19 -19
  163. package/esm2015/dialog/lib/dialog-modal/dialog-modal.component.js +54 -54
  164. package/esm2015/dialog/lib/dialog-overlay/dialog-overlay.component.js +143 -143
  165. package/esm2015/dialog/lib/dialog.injector.js +18 -18
  166. package/esm2015/dialog/lib/dialog.insertion.js +16 -16
  167. package/esm2015/dialog/lib/dialog.interfaces.js +3 -3
  168. package/esm2015/dialog/lib/dialog.module.js +74 -74
  169. package/esm2015/dialog/lib/dialog.ref.js +22 -22
  170. package/esm2015/dialog/lib/dialog.service.js +77 -77
  171. package/esm2015/dialog/public_api.js +10 -10
  172. package/esm2015/elements/bravobit-bb-foundation-elements.js +4 -4
  173. package/esm2015/elements/lib/avatar/avatar.component.js +151 -151
  174. package/esm2015/elements/lib/button/button.component.js +79 -79
  175. package/esm2015/elements/lib/checkbox/checkbox.component.js +83 -83
  176. package/esm2015/elements/lib/date-picker/date-picker.component.js +322 -322
  177. package/esm2015/elements/lib/directives/addon.directive.js +29 -29
  178. package/esm2015/elements/lib/directives/autosize.directive.js +74 -74
  179. package/esm2015/elements/lib/directives/focus-trap.directive.js +77 -77
  180. package/esm2015/elements/lib/directives/focus.directive.js +39 -39
  181. package/esm2015/elements/lib/directives/form-submit.directive.js +53 -53
  182. package/esm2015/elements/lib/directives/input.directive.js +139 -139
  183. package/esm2015/elements/lib/directives/template.directive.js +28 -28
  184. package/esm2015/elements/lib/dropdown/dropdown.component.js +111 -111
  185. package/esm2015/elements/lib/elements.interfaces.js +4 -4
  186. package/esm2015/elements/lib/elements.module.js +177 -177
  187. package/esm2015/elements/lib/file-picker/file-picker.component.js +247 -247
  188. package/esm2015/elements/lib/form-control/form-control.component.js +58 -58
  189. package/esm2015/elements/lib/form-error/form-error.component.js +116 -116
  190. package/esm2015/elements/lib/form-group/form-group.component.js +27 -27
  191. package/esm2015/elements/lib/icon/icon.component.js +110 -110
  192. package/esm2015/elements/lib/image-picker/image-picker.component.js +119 -119
  193. package/esm2015/elements/lib/pipes/file-image.pipe.js +45 -45
  194. package/esm2015/elements/lib/pipes/file-size.pipe.js +28 -28
  195. package/esm2015/elements/lib/pipes/relative-time.pipe.js +96 -96
  196. package/esm2015/elements/lib/spinner/spinner.component.js +34 -34
  197. package/esm2015/elements/lib/tag/tag.component.js +26 -26
  198. package/esm2015/elements/public_api.js +26 -26
  199. package/esm2015/http/bravobit-bb-foundation-http.js +4 -4
  200. package/esm2015/http/lib/classes/http.config.js +31 -31
  201. package/esm2015/http/lib/classes/http.error.js +21 -21
  202. package/esm2015/http/lib/http.interfaces.js +2 -2
  203. package/esm2015/http/lib/http.module.js +43 -43
  204. package/esm2015/http/lib/interceptors/base-url.interceptor.js +52 -52
  205. package/esm2015/http/lib/interceptors/error.interceptor.js +33 -33
  206. package/esm2015/http/public_api.js +7 -7
  207. package/esm2015/lib/core/coercions/boolean-coercion.js +4 -4
  208. package/esm2015/lib/core/miscellaneous/regex.js +5 -5
  209. package/esm2015/lib/core/miscellaneous/validator.js +86 -86
  210. package/esm2015/lib/core/mixins/can-disable.js +16 -16
  211. package/esm2015/lib/core/mixins/can-hide-errors.js +16 -16
  212. package/esm2015/lib/core/mixins/can-load.js +16 -16
  213. package/esm2015/lib/core/mixins/constructor.js +2 -2
  214. package/esm2015/lib/core/mixins/has-error.js +16 -16
  215. package/esm2015/lib/core/mixins/is-focused.js +16 -16
  216. package/esm2015/lib/core/mixins/is-grouped.js +16 -16
  217. package/esm2015/lib/core/mixins/is-readonly.js +16 -16
  218. package/esm2015/lib/core/mixins/is-required.js +16 -16
  219. package/esm2015/lib/core/services/clipboard.service.js +72 -0
  220. package/esm2015/lib/core/services/exif.service.js +168 -168
  221. package/esm2015/lib/core/services/file-loader.service.js +90 -90
  222. package/esm2015/lib/core/services/image-converter.service.js +130 -130
  223. package/esm2015/lib/core/services/languages.service.js +74 -74
  224. package/esm2015/lib/core/services/network.service.js +56 -56
  225. package/esm2015/lib/core/services/patch.service.js +65 -65
  226. package/esm2015/lib/core/services/platform.service.js +42 -42
  227. package/esm2015/lib/core/tokens/accept-language.token.js +3 -3
  228. package/esm2015/lib/core/tokens/base-url.token.js +3 -3
  229. package/esm2015/lib/core/tokens/cookie.token.js +3 -3
  230. package/esm2015/lib/core/tokens/location.token.js +6 -6
  231. package/esm2015/lib/core/tokens/navigator.token.js +6 -6
  232. package/esm2015/lib/core/tokens/window.token.js +12 -12
  233. package/esm2015/localize/bravobit-bb-foundation-localize.js +4 -4
  234. package/esm2015/localize/lib/functions/date.function.js +18 -18
  235. package/esm2015/localize/lib/functions/lowercase.function.js +13 -13
  236. package/esm2015/localize/lib/functions/uppercase.function.js +13 -13
  237. package/esm2015/localize/lib/handlers/missing.handler.js +17 -17
  238. package/esm2015/localize/lib/interfaces/config.interfaces.js +10 -10
  239. package/esm2015/localize/lib/interfaces/dictionary.interfaces.js +8 -8
  240. package/esm2015/localize/lib/interfaces/functions.interfaces.js +8 -8
  241. package/esm2015/localize/lib/interfaces/handlers.interfaces.js +2 -2
  242. package/esm2015/localize/lib/interfaces/options.interfaces.js +6 -6
  243. package/esm2015/localize/lib/localizations/dutch.localization.js +53 -53
  244. package/esm2015/localize/lib/localizations/english.localization.js +53 -53
  245. package/esm2015/localize/lib/localize.dictionary.js +137 -137
  246. package/esm2015/localize/lib/localize.module.js +69 -69
  247. package/esm2015/localize/lib/localize.pipe.js +49 -49
  248. package/esm2015/localize/lib/localize.service.js +282 -282
  249. package/esm2015/localize/lib/views/localize-string/localize-string.component.js +99 -99
  250. package/esm2015/localize/lib/views/localize-template-or-string.directive.js +28 -28
  251. package/esm2015/localize/lib/views/localize-template.directive.js +21 -21
  252. package/esm2015/localize/public_api.js +18 -18
  253. package/esm2015/notifications/bravobit-bb-foundation-notifications.js +4 -4
  254. package/esm2015/notifications/lib/notifications-item/notifications-item.component.js +108 -108
  255. package/esm2015/notifications/lib/notifications-list/notifications-list.component.js +56 -56
  256. package/esm2015/notifications/lib/notifications.animations.js +28 -28
  257. package/esm2015/notifications/lib/notifications.injector.js +18 -18
  258. package/esm2015/notifications/lib/notifications.interfaces.js +20 -20
  259. package/esm2015/notifications/lib/notifications.module.js +31 -31
  260. package/esm2015/notifications/lib/notifications.service.js +145 -145
  261. package/esm2015/notifications/public_api.js +4 -4
  262. package/esm2015/public_api.js +30 -29
  263. package/esm2015/recaptcha/bravobit-bb-foundation-recaptcha.js +4 -4
  264. package/esm2015/recaptcha/lib/recaptcha/recaptcha.component.js +199 -199
  265. package/esm2015/recaptcha/lib/recaptcha-loader.service.js +93 -93
  266. package/esm2015/recaptcha/lib/recaptcha.interface.js +3 -3
  267. package/esm2015/recaptcha/lib/recaptcha.module.js +27 -27
  268. package/esm2015/recaptcha/public_api.js +5 -5
  269. package/esm2015/rxjs/bravobit-bb-foundation-rxjs.js +4 -4
  270. package/esm2015/rxjs/lib/operators/combine-latest-map.operator.js +7 -7
  271. package/esm2015/rxjs/lib/operators/filter-nil.operator.js +5 -5
  272. package/esm2015/rxjs/public_api.js +3 -3
  273. package/esm2015/storage/bravobit-bb-foundation-storage.js +4 -4
  274. package/esm2015/storage/lib/interfaces/attributes.interface.js +2 -2
  275. package/esm2015/storage/lib/interfaces/memory.interface.js +2 -2
  276. package/esm2015/storage/lib/interfaces/strategy.interface.js +2 -2
  277. package/esm2015/storage/lib/storage.service.js +111 -111
  278. package/esm2015/storage/lib/strategies/cookie-storage.strategy.js +143 -143
  279. package/esm2015/storage/lib/strategies/memory-storage.strategy.js +56 -56
  280. package/esm2015/storage/lib/strategies/polyfill-storage.strategy.js +102 -102
  281. package/esm2015/storage/public_api.js +8 -8
  282. package/esm2015/table/bravobit-bb-foundation-table.js +4 -4
  283. package/esm2015/table/lib/components/table/table.component.js +183 -183
  284. package/esm2015/table/lib/components/table-cell/table-cell.component.js +19 -19
  285. package/esm2015/table/lib/components/table-header-cell/table-header-cell.component.js +141 -141
  286. package/esm2015/table/lib/components/table-pager/table-pager.component.js +146 -146
  287. package/esm2015/table/lib/data/datasource.data.js +32 -32
  288. package/esm2015/table/lib/data/generic.data.js +73 -73
  289. package/esm2015/table/lib/interfaces/datasource.interface.js +2 -2
  290. package/esm2015/table/lib/interfaces/table.interfaces.js +2 -2
  291. package/esm2015/table/lib/table.module.js +39 -39
  292. package/esm2015/table/public_api.js +10 -10
  293. package/fesm2015/bravobit-bb-foundation-auth.js +915 -915
  294. package/fesm2015/bravobit-bb-foundation-auth.js.map +1 -1
  295. package/fesm2015/bravobit-bb-foundation-collections.js +447 -0
  296. package/fesm2015/bravobit-bb-foundation-collections.js.map +1 -0
  297. package/fesm2015/bravobit-bb-foundation-dashboard.js +434 -434
  298. package/fesm2015/bravobit-bb-foundation-dashboard.js.map +1 -1
  299. package/fesm2015/bravobit-bb-foundation-dialog.js +603 -603
  300. package/fesm2015/bravobit-bb-foundation-dialog.js.map +1 -1
  301. package/fesm2015/bravobit-bb-foundation-elements.js +2076 -2076
  302. package/fesm2015/bravobit-bb-foundation-elements.js.map +1 -1
  303. package/fesm2015/bravobit-bb-foundation-http.js +154 -154
  304. package/fesm2015/bravobit-bb-foundation-http.js.map +1 -1
  305. package/fesm2015/bravobit-bb-foundation-localize.js +796 -796
  306. package/fesm2015/bravobit-bb-foundation-localize.js.map +1 -1
  307. package/fesm2015/bravobit-bb-foundation-notifications.js +364 -364
  308. package/fesm2015/bravobit-bb-foundation-notifications.js.map +1 -1
  309. package/fesm2015/bravobit-bb-foundation-recaptcha.js +297 -297
  310. package/fesm2015/bravobit-bb-foundation-recaptcha.js.map +1 -1
  311. package/fesm2015/bravobit-bb-foundation-rxjs.js +7 -7
  312. package/fesm2015/bravobit-bb-foundation-rxjs.js.map +1 -1
  313. package/fesm2015/bravobit-bb-foundation-storage.js +399 -399
  314. package/fesm2015/bravobit-bb-foundation-storage.js.map +1 -1
  315. package/fesm2015/bravobit-bb-foundation-table.js +578 -578
  316. package/fesm2015/bravobit-bb-foundation-table.js.map +1 -1
  317. package/fesm2015/bravobit-bb-foundation.js +854 -785
  318. package/fesm2015/bravobit-bb-foundation.js.map +1 -1
  319. package/http/bravobit-bb-foundation-http.d.ts +5 -5
  320. package/http/lib/classes/http.config.d.ts +9 -9
  321. package/http/lib/classes/http.error.d.ts +7 -7
  322. package/http/lib/http.interfaces.d.ts +12 -12
  323. package/http/lib/http.module.d.ts +15 -15
  324. package/http/lib/interceptors/base-url.interceptor.d.ts +15 -15
  325. package/http/lib/interceptors/error.interceptor.d.ts +11 -11
  326. package/http/public_api.d.ts +6 -6
  327. package/lib/core/coercions/boolean-coercion.d.ts +1 -1
  328. package/lib/core/miscellaneous/regex.d.ts +4 -4
  329. package/lib/core/miscellaneous/validator.d.ts +13 -13
  330. package/lib/core/mixins/can-disable.d.ts +6 -6
  331. package/lib/core/mixins/can-hide-errors.d.ts +6 -6
  332. package/lib/core/mixins/can-load.d.ts +6 -6
  333. package/lib/core/mixins/constructor.d.ts +1 -1
  334. package/lib/core/mixins/has-error.d.ts +6 -6
  335. package/lib/core/mixins/is-focused.d.ts +6 -6
  336. package/lib/core/mixins/is-grouped.d.ts +6 -6
  337. package/lib/core/mixins/is-readonly.d.ts +6 -6
  338. package/lib/core/mixins/is-required.d.ts +6 -6
  339. package/lib/core/services/clipboard.service.d.ts +18 -0
  340. package/lib/core/services/exif.service.d.ts +15 -15
  341. package/lib/core/services/file-loader.service.d.ts +13 -13
  342. package/lib/core/services/image-converter.service.d.ts +21 -21
  343. package/lib/core/services/languages.service.d.ts +16 -16
  344. package/lib/core/services/network.service.d.ts +14 -14
  345. package/lib/core/services/patch.service.d.ts +16 -16
  346. package/lib/core/services/platform.service.d.ts +18 -18
  347. package/lib/core/tokens/accept-language.token.d.ts +2 -2
  348. package/lib/core/tokens/base-url.token.d.ts +2 -2
  349. package/lib/core/tokens/cookie.token.d.ts +2 -2
  350. package/lib/core/tokens/location.token.d.ts +2 -2
  351. package/lib/core/tokens/navigator.token.d.ts +2 -2
  352. package/lib/core/tokens/window.token.d.ts +2 -2
  353. package/localize/bravobit-bb-foundation-localize.d.ts +5 -5
  354. package/localize/lib/functions/date.function.d.ts +5 -5
  355. package/localize/lib/functions/lowercase.function.d.ts +5 -5
  356. package/localize/lib/functions/uppercase.function.d.ts +5 -5
  357. package/localize/lib/handlers/missing.handler.d.ts +6 -6
  358. package/localize/lib/interfaces/config.interfaces.d.ts +8 -8
  359. package/localize/lib/interfaces/dictionary.interfaces.d.ts +12 -12
  360. package/localize/lib/interfaces/functions.interfaces.d.ts +9 -9
  361. package/localize/lib/interfaces/handlers.interfaces.d.ts +6 -6
  362. package/localize/lib/interfaces/options.interfaces.d.ts +10 -10
  363. package/localize/lib/localizations/dutch.localization.d.ts +51 -51
  364. package/localize/lib/localizations/english.localization.d.ts +51 -51
  365. package/localize/lib/localize.dictionary.d.ts +24 -24
  366. package/localize/lib/localize.module.d.ts +18 -18
  367. package/localize/lib/localize.pipe.d.ts +12 -12
  368. package/localize/lib/localize.service.d.ts +51 -51
  369. package/localize/lib/views/localize-string/localize-string.component.d.ts +23 -23
  370. package/localize/lib/views/localize-template-or-string.directive.d.ts +10 -10
  371. package/localize/lib/views/localize-template.directive.d.ts +9 -9
  372. package/localize/public_api.d.ts +17 -17
  373. package/notifications/bravobit-bb-foundation-notifications.d.ts +5 -5
  374. package/notifications/lib/notifications-item/notifications-item.component.d.ts +34 -34
  375. package/notifications/lib/notifications-list/notifications-list.component.d.ts +16 -16
  376. package/notifications/lib/notifications.animations.d.ts +1 -1
  377. package/notifications/lib/notifications.injector.d.ts +8 -8
  378. package/notifications/lib/notifications.interfaces.d.ts +49 -49
  379. package/notifications/lib/notifications.module.d.ts +13 -13
  380. package/notifications/lib/notifications.service.d.ts +34 -34
  381. package/notifications/public_api.d.ts +3 -3
  382. package/package.json +5 -5
  383. package/public_api.d.ts +26 -25
  384. package/recaptcha/bravobit-bb-foundation-recaptcha.d.ts +5 -5
  385. package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +47 -47
  386. package/recaptcha/lib/recaptcha-loader.service.d.ts +22 -22
  387. package/recaptcha/lib/recaptcha.interface.d.ts +14 -14
  388. package/recaptcha/lib/recaptcha.module.d.ts +10 -10
  389. package/recaptcha/public_api.d.ts +4 -4
  390. package/rxjs/bravobit-bb-foundation-rxjs.d.ts +5 -5
  391. package/rxjs/lib/operators/combine-latest-map.operator.d.ts +8 -8
  392. package/rxjs/lib/operators/filter-nil.operator.d.ts +1 -1
  393. package/rxjs/public_api.d.ts +2 -2
  394. package/storage/bravobit-bb-foundation-storage.d.ts +5 -5
  395. package/storage/lib/interfaces/attributes.interface.d.ts +13 -13
  396. package/storage/lib/interfaces/memory.interface.d.ts +7 -7
  397. package/storage/lib/interfaces/strategy.interface.d.ts +17 -17
  398. package/storage/lib/storage.service.d.ts +26 -26
  399. package/storage/lib/strategies/cookie-storage.strategy.d.ts +20 -20
  400. package/storage/lib/strategies/memory-storage.strategy.d.ts +11 -11
  401. package/storage/lib/strategies/polyfill-storage.strategy.d.ts +15 -15
  402. package/storage/public_api.d.ts +7 -7
  403. package/table/bravobit-bb-foundation-table.d.ts +5 -5
  404. package/table/lib/components/table/table.component.d.ts +48 -48
  405. package/table/lib/components/table-cell/table-cell.component.d.ts +5 -5
  406. package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +29 -29
  407. package/table/lib/components/table-pager/table-pager.component.d.ts +41 -41
  408. package/table/lib/data/datasource.data.d.ts +14 -14
  409. package/table/lib/data/generic.data.d.ts +23 -23
  410. package/table/lib/interfaces/datasource.interface.d.ts +17 -17
  411. package/table/lib/interfaces/table.interfaces.d.ts +1 -1
  412. package/table/lib/table.module.d.ts +14 -14
  413. package/table/public_api.d.ts +9 -9
@@ -1,29 +1,29 @@
1
- import { Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class BbSuffix {
4
- }
5
- BbSuffix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
- BbSuffix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.4", type: BbSuffix, selector: "[bbSuffix]", host: { classAttribute: "bb-suffix" }, ngImport: i0 });
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbSuffix, decorators: [{
8
- type: Directive,
9
- args: [{
10
- selector: '[bbSuffix]',
11
- host: {
12
- 'class': 'bb-suffix'
13
- }
14
- }]
15
- }] });
16
- export class BbPrefix {
17
- }
18
- BbPrefix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
19
- BbPrefix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.4", type: BbPrefix, selector: "[bbPrefix]", host: { classAttribute: "bb-prefix" }, ngImport: i0 });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbPrefix, decorators: [{
21
- type: Directive,
22
- args: [{
23
- selector: '[bbPrefix]',
24
- host: {
25
- 'class': 'bb-prefix'
26
- }
27
- }]
28
- }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvYWRkb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBUXhDLE1BQU0sT0FBTyxRQUFROztxR0FBUixRQUFRO3lGQUFSLFFBQVE7MkZBQVIsUUFBUTtrQkFOcEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjs7QUFVRCxNQUFNLE9BQU8sUUFBUTs7cUdBQVIsUUFBUTt5RkFBUixRQUFROzJGQUFSLFFBQVE7a0JBTnBCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLElBQUksRUFBRTt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2JiU3VmZml4XScsXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgJ2NsYXNzJzogJ2JiLXN1ZmZpeCdcclxuICAgIH1cclxufSlcclxuZXhwb3J0IGNsYXNzIEJiU3VmZml4IHtcclxufVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tiYlByZWZpeF0nLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdjbGFzcyc6ICdiYi1wcmVmaXgnXHJcbiAgICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYlByZWZpeCB7XHJcbn1cclxuIl19
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BbSuffix {
4
+ }
5
+ BbSuffix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbSuffix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6
+ BbSuffix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: BbSuffix, selector: "[bbSuffix]", host: { classAttribute: "bb-suffix" }, ngImport: i0 });
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbSuffix, decorators: [{
8
+ type: Directive,
9
+ args: [{
10
+ selector: '[bbSuffix]',
11
+ host: {
12
+ 'class': 'bb-suffix'
13
+ }
14
+ }]
15
+ }] });
16
+ export class BbPrefix {
17
+ }
18
+ BbPrefix.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbPrefix, deps: [], target: i0.ɵɵFactoryTarget.Directive });
19
+ BbPrefix.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: BbPrefix, selector: "[bbPrefix]", host: { classAttribute: "bb-prefix" }, ngImport: i0 });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbPrefix, decorators: [{
21
+ type: Directive,
22
+ args: [{
23
+ selector: '[bbPrefix]',
24
+ host: {
25
+ 'class': 'bb-prefix'
26
+ }
27
+ }]
28
+ }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkb24uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvYWRkb24uZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBUXhDLE1BQU0sT0FBTyxRQUFROztzR0FBUixRQUFROzBGQUFSLFFBQVE7NEZBQVIsUUFBUTtrQkFOcEIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFO3dCQUNGLE9BQU8sRUFBRSxXQUFXO3FCQUN2QjtpQkFDSjs7QUFVRCxNQUFNLE9BQU8sUUFBUTs7c0dBQVIsUUFBUTswRkFBUixRQUFROzRGQUFSLFFBQVE7a0JBTnBCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLElBQUksRUFBRTt3QkFDRixPQUFPLEVBQUUsV0FBVztxQkFDdkI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiU3VmZml4XScsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItc3VmZml4J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgQmJTdWZmaXgge1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tiYlByZWZpeF0nLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2JiLXByZWZpeCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIEJiUHJlZml4IHtcbn1cbiJdfQ==
@@ -1,74 +1,74 @@
1
- import { Directive, HostBinding, HostListener, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class BbAutosize {
4
- constructor(_renderer, _elementRef) {
5
- this._renderer = _renderer;
6
- this._elementRef = _elementRef;
7
- // Min/max heights for the textarea.
8
- this.minHeight = null;
9
- this.maxHeight = null;
10
- this.rows = 1;
11
- }
12
- get element() {
13
- var _a;
14
- return (_a = this._elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement;
15
- }
16
- ngAfterViewInit() {
17
- // Update the styles after the DOM has loaded.
18
- this.updateStyles();
19
- }
20
- onWindowResize() {
21
- // Update the styles when the window is resized.
22
- this.updateStyles();
23
- }
24
- onInputReceived() {
25
- // Update the styles after the textarea received input.
26
- this.updateStyles();
27
- }
28
- updateStyles() {
29
- var _a, _b, _c;
30
- // Validate the element exists.
31
- if (!this.element) {
32
- return;
33
- }
34
- // Calculate border height which is not included in the scroll height.
35
- const borderHeight = ((_a = this.element) === null || _a === void 0 ? void 0 : _a.offsetHeight) - ((_b = this.element) === null || _b === void 0 ? void 0 : _b.clientHeight);
36
- // Reset textarea height to auto that correctly calculate the new height.
37
- this.setHeight('auto');
38
- // Set new height.
39
- this.setHeight(`${((_c = this.element) === null || _c === void 0 ? void 0 : _c.scrollHeight) + borderHeight}px`);
40
- }
41
- setHeight(value) {
42
- this._renderer.setStyle(this.element, 'height', value);
43
- }
44
- }
45
- BbAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbAutosize, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
46
- BbAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.4", type: BbAutosize, selector: "textarea[bbAutosize]", inputs: { minHeight: "minHeight", maxHeight: "maxHeight", rows: "rows" }, host: { listeners: { "window:resize": "onWindowResize()", "input": "onInputReceived()" }, properties: { "style.min-height": "this.minHeight", "style.max-height": "this.maxHeight", "rows": "this.rows" } }, ngImport: i0 });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbAutosize, decorators: [{
48
- type: Directive,
49
- args: [{
50
- selector: 'textarea[bbAutosize]'
51
- }]
52
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { minHeight: [{
53
- type: Input
54
- }, {
55
- type: HostBinding,
56
- args: ['style.min-height']
57
- }], maxHeight: [{
58
- type: Input
59
- }, {
60
- type: HostBinding,
61
- args: ['style.max-height']
62
- }], rows: [{
63
- type: Input
64
- }, {
65
- type: HostBinding,
66
- args: ['rows']
67
- }], onWindowResize: [{
68
- type: HostListener,
69
- args: ['window:resize']
70
- }], onInputReceived: [{
71
- type: HostListener,
72
- args: ['input']
73
- }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3NpemUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvYXV0b3NpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFZLE1BQU0sZUFBZSxDQUFDOztBQUtoSCxNQUFNLE9BQU8sVUFBVTtJQU9uQixZQUFvQixTQUFvQixFQUNwQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBTjNDLG9DQUFvQztRQUNNLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQzVDLFNBQUksR0FBVyxDQUFDLENBQUM7SUFJL0MsQ0FBQztJQUVELElBQUksT0FBTzs7UUFDUCxPQUFPLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsYUFBb0MsQ0FBQztJQUNsRSxDQUFDO0lBRUQsZUFBZTtRQUNYLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELGNBQWM7UUFDVixnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHRCxlQUFlO1FBQ1gsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWTs7UUFDaEIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBRUQsc0VBQXNFO1FBQ3RFLE1BQU0sWUFBWSxHQUFHLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxZQUFZLEtBQUcsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxZQUFZLENBQUEsQ0FBQztRQUU3RSx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2QixrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxZQUFZLElBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7dUdBbERRLFVBQVU7MkZBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUh0QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ25DO3lIQUk2QyxTQUFTO3NCQUFsRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDRSxTQUFTO3NCQUFsRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDVixJQUFJO3NCQUFqQyxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLE1BQU07Z0JBZ0I1QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZTtnQkFPN0IsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAndGV4dGFyZWFbYmJBdXRvc2l6ZV0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYkF1dG9zaXplIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgLy8gTWluL21heCBoZWlnaHRzIGZvciB0aGUgdGV4dGFyZWEuXHJcbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ3N0eWxlLm1pbi1oZWlnaHQnKSBtaW5IZWlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gICAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtaGVpZ2h0JykgbWF4SGVpZ2h0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygncm93cycpIHJvd3M6IG51bWJlciA9IDE7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZWxlbWVudCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICAvLyBVcGRhdGUgdGhlIHN0eWxlcyBhZnRlciB0aGUgRE9NIGhhcyBsb2FkZWQuXHJcbiAgICAgICAgdGhpcy51cGRhdGVTdHlsZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcclxuICAgIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc3R5bGVzIHdoZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkLlxyXG4gICAgICAgIHRoaXMudXBkYXRlU3R5bGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignaW5wdXQnKVxyXG4gICAgb25JbnB1dFJlY2VpdmVkKCkge1xyXG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc3R5bGVzIGFmdGVyIHRoZSB0ZXh0YXJlYSByZWNlaXZlZCBpbnB1dC5cclxuICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlU3R5bGVzKCkge1xyXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBlbGVtZW50IGV4aXN0cy5cclxuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDYWxjdWxhdGUgYm9yZGVyIGhlaWdodCB3aGljaCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHNjcm9sbCBoZWlnaHQuXHJcbiAgICAgICAgY29uc3QgYm9yZGVySGVpZ2h0ID0gdGhpcy5lbGVtZW50Py5vZmZzZXRIZWlnaHQgLSB0aGlzLmVsZW1lbnQ/LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAgICAgLy8gUmVzZXQgdGV4dGFyZWEgaGVpZ2h0IHRvIGF1dG8gdGhhdCBjb3JyZWN0bHkgY2FsY3VsYXRlIHRoZSBuZXcgaGVpZ2h0LlxyXG4gICAgICAgIHRoaXMuc2V0SGVpZ2h0KCdhdXRvJyk7XHJcblxyXG4gICAgICAgIC8vIFNldCBuZXcgaGVpZ2h0LlxyXG4gICAgICAgIHRoaXMuc2V0SGVpZ2h0KGAke3RoaXMuZWxlbWVudD8uc2Nyb2xsSGVpZ2h0ICsgYm9yZGVySGVpZ2h0fXB4YCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRIZWlnaHQodmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudCwgJ2hlaWdodCcsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
1
+ import { Directive, HostBinding, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class BbAutosize {
4
+ constructor(_renderer, _elementRef) {
5
+ this._renderer = _renderer;
6
+ this._elementRef = _elementRef;
7
+ // Min/max heights for the textarea.
8
+ this.minHeight = null;
9
+ this.maxHeight = null;
10
+ this.rows = 1;
11
+ }
12
+ get element() {
13
+ var _a;
14
+ return (_a = this._elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement;
15
+ }
16
+ ngAfterViewInit() {
17
+ // Update the styles after the DOM has loaded.
18
+ this.updateStyles();
19
+ }
20
+ onWindowResize() {
21
+ // Update the styles when the window is resized.
22
+ this.updateStyles();
23
+ }
24
+ onInputReceived() {
25
+ // Update the styles after the textarea received input.
26
+ this.updateStyles();
27
+ }
28
+ updateStyles() {
29
+ var _a, _b, _c;
30
+ // Validate the element exists.
31
+ if (!this.element) {
32
+ return;
33
+ }
34
+ // Calculate border height which is not included in the scroll height.
35
+ const borderHeight = ((_a = this.element) === null || _a === void 0 ? void 0 : _a.offsetHeight) - ((_b = this.element) === null || _b === void 0 ? void 0 : _b.clientHeight);
36
+ // Reset textarea height to auto that correctly calculate the new height.
37
+ this.setHeight('auto');
38
+ // Set new height.
39
+ this.setHeight(`${((_c = this.element) === null || _c === void 0 ? void 0 : _c.scrollHeight) + borderHeight}px`);
40
+ }
41
+ setHeight(value) {
42
+ this._renderer.setStyle(this.element, 'height', value);
43
+ }
44
+ }
45
+ BbAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbAutosize, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
46
+ BbAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: BbAutosize, selector: "textarea[bbAutosize]", inputs: { minHeight: "minHeight", maxHeight: "maxHeight", rows: "rows" }, host: { listeners: { "window:resize": "onWindowResize()", "input": "onInputReceived()" }, properties: { "style.min-height": "this.minHeight", "style.max-height": "this.maxHeight", "rows": "this.rows" } }, ngImport: i0 });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbAutosize, decorators: [{
48
+ type: Directive,
49
+ args: [{
50
+ selector: 'textarea[bbAutosize]'
51
+ }]
52
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { minHeight: [{
53
+ type: Input
54
+ }, {
55
+ type: HostBinding,
56
+ args: ['style.min-height']
57
+ }], maxHeight: [{
58
+ type: Input
59
+ }, {
60
+ type: HostBinding,
61
+ args: ['style.max-height']
62
+ }], rows: [{
63
+ type: Input
64
+ }, {
65
+ type: HostBinding,
66
+ args: ['rows']
67
+ }], onWindowResize: [{
68
+ type: HostListener,
69
+ args: ['window:resize']
70
+ }], onInputReceived: [{
71
+ type: HostListener,
72
+ args: ['input']
73
+ }] } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3NpemUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvYXV0b3NpemUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFjLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFZLE1BQU0sZUFBZSxDQUFDOztBQUtoSCxNQUFNLE9BQU8sVUFBVTtJQU9uQixZQUFvQixTQUFvQixFQUNwQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBTjNDLG9DQUFvQztRQUNNLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQzVDLFNBQUksR0FBVyxDQUFDLENBQUM7SUFJL0MsQ0FBQztJQUVELElBQUksT0FBTzs7UUFDUCxPQUFPLE1BQUEsSUFBSSxDQUFDLFdBQVcsMENBQUUsYUFBb0MsQ0FBQztJQUNsRSxDQUFDO0lBRUQsZUFBZTtRQUNYLDhDQUE4QztRQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUdELGNBQWM7UUFDVixnREFBZ0Q7UUFDaEQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFHRCxlQUFlO1FBQ1gsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWTs7UUFDaEIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2YsT0FBTztTQUNWO1FBRUQsc0VBQXNFO1FBQ3RFLE1BQU0sWUFBWSxHQUFHLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxZQUFZLEtBQUcsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxZQUFZLENBQUEsQ0FBQztRQUU3RSx5RUFBeUU7UUFDekUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV2QixrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxZQUFZLElBQUcsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRU8sU0FBUyxDQUFDLEtBQWE7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7d0dBbERRLFVBQVU7NEZBQVYsVUFBVTs0RkFBVixVQUFVO2tCQUh0QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxzQkFBc0I7aUJBQ25DO3lIQUk2QyxTQUFTO3NCQUFsRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDRSxTQUFTO3NCQUFsRCxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLGtCQUFrQjtnQkFDVixJQUFJO3NCQUFqQyxLQUFLOztzQkFBSSxXQUFXO3VCQUFDLE1BQU07Z0JBZ0I1QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZTtnQkFPN0IsZUFBZTtzQkFEZCxZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIFJlbmRlcmVyMn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAndGV4dGFyZWFbYmJBdXRvc2l6ZV0nXG59KVxuZXhwb3J0IGNsYXNzIEJiQXV0b3NpemUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICAgIC8vIE1pbi9tYXggaGVpZ2h0cyBmb3IgdGhlIHRleHRhcmVhLlxuICAgIEBJbnB1dCgpIEBIb3N0QmluZGluZygnc3R5bGUubWluLWhlaWdodCcpIG1pbkhlaWdodDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtaGVpZ2h0JykgbWF4SGVpZ2h0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBASG9zdEJpbmRpbmcoJ3Jvd3MnKSByb3dzOiBudW1iZXIgPSAxO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxUZXh0QXJlYUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICAvLyBVcGRhdGUgdGhlIHN0eWxlcyBhZnRlciB0aGUgRE9NIGhhcyBsb2FkZWQuXG4gICAgICAgIHRoaXMudXBkYXRlU3R5bGVzKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgb25XaW5kb3dSZXNpemUoKSB7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc3R5bGVzIHdoZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkLlxuICAgICAgICB0aGlzLnVwZGF0ZVN0eWxlcygpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2lucHV0JylcbiAgICBvbklucHV0UmVjZWl2ZWQoKSB7XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgc3R5bGVzIGFmdGVyIHRoZSB0ZXh0YXJlYSByZWNlaXZlZCBpbnB1dC5cbiAgICAgICAgdGhpcy51cGRhdGVTdHlsZXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVN0eWxlcygpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGVsZW1lbnQgZXhpc3RzLlxuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIGJvcmRlciBoZWlnaHQgd2hpY2ggaXMgbm90IGluY2x1ZGVkIGluIHRoZSBzY3JvbGwgaGVpZ2h0LlxuICAgICAgICBjb25zdCBib3JkZXJIZWlnaHQgPSB0aGlzLmVsZW1lbnQ/Lm9mZnNldEhlaWdodCAtIHRoaXMuZWxlbWVudD8uY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgIC8vIFJlc2V0IHRleHRhcmVhIGhlaWdodCB0byBhdXRvIHRoYXQgY29ycmVjdGx5IGNhbGN1bGF0ZSB0aGUgbmV3IGhlaWdodC5cbiAgICAgICAgdGhpcy5zZXRIZWlnaHQoJ2F1dG8nKTtcblxuICAgICAgICAvLyBTZXQgbmV3IGhlaWdodC5cbiAgICAgICAgdGhpcy5zZXRIZWlnaHQoYCR7dGhpcy5lbGVtZW50Py5zY3JvbGxIZWlnaHQgKyBib3JkZXJIZWlnaHR9cHhgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhlaWdodCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFN0eWxlKHRoaXMuZWxlbWVudCwgJ2hlaWdodCcsIHZhbHVlKTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -1,77 +1,77 @@
1
- import { Directive, HostListener } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@bravobit/bb-foundation";
4
- export class BbFocusTrap {
5
- constructor(_platform, _elementRef) {
6
- this._platform = _platform;
7
- this._elementRef = _elementRef;
8
- this._focusableElements = [
9
- 'a[href]',
10
- 'area[href]',
11
- 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',
12
- 'select:not([disabled]):not([aria-hidden])',
13
- 'textarea:not([disabled]):not([aria-hidden])',
14
- 'button:not([disabled]):not([aria-hidden])',
15
- 'iframe',
16
- 'object',
17
- 'embed',
18
- '[contenteditable]',
19
- '[tabindex]:not([tabindex^="-"])'
20
- ];
21
- this.focus = (element) => {
22
- return element && element.focus && element.focus();
23
- };
24
- this.isTabEvent = (event) => {
25
- return event.key === 'Tab' || event.keyCode === 9;
26
- };
27
- }
28
- onKeydown(event) {
29
- // Validate it is a tab event.
30
- if (!this.isTabEvent(event)) {
31
- return;
32
- }
33
- // Trap the focus inside the element.
34
- return this.trapFocus(event);
35
- }
36
- trapFocus(event) {
37
- // Validate that the DOM is available.
38
- if (!this._platform.isBrowser) {
39
- return;
40
- }
41
- // Get all focusable nodes.
42
- const focusableNodes = this.getFocusableNodes();
43
- // Focus the first available element if the focus
44
- // is not in the modal.
45
- if (!this.element.contains(document.activeElement)) {
46
- return this.focus(focusableNodes[0]);
47
- }
48
- const focusedItemIndex = focusableNodes.indexOf(document.activeElement);
49
- if (event.shiftKey && focusedItemIndex === 0) {
50
- this.focus(focusableNodes[focusableNodes.length - 1]);
51
- return event.preventDefault();
52
- }
53
- if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {
54
- this.focus(focusableNodes[0]);
55
- return event.preventDefault();
56
- }
57
- }
58
- get element() {
59
- return this._elementRef.nativeElement;
60
- }
61
- getFocusableNodes() {
62
- const nodes = this.element.querySelectorAll(this._focusableElements);
63
- return Array(...nodes);
64
- }
65
- }
66
- BbFocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbFocusTrap, deps: [{ token: i1.Platform }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
67
- BbFocusTrap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.4", type: BbFocusTrap, selector: "[bbFocusTrap]", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbFocusTrap, decorators: [{
69
- type: Directive,
70
- args: [{
71
- selector: '[bbFocusTrap]'
72
- }]
73
- }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.ElementRef }]; }, propDecorators: { onKeydown: [{
74
- type: HostListener,
75
- args: ['keydown', ['$event']]
76
- }] } });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZGlyZWN0aXZlcy9mb2N1cy10cmFwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTWxFLE1BQU0sT0FBTyxXQUFXO0lBZ0JwQixZQUFvQixTQUFtQixFQUNuQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBZjFCLHVCQUFrQixHQUFHO1lBQ2xDLFNBQVM7WUFDVCxZQUFZO1lBQ1osK0RBQStEO1lBQy9ELDJDQUEyQztZQUMzQyw2Q0FBNkM7WUFDN0MsMkNBQTJDO1lBQzNDLFFBQVE7WUFDUixRQUFRO1lBQ1IsT0FBTztZQUNQLG1CQUFtQjtZQUNuQixpQ0FBaUM7U0FDcEMsQ0FBQztRQXNETSxVQUFLLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUU7WUFDckMsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkQsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQzFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO0lBeERGLENBQUM7SUFHRCxTQUFTLENBQUMsS0FBb0I7UUFDMUIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUVELHFDQUFxQztRQUNyQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQzNCLE9BQU87U0FDVjtRQUVELDJCQUEyQjtRQUMzQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVoRCxpREFBaUQ7UUFDakQsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLGdCQUFnQixLQUFLLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsSUFBWSxPQUFPO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckUsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDOzt3R0FsRVEsV0FBVzs0RkFBWCxXQUFXOzJGQUFYLFdBQVc7a0JBSHZCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7aUJBQzVCO3dIQXNCRyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbYmJGb2N1c1RyYXBdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQmJGb2N1c1RyYXAge1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2ZvY3VzYWJsZUVsZW1lbnRzID0gW1xyXG4gICAgICAgICdhW2hyZWZdJyxcclxuICAgICAgICAnYXJlYVtocmVmXScsXHJcbiAgICAgICAgJ2lucHV0Om5vdChbZGlzYWJsZWRdKTpub3QoW3R5cGU9XCJoaWRkZW5cIl0pOm5vdChbYXJpYS1oaWRkZW5dKScsXHJcbiAgICAgICAgJ3NlbGVjdDpub3QoW2Rpc2FibGVkXSk6bm90KFthcmlhLWhpZGRlbl0pJyxcclxuICAgICAgICAndGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pOm5vdChbYXJpYS1oaWRkZW5dKScsXHJcbiAgICAgICAgJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSk6bm90KFthcmlhLWhpZGRlbl0pJyxcclxuICAgICAgICAnaWZyYW1lJyxcclxuICAgICAgICAnb2JqZWN0JyxcclxuICAgICAgICAnZW1iZWQnLFxyXG4gICAgICAgICdbY29udGVudGVkaXRhYmxlXScsXHJcbiAgICAgICAgJ1t0YWJpbmRleF06bm90KFt0YWJpbmRleF49XCItXCJdKSdcclxuICAgIF07XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxyXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgLy8gVmFsaWRhdGUgaXQgaXMgYSB0YWIgZXZlbnQuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzVGFiRXZlbnQoZXZlbnQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRyYXAgdGhlIGZvY3VzIGluc2lkZSB0aGUgZWxlbWVudC5cclxuICAgICAgICByZXR1cm4gdGhpcy50cmFwRm9jdXMoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYXBGb2N1cyhldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIERPTSBpcyBhdmFpbGFibGUuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gR2V0IGFsbCBmb2N1c2FibGUgbm9kZXMuXHJcbiAgICAgICAgY29uc3QgZm9jdXNhYmxlTm9kZXMgPSB0aGlzLmdldEZvY3VzYWJsZU5vZGVzKCk7XHJcblxyXG4gICAgICAgIC8vIEZvY3VzIHRoZSBmaXJzdCBhdmFpbGFibGUgZWxlbWVudCBpZiB0aGUgZm9jdXNcclxuICAgICAgICAvLyBpcyBub3QgaW4gdGhlIG1vZGFsLlxyXG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZvY3VzKGZvY3VzYWJsZU5vZGVzWzBdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGZvY3VzZWRJdGVtSW5kZXggPSBmb2N1c2FibGVOb2Rlcy5pbmRleE9mKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xyXG5cclxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgZm9jdXNlZEl0ZW1JbmRleCA9PT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzKGZvY3VzYWJsZU5vZGVzW2ZvY3VzYWJsZU5vZGVzLmxlbmd0aCAtIDFdKTtcclxuICAgICAgICAgICAgcmV0dXJuIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIWV2ZW50LnNoaWZ0S2V5ICYmIGZvY3VzZWRJdGVtSW5kZXggPT09IGZvY3VzYWJsZU5vZGVzLmxlbmd0aCAtIDEpIHtcclxuICAgICAgICAgICAgdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1swXSk7XHJcbiAgICAgICAgICAgIHJldHVybiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldCBlbGVtZW50KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRGb2N1c2FibGVOb2RlcygpIHtcclxuICAgICAgICBjb25zdCBub2RlcyA9IHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuX2ZvY3VzYWJsZUVsZW1lbnRzKTtcclxuICAgICAgICByZXR1cm4gQXJyYXkoLi4ubm9kZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZm9jdXMgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpID0+IHtcclxuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmZvY3VzICYmIGVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSBpc1RhYkV2ZW50ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGV2ZW50LmtleSA9PT0gJ1RhYicgfHwgZXZlbnQua2V5Q29kZSA9PT0gOTtcclxuICAgIH07XHJcblxyXG59XHJcbiJdfQ==
1
+ import { Directive, HostListener } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@bravobit/bb-foundation";
4
+ export class BbFocusTrap {
5
+ constructor(_platform, _elementRef) {
6
+ this._platform = _platform;
7
+ this._elementRef = _elementRef;
8
+ this._focusableElements = [
9
+ 'a[href]',
10
+ 'area[href]',
11
+ 'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',
12
+ 'select:not([disabled]):not([aria-hidden])',
13
+ 'textarea:not([disabled]):not([aria-hidden])',
14
+ 'button:not([disabled]):not([aria-hidden])',
15
+ 'iframe',
16
+ 'object',
17
+ 'embed',
18
+ '[contenteditable]',
19
+ '[tabindex]:not([tabindex^="-"])'
20
+ ];
21
+ this.focus = (element) => {
22
+ return element && element.focus && element.focus();
23
+ };
24
+ this.isTabEvent = (event) => {
25
+ return event.key === 'Tab' || event.keyCode === 9;
26
+ };
27
+ }
28
+ onKeydown(event) {
29
+ // Validate it is a tab event.
30
+ if (!this.isTabEvent(event)) {
31
+ return;
32
+ }
33
+ // Trap the focus inside the element.
34
+ return this.trapFocus(event);
35
+ }
36
+ trapFocus(event) {
37
+ // Validate that the DOM is available.
38
+ if (!this._platform.isBrowser) {
39
+ return;
40
+ }
41
+ // Get all focusable nodes.
42
+ const focusableNodes = this.getFocusableNodes();
43
+ // Focus the first available element if the focus
44
+ // is not in the modal.
45
+ if (!this.element.contains(document.activeElement)) {
46
+ return this.focus(focusableNodes[0]);
47
+ }
48
+ const focusedItemIndex = focusableNodes.indexOf(document.activeElement);
49
+ if (event.shiftKey && focusedItemIndex === 0) {
50
+ this.focus(focusableNodes[focusableNodes.length - 1]);
51
+ return event.preventDefault();
52
+ }
53
+ if (!event.shiftKey && focusedItemIndex === focusableNodes.length - 1) {
54
+ this.focus(focusableNodes[0]);
55
+ return event.preventDefault();
56
+ }
57
+ }
58
+ get element() {
59
+ return this._elementRef.nativeElement;
60
+ }
61
+ getFocusableNodes() {
62
+ const nodes = this.element.querySelectorAll(this._focusableElements);
63
+ return Array(...nodes);
64
+ }
65
+ }
66
+ BbFocusTrap.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbFocusTrap, deps: [{ token: i1.Platform }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
67
+ BbFocusTrap.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: BbFocusTrap, selector: "[bbFocusTrap]", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 });
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbFocusTrap, decorators: [{
69
+ type: Directive,
70
+ args: [{
71
+ selector: '[bbFocusTrap]'
72
+ }]
73
+ }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.ElementRef }]; }, propDecorators: { onKeydown: [{
74
+ type: HostListener,
75
+ args: ['keydown', ['$event']]
76
+ }] } });
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2VsZW1lbnRzL3NyYy9saWIvZGlyZWN0aXZlcy9mb2N1cy10cmFwLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTWxFLE1BQU0sT0FBTyxXQUFXO0lBZ0JwQixZQUFvQixTQUFtQixFQUNuQixXQUF1QjtRQUR2QixjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBZjFCLHVCQUFrQixHQUFHO1lBQ2xDLFNBQVM7WUFDVCxZQUFZO1lBQ1osK0RBQStEO1lBQy9ELDJDQUEyQztZQUMzQyw2Q0FBNkM7WUFDN0MsMkNBQTJDO1lBQzNDLFFBQVE7WUFDUixRQUFRO1lBQ1IsT0FBTztZQUNQLG1CQUFtQjtZQUNuQixpQ0FBaUM7U0FDcEMsQ0FBQztRQXNETSxVQUFLLEdBQUcsQ0FBQyxPQUFvQixFQUFFLEVBQUU7WUFDckMsT0FBTyxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDdkQsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLENBQUMsS0FBb0IsRUFBRSxFQUFFO1lBQzFDLE9BQU8sS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUFDO0lBeERGLENBQUM7SUFHRCxTQUFTLENBQUMsS0FBb0I7UUFDMUIsOEJBQThCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLE9BQU87U0FDVjtRQUVELHFDQUFxQztRQUNyQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFO1lBQzNCLE9BQU87U0FDVjtRQUVELDJCQUEyQjtRQUMzQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVoRCxpREFBaUQ7UUFDakQsdUJBQXVCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDaEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksZ0JBQWdCLEtBQUssQ0FBQyxFQUFFO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxPQUFPLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUNqQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLGdCQUFnQixLQUFLLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsT0FBTyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDakM7SUFDTCxDQUFDO0lBRUQsSUFBWSxPQUFPO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckUsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUMzQixDQUFDOzt5R0FsRVEsV0FBVzs2RkFBWCxXQUFXOzRGQUFYLFdBQVc7a0JBSHZCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7aUJBQzVCO3dIQXNCRyxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiRm9jdXNUcmFwXSdcbn0pXG5leHBvcnQgY2xhc3MgQmJGb2N1c1RyYXAge1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBfZm9jdXNhYmxlRWxlbWVudHMgPSBbXG4gICAgICAgICdhW2hyZWZdJyxcbiAgICAgICAgJ2FyZWFbaHJlZl0nLFxuICAgICAgICAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdHlwZT1cImhpZGRlblwiXSk6bm90KFthcmlhLWhpZGRlbl0pJyxcbiAgICAgICAgJ3NlbGVjdDpub3QoW2Rpc2FibGVkXSk6bm90KFthcmlhLWhpZGRlbl0pJyxcbiAgICAgICAgJ3RleHRhcmVhOm5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSknLFxuICAgICAgICAnYnV0dG9uOm5vdChbZGlzYWJsZWRdKTpub3QoW2FyaWEtaGlkZGVuXSknLFxuICAgICAgICAnaWZyYW1lJyxcbiAgICAgICAgJ29iamVjdCcsXG4gICAgICAgICdlbWJlZCcsXG4gICAgICAgICdbY29udGVudGVkaXRhYmxlXScsXG4gICAgICAgICdbdGFiaW5kZXhdOm5vdChbdGFiaW5kZXhePVwiLVwiXSknXG4gICAgXTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX3BsYXRmb3JtOiBQbGF0Zm9ybSxcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIGl0IGlzIGEgdGFiIGV2ZW50LlxuICAgICAgICBpZiAoIXRoaXMuaXNUYWJFdmVudChldmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRyYXAgdGhlIGZvY3VzIGluc2lkZSB0aGUgZWxlbWVudC5cbiAgICAgICAgcmV0dXJuIHRoaXMudHJhcEZvY3VzKGV2ZW50KTtcbiAgICB9XG5cbiAgICB0cmFwRm9jdXMoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgRE9NIGlzIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdldCBhbGwgZm9jdXNhYmxlIG5vZGVzLlxuICAgICAgICBjb25zdCBmb2N1c2FibGVOb2RlcyA9IHRoaXMuZ2V0Rm9jdXNhYmxlTm9kZXMoKTtcblxuICAgICAgICAvLyBGb2N1cyB0aGUgZmlyc3QgYXZhaWxhYmxlIGVsZW1lbnQgaWYgdGhlIGZvY3VzXG4gICAgICAgIC8vIGlzIG5vdCBpbiB0aGUgbW9kYWwuXG4gICAgICAgIGlmICghdGhpcy5lbGVtZW50LmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1swXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb2N1c2VkSXRlbUluZGV4ID0gZm9jdXNhYmxlTm9kZXMuaW5kZXhPZihkb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkgJiYgZm9jdXNlZEl0ZW1JbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1tmb2N1c2FibGVOb2Rlcy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZXZlbnQuc2hpZnRLZXkgJiYgZm9jdXNlZEl0ZW1JbmRleCA9PT0gZm9jdXNhYmxlTm9kZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1cyhmb2N1c2FibGVOb2Rlc1swXSk7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGb2N1c2FibGVOb2RlcygpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLl9mb2N1c2FibGVFbGVtZW50cyk7XG4gICAgICAgIHJldHVybiBBcnJheSguLi5ub2Rlcyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1cyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICByZXR1cm4gZWxlbWVudCAmJiBlbGVtZW50LmZvY3VzICYmIGVsZW1lbnQuZm9jdXMoKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBpc1RhYkV2ZW50ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudC5rZXkgPT09ICdUYWInIHx8IGV2ZW50LmtleUNvZGUgPT09IDk7XG4gICAgfTtcblxufVxuIl19
@@ -1,39 +1,39 @@
1
- import { Directive } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@bravobit/bb-foundation";
4
- export class BbFocus {
5
- constructor(_zone, _platform, _elementRef) {
6
- this._zone = _zone;
7
- this._platform = _platform;
8
- this._elementRef = _elementRef;
9
- }
10
- get nativeElement() {
11
- return this._elementRef.nativeElement;
12
- }
13
- ngAfterViewInit() {
14
- // Run the method outside the Angular zone.
15
- this._zone.runOutsideAngular(() => this.focus());
16
- }
17
- focus() {
18
- // Check if set timeout exists and the user is
19
- // using the site on desktop devices.
20
- if (!this._platform.isDesktop || !setTimeout) {
21
- return;
22
- }
23
- // Check if the element and the focus method exist, if so focus the element.
24
- if (!this.nativeElement || !this.nativeElement.focus) {
25
- return;
26
- }
27
- // Execute the focus method in a timeout.
28
- setTimeout(() => this.nativeElement.focus(), 0);
29
- }
30
- }
31
- BbFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbFocus, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
32
- BbFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.0.4", type: BbFocus, selector: "[bbFocus]", ngImport: i0 });
33
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.4", ngImport: i0, type: BbFocus, decorators: [{
34
- type: Directive,
35
- args: [{
36
- selector: '[bbFocus]'
37
- }]
38
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: i0.ElementRef }]; } });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvZm9jdXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7O0FBTTNFLE1BQU0sT0FBTyxPQUFPO0lBRWhCLFlBQW9CLEtBQWEsRUFDYixTQUFtQixFQUNuQixXQUF1QjtRQUZ2QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUMzQyxDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztJQUVELGVBQWU7UUFDWCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sS0FBSztRQUNULDhDQUE4QztRQUM5QyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzFDLE9BQU87U0FDVjtRQUVELDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ2xELE9BQU87U0FDVjtRQUVELHlDQUF5QztRQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDOztvR0E5QlEsT0FBTzt3RkFBUCxPQUFPOzJGQUFQLE9BQU87a0JBSG5CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbYmJGb2N1c10nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCYkZvY3VzIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfem9uZTogTmdab25lLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgLy8gUnVuIHRoZSBtZXRob2Qgb3V0c2lkZSB0aGUgQW5ndWxhciB6b25lLlxyXG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gdGhpcy5mb2N1cygpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZvY3VzKCkge1xyXG4gICAgICAgIC8vIENoZWNrIGlmIHNldCB0aW1lb3V0IGV4aXN0cyBhbmQgdGhlIHVzZXIgaXNcclxuICAgICAgICAvLyB1c2luZyB0aGUgc2l0ZSBvbiBkZXNrdG9wIGRldmljZXMuXHJcbiAgICAgICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Rlc2t0b3AgfHwgIXNldFRpbWVvdXQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGVsZW1lbnQgYW5kIHRoZSBmb2N1cyBtZXRob2QgZXhpc3QsIGlmIHNvIGZvY3VzIHRoZSBlbGVtZW50LlxyXG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVFbGVtZW50IHx8ICF0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgZm9jdXMgbWV0aG9kIGluIGEgdGltZW91dC5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@bravobit/bb-foundation";
4
+ export class BbFocus {
5
+ constructor(_zone, _platform, _elementRef) {
6
+ this._zone = _zone;
7
+ this._platform = _platform;
8
+ this._elementRef = _elementRef;
9
+ }
10
+ get nativeElement() {
11
+ return this._elementRef.nativeElement;
12
+ }
13
+ ngAfterViewInit() {
14
+ // Run the method outside the Angular zone.
15
+ this._zone.runOutsideAngular(() => this.focus());
16
+ }
17
+ focus() {
18
+ // Check if set timeout exists and the user is
19
+ // using the site on desktop devices.
20
+ if (!this._platform.isDesktop || !setTimeout) {
21
+ return;
22
+ }
23
+ // Check if the element and the focus method exist, if so focus the element.
24
+ if (!this.nativeElement || !this.nativeElement.focus) {
25
+ return;
26
+ }
27
+ // Execute the focus method in a timeout.
28
+ setTimeout(() => this.nativeElement.focus(), 0);
29
+ }
30
+ }
31
+ BbFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbFocus, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
32
+ BbFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.10", type: BbFocus, selector: "[bbFocus]", ngImport: i0 });
33
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.10", ngImport: i0, type: BbFocus, decorators: [{
34
+ type: Directive,
35
+ args: [{
36
+ selector: '[bbFocus]'
37
+ }]
38
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: i0.ElementRef }]; } });
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2RpcmVjdGl2ZXMvZm9jdXMuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQzs7O0FBTTNFLE1BQU0sT0FBTyxPQUFPO0lBRWhCLFlBQW9CLEtBQWEsRUFDYixTQUFtQixFQUNuQixXQUF1QjtRQUZ2QixVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQ2IsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtJQUMzQyxDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQztJQUVELGVBQWU7UUFDWCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU8sS0FBSztRQUNULDhDQUE4QztRQUM5QyxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzFDLE9BQU87U0FDVjtRQUVELDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ2xELE9BQU87U0FDVjtRQUVELHlDQUF5QztRQUN6QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDOztxR0E5QlEsT0FBTzt5RkFBUCxPQUFPOzRGQUFQLE9BQU87a0JBSG5CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLFdBQVc7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE5nWm9uZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbic7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2JiRm9jdXNdJ1xufSlcbmV4cG9ydCBjbGFzcyBCYkZvY3VzIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF96b25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgLy8gUnVuIHRoZSBtZXRob2Qgb3V0c2lkZSB0aGUgQW5ndWxhciB6b25lLlxuICAgICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuZm9jdXMoKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb2N1cygpIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgc2V0IHRpbWVvdXQgZXhpc3RzIGFuZCB0aGUgdXNlciBpc1xuICAgICAgICAvLyB1c2luZyB0aGUgc2l0ZSBvbiBkZXNrdG9wIGRldmljZXMuXG4gICAgICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNEZXNrdG9wIHx8ICFzZXRUaW1lb3V0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgZWxlbWVudCBhbmQgdGhlIGZvY3VzIG1ldGhvZCBleGlzdCwgaWYgc28gZm9jdXMgdGhlIGVsZW1lbnQuXG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVFbGVtZW50IHx8ICF0aGlzLm5hdGl2ZUVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEV4ZWN1dGUgdGhlIGZvY3VzIG1ldGhvZCBpbiBhIHRpbWVvdXQuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5uYXRpdmVFbGVtZW50LmZvY3VzKCksIDApO1xuICAgIH1cblxufVxuIl19