@ni/nimble-angular 12.1.0 → 12.1.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.
- package/bundles/ni-nimble-angular.umd.js +423 -36
- package/bundles/ni-nimble-angular.umd.js.map +1 -1
- package/directives/radio/nimble-radio-control-value-accessor.directive.d.ts +2 -2
- package/directives/radio/nimble-radio.module.d.ts +2 -1
- package/esm2015/directives/radio/nimble-radio-control-value-accessor.directive.js +7 -7
- package/esm2015/directives/radio/nimble-radio.module.js +5 -4
- package/esm2015/thirdparty/directives/control_value_accessor.js +215 -0
- package/esm2015/thirdparty/directives/radio_control_value_accessor.js +197 -0
- package/fesm2015/ni-nimble-angular.js +400 -10
- package/fesm2015/ni-nimble-angular.js.map +1 -1
- package/package.json +2 -2
- package/thirdparty/directives/control_value_accessor.d.ts +87 -0
- package/thirdparty/directives/radio_control_value_accessor.d.ts +134 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ElementRef, Injector, OnInit, Renderer2 } from '@angular/core';
|
|
2
|
-
import { RadioControlValueAccessor,
|
|
2
|
+
import { RadioControlValueAccessor, RadioControlRegistry } from '../../thirdparty/directives/radio_control_value_accessor';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* Control Value Accessor implementation for the radio group.
|
|
@@ -8,7 +8,7 @@ export declare class NimbleRadioControlValueAccessorDirective extends RadioContr
|
|
|
8
8
|
private readonly elementRef;
|
|
9
9
|
private static _nextOpenId;
|
|
10
10
|
private _privateOnChange?;
|
|
11
|
-
constructor(renderer: Renderer2, elementRef: ElementRef, _registry:
|
|
11
|
+
constructor(renderer: Renderer2, elementRef: ElementRef, _registry: RadioControlRegistry, _injector: Injector);
|
|
12
12
|
private static allocateId;
|
|
13
13
|
ngOnInit(): void;
|
|
14
14
|
/**
|
|
@@ -2,8 +2,9 @@ import * as i0 from "@angular/core";
|
|
|
2
2
|
import * as i1 from "./nimble-radio-control-value-accessor.directive";
|
|
3
3
|
import * as i2 from "./nimble-radio.directive";
|
|
4
4
|
import * as i3 from "@angular/common";
|
|
5
|
+
import * as i4 from "../../thirdparty/directives/radio_control_value_accessor";
|
|
5
6
|
export declare class NimbleRadioModule {
|
|
6
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<NimbleRadioModule, never>;
|
|
7
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<NimbleRadioModule, [typeof i1.NimbleRadioControlValueAccessorDirective, typeof i2.NimbleRadioDirective], [typeof i3.CommonModule], [typeof i1.NimbleRadioControlValueAccessorDirective, typeof i2.NimbleRadioDirective]>;
|
|
8
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<NimbleRadioModule, [typeof i1.NimbleRadioControlValueAccessorDirective, typeof i2.NimbleRadioDirective], [typeof i3.CommonModule, typeof i4.RadioControlRegistryModule], [typeof i1.NimbleRadioControlValueAccessorDirective, typeof i2.NimbleRadioDirective]>;
|
|
8
9
|
static ɵinj: i0.ɵɵInjectorDeclaration<NimbleRadioModule>;
|
|
9
10
|
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { Directive, forwardRef } from '@angular/core';
|
|
2
2
|
// eslint-disable-next-line camelcase
|
|
3
|
-
import { NG_VALUE_ACCESSOR
|
|
3
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
4
4
|
import { RadioGroup } from '@ni/nimble-components/dist/esm/radio-group';
|
|
5
|
+
import { RadioControlValueAccessor } from '../../thirdparty/directives/radio_control_value_accessor';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "
|
|
7
|
+
import * as i1 from "../../thirdparty/directives/radio_control_value_accessor";
|
|
7
8
|
/**
|
|
8
9
|
* Control Value Accessor implementation for the radio group.
|
|
9
10
|
*/
|
|
10
11
|
export class NimbleRadioControlValueAccessorDirective extends RadioControlValueAccessor {
|
|
11
|
-
// Type ɵangular_packages_forms_forms_r from base class isn't in camelcase
|
|
12
|
-
// eslint-disable-next-line camelcase
|
|
13
12
|
constructor(renderer, elementRef, _registry, _injector) {
|
|
14
13
|
super(renderer, elementRef, _registry, _injector);
|
|
15
14
|
this.elementRef = elementRef;
|
|
@@ -20,6 +19,7 @@ export class NimbleRadioControlValueAccessorDirective extends RadioControlValueA
|
|
|
20
19
|
return id;
|
|
21
20
|
}
|
|
22
21
|
ngOnInit() {
|
|
22
|
+
super.ngOnInit();
|
|
23
23
|
// We need each button element to have a unique string value, because the FAST radio group looks at
|
|
24
24
|
// these values when trying to manage the checked state.
|
|
25
25
|
this.elementRef.nativeElement.value = NimbleRadioControlValueAccessorDirective.allocateId();
|
|
@@ -63,7 +63,7 @@ export class NimbleRadioControlValueAccessorDirective extends RadioControlValueA
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
NimbleRadioControlValueAccessorDirective._nextOpenId = 0;
|
|
66
|
-
NimbleRadioControlValueAccessorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NimbleRadioControlValueAccessorDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1
|
|
66
|
+
NimbleRadioControlValueAccessorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NimbleRadioControlValueAccessorDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
67
67
|
NimbleRadioControlValueAccessorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.5", type: NimbleRadioControlValueAccessorDirective, selector: "nimble-radio[formControlName],nimble-radio[formControl],nimble-radio[ngModel]", host: { listeners: { "change": "nimbleOnChange($event.target.checked)", "blur": "onTouched()" } }, providers: [{
|
|
68
68
|
provide: NG_VALUE_ACCESSOR,
|
|
69
69
|
useExisting: forwardRef(() => NimbleRadioControlValueAccessorDirective),
|
|
@@ -82,5 +82,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
82
82
|
multi: true
|
|
83
83
|
}]
|
|
84
84
|
}]
|
|
85
|
-
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.RadioControlRegistry }, { type: i0.Injector }]; } });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmltYmxlLXJhZGlvLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmkvbmltYmxlLWFuZ3VsYXIvc3JjL2RpcmVjdGl2ZXMvcmFkaW8vbmltYmxlLXJhZGlvLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsVUFBVSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUMvRixxQ0FBcUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSx5QkFBeUIsRUFBd0IsTUFBTSwwREFBMEQsQ0FBQzs7O0FBRTNIOztHQUVHO0FBYUgsTUFBTSxPQUFPLHdDQUF5QyxTQUFRLHlCQUF5QjtJQUluRixZQUFtQixRQUFtQixFQUFtQixVQUFzQixFQUFFLFNBQStCLEVBQUUsU0FBbUI7UUFDakksS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBREcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUUvRSxDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQVU7UUFDckIsTUFBTSxFQUFFLEdBQUcsd0NBQXdDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNFLHdDQUF3QyxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUM7UUFDMUQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRWUsUUFBUTtRQUNwQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDakIsbUdBQW1HO1FBQ25HLHdEQUF3RDtRQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQXVCLENBQUMsS0FBSyxHQUFHLHdDQUF3QyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzNHLENBQUM7SUFFRDs7O09BR0c7SUFDYSxVQUFVLENBQUMsS0FBYztRQUNyQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sV0FBVyxHQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBdUIsQ0FBQyxhQUFhLENBQUM7UUFDM0UsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssSUFBSSxXQUFXLElBQUksV0FBVyxZQUFZLFVBQVUsRUFBRTtZQUMxRSwyRkFBMkY7WUFDM0YsOEZBQThGO1lBQzlGLDBGQUEwRjtZQUMxRix1RkFBdUY7WUFDdkYsd0VBQXdFO1lBQ3hFLHlGQUF5RjtZQUN6RiwyRkFBMkY7WUFDM0YsZ0VBQWdFO1lBQ2hFLFdBQVcsQ0FBQyxLQUFLLEdBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUF1QixDQUFDLEtBQUssQ0FBQztTQUN0RTtJQUNMLENBQUM7SUFFRCx1RkFBdUY7SUFDdkYsa0dBQWtHO0lBQ2xHLG1HQUFtRztJQUNuRyxnQ0FBZ0M7SUFDaEMsRUFBRTtJQUNGLG9HQUFvRztJQUNwRyxzR0FBc0c7SUFDdEcsMkNBQTJDO0lBQ3BDLGNBQWMsQ0FBQyxPQUFnQjtRQUNsQyxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBRWUsZ0JBQWdCLENBQUMsRUFBOEM7UUFDM0UsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBUyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7O0FBMURjLG9EQUFXLEdBQUcsQ0FBQyxDQUFDO3FJQUR0Qix3Q0FBd0M7eUhBQXhDLHdDQUF3QywyTUFOdEMsQ0FBQztZQUNSLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3Q0FBd0MsQ0FBQztZQUN2RSxLQUFLLEVBQUUsSUFBSTtTQUNkLENBQUM7MkZBRU8sd0NBQXdDO2tCQVpwRCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFDSiwrRUFBK0U7b0JBQ25GLDJFQUEyRTtvQkFDM0UscUVBQXFFO29CQUNyRSxJQUFJLEVBQUUsRUFBRSxVQUFVLEVBQUUsdUNBQXVDLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRTtvQkFDdEYsU0FBUyxFQUFFLENBQUM7NEJBQ1IsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUseUNBQXlDLENBQUM7NEJBQ3ZFLEtBQUssRUFBRSxJQUFJO3lCQUNkLENBQUM7aUJBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEluamVjdG9yLCBPbkluaXQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNhbWVsY2FzZVxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBSYWRpb0dyb3VwIH0gZnJvbSAnQG5pL25pbWJsZS1jb21wb25lbnRzL2Rpc3QvZXNtL3JhZGlvLWdyb3VwJztcbmltcG9ydCB0eXBlIHsgUmFkaW8gfSBmcm9tICdAbmkvbmltYmxlLWNvbXBvbmVudHMvZGlzdC9lc20vcmFkaW8nO1xuaW1wb3J0IHsgUmFkaW9Db250cm9sVmFsdWVBY2Nlc3NvciwgUmFkaW9Db250cm9sUmVnaXN0cnkgfSBmcm9tICcuLi8uLi90aGlyZHBhcnR5L2RpcmVjdGl2ZXMvcmFkaW9fY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5cbi8qKlxuICogQ29udHJvbCBWYWx1ZSBBY2Nlc3NvciBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIHJhZGlvIGdyb3VwLlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjpcbiAgICAgICAgJ25pbWJsZS1yYWRpb1tmb3JtQ29udHJvbE5hbWVdLG5pbWJsZS1yYWRpb1tmb3JtQ29udHJvbF0sbmltYmxlLXJhZGlvW25nTW9kZWxdJyxcbiAgICAvLyBUaGUgZm9sbG93aW5nIGhvc3QgbWV0YWRhdGEgaXMgZHVwbGljYXRlZCBmcm9tIFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgICBob3N0OiB7ICcoY2hhbmdlKSc6ICduaW1ibGVPbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpJywgJyhibHVyKSc6ICdvblRvdWNoZWQoKScgfSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOaW1ibGVSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlKSxcbiAgICAgICAgbXVsdGk6IHRydWVcbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBOaW1ibGVSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIGV4dGVuZHMgUmFkaW9Db250cm9sVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgX25leHRPcGVuSWQgPSAwO1xuICAgIHByaXZhdGUgX3ByaXZhdGVPbkNoYW5nZT86ICgpID0+IHZvaWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBfcmVnaXN0cnk6IFJhZGlvQ29udHJvbFJlZ2lzdHJ5LCBfaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHN1cGVyKHJlbmRlcmVyLCBlbGVtZW50UmVmLCBfcmVnaXN0cnksIF9pbmplY3Rvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgYWxsb2NhdGVJZCgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBpZCA9IE5pbWJsZVJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUuX25leHRPcGVuSWQudG9TdHJpbmcoKTtcbiAgICAgICAgTmltYmxlUmFkaW9Db250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZS5fbmV4dE9wZW5JZCArPSAxO1xuICAgICAgICByZXR1cm4gaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICAvLyBXZSBuZWVkIGVhY2ggYnV0dG9uIGVsZW1lbnQgdG8gaGF2ZSBhIHVuaXF1ZSBzdHJpbmcgdmFsdWUsIGJlY2F1c2UgdGhlIEZBU1QgcmFkaW8gZ3JvdXAgbG9va3MgYXRcbiAgICAgICAgLy8gdGhlc2UgdmFsdWVzIHdoZW4gdHJ5aW5nIHRvIG1hbmFnZSB0aGUgY2hlY2tlZCBzdGF0ZS5cbiAgICAgICAgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIFJhZGlvKS52YWx1ZSA9IE5pbWJsZVJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUuYWxsb2NhdGVJZCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIFwiY2hlY2tlZFwiIHByb3BlcnR5IHZhbHVlIG9uIHRoZSByYWRpbyBpbnB1dCBlbGVtZW50LlxuICAgICAqIEBub2RvY1xuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLndyaXRlVmFsdWUodmFsdWUpO1xuICAgICAgICBjb25zdCBwYXJlbnRHcm91cCA9ICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBSYWRpbykucGFyZW50RWxlbWVudDtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09IHZhbHVlICYmIHBhcmVudEdyb3VwICYmIHBhcmVudEdyb3VwIGluc3RhbmNlb2YgUmFkaW9Hcm91cCkge1xuICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHdvcmthcm91bmQgdG8gYSBwcm9ibGVtIHdoZXJlIGFsbCBvZiB0aGUgYnV0dG9ucyBhcmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkLlxuICAgICAgICAgICAgLy8gVGhlIHJhZGlvIGdyb3VwIHRyaWVzIHRvIHN5bmNocm9uaXplIGl0cyB2YWx1ZSBhbmQgdGhlIGNoZWNrZWQgc3RhdGVzIG9mIHRoZSByYWRpbyBidXR0b25zLlxuICAgICAgICAgICAgLy8gSW4gcmVzcG9uc2UgdG8gdGhlIHNsb3RjaGFuZ2UgRE9NIGV2ZW50LCB0aGUgcmFkaW8gZ3JvdXAgc2V0cyB0aGUgY2hlY2tlZCBzdGF0ZSBvZiBlYWNoXG4gICAgICAgICAgICAvLyBuZXdseSBzbG90dGVkIGJ1dHRvbiwgYmFzZWQgb24gd2hldGhlciB0aGUgYnV0dG9uJ3MgdmFsdWUgbWF0Y2hlcyB0aGUgZ3JvdXAncyB2YWx1ZS5cbiAgICAgICAgICAgIC8vIElmIHRoZSBncm91cCdzIHZhbHVlIGlzIHVuaW5pdGlhbGl6ZWQsIGl0IHVuY2hlY2tzIGFsbCByYWRpbyBidXR0b25zLlxuICAgICAgICAgICAgLy8gVW5mb3J0dW5hdGVseSwgdGhpcyBvY2N1cnMgX2FmdGVyXyB0aGUgQ1ZBIGluaXRpYWxpemVzIHRoZSBjaGVja2VkIHN0YXRlIG9mIGVhY2ggcmFkaW9cbiAgICAgICAgICAgIC8vIGJ1dHRvbiwgbWVhbmluZyB0aGUgaW5pdGlhbGx5IGNoZWNrZWQgYnV0dG9uIGdldHMgdW5jaGVja2VkIGJ5IHRoZSBncm91cC4gVG8gYXZvaWQgdGhpcyxcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gc2V0IHRoZSBncm91cCdzIHZhbHVlIHRvIG1hdGNoIHRoZSBjaGVja2VkIGJ1dHRvbi5cbiAgICAgICAgICAgIHBhcmVudEdyb3VwLnZhbHVlID0gKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIFJhZGlvKS52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZXJlIGlzIGEgYnVnIGluIEZBU1QgKGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvZmFzdC9pc3N1ZXMvNjM4MSkgdGhhdCBwcmV2ZW50c1xuICAgIC8vIFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IgZnJvbSB3b3JraW5nIHByb3Blcmx5LiBUaGUgZGVmYXVsdCBvbkNoYW5nZSBoYW5kbGVyIGlzIHN1cHBvc2VkIHRvIGJlXG4gICAgLy8gY2FsbGVkIF9vbmx5XyB3aGVuIHJhZGlvIGJ1dHRvbnMgYXJlIGNoZWNrZWQsIGJ1dCB0aGUgRkFTVCBidWcgY2F1c2VzIGl0IHRvIGJlIGNhbGxlZCB3aGVuIHJhZGlvXG4gICAgLy8gYnV0dG9ucyBhcmUgX3VuY2hlY2tlZF8sIHRvby5cbiAgICAvL1xuICAgIC8vIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdlIGVmZmVjdGl2ZWx5IGRpc2FibGUgdGhlIGJhc2UgY2xhc3MncyBvbkNoYW5nZSBoYW5kbGVyIGFuZCByZXBsYWNlIGl0IHdpdGhcbiAgICAvLyBvdXIgb3duIG5pbWJsZU9uQ2hhbmdlLiBOaW1ibGVPbkNoYW5nZSBjYWxscyB0aGUgb3JpZ2luYWwgb25DaGFuZ2UgKG5vdyBjYWNoZWQgYXMgX3ByaXZhdGVPbkNoYW5nZSlcbiAgICAvLyBvbmx5IGlmIHRoZSBjaGFuZ2VkIGl0ZW0gYmVjYW1lIGNoZWNrZWQuXG4gICAgcHVibGljIG5pbWJsZU9uQ2hhbmdlKGNoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoZWNrZWQgJiYgdGhpcy5fcHJpdmF0ZU9uQ2hhbmdlKSB7XG4gICAgICAgICAgICB0aGlzLl9wcml2YXRlT25DaGFuZ2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogdW5rbm93bikgPT4geyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0pOiB2b2lkIHtcbiAgICAgICAgc3VwZXIucmVnaXN0ZXJPbkNoYW5nZShmbik7XG4gICAgICAgIHRoaXMuX3ByaXZhdGVPbkNoYW5nZSA9IHRoaXMub25DaGFuZ2U7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSAoKTogdm9pZCA9PiB7fTtcbiAgICB9XG59Il19
|
|
@@ -2,18 +2,19 @@ import { NgModule } from '@angular/core';
|
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { NimbleRadioControlValueAccessorDirective } from './nimble-radio-control-value-accessor.directive';
|
|
4
4
|
import { NimbleRadioDirective } from './nimble-radio.directive';
|
|
5
|
+
import { RadioControlRegistryModule } from '../../thirdparty/directives/radio_control_value_accessor';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
export class NimbleRadioModule {
|
|
7
8
|
}
|
|
8
9
|
NimbleRadioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NimbleRadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
-
NimbleRadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NimbleRadioModule, declarations: [NimbleRadioControlValueAccessorDirective, NimbleRadioDirective], imports: [CommonModule], exports: [NimbleRadioControlValueAccessorDirective, NimbleRadioDirective] });
|
|
10
|
-
NimbleRadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NimbleRadioModule, imports: [[CommonModule]] });
|
|
10
|
+
NimbleRadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NimbleRadioModule, declarations: [NimbleRadioControlValueAccessorDirective, NimbleRadioDirective], imports: [CommonModule, RadioControlRegistryModule], exports: [NimbleRadioControlValueAccessorDirective, NimbleRadioDirective] });
|
|
11
|
+
NimbleRadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NimbleRadioModule, imports: [[CommonModule, RadioControlRegistryModule]] });
|
|
11
12
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: NimbleRadioModule, decorators: [{
|
|
12
13
|
type: NgModule,
|
|
13
14
|
args: [{
|
|
14
15
|
declarations: [NimbleRadioControlValueAccessorDirective, NimbleRadioDirective],
|
|
15
|
-
imports: [CommonModule],
|
|
16
|
+
imports: [CommonModule, RadioControlRegistryModule],
|
|
16
17
|
exports: [NimbleRadioControlValueAccessorDirective, NimbleRadioDirective]
|
|
17
18
|
}]
|
|
18
19
|
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmltYmxlLXJhZGlvLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pL25pbWJsZS1hbmd1bGFyL3NyYy9kaXJlY3RpdmVzL3JhZGlvL25pbWJsZS1yYWRpby5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDM0csT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMERBQTBELENBQUM7O0FBT3RHLE1BQU0sT0FBTyxpQkFBaUI7OzhHQUFqQixpQkFBaUI7K0dBQWpCLGlCQUFpQixpQkFKWCx3Q0FBd0MsRUFBRSxvQkFBb0IsYUFDbkUsWUFBWSxFQUFFLDBCQUEwQixhQUN4Qyx3Q0FBd0MsRUFBRSxvQkFBb0I7K0dBRS9ELGlCQUFpQixZQUhqQixDQUFDLFlBQVksRUFBRSwwQkFBMEIsQ0FBQzsyRkFHMUMsaUJBQWlCO2tCQUw3QixRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLHdDQUF3QyxFQUFFLG9CQUFvQixDQUFDO29CQUM5RSxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsMEJBQTBCLENBQUM7b0JBQ25ELE9BQU8sRUFBRSxDQUFDLHdDQUF3QyxFQUFFLG9CQUFvQixDQUFDO2lCQUM1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmltYmxlUmFkaW9Db250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZSB9IGZyb20gJy4vbmltYmxlLXJhZGlvLWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IE5pbWJsZVJhZGlvRGlyZWN0aXZlIH0gZnJvbSAnLi9uaW1ibGUtcmFkaW8uZGlyZWN0aXZlJztcbmltcG9ydCB7IFJhZGlvQ29udHJvbFJlZ2lzdHJ5TW9kdWxlIH0gZnJvbSAnLi4vLi4vdGhpcmRwYXJ0eS9kaXJlY3RpdmVzL3JhZGlvX2NvbnRyb2xfdmFsdWVfYWNjZXNzb3InO1xuXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW05pbWJsZVJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUsIE5pbWJsZVJhZGlvRGlyZWN0aXZlXSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSYWRpb0NvbnRyb2xSZWdpc3RyeU1vZHVsZV0sXG4gICAgZXhwb3J0czogW05pbWJsZVJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmUsIE5pbWJsZVJhZGlvRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBOaW1ibGVSYWRpb01vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [Nimble]
|
|
3
|
+
* Copied from https://github.com/angular/angular/blob/14.2.6/packages/forms/src/directives/control_value_accessor.ts
|
|
4
|
+
* with the following modifications:
|
|
5
|
+
* - Commented out ControlValueAccessor which is exported from @angular/forms
|
|
6
|
+
* - Commented out NG_VALUE_ACCESSOR which is exported from @angular/forms
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @license
|
|
10
|
+
* Copyright Google LLC All Rights Reserved.
|
|
11
|
+
*
|
|
12
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
13
|
+
* found in the LICENSE file at https://angular.io/license
|
|
14
|
+
*/
|
|
15
|
+
import { Directive } from '@angular/core';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
/**
|
|
18
|
+
* @description
|
|
19
|
+
* Defines an interface that acts as a bridge between the Angular forms API and a
|
|
20
|
+
* native element in the DOM.
|
|
21
|
+
*
|
|
22
|
+
* Implement this interface to create a custom form control directive
|
|
23
|
+
* that integrates with Angular forms.
|
|
24
|
+
*
|
|
25
|
+
* @see DefaultValueAccessor
|
|
26
|
+
*
|
|
27
|
+
* @publicApi
|
|
28
|
+
*/
|
|
29
|
+
/* [Nimble] Commenting out public interface
|
|
30
|
+
export interface ControlValueAccessor {
|
|
31
|
+
/**
|
|
32
|
+
* @description
|
|
33
|
+
* Writes a new value to the element.
|
|
34
|
+
*
|
|
35
|
+
* This method is called by the forms API to write to the view when programmatic
|
|
36
|
+
* changes from model to view are requested.
|
|
37
|
+
*
|
|
38
|
+
* @usageNotes
|
|
39
|
+
* ### Write a value to the element
|
|
40
|
+
*
|
|
41
|
+
* The following example writes a value to the native DOM element.
|
|
42
|
+
*
|
|
43
|
+
* ```ts
|
|
44
|
+
* writeValue(value: any): void {
|
|
45
|
+
* this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param obj The new value for the element
|
|
50
|
+
*
|
|
51
|
+
writeValue(obj: any): void;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @description
|
|
55
|
+
* Registers a callback function that is called when the control's value
|
|
56
|
+
* changes in the UI.
|
|
57
|
+
*
|
|
58
|
+
* This method is called by the forms API on initialization to update the form
|
|
59
|
+
* model when values propagate from the view to the model.
|
|
60
|
+
*
|
|
61
|
+
* When implementing the `registerOnChange` method in your own value accessor,
|
|
62
|
+
* save the given function so your class calls it at the appropriate time.
|
|
63
|
+
*
|
|
64
|
+
* @usageNotes
|
|
65
|
+
* ### Store the change function
|
|
66
|
+
*
|
|
67
|
+
* The following example stores the provided function as an internal method.
|
|
68
|
+
*
|
|
69
|
+
* ```ts
|
|
70
|
+
* registerOnChange(fn: (_: any) => void): void {
|
|
71
|
+
* this._onChange = fn;
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* When the value changes in the UI, call the registered
|
|
76
|
+
* function to allow the forms API to update itself:
|
|
77
|
+
*
|
|
78
|
+
* ```ts
|
|
79
|
+
* host: {
|
|
80
|
+
* '(change)': '_onChange($event.target.value)'
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*
|
|
84
|
+
* @param fn The callback function to register
|
|
85
|
+
*
|
|
86
|
+
registerOnChange(fn: any): void;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* @description
|
|
90
|
+
* Registers a callback function that is called by the forms API on initialization
|
|
91
|
+
* to update the form model on blur.
|
|
92
|
+
*
|
|
93
|
+
* When implementing `registerOnTouched` in your own value accessor, save the given
|
|
94
|
+
* function so your class calls it when the control should be considered
|
|
95
|
+
* blurred or "touched".
|
|
96
|
+
*
|
|
97
|
+
* @usageNotes
|
|
98
|
+
* ### Store the callback function
|
|
99
|
+
*
|
|
100
|
+
* The following example stores the provided function as an internal method.
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* registerOnTouched(fn: any): void {
|
|
104
|
+
* this._onTouched = fn;
|
|
105
|
+
* }
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* On blur (or equivalent), your class should call the registered function to allow
|
|
109
|
+
* the forms API to update itself:
|
|
110
|
+
*
|
|
111
|
+
* ```ts
|
|
112
|
+
* host: {
|
|
113
|
+
* '(blur)': '_onTouched()'
|
|
114
|
+
* }
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* @param fn The callback function to register
|
|
118
|
+
*
|
|
119
|
+
registerOnTouched(fn: any): void;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @description
|
|
123
|
+
* Function that is called by the forms API when the control status changes to
|
|
124
|
+
* or from 'DISABLED'. Depending on the status, it enables or disables the
|
|
125
|
+
* appropriate DOM element.
|
|
126
|
+
*
|
|
127
|
+
* @usageNotes
|
|
128
|
+
* The following is an example of writing the disabled property to a native DOM element:
|
|
129
|
+
*
|
|
130
|
+
* ```ts
|
|
131
|
+
* setDisabledState(isDisabled: boolean): void {
|
|
132
|
+
* this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);
|
|
133
|
+
* }
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* @param isDisabled The disabled status to set on the element
|
|
137
|
+
*
|
|
138
|
+
setDisabledState?(isDisabled: boolean): void;
|
|
139
|
+
}
|
|
140
|
+
*/
|
|
141
|
+
/**
|
|
142
|
+
* Base class for all ControlValueAccessor classes defined in Forms package.
|
|
143
|
+
* Contains common logic and utility functions.
|
|
144
|
+
*
|
|
145
|
+
* Note: this is an *internal-only* class and should not be extended or used directly in
|
|
146
|
+
* applications code.
|
|
147
|
+
*/
|
|
148
|
+
export class BaseControlValueAccessor {
|
|
149
|
+
constructor(_renderer, _elementRef) {
|
|
150
|
+
this._renderer = _renderer;
|
|
151
|
+
this._elementRef = _elementRef;
|
|
152
|
+
/**
|
|
153
|
+
* The registered callback function called when a change or input event occurs on the input
|
|
154
|
+
* element.
|
|
155
|
+
* @nodoc
|
|
156
|
+
*/
|
|
157
|
+
this.onChange = (_) => { };
|
|
158
|
+
/**
|
|
159
|
+
* The registered callback function called when a blur event occurs on the input element.
|
|
160
|
+
* @nodoc
|
|
161
|
+
*/
|
|
162
|
+
this.onTouched = () => { };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Helper method that sets a property on a target element using the current Renderer
|
|
166
|
+
* implementation.
|
|
167
|
+
* @nodoc
|
|
168
|
+
*/
|
|
169
|
+
setProperty(key, value) {
|
|
170
|
+
this._renderer.setProperty(this._elementRef.nativeElement, key, value);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Registers a function called when the control is touched.
|
|
174
|
+
* @nodoc
|
|
175
|
+
*/
|
|
176
|
+
registerOnTouched(fn) {
|
|
177
|
+
this.onTouched = fn;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Registers a function called when the control value changes.
|
|
181
|
+
* @nodoc
|
|
182
|
+
*/
|
|
183
|
+
registerOnChange(fn) {
|
|
184
|
+
this.onChange = fn;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Sets the "disabled" property on the range input element.
|
|
188
|
+
* @nodoc
|
|
189
|
+
*/
|
|
190
|
+
setDisabledState(isDisabled) {
|
|
191
|
+
this.setProperty('disabled', isDisabled);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
BaseControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: BaseControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
195
|
+
BaseControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.5", type: BaseControlValueAccessor, ngImport: i0 });
|
|
196
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: BaseControlValueAccessor, decorators: [{
|
|
197
|
+
type: Directive
|
|
198
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; } });
|
|
199
|
+
/**
|
|
200
|
+
* Base class for all built-in ControlValueAccessor classes (except DefaultValueAccessor, which is
|
|
201
|
+
* used in case no other CVAs can be found). We use this class to distinguish between default CVA,
|
|
202
|
+
* built-in CVAs and custom CVAs, so that Forms logic can recognize built-in CVAs and treat custom
|
|
203
|
+
* ones with higher priority (when both built-in and custom CVAs are present).
|
|
204
|
+
*
|
|
205
|
+
* Note: this is an *internal-only* class and should not be extended or used directly in
|
|
206
|
+
* applications code.
|
|
207
|
+
*/
|
|
208
|
+
export class BuiltInControlValueAccessor extends BaseControlValueAccessor {
|
|
209
|
+
}
|
|
210
|
+
BuiltInControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: BuiltInControlValueAccessor, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
211
|
+
BuiltInControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.5", type: BuiltInControlValueAccessor, usesInheritance: true, ngImport: i0 });
|
|
212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: BuiltInControlValueAccessor, decorators: [{
|
|
213
|
+
type: Directive
|
|
214
|
+
}] });
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbF92YWx1ZV9hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pL25pbWJsZS1hbmd1bGFyL3NyYy90aGlyZHBhcnR5L2RpcmVjdGl2ZXMvY29udHJvbF92YWx1ZV9hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSDs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsU0FBUyxFQUF3QyxNQUFNLGVBQWUsQ0FBQzs7QUFFL0U7Ozs7Ozs7Ozs7O0dBV0c7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBK0dFO0FBRUY7Ozs7OztHQU1HO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQWNuQyxZQUFvQixTQUFvQixFQUFVLFdBQXVCO1FBQXJELGNBQVMsR0FBVCxTQUFTLENBQVc7UUFBVSxnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQWJ6RTs7OztXQUlHO1FBQ0gsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFFMUI7OztXQUdHO1FBQ0gsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUV1RCxDQUFDO0lBRTdFOzs7O09BSUc7SUFDTyxXQUFXLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7O09BR0c7SUFDSCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFrQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZ0JBQWdCLENBQUMsVUFBbUI7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7cUhBL0NVLHdCQUF3Qjt5R0FBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFNBQVM7O0FBbURWOzs7Ozs7OztHQVFHO0FBRUgsTUFBTSxPQUFPLDJCQUE0QixTQUFRLHdCQUF3Qjs7d0hBQTVELDJCQUEyQjs0R0FBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFtOaW1ibGVdXG4gKiBDb3BpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvMTQuMi42L3BhY2thZ2VzL2Zvcm1zL3NyYy9kaXJlY3RpdmVzL2NvbnRyb2xfdmFsdWVfYWNjZXNzb3IudHNcbiAqIHdpdGggdGhlIGZvbGxvd2luZyBtb2RpZmljYXRpb25zOlxuICogLSBDb21tZW50ZWQgb3V0IENvbnRyb2xWYWx1ZUFjY2Vzc29yIHdoaWNoIGlzIGV4cG9ydGVkIGZyb20gQGFuZ3VsYXIvZm9ybXNcbiAqIC0gQ29tbWVudGVkIG91dCBOR19WQUxVRV9BQ0NFU1NPUiB3aGljaCBpcyBleHBvcnRlZCBmcm9tIEBhbmd1bGFyL2Zvcm1zXG4gKi9cblxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbmplY3Rpb25Ub2tlbiwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIERlZmluZXMgYW4gaW50ZXJmYWNlIHRoYXQgYWN0cyBhcyBhIGJyaWRnZSBiZXR3ZWVuIHRoZSBBbmd1bGFyIGZvcm1zIEFQSSBhbmQgYVxuICogbmF0aXZlIGVsZW1lbnQgaW4gdGhlIERPTS5cbiAqXG4gKiBJbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UgdG8gY3JlYXRlIGEgY3VzdG9tIGZvcm0gY29udHJvbCBkaXJlY3RpdmVcbiAqIHRoYXQgaW50ZWdyYXRlcyB3aXRoIEFuZ3VsYXIgZm9ybXMuXG4gKlxuICogQHNlZSBEZWZhdWx0VmFsdWVBY2Nlc3NvclxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuLyogW05pbWJsZV0gQ29tbWVudGluZyBvdXQgcHVibGljIGludGVyZmFjZVxuZXhwb3J0IGludGVyZmFjZSBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIGZvcm1zIEFQSSB0byB3cml0ZSB0byB0aGUgdmlldyB3aGVuIHByb2dyYW1tYXRpY1xuICAgKiBjaGFuZ2VzIGZyb20gbW9kZWwgdG8gdmlldyBhcmUgcmVxdWVzdGVkLlxuICAgKlxuICAgKiBAdXNhZ2VOb3Rlc1xuICAgKiAjIyMgV3JpdGUgYSB2YWx1ZSB0byB0aGUgZWxlbWVudFxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgd3JpdGVzIGEgdmFsdWUgdG8gdGhlIG5hdGl2ZSBET00gZWxlbWVudC5cbiAgICpcbiAgICogYGBgdHNcbiAgICogd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAqICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndmFsdWUnLCB2YWx1ZSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBvYmogVGhlIG5ldyB2YWx1ZSBmb3IgdGhlIGVsZW1lbnRcbiAgICpcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBSZWdpc3RlcnMgYSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sJ3MgdmFsdWVcbiAgICogY2hhbmdlcyBpbiB0aGUgVUkuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgZm9ybXMgQVBJIG9uIGluaXRpYWxpemF0aW9uIHRvIHVwZGF0ZSB0aGUgZm9ybVxuICAgKiBtb2RlbCB3aGVuIHZhbHVlcyBwcm9wYWdhdGUgZnJvbSB0aGUgdmlldyB0byB0aGUgbW9kZWwuXG4gICAqXG4gICAqIFdoZW4gaW1wbGVtZW50aW5nIHRoZSBgcmVnaXN0ZXJPbkNoYW5nZWAgbWV0aG9kIGluIHlvdXIgb3duIHZhbHVlIGFjY2Vzc29yLFxuICAgKiBzYXZlIHRoZSBnaXZlbiBmdW5jdGlvbiBzbyB5b3VyIGNsYXNzIGNhbGxzIGl0IGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lLlxuICAgKlxuICAgKiBAdXNhZ2VOb3Rlc1xuICAgKiAjIyMgU3RvcmUgdGhlIGNoYW5nZSBmdW5jdGlvblxuICAgKlxuICAgKiBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc3RvcmVzIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBhcyBhbiBpbnRlcm5hbCBtZXRob2QuXG4gICAqXG4gICAqIGBgYHRzXG4gICAqIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICogICB0aGlzLl9vbkNoYW5nZSA9IGZuO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBXaGVuIHRoZSB2YWx1ZSBjaGFuZ2VzIGluIHRoZSBVSSwgY2FsbCB0aGUgcmVnaXN0ZXJlZFxuICAgKiBmdW5jdGlvbiB0byBhbGxvdyB0aGUgZm9ybXMgQVBJIHRvIHVwZGF0ZSBpdHNlbGY6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGhvc3Q6IHtcbiAgICogICAgJyhjaGFuZ2UpJzogJ19vbkNoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKSdcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byByZWdpc3RlclxuICAgKlxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgYnkgdGhlIGZvcm1zIEFQSSBvbiBpbml0aWFsaXphdGlvblxuICAgKiB0byB1cGRhdGUgdGhlIGZvcm0gbW9kZWwgb24gYmx1ci5cbiAgICpcbiAgICogV2hlbiBpbXBsZW1lbnRpbmcgYHJlZ2lzdGVyT25Ub3VjaGVkYCBpbiB5b3VyIG93biB2YWx1ZSBhY2Nlc3Nvciwgc2F2ZSB0aGUgZ2l2ZW5cbiAgICogZnVuY3Rpb24gc28geW91ciBjbGFzcyBjYWxscyBpdCB3aGVuIHRoZSBjb250cm9sIHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAqIGJsdXJyZWQgb3IgXCJ0b3VjaGVkXCIuXG4gICAqXG4gICAqIEB1c2FnZU5vdGVzXG4gICAqICMjIyBTdG9yZSB0aGUgY2FsbGJhY2sgZnVuY3Rpb25cbiAgICpcbiAgICogVGhlIGZvbGxvd2luZyBleGFtcGxlIHN0b3JlcyB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gYXMgYW4gaW50ZXJuYWwgbWV0aG9kLlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAqICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIE9uIGJsdXIgKG9yIGVxdWl2YWxlbnQpLCB5b3VyIGNsYXNzIHNob3VsZCBjYWxsIHRoZSByZWdpc3RlcmVkIGZ1bmN0aW9uIHRvIGFsbG93XG4gICAqIHRoZSBmb3JtcyBBUEkgdG8gdXBkYXRlIGl0c2VsZjpcbiAgICpcbiAgICogYGBgdHNcbiAgICogaG9zdDoge1xuICAgKiAgICAnKGJsdXIpJzogJ19vblRvdWNoZWQoKSdcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIGZuIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byByZWdpc3RlclxuICAgKlxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGJ5IHRoZSBmb3JtcyBBUEkgd2hlbiB0aGUgY29udHJvbCBzdGF0dXMgY2hhbmdlcyB0b1xuICAgKiBvciBmcm9tICdESVNBQkxFRCcuIERlcGVuZGluZyBvbiB0aGUgc3RhdHVzLCBpdCBlbmFibGVzIG9yIGRpc2FibGVzIHRoZVxuICAgKiBhcHByb3ByaWF0ZSBET00gZWxlbWVudC5cbiAgICpcbiAgICogQHVzYWdlTm90ZXNcbiAgICogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHdyaXRpbmcgdGhlIGRpc2FibGVkIHByb3BlcnR5IHRvIGEgbmF0aXZlIERPTSBlbGVtZW50OlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICogICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNhYmxlZCcsIGlzRGlzYWJsZWQpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCBUaGUgZGlzYWJsZWQgc3RhdHVzIHRvIHNldCBvbiB0aGUgZWxlbWVudFxuICAgKlxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZDtcbn1cbiovXG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNsYXNzZXMgZGVmaW5lZCBpbiBGb3JtcyBwYWNrYWdlLlxuICogQ29udGFpbnMgY29tbW9uIGxvZ2ljIGFuZCB1dGlsaXR5IGZ1bmN0aW9ucy5cbiAqXG4gKiBOb3RlOiB0aGlzIGlzIGFuICppbnRlcm5hbC1vbmx5KiBjbGFzcyBhbmQgc2hvdWxkIG5vdCBiZSBleHRlbmRlZCBvciB1c2VkIGRpcmVjdGx5IGluXG4gKiBhcHBsaWNhdGlvbnMgY29kZS5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQmFzZUNvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLyoqXG4gICAqIFRoZSByZWdpc3RlcmVkIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIGEgY2hhbmdlIG9yIGlucHV0IGV2ZW50IG9jY3VycyBvbiB0aGUgaW5wdXRcbiAgICogZWxlbWVudC5cbiAgICogQG5vZG9jXG4gICAqL1xuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaXN0ZXJlZCBjYWxsYmFjayBmdW5jdGlvbiBjYWxsZWQgd2hlbiBhIGJsdXIgZXZlbnQgb2NjdXJzIG9uIHRoZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAbm9kb2NcbiAgICovXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdGhhdCBzZXRzIGEgcHJvcGVydHkgb24gYSB0YXJnZXQgZWxlbWVudCB1c2luZyB0aGUgY3VycmVudCBSZW5kZXJlclxuICAgKiBpbXBsZW1lbnRhdGlvbi5cbiAgICogQG5vZG9jXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIGtleSwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIGlzIHRvdWNoZWQuXG4gICAqIEBub2RvY1xuICAgKi9cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHZhbHVlIGNoYW5nZXMuXG4gICAqIEBub2RvY1xuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4ge30pOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgXCJkaXNhYmxlZFwiIHByb3BlcnR5IG9uIHRoZSByYW5nZSBpbnB1dCBlbGVtZW50LlxuICAgKiBAbm9kb2NcbiAgICovXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuc2V0UHJvcGVydHkoJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBhbGwgYnVpbHQtaW4gQ29udHJvbFZhbHVlQWNjZXNzb3IgY2xhc3NlcyAoZXhjZXB0IERlZmF1bHRWYWx1ZUFjY2Vzc29yLCB3aGljaCBpc1xuICogdXNlZCBpbiBjYXNlIG5vIG90aGVyIENWQXMgY2FuIGJlIGZvdW5kKS4gV2UgdXNlIHRoaXMgY2xhc3MgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBkZWZhdWx0IENWQSxcbiAqIGJ1aWx0LWluIENWQXMgYW5kIGN1c3RvbSBDVkFzLCBzbyB0aGF0IEZvcm1zIGxvZ2ljIGNhbiByZWNvZ25pemUgYnVpbHQtaW4gQ1ZBcyBhbmQgdHJlYXQgY3VzdG9tXG4gKiBvbmVzIHdpdGggaGlnaGVyIHByaW9yaXR5ICh3aGVuIGJvdGggYnVpbHQtaW4gYW5kIGN1c3RvbSBDVkFzIGFyZSBwcmVzZW50KS5cbiAqXG4gKiBOb3RlOiB0aGlzIGlzIGFuICppbnRlcm5hbC1vbmx5KiBjbGFzcyBhbmQgc2hvdWxkIG5vdCBiZSBleHRlbmRlZCBvciB1c2VkIGRpcmVjdGx5IGluXG4gKiBhcHBsaWNhdGlvbnMgY29kZS5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQnVpbHRJbkNvbnRyb2xWYWx1ZUFjY2Vzc29yIGV4dGVuZHMgQmFzZUNvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbn1cblxuLyoqXG4gKiBVc2VkIHRvIHByb3ZpZGUgYSBgQ29udHJvbFZhbHVlQWNjZXNzb3JgIGZvciBmb3JtIGNvbnRyb2xzLlxuICpcbiAqIFNlZSBgRGVmYXVsdFZhbHVlQWNjZXNzb3JgIGZvciBob3cgdG8gaW1wbGVtZW50IG9uZS5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbi8qIFtOaW1ibGVdIENvbW1lbnRpbmcgb3V0IHB1YmxpYyBpbmplY3Rpb24gdG9rZW5cbmV4cG9ydCBjb25zdCBOR19WQUxVRV9BQ0NFU1NPUiA9XG4gICAgbmV3IEluamVjdGlvblRva2VuPFJlYWRvbmx5QXJyYXk8Q29udHJvbFZhbHVlQWNjZXNzb3I+PignTmdWYWx1ZUFjY2Vzc29yJyk7XG4qLyJdfQ==
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [Nimble]
|
|
3
|
+
* Copied from https://github.com/angular/angular/blob/14.2.6/packages/forms/src/directives/radio_control_value_accessor.ts
|
|
4
|
+
* with the following modifications:
|
|
5
|
+
* - Changed throwNameError() to throw Error instead of RuntimeError. This makes the file compile with Angular version 12.
|
|
6
|
+
* - Removed now-unused import for RuntimeErrorCode and RuntimeError
|
|
7
|
+
* - Updated import of ControlValueAccessor, NgControl, and NG_VALUE_ACCESSOR to pull from package export
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* @license
|
|
11
|
+
* Copyright Google LLC All Rights Reserved.
|
|
12
|
+
*
|
|
13
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
14
|
+
* found in the LICENSE file at https://angular.io/license
|
|
15
|
+
*/
|
|
16
|
+
import { Directive, forwardRef, Injectable, Input, NgModule } from '@angular/core';
|
|
17
|
+
import { BuiltInControlValueAccessor } from './control_value_accessor';
|
|
18
|
+
import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
export const RADIO_VALUE_ACCESSOR = {
|
|
21
|
+
provide: NG_VALUE_ACCESSOR,
|
|
22
|
+
useExisting: forwardRef(() => RadioControlValueAccessor),
|
|
23
|
+
multi: true
|
|
24
|
+
};
|
|
25
|
+
function throwNameError() {
|
|
26
|
+
/* [Nimble] RuntimeErrorCode is not exported from @angular/forms in version 12; falling back to version 12 behavior
|
|
27
|
+
throw new RuntimeError(RuntimeErrorCode.NAME_AND_FORM_CONTROL_NAME_MUST_MATCH, `
|
|
28
|
+
*/
|
|
29
|
+
throw new Error(`
|
|
30
|
+
If you define both a name and a formControlName attribute on your radio button, their values
|
|
31
|
+
must match. Ex: <input type="radio" formControlName="food" name="food">
|
|
32
|
+
`);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Internal-only NgModule that works as a host for the `RadioControlRegistry` tree-shakable
|
|
36
|
+
* provider. Note: the `InternalFormsSharedModule` can not be used here directly, since it's
|
|
37
|
+
* declared *after* the `RadioControlRegistry` class and the `providedIn` doesn't support
|
|
38
|
+
* `forwardRef` logic.
|
|
39
|
+
*/
|
|
40
|
+
export class RadioControlRegistryModule {
|
|
41
|
+
}
|
|
42
|
+
RadioControlRegistryModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlRegistryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
43
|
+
RadioControlRegistryModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlRegistryModule });
|
|
44
|
+
RadioControlRegistryModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlRegistryModule });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlRegistryModule, decorators: [{
|
|
46
|
+
type: NgModule
|
|
47
|
+
}] });
|
|
48
|
+
/**
|
|
49
|
+
* @description
|
|
50
|
+
* Class used by Angular to track radio buttons. For internal use only.
|
|
51
|
+
*/
|
|
52
|
+
export class RadioControlRegistry {
|
|
53
|
+
constructor() {
|
|
54
|
+
this._accessors = [];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @description
|
|
58
|
+
* Adds a control to the internal registry. For internal use only.
|
|
59
|
+
*/
|
|
60
|
+
add(control, accessor) {
|
|
61
|
+
this._accessors.push([control, accessor]);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* @description
|
|
65
|
+
* Removes a control from the internal registry. For internal use only.
|
|
66
|
+
*/
|
|
67
|
+
remove(accessor) {
|
|
68
|
+
for (let i = this._accessors.length - 1; i >= 0; --i) {
|
|
69
|
+
if (this._accessors[i][1] === accessor) {
|
|
70
|
+
this._accessors.splice(i, 1);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @description
|
|
77
|
+
* Selects a radio button. For internal use only.
|
|
78
|
+
*/
|
|
79
|
+
select(accessor) {
|
|
80
|
+
this._accessors.forEach((c) => {
|
|
81
|
+
if (this._isSameGroup(c, accessor) && c[1] !== accessor) {
|
|
82
|
+
c[1].fireUncheck(accessor.value);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
_isSameGroup(controlPair, accessor) {
|
|
87
|
+
if (!controlPair[0].control)
|
|
88
|
+
return false;
|
|
89
|
+
// @ts-expect-error: [Nimble] Use of internal NgControl member _parent
|
|
90
|
+
return controlPair[0]._parent === accessor._control._parent &&
|
|
91
|
+
controlPair[1].name === accessor.name;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
RadioControlRegistry.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
95
|
+
RadioControlRegistry.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlRegistry, providedIn: RadioControlRegistryModule });
|
|
96
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlRegistry, decorators: [{
|
|
97
|
+
type: Injectable,
|
|
98
|
+
args: [{ providedIn: RadioControlRegistryModule }]
|
|
99
|
+
}] });
|
|
100
|
+
/**
|
|
101
|
+
* @description
|
|
102
|
+
* The `ControlValueAccessor` for writing radio control values and listening to radio control
|
|
103
|
+
* changes. The value accessor is used by the `FormControlDirective`, `FormControlName`, and
|
|
104
|
+
* `NgModel` directives.
|
|
105
|
+
*
|
|
106
|
+
* @usageNotes
|
|
107
|
+
*
|
|
108
|
+
* ### Using radio buttons with reactive form directives
|
|
109
|
+
*
|
|
110
|
+
* The follow example shows how to use radio buttons in a reactive form. When using radio buttons in
|
|
111
|
+
* a reactive form, radio buttons in the same group should have the same `formControlName`.
|
|
112
|
+
* Providing a `name` attribute is optional.
|
|
113
|
+
*
|
|
114
|
+
* {@example forms/ts/reactiveRadioButtons/reactive_radio_button_example.ts region='Reactive'}
|
|
115
|
+
*
|
|
116
|
+
* @ngModule ReactiveFormsModule
|
|
117
|
+
* @ngModule FormsModule
|
|
118
|
+
* @publicApi
|
|
119
|
+
*/
|
|
120
|
+
export class RadioControlValueAccessor extends BuiltInControlValueAccessor {
|
|
121
|
+
constructor(renderer, elementRef, _registry, _injector) {
|
|
122
|
+
super(renderer, elementRef);
|
|
123
|
+
this._registry = _registry;
|
|
124
|
+
this._injector = _injector;
|
|
125
|
+
/**
|
|
126
|
+
* The registered callback function called when a change event occurs on the input element.
|
|
127
|
+
* Note: we declare `onChange` here (also used as host listener) as a function with no arguments
|
|
128
|
+
* to override the `onChange` function (which expects 1 argument) in the parent
|
|
129
|
+
* `BaseControlValueAccessor` class.
|
|
130
|
+
* @nodoc
|
|
131
|
+
*/
|
|
132
|
+
this.onChange = () => { };
|
|
133
|
+
}
|
|
134
|
+
/** @nodoc */
|
|
135
|
+
ngOnInit() {
|
|
136
|
+
this._control = this._injector.get(NgControl);
|
|
137
|
+
this._checkName();
|
|
138
|
+
this._registry.add(this._control, this);
|
|
139
|
+
}
|
|
140
|
+
/** @nodoc */
|
|
141
|
+
ngOnDestroy() {
|
|
142
|
+
this._registry.remove(this);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Sets the "checked" property value on the radio input element.
|
|
146
|
+
* @nodoc
|
|
147
|
+
*/
|
|
148
|
+
writeValue(value) {
|
|
149
|
+
this._state = value === this.value;
|
|
150
|
+
this.setProperty('checked', this._state);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Registers a function called when the control value changes.
|
|
154
|
+
* @nodoc
|
|
155
|
+
*/
|
|
156
|
+
registerOnChange(fn) {
|
|
157
|
+
this._fn = fn;
|
|
158
|
+
this.onChange = () => {
|
|
159
|
+
fn(this.value);
|
|
160
|
+
this._registry.select(this);
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Sets the "value" on the radio input element and unchecks it.
|
|
165
|
+
*
|
|
166
|
+
* @param value
|
|
167
|
+
*/
|
|
168
|
+
fireUncheck(value) {
|
|
169
|
+
this.writeValue(value);
|
|
170
|
+
}
|
|
171
|
+
_checkName() {
|
|
172
|
+
if (this.name && this.formControlName && this.name !== this.formControlName &&
|
|
173
|
+
// @ts-expect-error: [Nimble] ngDevMode is not defined
|
|
174
|
+
(typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
175
|
+
throwNameError();
|
|
176
|
+
}
|
|
177
|
+
if (!this.name && this.formControlName)
|
|
178
|
+
this.name = this.formControlName;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
RadioControlValueAccessor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlValueAccessor, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: RadioControlRegistry }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive });
|
|
182
|
+
RadioControlValueAccessor.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.5", type: RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: { name: "name", formControlName: "formControlName", value: "value" }, host: { listeners: { "change": "onChange()", "blur": "onTouched()" } }, providers: [RADIO_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: RadioControlValueAccessor, decorators: [{
|
|
184
|
+
type: Directive,
|
|
185
|
+
args: [{
|
|
186
|
+
selector: 'input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]',
|
|
187
|
+
host: { '(change)': 'onChange()', '(blur)': 'onTouched()' },
|
|
188
|
+
providers: [RADIO_VALUE_ACCESSOR]
|
|
189
|
+
}]
|
|
190
|
+
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: RadioControlRegistry }, { type: i0.Injector }]; }, propDecorators: { name: [{
|
|
191
|
+
type: Input
|
|
192
|
+
}], formControlName: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], value: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}] } });
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW9fY29udHJvbF92YWx1ZV9hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pL25pbWJsZS1hbmd1bGFyL3NyYy90aGlyZHBhcnR5L2RpcmVjdGl2ZXMvcmFkaW9fY29udHJvbF92YWx1ZV9hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztHQU9HO0FBRUg7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBYyxVQUFVLEVBQUUsVUFBVSxFQUFZLEtBQUssRUFBRSxRQUFRLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBRXJJLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JFLE9BQU8sRUFBdUIsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWxGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFRO0lBQ3ZDLE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztJQUN4RCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixTQUFTLGNBQWM7SUFDckI7O01BRUU7SUFDRixNQUFNLElBQUksS0FBSyxDQUFDOzs7S0FHYixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sMEJBQTBCOzt1SEFBMUIsMEJBQTBCO3dIQUExQiwwQkFBMEI7d0hBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxRQUFROztBQUlUOzs7R0FHRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFEakM7UUFFVSxlQUFVLEdBQVUsRUFBRSxDQUFDO0tBMkNoQztJQXpDQzs7O09BR0c7SUFDSCxHQUFHLENBQUMsT0FBa0IsRUFBRSxRQUFtQztRQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsUUFBbUM7UUFDeEMsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtZQUNwRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLE9BQU87YUFDUjtTQUNGO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxRQUFtQztRQUN4QyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVCLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDdkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZLENBQ2hCLFdBQW1ELEVBQ25ELFFBQW1DO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzFDLHNFQUFzRTtRQUN0RSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPO1lBQ3ZELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QyxDQUFDOztpSEEzQ1Usb0JBQW9CO3FIQUFwQixvQkFBb0IsY0FEUiwwQkFBMEI7MkZBQ3RDLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSwwQkFBMEIsRUFBQzs7QUErQ3BEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBT0gsTUFBTSxPQUFPLHlCQUEwQixTQUFRLDJCQUEyQjtJQTBDeEUsWUFDSSxRQUFtQixFQUFFLFVBQXNCLEVBQVUsU0FBK0IsRUFDNUUsU0FBbUI7UUFDN0IsS0FBSyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUYyQixjQUFTLEdBQVQsU0FBUyxDQUFzQjtRQUM1RSxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBaEMvQjs7Ozs7O1dBTUc7UUFDTSxhQUFRLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBMkI3QixDQUFDO0lBRUQsYUFBYTtJQUNiLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxhQUFhO0lBQ2IsV0FBVztRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsS0FBVTtRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ00sZ0JBQWdCLENBQUMsRUFBa0I7UUFDMUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNuQixFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLGVBQWU7WUFDdkUsc0RBQXNEO1lBQ3RELENBQUMsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxFQUFFO1lBQ25ELGNBQWMsRUFBRSxDQUFDO1NBQ2xCO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGVBQWU7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDM0UsQ0FBQzs7c0hBakdVLHlCQUF5QixxRUEyQ2dDLG9CQUFvQjswR0EzQzdFLHlCQUF5Qiw2UUFGekIsQ0FBQyxvQkFBb0IsQ0FBQzsyRkFFdEIseUJBQXlCO2tCQU5yQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFDSiw4RkFBOEY7b0JBQ2xHLElBQUksRUFBRSxFQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBQztvQkFDekQsU0FBUyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2xDOzJHQTRDcUUsb0JBQW9CLGlEQWpCL0UsSUFBSTtzQkFBWixLQUFLO2dCQVFHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBbTmltYmxlXVxuICogQ29waWVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzE0LjIuNi9wYWNrYWdlcy9mb3Jtcy9zcmMvZGlyZWN0aXZlcy9yYWRpb19jb250cm9sX3ZhbHVlX2FjY2Vzc29yLnRzXG4gKiB3aXRoIHRoZSBmb2xsb3dpbmcgbW9kaWZpY2F0aW9uczpcbiAqIC0gQ2hhbmdlZCB0aHJvd05hbWVFcnJvcigpIHRvIHRocm93IEVycm9yIGluc3RlYWQgb2YgUnVudGltZUVycm9yLiBUaGlzIG1ha2VzIHRoZSBmaWxlIGNvbXBpbGUgd2l0aCBBbmd1bGFyIHZlcnNpb24gMTIuXG4gKiAtIFJlbW92ZWQgbm93LXVudXNlZCBpbXBvcnQgZm9yIFJ1bnRpbWVFcnJvckNvZGUgYW5kIFJ1bnRpbWVFcnJvclxuICogLSBVcGRhdGVkIGltcG9ydCBvZiBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBhbmQgTkdfVkFMVUVfQUNDRVNTT1IgdG8gcHVsbCBmcm9tIHBhY2thZ2UgZXhwb3J0XG4gKi9cblxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBJbmplY3RhYmxlLCBJbmplY3RvciwgSW5wdXQsIE5nTW9kdWxlLCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtCdWlsdEluQ29udHJvbFZhbHVlQWNjZXNzb3J9IGZyb20gJy4vY29udHJvbF92YWx1ZV9hY2Nlc3Nvcic7XG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBSQURJT19WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUmFkaW9Db250cm9sVmFsdWVBY2Nlc3NvciksXG4gIG11bHRpOiB0cnVlXG59O1xuXG5mdW5jdGlvbiB0aHJvd05hbWVFcnJvcigpIHtcbiAgLyogW05pbWJsZV0gUnVudGltZUVycm9yQ29kZSBpcyBub3QgZXhwb3J0ZWQgZnJvbSBAYW5ndWxhci9mb3JtcyBpbiB2ZXJzaW9uIDEyOyBmYWxsaW5nIGJhY2sgdG8gdmVyc2lvbiAxMiBiZWhhdmlvclxuICB0aHJvdyBuZXcgUnVudGltZUVycm9yKFJ1bnRpbWVFcnJvckNvZGUuTkFNRV9BTkRfRk9STV9DT05UUk9MX05BTUVfTVVTVF9NQVRDSCwgYFxuICAqL1xuICB0aHJvdyBuZXcgRXJyb3IoYFxuICAgICAgSWYgeW91IGRlZmluZSBib3RoIGEgbmFtZSBhbmQgYSBmb3JtQ29udHJvbE5hbWUgYXR0cmlidXRlIG9uIHlvdXIgcmFkaW8gYnV0dG9uLCB0aGVpciB2YWx1ZXNcbiAgICAgIG11c3QgbWF0Y2guIEV4OiA8aW5wdXQgdHlwZT1cInJhZGlvXCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9vZFwiIG5hbWU9XCJmb29kXCI+XG4gICAgYCk7XG59XG5cbi8qKlxuICogSW50ZXJuYWwtb25seSBOZ01vZHVsZSB0aGF0IHdvcmtzIGFzIGEgaG9zdCBmb3IgdGhlIGBSYWRpb0NvbnRyb2xSZWdpc3RyeWAgdHJlZS1zaGFrYWJsZVxuICogcHJvdmlkZXIuIE5vdGU6IHRoZSBgSW50ZXJuYWxGb3Jtc1NoYXJlZE1vZHVsZWAgY2FuIG5vdCBiZSB1c2VkIGhlcmUgZGlyZWN0bHksIHNpbmNlIGl0J3NcbiAqIGRlY2xhcmVkICphZnRlciogdGhlIGBSYWRpb0NvbnRyb2xSZWdpc3RyeWAgY2xhc3MgYW5kIHRoZSBgcHJvdmlkZWRJbmAgZG9lc24ndCBzdXBwb3J0XG4gKiBgZm9yd2FyZFJlZmAgbG9naWMuXG4gKi9cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgUmFkaW9Db250cm9sUmVnaXN0cnlNb2R1bGUge1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogQ2xhc3MgdXNlZCBieSBBbmd1bGFyIHRvIHRyYWNrIHJhZGlvIGJ1dHRvbnMuIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cbiAqL1xuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46IFJhZGlvQ29udHJvbFJlZ2lzdHJ5TW9kdWxlfSlcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbnRyb2xSZWdpc3RyeSB7XG4gIHByaXZhdGUgX2FjY2Vzc29yczogYW55W10gPSBbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkZHMgYSBjb250cm9sIHRvIHRoZSBpbnRlcm5hbCByZWdpc3RyeS4gRm9yIGludGVybmFsIHVzZSBvbmx5LlxuICAgKi9cbiAgYWRkKGNvbnRyb2w6IE5nQ29udHJvbCwgYWNjZXNzb3I6IFJhZGlvQ29udHJvbFZhbHVlQWNjZXNzb3IpIHtcbiAgICB0aGlzLl9hY2Nlc3NvcnMucHVzaChbY29udHJvbCwgYWNjZXNzb3JdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogUmVtb3ZlcyBhIGNvbnRyb2wgZnJvbSB0aGUgaW50ZXJuYWwgcmVnaXN0cnkuIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cbiAgICovXG4gIHJlbW92ZShhY2Nlc3NvcjogUmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvcikge1xuICAgIGZvciAobGV0IGkgPSB0aGlzLl9hY2Nlc3NvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIGlmICh0aGlzLl9hY2Nlc3NvcnNbaV1bMV0gPT09IGFjY2Vzc29yKSB7XG4gICAgICAgIHRoaXMuX2FjY2Vzc29ycy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFNlbGVjdHMgYSByYWRpbyBidXR0b24uIEZvciBpbnRlcm5hbCB1c2Ugb25seS5cbiAgICovXG4gIHNlbGVjdChhY2Nlc3NvcjogUmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvcikge1xuICAgIHRoaXMuX2FjY2Vzc29ycy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBpZiAodGhpcy5faXNTYW1lR3JvdXAoYywgYWNjZXNzb3IpICYmIGNbMV0gIT09IGFjY2Vzc29yKSB7XG4gICAgICAgIGNbMV0uZmlyZVVuY2hlY2soYWNjZXNzb3IudmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNTYW1lR3JvdXAoXG4gICAgICBjb250cm9sUGFpcjogW05nQ29udHJvbCwgUmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvcl0sXG4gICAgICBhY2Nlc3NvcjogUmFkaW9Db250cm9sVmFsdWVBY2Nlc3Nvcik6IGJvb2xlYW4ge1xuICAgIGlmICghY29udHJvbFBhaXJbMF0uY29udHJvbCkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IFtOaW1ibGVdIFVzZSBvZiBpbnRlcm5hbCBOZ0NvbnRyb2wgbWVtYmVyIF9wYXJlbnRcbiAgICByZXR1cm4gY29udHJvbFBhaXJbMF0uX3BhcmVudCA9PT0gYWNjZXNzb3IuX2NvbnRyb2wuX3BhcmVudCAmJlxuICAgICAgICBjb250cm9sUGFpclsxXS5uYW1lID09PSBhY2Nlc3Nvci5uYW1lO1xuICB9XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uXG4gKiBUaGUgYENvbnRyb2xWYWx1ZUFjY2Vzc29yYCBmb3Igd3JpdGluZyByYWRpbyBjb250cm9sIHZhbHVlcyBhbmQgbGlzdGVuaW5nIHRvIHJhZGlvIGNvbnRyb2xcbiAqIGNoYW5nZXMuIFRoZSB2YWx1ZSBhY2Nlc3NvciBpcyB1c2VkIGJ5IHRoZSBgRm9ybUNvbnRyb2xEaXJlY3RpdmVgLCBgRm9ybUNvbnRyb2xOYW1lYCwgYW5kXG4gKiBgTmdNb2RlbGAgZGlyZWN0aXZlcy5cbiAqXG4gKiBAdXNhZ2VOb3Rlc1xuICpcbiAqICMjIyBVc2luZyByYWRpbyBidXR0b25zIHdpdGggcmVhY3RpdmUgZm9ybSBkaXJlY3RpdmVzXG4gKlxuICogVGhlIGZvbGxvdyBleGFtcGxlIHNob3dzIGhvdyB0byB1c2UgcmFkaW8gYnV0dG9ucyBpbiBhIHJlYWN0aXZlIGZvcm0uIFdoZW4gdXNpbmcgcmFkaW8gYnV0dG9ucyBpblxuICogYSByZWFjdGl2ZSBmb3JtLCByYWRpbyBidXR0b25zIGluIHRoZSBzYW1lIGdyb3VwIHNob3VsZCBoYXZlIHRoZSBzYW1lIGBmb3JtQ29udHJvbE5hbWVgLlxuICogUHJvdmlkaW5nIGEgYG5hbWVgIGF0dHJpYnV0ZSBpcyBvcHRpb25hbC5cbiAqXG4gKiB7QGV4YW1wbGUgZm9ybXMvdHMvcmVhY3RpdmVSYWRpb0J1dHRvbnMvcmVhY3RpdmVfcmFkaW9fYnV0dG9uX2V4YW1wbGUudHMgcmVnaW9uPSdSZWFjdGl2ZSd9XG4gKlxuICogQG5nTW9kdWxlIFJlYWN0aXZlRm9ybXNNb2R1bGVcbiAqIEBuZ01vZHVsZSBGb3Jtc01vZHVsZVxuICogQHB1YmxpY0FwaVxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6XG4gICAgICAnaW5wdXRbdHlwZT1yYWRpb11bZm9ybUNvbnRyb2xOYW1lXSxpbnB1dFt0eXBlPXJhZGlvXVtmb3JtQ29udHJvbF0saW5wdXRbdHlwZT1yYWRpb11bbmdNb2RlbF0nLFxuICBob3N0OiB7JyhjaGFuZ2UpJzogJ29uQ2hhbmdlKCknLCAnKGJsdXIpJzogJ29uVG91Y2hlZCgpJ30sXG4gIHByb3ZpZGVyczogW1JBRElPX1ZBTFVFX0FDQ0VTU09SXVxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb0NvbnRyb2xWYWx1ZUFjY2Vzc29yIGV4dGVuZHMgQnVpbHRJbkNvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHNcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95LCBPbkluaXQge1xuICAvKiogQGludGVybmFsICovXG4gIC8vIFRPRE8oaXNzdWUvMjQ1NzEpOiByZW1vdmUgJyEnLlxuICBfc3RhdGUhOiBib29sZWFuO1xuICAvKiogQGludGVybmFsICovXG4gIC8vIFRPRE8oaXNzdWUvMjQ1NzEpOiByZW1vdmUgJyEnLlxuICBfY29udHJvbCE6IE5nQ29udHJvbDtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICAvLyBUT0RPKGlzc3VlLzI0NTcxKTogcmVtb3ZlICchJy5cbiAgX2ZuITogRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSByZWdpc3RlcmVkIGNhbGxiYWNrIGZ1bmN0aW9uIGNhbGxlZCB3aGVuIGEgY2hhbmdlIGV2ZW50IG9jY3VycyBvbiB0aGUgaW5wdXQgZWxlbWVudC5cbiAgICogTm90ZTogd2UgZGVjbGFyZSBgb25DaGFuZ2VgIGhlcmUgKGFsc28gdXNlZCBhcyBob3N0IGxpc3RlbmVyKSBhcyBhIGZ1bmN0aW9uIHdpdGggbm8gYXJndW1lbnRzXG4gICAqIHRvIG92ZXJyaWRlIHRoZSBgb25DaGFuZ2VgIGZ1bmN0aW9uICh3aGljaCBleHBlY3RzIDEgYXJndW1lbnQpIGluIHRoZSBwYXJlbnRcbiAgICogYEJhc2VDb250cm9sVmFsdWVBY2Nlc3NvcmAgY2xhc3MuXG4gICAqIEBub2RvY1xuICAgKi9cbiAgb3ZlcnJpZGUgb25DaGFuZ2UgPSAoKSA9PiB7fTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFRyYWNrcyB0aGUgbmFtZSBvZiB0aGUgcmFkaW8gaW5wdXQgZWxlbWVudC5cbiAgICovXG4gIC8vIFRPRE8oaXNzdWUvMjQ1NzEpOiByZW1vdmUgJyEnLlxuICBASW5wdXQoKSBuYW1lITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVHJhY2tzIHRoZSBuYW1lIG9mIHRoZSBgRm9ybUNvbnRyb2xgIGJvdW5kIHRvIHRoZSBkaXJlY3RpdmUuIFRoZSBuYW1lIGNvcnJlc3BvbmRzXG4gICAqIHRvIGEga2V5IGluIHRoZSBwYXJlbnQgYEZvcm1Hcm91cGAgb3IgYEZvcm1BcnJheWAuXG4gICAqL1xuICAvLyBUT0RPKGlzc3VlLzI0NTcxKTogcmVtb3ZlICchJy5cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVHJhY2tzIHRoZSB2YWx1ZSBvZiB0aGUgcmFkaW8gaW5wdXQgZWxlbWVudFxuICAgKi9cbiAgQElucHV0KCkgdmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgX3JlZ2lzdHJ5OiBSYWRpb0NvbnRyb2xSZWdpc3RyeSxcbiAgICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3Rvcikge1xuICAgIHN1cGVyKHJlbmRlcmVyLCBlbGVtZW50UmVmKTtcbiAgfVxuXG4gIC8qKiBAbm9kb2MgKi9cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fY29udHJvbCA9IHRoaXMuX2luamVjdG9yLmdldChOZ0NvbnRyb2wpO1xuICAgIHRoaXMuX2NoZWNrTmFtZSgpO1xuICAgIHRoaXMuX3JlZ2lzdHJ5LmFkZCh0aGlzLl9jb250cm9sLCB0aGlzKTtcbiAgfVxuXG4gIC8qKiBAbm9kb2MgKi9cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmVnaXN0cnkucmVtb3ZlKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIFwiY2hlY2tlZFwiIHByb3BlcnR5IHZhbHVlIG9uIHRoZSByYWRpbyBpbnB1dCBlbGVtZW50LlxuICAgKiBAbm9kb2NcbiAgICovXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3N0YXRlID0gdmFsdWUgPT09IHRoaXMudmFsdWU7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eSgnY2hlY2tlZCcsIHRoaXMuX3N0YXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCB2YWx1ZSBjaGFuZ2VzLlxuICAgKiBAbm9kb2NcbiAgICovXG4gIG92ZXJyaWRlIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5fZm4gPSBmbjtcbiAgICB0aGlzLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgZm4odGhpcy52YWx1ZSk7XG4gICAgICB0aGlzLl9yZWdpc3RyeS5zZWxlY3QodGhpcyk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBcInZhbHVlXCIgb24gdGhlIHJhZGlvIGlucHV0IGVsZW1lbnQgYW5kIHVuY2hlY2tzIGl0LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVcbiAgICovXG4gIGZpcmVVbmNoZWNrKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tOYW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm5hbWUgJiYgdGhpcy5mb3JtQ29udHJvbE5hbWUgJiYgdGhpcy5uYW1lICE9PSB0aGlzLmZvcm1Db250cm9sTmFtZSAmJlxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBbTmltYmxlXSBuZ0Rldk1vZGUgaXMgbm90IGRlZmluZWRcbiAgICAgICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgIHRocm93TmFtZUVycm9yKCk7XG4gICAgfVxuICAgIGlmICghdGhpcy5uYW1lICYmIHRoaXMuZm9ybUNvbnRyb2xOYW1lKSB0aGlzLm5hbWUgPSB0aGlzLmZvcm1Db250cm9sTmFtZTtcbiAgfVxufSJdfQ==
|