@bravobit/bb-foundation 0.23.5 → 0.23.7

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 (177) hide show
  1. package/auth/lib/auth.session.d.ts +5 -0
  2. package/auth/lib/permissions/permissions.service.d.ts +2 -0
  3. package/controls/lib/control-error/control-error.utils.d.ts +3 -0
  4. package/controls/lib/controls.module.d.ts +4 -2
  5. package/controls/lib/form-control/form-control/form-control.component.d.ts +0 -2
  6. package/controls/lib/radio/radio-button/radio-button.component.d.ts +24 -0
  7. package/controls/lib/radio/radio-group/radio-group.component.d.ts +53 -0
  8. package/controls/lib/radio/radio.module.d.ts +11 -0
  9. package/controls/lib/toggle/toggle/toggle.component.d.ts +45 -0
  10. package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +23 -0
  11. package/controls/lib/toggle/toggle.module.d.ts +10 -0
  12. package/controls/public_api.d.ts +7 -0
  13. package/elements/lib/avatar/avatar.component.d.ts +1 -1
  14. package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
  15. package/esm2020/auth/lib/auth.module.mjs +4 -4
  16. package/esm2020/auth/lib/auth.service.mjs +5 -5
  17. package/esm2020/auth/lib/auth.session.mjs +8 -1
  18. package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
  19. package/esm2020/auth/lib/directives/permission.directive.mjs +3 -3
  20. package/esm2020/auth/lib/guards/anonymous.guard.mjs +3 -3
  21. package/esm2020/auth/lib/guards/authenticated.guard.mjs +3 -3
  22. package/esm2020/auth/lib/guards/permission.guard.mjs +3 -3
  23. package/esm2020/auth/lib/permissions/permissions.service.mjs +26 -17
  24. package/esm2020/collections/lib/collections.module.mjs +4 -4
  25. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
  26. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
  27. package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
  28. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +22 -10
  29. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +13 -7
  30. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +4 -4
  31. package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +3 -3
  32. package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +3 -3
  33. package/esm2020/controls/lib/control-error/control-error.module.mjs +4 -4
  34. package/esm2020/controls/lib/control-error/control-error.utils.mjs +20 -0
  35. package/esm2020/controls/lib/controls.module.mjs +19 -10
  36. package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +14 -30
  37. package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +3 -3
  38. package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +3 -3
  39. package/esm2020/controls/lib/form-control/form-control.module.mjs +4 -4
  40. package/esm2020/controls/lib/radio/radio-button/radio-button.component.mjs +75 -0
  41. package/esm2020/controls/lib/radio/radio-group/radio-group.component.mjs +168 -0
  42. package/esm2020/controls/lib/radio/radio.module.mjs +21 -0
  43. package/esm2020/controls/lib/toggle/toggle/toggle.component.mjs +153 -0
  44. package/esm2020/controls/lib/toggle/toggle-group/toggle-group.component.mjs +62 -0
  45. package/esm2020/controls/lib/toggle/toggle.module.mjs +20 -0
  46. package/esm2020/controls/public_api.mjs +8 -1
  47. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
  48. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
  49. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
  50. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
  51. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
  52. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
  53. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
  54. package/esm2020/dashboard/lib/dashboard.module.mjs +4 -4
  55. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  56. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +3 -3
  57. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +3 -3
  58. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
  59. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
  60. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
  61. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
  62. package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
  63. package/esm2020/dialog/lib/dialog.module.mjs +4 -4
  64. package/esm2020/dialog/lib/dialog.service.mjs +3 -3
  65. package/esm2020/elements/lib/avatar/avatar.component.mjs +15 -13
  66. package/esm2020/elements/lib/button/button.component.mjs +6 -6
  67. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +3 -3
  68. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +3 -3
  69. package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
  70. package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
  71. package/esm2020/elements/lib/directives/form-submitter.directive.mjs +3 -3
  72. package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
  73. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +6 -6
  74. package/esm2020/elements/lib/elements.module.mjs +4 -4
  75. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +3 -3
  76. package/esm2020/elements/lib/form-control/form-control.component.mjs +3 -3
  77. package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
  78. package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
  79. package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
  80. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +3 -3
  81. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
  82. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
  83. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
  84. package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
  85. package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
  86. package/esm2020/http/lib/http.module.mjs +4 -4
  87. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
  88. package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
  89. package/esm2020/lib/core/services/clipboard.service.mjs +3 -3
  90. package/esm2020/lib/core/services/exif.service.mjs +3 -3
  91. package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
  92. package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
  93. package/esm2020/lib/core/services/languages.service.mjs +3 -3
  94. package/esm2020/lib/core/services/network.service.mjs +3 -3
  95. package/esm2020/lib/core/services/patch.service.mjs +3 -3
  96. package/esm2020/localize/lib/localize.module.mjs +4 -4
  97. package/esm2020/localize/lib/localize.pipe.mjs +3 -3
  98. package/esm2020/localize/lib/localize.service.mjs +3 -3
  99. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
  100. package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
  101. package/esm2020/masking/lib/directives/currency-mask.directive.mjs +3 -3
  102. package/esm2020/masking/lib/directives/date-mask.directive.mjs +3 -3
  103. package/esm2020/masking/lib/directives/input-mask.directive.mjs +3 -3
  104. package/esm2020/masking/lib/masking.module.mjs +4 -4
  105. package/esm2020/masking/lib/masking.service.mjs +3 -3
  106. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
  107. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +3 -3
  108. package/esm2020/notifications/lib/notifications.module.mjs +4 -4
  109. package/esm2020/notifications/lib/notifications.service.mjs +3 -3
  110. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
  111. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
  112. package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
  113. package/esm2020/storage/lib/storage.service.mjs +3 -3
  114. package/esm2020/table/lib/components/table/table.component.mjs +9 -9
  115. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
  116. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
  117. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +3 -3
  118. package/esm2020/table/lib/table.module.mjs +4 -4
  119. package/esm2020/theming/lib/themes/radio-button.theme.mjs +29 -0
  120. package/esm2020/theming/lib/themes/radio-group.theme.mjs +20 -0
  121. package/esm2020/theming/lib/themes/toggle-group.theme.mjs +17 -0
  122. package/esm2020/theming/lib/themes/toggle.theme.mjs +28 -0
  123. package/esm2020/theming/lib/theming.data.mjs +9 -1
  124. package/esm2020/theming/lib/theming.directive.mjs +3 -3
  125. package/esm2020/theming/lib/theming.interface.mjs +1 -1
  126. package/esm2020/theming/lib/theming.module.mjs +4 -4
  127. package/esm2020/utils/lib/directives/autosize.directive.mjs +3 -3
  128. package/esm2020/utils/lib/directives/focus-trap.directive.mjs +3 -3
  129. package/esm2020/utils/lib/directives/focus.directive.mjs +3 -3
  130. package/esm2020/utils/lib/directives/template.directive.mjs +3 -3
  131. package/esm2020/utils/lib/utils.module.mjs +4 -4
  132. package/fesm2015/bravobit-bb-foundation-auth.mjs +62 -45
  133. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
  134. package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
  135. package/fesm2015/bravobit-bb-foundation-controls.mjs +677 -179
  136. package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
  137. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +25 -25
  138. package/fesm2015/bravobit-bb-foundation-dialog.mjs +31 -31
  139. package/fesm2015/bravobit-bb-foundation-elements.mjs +87 -85
  140. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
  141. package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
  142. package/fesm2015/bravobit-bb-foundation-localize.mjs +16 -16
  143. package/fesm2015/bravobit-bb-foundation-masking.mjs +16 -16
  144. package/fesm2015/bravobit-bb-foundation-notifications.mjs +13 -13
  145. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
  146. package/fesm2015/bravobit-bb-foundation-storage.mjs +3 -3
  147. package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
  148. package/fesm2015/bravobit-bb-foundation-theming.mjs +102 -7
  149. package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -1
  150. package/fesm2015/bravobit-bb-foundation-utils.mjs +16 -16
  151. package/fesm2015/bravobit-bb-foundation.mjs +21 -21
  152. package/fesm2020/bravobit-bb-foundation-auth.mjs +58 -42
  153. package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
  154. package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
  155. package/fesm2020/bravobit-bb-foundation-controls.mjs +663 -173
  156. package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
  157. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +25 -25
  158. package/fesm2020/bravobit-bb-foundation-dialog.mjs +31 -31
  159. package/fesm2020/bravobit-bb-foundation-elements.mjs +87 -85
  160. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
  161. package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
  162. package/fesm2020/bravobit-bb-foundation-localize.mjs +16 -16
  163. package/fesm2020/bravobit-bb-foundation-masking.mjs +16 -16
  164. package/fesm2020/bravobit-bb-foundation-notifications.mjs +13 -13
  165. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
  166. package/fesm2020/bravobit-bb-foundation-storage.mjs +3 -3
  167. package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
  168. package/fesm2020/bravobit-bb-foundation-theming.mjs +102 -7
  169. package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -1
  170. package/fesm2020/bravobit-bb-foundation-utils.mjs +16 -16
  171. package/fesm2020/bravobit-bb-foundation.mjs +21 -21
  172. package/package.json +1 -1
  173. package/theming/lib/themes/radio-button.theme.d.ts +26 -0
  174. package/theming/lib/themes/radio-group.theme.d.ts +17 -0
  175. package/theming/lib/themes/toggle-group.theme.d.ts +16 -0
  176. package/theming/lib/themes/toggle.theme.d.ts +25 -0
  177. package/theming/lib/theming.interface.d.ts +8 -0
@@ -4,6 +4,8 @@ import { ControlErrorModule } from './control-error/control-error.module';
4
4
  import { FormControlModule } from './form-control/form-control.module';
5
5
  import { NgModule } from '@angular/core';
6
6
  import { CheckboxModule } from './checkbox/checkbox.module';
7
+ import { ToggleModule } from './toggle/toggle.module';
8
+ import { RadioModule } from './radio/radio.module';
7
9
  import * as i0 from "@angular/core";
8
10
  export class ControlsModule {
9
11
  static forRoot(config) {
@@ -14,40 +16,47 @@ export class ControlsModule {
14
16
  provide: BBI_CONTROL_ERRORS,
15
17
  useValue: { ...controlErrorDefaults, ...(config?.errors ?? {}) },
16
18
  multi: true
17
- },
18
- {
19
- provide: null,
20
- useFactory: () => '',
21
- multi: true
22
19
  }
23
20
  ]
24
21
  };
