@odx/angular 12.4.0 → 12.4.2

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 (83) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/cdk/checkbox-control/lib/checkbox-control.directive.d.ts +0 -2
  3. package/cdk/custom-form-control/lib/custom-form-control.d.ts +3 -1
  4. package/esm2022/cdk/checkbox-control/lib/checkbox-control.directive.mjs +1 -4
  5. package/esm2022/cdk/custom-form-control/lib/custom-form-control.mjs +9 -5
  6. package/esm2022/components/checkbox/lib/checkbox.component.mjs +3 -3
  7. package/esm2022/components/datepicker/lib/datepicker.component.mjs +2 -2
  8. package/esm2022/components/daterangepicker/lib/daterangepicker.component.mjs +3 -5
  9. package/esm2022/components/form-field/lib/components/form-field-info/form-field-info.component.mjs +2 -3
  10. package/esm2022/components/form-field/lib/form-field.component.mjs +3 -3
  11. package/esm2022/components/form-field/lib/form-field.service.mjs +3 -2
  12. package/esm2022/components/switch/lib/switch.component.mjs +3 -3
  13. package/fesm2022/odx-angular-breakpoints.mjs +1 -1
  14. package/fesm2022/odx-angular-cdk-a11y.mjs +1 -1
  15. package/fesm2022/odx-angular-cdk-active-indicator.mjs +1 -1
  16. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs +1 -1
  17. package/fesm2022/odx-angular-cdk-checkbox-control.mjs +1 -4
  18. package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  19. package/fesm2022/odx-angular-cdk-connected-overlay.mjs +1 -1
  20. package/fesm2022/odx-angular-cdk-custom-form-control.mjs +8 -4
  21. package/fesm2022/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  22. package/fesm2022/odx-angular-cdk-dynamic-view.mjs +1 -1
  23. package/fesm2022/odx-angular-cdk-expandable.mjs +1 -1
  24. package/fesm2022/odx-angular-cdk-option-control.mjs +1 -1
  25. package/fesm2022/odx-angular-cdk-radio-group-control.mjs +1 -1
  26. package/fesm2022/odx-angular-components-accordion.mjs +1 -1
  27. package/fesm2022/odx-angular-components-action-group.mjs +1 -1
  28. package/fesm2022/odx-angular-components-area-header.mjs +1 -1
  29. package/fesm2022/odx-angular-components-autocomplete.mjs +1 -1
  30. package/fesm2022/odx-angular-components-avatar.mjs +1 -1
  31. package/fesm2022/odx-angular-components-badge.mjs +1 -1
  32. package/fesm2022/odx-angular-components-bar.mjs +1 -1
  33. package/fesm2022/odx-angular-components-breadcrumbs.mjs +1 -1
  34. package/fesm2022/odx-angular-components-button-group.mjs +1 -1
  35. package/fesm2022/odx-angular-components-button.mjs +1 -1
  36. package/fesm2022/odx-angular-components-calendar.mjs +2 -2
  37. package/fesm2022/odx-angular-components-card.mjs +2 -2
  38. package/fesm2022/odx-angular-components-checkbox.mjs +3 -3
  39. package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
  40. package/fesm2022/odx-angular-components-chip.mjs +1 -1
  41. package/fesm2022/odx-angular-components-circular-progress.mjs +1 -1
  42. package/fesm2022/odx-angular-components-content-box.mjs +1 -1
  43. package/fesm2022/odx-angular-components-datepicker.mjs +3 -3
  44. package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
  45. package/fesm2022/odx-angular-components-daterangepicker.mjs +5 -7
  46. package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
  47. package/fesm2022/odx-angular-components-dropdown.mjs +1 -1
  48. package/fesm2022/odx-angular-components-error-page.mjs +1 -1
  49. package/fesm2022/odx-angular-components-footer.mjs +2 -2
  50. package/fesm2022/odx-angular-components-form-field.mjs +77 -76
  51. package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
  52. package/fesm2022/odx-angular-components-header-navigation.mjs +1 -1
  53. package/fesm2022/odx-angular-components-header.mjs +1 -1
  54. package/fesm2022/odx-angular-components-icon.mjs +1 -1
  55. package/fesm2022/odx-angular-components-inline-message.mjs +1 -1
  56. package/fesm2022/odx-angular-components-list.mjs +2 -2
  57. package/fesm2022/odx-angular-components-loading-spinner.mjs +1 -1
  58. package/fesm2022/odx-angular-components-logo.mjs +1 -1
  59. package/fesm2022/odx-angular-components-main-menu.mjs +2 -2
  60. package/fesm2022/odx-angular-components-mainfilter-group.mjs +1 -1
  61. package/fesm2022/odx-angular-components-menu.mjs +1 -1
  62. package/fesm2022/odx-angular-components-modal.mjs +1 -1
  63. package/fesm2022/odx-angular-components-navigation-back.mjs +1 -1
  64. package/fesm2022/odx-angular-components-notification.mjs +3 -3
  65. package/fesm2022/odx-angular-components-paginator.mjs +1 -1
  66. package/fesm2022/odx-angular-components-progress.mjs +1 -1
  67. package/fesm2022/odx-angular-components-radio-group.mjs +1 -1
  68. package/fesm2022/odx-angular-components-rail-navigation.mjs +1 -1
  69. package/fesm2022/odx-angular-components-rich-list.mjs +1 -1
  70. package/fesm2022/odx-angular-components-select.mjs +1 -1
  71. package/fesm2022/odx-angular-components-slider.mjs +1 -1
  72. package/fesm2022/odx-angular-components-spinbox.mjs +1 -1
  73. package/fesm2022/odx-angular-components-switch.mjs +3 -3
  74. package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
  75. package/fesm2022/odx-angular-components-tab-bar.mjs +1 -1
  76. package/fesm2022/odx-angular-components-table.mjs +1 -1
  77. package/fesm2022/odx-angular-components-timepicker.mjs +2 -2
  78. package/fesm2022/odx-angular-components-toast.mjs +1 -1
  79. package/fesm2022/odx-angular-components-toggle-button-group.mjs +1 -1
  80. package/fesm2022/odx-angular-components-tooltip.mjs +1 -1
  81. package/fesm2022/odx-angular-components-wizard.mjs +1 -1
  82. package/fesm2022/odx-angular.mjs +2 -2
  83. package/package.json +1 -1
@@ -62,7 +62,7 @@ let FormFieldComponent = class FormFieldComponent {
62
62
  reactiveClassBinding(hasWarning$, 'has-warning');
63
63
  }
64
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "odx-form-field", inputs: { label: "label", hasWarning: ["hasWarning", "hasWarning", booleanAttribute], variant: "variant" }, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], queries: [{ propertyName: "labelDirective", first: true, predicate: FormFieldLabelDirective, descendants: true }], viewQueries: [{ propertyName: "controlElement", first: true, predicate: ["control"], descendants: true }], ngImport: i0, template: "@if (hasLabel) {\n <label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\">\n @if (label) {\n <ng-container>\n <odx-form-field-label>{{ label }}</odx-form-field-label>\n @if (formFieldService.isRequired$ | async) {\n <span class=\"odx-form-field__label-is-required\">*</span>\n }\n </ng-container>\n } @else {\n <ng-content select=\"odx-form-field-label\" />\n @if (formFieldService.isRequired$ | async) {\n <span class=\"odx-form-field__label-is-required\">*</span>\n }\n }\n </label>\n}\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\" #control>\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\" />\n </div>\n <ng-content />\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\" />\n </div>\n </div>\n @if (!formGroup) {\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\">\n <ng-content select=\"odx-form-field-hint\" />\n </odx-form-field-info>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }, { kind: "directive", type: FormFieldLabelDirective, selector: "odx-form-field-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: FormFieldComponent, isStandalone: true, selector: "odx-form-field", inputs: { label: "label", hasWarning: ["hasWarning", "hasWarning", booleanAttribute], variant: "variant" }, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], queries: [{ propertyName: "labelDirective", first: true, predicate: FormFieldLabelDirective, descendants: true }], viewQueries: [{ propertyName: "controlElement", first: true, predicate: ["control"], descendants: true }], ngImport: i0, template: "@if (hasLabel) {\n @let controlId = formFieldService.controlId$ | async;\n\n <label class=\"odx-form-field__label\" [attr.for]=\"controlId\" [attr.aria-owns]=\"controlId\">\n @if (label) {\n <odx-form-field-label>{{ label }}</odx-form-field-label>\n } @else {\n <ng-content select=\"odx-form-field-label\" />\n }\n @if (formFieldService.isRequired$ | async) {\n <span class=\"odx-form-field__label-is-required\">*</span>\n }\n </label>\n}\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\" #control>\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\" />\n </div>\n <ng-content />\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\" />\n </div>\n </div>\n @if (!formGroup) {\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\">\n <ng-content select=\"odx-form-field-hint\" />\n </odx-form-field-info>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: FormFieldInfoComponent, selector: "odx-form-field-info", inputs: ["error"] }, { kind: "directive", type: FormFieldLabelDirective, selector: "odx-form-field-label" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
66
66
  };
