@ni/nimble-angular 30.9.0 → 30.9.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.
@@ -6,6 +6,9 @@ import * as i0 from "@angular/core";
6
6
  * Directive decorator based on CheckboxControlValueAccessor decorator in thirdparty/directives/checkbox_value_accessor
7
7
  */
8
8
  export declare class NimbleCheckboxControlValueAccessorDirective extends CheckboxControlValueAccessor {
9
+ private ignoreChangeEvents;
10
+ writeValue(value: unknown): void;
11
+ nimbleOnChange(event: Event): void;
9
12
  static ɵfac: i0.ɵɵFactoryDeclaration<NimbleCheckboxControlValueAccessorDirective, never>;
10
13
  static ɵdir: i0.ɵɵDirectiveDeclaration<NimbleCheckboxControlValueAccessorDirective, "nimble-checkbox[formControlName],nimble-checkbox[formControl],nimble-checkbox[ngModel]", never, {}, {}, never, never, false, never>;
11
14
  }
@@ -1,4 +1,4 @@
1
- import { Directive, forwardRef } from '@angular/core';
1
+ import { Directive, forwardRef, HostListener } from '@angular/core';
2
2
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { CheckboxControlValueAccessor } from '../../thirdparty/directives/checkbox_value_accessor';
4
4
  import * as i0 from "@angular/core";
@@ -8,8 +8,29 @@ import * as i0 from "@angular/core";
8
8
  * Directive decorator based on CheckboxControlValueAccessor decorator in thirdparty/directives/checkbox_value_accessor
9
9
  */