25
22
  }
26
23
  }
27
- ControlsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
28
- ControlsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: ControlsModule, imports: [FormControlModule,
24
+ ControlsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ControlsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ ControlsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: ControlsModule, imports: [FormControlModule,
29
26
  CheckboxModule,
27
+ RadioModule,
28
+ ToggleModule,
30
29
  ControlErrorModule], exports: [FormControlModule,
31
30
  CheckboxModule,
31
+ RadioModule,
32
+ ToggleModule,
32
33
  ControlErrorModule] });
33
- ControlsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlsModule, imports: [FormControlModule,
34
+ ControlsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ControlsModule, imports: [FormControlModule,
34
35
  CheckboxModule,
36
+ RadioModule,
37
+ ToggleModule,
35
38
  ControlErrorModule, FormControlModule,
36
39
  CheckboxModule,
40
+ RadioModule,
41
+ ToggleModule,
37
42
  ControlErrorModule] });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlsModule, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: ControlsModule, decorators: [{
39
44
  type: NgModule,
40
45
  args: [{
41
46
  imports: [
42
47
  FormControlModule,
43
48
  CheckboxModule,
49
+ RadioModule,
50
+ ToggleModule,
44
51
  ControlErrorModule
45
52
  ],
46
53
  exports: [
47
54
  FormControlModule,
48
55
  CheckboxModule,
56
+ RadioModule,
57
+ ToggleModule,
49
58
  ControlErrorModule
50
59
  ]
51
60
  }]
52
61
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb250cm9scy9zcmMvbGliL2NvbnRyb2xzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7O0FBZTFELE1BQU0sT0FBTyxjQUFjO0lBRXZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBdUI7UUFDbEMsT0FBTztZQUNILFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixRQUFRLEVBQUUsRUFBQyxHQUFHLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFDO29CQUM5RCxLQUFLLEVBQUUsSUFBSTtpQkFDZDtnQkFDRDtvQkFDSSxPQUFPLEVBQUUsSUFBSTtvQkFDYixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtvQkFDcEIsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDOzsyR0FsQlEsY0FBYzs0R0FBZCxjQUFjLFlBVm5CLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2Qsa0JBQWtCLGFBR2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2Qsa0JBQWtCOzRHQUdiLGNBQWMsWUFWbkIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxrQkFBa0IsRUFHbEIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxrQkFBa0I7MkZBR2IsY0FBYztrQkFaMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxrQkFBa0I7cUJBQ3JCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb250cm9sRXJyb3JEZWZhdWx0c30gZnJvbSAnLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IuZGVmYXVsdHMnO1xuaW1wb3J0IHtCQklfQ09OVFJPTF9FUlJPUlN9IGZyb20gJy4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLmludGVyZmFjZSc7XG5pbXBvcnQge0NvbnRyb2xFcnJvck1vZHVsZX0gZnJvbSAnLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IubW9kdWxlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2xNb2R1bGV9IGZyb20gJy4vZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5tb2R1bGUnO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoZWNrYm94TW9kdWxlfSBmcm9tICcuL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XG5pbXBvcnQge0NvbnRyb2xzQ29uZmlnfSBmcm9tICcuL2NvbnRyb2xzLmludGVyZmFjZXMnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRm9ybUNvbnRyb2xNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JNb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9ybUNvbnRyb2xNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JNb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRyb2xzTW9kdWxlIHtcblxuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IENvbnRyb2xzQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxDb250cm9sc01vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IENvbnRyb2xzTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBCQklfQ09OVFJPTF9FUlJPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB7Li4uY29udHJvbEVycm9yRGVmYXVsdHMsIC4uLihjb25maWc/LmVycm9ycyA/PyB7fSl9LFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiAnJyxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxuXG59XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb250cm9scy9zcmMvbGliL2NvbnRyb2xzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFrQmpELE1BQU0sT0FBTyxjQUFjO0lBRXZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBdUI7UUFDbEMsT0FBTztZQUNILFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixRQUFRLEVBQUUsRUFBQyxHQUFHLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFDO29CQUM5RCxLQUFLLEVBQUUsSUFBSTtpQkFDZDthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7OzJHQWJRLGNBQWM7NEdBQWQsY0FBYyxZQWRuQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLFdBQVc7UUFDWCxZQUFZO1FBQ1osa0JBQWtCLGFBR2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsV0FBVztRQUNYLFlBQVk7UUFDWixrQkFBa0I7NEdBR2IsY0FBYyxZQWRuQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLFdBQVc7UUFDWCxZQUFZO1FBQ1osa0JBQWtCLEVBR2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsV0FBVztRQUNYLFlBQVk7UUFDWixrQkFBa0I7MkZBR2IsY0FBYztrQkFoQjFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osa0JBQWtCO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixrQkFBa0I7cUJBQ3JCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb250cm9sRXJyb3JEZWZhdWx0c30gZnJvbSAnLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IuZGVmYXVsdHMnO1xuaW1wb3J0IHtCQklfQ09OVFJPTF9FUlJPUlN9IGZyb20gJy4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLmludGVyZmFjZSc7XG5pbXBvcnQge0NvbnRyb2xFcnJvck1vZHVsZX0gZnJvbSAnLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IubW9kdWxlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2xNb2R1bGV9IGZyb20gJy4vZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5tb2R1bGUnO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoZWNrYm94TW9kdWxlfSBmcm9tICcuL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XG5pbXBvcnQge0NvbnRyb2xzQ29uZmlnfSBmcm9tICcuL2NvbnRyb2xzLmludGVyZmFjZXMnO1xuaW1wb3J0IHtUb2dnbGVNb2R1bGV9IGZyb20gJy4vdG9nZ2xlL3RvZ2dsZS5tb2R1bGUnO1xuaW1wb3J0IHtSYWRpb01vZHVsZX0gZnJvbSAnLi9yYWRpby9yYWRpby5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRm9ybUNvbnRyb2xNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuICAgICAgICBSYWRpb01vZHVsZSxcbiAgICAgICAgVG9nZ2xlTW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JNb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9ybUNvbnRyb2xNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuICAgICAgICBSYWRpb01vZHVsZSxcbiAgICAgICAgVG9nZ2xlTW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JNb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRyb2xzTW9kdWxlIHtcblxuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IENvbnRyb2xzQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxDb250cm9sc01vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IENvbnRyb2xzTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBCQklfQ09OVFJPTF9FUlJPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB7Li4uY29udHJvbEVycm9yRGVmYXVsdHMsIC4uLihjb25maWc/LmVycm9ycyA/PyB7fSl9LFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChild, Input, Optional, ViewEncapsulation } from '@angular/core';
2
2
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { shouldShowErrors } from '../../control-error/control-error.utils';
3
4
  import { BbiFormControlInput } from '../form-control-input.directive';
4
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
5
5
  import { BehaviorSubject } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../../control-error/control-error-submit.directive";
@@ -21,11 +21,12 @@ export class BbiFormControl {
21
21
  this.errorMode = 'blur';
22
22
  // State.
23
23
  this.validationErrors$ = new BehaviorSubject(null);
24
- this.errors$ = this.validationErrors$.pipe(debounceTime(5), distinctUntilChanged());
25
24
  this._grouped = false;
26
25
  }
27
26
  // Grouped.
28
- get grouped() { return this._grouped; }
27
+ get grouped() {
28
+ return this._grouped;
29
+ }
29
30
  set grouped(value) {
30
31
  const newValue = coerceBooleanProperty(value);
31
32
  if (newValue !== this.grouped) {
@@ -34,7 +35,11 @@ export class BbiFormControl {
34
35
  }
35
36
  }
36
37
  ngDoCheck() {
37
- const hasErrors = this.showErrors();
38
+ const control = this.formControlInput?.control;
39
+ const submitted = this._errorSubmit?.submitted;
40
+ const focused = this.formControlInput?.focused;
41
+ const readonly = this.formControlInput?.readonly;
42
+ const hasErrors = shouldShowErrors(this.errorMode, control, submitted, focused, readonly);
38
43
  const errors = this.formControlInput?.errors ?? null;
39
44
  const newValue = hasErrors ? errors : null;
40
45
  const equal = JSON.stringify(newValue) === JSON.stringify(this.validationErrors$.getValue());
@@ -43,31 +48,10 @@ export class BbiFormControl {
43
48
  }
44
49
  this.validationErrors$.next(newValue);
45
50
  }
46
- showErrors() {
47
- // When the error mode is none we don't want to show
48
- if (this.errorMode === 'hidden' || this.formControlInput?.readonly) {
49
- return false;
50
- }
51
- // When submitted always show the errors.
52
- const focused = this.formControlInput?.focused;
53
- if (this._errorSubmit?.submitted && !focused) {
54
- return true;
55
- }
56
- // We want to show changes even when the user is focused.
57
- if (this.errorMode === 'changes') {
58
- return this.formControlInput?.control?.dirty ?? false;
59
- }
60
- // On blur show the error.
61
- if (this.errorMode === 'blur' && !focused) {
62
- return this.formControlInput?.control?.touched ?? false;
63
- }
64
- // Must not show the errors.
65
- return false;
66
- }
67
51
  }
68
- BbiFormControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControl, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.BbiControlErrorSubmit, optional: true }], target: i0.ɵɵFactoryTarget.Component });
69
- BbiFormControl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BbiFormControl, selector: "bbi-form-control", inputs: { label: "label", hint: "hint", errorMode: "errorMode", grouped: "grouped" }, host: { properties: { "class.grouped": "grouped", "class.disabled": "formControlInput?.disabled", "class.required": "formControlInput?.required", "class.readonly": "formControlInput?.readonly", "class.focused": "formControlInput?.focused", "class.error": "validationErrors$?.getValue()" }, classAttribute: "bbi-form-control" }, queries: [{ propertyName: "formControlInput", first: true, predicate: BbiFormControlInput, descendants: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bbi-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-form-control-container\">\n <ng-content select=\"[bbi-form-control-addon=prefix]\"></ng-content>\n <ng-content select=\"input[bbiFormControlInput]\"></ng-content>\n <ng-content select=\"[bbi-form-control-addon=suffix]\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"errors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n\n<div *ngIf=\"hint as hintContent\"\n class=\"bbi-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n</div>\n", styles: [".bbi-form-control{display:block}.bbi-form-control.grouped{margin-bottom:var(--form-control-grouping, 20px)}.bbi-form-control.disabled{pointer-events:none;opacity:var(--form-control-disabled-opacity, .25)}.bbi-form-control.disabled>.bbi-form-control-container{color:var(--form-control-disabled-color, #111111);background:var(--form-control-disabled-background, white);border-radius:var(--form-control-disabled-border-radius, 6px);border:var(--form-control-disabled-border-width, 1px) var(--form-control-disabled-border-style, solid) var(--form-control-disabled-border-color, #212121)}.bbi-form-control.required:not([data-required-visually-hidden])>.bbi-form-control-label:after{content:\"*\";color:#bd322a;font-size:14px;vertical-align:text-top}.bbi-form-control:not(.readonly).focused>.bbi-form-control-container{color:var(--form-control-focused-color, #111111);box-shadow:var(--form-control-focused-shadow, 0 0 0 3px rgba(0, 123, 255, .2));background:var(--form-control-focused-background, white);border-radius:var(--form-control-focused-border-radius, 6px);border:var(--form-control-focused-border-width, 1px) var(--form-control-focused-border-style, solid) var(--form-control-focused-border-color, #212121)}.bbi-form-control:not(.readonly).error>.bbi-form-control-label{color:var(--form-control-error-color, var(--error-color, #bd322a))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container{color:var(--form-control-error-color, var(--error-color, #bd322a));border-color:var(--form-control-error-color, var(--error-color, #bd322a));background:var(--form-control-error-background, rgba(189, 50, 42, .1))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container>input::placeholder{color:var(--form-control-error-placeholder-color, rgba(189, 50, 42, .4))}.bbi-form-control-label{color:#525252;display:block;font-size:14px;font-weight:400;margin-bottom:4px}.bbi-form-control-container{display:flex;align-items:center;color:var(--form-control-color, #111111);border-radius:var(--form-control-border-radius, 6px);background-color:var(--form-control-background, white);border:var(--form-control-border-width, 1px) var(--form-control-border-style, solid) var(--form-control-border-color, rgba(67, 90, 111, .3))}.bbi-form-control-container>input{width:100%;border:none;height:40px;color:inherit;padding:0 10px;background-color:transparent}.bbi-form-control-container>input::placeholder{color:#d2d2d2}.bbi-form-control-hint{display:block;color:#525252;font-size:13px;margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BbiControlError, selector: "bbi-control-error", inputs: ["errors"] }, { kind: "directive", type: i4.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControl, decorators: [{
52
+ BbiFormControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiFormControl, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.BbiControlErrorSubmit, optional: true }], target: i0.ɵɵFactoryTarget.Component });
53
+ BbiFormControl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: BbiFormControl, selector: "bbi-form-control", inputs: { label: "label", hint: "hint", errorMode: "errorMode", grouped: "grouped" }, host: { properties: { "class.grouped": "grouped", "class.disabled": "formControlInput?.disabled", "class.required": "formControlInput?.required", "class.readonly": "formControlInput?.readonly", "class.focused": "formControlInput?.focused", "class.error": "validationErrors$?.getValue()" }, classAttribute: "bbi-form-control" }, queries: [{ propertyName: "formControlInput", first: true, predicate: BbiFormControlInput, descendants: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bbi-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-form-control-container\">\n <ng-content select=\"[bbi-form-control-addon=prefix]\"></ng-content>\n <ng-content select=\"input[bbiFormControlInput]\"></ng-content>\n <ng-content select=\"[bbi-form-control-addon=suffix]\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"validationErrors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n\n<div *ngIf=\"hint as hintContent\"\n class=\"bbi-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n</div>\n", styles: [".bbi-form-control{display:block}.bbi-form-control.grouped{margin-bottom:var(--form-control-grouping, 20px)}.bbi-form-control.disabled{pointer-events:none;opacity:var(--form-control-disabled-opacity, .25)}.bbi-form-control.disabled>.bbi-form-control-container{color:var(--form-control-disabled-color, #111111);background:var(--form-control-disabled-background, white);border-radius:var(--form-control-disabled-border-radius, 6px);border:var(--form-control-disabled-border-width, 1px) var(--form-control-disabled-border-style, solid) var(--form-control-disabled-border-color, #212121)}.bbi-form-control.required:not([data-required-visually-hidden])>.bbi-form-control-label:after{content:\"*\";color:#bd322a;font-size:14px;vertical-align:text-top}.bbi-form-control:not(.readonly).focused>.bbi-form-control-container{color:var(--form-control-focused-color, #111111);box-shadow:var(--form-control-focused-shadow, 0 0 0 3px rgba(0, 123, 255, .2));background:var(--form-control-focused-background, white);border-radius:var(--form-control-focused-border-radius, 6px);border:var(--form-control-focused-border-width, 1px) var(--form-control-focused-border-style, solid) var(--form-control-focused-border-color, #212121)}.bbi-form-control:not(.readonly).error>.bbi-form-control-label{color:var(--form-control-error-color, var(--error-color, #bd322a))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container{color:var(--form-control-error-color, var(--error-color, #bd322a));border-color:var(--form-control-error-color, var(--error-color, #bd322a));background:var(--form-control-error-background, rgba(189, 50, 42, .1))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container>input::placeholder{color:var(--form-control-error-placeholder-color, rgba(189, 50, 42, .4))}.bbi-form-control-label{color:#525252;display:block;font-size:14px;font-weight:400;margin-bottom:4px}.bbi-form-control-container{display:flex;align-items:center;color:var(--form-control-color, #111111);border-radius:var(--form-control-border-radius, 6px);background-color:var(--form-control-background, white);border:var(--form-control-border-width, 1px) var(--form-control-border-style, solid) var(--form-control-border-color, rgba(67, 90, 111, .3))}.bbi-form-control-container>input{width:100%;border:none;height:40px;color:inherit;padding:0 10px;background-color:transparent}.bbi-form-control-container>input::placeholder{color:#d2d2d2}.bbi-form-control-hint{display:block;color:#525252;font-size:13px;margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BbiControlError, selector: "bbi-control-error", inputs: ["errors"] }, { kind: "directive", type: i4.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiFormControl, decorators: [{
71
55
  type: Component,
72
56
  args: [{ selector: 'bbi-form-control', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
73
57
  'class': 'bbi-form-control',
@@ -77,7 +61,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
77
61
  '[class.readonly]': 'formControlInput?.readonly',
78
62
  '[class.focused]': 'formControlInput?.focused',
79
63
  '[class.error]': 'validationErrors$?.getValue()'
80
- }, preserveWhitespaces: false, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bbi-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-form-control-container\">\n <ng-content select=\"[bbi-form-control-addon=prefix]\"></ng-content>\n <ng-content select=\"input[bbiFormControlInput]\"></ng-content>\n <ng-content select=\"[bbi-form-control-addon=suffix]\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"errors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n\n<div *ngIf=\"hint as hintContent\"\n class=\"bbi-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n</div>\n", styles: [".bbi-form-control{display:block}.bbi-form-control.grouped{margin-bottom:var(--form-control-grouping, 20px)}.bbi-form-control.disabled{pointer-events:none;opacity:var(--form-control-disabled-opacity, .25)}.bbi-form-control.disabled>.bbi-form-control-container{color:var(--form-control-disabled-color, #111111);background:var(--form-control-disabled-background, white);border-radius:var(--form-control-disabled-border-radius, 6px);border:var(--form-control-disabled-border-width, 1px) var(--form-control-disabled-border-style, solid) var(--form-control-disabled-border-color, #212121)}.bbi-form-control.required:not([data-required-visually-hidden])>.bbi-form-control-label:after{content:\"*\";color:#bd322a;font-size:14px;vertical-align:text-top}.bbi-form-control:not(.readonly).focused>.bbi-form-control-container{color:var(--form-control-focused-color, #111111);box-shadow:var(--form-control-focused-shadow, 0 0 0 3px rgba(0, 123, 255, .2));background:var(--form-control-focused-background, white);border-radius:var(--form-control-focused-border-radius, 6px);border:var(--form-control-focused-border-width, 1px) var(--form-control-focused-border-style, solid) var(--form-control-focused-border-color, #212121)}.bbi-form-control:not(.readonly).error>.bbi-form-control-label{color:var(--form-control-error-color, var(--error-color, #bd322a))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container{color:var(--form-control-error-color, var(--error-color, #bd322a));border-color:var(--form-control-error-color, var(--error-color, #bd322a));background:var(--form-control-error-background, rgba(189, 50, 42, .1))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container>input::placeholder{color:var(--form-control-error-placeholder-color, rgba(189, 50, 42, .4))}.bbi-form-control-label{color:#525252;display:block;font-size:14px;font-weight:400;margin-bottom:4px}.bbi-form-control-container{display:flex;align-items:center;color:var(--form-control-color, #111111);border-radius:var(--form-control-border-radius, 6px);background-color:var(--form-control-background, white);border:var(--form-control-border-width, 1px) var(--form-control-border-style, solid) var(--form-control-border-color, rgba(67, 90, 111, .3))}.bbi-form-control-container>input{width:100%;border:none;height:40px;color:inherit;padding:0 10px;background-color:transparent}.bbi-form-control-container>input::placeholder{color:#d2d2d2}.bbi-form-control-hint{display:block;color:#525252;font-size:13px;margin-top:4px}\n"] }]
64
+ }, preserveWhitespaces: false, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bbi-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-form-control-container\">\n <ng-content select=\"[bbi-form-control-addon=prefix]\"></ng-content>\n <ng-content select=\"input[bbiFormControlInput]\"></ng-content>\n <ng-content select=\"[bbi-form-control-addon=suffix]\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"validationErrors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n\n<div *ngIf=\"hint as hintContent\"\n class=\"bbi-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n</div>\n", styles: [".bbi-form-control{display:block}.bbi-form-control.grouped{margin-bottom:var(--form-control-grouping, 20px)}.bbi-form-control.disabled{pointer-events:none;opacity:var(--form-control-disabled-opacity, .25)}.bbi-form-control.disabled>.bbi-form-control-container{color:var(--form-control-disabled-color, #111111);background:var(--form-control-disabled-background, white);border-radius:var(--form-control-disabled-border-radius, 6px);border:var(--form-control-disabled-border-width, 1px) var(--form-control-disabled-border-style, solid) var(--form-control-disabled-border-color, #212121)}.bbi-form-control.required:not([data-required-visually-hidden])>.bbi-form-control-label:after{content:\"*\";color:#bd322a;font-size:14px;vertical-align:text-top}.bbi-form-control:not(.readonly).focused>.bbi-form-control-container{color:var(--form-control-focused-color, #111111);box-shadow:var(--form-control-focused-shadow, 0 0 0 3px rgba(0, 123, 255, .2));background:var(--form-control-focused-background, white);border-radius:var(--form-control-focused-border-radius, 6px);border:var(--form-control-focused-border-width, 1px) var(--form-control-focused-border-style, solid) var(--form-control-focused-border-color, #212121)}.bbi-form-control:not(.readonly).error>.bbi-form-control-label{color:var(--form-control-error-color, var(--error-color, #bd322a))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container{color:var(--form-control-error-color, var(--error-color, #bd322a));border-color:var(--form-control-error-color, var(--error-color, #bd322a));background:var(--form-control-error-background, rgba(189, 50, 42, .1))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container>input::placeholder{color:var(--form-control-error-placeholder-color, rgba(189, 50, 42, .4))}.bbi-form-control-label{color:#525252;display:block;font-size:14px;font-weight:400;margin-bottom:4px}.bbi-form-control-container{display:flex;align-items:center;color:var(--form-control-color, #111111);border-radius:var(--form-control-border-radius, 6px);background-color:var(--form-control-background, white);border:var(--form-control-border-width, 1px) var(--form-control-border-style, solid) var(--form-control-border-color, rgba(67, 90, 111, .3))}.bbi-form-control-container>input{width:100%;border:none;height:40px;color:inherit;padding:0 10px;background-color:transparent}.bbi-form-control-container>input::placeholder{color:#d2d2d2}.bbi-form-control-hint{display:block;color:#525252;font-size:13px;margin-top:4px}\n"] }]
81
65
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.BbiControlErrorSubmit, decorators: [{
82
66
  type: Optional
83
67
  }] }]; }, propDecorators: { formControlInput: [{
@@ -92,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
92
76
  }], grouped: [{
93
77
  type: Input
94
78
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2NvbnRyb2xzL3NyYy9saWIvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFXLEtBQUssRUFBRSxRQUFRLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHNUosT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUVyQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFtQnJCLE1BQU0sT0FBTyxjQUFjO0lBK0J2QixZQUFvQixrQkFBcUMsRUFDekIsWUFBb0M7UUFEaEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUE5QnBFLGlCQUFpQjtRQUNSLFlBQU8sR0FBVyxvQkFBb0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUtoRSxVQUFVO1FBQ0QsVUFBSyxHQUFxQyxJQUFJLENBQUM7UUFDL0MsU0FBSSxHQUFxQyxJQUFJLENBQUM7UUFDOUMsY0FBUyxHQUFxQixN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LFFBQVE7NENBMUIrQixnQkFBZ0I7c0JBQW5FLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUd6QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUYsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEb0NoZWNrLCBJbnB1dCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JiaUNvbnRyb2xFcnJvclN1Ym1pdH0gZnJvbSAnLi4vLi4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLXN1Ym1pdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDb250cm9sRXJyb3JNb2RlfSBmcm9tICcuLi8uLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IuaW50ZXJmYWNlJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0JiaUZvcm1Db250cm9sSW5wdXR9IGZyb20gJy4uL2Zvcm0tY29udHJvbC1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1ZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmJpLWZvcm0tY29udHJvbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYmktZm9ybS1jb250cm9sJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJyxcbiAgICAgICAgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZm9ybUNvbnRyb2xJbnB1dD8uZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLnJlcXVpcmVkXSc6ICdmb3JtQ29udHJvbElucHV0Py5yZXF1aXJlZCcsXG4gICAgICAgICdbY2xhc3MucmVhZG9ubHldJzogJ2Zvcm1Db250cm9sSW5wdXQ/LnJlYWRvbmx5JyxcbiAgICAgICAgJ1tjbGFzcy5mb2N1c2VkXSc6ICdmb3JtQ29udHJvbElucHV0Py5mb2N1c2VkJyxcbiAgICAgICAgJ1tjbGFzcy5lcnJvcl0nOiAndmFsaWRhdGlvbkVycm9ycyQ/LmdldFZhbHVlKCknXG4gICAgfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBCYmlGb3JtQ29udHJvbCBpbXBsZW1lbnRzIERvQ2hlY2sge1xuXG4gICAgLy8gUmVhZG9ubHkgZGF0YS5cbiAgICByZWFkb25seSBsYWJlbElkOiBzdHJpbmcgPSBgYmJpLWZvcm0tY29udHJvbC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAQ29udGVudENoaWxkKEJiaUZvcm1Db250cm9sSW5wdXQsIHtzdGF0aWM6IGZhbHNlfSkgZm9ybUNvbnRyb2xJbnB1dD86IEJiaUZvcm1Db250cm9sSW5wdXQ7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgZXJyb3JNb2RlOiBDb250cm9sRXJyb3JNb2RlID0gJ2JsdXInO1xuXG4gICAgLy8gU3RhdGUuXG4gICAgdmFsaWRhdGlvbkVycm9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPihudWxsKTtcbiAgICBlcnJvcnMkID0gdGhpcy52YWxpZGF0aW9uRXJyb3JzJC5waXBlKGRlYm91bmNlVGltZSg1KSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgICAvLyBHcm91cGVkLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGdyb3VwZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9ncm91cGVkOyB9XG5cbiAgICBzZXQgZ3JvdXBlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmdyb3VwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ3JvdXBlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2Vycm9yU3VibWl0PzogQmJpQ29udHJvbEVycm9yU3VibWl0KSB7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBjb25zdCBoYXNFcnJvcnMgPSB0aGlzLnNob3dFcnJvcnMoKTtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5mb3JtQ29udHJvbElucHV0Py5lcnJvcnMgPz8gbnVsbDtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBoYXNFcnJvcnMgPyBlcnJvcnMgOiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGVxdWFsID0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpID09PSBKU09OLnN0cmluZ2lmeSh0aGlzLnZhbGlkYXRpb25FcnJvcnMkLmdldFZhbHVlKCkpO1xuICAgICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyQubmV4dChuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93RXJyb3JzKCkge1xuICAgICAgICAvLyBXaGVuIHRoZSBlcnJvciBtb2RlIGlzIG5vbmUgd2UgZG9uJ3Qgd2FudCB0byBzaG93XG4gICAgICAgIGlmICh0aGlzLmVycm9yTW9kZSA9PT0gJ2hpZGRlbicgfHwgdGhpcy5mb3JtQ29udHJvbElucHV0Py5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiBzdWJtaXR0ZWQgYWx3YXlzIHNob3cgdGhlIGVycm9ycy5cbiAgICAgICAgY29uc3QgZm9jdXNlZCA9IHRoaXMuZm9ybUNvbnRyb2xJbnB1dD8uZm9jdXNlZDtcbiAgICAgICAgaWYgKHRoaXMuX2Vycm9yU3VibWl0Py5zdWJtaXR0ZWQgJiYgIWZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2Ugd2FudCB0byBzaG93IGNoYW5nZXMgZXZlbiB3aGVuIHRoZSB1c2VyIGlzIGZvY3VzZWQuXG4gICAgICAgIGlmICh0aGlzLmVycm9yTW9kZSA9PT0gJ2NoYW5nZXMnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbElucHV0Py5jb250cm9sPy5kaXJ0eSA/PyBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9uIGJsdXIgc2hvdyB0aGUgZXJyb3IuXG4gICAgICAgIGlmICh0aGlzLmVycm9yTW9kZSA9PT0gJ2JsdXInICYmICFmb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbElucHV0Py5jb250cm9sPy50b3VjaGVkID8/IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTXVzdCBub3Qgc2hvdyB0aGUgZXJyb3JzLlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUmVxdWlyZWQgc28gdGhhdCB0aGUgdGVtcGxhdGUgdHlwZSBjaGVja2VyIGNhbiBpbmZlciB0aGUgdHlwZSBvZiB0aGUgY29lcmNlZCBpbnB1dHMuXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGludDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Vycm9yTW9kZTogQ29udHJvbEVycm9yTW9kZTtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZ3JvdXBlZDogQm9vbGVhbklucHV0O1xuXG59XG4iLCI8IS0tIExhYmVsIG9mIHRoZSBmb3JtIGNvbnRyb2wuIC0tPlxuPGxhYmVsICpuZ0lmPVwibGFiZWwgYXMgbGFiZWxDb250ZW50XCJcbiAgICAgICBbYXR0ci5mb3JdPVwibGFiZWxJZFwiXG4gICAgICAgY2xhc3M9XCJiYmktZm9ybS1jb250cm9sLWxhYmVsXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImxhYmVsQ29udGVudFwiPnt7IGxhYmVsQ29udGVudCB9fTwvbmctdGVtcGxhdGU+XG48L2xhYmVsPlxuXG48ZGl2IGNsYXNzPVwiYmJpLWZvcm0tY29udHJvbC1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmJpLWZvcm0tY29udHJvbC1hZGRvbj1wcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0W2JiaUZvcm1Db250cm9sSW5wdXRdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYmktZm9ybS1jb250cm9sLWFkZG9uPXN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGJiaS1jb250cm9sLWVycm9yICpuZ0lmPVwiZXJyb3JzJCB8IGFzeW5jIGFzIGVycm9yc1wiXG4gICAgICAgICAgICAgICAgICAgW2Vycm9yc109XCJlcnJvcnNcIj5cbjwvYmJpLWNvbnRyb2wtZXJyb3I+XG5cbjxkaXYgKm5nSWY9XCJoaW50IGFzIGhpbnRDb250ZW50XCJcbiAgICAgY2xhc3M9XCJiYmktZm9ybS1jb250cm9sLWhpbnRcIj5cbiAgICA8bmctdGVtcGxhdGUgW2JiVGVtcGxhdGVdPVwiaGludENvbnRlbnRcIj57eyBoaW50Q29udGVudCB9fTwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2NvbnRyb2xzL3NyYy9saWIvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFXLEtBQUssRUFBRSxRQUFRLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHNUosT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRXJDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQW1CckIsTUFBTSxPQUFPLGNBQWM7SUFnQ3ZCLFlBQW9CLGtCQUFxQyxFQUN6QixZQUFvQztRQURoRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQS9CcEUsaUJBQWlCO1FBQ1IsWUFBTyxHQUFXLG9CQUFvQixZQUFZLEVBQUUsRUFBRSxDQUFDO1FBS2hFLFVBQVU7UUFDRCxVQUFLLEdBQXFDLElBQUksQ0FBQztRQUMvQyxTQUFJLEdBQXFDLElBQUksQ0FBQztRQUM5QyxjQUFTLEdBQXFCLE1BQU0sQ0FBQztRQUU5QyxTQUFTO1FBQ1Qsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBZ0IvRCxhQUFRLEdBQVksS0FBSyxDQUFDO0lBSWxDLENBQUM7SUFsQkQsV0FBVztJQUNYLElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBbUI7UUFDM0IsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBUUQsU0FBUztRQUNMLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO1FBQ2pELE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0YsSUFBSSxLQUFLLEVBQUU7WUFDUCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OzJHQW5EUSxjQUFjOytGQUFkLGNBQWMsb2dCQU1ULG1CQUFtQixnRENsQ3JDLHl5QkFxQkE7MkZET2EsY0FBYztrQkFqQjFCLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsT0FBTyxFQUFFLGtCQUFrQjt3QkFDM0IsaUJBQWlCLEVBQUUsU0FBUzt3QkFDNUIsa0JBQWtCLEVBQUUsNEJBQTRCO3dCQUNoRCxrQkFBa0IsRUFBRSw0QkFBNEI7d0JBQ2hELGtCQUFrQixFQUFFLDRCQUE0Qjt3QkFDaEQsaUJBQWlCLEVBQUUsMkJBQTJCO3dCQUM5QyxlQUFlLEVBQUUsK0JBQStCO3FCQUNuRCx1QkFDb0IsS0FBSzs7MEJBbUNiLFFBQVE7NENBM0IrQixnQkFBZ0I7c0JBQW5FLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUd6QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0YsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEb0NoZWNrLCBJbnB1dCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JiaUNvbnRyb2xFcnJvclN1Ym1pdH0gZnJvbSAnLi4vLi4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLXN1Ym1pdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDb250cm9sRXJyb3JNb2RlfSBmcm9tICcuLi8uLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IuaW50ZXJmYWNlJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge3Nob3VsZFNob3dFcnJvcnN9IGZyb20gJy4uLy4uL2NvbnRyb2wtZXJyb3IvY29udHJvbC1lcnJvci51dGlscyc7XG5pbXBvcnQge0JiaUZvcm1Db250cm9sSW5wdXR9IGZyb20gJy4uL2Zvcm0tY29udHJvbC1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtWYWxpZGF0aW9uRXJyb3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiaS1mb3JtLWNvbnRyb2wnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmJpLWZvcm0tY29udHJvbCcsXG4gICAgICAgICdbY2xhc3MuZ3JvdXBlZF0nOiAnZ3JvdXBlZCcsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Zvcm1Db250cm9sSW5wdXQ/LmRpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5yZXF1aXJlZF0nOiAnZm9ybUNvbnRyb2xJbnB1dD8ucmVxdWlyZWQnLFxuICAgICAgICAnW2NsYXNzLnJlYWRvbmx5XSc6ICdmb3JtQ29udHJvbElucHV0Py5yZWFkb25seScsXG4gICAgICAgICdbY2xhc3MuZm9jdXNlZF0nOiAnZm9ybUNvbnRyb2xJbnB1dD8uZm9jdXNlZCcsXG4gICAgICAgICdbY2xhc3MuZXJyb3JdJzogJ3ZhbGlkYXRpb25FcnJvcnMkPy5nZXRWYWx1ZSgpJ1xuICAgIH0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQmJpRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBEb0NoZWNrIHtcblxuICAgIC8vIFJlYWRvbmx5IGRhdGEuXG4gICAgcmVhZG9ubHkgbGFiZWxJZDogc3RyaW5nID0gYGJiaS1mb3JtLWNvbnRyb2wtJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gICAgLy8gVmlld3MuXG4gICAgQENvbnRlbnRDaGlsZChCYmlGb3JtQ29udHJvbElucHV0LCB7c3RhdGljOiBmYWxzZX0pIGZvcm1Db250cm9sSW5wdXQ/OiBCYmlGb3JtQ29udHJvbElucHV0O1xuXG4gICAgLy8gSW5wdXRzLlxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgaGludDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGVycm9yTW9kZTogQ29udHJvbEVycm9yTW9kZSA9ICdibHVyJztcblxuICAgIC8vIFN0YXRlLlxuICAgIHZhbGlkYXRpb25FcnJvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvLyBHcm91cGVkLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGdyb3VwZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cGVkO1xuICAgIH1cblxuICAgIHNldCBncm91cGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuZ3JvdXBlZCkge1xuICAgICAgICAgICAgdGhpcy5fZ3JvdXBlZCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9ncm91cGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZXJyb3JTdWJtaXQ/OiBCYmlDb250cm9sRXJyb3JTdWJtaXQpIHtcbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sSW5wdXQ/LmNvbnRyb2w7XG4gICAgICAgIGNvbnN0IHN1Ym1pdHRlZCA9IHRoaXMuX2Vycm9yU3VibWl0Py5zdWJtaXR0ZWQ7XG4gICAgICAgIGNvbnN0IGZvY3VzZWQgPSB0aGlzLmZvcm1Db250cm9sSW5wdXQ/LmZvY3VzZWQ7XG4gICAgICAgIGNvbnN0IHJlYWRvbmx5ID0gdGhpcy5mb3JtQ29udHJvbElucHV0Py5yZWFkb25seTtcbiAgICAgICAgY29uc3QgaGFzRXJyb3JzID0gc2hvdWxkU2hvd0Vycm9ycyh0aGlzLmVycm9yTW9kZSwgY29udHJvbCwgc3VibWl0dGVkLCBmb2N1c2VkLCByZWFkb25seSk7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZm9ybUNvbnRyb2xJbnB1dD8uZXJyb3JzID8/IG51bGw7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaGFzRXJyb3JzID8gZXJyb3JzIDogbnVsbDtcblxuICAgICAgICBjb25zdCBlcXVhbCA9IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkodGhpcy52YWxpZGF0aW9uRXJyb3JzJC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgaWYgKGVxdWFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMkLm5leHQobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFJlcXVpcmVkIHNvIHRoYXQgdGhlIHRlbXBsYXRlIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgdGhlIHR5cGUgb2YgdGhlIGNvZXJjZWQgaW5wdXRzLlxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9sYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hpbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9lcnJvck1vZGU6IENvbnRyb2xFcnJvck1vZGU7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2dyb3VwZWQ6IEJvb2xlYW5JbnB1dDtcblxufVxuIiwiPCEtLSBMYWJlbCBvZiB0aGUgZm9ybSBjb250cm9sLiAtLT5cbjxsYWJlbCAqbmdJZj1cImxhYmVsIGFzIGxhYmVsQ29udGVudFwiXG4gICAgICAgW2F0dHIuZm9yXT1cImxhYmVsSWRcIlxuICAgICAgIGNsYXNzPVwiYmJpLWZvcm0tY29udHJvbC1sYWJlbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuPC9sYWJlbD5cblxuPGRpdiBjbGFzcz1cImJiaS1mb3JtLWNvbnRyb2wtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JiaS1mb3JtLWNvbnRyb2wtYWRkb249cHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpbnB1dFtiYmlGb3JtQ29udHJvbElucHV0XVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmJpLWZvcm0tY29udHJvbC1hZGRvbj1zdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxiYmktY29udHJvbC1lcnJvciAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMkIHwgYXN5bmMgYXMgZXJyb3JzXCJcbiAgICAgICAgICAgICAgICAgICBbZXJyb3JzXT1cImVycm9yc1wiPlxuPC9iYmktY29udHJvbC1lcnJvcj5cblxuPGRpdiAqbmdJZj1cImhpbnQgYXMgaGludENvbnRlbnRcIlxuICAgICBjbGFzcz1cImJiaS1mb3JtLWNvbnRyb2wtaGludFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPnt7IGhpbnRDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -6,9 +6,9 @@ export class BbiFormControlAddon {
6
6
  this.type = null;
7
7
  }
8
8
  }
9
- BbiFormControlAddon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControlAddon, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- BbiFormControlAddon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BbiFormControlAddon, selector: "[bbi-form-control-addon]", inputs: { type: ["bbi-form-control-addon", "type"] }, host: { properties: { "class.prefix": "type === 'prefix'", "class.suffix": "type === 'suffix'" }, classAttribute: "bbi-form-control-addon" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bbi-form-control-addon{margin:0 10px;color:inherit;display:block}.bbi-form-control-addon.suffix{margin-left:0}.bbi-form-control-addon.prefix{margin-right:0}a.bbi-form-control-addon,button.bbi-form-control-addon{width:32px;height:32px;border:none;display:flex;-webkit-appearance:none;appearance:none;margin-right:4px;border-radius:6px;align-items:center;text-decoration:none;justify-content:center;background-color:transparent}a.bbi-form-control-addon,a.bbi-form-control-addon:visited,button.bbi-form-control-addon,button.bbi-form-control-addon:visited{color:inherit}a.bbi-form-control-addon:hover,button.bbi-form-control-addon:hover{background-color:#1565c014}a.bbi-form-control-addon:focus,button.bbi-form-control-addon:focus{background-color:#1565c01f}a.bbi-form-control-addon:active,button.bbi-form-control-addon:active{background-color:#1565c029}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControlAddon, decorators: [{
9
+ BbiFormControlAddon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiFormControlAddon, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ BbiFormControlAddon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: BbiFormControlAddon, selector: "[bbi-form-control-addon]", inputs: { type: ["bbi-form-control-addon", "type"] }, host: { properties: { "class.prefix": "type === 'prefix'", "class.suffix": "type === 'suffix'" }, classAttribute: "bbi-form-control-addon" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bbi-form-control-addon{margin:0 10px;color:inherit;display:block}.bbi-form-control-addon.suffix{margin-left:0}.bbi-form-control-addon.prefix{margin-right:0}a.bbi-form-control-addon,button.bbi-form-control-addon{width:32px;height:32px;border:none;display:flex;-webkit-appearance:none;appearance:none;margin-right:4px;border-radius:6px;align-items:center;text-decoration:none;justify-content:center;background-color:transparent}a.bbi-form-control-addon,a.bbi-form-control-addon:visited,button.bbi-form-control-addon,button.bbi-form-control-addon:visited{color:inherit}a.bbi-form-control-addon:hover,button.bbi-form-control-addon:hover{background-color:#1565c014}a.bbi-form-control-addon:focus,button.bbi-form-control-addon:focus{background-color:#1565c01f}a.bbi-form-control-addon:active,button.bbi-form-control-addon:active{background-color:#1565c029}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiFormControlAddon, decorators: [{
12
12
  type: Component,
13
13
  args: [{ selector: '[bbi-form-control-addon]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
14
14
  'class': 'bbi-form-control-addon',
@@ -97,9 +97,9 @@ export class BbiFormControlInput {
97
97
  this._subscription.add(subscription);
98
98
  }
99
99
  }
100
- BbiFormControlInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControlInput, deps: [{ token: i0.ElementRef }, { token: i1.BbiFormControl }, { token: i0.ChangeDetectorRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
101
- BbiFormControlInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BbiFormControlInput, selector: "input[bbiFormControlInput]", inputs: { disabled: "disabled", readonly: "readonly", required: "required" }, host: { properties: { "attr.id": "this.labelId", "required": "this.required" } }, ngImport: i0 });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControlInput, decorators: [{
100
+ BbiFormControlInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiFormControlInput, deps: [{ token: i0.ElementRef }, { token: i1.BbiFormControl }, { token: i0.ChangeDetectorRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
101
+ BbiFormControlInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.5", type: BbiFormControlInput, selector: "input[bbiFormControlInput]", inputs: { disabled: "disabled", readonly: "readonly", required: "required" }, host: { properties: { "attr.id": "this.labelId", "required": "this.required" } }, ngImport: i0 });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiFormControlInput, decorators: [{
103
103
  type: Directive,
104
104
  args: [{
105
105
  selector: 'input[bbiFormControlInput]'
@@ -8,14 +8,14 @@ import { NgModule } from '@angular/core';
8
8
  import * as i0 from "@angular/core";
9
9
  export class FormControlModule {
10
10
  }
11
- FormControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: FormControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- FormControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: FormControlModule, declarations: [BbiFormControl,
11
+ FormControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FormControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ FormControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.5", ngImport: i0, type: FormControlModule, declarations: [BbiFormControl,
13
13
  BbiFormControlInput,
14
14
  BbiFormControlAddon], imports: [CommonModule, ControlErrorModule, UtilsModule], exports: [BbiFormControl,
15
15
  BbiFormControlInput,
16
16
  BbiFormControlAddon] });
17
- FormControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: FormControlModule, imports: [CommonModule, ControlErrorModule, UtilsModule] });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: FormControlModule, decorators: [{
17
+ FormControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FormControlModule, imports: [CommonModule, ControlErrorModule, UtilsModule] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: FormControlModule, decorators: [{
19
19
  type: NgModule,
20
20
  args: [{
21
21
  imports: [CommonModule, ControlErrorModule, UtilsModule],
@@ -0,0 +1,75 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, HostListener, Input, ViewEncapsulation } from '@angular/core';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../radio-group/radio-group.component";
5
+ import * as i2 from "@angular/common";
6
+ export class BbiRadioButton {
7
+ constructor(_radioGroup, _changeDetectorRef) {
8
+ this._radioGroup = _radioGroup;
9
+ this._changeDetectorRef = _changeDetectorRef;
10
+ // Inputs.
11
+ this.value = null;
12
+ this._disabled = false;
13
+ this._hideText = false;
14
+ }
15
+ // Disabled.
16
+ get disabled() {
17
+ return this._radioGroup?.disabled || this._disabled;
18
+ }
19
+ set disabled(value) {
20
+ const newValue = coerceBooleanProperty(value);
21
+ if (newValue !== this.disabled) {
22
+ this._disabled = newValue;
23
+ this._changeDetectorRef.markForCheck();
24
+ }
25
+ }
26
+ // Hide text.
27
+ get hideText() {
28
+ return this._hideText;
29
+ }
30
+ set hideText(value) {
31
+ const newValue = coerceBooleanProperty(value);
32
+ if (newValue !== this.hideText) {
33
+ this._hideText = newValue;
34
+ this._changeDetectorRef.markForCheck();
35
+ }
36
+ }
37
+ onClick() {
38
+ if (this.disabled) {
39
+ return;
40
+ }
41
+ this._radioGroup.select(this.value);
42
+ }
43
+ onSpacePressed() {
44
+ return this.onClick();
45
+ }
46
+ get selected() {
47
+ return this._radioGroup?.value === this.value;
48
+ }
49
+ }
50
+ BbiRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiRadioButton, deps: [{ token: i1.BbiRadioGroup }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
51
+ BbiRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: BbiRadioButton, selector: "bbi-radio-button", inputs: { value: "value", disabled: "disabled", hideText: "hideText" }, host: { listeners: { "click": "onClick()", "keydown.space": "onSpacePressed()" }, properties: { "class.disabled": "disabled", "tabindex": "disabled ? -1 : 0", "class.selected": "this.selected" }, classAttribute: "bbi-radio-button" }, ngImport: i0, template: "<div class=\"bbi-radio-button-indicator\"></div>\n<span *ngIf=\"!hideText\"\n class=\"bbi-radio-button-text\"><ng-content></ng-content></span>\n", styles: [".bbi-radio-button{display:flex;cursor:pointer;align-items:center}.bbi-radio-button:not(.disabled):focus>.bbi-radio-button-indicator{outline-color:var(--radio-button-outline-color, var(--accent-color, #1565c0))}.bbi-radio-button.disabled{-webkit-user-select:none;user-select:none;cursor:not-allowed}.bbi-radio-button.disabled>.bbi-radio-button-indicator{border-color:var(--radio-button-colors-disabled, #c6c6c6)}.bbi-radio-button.disabled>.bbi-radio-button-text{color:var(--radio-button-colors-disabled, #c6c6c6)}.bbi-radio-button.selected>.bbi-radio-button-indicator{border-color:var(--radio-button-colors-accent, var(--accent-color, #1565c0))}.bbi-radio-button.selected>.bbi-radio-button-indicator:after{opacity:1;transform:none}.bbi-radio-button-indicator{display:flex;align-items:center;justify-content:center;width:var(--radio-button-size, 20px);height:var(--radio-button-size, 20px);min-width:var(--radio-button-size, 20px);min-height:var(--radio-button-size, 20px);border-radius:var(--radio-button-border-radius, 50%);outline-offset:var(--radio-button-outline-offset, 1px);outline:var(--radio-button-outline-thickness, 2px) solid transparent;border:var(--radio-button-border-thickness, 1px) solid var(--radio-button-border-color, #111111);transition:outline-color .2s cubic-bezier(0,0,.2,1),border-color .18s cubic-bezier(0,0,.2,1)}.bbi-radio-button-indicator:after{opacity:0;content:\"\";display:block;transform:scale(0);width:calc(var(--radio-button-size, 20px) / 2);height:calc(var(--radio-button-size, 20px) / 2);border-radius:var(--radio-button-border-radius, 50%);background-color:var(--radio-button-colors-accent, var(--accent-color, #1565c0));transition:transform .1s cubic-bezier(0,0,.2,1)}.bbi-radio-button-text{color:var(--radio-button-label-color, #111111);padding-left:var(--radio-button-label-offset, 6px);font-size:var(--radio-button-label-font-size, 16px);font-weight:var(--radio-button-label-font-weight, 400);line-height:var(--radio-button-label-line-height, 1.28)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiRadioButton, decorators: [{
53
+ type: Component,
54
+ args: [{ selector: 'bbi-radio-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
55
+ 'class': 'bbi-radio-button',
56
+ '[class.disabled]': 'disabled',
57
+ '[tabindex]': 'disabled ? -1 : 0'
58
+ }, preserveWhitespaces: false, template: "<div class=\"bbi-radio-button-indicator\"></div>\n<span *ngIf=\"!hideText\"\n class=\"bbi-radio-button-text\"><ng-content></ng-content></span>\n", styles: [".bbi-radio-button{display:flex;cursor:pointer;align-items:center}.bbi-radio-button:not(.disabled):focus>.bbi-radio-button-indicator{outline-color:var(--radio-button-outline-color, var(--accent-color, #1565c0))}.bbi-radio-button.disabled{-webkit-user-select:none;user-select:none;cursor:not-allowed}.bbi-radio-button.disabled>.bbi-radio-button-indicator{border-color:var(--radio-button-colors-disabled, #c6c6c6)}.bbi-radio-button.disabled>.bbi-radio-button-text{color:var(--radio-button-colors-disabled, #c6c6c6)}.bbi-radio-button.selected>.bbi-radio-button-indicator{border-color:var(--radio-button-colors-accent, var(--accent-color, #1565c0))}.bbi-radio-button.selected>.bbi-radio-button-indicator:after{opacity:1;transform:none}.bbi-radio-button-indicator{display:flex;align-items:center;justify-content:center;width:var(--radio-button-size, 20px);height:var(--radio-button-size, 20px);min-width:var(--radio-button-size, 20px);min-height:var(--radio-button-size, 20px);border-radius:var(--radio-button-border-radius, 50%);outline-offset:var(--radio-button-outline-offset, 1px);outline:var(--radio-button-outline-thickness, 2px) solid transparent;border:var(--radio-button-border-thickness, 1px) solid var(--radio-button-border-color, #111111);transition:outline-color .2s cubic-bezier(0,0,.2,1),border-color .18s cubic-bezier(0,0,.2,1)}.bbi-radio-button-indicator:after{opacity:0;content:\"\";display:block;transform:scale(0);width:calc(var(--radio-button-size, 20px) / 2);height:calc(var(--radio-button-size, 20px) / 2);border-radius:var(--radio-button-border-radius, 50%);background-color:var(--radio-button-colors-accent, var(--accent-color, #1565c0));transition:transform .1s cubic-bezier(0,0,.2,1)}.bbi-radio-button-text{color:var(--radio-button-label-color, #111111);padding-left:var(--radio-button-label-offset, 6px);font-size:var(--radio-button-label-font-size, 16px);font-weight:var(--radio-button-label-font-weight, 400);line-height:var(--radio-button-label-line-height, 1.28)}\n"] }]
59
+ }], ctorParameters: function () { return [{ type: i1.BbiRadioGroup }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
60
+ type: Input
61
+ }], disabled: [{
62
+ type: Input
63
+ }], hideText: [{
64
+ type: Input
65
+ }], onClick: [{
66
+ type: HostListener,
67
+ args: ['click']
68
+ }], onSpacePressed: [{
69
+ type: HostListener,
70
+ args: ['keydown.space']
71
+ }], selected: [{
72
+ type: HostBinding,
73
+ args: ['class.selected']
74
+ }] } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9yYWRpby9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9yYWRpby9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pJLE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7O0FBZ0IxRSxNQUFNLE9BQU8sY0FBYztJQXVEdkIsWUFBb0IsV0FBMEIsRUFDMUIsa0JBQXFDO1FBRHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUF0RHpELFVBQVU7UUFDRCxVQUFLLEdBQWUsSUFBSSxDQUFDO1FBZ0IxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBZ0IzQixjQUFTLEdBQVksS0FBSyxDQUFDO0lBc0JuQyxDQUFDO0lBcERELFlBQVk7SUFDWixJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzVCLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUlELGFBQWE7SUFDYixJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzVCLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUtELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUdELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ2xELENBQUM7OzJHQXJEUSxjQUFjOytGQUFkLGNBQWMsMFdDakIzQix1SkFHQTsyRkRjYSxjQUFjO2tCQWIxQixTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNGLE9BQU8sRUFBRSxrQkFBa0I7d0JBQzNCLGtCQUFrQixFQUFFLFVBQVU7d0JBQzlCLFlBQVksRUFBRSxtQkFBbUI7cUJBQ3BDLHVCQUNvQixLQUFLO29JQUtqQixLQUFLO3NCQUFiLEtBQUs7Z0JBSUYsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixRQUFRO3NCQURYLEtBQUs7Z0JBZ0JOLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPO2dCQVNyQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZTtnQkFNekIsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtCYmlSYWRpb0dyb3VwfSBmcm9tICcuLi9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiaS1yYWRpby1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmJpLXJhZGlvLWJ1dHRvbicsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1t0YWJpbmRleF0nOiAnZGlzYWJsZWQgPyAtMSA6IDAnXG4gICAgfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBCYmlSYWRpb0J1dHRvbiB7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgdmFsdWU6IGFueSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gRGlzYWJsZWQuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWRpb0dyb3VwPy5kaXNhYmxlZCB8fCB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIEhpZGUgdGV4dC5cbiAgICBASW5wdXQoKVxuICAgIGdldCBoaWRlVGV4dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVUZXh0O1xuICAgIH1cblxuICAgIHNldCBoaWRlVGV4dCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmhpZGVUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlVGV4dCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9oaWRlVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmFkaW9Hcm91cC5zZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zcGFjZScpXG4gICAgb25TcGFjZVByZXNzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uQ2xpY2soKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdGVkJylcbiAgICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWRpb0dyb3VwPy52YWx1ZSA9PT0gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yYWRpb0dyb3VwOiBCYmlSYWRpb0dyb3VwLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIH1cblxuICAgIC8vIFJlcXVpcmVkIHNvIHRoYXQgdGhlIHRlbXBsYXRlIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgdGhlIHR5cGUgb2YgdGhlIGNvZXJjZWQgaW5wdXRzLlxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV92YWx1ZTogYW55O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oaWRlVGV4dDogQm9vbGVhbklucHV0O1xuXG59XG4iLCI8ZGl2IGNsYXNzPVwiYmJpLXJhZGlvLWJ1dHRvbi1pbmRpY2F0b3JcIj48L2Rpdj5cbjxzcGFuICpuZ0lmPVwiIWhpZGVUZXh0XCJcbiAgICAgIGNsYXNzPVwiYmJpLXJhZGlvLWJ1dHRvbi10ZXh0XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbiJdfQ==
@@ -0,0 +1,168 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Optional, Output, ViewEncapsulation } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';
3
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
+ import { shouldShowErrors } from '../../control-error/control-error.utils';
5
+ import { BehaviorSubject } from 'rxjs';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../control-error/control-error-submit.directive";
8
+ import * as i2 from "@angular/common";
9
+ import * as i3 from "../../control-error/control-error/control-error.component";
10
+ import * as i4 from "@bravobit/bb-foundation/utils";
11
+ export class BbiRadioGroup {
12
+ constructor(_injector, _changeDetectorRef, _errorSubmit) {
13
+ this._injector = _injector;
14
+ this._changeDetectorRef = _changeDetectorRef;
15
+ this._errorSubmit = _errorSubmit;
16
+ // Inputs.
17
+ this.label = null;
18
+ this.errorMode = 'blur';
19
+ // Outputs.
20
+ this.valueChange = new EventEmitter();
21
+ // State.
22
+ this.validationErrors$ = new BehaviorSubject(null);
23
+ this._value = null;
24
+ this._disabled = false;
25
+ this._grouped = false;
26
+ this._readonly = false;
27
+ this._required = false;
28
+ this._inline = false;
29
+ // Methods.
30
+ this.onChange = () => ({});
31
+ this.onTouched = () => ({});
32
+ }
33
+ // Value.
34
+ get value() {
35
+ return this._value;
36
+ }
37
+ set value(value) {
38
+ this._value = value;
39
+ this._changeDetectorRef.markForCheck();
40
+ }
41
+ // Disabled.
42
+ get disabled() {
43
+ return this._disabled;
44
+ }
45
+ set disabled(value) {
46
+ const newValue = coerceBooleanProperty(value);
47
+ if (newValue !== this.disabled) {
48
+ this._disabled = newValue;
49
+ this._changeDetectorRef.markForCheck();
50
+ }
51
+ }
52
+ // Grouped.
53
+ get grouped() {
54
+ return this._grouped;
55
+ }
56
+ set grouped(value) {
57
+ const newValue = coerceBooleanProperty(value);
58
+ if (newValue !== this.grouped) {
59
+ this._grouped = newValue;
60
+ this._changeDetectorRef.markForCheck();
61
+ }
62
+ }
63
+ // Readonly.
64
+ get readonly() {
65
+ return this._readonly;
66
+ }
67
+ set readonly(value) {
68
+ const newValue = coerceBooleanProperty(value);
69
+ if (newValue !== this.grouped) {
70
+ this._readonly = newValue;
71
+ this._changeDetectorRef.markForCheck();
72
+ }
73
+ }
74
+ // Required.
75
+ get required() {
76
+ return this._required;
77
+ }
78
+ set required(value) {
79
+ const newValue = coerceBooleanProperty(value);
80
+ if (newValue !== this.required) {
81
+ this._required = newValue;
82
+ this._changeDetectorRef.markForCheck();
83
+ }
84
+ }
85
+ // Inline.
86
+ get inline() {
87
+ return this._inline;
88
+ }
89
+ set inline(value) {
90
+ const newValue = coerceBooleanProperty(value);
91
+ if (newValue !== this.inline) {
92
+ this._inline = newValue;
93
+ this._changeDetectorRef.markForCheck();
94
+ }
95
+ }
96
+ ngDoCheck() {
97
+ const control = this._injector.get(NgControl);
98
+ const submitted = this._errorSubmit?.submitted;
99
+ const hasErrors = shouldShowErrors(this.errorMode, control, submitted, false, this.readonly);
100
+ const errors = control?.errors ?? null;
101
+ const newValue = hasErrors ? errors : null;
102
+ const equal = JSON.stringify(newValue) === JSON.stringify(this.validationErrors$.getValue());
103
+ if (equal) {
104
+ return;
105
+ }
106
+ this.validationErrors$.next(newValue);
107
+ }
108
+ select(value) {
109
+ if (this.value === value || this.disabled || this.readonly) {
110
+ return;
111
+ }
112
+ this.value = value;
113
+ this.onChange?.(this.value);
114
+ this.valueChange.emit(this.value);
115
+ this.onTouched?.();
116
+ }
117
+ registerOnChange(fn) {
118
+ this.onChange = fn;
119
+ }
120
+ registerOnTouched(fn) {
121
+ this.onTouched = fn;
122
+ }
123
+ setDisabledState(isDisabled) {
124
+ this.disabled = isDisabled;
125
+ }
126
+ writeValue(newValue) {
127
+ this.value = newValue;
128
+ }
129
+ }
130
+ BbiRadioGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiRadioGroup, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }, { token: i1.BbiControlErrorSubmit, optional: true }], target: i0.ɵɵFactoryTarget.Component });
131
+ BbiRadioGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.5", type: BbiRadioGroup, selector: "bbi-radio-group", inputs: { label: "label", errorMode: "errorMode", value: "value", disabled: "disabled", grouped: "grouped", readonly: "readonly", required: "required", inline: "inline" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.disabled": "disabled", "class.readonly": "readonly", "class.grouped": "grouped", "class.required": "required", "class.inline": "inline", "class.error": "validationErrors$?.getValue()" }, classAttribute: "bbi-radio-group" }, providers: [
132
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbiRadioGroup), multi: true }
133
+ ], ngImport: i0, template: "<label *ngIf=\"label as labelContent\"\n class=\"bbi-radio-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-radio-group-items\">\n <ng-content select=\"bbi-radio-button\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"validationErrors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n", styles: [".bbi-radio-group{display:block}.bbi-radio-group.grouped{margin-bottom:var(--radio-group-grouping, 20px)}.bbi-radio-group.readonly{pointer-events:none}.bbi-radio-group.error>.bbi-radio-group-label{color:var(--radio-group-error, var(--error-color, #bd322a))}.bbi-radio-group.required>.bbi-radio-group-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bbi-radio-group-label{border:0;padding:0;font-family:inherit;display:inline-block;box-sizing:border-box;vertical-align:initial;color:var(--radio-group-label-color, #525252);font-size:var(--radio-group-label-font-size, 14px);margin-bottom:var(--radio-group-label-offset, 4px);line-height:var(--radio-group-label-line-height, 1.33);font-weight:var(--radio-group-label-font-weight, 400)}.bbi-radio-group-items{display:flex;flex-direction:column}.bbi-radio-group-items:not(:empty){margin-bottom:-var(--radio-group-item-spacing-vertical,4px)}.bbi-radio-group-items>*{margin-bottom:var(--radio-group-item-spacing-vertical, 4px)}@media only screen and (min-width: 768px){.bbi-radio-group.inline>.bbi-radio-group-items{flex-wrap:wrap;flex-direction:row}.bbi-radio-group.inline>.bbi-radio-group-items>*:not(:last-child){margin-right:var(--radio-group-item-spacing-horizontal, 10px)}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BbiControlError, selector: "bbi-control-error", inputs: ["errors"] }, { kind: "directive", type: i4.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.5", ngImport: i0, type: BbiRadioGroup, decorators: [{
135
+ type: Component,
136
+ args: [{ selector: 'bbi-radio-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
137
+ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbiRadioGroup), multi: true }
138
+ ], host: {
139
+ 'class': 'bbi-radio-group',
140
+ '[class.disabled]': 'disabled',
141
+ '[class.readonly]': 'readonly',
142
+ '[class.grouped]': 'grouped',
143
+ '[class.required]': 'required',
144
+ '[class.inline]': 'inline',
145
+ '[class.error]': 'validationErrors$?.getValue()'
146
+ }, preserveWhitespaces: false, template: "<label *ngIf=\"label as labelContent\"\n class=\"bbi-radio-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-radio-group-items\">\n <ng-content select=\"bbi-radio-button\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"validationErrors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n", styles: [".bbi-radio-group{display:block}.bbi-radio-group.grouped{margin-bottom:var(--radio-group-grouping, 20px)}.bbi-radio-group.readonly{pointer-events:none}.bbi-radio-group.error>.bbi-radio-group-label{color:var(--radio-group-error, var(--error-color, #bd322a))}.bbi-radio-group.required>.bbi-radio-group-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bbi-radio-group-label{border:0;padding:0;font-family:inherit;display:inline-block;box-sizing:border-box;vertical-align:initial;color:var(--radio-group-label-color, #525252);font-size:var(--radio-group-label-font-size, 14px);margin-bottom:var(--radio-group-label-offset, 4px);line-height:var(--radio-group-label-line-height, 1.33);font-weight:var(--radio-group-label-font-weight, 400)}.bbi-radio-group-items{display:flex;flex-direction:column}.bbi-radio-group-items:not(:empty){margin-bottom:-var(--radio-group-item-spacing-vertical,4px)}.bbi-radio-group-items>*{margin-bottom:var(--radio-group-item-spacing-vertical, 4px)}@media only screen and (min-width: 768px){.bbi-radio-group.inline>.bbi-radio-group-items{flex-wrap:wrap;flex-direction:row}.bbi-radio-group.inline>.bbi-radio-group-items>*:not(:last-child){margin-right:var(--radio-group-item-spacing-horizontal, 10px)}}\n"] }]
147
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ChangeDetectorRef }, { type: i1.BbiControlErrorSubmit, decorators: [{
148
+ type: Optional
149
+ }] }]; }, propDecorators: { label: [{
150
+ type: Input
151
+ }], errorMode: [{
152
+ type: Input
153
+ }], valueChange: [{
154
+ type: Output
155
+ }], value: [{
156
+ type: Input
157
+ }], disabled: [{
158
+ type: Input
159
+ }], grouped: [{
160
+ type: Input
161
+ }], readonly: [{
162
+ type: Input
163
+ }], required: [{
164
+ type: Input
165
+ }], inline: [{
166
+ type: Input
167
+ }] } });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb250cm9scy9zcmMvbGliL3JhZGlvL3JhZGlvLWdyb3VwL3JhZGlvLWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9yYWRpby9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQXFCLFNBQVMsRUFBVyxZQUFZLEVBQUUsVUFBVSxFQUFZLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFlLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzFMLE9BQU8sRUFBdUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFtQixNQUFNLGdCQUFnQixDQUFDO0FBR3BHLE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7OztBQXNCckMsTUFBTSxPQUFPLGFBQWE7SUE2R3RCLFlBQW9CLFNBQW1CLEVBQ25CLGtCQUFxQyxFQUN6QixZQUFvQztRQUZoRCxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUFDekIsaUJBQVksR0FBWixZQUFZLENBQXdCO1FBN0dwRSxVQUFVO1FBQ0QsVUFBSyxHQUFxQyxJQUFJLENBQUM7UUFDL0MsY0FBUyxHQUFxQixNQUFNLENBQUM7UUFFOUMsV0FBVztRQUNELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUVoRCxTQUFTO1FBQ1Qs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UUFBUTs0Q0E1R1osS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0ksV0FBVztzQkFBcEIsTUFBTTtnQkFPSCxLQUFLO3NCQURSLEtBQUs7Z0JBY0YsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixPQUFPO3NCQURWLEtBQUs7Z0JBaUJGLFFBQVE7c0JBRFgsS0FBSztnQkFpQkYsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixNQUFNO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT3B0aW9uYWwsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QmJpQ29udHJvbEVycm9yU3VibWl0fSBmcm9tICcuLi8uLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3Itc3VibWl0LmRpcmVjdGl2ZSc7XG5pbXBvcnQge0NvbnRyb2xFcnJvck1vZGV9IGZyb20gJy4uLy4uL2NvbnRyb2wtZXJyb3IvY29udHJvbC1lcnJvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7c2hvdWxkU2hvd0Vycm9yc30gZnJvbSAnLi4vLi4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLnV0aWxzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYmktcmFkaW8tZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcmFkaW8tZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJiaVJhZGlvR3JvdXApLCBtdWx0aTogdHJ1ZX1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2JiaS1yYWRpby1ncm91cCcsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5yZWFkb25seV0nOiAncmVhZG9ubHknLFxuICAgICAgICAnW2NsYXNzLmdyb3VwZWRdJzogJ2dyb3VwZWQnLFxuICAgICAgICAnW2NsYXNzLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCcsXG4gICAgICAgICdbY2xhc3MuaW5saW5lXSc6ICdpbmxpbmUnLFxuICAgICAgICAnW2NsYXNzLmVycm9yXSc6ICd2YWxpZGF0aW9uRXJyb3JzJD8uZ2V0VmFsdWUoKSdcbiAgICB9LFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlXG59KVxuZXhwb3J0IGNsYXNzIEJiaVJhZGlvR3JvdXAgaW1wbGVtZW50cyBEb0NoZWNrLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBlcnJvck1vZGU6IENvbnRyb2xFcnJvck1vZGUgPSAnYmx1cic7XG5cbiAgICAvLyBPdXRwdXRzLlxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLy8gU3RhdGUuXG4gICAgdmFsaWRhdGlvbkVycm9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPihudWxsKTtcblxuICAgIC8vIFZhbHVlLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgICB9XG5cbiAgICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIF92YWx1ZTogYW55ID0gbnVsbDtcblxuICAgIC8vIERpc2FibGVkLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBHcm91cGVkLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGdyb3VwZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cGVkO1xuICAgIH1cblxuICAgIHNldCBncm91cGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuZ3JvdXBlZCkge1xuICAgICAgICAgICAgdGhpcy5fZ3JvdXBlZCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9ncm91cGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBSZWFkb25seS5cbiAgICBASW5wdXQoKVxuICAgIGdldCByZWFkb25seSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRvbmx5O1xuICAgIH1cblxuICAgIHNldCByZWFkb25seSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmdyb3VwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlYWRvbmx5ID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBSZXF1aXJlZC5cbiAgICBASW5wdXQoKVxuICAgIGdldCByZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICAgIH1cblxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gSW5saW5lLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlubGluZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lubGluZTtcbiAgICB9XG5cbiAgICBzZXQgaW5saW5lKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuaW5saW5lKSB7XG4gICAgICAgICAgICB0aGlzLl9pbmxpbmUgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfaW5saW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBNZXRob2RzLlxuICAgIG9uQ2hhbmdlOiAobmV3VmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG4gICAgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4gKHt9KTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZXJyb3JTdWJtaXQ/OiBCYmlDb250cm9sRXJyb3JTdWJtaXQpIHtcbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9pbmplY3Rvci5nZXQoTmdDb250cm9sKTtcbiAgICAgICAgY29uc3Qgc3VibWl0dGVkID0gdGhpcy5fZXJyb3JTdWJtaXQ/LnN1Ym1pdHRlZDtcbiAgICAgICAgY29uc3QgaGFzRXJyb3JzID0gc2hvdWxkU2hvd0Vycm9ycyh0aGlzLmVycm9yTW9kZSwgY29udHJvbCwgc3VibWl0dGVkLCBmYWxzZSwgdGhpcy5yZWFkb25seSk7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IGNvbnRyb2w/LmVycm9ycyA/PyBudWxsO1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGhhc0Vycm9ycyA/IGVycm9ycyA6IG51bGw7XG5cbiAgICAgICAgY29uc3QgZXF1YWwgPSBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSkgPT09IEpTT04uc3RyaW5naWZ5KHRoaXMudmFsaWRhdGlvbkVycm9ycyQuZ2V0VmFsdWUoKSk7XG4gICAgICAgIGlmIChlcXVhbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzJC5uZXh0KG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBzZWxlY3QodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZSA9PT0gdmFsdWUgfHwgdGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlPy4odGhpcy52YWx1ZSk7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQ/LigpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChuZXdWYWx1ZTogYm9vbGVhbikgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZShuZXdWYWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB9XG5cbiAgICAvLyBSZXF1aXJlZCBzbyB0aGF0IHRoZSB0ZW1wbGF0ZSB0eXBlIGNoZWNrZXIgY2FuIGluZmVyIHRoZSB0eXBlIG9mIHRoZSBjb2VyY2VkIGlucHV0cy5cbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV92YWx1ZTogYW55O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZWFkb25seTogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9ncm91cGVkOiBCb29sZWFuSW5wdXQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3JlcXVpcmVkOiBCb29sZWFuSW5wdXQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2lubGluZTogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9lcnJvck1vZGU6IENvbnRyb2xFcnJvck1vZGU7XG5cbn1cbiIsIjxsYWJlbCAqbmdJZj1cImxhYmVsIGFzIGxhYmVsQ29udGVudFwiXG4gICAgICAgY2xhc3M9XCJiYmktcmFkaW8tZ3JvdXAtbGFiZWxcIj5cbiAgICA8bmctdGVtcGxhdGUgW2JiVGVtcGxhdGVdPVwibGFiZWxDb250ZW50XCI+e3sgbGFiZWxDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbjwvbGFiZWw+XG5cbjxkaXYgY2xhc3M9XCJiYmktcmFkaW8tZ3JvdXAtaXRlbXNcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJiYmktcmFkaW8tYnV0dG9uXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxiYmktY29udHJvbC1lcnJvciAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMkIHwgYXN5bmMgYXMgZXJyb3JzXCJcbiAgICAgICAgICAgICAgICAgICBbZXJyb3JzXT1cImVycm9yc1wiPlxuPC9iYmktY29udHJvbC1lcnJvcj5cbiJdfQ==