67
67
  __decorate([
68
68
  CSSModifier(),
@@ -75,7 +75,7 @@ FormFieldComponent = __decorate([
75
75
  export { FormFieldComponent };
76
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldComponent, decorators: [{
77
77
  type: Component,
78
- args: [{ standalone: true, selector: 'odx-form-field', imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], template: "@if (hasLabel) {\n <label class=\"odx-form-field__label\" [attr.for]=\"formFieldService.controlId$ | async\" [attr.aria-owns]=\"formFieldService.controlId$ | async\">\n @if (label) {\n <ng-container>\n <odx-form-field-label>{{ label }}</odx-form-field-label>\n @if (formFieldService.isRequired$ | async) {\n <span class=\"odx-form-field__label-is-required\">*</span>\n }\n </ng-container>\n } @else {\n <ng-content select=\"odx-form-field-label\" />\n @if (formFieldService.isRequired$ | async) {\n <span class=\"odx-form-field__label-is-required\">*</span>\n }\n }\n </label>\n}\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\" #control>\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\" />\n </div>\n <ng-content />\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\" />\n </div>\n </div>\n @if (!formGroup) {\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\">\n <ng-content select=\"odx-form-field-hint\" />\n </odx-form-field-info>\n }\n</div>\n" }]
78
+ args: [{ standalone: true, selector: 'odx-form-field', imports: [CoreModule, FormFieldInfoComponent, FormFieldLabelDirective], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormFieldService, FormFieldErrorService, DisabledController.connect(), ReadonlyController.connect()], template: "@if (hasLabel) {\n @let controlId = formFieldService.controlId$ | async;\n\n <label class=\"odx-form-field__label\" [attr.for]=\"controlId\" [attr.aria-owns]=\"controlId\">\n @if (label) {\n <odx-form-field-label>{{ label }}</odx-form-field-label>\n } @else {\n <ng-content select=\"odx-form-field-label\" />\n }\n @if (formFieldService.isRequired$ | async) {\n <span class=\"odx-form-field__label-is-required\">*</span>\n }\n </label>\n}\n<div class=\"odx-form-field__inner\">\n <div class=\"odx-form-field__control\" #control>\n <div class=\"odx-form-field__prefix\">\n <ng-content select=\"[odxFormFieldPrefix]\" />\n </div>\n <ng-content />\n <div class=\"odx-form-field__suffix\">\n <ng-content select=\"[odxFormFieldSuffix]\" />\n </div>\n </div>\n @if (!formGroup) {\n <odx-form-field-info [error]=\"formFieldErrorService.error$ | async\">\n <ng-content select=\"odx-form-field-hint\" />\n </odx-form-field-info>\n }\n</div>\n" }]
79
79
  }], ctorParameters: () => [], propDecorators: { labelDirective: [{
80
80
  type: ContentChild,
81
81
  args: [FormFieldLabelDirective]
@@ -90,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
90
90
  }], variant: [{
91
91
  type: Input
92
92
  }] } });
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBRW5EOztHQUVHO0FBV0ksSUFBTSxrQkFBa0Is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LGNBQWM7c0JBRHBCLFNBQVM7dUJBQUMsU0FBUztnQkFVYixLQUFLO3NCQURYLEtBQUs7Z0JBU0ssVUFBVTtzQkFEcEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFnQi9CLE9BQU87c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgRGlzYWJsZWRDb250cm9sbGVyLCBSZWFkb25seUNvbnRyb2xsZXIgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50LCBDU1NNb2RpZmllciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50LCByZWFjdGl2ZUNsYXNzQmluZGluZyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkSW5mb0NvbXBvbmVudCwgRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1GaWVsZExhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZvcm1GaWVsZFNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtRmllbGRWYXJpYW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZvcm0gZmllbGQgY29tcG9uZW50LlxuICovXG5AQ1NTQ29tcG9uZW50KCdmb3JtLWZpZWxkJylcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ29keC1mb3JtLWZpZWxkJyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEZvcm1GaWVsZEluZm9Db21wb25lbnQsIEZvcm1GaWVsZExhYmVsRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbRm9ybUZpZWxkU2VydmljZSwgRm9ybUZpZWxkRXJyb3JTZXJ2aWNlLCBEaXNhYmxlZENvbnRyb2xsZXIuY29ubmVjdCgpLCBSZWFkb25seUNvbnRyb2xsZXIuY29ubmVjdCgpXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc1dhcm5pbmckJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmb3JtR3JvdXAgPSBpbmplY3QoRm9ybUdyb3VwQ29tcG9uZW50LCB7IG9wdGlvbmFsOiB0cnVlLCBob3N0OiB0cnVlIH0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUZpZWxkU2VydmljZSA9IGluamVjdChGb3JtRmllbGRTZXJ2aWNlLCB7IHNlbGY6IHRydWUgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmb3JtRmllbGRFcnJvclNlcnZpY2UgPSBpbmplY3QoRm9ybUZpZWxkRXJyb3JTZXJ2aWNlLCB7IHNlbGY6IHRydWUgfSk7XG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZGlyZWN0aXZlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZm9ybSBmaWVsZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtGb3JtRmllbGRMYWJlbERpcmVjdGl2ZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoRm9ybUZpZWxkTGFiZWxEaXJlY3RpdmUpXG4gIHB1YmxpYyBsYWJlbERpcmVjdGl2ZT86IEZvcm1GaWVsZExhYmVsRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udHJvbCBlbGVtZW50IG9mIHRoZSBmb3JtIGZpZWxkIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+fVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY29udHJvbCcpXG4gIHB1YmxpYyBjb250cm9sRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgb2YgdGhlIGZvcm0gZmllbGQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsPzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIHNob3VsZCBoYXZlIGEgd2FybmluZy5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBoYXNXYXJuaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5oYXNXYXJuaW5nJCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCBoYXNXYXJuaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc1dhcm5pbmckJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IG9mIHRoZSBmb3JtIGZpZWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Rm9ybUZpZWxkVmFyaWFudH1cbiAgICogQGRlZmF1bHQgRm9ybUZpZWxkVmFyaWFudC5GVUxMXG4gICAqL1xuICBAQ1NTTW9kaWZpZXIoKVxuICBASW5wdXQoKVxuICBwdWJsaWMgdmFyaWFudDogRm9ybUZpZWxkVmFyaWFudCB8IG51bGwgPSBGb3JtRmllbGRWYXJpYW50LkZVTEw7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIGhhcyBhIGxhYmVsLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMubGFiZWxEaXJlY3RpdmUgfHwgdGhpcy5sYWJlbCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBoYXNXYXJuaW5nJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybUZpZWxkRXJyb3JTZXJ2aWNlLmVycm9yJCwgdGhpcy5oYXNXYXJuaW5nJCRdKS5waXBlKG1hcCgoW2hhc0Vycm9yLCBoYXNXYXJuaW5nXSkgPT4gaGFzRXJyb3IgJiYgaGFzV2FybmluZykpO1xuICAgIHJlYWN0aXZlQ2xhc3NCaW5kaW5nKHRoaXMuZm9ybUZpZWxkU2VydmljZS5pc1JlcXVpcmVkJCwgJ29keC1mb3JtLWZpZWxkLS1yZXF1aXJlZCcpO1xuICAgIHJlYWN0aXZlQ2xhc3NCaW5kaW5nKHRoaXMuZm9ybUZpZWxkU2VydmljZS5pc0Rpc2FibGVkJCwgJ2lzLWRpc2FibGVkJyk7XG4gICAgcmVhY3RpdmVDbGFzc0JpbmRpbmcodGhpcy5mb3JtRmllbGRTZXJ2aWNlLmlzUmVhZG9ubHkkLCAnaXMtcmVhZG9ubHknKTtcbiAgICByZWFjdGl2ZUNsYXNzQmluZGluZyh0aGlzLmZvcm1GaWVsZEVycm9yU2VydmljZS5oYXNFcnJvciQsICdoYXMtZXJyb3InKTtcbiAgICByZWFjdGl2ZUNsYXNzQmluZGluZyhoYXNXYXJuaW5nJCwgJ2hhcy13YXJuaW5nJyk7XG4gIH1cbn1cbiIsIkBpZiAoaGFzTGFiZWwpIHtcbiAgPGxhYmVsIGNsYXNzPVwib2R4LWZvcm0tZmllbGRfX2xhYmVsXCIgW2F0dHIuZm9yXT1cImZvcm1GaWVsZFNlcnZpY2UuY29udHJvbElkJCB8IGFzeW5jXCIgW2F0dHIuYXJpYS1vd25zXT1cImZvcm1GaWVsZFNlcnZpY2UuY29udHJvbElkJCB8IGFzeW5jXCI+XG4gICAgQGlmIChsYWJlbCkge1xuICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPG9keC1mb3JtLWZpZWxkLWxhYmVsPnt7IGxhYmVsIH19PC9vZHgtZm9ybS1maWVsZC1sYWJlbD5cbiAgICAgICAgQGlmIChmb3JtRmllbGRTZXJ2aWNlLmlzUmVxdWlyZWQkIHwgYXN5bmMpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9keC1mb3JtLWZpZWxkX19sYWJlbC1pcy1yZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwib2R4LWZvcm0tZmllbGQtbGFiZWxcIiAvPlxuICAgICAgQGlmIChmb3JtRmllbGRTZXJ2aWNlLmlzUmVxdWlyZWQkIHwgYXN5bmMpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJvZHgtZm9ybS1maWVsZF9fbGFiZWwtaXMtcmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgfVxuICAgIH1cbiAgPC9sYWJlbD5cbn1cbjxkaXYgY2xhc3M9XCJvZHgtZm9ybS1maWVsZF9faW5uZXJcIj5cbiAgPGRpdiBjbGFzcz1cIm9keC1mb3JtLWZpZWxkX19jb250cm9sXCIgI2NvbnRyb2w+XG4gICAgPGRpdiBjbGFzcz1cIm9keC1mb3JtLWZpZWxkX19wcmVmaXhcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhGb3JtRmllbGRQcmVmaXhdXCIgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudCAvPlxuICAgIDxkaXYgY2xhc3M9XCJvZHgtZm9ybS1maWVsZF9fc3VmZml4XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbb2R4Rm9ybUZpZWxkU3VmZml4XVwiIC8+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICBAaWYgKCFmb3JtR3JvdXApIHtcbiAgICA8b2R4LWZvcm0tZmllbGQtaW5mbyBbZXJyb3JdPVwiZm9ybUZpZWxkRXJyb3JTZXJ2aWNlLmVycm9yJCB8IGFzeW5jXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJvZHgtZm9ybS1maWVsZC1oaW50XCIgLz5cbiAgICA8L29keC1mb3JtLWZpZWxkLWluZm8+XG4gIH1cbjwvZGl2PlxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9mb3JtLWZpZWxkL3NyYy9saWIvZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVKLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEYsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBRW5EOztHQUVHO0FBV0ksSUFBTSxrQkFBa0Is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LGNBQWM7c0JBRHBCLFNBQVM7dUJBQUMsU0FBUztnQkFVYixLQUFLO3NCQURYLEtBQUs7Z0JBU0ssVUFBVTtzQkFEcEIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFnQi9CLE9BQU87c0JBRGIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSwgRGlzYWJsZWRDb250cm9sbGVyLCBSZWFkb25seUNvbnRyb2xsZXIgfSBmcm9tICdAb2R4L2FuZ3VsYXInO1xuaW1wb3J0IHsgQ1NTQ29tcG9uZW50LCBDU1NNb2RpZmllciB9IGZyb20gJ0BvZHgvYW5ndWxhci9pbnRlcm5hbCc7XG5pbXBvcnQgeyBpbmplY3RFbGVtZW50LCByZWFjdGl2ZUNsYXNzQmluZGluZyB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkSW5mb0NvbXBvbmVudCwgRm9ybUdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1GaWVsZExhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7IEZvcm1GaWVsZFNlcnZpY2UgfSBmcm9tICcuL2Zvcm0tZmllbGQuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtRmllbGRWYXJpYW50IH0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUZpZWxkRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZvcm0gZmllbGQgY29tcG9uZW50LlxuICovXG5AQ1NTQ29tcG9uZW50KCdmb3JtLWZpZWxkJylcbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ29keC1mb3JtLWZpZWxkJyxcbiAgaW1wb3J0czogW0NvcmVNb2R1bGUsIEZvcm1GaWVsZEluZm9Db21wb25lbnQsIEZvcm1GaWVsZExhYmVsRGlyZWN0aXZlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbRm9ybUZpZWxkU2VydmljZSwgRm9ybUZpZWxkRXJyb3JTZXJ2aWNlLCBEaXNhYmxlZENvbnRyb2xsZXIuY29ubmVjdCgpLCBSZWFkb25seUNvbnRyb2xsZXIuY29ubmVjdCgpXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkQ29tcG9uZW50IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGhhc1dhcm5pbmckJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBmb3JtR3JvdXAgPSBpbmplY3QoRm9ybUdyb3VwQ29tcG9uZW50LCB7IG9wdGlvbmFsOiB0cnVlLCBob3N0OiB0cnVlIH0pO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybUZpZWxkU2VydmljZSA9IGluamVjdChGb3JtRmllbGRTZXJ2aWNlLCB7IHNlbGY6IHRydWUgfSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBmb3JtRmllbGRFcnJvclNlcnZpY2UgPSBpbmplY3QoRm9ybUZpZWxkRXJyb3JTZXJ2aWNlLCB7IHNlbGY6IHRydWUgfSk7XG4gIHB1YmxpYyByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0RWxlbWVudCgpO1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgZGlyZWN0aXZlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZm9ybSBmaWVsZCBjb21wb25lbnQuXG4gICAqXG4gICAqIEB0eXBlIHtGb3JtRmllbGRMYWJlbERpcmVjdGl2ZSB8IHVuZGVmaW5lZH1cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoRm9ybUZpZWxkTGFiZWxEaXJlY3RpdmUpXG4gIHB1YmxpYyBsYWJlbERpcmVjdGl2ZT86IEZvcm1GaWVsZExhYmVsRGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udHJvbCBlbGVtZW50IG9mIHRoZSBmb3JtIGZpZWxkIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHR5cGUge0VsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+fVxuICAgKi9cbiAgQFZpZXdDaGlsZCgnY29udHJvbCcpXG4gIHB1YmxpYyBjb250cm9sRWxlbWVudCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgbGFiZWwgb2YgdGhlIGZvcm0gZmllbGQgY29tcG9uZW50LlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nIHwgbnVsbH1cbiAgICogQGRlZmF1bHQgbnVsbFxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGxhYmVsPzogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIHNob3VsZCBoYXZlIGEgd2FybmluZy5cbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgcHVibGljIHNldCBoYXNXYXJuaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5oYXNXYXJuaW5nJCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIGdldCBoYXNXYXJuaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmhhc1dhcm5pbmckJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2YXJpYW50IG9mIHRoZSBmb3JtIGZpZWxkLlxuICAgKlxuICAgKiBAdHlwZSB7Rm9ybUZpZWxkVmFyaWFudH1cbiAgICogQGRlZmF1bHQgRm9ybUZpZWxkVmFyaWFudC5GVUxMXG4gICAqL1xuICBAQ1NTTW9kaWZpZXIoKVxuICBASW5wdXQoKVxuICBwdWJsaWMgdmFyaWFudDogRm9ybUZpZWxkVmFyaWFudCB8IG51bGwgPSBGb3JtRmllbGRWYXJpYW50LkZVTEw7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIGhhcyBhIGxhYmVsLlxuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzTGFiZWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKHRoaXMubGFiZWxEaXJlY3RpdmUgfHwgdGhpcy5sYWJlbCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBoYXNXYXJuaW5nJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybUZpZWxkRXJyb3JTZXJ2aWNlLmVycm9yJCwgdGhpcy5oYXNXYXJuaW5nJCRdKS5waXBlKG1hcCgoW2hhc0Vycm9yLCBoYXNXYXJuaW5nXSkgPT4gaGFzRXJyb3IgJiYgaGFzV2FybmluZykpO1xuICAgIHJlYWN0aXZlQ2xhc3NCaW5kaW5nKHRoaXMuZm9ybUZpZWxkU2VydmljZS5pc1JlcXVpcmVkJCwgJ29keC1mb3JtLWZpZWxkLS1yZXF1aXJlZCcpO1xuICAgIHJlYWN0aXZlQ2xhc3NCaW5kaW5nKHRoaXMuZm9ybUZpZWxkU2VydmljZS5pc0Rpc2FibGVkJCwgJ2lzLWRpc2FibGVkJyk7XG4gICAgcmVhY3RpdmVDbGFzc0JpbmRpbmcodGhpcy5mb3JtRmllbGRTZXJ2aWNlLmlzUmVhZG9ubHkkLCAnaXMtcmVhZG9ubHknKTtcbiAgICByZWFjdGl2ZUNsYXNzQmluZGluZyh0aGlzLmZvcm1GaWVsZEVycm9yU2VydmljZS5oYXNFcnJvciQsICdoYXMtZXJyb3InKTtcbiAgICByZWFjdGl2ZUNsYXNzQmluZGluZyhoYXNXYXJuaW5nJCwgJ2hhcy13YXJuaW5nJyk7XG4gIH1cbn1cbiIsIkBpZiAoaGFzTGFiZWwpIHtcbiAgQGxldCBjb250cm9sSWQgPSBmb3JtRmllbGRTZXJ2aWNlLmNvbnRyb2xJZCQgfCBhc3luYztcblxuICA8bGFiZWwgY2xhc3M9XCJvZHgtZm9ybS1maWVsZF9fbGFiZWxcIiBbYXR0ci5mb3JdPVwiY29udHJvbElkXCIgW2F0dHIuYXJpYS1vd25zXT1cImNvbnRyb2xJZFwiPlxuICAgIEBpZiAobGFiZWwpIHtcbiAgICAgIDxvZHgtZm9ybS1maWVsZC1sYWJlbD57eyBsYWJlbCB9fTwvb2R4LWZvcm0tZmllbGQtbGFiZWw+XG4gICAgfSBAZWxzZSB7XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJvZHgtZm9ybS1maWVsZC1sYWJlbFwiIC8+XG4gICAgfVxuICAgIEBpZiAoZm9ybUZpZWxkU2VydmljZS5pc1JlcXVpcmVkJCB8IGFzeW5jKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cIm9keC1mb3JtLWZpZWxkX19sYWJlbC1pcy1yZXF1aXJlZFwiPio8L3NwYW4+XG4gICAgfVxuICA8L2xhYmVsPlxufVxuPGRpdiBjbGFzcz1cIm9keC1mb3JtLWZpZWxkX19pbm5lclwiPlxuICA8ZGl2IGNsYXNzPVwib2R4LWZvcm0tZmllbGRfX2NvbnRyb2xcIiAjY29udHJvbD5cbiAgICA8ZGl2IGNsYXNzPVwib2R4LWZvcm0tZmllbGRfX3ByZWZpeFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW29keEZvcm1GaWVsZFByZWZpeF1cIiAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50IC8+XG4gICAgPGRpdiBjbGFzcz1cIm9keC1mb3JtLWZpZWxkX19zdWZmaXhcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltvZHhGb3JtRmllbGRTdWZmaXhdXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIEBpZiAoIWZvcm1Hcm91cCkge1xuICAgIDxvZHgtZm9ybS1maWVsZC1pbmZvIFtlcnJvcl09XCJmb3JtRmllbGRFcnJvclNlcnZpY2UuZXJyb3IkIHwgYXN5bmNcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm9keC1mb3JtLWZpZWxkLWhpbnRcIiAvPlxuICAgIDwvb2R4LWZvcm0tZmllbGQtaW5mbz5cbiAgfVxuPC9kaXY+XG4iXX0=
@@ -63,7 +63,8 @@ export class FormFieldService extends Controller {
63
63
  *
64
64
  * @emits {boolean}
65
65
  */
66
- this.isRequired$ = this.control$.pipe(map((control) => (control ? control.nativeElement.hasAttribute('required') || control.control.hasValidator(Validators.required) : false)), shareReplay({ bufferSize: 1, refCount: true }));
66
+ this.isRequired$ = this.control$.pipe(switchMap((control) => (control?.control.events ?? EMPTY).pipe(switchMap(async () => control), // Ensure new microtask is created
67
+ startWith(control))), map((control) => !!(control?.nativeElement.hasAttribute('required') || control?.control.hasValidator(Validators.required))), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
67
68
  /**
68
69
  * Observable that emits a boolean indicating whether the control is readonly,
69
70
  * based on the presence of the readonly attribute.
@@ -113,4 +114,4 @@ export class FormFieldService extends Controller {
113
114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FormFieldService, decorators: [{
114
115
  type: Injectable
115
116
  }] });
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvZm9ybS1maWVsZC9zcmMvbGliL2Zvcm0tZmllbGQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU94STs7Ozs7Ozs7Ozs7R0FXRztBQUVILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxVQUFVO0lBRGhEOztRQUVtQix1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRCx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBRTVFOzs7OztXQUtHO1FBQ2EsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRjs7Ozs7V0FLRztRQUNhLGVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDN0MsR0FB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QUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksYUFBYTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRU8sMEJBQTBCLENBQUMsRUFBRSxPQUFPLEVBQWdCO1FBQzFELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDNUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLHVCQUF1QixDQUFDLEVBQUUsT0FBTyxFQUFnQjtRQUN2RCxPQUFPLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUMvQixTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUN6QixHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFDdEMsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7K0dBMUhVLGdCQUFnQjttSEFBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb250cm9sbGVyLCBEaXNhYmxlZENvbnRyb2xsZXIsIFJlYWRvbmx5Q29udHJvbGxlciB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBnZXRVbmlxdWVJZCB9IGZyb20gJ0BvZHgvYW5ndWxhci91dGlscyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIEVNUFRZLCBPYnNlcnZhYmxlLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBtZXJnZSwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmludGVyZmFjZSBGaWVsZENvbnRyb2wge1xuICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG4gIG5hdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGNlbnRyYWxpemVkIGZvcm0gZmllbGQgbWFuYWdlbWVudCBmb3IgQW5ndWxhciBhcHBsaWNhdGlvbnMuXG4gKiBUaGlzIHNlcnZpY2UgaGFuZGxlcyB0aGUgcmVnaXN0cmF0aW9uIGFuZCBtYW5hZ2VtZW50IG9mIGZvcm0gY29udHJvbHMsIGluY2x1ZGluZyB0aGVpciBkaXNhYmxlZCBhbmQgcmVhZC1vbmx5IHN0YXRlcyxcbiAqIGFuZCBpbnRlZ3JhdGVzIHNlYW1sZXNzbHkgd2l0aCBBbmd1bGFyJ3MgZm9ybXMgbW9kdWxlLiBJdCBtYW5hZ2VzIHRoZSBzdGF0ZSBvZiBpbmRpdmlkdWFsIGZvcm0gZmllbGRzIGFjcm9zcyB0aGUgYXBwbGljYXRpb24sXG4gKiBlbnN1cmluZyB0aGF0IGNoYW5nZXMgdG8gdGhlIHN0YXRlIChzdWNoIGFzIGRpc2FibGVkIG9yIHJlYWQtb25seSkgYXJlIGNvbnNpc3RlbnRseSByZWZsZWN0ZWQgaW4gdGhlIFVJLlxuICpcbiAqIEV4dGVuZHMgdGhlIGBDb250cm9sbGVyYCBjbGFzcywgd2hpY2ggcHJvdmlkZXMgYmFzaWMgZnVuY3Rpb25hbGl0eSBmb3IgbWFuYWdpbmcgc3RhdGUgYW5kIGludGVyYWN0aW9ucy5cbiAqIFRoZSBzZXJ2aWNlIHV0aWxpemVzIEFuZ3VsYXIncyBkZXBlbmRlbmN5IGluamVjdGlvbiB0byBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUgZm9ybSBjb250cm9scyBhbmQgdGhlaXIgcHJvcGVydGllcyxcbiAqIG1ha2luZyBpdCBlYXNpZXIgdG8gbWFpbnRhaW4gYW5kIHVwZGF0ZSBmb3JtIHN0YXRlIGFjcm9zcyBjb21wbGV4IGZvcm1zLlxuICpcbiAqIEBleHRlbmRzIHtDb250cm9sbGVyfVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRm9ybUZpZWxkU2VydmljZSBleHRlbmRzIENvbnRyb2xsZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRpc2FibGVkQ29udHJvbGxlciA9IERpc2FibGVkQ29udHJvbGxlci5pbmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWFkb25seUNvbnRyb2xsZXIgPSBSZWFkb25seUNvbnRyb2xsZXIuaW5qZWN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udHJvbCQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWVsZENvbnRyb2wgfCBudWxsPihudWxsKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJlZCBjb250cm9sIG9iamVjdCwgd2hpY2ggaW5jbHVkZXNcbiAgICogYm90aCB0aGUgY29udHJvbCBpbnN0YW5jZSBhbmQgdGhlIGFzc29jaWF0ZWQgbmF0aXZlIEhUTUwgZWxlbWVudC5cbiAgICpcbiAgICogQGVtaXRzIHtGaWVsZENvbnRyb2wgfCBudWxsfVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2wkID0gdGhpcy5jb250cm9sJCQucGlwZShzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBJRCBvZiB0aGUgY3VycmVudCBjb250cm9sJ3MgSFRNTCBlbGVtZW50LiBHZW5lcmF0ZXMgYSB1bmlxdWUgSURcbiAgICogaWYgbm90IGFscmVhZHkgYXNzaWduZWQuXG4gICAqXG4gICAqIEBlbWl0cyB7c3RyaW5nIHwgbnVsbH1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sSWQkID0gdGhpcy5jb250cm9sJC5waXBlKFxuICAgIG1hcCgoY29udHJvbCkgPT4gKGNvbnRyb2wgPyBjb250cm9sLm5hdGl2ZUVsZW1lbnQuaWQgfHwgZ2V0VW5pcXVlSWQoJ29keC1mb3JtLWZpZWxkJykgOiBudWxsKSksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBoaW50IElEIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29udHJvbCwgd2hpY2ggaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGFjY2Vzc2liaWxpdHlcbiAgICogcHVycG9zZXMuXG4gICAqXG4gICAqIEBlbWl0cyB7c3RyaW5nIHwgbnVsbH1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sSGludElkJCA9IHRoaXMuY29udHJvbElkJC5waXBlKFxuICAgIG1hcCgoaWQpID0+IChpZCA/IGAke2lkfS1oaW50YCA6IG51bGwpKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGVycm9yIG1lc3NhZ2UgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250cm9sLFxuICAgKiB1c2VkIGZvciBsaW5raW5nIGZvcm0gZXJyb3JzIGZvciBhY2Nlc3NpYmlsaXR5LlxuICAgKlxuICAgKiBAZW1pdHMge3N0cmluZyB8IG51bGx9XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbEVycm9ySWQkID0gdGhpcy5jb250cm9sSWQkLnBpcGUoXG4gICAgbWFwKChpZCkgPT4gKGlkID8gYCR7aWR9LWVycm9yYCA6IG51bGwpKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgY29udHJvbCBpcyBkaXNhYmxlZCxcbiAgICogY29tYmluaW5nIGJvdGggaW50ZXJuYWwgc3RhdGUgYW5kIGNvbnRyb2xsZXIgc3RhdGUuXG4gICAqXG4gICAqIEBlbWl0cyB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc0Rpc2FibGVkJCA9IHRoaXMuY29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IChjb250cm9sID8gbWVyZ2UodGhpcy51cGRhdGVDb250cm9sRGlzYWJsZWRTdGF0ZShjb250cm9sKSwgdGhpcy5nZXRDb250cm9sRGlzYWJsZWRTdGF0ZShjb250cm9sKSkgOiBvZihmYWxzZSkpKSxcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgdGhhdCBlbWl0cyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIHJlcXVpcmVkLFxuICAgKiBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIHJlcXVpcmVkIGF0dHJpYnV0ZSBvciB2YWxpZGF0b3IuXG4gICAqXG4gICAqIEBlbWl0cyB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1JlcXVpcmVkJCA9IHRoaXMuY29udHJvbCQucGlwZShcbiAgICBtYXAoKGNvbnRyb2wpID0+IChjb250cm9sID8gY29udHJvbC5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgncmVxdWlyZWQnKSB8fCBjb250cm9sLmNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpIDogZmFsc2UpKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgY29udHJvbCBpcyByZWFkb25seSxcbiAgICogYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIHRoZSByZWFkb25seSBhdHRyaWJ1dGUuXG4gICAqXG4gICAqIEBlbWl0cyB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1JlYWRvbmx5JCA9IHRoaXMuY29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IChjb250cm9sICYmIHRoaXMucmVhZG9ubHlDb250cm9sbGVyID8gdGhpcy5yZWFkb25seUNvbnRyb2xsZXIuaXNSZWFkb25seSQgOiBvZihmYWxzZSkpKSxcbiAgKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sJCQuY29tcGxldGUoKTtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNvbnRyb2wgYWxvbmcgd2l0aCBpdHMgbmF0aXZlIGVsZW1lbnQgdG8gdGhlIHNlcnZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7QWJzdHJhY3RDb250cm9sfSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgZm9ybSBjb250cm9sLlxuICAgKiBAcGFyYW0ge0VsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+fSBuYXRpdmVFbGVtZW50IC0gVGhlIG5hdGl2ZSBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29udHJvbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHsgbmF0aXZlRWxlbWVudCB9OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbCQkLm5leHQoeyBjb250cm9sLCBuYXRpdmVFbGVtZW50IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGN1cnJlbnRseSByZWdpc3RlcmVkIGNvbnRyb2wgZnJvbSB0aGUgc2VydmljZS5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVDb250cm9sKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbCQkLm5leHQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRyb2xEaXNhYmxlZFN0YXRlKHsgY29udHJvbCB9OiBGaWVsZENvbnRyb2wpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZENvbnRyb2xsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkQ29udHJvbGxlci5pc0Rpc2FibGVkJC5waXBlKFxuICAgICAgICB0YXAoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cm9sRGlzYWJsZWRTdGF0ZSh7IGNvbnRyb2wgfTogRmllbGRDb250cm9sKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKGNvbnRyb2wuc3RhdHVzKSxcbiAgICAgIG1hcCgoc3RhdHVzKSA9PiBzdGF0dXMgPT09ICdESVNBQkxFRCcpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG59XG4iXX0=
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL2NvbXBvbmVudHMvZm9ybS1maWVsZC9zcmMvbGliL2Zvcm0tZmllbGQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBbUIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNsRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU94STs7Ozs7Ozs7Ozs7R0FXRztBQUVILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxVQUFVO0lBRGhEOztRQUVtQix1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRCx1QkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRCxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQXNCLElBQUksQ0FBQyxDQUFDO1FBRTVFOzs7OztXQUtHO1FBQ2EsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvRjs7Ozs7V0FLRztRQUNhLGVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDN0MsR0FB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbnRyb2xsZXIsIERpc2FibGVkQ29udHJvbGxlciwgUmVhZG9ubHlDb250cm9sbGVyIH0gZnJvbSAnQG9keC9hbmd1bGFyJztcbmltcG9ydCB7IGdldFVuaXF1ZUlkIH0gZnJvbSAnQG9keC9hbmd1bGFyL3V0aWxzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgRU1QVFksIE9ic2VydmFibGUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIG1lcmdlLCBvZiwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW50ZXJmYWNlIEZpZWxkQ29udHJvbCB7XG4gIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDtcbiAgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQ7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgY2VudHJhbGl6ZWQgZm9ybSBmaWVsZCBtYW5hZ2VtZW50IGZvciBBbmd1bGFyIGFwcGxpY2F0aW9ucy5cbiAqIFRoaXMgc2VydmljZSBoYW5kbGVzIHRoZSByZWdpc3RyYXRpb24gYW5kIG1hbmFnZW1lbnQgb2YgZm9ybSBjb250cm9scywgaW5jbHVkaW5nIHRoZWlyIGRpc2FibGVkIGFuZCByZWFkLW9ubHkgc3RhdGVzLFxuICogYW5kIGludGVncmF0ZXMgc2VhbWxlc3NseSB3aXRoIEFuZ3VsYXIncyBmb3JtcyBtb2R1bGUuIEl0IG1hbmFnZXMgdGhlIHN0YXRlIG9mIGluZGl2aWR1YWwgZm9ybSBmaWVsZHMgYWNyb3NzIHRoZSBhcHBsaWNhdGlvbixcbiAqIGVuc3VyaW5nIHRoYXQgY2hhbmdlcyB0byB0aGUgc3RhdGUgKHN1Y2ggYXMgZGlzYWJsZWQgb3IgcmVhZC1vbmx5KSBhcmUgY29uc2lzdGVudGx5IHJlZmxlY3RlZCBpbiB0aGUgVUkuXG4gKlxuICogRXh0ZW5kcyB0aGUgYENvbnRyb2xsZXJgIGNsYXNzLCB3aGljaCBwcm92aWRlcyBiYXNpYyBmdW5jdGlvbmFsaXR5IGZvciBtYW5hZ2luZyBzdGF0ZSBhbmQgaW50ZXJhY3Rpb25zLlxuICogVGhlIHNlcnZpY2UgdXRpbGl6ZXMgQW5ndWxhcidzIGRlcGVuZGVuY3kgaW5qZWN0aW9uIHRvIGFjY2VzcyBhbmQgbWFuaXB1bGF0ZSBmb3JtIGNvbnRyb2xzIGFuZCB0aGVpciBwcm9wZXJ0aWVzLFxuICogbWFraW5nIGl0IGVhc2llciB0byBtYWludGFpbiBhbmQgdXBkYXRlIGZvcm0gc3RhdGUgYWNyb3NzIGNvbXBsZXggZm9ybXMuXG4gKlxuICogQGV4dGVuZHMge0NvbnRyb2xsZXJ9XG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRTZXJ2aWNlIGV4dGVuZHMgQ29udHJvbGxlciBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlzYWJsZWRDb250cm9sbGVyID0gRGlzYWJsZWRDb250cm9sbGVyLmluamVjdCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlYWRvbmx5Q29udHJvbGxlciA9IFJlYWRvbmx5Q29udHJvbGxlci5pbmplY3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb250cm9sJCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpZWxkQ29udHJvbCB8IG51bGw+KG51bGwpO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGN1cnJlbnRseSByZWdpc3RlcmVkIGNvbnRyb2wgb2JqZWN0LCB3aGljaCBpbmNsdWRlc1xuICAgKiBib3RoIHRoZSBjb250cm9sIGluc3RhbmNlIGFuZCB0aGUgYXNzb2NpYXRlZCBuYXRpdmUgSFRNTCBlbGVtZW50LlxuICAgKlxuICAgKiBAZW1pdHMge0ZpZWxkQ29udHJvbCB8IG51bGx9XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29udHJvbCQgPSB0aGlzLmNvbnRyb2wkJC5waXBlKHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSkpO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIElEIG9mIHRoZSBjdXJyZW50IGNvbnRyb2wncyBIVE1MIGVsZW1lbnQuIEdlbmVyYXRlcyBhIHVuaXF1ZSBJRFxuICAgKiBpZiBub3QgYWxyZWFkeSBhc3NpZ25lZC5cbiAgICpcbiAgICogQGVtaXRzIHtzdHJpbmcgfCBudWxsfVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xJZCQgPSB0aGlzLmNvbnRyb2wkLnBpcGUoXG4gICAgbWFwKChjb250cm9sKSA9PiAoY29udHJvbCA/IGNvbnRyb2wubmF0aXZlRWxlbWVudC5pZCB8fCBnZXRVbmlxdWVJZCgnb2R4LWZvcm0tZmllbGQnKSA6IG51bGwpKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGhpbnQgSUQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb250cm9sLCB3aGljaCBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgYWNjZXNzaWJpbGl0eVxuICAgKiBwdXJwb3Nlcy5cbiAgICpcbiAgICogQGVtaXRzIHtzdHJpbmcgfCBudWxsfVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRyb2xIaW50SWQkID0gdGhpcy5jb250cm9sSWQkLnBpcGUoXG4gICAgbWFwKChpZCkgPT4gKGlkID8gYCR7aWR9LWhpbnRgIDogbnVsbCkpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZXJyb3IgbWVzc2FnZSBJRCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbnRyb2wsXG4gICAqIHVzZWQgZm9yIGxpbmtpbmcgZm9ybSBlcnJvcnMgZm9yIGFjY2Vzc2liaWxpdHkuXG4gICAqXG4gICAqIEBlbWl0cyB7c3RyaW5nIHwgbnVsbH1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sRXJyb3JJZCQgPSB0aGlzLmNvbnRyb2xJZCQucGlwZShcbiAgICBtYXAoKGlkKSA9PiAoaWQgPyBgJHtpZH0tZXJyb3JgIDogbnVsbCkpLFxuICAgIHNoYXJlUmVwbGF5KHsgYnVmZmVyU2l6ZTogMSwgcmVmQ291bnQ6IHRydWUgfSksXG4gICk7XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgdGhhdCBlbWl0cyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLFxuICAgKiBjb21iaW5pbmcgYm90aCBpbnRlcm5hbCBzdGF0ZSBhbmQgY29udHJvbGxlciBzdGF0ZS5cbiAgICpcbiAgICogQGVtaXRzIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzRGlzYWJsZWQkID0gdGhpcy5jb250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT4gKGNvbnRyb2wgPyBtZXJnZSh0aGlzLnVwZGF0ZUNvbnRyb2xEaXNhYmxlZFN0YXRlKGNvbnRyb2wpLCB0aGlzLmdldENvbnRyb2xEaXNhYmxlZFN0YXRlKGNvbnRyb2wpKSA6IG9mKGZhbHNlKSkpLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KSxcbiAgKTtcblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgcmVxdWlyZWQsXG4gICAqIGJhc2VkIG9uIHRoZSBwcmVzZW5jZSBvZiB0aGUgcmVxdWlyZWQgYXR0cmlidXRlIG9yIHZhbGlkYXRvci5cbiAgICpcbiAgICogQGVtaXRzIHtib29sZWFufVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlzUmVxdWlyZWQkID0gdGhpcy5jb250cm9sJC5waXBlKFxuICAgIHN3aXRjaE1hcCgoY29udHJvbCkgPT5cbiAgICAgIChjb250cm9sPy5jb250cm9sLmV2ZW50cyA/PyBFTVBUWSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGFzeW5jICgpID0+IGNvbnRyb2wpLCAvLyBFbnN1cmUgbmV3IG1pY3JvdGFzayBpcyBjcmVhdGVkXG4gICAgICAgIHN0YXJ0V2l0aChjb250cm9sKSxcbiAgICAgICksXG4gICAgKSxcbiAgICBtYXAoKGNvbnRyb2wpID0+ICEhKGNvbnRyb2w/Lm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdyZXF1aXJlZCcpIHx8IGNvbnRyb2w/LmNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpKSksXG4gICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pLFxuICApO1xuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgY29udHJvbCBpcyByZWFkb25seSxcbiAgICogYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIHRoZSByZWFkb25seSBhdHRyaWJ1dGUuXG4gICAqXG4gICAqIEBlbWl0cyB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpc1JlYWRvbmx5JCA9IHRoaXMuY29udHJvbCQucGlwZShcbiAgICBzd2l0Y2hNYXAoKGNvbnRyb2wpID0+IChjb250cm9sICYmIHRoaXMucmVhZG9ubHlDb250cm9sbGVyID8gdGhpcy5yZWFkb25seUNvbnRyb2xsZXIuaXNSZWFkb25seSQgOiBvZihmYWxzZSkpKSxcbiAgKTtcblxuICBwdWJsaWMgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jb250cm9sJCQuY29tcGxldGUoKTtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNvbnRyb2wgYWxvbmcgd2l0aCBpdHMgbmF0aXZlIGVsZW1lbnQgdG8gdGhlIHNlcnZpY2UuXG4gICAqXG4gICAqIEBwYXJhbSB7QWJzdHJhY3RDb250cm9sfSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgZm9ybSBjb250cm9sLlxuICAgKiBAcGFyYW0ge0VsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+fSBuYXRpdmVFbGVtZW50IC0gVGhlIG5hdGl2ZSBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgZm9ybSBjb250cm9sLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ29udHJvbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIHsgbmF0aXZlRWxlbWVudCB9OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pik6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbCQkLm5leHQoeyBjb250cm9sLCBuYXRpdmVFbGVtZW50IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIGN1cnJlbnRseSByZWdpc3RlcmVkIGNvbnRyb2wgZnJvbSB0aGUgc2VydmljZS5cbiAgICovXG4gIHB1YmxpYyByZW1vdmVDb250cm9sKCk6IHZvaWQge1xuICAgIHRoaXMuY29udHJvbCQkLm5leHQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNvbnRyb2xEaXNhYmxlZFN0YXRlKHsgY29udHJvbCB9OiBGaWVsZENvbnRyb2wpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZENvbnRyb2xsZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmRpc2FibGVkQ29udHJvbGxlci5pc0Rpc2FibGVkJC5waXBlKFxuICAgICAgICB0YXAoKHN0YXRlKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udHJvbC5lbmFibGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIEVNUFRZO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb250cm9sRGlzYWJsZWRTdGF0ZSh7IGNvbnRyb2wgfTogRmllbGRDb250cm9sKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGNvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKGNvbnRyb2wuc3RhdHVzKSxcbiAgICAgIG1hcCgoc3RhdHVzKSA9PiBzdGF0dXMgPT09ICdESVNBQkxFRCcpLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -18,7 +18,7 @@ import * as i1 from "@odx/angular";
18
18
  */
19
19
  let SwitchComponent = class SwitchComponent extends CheckBoxControl {
20
20
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SwitchComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SwitchComponent, isStandalone: true, selector: "odx-switch", host: { properties: { "class.is-active": "checked" } }, providers: [ReadonlyController.connect()], usesInheritance: true, hostDirectives: [{ directive: i1.WithDisabledState }], ngImport: i0, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content />\n @if (requiredGetter) {\n <span class=\"odx-switch__required\">*</span>\n }\n </div>\n</label>\n", dependencies: [{ kind: "directive", type: ControlDirective, selector: "[odxControl]", exportAs: ["odxControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SwitchComponent, isStandalone: true, selector: "odx-switch", host: { properties: { "class.is-active": "checked" } }, providers: [ReadonlyController.connect()], usesInheritance: true, hostDirectives: [{ directive: i1.WithDisabledState }], ngImport: i0, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content />\n @if (isRequired) {\n <span class=\"odx-switch__required\">*</span>\n }\n </div>\n</label>\n", dependencies: [{ kind: "directive", type: ControlDirective, selector: "[odxControl]", exportAs: ["odxControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
22
22
  };
23
23
  SwitchComponent = __decorate([
24
24
  CSSComponent('switch')
@@ -28,6 +28,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
28
28
  type: Component,
29
29
  args: [{ standalone: true, selector: 'odx-switch', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [ControlDirective], providers: [ReadonlyController.connect()], hostDirectives: [WithDisabledState], host: {
30
30
  '[class.is-active]': 'checked',
31
- }, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content />\n @if (requiredGetter) {\n <span class=\"odx-switch__required\">*</span>\n }\n </div>\n</label>\n" }]
31
+ }, template: "<label class=\"odx-switch__label\">\n <input\n odxControl\n class=\"odx-switch__input\"\n [attr.aria-checked]=\"ariaChecked\"\n [attr.aria-invalid]=\"hasError || null\"\n [attr.aria-readonly]=\"isReadonly || null\"\n [attr.aria-required]=\"isRequired || null\"\n [attr.tabindex]=\"tabindex || null\"\n [checked]=\"checked\"\n [disabled]=\"isDisabled || isReadonly\"\n [name]=\"name\"\n [readonly]=\"isReadonly\"\n [value]=\"value\"\n type=\"checkbox\"\n (blur)=\"onTouched()\"\n (change)=\"onChanged($event)\"\n />\n <div class=\"odx-switch__indicator\"></div>\n <div class=\"odx-switch__content\">\n <ng-content />\n @if (isRequired) {\n <span class=\"odx-switch__required\">*</span>\n }\n </div>\n</label>\n" }]
32
32
  }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3N3aXRjaC9zcmMvbGliL3N3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9zd2l0Y2gvc3JjL2xpYi9zd2l0Y2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUVyRDs7Ozs7Ozs7O0dBU0c7QUFlSSxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFnQixTQUFRLGVBQWU7K0dBQXZDLGVBQWU7bUdBQWYsZUFBZSxpSEFOZixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLHdHQ3hCM0MsMndCQTBCQSw0Q0RIWSxnQkFBZ0I7O0FBT2YsZUFBZTtJQWQzQixZQUFZLENBQUMsUUFBUSxDQUFDO0dBY1YsZUFBZSxDQUEyQjs7NEZBQTFDLGVBQWU7a0JBYjNCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1QixDQUFDLGdCQUFnQixDQUFDLGFBQ2hCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUMsa0JBQ3pCLENBQUMsaUJBQWlCLENBQUMsUUFDN0I7d0JBQ0osbUJBQW1CLEVBQUUsU0FBUztxQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhZG9ubHlDb250cm9sbGVyLCBXaXRoRGlzYWJsZWRTdGF0ZSB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBDaGVja0JveENvbnRyb2wgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2NoZWNrYm94LWNvbnRyb2wnO1xuaW1wb3J0IHsgQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY3VzdG9tLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuXG4vKipcbiAqIFN3aXRjaENvbXBvbmVudCBwcm92aWRlcyBhIGN1c3RvbSBzd2l0Y2ggKHRvZ2dsZSkgY29udHJvbCB0aGF0IGNhbiBiZSB1c2VkIHdpdGhpbiBmb3Jtc1xuICogb3Igc3RhbmRhbG9uZSBmb3IgdG9nZ2xpbmcgYSBzcGVjaWZpYyBiaW5hcnkgc3RhdGUuIEl0IHN1cHBvcnRzIHJlYWRvbmx5IGFuZCBkaXNhYmxlZCBzdGF0ZXMsXG4gKiBhbmQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IHdpdGggQW5ndWxhcidzIGZvcm0gY29udHJvbHMgZm9yIGRhdGEgYmluZGluZyBhbmQgc3RhdGUgbWFuYWdlbWVudC5cbiAqIEhhcyBob3N0IGRpcmVjdGl2ZXMgZm9yIGRpc2FibGVkIHN0YXRlIGhhbmRsaW5nLlxuICogRXh0ZW5kcyBDaGVja0JveENvbnRyb2wgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGJlaGF2aW9yLlxuICpcbiAqIEBzZWUge1dpdGhEaXNhYmxlZFN0YXRlfVxuICogQHNlZSB7Q2hlY2tCb3hDb250cm9sfVxuICovXG5AQ1NTQ29tcG9uZW50KCdzd2l0Y2gnKVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnb2R4LXN3aXRjaCcsXG4gIHRlbXBsYXRlVXJsOiAnc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtDb250cm9sRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbUmVhZG9ubHlDb250cm9sbGVyLmNvbm5lY3QoKV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbV2l0aERpc2FibGVkU3RhdGVdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5pcy1hY3RpdmVdJzogJ2NoZWNrZWQnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb21wb25lbnQgZXh0ZW5kcyBDaGVja0JveENvbnRyb2wge31cbiIsIjxsYWJlbCBjbGFzcz1cIm9keC1zd2l0Y2hfX2xhYmVsXCI+XG4gIDxpbnB1dFxuICAgIG9keENvbnRyb2xcbiAgICBjbGFzcz1cIm9keC1zd2l0Y2hfX2lucHV0XCJcbiAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiYXJpYUNoZWNrZWRcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvciB8fCBudWxsXCJcbiAgICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cImlzUmVhZG9ubHkgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJpc1JlcXVpcmVkIHx8IG51bGxcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4IHx8IG51bGxcIlxuICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkIHx8IGlzUmVhZG9ubHlcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtyZWFkb25seV09XCJpc1JlYWRvbmx5XCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2VkKCRldmVudClcIlxuICAvPlxuICA8ZGl2IGNsYXNzPVwib2R4LXN3aXRjaF9faW5kaWNhdG9yXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZHgtc3dpdGNoX19jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgICBAaWYgKHJlcXVpcmVkR2V0dGVyKSB7XG4gICAgICA8c3BhbiBjbGFzcz1cIm9keC1zd2l0Y2hfX3JlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9sYWJlbD5cbiJdfQ==
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9jb21wb25lbnRzL3N3aXRjaC9zcmMvbGliL3N3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvY29tcG9uZW50cy9zd2l0Y2gvc3JjL2xpYi9zd2l0Y2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7OztBQUVyRDs7Ozs7Ozs7O0dBU0c7QUFlSSxJQUFNLGVBQWUsR0FBckIsTUFBTSxlQUFnQixTQUFRLGVBQWU7K0dBQXZDLGVBQWU7bUdBQWYsZUFBZSxpSEFOZixDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDLHdHQ3hCM0MsdXdCQTBCQSw0Q0RIWSxnQkFBZ0I7O0FBT2YsZUFBZTtJQWQzQixZQUFZLENBQUMsUUFBUSxDQUFDO0dBY1YsZUFBZSxDQUEyQjs7NEZBQTFDLGVBQWU7a0JBYjNCLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLFlBQVksbUJBRUwsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxXQUM1QixDQUFDLGdCQUFnQixDQUFDLGFBQ2hCLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUMsa0JBQ3pCLENBQUMsaUJBQWlCLENBQUMsUUFDN0I7d0JBQ0osbUJBQW1CLEVBQUUsU0FBUztxQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhZG9ubHlDb250cm9sbGVyLCBXaXRoRGlzYWJsZWRTdGF0ZSB9IGZyb20gJ0BvZHgvYW5ndWxhcic7XG5pbXBvcnQgeyBDaGVja0JveENvbnRyb2wgfSBmcm9tICdAb2R4L2FuZ3VsYXIvY2RrL2NoZWNrYm94LWNvbnRyb2wnO1xuaW1wb3J0IHsgQ29udHJvbERpcmVjdGl2ZSB9IGZyb20gJ0BvZHgvYW5ndWxhci9jZGsvY3VzdG9tLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBDU1NDb21wb25lbnQgfSBmcm9tICdAb2R4L2FuZ3VsYXIvaW50ZXJuYWwnO1xuXG4vKipcbiAqIFN3aXRjaENvbXBvbmVudCBwcm92aWRlcyBhIGN1c3RvbSBzd2l0Y2ggKHRvZ2dsZSkgY29udHJvbCB0aGF0IGNhbiBiZSB1c2VkIHdpdGhpbiBmb3Jtc1xuICogb3Igc3RhbmRhbG9uZSBmb3IgdG9nZ2xpbmcgYSBzcGVjaWZpYyBiaW5hcnkgc3RhdGUuIEl0IHN1cHBvcnRzIHJlYWRvbmx5IGFuZCBkaXNhYmxlZCBzdGF0ZXMsXG4gKiBhbmQgaW50ZWdyYXRlcyBzZWFtbGVzc2x5IHdpdGggQW5ndWxhcidzIGZvcm0gY29udHJvbHMgZm9yIGRhdGEgYmluZGluZyBhbmQgc3RhdGUgbWFuYWdlbWVudC5cbiAqIEhhcyBob3N0IGRpcmVjdGl2ZXMgZm9yIGRpc2FibGVkIHN0YXRlIGhhbmRsaW5nLlxuICogRXh0ZW5kcyBDaGVja0JveENvbnRyb2wgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGJlaGF2aW9yLlxuICpcbiAqIEBzZWUge1dpdGhEaXNhYmxlZFN0YXRlfVxuICogQHNlZSB7Q2hlY2tCb3hDb250cm9sfVxuICovXG5AQ1NTQ29tcG9uZW50KCdzd2l0Y2gnKVxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnb2R4LXN3aXRjaCcsXG4gIHRlbXBsYXRlVXJsOiAnc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGltcG9ydHM6IFtDb250cm9sRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbUmVhZG9ubHlDb250cm9sbGVyLmNvbm5lY3QoKV0sXG4gIGhvc3REaXJlY3RpdmVzOiBbV2l0aERpc2FibGVkU3RhdGVdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5pcy1hY3RpdmVdJzogJ2NoZWNrZWQnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBTd2l0Y2hDb21wb25lbnQgZXh0ZW5kcyBDaGVja0JveENvbnRyb2wge31cbiIsIjxsYWJlbCBjbGFzcz1cIm9keC1zd2l0Y2hfX2xhYmVsXCI+XG4gIDxpbnB1dFxuICAgIG9keENvbnRyb2xcbiAgICBjbGFzcz1cIm9keC1zd2l0Y2hfX2lucHV0XCJcbiAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiYXJpYUNoZWNrZWRcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJoYXNFcnJvciB8fCBudWxsXCJcbiAgICBbYXR0ci5hcmlhLXJlYWRvbmx5XT1cImlzUmVhZG9ubHkgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJpc1JlcXVpcmVkIHx8IG51bGxcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cInRhYmluZGV4IHx8IG51bGxcIlxuICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkIHx8IGlzUmVhZG9ubHlcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtyZWFkb25seV09XCJpc1JlYWRvbmx5XCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxuICAgIChjaGFuZ2UpPVwib25DaGFuZ2VkKCRldmVudClcIlxuICAvPlxuICA8ZGl2IGNsYXNzPVwib2R4LXN3aXRjaF9faW5kaWNhdG9yXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJvZHgtc3dpdGNoX19jb250ZW50XCI+XG4gICAgPG5nLWNvbnRlbnQgLz5cbiAgICBAaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgIDxzcGFuIGNsYXNzPVwib2R4LXN3aXRjaF9fcmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgIH1cbiAgPC9kaXY+XG48L2xhYmVsPlxuIl19
@@ -1,6 +1,6 @@
1
1
  import { createConfigTokens, untilDestroyed, coerceArray } from '@odx/angular/utils';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, Injectable, TemplateRef, ViewContainerRef, Directive, Input, NgModule } from '@angular/core';
3
+ import { inject, Injectable, TemplateRef, ViewContainerRef, Input, Directive, NgModule } from '@angular/core';
4
4
  import { of, map, distinctUntilChanged, shareReplay, BehaviorSubject, switchMap, tap } from 'rxjs';
5
5
  import { BreakpointObserver } from '@angular/cdk/layout';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { FocusKeyManager, A11yModule as A11yModule$1 } from '@angular/cdk/a11y';
2
2
  import * as i0 from '@angular/core';
3
- import { EventEmitter, Directive, Output, HostListener, ContentChildren, NgModule } from '@angular/core';
3
+ import { EventEmitter, HostListener, Output, Directive, ContentChildren, NgModule } from '@angular/core';
4
4
  import * as i1 from '@odx/angular';
5
5
  import { DisabledController, WithDisabledState, WithTabIndex, CoreModule } from '@odx/angular';
6
6
  import { __decorate } from 'tslib';
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Directive, Input } from '@angular/core';
3
+ import { Input, Directive } from '@angular/core';
4
4
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
5
5
  import { fromElementResize$ } from '@odx/angular/rxjs';
6
6
  import { untilDestroyed, injectElement, hasChanged, isPresent, px, disableCSSTransitions, applyStyles } from '@odx/angular/utils';
@@ -1,6 +1,6 @@
1
1
  import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, ChangeDetectorRef, EventEmitter, booleanAttribute, Directive, ViewChild, Input, Output, HostListener, InjectionToken } from '@angular/core';
3
+ import { inject, ChangeDetectorRef, EventEmitter, booleanAttribute, HostListener, Output, Input, ViewChild, Directive, InjectionToken } from '@angular/core';
4
4
  import { detectControllerChanges, ODX_STRING_SEARCH_HANDLER, ODX_STRINGIFY } from '@odx/angular';
5
5
  import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
6
6
  import { DropdownDirective } from '@odx/angular/components/dropdown';
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, booleanAttribute, Directive, Input, Output } from '@angular/core';
2
+ import { EventEmitter, booleanAttribute, Output, Input, Directive } from '@angular/core';
3
3
  import { detectControllerChanges } from '@odx/angular';
4
4
  import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
5
5
  import { booleanToAttributeString, injectElement } from '@odx/angular/utils';
@@ -48,9 +48,6 @@ class CheckBoxControl extends CustomFormControl {
48
48
  super.updateValue(event.target.checked);
49
49
  this.checkedChange.next(this.checked);
50
50
  }
51
- get requiredGetter() {
52
- return this.required || this.isRequired;
53
- }
54
51
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CheckBoxControl, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
52
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: CheckBoxControl, selector: "[odxCheckBoxControl]", inputs: { checked: ["checked", "checked", booleanAttribute], controlValue: ["value", "controlValue"] }, outputs: { checkedChange: "checkedChange" }, usesInheritance: true, ngImport: i0 }); }
56
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-checkbox-control.mjs","sources":["../../../../libs/angular/cdk/checkbox-control/src/lib/checkbox-control.directive.ts","../../../../libs/angular/cdk/checkbox-control/src/odx-angular-cdk-checkbox-control.ts"],"sourcesContent":["import { booleanAttribute, Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { detectControllerChanges } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { booleanToAttributeString, injectElement } from '@odx/angular/utils';\n\n/**\n * `CheckBoxControl` is a directive that extends `CustomFormControl` to create a custom checkbox control.\n * It integrates seamlessly with Angular forms and provides additional events and bindings for enhanced\n * functionality.\n */\n@Directive({\n selector: '[odxCheckBoxControl]',\n})\nexport class CheckBoxControl extends CustomFormControl<boolean> {\n public readonly element = injectElement();\n public required!: boolean;\n\n @Input({ transform: booleanAttribute })\n public set checked(value: boolean) {\n this.value = value;\n }\n public get checked(): boolean {\n return this.value;\n }\n\n /**\n * The value of the checkbox control.\n *\n * @type {string | null}\n * @default null\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value')\n public controlValue: string | null = null;\n\n /**\n * A boolean value when the checked state of the checkbox changes.\n *\n * @emits {boolean} - The new checked state of the checkbox.\n */\n @Output()\n public checkedChange = new EventEmitter<boolean>();\n\n /**\n * Aria attribute that represents the checked state of the checkbox.\n *\n * @type {string}\n */\n public get ariaChecked(): string {\n return booleanToAttributeString(this.checked);\n }\n\n constructor() {\n super(false);\n detectControllerChanges(this).subscribe();\n }\n\n public onChanged(event: Event): void {\n event.stopPropagation();\n super.updateValue((event.target as HTMLInputElement).checked);\n this.checkedChange.next(this.checked);\n }\n\n protected get requiredGetter(): boolean {\n return this.required || this.isRequired;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKA;;;;AAIG;AAIG,MAAO,eAAgB,SAAQ,iBAA0B,CAAA;IAI7D,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAEpB,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,KAAK;;AAqBnB;;;;AAIG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG/C,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,KAAK,CAAC;QAvCE,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE;AAWzC;;;;;AAKG;;QAGI,IAAY,CAAA,YAAA,GAAkB,IAAI;AAEzC;;;;AAIG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAahD,QAAA,uBAAuB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;;AAGpC,IAAA,SAAS,CAAC,KAAY,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,WAAW,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;AAGvC,IAAA,IAAc,cAAc,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU;;+GAnD9B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,8EAIN,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAJzB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;wDAMY,OAAO,EAAA,CAAA;sBADjB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAgB/B,YAAY,EAAA,CAAA;sBADlB,KAAK;uBAAC,OAAO;gBASP,aAAa,EAAA,CAAA;sBADnB;;;ACxCH;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-cdk-checkbox-control.mjs","sources":["../../../../libs/angular/cdk/checkbox-control/src/lib/checkbox-control.directive.ts","../../../../libs/angular/cdk/checkbox-control/src/odx-angular-cdk-checkbox-control.ts"],"sourcesContent":["import { booleanAttribute, Directive, EventEmitter, Input, Output } from '@angular/core';\nimport { detectControllerChanges } from '@odx/angular';\nimport { CustomFormControl } from '@odx/angular/cdk/custom-form-control';\nimport { booleanToAttributeString, injectElement } from '@odx/angular/utils';\n\n/**\n * `CheckBoxControl` is a directive that extends `CustomFormControl` to create a custom checkbox control.\n * It integrates seamlessly with Angular forms and provides additional events and bindings for enhanced\n * functionality.\n */\n@Directive({\n selector: '[odxCheckBoxControl]',\n})\nexport class CheckBoxControl extends CustomFormControl<boolean> {\n public readonly element = injectElement();\n\n @Input({ transform: booleanAttribute })\n public set checked(value: boolean) {\n this.value = value;\n }\n public get checked(): boolean {\n return this.value;\n }\n\n /**\n * The value of the checkbox control.\n *\n * @type {string | null}\n * @default null\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('value')\n public controlValue: string | null = null;\n\n /**\n * A boolean value when the checked state of the checkbox changes.\n *\n * @emits {boolean} - The new checked state of the checkbox.\n */\n @Output()\n public checkedChange = new EventEmitter<boolean>();\n\n /**\n * Aria attribute that represents the checked state of the checkbox.\n *\n * @type {string}\n */\n public get ariaChecked(): string {\n return booleanToAttributeString(this.checked);\n }\n\n constructor() {\n super(false);\n detectControllerChanges(this).subscribe();\n }\n\n public onChanged(event: Event): void {\n event.stopPropagation();\n super.updateValue((event.target as HTMLInputElement).checked);\n this.checkedChange.next(this.checked);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKA;;;;AAIG;AAIG,MAAO,eAAgB,SAAQ,iBAA0B,CAAA;IAG7D,IACW,OAAO,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAEpB,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,KAAK;;AAqBnB;;;;AAIG;AACH,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,OAAO,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;;AAG/C,IAAA,WAAA,GAAA;QACE,KAAK,CAAC,KAAK,CAAC;QAtCE,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE;AAUzC;;;;;AAKG;;QAGI,IAAY,CAAA,YAAA,GAAkB,IAAI;AAEzC;;;;AAIG;AAEI,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW;AAahD,QAAA,uBAAuB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE;;AAGpC,IAAA,SAAS,CAAC,KAAY,EAAA;QAC3B,KAAK,CAAC,eAAe,EAAE;QACvB,KAAK,CAAC,WAAW,CAAE,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;;+GA9C5B,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,8EAGN,gBAAgB,CAAA,EAAA,YAAA,EAAA,CAAA,OAAA,EAAA,cAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAHzB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;wDAKY,OAAO,EAAA,CAAA;sBADjB,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE;gBAgB/B,YAAY,EAAA,CAAA;sBADlB,KAAK;uBAAC,OAAO;gBASP,aAAa,EAAA,CAAA;sBADnB;;;ACvCH;;AAEG;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, NgZone, Injector, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Input, Output, Injectable } from '@angular/core';
3
+ import { inject, NgZone, Injector, Output, Input, ViewChild, ViewEncapsulation, ChangeDetectionStrategy, Component, Injectable } from '@angular/core';
4
4
  import { arrow, flip, computePosition, offset, shift, size, hide, autoUpdate } from '@floating-ui/dom';
5
5
  import { CoreModule } from '@odx/angular';
6
6
  import { DynamicViewDirective, DynamicViewService } from '@odx/angular/cdk/dynamic-view';
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, inject, Input, ViewChild } from '@angular/core';
2
+ import { Directive, inject, booleanAttribute, ViewChild, Input } from '@angular/core';
3
3
  import { injectElement, arrayAttribute, Pure, untilDestroyed } from '@odx/angular/utils';
4
4
  import { __decorate, __metadata } from 'tslib';
5
5
  import { Validators, RequiredValidator, NgControl } from '@angular/forms';
@@ -110,7 +110,7 @@ class CustomFormControl extends Controller {
110
110
  * ````
111
111
  */
112
112
  get isRequired() {
113
- return !!this.requiredValidator?.required || this.hasValidator(Validators.required) || this.hasValidator(Validators.requiredTrue);
113
+ return this.required || !!this.requiredValidator?.required || this.hasValidator(Validators.required) || this.hasValidator(Validators.requiredTrue);
114
114
  }
115
115
  constructor(initialValue) {
116
116
  super();
@@ -145,6 +145,7 @@ class CustomFormControl extends Controller {
145
145
  * @type {string[]}
146
146
  */
147
147
  this.ignoreErrors = [];
148
+ this.required = false;
148
149
  /**
149
150
  * A reference to the `ControlDirective` if it exists within the same host. This allows for direct interaction
150
151
  * with the underlying form control directive.
@@ -203,7 +204,7 @@ class CustomFormControl extends Controller {
203
204
  return Object.keys(errors).some((error) => !this.ignoreErrors.includes(error));
204
205
  }
205
206
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomFormControl, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
206
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: CustomFormControl, inputs: { id: "id", name: "name", tabindex: "tabindex", ignoreErrors: ["ignoreErrors", "ignoreErrors", arrayAttribute] }, host: { properties: { "class.has-error": "hasError", "class.is-disabled": "isDisabled", "class.is-readonly": "isReadonly", "class.is-required": "required" } }, viewQueries: [{ propertyName: "control", first: true, predicate: ControlDirective, descendants: true }], usesInheritance: true, ngImport: i0 }); }
207
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: CustomFormControl, inputs: { id: "id", name: "name", tabindex: "tabindex", ignoreErrors: ["ignoreErrors", "ignoreErrors", arrayAttribute], required: ["required", "required", booleanAttribute] }, host: { properties: { "class.has-error": "hasError", "class.is-disabled": "isDisabled", "class.is-readonly": "isReadonly", "class.is-required": "isRequired" } }, viewQueries: [{ propertyName: "control", first: true, predicate: ControlDirective, descendants: true }], usesInheritance: true, ngImport: i0 }); }
207
208
  }
208
209
  __decorate([
209
210
  Pure,
@@ -218,7 +219,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
218
219
  '[class.has-error]': 'hasError',
219
220
  '[class.is-disabled]': 'isDisabled',
220
221
  '[class.is-readonly]': 'isReadonly',
221
- '[class.is-required]': 'required',
222
+ '[class.is-required]': 'isRequired',
222
223
  },
223
224
  }]
224
225
  }], ctorParameters: () => [{ type: undefined }], propDecorators: { id: [{
@@ -230,6 +231,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
230
231
  }], ignoreErrors: [{
231
232
  type: Input,
232
233
  args: [{ transform: arrayAttribute }]
234
+ }], required: [{
235
+ type: Input,
236
+ args: [{ transform: booleanAttribute }]
233
237
  }], control: [{
234
238
  type: ViewChild,
235
239
  args: [ControlDirective]
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-cdk-custom-form-control.mjs","sources":["../../../../libs/angular/cdk/custom-form-control/src/lib/control.directive.ts","../../../../libs/angular/cdk/custom-form-control/src/lib/custom-form-control.ts","../../../../libs/angular/cdk/custom-form-control/src/lib/input-control.directive.ts","../../../../libs/angular/cdk/custom-form-control/src/odx-angular-cdk-custom-form-control.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { injectElement } from '@odx/angular/utils';\n\n@Directive({\n standalone: true,\n selector: '[odxControl]',\n exportAs: 'odxControl',\n})\nexport class ControlDirective {\n public readonly element = injectElement();\n}\n","import { Directive, inject, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl, RequiredValidator, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\nimport { Controller, DisabledController, ReadonlyController } from '@odx/angular';\nimport { arrayAttribute, Pure } from '@odx/angular/utils';\nimport { ControlDirective } from './control.directive';\n\n/**\n * An abstract directive that serves as a base for custom form controls, integrating seamlessly with Angular Forms.\n * It incorporates common form control behaviors such as handling disabled and readonly states, validation, and more.\n *\n * This approach allows the creation of highly reusable and consistent form controls within Angular applications,\n * simplifying the integration with Angular Forms and the handling of common form behaviors.\n *\n * Extends Controller to provide a consistent API for managing state changes and subscriptions.\n *\n * @see {Controller}\n */\n@Directive({\n host: {\n '[class.has-error]': 'hasError',\n '[class.is-disabled]': 'isDisabled',\n '[class.is-readonly]': 'isReadonly',\n '[class.is-required]': 'required',\n },\n})\nexport abstract class CustomFormControl<T> extends Controller implements ControlValueAccessor {\n private static CURRENT_INDEX = 0;\n\n private readonly requiredValidator = inject(RequiredValidator, { optional: true, self: true });\n private internalValue: T;\n protected readonly disabledController = DisabledController.inject();\n protected readonly readonlyController = ReadonlyController.inject();\n protected readonly ngControl = inject(NgControl, { self: true, optional: true });\n\n /**\n * A unique identifier for the custom form control. If not provided, a unique ID is generated automatically.\n * This can be useful for associating form control with a label.\n *\n * @type {string}\n */\n @Input()\n public id: string | null = null;\n\n /**\n * The name attribute for the custom form control. Defaults to a unique name if not provided.\n * This is useful when the form control is part of a form and needs to be identified.\n *\n * @type {string}\n */\n @Input()\n public name = `odx-form-control-${CustomFormControl.CURRENT_INDEX++}`;\n\n /**\n * The tabindex attribute for the custom form control. Can be used to control the order of focus navigation.\n *\n * @type {string | null}\n */\n @Input()\n public tabindex: string | null = null;\n\n /**\n * An array of error codes to ignore. If an error code is included in this array, the form control will not\n * consider it as an error state. Useful for ignoring specific validation errors.\n *\n * @type {string[]}\n */\n @Input({ transform: arrayAttribute })\n public ignoreErrors: string[] = [];\n\n /**\n * The current value of the form control. Setting this value updates the internal state and marks the control\n * for checking changes. Getting this value returns the current internal value of the control.\n *\n * @example\n * ```ts\n * this.customInputControl.value = 'newValue'; // Sets the value\n * const currentValue = this.customInputControl.value; // Gets the current value\n * ```\n */\n public set value(value: T) {\n if (this.internalValue !== value) {\n this.internalValue = value;\n this.triggerControllerChange();\n }\n }\n\n /**\n * Gets the value of the custom form control.\n *\n * @returns {T} - The value of the custom form control.\n */\n public get value(): T {\n return this.internalValue;\n }\n\n /**\n * Indicates whether the form control currently has an error. This takes into account any ignored errors.\n *\n * @returns {boolean} - True if the form control has an error, false otherwise.\n *\n * @example\n * ```ts\n * if (this.customInputControl.hasError) { ... }\n * ```\n */\n public get hasError(): boolean {\n return !!this.ngControl?.touched && !!this.ngControl?.invalid && this.hasNonIgnoredError(this.ngControl.errors);\n }\n\n /**\n * Indicates whether the form control is currently disabled.\n *\n * @returns {boolean} - True if the form control is disabled, false otherwise.\n *\n * @example\n * ```ts\n * if (this.customInputControl.isDisabled) { ... }\n * ```\n */\n public get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n /**\n * Indicates whether the form control is currently in a readonly state.\n *\n * @returns {boolean} - True if the form control is readonly, false otherwise.\n *\n * @example\n * ```ts\n * if (this.customInputControl.isReadonly) { ... }\n * ```\n */\n public get isReadonly(): boolean {\n return !!this.readonlyController?.readonly;\n }\n\n /**\n * Indicates whether the form control is marked as required, either through Validators.required, Validators.requiredTrue,\n * or by a required attribute on a parent form field.\n *\n * @returns {boolean} - True if the form control is required, false otherwise.\n *\n * @example\n * ````ts\n * if (this.customInputControl.isRequired) { ... }\n * ````\n */\n public get isRequired(): boolean {\n return !!this.requiredValidator?.required || this.hasValidator(Validators.required) || this.hasValidator(Validators.requiredTrue);\n }\n\n /**\n * A reference to the `ControlDirective` if it exists within the same host. This allows for direct interaction\n * with the underlying form control directive.\n *\n * @type {ControlDirective | null}\n *\n * @example\n * ```ts\n * this.customInputControl.control?.focus();\n * ```\n */\n @ViewChild(ControlDirective)\n public readonly control: ControlDirective | null = null;\n\n constructor(initialValue: T) {\n super();\n this.internalValue = initialValue;\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** @internal */\n public onTouched() {\n // implemented by control value accessor\n }\n\n /** @internal */\n public onChange(_value: T) {\n // implemented by control value accessor\n }\n\n /** @internal */\n public registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n /** @internal */\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @internal */\n public setDisabledState(isDisabled: boolean): void {\n this.disabledController?.setDisabledState(isDisabled);\n }\n\n /** @internal */\n public writeValue(value: T): void {\n this.value = value;\n this.onChange(value);\n }\n\n /** @internal */\n public updateValue(value: T): void {\n if (this.isDisabled) return;\n this.writeValue(value);\n this.onTouched();\n }\n\n protected hasValidator(validator: ValidatorFn): boolean {\n return !!this.ngControl?.control?.hasValidator(validator);\n }\n\n @Pure\n private hasNonIgnoredError(errors: ValidationErrors | null): boolean {\n if (!errors) return false;\n\n return Object.keys(errors).some((error) => !this.ignoreErrors.includes(error));\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { distinctUntilChanged, fromEvent, map } from 'rxjs';\n\n/**\n * An abstract directive that facilitates handling input changes, focusing, and blurring programmatically for input elements.\n * It provides a reactive `valueChange$` observable to subscribe to input changes.\n * This directive can be extended to create more specific input handlers.\n *\n * @example\n * Extending InputControlDirective in a custom directive:\n * ```ts\n * @Directive({\n * selector: '[appCustomInput]',\n * standalone: true,\n * })\n * export class CustomInputDirective extends InputControlDirective {\n * // Custom logic here\n * }\n * ```\n *\n * Using the directive in a component template:\n * ```html\n * <input appCustomInput type=\"text\" />\n * ```\n *\n * Subscribing to input changes in the component:\n * ```ts\n * @Component({...})\n * export class MyComponent implements AfterViewInit {\n * @ViewChild(CustomInputDirective) customInputDirective!: CustomInputDirective;\n *\n * ngAfterViewInit(): void {\n * this.customInputDirective.valueChange$.subscribe(value => {\n * console.log('Input value changed to:', value);\n * });\n * }\n * }\n *\n * // Focusing the input programmatically\n * this.customInputDirective.focus();\n *\n * // Blurring the input programmatically\n * this.customInputDirective.blur();\n *\n * // Resetting the input value programmatically\n * this.customInputDirective.reset();\n * ```\n */\n@Directive({\n standalone: true,\n})\nexport abstract class InputControlDirective {\n protected readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement<HTMLInputElement>();\n\n /**\n * Represents an observable stream of value changes for the input control.\n *\n * @emits {string} input value changes.\n */\n public valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(\n distinctUntilChanged(),\n map(() => this.nativeElementValue),\n );\n\n /**\n * Gets the current value of the input element.\n *\n * @type {string} The current value of the input element.\n */\n public get nativeElementValue(): string {\n return this.element.nativeElement.value;\n }\n\n /**\n * Sets the value of the input element.\n *\n * @param {string} value - The value to set.\n */\n public set nativeElementValue(value: string) {\n this.element.nativeElement.value = value;\n }\n\n /**\n * Sets focus on the input element.\n *\n * @returns {void}\n */\n public focus(): void {\n this.element.nativeElement.focus();\n }\n\n /**\n * Removes focus from the input element.\n *\n * @returns {void}\n */\n public blur(): void {\n this.element.nativeElement.blur();\n }\n\n /**\n * Resets the input element value to an empty string.\n *\n * @returns {void}\n */\n public reset(): void {\n this.element.nativeElement.value = '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-cdk-custom-form-control.mjs","sources":["../../../../libs/angular/cdk/custom-form-control/src/lib/control.directive.ts","../../../../libs/angular/cdk/custom-form-control/src/lib/custom-form-control.ts","../../../../libs/angular/cdk/custom-form-control/src/lib/input-control.directive.ts","../../../../libs/angular/cdk/custom-form-control/src/odx-angular-cdk-custom-form-control.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { injectElement } from '@odx/angular/utils';\n\n@Directive({\n standalone: true,\n selector: '[odxControl]',\n exportAs: 'odxControl',\n})\nexport class ControlDirective {\n public readonly element = injectElement();\n}\n","import { booleanAttribute, Directive, inject, Input, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, NgControl, RequiredValidator, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\nimport { Controller, DisabledController, ReadonlyController } from '@odx/angular';\nimport { arrayAttribute, Pure } from '@odx/angular/utils';\nimport { ControlDirective } from './control.directive';\n\n/**\n * An abstract directive that serves as a base for custom form controls, integrating seamlessly with Angular Forms.\n * It incorporates common form control behaviors such as handling disabled and readonly states, validation, and more.\n *\n * This approach allows the creation of highly reusable and consistent form controls within Angular applications,\n * simplifying the integration with Angular Forms and the handling of common form behaviors.\n *\n * Extends Controller to provide a consistent API for managing state changes and subscriptions.\n *\n * @see {Controller}\n */\n@Directive({\n host: {\n '[class.has-error]': 'hasError',\n '[class.is-disabled]': 'isDisabled',\n '[class.is-readonly]': 'isReadonly',\n '[class.is-required]': 'isRequired',\n },\n})\nexport abstract class CustomFormControl<T> extends Controller implements ControlValueAccessor {\n private static CURRENT_INDEX = 0;\n\n private readonly requiredValidator = inject(RequiredValidator, { optional: true, self: true });\n private internalValue: T;\n protected readonly disabledController = DisabledController.inject();\n protected readonly readonlyController = ReadonlyController.inject();\n protected readonly ngControl = inject(NgControl, { self: true, optional: true });\n\n /**\n * A unique identifier for the custom form control. If not provided, a unique ID is generated automatically.\n * This can be useful for associating form control with a label.\n *\n * @type {string}\n */\n @Input()\n public id: string | null = null;\n\n /**\n * The name attribute for the custom form control. Defaults to a unique name if not provided.\n * This is useful when the form control is part of a form and needs to be identified.\n *\n * @type {string}\n */\n @Input()\n public name = `odx-form-control-${CustomFormControl.CURRENT_INDEX++}`;\n\n /**\n * The tabindex attribute for the custom form control. Can be used to control the order of focus navigation.\n *\n * @type {string | null}\n */\n @Input()\n public tabindex: string | null = null;\n\n /**\n * An array of error codes to ignore. If an error code is included in this array, the form control will not\n * consider it as an error state. Useful for ignoring specific validation errors.\n *\n * @type {string[]}\n */\n @Input({ transform: arrayAttribute })\n public ignoreErrors: string[] = [];\n\n @Input({ transform: booleanAttribute })\n public required = false;\n\n /**\n * The current value of the form control. Setting this value updates the internal state and marks the control\n * for checking changes. Getting this value returns the current internal value of the control.\n *\n * @example\n * ```ts\n * this.customInputControl.value = 'newValue'; // Sets the value\n * const currentValue = this.customInputControl.value; // Gets the current value\n * ```\n */\n public set value(value: T) {\n if (this.internalValue !== value) {\n this.internalValue = value;\n this.triggerControllerChange();\n }\n }\n\n /**\n * Gets the value of the custom form control.\n *\n * @returns {T} - The value of the custom form control.\n */\n public get value(): T {\n return this.internalValue;\n }\n\n /**\n * Indicates whether the form control currently has an error. This takes into account any ignored errors.\n *\n * @returns {boolean} - True if the form control has an error, false otherwise.\n *\n * @example\n * ```ts\n * if (this.customInputControl.hasError) { ... }\n * ```\n */\n public get hasError(): boolean {\n return !!this.ngControl?.touched && !!this.ngControl?.invalid && this.hasNonIgnoredError(this.ngControl.errors);\n }\n\n /**\n * Indicates whether the form control is currently disabled.\n *\n * @returns {boolean} - True if the form control is disabled, false otherwise.\n *\n * @example\n * ```ts\n * if (this.customInputControl.isDisabled) { ... }\n * ```\n */\n public get isDisabled(): boolean {\n return !!this.disabledController?.disabled;\n }\n\n /**\n * Indicates whether the form control is currently in a readonly state.\n *\n * @returns {boolean} - True if the form control is readonly, false otherwise.\n *\n * @example\n * ```ts\n * if (this.customInputControl.isReadonly) { ... }\n * ```\n */\n public get isReadonly(): boolean {\n return !!this.readonlyController?.readonly;\n }\n\n /**\n * Indicates whether the form control is marked as required, either through Validators.required, Validators.requiredTrue,\n * or by a required attribute on a parent form field.\n *\n * @returns {boolean} - True if the form control is required, false otherwise.\n *\n * @example\n * ````ts\n * if (this.customInputControl.isRequired) { ... }\n * ````\n */\n public get isRequired(): boolean {\n return this.required || !!this.requiredValidator?.required || this.hasValidator(Validators.required) || this.hasValidator(Validators.requiredTrue);\n }\n\n /**\n * A reference to the `ControlDirective` if it exists within the same host. This allows for direct interaction\n * with the underlying form control directive.\n *\n * @type {ControlDirective | null}\n *\n * @example\n * ```ts\n * this.customInputControl.control?.focus();\n * ```\n */\n @ViewChild(ControlDirective)\n public readonly control: ControlDirective | null = null;\n\n constructor(initialValue: T) {\n super();\n this.internalValue = initialValue;\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n /** @internal */\n public onTouched() {\n // implemented by control value accessor\n }\n\n /** @internal */\n public onChange(_value: T) {\n // implemented by control value accessor\n }\n\n /** @internal */\n public registerOnChange(fn: (value: T) => void): void {\n this.onChange = fn;\n }\n /** @internal */\n public registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /** @internal */\n public setDisabledState(isDisabled: boolean): void {\n this.disabledController?.setDisabledState(isDisabled);\n }\n\n /** @internal */\n public writeValue(value: T): void {\n this.value = value;\n this.onChange(value);\n }\n\n /** @internal */\n public updateValue(value: T): void {\n if (this.isDisabled) return;\n this.writeValue(value);\n this.onTouched();\n }\n\n protected hasValidator(validator: ValidatorFn): boolean {\n return !!this.ngControl?.control?.hasValidator(validator);\n }\n\n @Pure\n private hasNonIgnoredError(errors: ValidationErrors | null): boolean {\n if (!errors) return false;\n\n return Object.keys(errors).some((error) => !this.ignoreErrors.includes(error));\n }\n}\n","import { Directive } from '@angular/core';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { distinctUntilChanged, fromEvent, map } from 'rxjs';\n\n/**\n * An abstract directive that facilitates handling input changes, focusing, and blurring programmatically for input elements.\n * It provides a reactive `valueChange$` observable to subscribe to input changes.\n * This directive can be extended to create more specific input handlers.\n *\n * @example\n * Extending InputControlDirective in a custom directive:\n * ```ts\n * @Directive({\n * selector: '[appCustomInput]',\n * standalone: true,\n * })\n * export class CustomInputDirective extends InputControlDirective {\n * // Custom logic here\n * }\n * ```\n *\n * Using the directive in a component template:\n * ```html\n * <input appCustomInput type=\"text\" />\n * ```\n *\n * Subscribing to input changes in the component:\n * ```ts\n * @Component({...})\n * export class MyComponent implements AfterViewInit {\n * @ViewChild(CustomInputDirective) customInputDirective!: CustomInputDirective;\n *\n * ngAfterViewInit(): void {\n * this.customInputDirective.valueChange$.subscribe(value => {\n * console.log('Input value changed to:', value);\n * });\n * }\n * }\n *\n * // Focusing the input programmatically\n * this.customInputDirective.focus();\n *\n * // Blurring the input programmatically\n * this.customInputDirective.blur();\n *\n * // Resetting the input value programmatically\n * this.customInputDirective.reset();\n * ```\n */\n@Directive({\n standalone: true,\n})\nexport abstract class InputControlDirective {\n protected readonly takeUntilDestroyed = untilDestroyed();\n\n public readonly element = injectElement<HTMLInputElement>();\n\n /**\n * Represents an observable stream of value changes for the input control.\n *\n * @emits {string} input value changes.\n */\n public valueChange$ = fromEvent(this.element.nativeElement, 'input').pipe(\n distinctUntilChanged(),\n map(() => this.nativeElementValue),\n );\n\n /**\n * Gets the current value of the input element.\n *\n * @type {string} The current value of the input element.\n */\n public get nativeElementValue(): string {\n return this.element.nativeElement.value;\n }\n\n /**\n * Sets the value of the input element.\n *\n * @param {string} value - The value to set.\n */\n public set nativeElementValue(value: string) {\n this.element.nativeElement.value = value;\n }\n\n /**\n * Sets focus on the input element.\n *\n * @returns {void}\n */\n public focus(): void {\n this.element.nativeElement.focus();\n }\n\n /**\n * Removes focus from the input element.\n *\n * @returns {void}\n */\n public blur(): void {\n this.element.nativeElement.blur();\n }\n\n /**\n * Resets the input element value to an empty string.\n *\n * @returns {void}\n */\n public reset(): void {\n this.element.nativeElement.value = '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, Input, reflectComponentType, ApplicationRef, createComponent, EnvironmentInjector, InjectionToken, inject, Injector, Injectable, ViewContainerRef, TemplateRef, Directive } from '@angular/core';
2
+ import { Input, ViewEncapsulation, ChangeDetectionStrategy, Component, reflectComponentType, ApplicationRef, createComponent, EnvironmentInjector, InjectionToken, inject, Injector, Injectable, ViewContainerRef, TemplateRef, Directive } from '@angular/core';
3
3
  import { injectElement, isString, isViewContainer, isTemplateRef, isComponent, hasChanged } from '@odx/angular/utils';
4
4
  import { isObservable, distinctUntilChanged } from 'rxjs';
5
5
  import { deepmerge } from '@odx/angular/internal';
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, booleanAttribute, Directive, Input, ChangeDetectorRef, NgModule } from '@angular/core';
2
+ import { InjectionToken, inject, booleanAttribute, Input, Directive, ChangeDetectorRef, NgModule } from '@angular/core';
3
3
  import { getUniqueId } from '@odx/angular/utils';
4
4
 
5
5
  const ODX_EXPANDABLE_CONTAINER = new InjectionToken('@odx/angular/cdk/expandable::ExpandableContainer');
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, ChangeDetectorRef, Directive, Input, HostListener } from '@angular/core';
2
+ import { inject, ChangeDetectorRef, HostListener, Input, Directive } from '@angular/core';
3
3
  import { untilDestroyed, injectElement, deferFn } from '@odx/angular/utils';
4
4
 
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, forwardRef, Directive, HostListener, inject, Input, NgModule } from '@angular/core';
2
+ import { InjectionToken, forwardRef, HostListener, Directive, inject, Input, NgModule } from '@angular/core';
3
3
  import { DisabledController, ReadonlyController, detectControllerChanges, CoreModule } from '@odx/angular';
4
4
  import { injectElement, booleanToAttributeString } from '@odx/angular/utils';
5
5
  import { CustomFormControl } from '@odx/angular/cdk/custom-form-control';
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ChangeDetectionStrategy, ViewEncapsulation, inject, EventEmitter, Input, Output, Directive, NgModule } from '@angular/core';
3
+ import { ViewEncapsulation, ChangeDetectionStrategy, Component, inject, EventEmitter, Output, Input, Directive, NgModule } from '@angular/core';
4
4
  import * as i1 from '@odx/angular/cdk/expandable';
5
5
  import { ExpandableContainerDirective, ExpandableItemDirective } from '@odx/angular/cdk/expandable';
6
6
  import { CSSComponent } from '@odx/angular/internal';
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';
3
+ import { booleanAttribute, Input, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
4
4
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
5
5
  import { injectElement } from '@odx/angular/utils';
6
6
 
@@ -1,7 +1,7 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Directive, NgModule } from '@angular/core';
4
+ import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive, NgModule } from '@angular/core';
5
5
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
6
6
  import { injectElement } from '@odx/angular/utils';
7
7
  import { CoreModule } from '@odx/angular';
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { InjectionToken, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, forwardRef, ContentChildren, ContentChild, HostListener, Pipe, NgModule } from '@angular/core';
3
+ import { InjectionToken, inject, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive, forwardRef, HostListener, ContentChild, ContentChildren, Pipe, NgModule } from '@angular/core';
4
4
  import * as i1 from '@odx/angular';
5
5
  import { CoreModule, ReadonlyController, WithTabIndex, ClickOutsideDirective } from '@odx/angular';
6
6
  import { AutocompleteControl, ODX_SEARCH_FILTER_HOST, BaseSearchFilterPipe } from '@odx/angular/cdk/autocomplete-control';
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';
3
+ import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
4
4
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
5
5
  import { injectElement } from '@odx/angular/utils';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { booleanAttribute, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, inject, Injector, numberAttribute, Directive } from '@angular/core';
3
+ import { booleanAttribute, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, inject, Injector, numberAttribute, Directive } from '@angular/core';
4
4
  import { DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';
5
5
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
6
6
  import { injectElement, Position, isPresent } from '@odx/angular/utils';
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, Input, NgModule } from '@angular/core';
3
+ import { ChangeDetectionStrategy, ViewEncapsulation, Component, Input, Directive, NgModule } from '@angular/core';
4
4
  import { CSSComponent, CSSModifier } from '@odx/angular/internal';
5
5
  import { injectElement } from '@odx/angular/utils';
6
6
  import { DisabledController, CoreModule } from '@odx/angular';
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
3
+ import { ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
4
4
  import { CSSComponent } from '@odx/angular/internal';
5
5
  import { injectElement } from '@odx/angular/utils';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';
3
+ import { booleanAttribute, Input, ChangeDetectionStrategy, ViewEncapsulation, Component } from '@angular/core';
4
4
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
5
5
  import { injectElement } from '@odx/angular/utils';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Directive } from '@angular/core';
3
+ import { Input, ChangeDetectionStrategy, ViewEncapsulation, Component, Directive } from '@angular/core';
4
4
  import * as i1 from '@odx/angular';
5
5
  import { WithDisabledState } from '@odx/angular';
6
6
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
@@ -1,13 +1,13 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import { A11yModule } from '@angular/cdk/a11y';
3
3
  import * as i0 from '@angular/core';
4
- import { EventEmitter, Injectable, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, inject, ChangeDetectorRef, Pipe, Directive } from '@angular/core';
4
+ import { EventEmitter, Injectable, Output, Input, ViewEncapsulation, ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, Pipe, Directive } from '@angular/core';
5
5
  import * as i2 from '@odx/angular';
6
6
  import { CoreModule, WindowRef, DisabledController } from '@odx/angular';
7
7
  import { CSSComponent, fastDeepEqual, CSSModifier } from '@odx/angular/internal';
8
8
  import { createConfigTokens, isString, isPresent, injectElement, hasChanged, EventManager, deferFn, untilDestroyed, isFunction } from '@odx/angular/utils';
9
9
  import { BehaviorSubject, shareReplay, map, filter, distinctUntilChanged, merge, defer, of, withLatestFrom, combineLatest } from 'rxjs';
10
- import { isSameDay, isSameMonth, isSameYear, endOfDay, endOfMonth, endOfYear, startOfDay, startOfMonth, startOfYear, isValid, toDate, isBefore, isEqual, addMonths, subMonths, isWithinInterval, startOfWeek, addDays, endOfWeek, eachMonthOfInterval, addYears, getYear, setYear, subDays, subWeeks, addWeeks, setMonth, getMonth } from 'date-fns';
10
+ import { isSameYear, isSameMonth, isSameDay, endOfYear, endOfMonth, endOfDay, startOfYear, startOfMonth, startOfDay, isValid, toDate, isBefore, isEqual, addMonths, subMonths, isWithinInterval, startOfWeek, addDays, endOfWeek, eachMonthOfInterval, addYears, getYear, setYear, subDays, subWeeks, addWeeks, setMonth, getMonth } from 'date-fns';
11
11
  import { ActionGroupComponent } from '@odx/angular/components/action-group';
12
12
  import { ButtonComponent } from '@odx/angular/components/button';
13
13
  import { IconComponent } from '@odx/angular/components/icon';