10
10
  export class NimbleCheckboxControlValueAccessorDirective extends CheckboxControlValueAccessor {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.ignoreChangeEvents = false;
14
+ }
15
+ writeValue(value) {
16
+ // Because the 'change' event is emitted from the checkbox when its value is set programmatically,
17
+ // ignore change events while writing the value. See https://github.com/ni/nimble/issues/2739
18
+ try {
19
+ this.ignoreChangeEvents = true;
20
+ super.writeValue(value);
21
+ }
22
+ finally {
23
+ this.ignoreChangeEvents = false;
24
+ }
25
+ }
26
+ nimbleOnChange(event) {
27
+ if (this.ignoreChangeEvents) {
28
+ return;
29
+ }
30
+ this.onChange(event.target.checked);
31
+ }
11
32
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NimbleCheckboxControlValueAccessorDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
12
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: NimbleCheckboxControlValueAccessorDirective, selector: "nimble-checkbox[formControlName],nimble-checkbox[formControl],nimble-checkbox[ngModel]", host: { listeners: { "change": "onChange($event.target.checked)", "blur": "onTouched()" } }, providers: [{
33
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: NimbleCheckboxControlValueAccessorDirective, selector: "nimble-checkbox[formControlName],nimble-checkbox[formControl],nimble-checkbox[ngModel]", host: { listeners: { "blur": "onTouched()", "change": "nimbleOnChange($event)" } }, providers: [{
13
34
  provide: NG_VALUE_ACCESSOR,
14
35
  useExisting: forwardRef(() => NimbleCheckboxControlValueAccessorDirective),
15
36
  multi: true
@@ -21,12 +42,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
21
42
  selector: 'nimble-checkbox[formControlName],nimble-checkbox[formControl],nimble-checkbox[ngModel]',
22
43
  // The following host metadata is duplicated from CheckboxControlValueAccessor
23
44
  // eslint-disable-next-line @angular-eslint/no-host-metadata-property, @typescript-eslint/naming-convention
24
- host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },
45
+ host: { '(blur)': 'onTouched()' },
25
46
  providers: [{
26
47
  provide: NG_VALUE_ACCESSOR,
27
48
  useExisting: forwardRef(() => NimbleCheckboxControlValueAccessorDirective),
28
49
  multi: true
29
50
  }]
30
51
  }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmltYmxlLWNoZWNrYm94LWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbmltYmxlLWFuZ3VsYXIvc3JjL2RpcmVjdGl2ZXMvY2hlY2tib3gvbmltYmxlLWNoZWNrYm94LWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOztBQUVuRzs7OztHQUlHO0FBYUgsTUFBTSxPQUFPLDJDQUE0QyxTQUFRLDRCQUE0QjsrR0FBaEYsMkNBQTJDO21HQUEzQywyQ0FBMkMsOE1BTnpDLENBQUM7Z0JBQ1IsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQztnQkFDMUUsS0FBSyxFQUFFLElBQUk7YUFDZCxDQUFDOzs0RkFFTywyQ0FBMkM7a0JBWnZELFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUNOLHdGQUF3RjtvQkFDMUYsOEVBQThFO29CQUM5RSwyR0FBMkc7b0JBQzNHLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxpQ0FBaUMsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO29CQUNoRixTQUFTLEVBQUUsQ0FBQzs0QkFDUixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0Q0FBNEMsQ0FBQzs0QkFDMUUsS0FBSyxFQUFFLElBQUk7eUJBQ2QsQ0FBQztpQkFDTCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi4vLi4vdGhpcmRwYXJ0eS9kaXJlY3RpdmVzL2NoZWNrYm94X3ZhbHVlX2FjY2Vzc29yJztcblxuLyoqXG4gKiBFeHRlbnNpb24gb2YgQW5ndWxhcidzIENoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3IgdG8gdGFyZ2V0IHRoZSBOaW1ibGUgY2hlY2tib3ggY29udHJvbC5cbiAqXG4gKiBEaXJlY3RpdmUgZGVjb3JhdG9yIGJhc2VkIG9uIENoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3IgZGVjb3JhdG9yIGluIHRoaXJkcGFydHkvZGlyZWN0aXZlcy9jaGVja2JveF92YWx1ZV9hY2Nlc3NvclxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjpcbiAgICAgICduaW1ibGUtY2hlY2tib3hbZm9ybUNvbnRyb2xOYW1lXSxuaW1ibGUtY2hlY2tib3hbZm9ybUNvbnRyb2xdLG5pbWJsZS1jaGVja2JveFtuZ01vZGVsXScsXG4gICAgLy8gVGhlIGZvbGxvd2luZyBob3N0IG1ldGFkYXRhIGlzIGR1cGxpY2F0ZWQgZnJvbSBDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5LCBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICBob3N0OiB7ICcoY2hhbmdlKSc6ICdvbkNoYW5nZSgkZXZlbnQudGFyZ2V0LmNoZWNrZWQpJywgJyhibHVyKSc6ICdvblRvdWNoZWQoKScgfSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOaW1ibGVDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlKSxcbiAgICAgICAgbXVsdGk6IHRydWVcbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBOaW1ibGVDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIGV4dGVuZHMgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciB7XG59XG4iXX0=
52
+ }], propDecorators: { nimbleOnChange: [{
53
+ type: HostListener,
54
+ args: ['change', ['$event']]
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmltYmxlLWNoZWNrYm94LWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbmltYmxlLWFuZ3VsYXIvc3JjL2RpcmVjdGl2ZXMvY2hlY2tib3gvbmltYmxlLWNoZWNrYm94LWNvbnRyb2wtdmFsdWUtYWNjZXNzb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUFHbkc7Ozs7R0FJRztBQWFILE1BQU0sT0FBTywyQ0FBNEMsU0FBUSw0QkFBNEI7SUFaN0Y7O1FBYVksdUJBQWtCLEdBQUcsS0FBSyxDQUFDO0tBb0J0QztJQWxCbUIsVUFBVSxDQUFDLEtBQWM7UUFDckMsa0dBQWtHO1FBQ2xHLDZGQUE2RjtRQUM3RixJQUFJLENBQUM7WUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQztnQkFBUyxDQUFDO1lBQ1AsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNwQyxDQUFDO0lBQ0wsQ0FBQztJQUdNLGNBQWMsQ0FBQyxLQUFZO1FBQzlCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFFLEtBQUssQ0FBQyxNQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELENBQUM7K0dBcEJRLDJDQUEyQzttR0FBM0MsMkNBQTJDLHFNQU56QyxDQUFDO2dCQUNSLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsMkNBQTJDLENBQUM7Z0JBQzFFLEtBQUssRUFBRSxJQUFJO2FBQ2QsQ0FBQzs7NEZBRU8sMkNBQTJDO2tCQVp2RCxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFDTix3RkFBd0Y7b0JBQzFGLDhFQUE4RTtvQkFDOUUsMkdBQTJHO29CQUMzRyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFO29CQUNqQyxTQUFTLEVBQUUsQ0FBQzs0QkFDUixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw0Q0FBNEMsQ0FBQzs0QkFDMUUsS0FBSyxFQUFFLElBQUk7eUJBQ2QsQ0FBQztpQkFDTDs4QkFnQlUsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi4vLi4vdGhpcmRwYXJ0eS9kaXJlY3RpdmVzL2NoZWNrYm94X3ZhbHVlX2FjY2Vzc29yJztcbmltcG9ydCB0eXBlIHsgQ2hlY2tib3ggfSBmcm9tICcuL25pbWJsZS1jaGVja2JveC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEV4dGVuc2lvbiBvZiBBbmd1bGFyJ3MgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciB0byB0YXJnZXQgdGhlIE5pbWJsZSBjaGVja2JveCBjb250cm9sLlxuICpcbiAqIERpcmVjdGl2ZSBkZWNvcmF0b3IgYmFzZWQgb24gQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciBkZWNvcmF0b3IgaW4gdGhpcmRwYXJ0eS9kaXJlY3RpdmVzL2NoZWNrYm94X3ZhbHVlX2FjY2Vzc29yXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOlxuICAgICAgJ25pbWJsZS1jaGVja2JveFtmb3JtQ29udHJvbE5hbWVdLG5pbWJsZS1jaGVja2JveFtmb3JtQ29udHJvbF0sbmltYmxlLWNoZWNrYm94W25nTW9kZWxdJyxcbiAgICAvLyBUaGUgZm9sbG93aW5nIGhvc3QgbWV0YWRhdGEgaXMgZHVwbGljYXRlZCBmcm9tIENoZWNrYm94Q29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHksIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIGhvc3Q6IHsgJyhibHVyKSc6ICdvblRvdWNoZWQoKScgfSxcbiAgICBwcm92aWRlcnM6IFt7XG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBOaW1ibGVDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlKSxcbiAgICAgICAgbXVsdGk6IHRydWVcbiAgICB9XVxufSlcbmV4cG9ydCBjbGFzcyBOaW1ibGVDaGVja2JveENvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlIGV4dGVuZHMgQ2hlY2tib3hDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgcHJpdmF0ZSBpZ25vcmVDaGFuZ2VFdmVudHMgPSBmYWxzZTtcblxuICAgIHB1YmxpYyBvdmVycmlkZSB3cml0ZVZhbHVlKHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gICAgICAgIC8vIEJlY2F1c2UgdGhlICdjaGFuZ2UnIGV2ZW50IGlzIGVtaXR0ZWQgZnJvbSB0aGUgY2hlY2tib3ggd2hlbiBpdHMgdmFsdWUgaXMgc2V0IHByb2dyYW1tYXRpY2FsbHksXG4gICAgICAgIC8vIGlnbm9yZSBjaGFuZ2UgZXZlbnRzIHdoaWxlIHdyaXRpbmcgdGhlIHZhbHVlLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL25pL25pbWJsZS9pc3N1ZXMvMjczOVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5pZ25vcmVDaGFuZ2VFdmVudHMgPSB0cnVlO1xuICAgICAgICAgICAgc3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICB0aGlzLmlnbm9yZUNoYW5nZUV2ZW50cyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgbmltYmxlT25DaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlnbm9yZUNoYW5nZUV2ZW50cykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub25DaGFuZ2UoKGV2ZW50LnRhcmdldCBhcyBDaGVja2JveCkuY2hlY2tlZCk7XG4gICAgfVxufVxuIl19
@@ -1922,8 +1922,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1922
1922
  * Directive decorator based on CheckboxControlValueAccessor decorator in thirdparty/directives/checkbox_value_accessor
1923
1923
  */
1924
1924
  class NimbleCheckboxControlValueAccessorDirective extends CheckboxControlValueAccessor {
1925
+ constructor() {
1926
+ super(...arguments);
1927
+ this.ignoreChangeEvents = false;
1928
+ }
1929
+ writeValue(value) {
1930
+ // Because the 'change' event is emitted from the checkbox when its value is set programmatically,
1931
+ // ignore change events while writing the value. See https://github.com/ni/nimble/issues/2739
1932
+ try {
1933
+ this.ignoreChangeEvents = true;
1934
+ super.writeValue(value);
1935
+ }
1936
+ finally {
1937
+ this.ignoreChangeEvents = false;
1938
+ }
1939
+ }
1940
+ nimbleOnChange(event) {
1941
+ if (this.ignoreChangeEvents) {
1942
+ return;
1943
+ }
1944
+ this.onChange(event.target.checked);
1945
+ }
1925
1946
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NimbleCheckboxControlValueAccessorDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
1926
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: NimbleCheckboxControlValueAccessorDirective, selector: "nimble-checkbox[formControlName],nimble-checkbox[formControl],nimble-checkbox[ngModel]", host: { listeners: { "change": "onChange($event.target.checked)", "blur": "onTouched()" } }, providers: [{
1947
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: NimbleCheckboxControlValueAccessorDirective, selector: "nimble-checkbox[formControlName],nimble-checkbox[formControl],nimble-checkbox[ngModel]", host: { listeners: { "blur": "onTouched()", "change": "nimbleOnChange($event)" } }, providers: [{
1927
1948
  provide: NG_VALUE_ACCESSOR,
1928
1949
  useExisting: forwardRef(() => NimbleCheckboxControlValueAccessorDirective),
1929
1950
  multi: true
@@ -1935,14 +1956,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
1935
1956
  selector: 'nimble-checkbox[formControlName],nimble-checkbox[formControl],nimble-checkbox[ngModel]',
1936
1957
  // The following host metadata is duplicated from CheckboxControlValueAccessor
1937
1958
  // eslint-disable-next-line @angular-eslint/no-host-metadata-property, @typescript-eslint/naming-convention
1938
- host: { '(change)': 'onChange($event.target.checked)', '(blur)': 'onTouched()' },
1959
+ host: { '(blur)': 'onTouched()' },
1939
1960
  providers: [{
1940
1961
  provide: NG_VALUE_ACCESSOR,
1941
1962
  useExisting: forwardRef(() => NimbleCheckboxControlValueAccessorDirective),
1942
1963
  multi: true
1943
1964
  }]
1944
1965
  }]
1945
- }] });
1966
+ }], propDecorators: { nimbleOnChange: [{
1967
+ type: HostListener,
1968
+ args: ['change', ['$event']]
1969
+ }] } });
1946
1970
 
1947
1971
  /**
1948
1972
  * Directive to provide Angular integration for the checkbox.