checkbox-selection-input 15.0.4

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/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # CheckboxSelectionInput
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 16.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project checkbox-selection-input` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project checkbox-selection-input`.
8
+ > Note: Don't forget to add `--project checkbox-selection-input` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build checkbox-selection-input` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build checkbox-selection-input`, go to the dist folder `cd dist/checkbox-selection-input` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test checkbox-selection-input` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0L3NyYy9jaGVja2JveC1zZWxlY3Rpb24taW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,137 @@
1
+ import { Component, inject } from '@angular/core';
2
+ import { FormBuilder, Validators } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "@angular/material/button";
7
+ import * as i4 from "@angular/material/form-field";
8
+ import * as i5 from "@angular/material/button-toggle";
9
+ import * as i6 from "@angular/material/divider";
10
+ import * as i7 from "@angular/material/slide-toggle";
11
+ import * as i8 from "../checkbox-selection-input/checkbox-selection-input.component";
12
+ export class CheckboxSelectionDemoComponent {
13
+ constructor() {
14
+ this.fb = inject(FormBuilder);
15
+ this.data_1 = [
16
+ { id: 11, value: 'Telus', selected: true },
17
+ { id: 12, value: 'AT&T', disabled: true },
18
+ { id: 14, value: 'Bell', selected: true },
19
+ { id: 63, value: 'Rogers', selected: true }
20
+ ];
21
+ this.data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers'];
22
+ this.data = this.data_2;
23
+ // CHECKBOX
24
+ this.selectionControl_1 = this.fb.control(null);
25
+ this.selectionControl_2 = this.fb.control(null, Validators.required);
26
+ this.selectionControl_3 = this.fb.control(null, Validators.required);
27
+ this.selectionControl_4 = this.fb.control(null, Validators.required);
28
+ this.selectionControl_5 = this.fb.control(null, Validators.required);
29
+ this.selectionControl_6 = this.fb.control(null, Validators.required);
30
+ //CHANGE
31
+ this.changeDetection_1 = this.fb.control(null);
32
+ this.changeDetection_2 = this.fb.control(null);
33
+ this.changeDetection_3 = this.fb.control(null);
34
+ this.changeDetection_4 = this.fb.control(null);
35
+ this.changeDetection_5 = this.fb.control(null);
36
+ this.changeDetection_6 = this.fb.control(null);
37
+ }
38
+ ngOnInit() {
39
+ // CHECKBOX
40
+ this.selectionControl_1.valueChanges.subscribe(data => {
41
+ if (this.changeDetection_1.value)
42
+ console.log('CHANGE:', data);
43
+ });
44
+ this.selectionControl_2.valueChanges.subscribe(data => {
45
+ if (this.changeDetection_2.value)
46
+ console.log('CHANGE:', data);
47
+ });
48
+ this.selectionControl_3.valueChanges.subscribe(data => {
49
+ if (this.changeDetection_3.value)
50
+ console.log('CHANGE:', data);
51
+ });
52
+ this.selectionControl_4.valueChanges.subscribe(data => {
53
+ if (this.changeDetection_4.value)
54
+ console.log('CHANGE:', data);
55
+ });
56
+ this.selectionControl_5.valueChanges.subscribe(data => {
57
+ if (this.changeDetection_5.value)
58
+ console.log('CHANGE:', data);
59
+ });
60
+ this.selectionControl_6.valueChanges.subscribe(data => {
61
+ if (this.changeDetection_6.value)
62
+ console.log('CHANGE:', data);
63
+ });
64
+ }
65
+ // DISABLE
66
+ onDisabled_1(disable) {
67
+ if (disable) {
68
+ this.selectionControl_1.disable();
69
+ }
70
+ else {
71
+ this.selectionControl_1.enable();
72
+ }
73
+ }
74
+ onDisabled_2(disable) {
75
+ if (disable) {
76
+ this.selectionControl_2.disable();
77
+ }
78
+ else {
79
+ this.selectionControl_2.enable();
80
+ }
81
+ }
82
+ onDisabled_3(disable) {
83
+ if (disable) {
84
+ this.selectionControl_3.disable();
85
+ }
86
+ else {
87
+ this.selectionControl_3.enable();
88
+ }
89
+ }
90
+ onDisabled_4(disable) {
91
+ if (disable) {
92
+ this.selectionControl_4.disable();
93
+ }
94
+ else {
95
+ this.selectionControl_4.enable();
96
+ }
97
+ }
98
+ onDisabled_5(disable) {
99
+ if (disable) {
100
+ this.selectionControl_5.disable();
101
+ }
102
+ else {
103
+ this.selectionControl_5.enable();
104
+ }
105
+ }
106
+ onDisabled_6(disable) {
107
+ if (disable) {
108
+ this.selectionControl_6.disable();
109
+ }
110
+ else {
111
+ this.selectionControl_6.enable();
112
+ }
113
+ }
114
+ onPerformPatch() {
115
+ this.selectionControl_1.patchValue(['Bell', 'Rogers']);
116
+ this.selectionControl_2.patchValue(['Bell', 'Telus']);
117
+ this.selectionControl_3.patchValue(['Telus', 'Bell']);
118
+ this.selectionControl_4.patchValue(['Rogers']);
119
+ this.selectionControl_5.patchValue(['Rogers']);
120
+ this.selectionControl_6.patchValue(['Telus', 'Bell', 'Rogers']);
121
+ }
122
+ onChangeDataType(type) {
123
+ if (type === 'strings') {
124
+ this.data = this.data_2;
125
+ }
126
+ else {
127
+ this.data = this.data_1;
128
+ }
129
+ }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxSelectionDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckboxSelectionDemoComponent, selector: "app-checkbox-selection-demo", ngImport: i0, template: "<div style=\"display: flex;\">\n <h1>Checkbox FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n <mat-button-toggle-group #varTypes=\"matButtonToggleGroup\" (change)=\"onChangeDataType(varTypes.value)\">\n <mat-button-toggle value=\"strings\" checked=\"true\">Strings</mat-button-toggle>\n <mat-button-toggle value=\"objects\" checked=\"false\">Objects</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</div>\n\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n </div>\n <app-checkbox-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n </app-checkbox-selection-input>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Checkbox Selection - {{ varTypes.value | uppercase }}</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-checkbox-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n No Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Selections\"\n placeholder=\"My placeholder\"\n [formControl]=\"selectionControl_2\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error2.checked\">\n <mat-error *ngIf=\"selectionControl_2.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label and Placeholder<br>\n Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Providers\"\n [formControl]=\"selectionControl_3\"\n [minSelection]=\"2\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('minRequired')\">Minimum of 1 required</mat-error>\n <mat-error *ngIf=\"selectionControl_3.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_3\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_3(disable3.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label<br>\n Minimum of 2 Required<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_4.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Providers\"\n [formControl]=\"selectionControl_4\"\n [maxSelection]=\"2\"\n [disableMax]=\"false\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error4.checked\">\n <mat-error *ngIf=\"selectionControl_4.hasError('maxExceeded')\">Maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_4.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_4\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error4>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable4 (change)=\"onDisabled_4(disable4.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label<br>\n Maximum of 2 Required<br>\n Valid {{ selectionControl_4.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_5.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Providers\"\n [formControl]=\"selectionControl_5\"\n [maxSelection]=\"2\"\n [disableMax]=\"true\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error5.checked\">\n <mat-error *ngIf=\"selectionControl_5.hasError('maxExceeded')\">Maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_5.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_5\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error5>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable5 (change)=\"onDisabled_5(disable5.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label<br>\n Maximum of 2 Required<br>\n Disable if Max Reached<br>\n Valid {{ selectionControl_5.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_6.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Providers\"\n [formControl]=\"selectionControl_6\"\n [minSelection]=\"1\"\n [maxSelection]=\"2\"\n [disableMax]=\"true\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error6.checked\">\n <mat-error *ngIf=\"selectionControl_6.hasError('minRequired')\">Minimum of 1 required</mat-error>\n <mat-error *ngIf=\"selectionControl_6.hasError('maxExceeded')\">Maximum reached</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_6\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error6>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable6 (change)=\"onDisabled_6(disable6.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label<br>\n Minimum of 1 Required<br>\n Maximum of 2 Required<br>\n Disable if Max Reached<br>\n Valid {{ selectionControl_6.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i5.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i8.CheckboxSelectionInputComponent, selector: "app-checkbox-selection-input", inputs: ["label", "placeholder", "error", "disableMax", "useDefaultReset", "minSelection", "maxSelection", "data"], outputs: ["selectionChange"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }] }); }
132
+ }
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxSelectionDemoComponent, decorators: [{
134
+ type: Component,
135
+ args: [{ selector: 'app-checkbox-selection-demo', template: "<div style=\"display: flex;\">\n <h1>Checkbox FormControl</h1>\n <div style=\"flex:1; text-align: right;\">\n <div style=\"display: flex; gap: 2rem; flex-direction: row-reverse;\">\n <mat-button-toggle (click)=\"onPerformPatch()\">Patch</mat-button-toggle>\n <mat-button-toggle-group #varTypes=\"matButtonToggleGroup\" (change)=\"onChangeDataType(varTypes.value)\">\n <mat-button-toggle value=\"strings\" checked=\"true\">Strings</mat-button-toggle>\n <mat-button-toggle value=\"objects\" checked=\"false\">Objects</mat-button-toggle>\n </mat-button-toggle-group>\n </div>\n </div>\n</div>\n\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n </div>\n <app-checkbox-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n </app-checkbox-selection-input>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Checkbox Selection - {{ varTypes.value | uppercase }}</h3>\n\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_1.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-checkbox-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #disable1 (change)=\"onDisabled_1(disable1.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n No Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_2.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Selections\"\n placeholder=\"My placeholder\"\n [formControl]=\"selectionControl_2\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error2.checked\">\n <mat-error *ngIf=\"selectionControl_2.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_2\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error2>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable2 (change)=\"onDisabled_2(disable2.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label and Placeholder<br>\n Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_3.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Providers\"\n [formControl]=\"selectionControl_3\"\n [minSelection]=\"2\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error3.checked\">\n <mat-error *ngIf=\"selectionControl_3.hasError('minRequired')\">Minimum of 1 required</mat-error>\n <mat-error *ngIf=\"selectionControl_3.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_3\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error3>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable3 (change)=\"onDisabled_3(disable3.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label<br>\n Minimum of 2 Required<br>\n Valid {{ selectionControl_3.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_4.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Providers\"\n [formControl]=\"selectionControl_4\"\n [maxSelection]=\"2\"\n [disableMax]=\"false\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error4.checked\">\n <mat-error *ngIf=\"selectionControl_4.hasError('maxExceeded')\">Maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_4.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_4\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error4>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable4 (change)=\"onDisabled_4(disable4.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label<br>\n Maximum of 2 Required<br>\n Valid {{ selectionControl_4.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_5.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Providers\"\n [formControl]=\"selectionControl_5\"\n [maxSelection]=\"2\"\n [disableMax]=\"true\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error5.checked\">\n <mat-error *ngIf=\"selectionControl_5.hasError('maxExceeded')\">Maximum reached</mat-error>\n <mat-error *ngIf=\"selectionControl_5.hasError('required')\">This field is Required</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_5\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error5>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable5 (change)=\"onDisabled_5(disable5.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label<br>\n Maximum of 2 Required<br>\n Disable if Max Reached<br>\n Valid {{ selectionControl_5.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n\n\n<div>\n <div style=\"display: flex;\">\n <span style=\"flex:1\"></span>\n <button mat-button (click)=\"selectionControl_6.reset()\">Reset</button>\n </div>\n <app-checkbox-selection-input\n [data]=\"data\"\n label=\"Providers\"\n [formControl]=\"selectionControl_6\"\n [minSelection]=\"1\"\n [maxSelection]=\"2\"\n [disableMax]=\"true\"\n ></app-checkbox-selection-input>\n <div *ngIf=\"error6.checked\">\n <mat-error *ngIf=\"selectionControl_6.hasError('minRequired')\">Minimum of 1 required</mat-error>\n <mat-error *ngIf=\"selectionControl_6.hasError('maxExceeded')\">Maximum reached</mat-error>\n </div>\n <div style=\"display: flex; gap: 2rem; margin-top: 2rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_6\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error6>Display Error</mat-slide-toggle>\n <mat-slide-toggle #disable6 (change)=\"onDisabled_6(disable6.checked)\">Disable</mat-slide-toggle>\n <span style=\"flex:1\"></span>\n </div>\n <div style=\"margin-top: 2rem;\">\n Label<br>\n Minimum of 1 Required<br>\n Maximum of 2 Required<br>\n Disable if Max Reached<br>\n Valid {{ selectionControl_6.valid }}<br>\n </div>\n <div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n </div>\n</div>\n" }]
136
+ }], ctorParameters: function () { return []; } });
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGVja2JveC1zZWxlY3Rpb24taW5wdXQvc3JjL2xpYi9jaGVja2JveC1kZW1vL2NoZWNrYm94LWRlbW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0L3NyYy9saWIvY2hlY2tib3gtZGVtby9jaGVja2JveC1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPekQsTUFBTSxPQUFPLDhCQUE4QjtJQWdDekM7UUE5QkEsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUV4QixXQUFNLEdBQUc7WUFDUCxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQzFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7WUFDekMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBQztZQUN4QyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1NBQzNDLENBQUE7UUFFRCxXQUFNLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUU1QyxTQUFJLEdBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUV4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cnQgeyBDb21wb25lbnQsIE9uSW5pdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoZWNrYm94LXNlbGVjdGlvbi1kZW1vJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LWRlbW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1kZW1vLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hTZWxlY3Rpb25EZW1vQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBmYiA9IGluamVjdChGb3JtQnVpbGRlcilcblxuICBkYXRhXzEgPSBbXG4gICAgeyBpZDogMTEsIHZhbHVlOiAnVGVsdXMnLCBzZWxlY3RlZDogdHJ1ZSB9LFxuICAgIHsgaWQ6IDEyLCB2YWx1ZTogJ0FUJlQnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgIHsgaWQ6IDE0LCB2YWx1ZTogJ0JlbGwnLCBzZWxlY3RlZDogdHJ1ZX0sXG4gICAgeyBpZDogNjMsIHZhbHVlOiAnUm9nZXJzJywgc2VsZWN0ZWQ6IHRydWUgfVxuICAgXVxuXG4gICBkYXRhXzIgPSBbJ1RlbHVzJywgJ0FUJlQnLCAnQmVsbCcsICdSb2dlcnMnXVxuXG4gICBkYXRhOiBhbnkgPSB0aGlzLmRhdGFfMlxuXG4gIC8vICBDSEVDS0JPWFxuICBzZWxlY3Rpb25Db250cm9sXzEgPSB0aGlzLmZiLmNvbnRyb2w8YW55W118bnVsbD4obnVsbClcbiAgc2VsZWN0aW9uQ29udHJvbF8yID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gIHNlbGVjdGlvbkNvbnRyb2xfMyA9IHRoaXMuZmIuY29udHJvbDxhbnlbXXxudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuICBzZWxlY3Rpb25Db250cm9sXzQgPSB0aGlzLmZiLmNvbnRyb2w8YW55W118bnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgc2VsZWN0aW9uQ29udHJvbF81ID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gIHNlbGVjdGlvbkNvbnRyb2xfNiA9IHRoaXMuZmIuY29udHJvbDxhbnlbXXxudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuXG4gIC8vQ0hBTkdFXG4gIGNoYW5nZURldGVjdGlvbl8xID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG4gIGNoYW5nZURldGVjdGlvbl8yID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG4gIGNoYW5nZURldGVjdGlvbl8zID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG4gIGNoYW5nZURldGVjdGlvbl80ID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG4gIGNoYW5nZURldGVjdGlvbl81ID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG4gIGNoYW5nZURldGVjdGlvbl82ID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG5cblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgLy8gQ0hFQ0tCT1hcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgaWYodGhpcy5jaGFuZ2VEZXRlY3Rpb25fMS52YWx1ZSkgY29uc29sZS5sb2coJ0NIQU5HRTonLGRhdGEpXG4gICAgfSlcblxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8yLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICBpZih0aGlzLmNoYW5nZURldGVjdGlvbl8yLnZhbHVlKSBjb25zb2xlLmxvZygnQ0hBTkdFOicsZGF0YSlcbiAgICB9KVxuXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzMudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIGlmKHRoaXMuY2hhbmdlRGV0ZWN0aW9uXzMudmFsdWUpIGNvbnNvbGUubG9nKCdDSEFOR0U6JyxkYXRhKVxuICAgIH0pXG5cbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfNC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgaWYodGhpcy5jaGFuZ2VEZXRlY3Rpb25fNC52YWx1ZSkgY29uc29sZS5sb2coJ0NIQU5HRTonLGRhdGEpXG4gICAgfSlcblxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF81LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICBpZih0aGlzLmNoYW5nZURldGVjdGlvbl81LnZhbHVlKSBjb25zb2xlLmxvZygnQ0hBTkdFOicsZGF0YSlcbiAgICB9KVxuXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzYudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIGlmKHRoaXMuY2hhbmdlRGV0ZWN0aW9uXzYudmFsdWUpIGNvbnNvbGUubG9nKCdDSEFOR0U6JyxkYXRhKVxuICAgIH0pXG4gIH1cblxuICAvLyBESVNBQkxFXG4gIG9uRGlzYWJsZWRfMShkaXNhYmxlOiBib29sZWFuKSB7XG5cbiAgICBpZihkaXNhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMS5kaXNhYmxlKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzEuZW5hYmxlKClcbiAgICB9XG5cbiAgfVxuXG4gIG9uRGlzYWJsZWRfMihkaXNhYmxlOiBib29sZWFuKSB7XG5cbiAgICBpZihkaXNhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMi5kaXNhYmxlKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzIuZW5hYmxlKClcbiAgICB9XG5cbiAgfVxuXG4gIG9uRGlzYWJsZWRfMyhkaXNhYmxlOiBib29sZWFuKSB7XG5cbiAgICBpZihkaXNhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMy5kaXNhYmxlKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzMuZW5hYmxlKClcbiAgICB9XG5cbiAgfVxuXG4gIG9uRGlzYWJsZWRfNChkaXNhYmxlOiBib29sZWFuKSB7XG5cbiAgICBpZihkaXNhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfNC5kaXNhYmxlKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzQuZW5hYmxlKClcbiAgICB9XG5cbiAgfVxuXG4gIG9uRGlzYWJsZWRfNShkaXNhYmxlOiBib29sZWFuKSB7XG5cbiAgICBpZihkaXNhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfNS5kaXNhYmxlKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzUuZW5hYmxlKClcbiAgICB9XG5cbiAgfVxuXG4gIG9uRGlzYWJsZWRfNihkaXNhYmxlOiBib29sZWFuKSB7XG5cbiAgICBpZihkaXNhYmxlKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfNi5kaXNhYmxlKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzYuZW5hYmxlKClcbiAgICB9XG5cbiAgfVxuXG4gIG9uUGVyZm9ybVBhdGNoKCkge1xuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8xLnBhdGNoVmFsdWUoWydCZWxsJywgJ1JvZ2VycyddKVxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8yLnBhdGNoVmFsdWUoWydCZWxsJywgJ1RlbHVzJ10pXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzMucGF0Y2hWYWx1ZShbJ1RlbHVzJywgJ0JlbGwnXSlcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfNC5wYXRjaFZhbHVlKFsnUm9nZXJzJ10pXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzUucGF0Y2hWYWx1ZShbJ1JvZ2VycyddKVxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF82LnBhdGNoVmFsdWUoWydUZWx1cycsICdCZWxsJywgJ1JvZ2VycyddKVxuICB9XG5cbiAgb25DaGFuZ2VEYXRhVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICBpZih0eXBlID09PSAnc3RyaW5ncycpIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YV8yXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZGF0YV8xXG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICA8aDE+Q2hlY2tib3ggRm9ybUNvbnRyb2w8L2gxPlxuICA8ZGl2IHN0eWxlPVwiZmxleDoxOyB0ZXh0LWFsaWduOiByaWdodDtcIj5cbiAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAycmVtOyBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2U7XCI+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgKGNsaWNrKT1cIm9uUGVyZm9ybVBhdGNoKClcIj5QYXRjaDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgI3ZhclR5cGVzPVwibWF0QnV0dG9uVG9nZ2xlR3JvdXBcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlRGF0YVR5cGUodmFyVHlwZXMudmFsdWUpXCI+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cInN0cmluZ3NcIiBjaGVja2VkPVwidHJ1ZVwiPlN0cmluZ3M8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgICAgICA8bWF0LWJ1dHRvbi10b2dnbGUgdmFsdWU9XCJvYmplY3RzXCIgY2hlY2tlZD1cImZhbHNlXCI+T2JqZWN0czwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5cbjxkaXY+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGFwcC1jaGVja2JveC1zZWxlY3Rpb24taW5wdXQgZXJyb3I9XCJObyBEYXRhIFByb3ZpZGVkXCI+XG4gICAgPGgzIHN0eWxlPVwiY29sb3I6IHJlZDsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMDtcIj5ObyBEYXRhPC9oMz5cbiAgPC9hcHAtY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0PlxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogLjVyZW07IG1hcmdpbi1ib3R0b206IDFyZW07XCI+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXY+XG4gIDxoMyBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDA7XCI+Q2hlY2tib3ggU2VsZWN0aW9uIC0ge3sgdmFyVHlwZXMudmFsdWUgfCB1cHBlcmNhc2UgfX08L2gzPlxuXG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwic2VsZWN0aW9uQ29udHJvbF8xLnJlc2V0KClcIj5SZXNldDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGFwcC1jaGVja2JveC1zZWxlY3Rpb24taW5wdXRcbiAgICBbZGF0YV09XCJkYXRhXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0aW9uQ29udHJvbF8xXCJcbiAgICA+PC9hcHAtY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0PlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAycmVtOyBtYXJnaW4tdG9wOiAycmVtO1wiPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtmb3JtQ29udHJvbF09XCJjaGFuZ2VEZXRlY3Rpb25fMVwiPkNoYW5nZSBEZXRlY3Rpb248L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2Rpc2FibGUxIChjaGFuZ2UpPVwib25EaXNhYmxlZF8xKGRpc2FibGUxLmNoZWNrZWQpXCI+RGlzYWJsZTwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAycmVtO1wiPlxuICAgIE5vIExhYmVsIGFuZCBQbGFjZWhvbGRlcjxicj5cbiAgICBOb3QgUmVxdWlyZWQ8YnI+XG4gICAgVmFsaWQge3sgc2VsZWN0aW9uQ29udHJvbF8xLnZhbGlkIH19PGJyPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2PlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cbiAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPjwvc3Bhbj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInNlbGVjdGlvbkNvbnRyb2xfMi5yZXNldCgpXCI+UmVzZXQ8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxhcHAtY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0XG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgbGFiZWw9XCJTZWxlY3Rpb25zXCJcbiAgICBwbGFjZWhvbGRlcj1cIk15IHBsYWNlaG9sZGVyXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0aW9uQ29udHJvbF8yXCJcbiAgICA+PC9hcHAtY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IyLmNoZWNrZWRcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VsZWN0aW9uQ29udHJvbF8yLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+VGhpcyBmaWVsZCBpcyBSZXF1aXJlZDwvbWF0LWVycm9yPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnJlbTsgbWFyZ2luLXRvcDogMnJlbTtcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbZm9ybUNvbnRyb2xdPVwiY2hhbmdlRGV0ZWN0aW9uXzJcIj5DaGFuZ2UgRGV0ZWN0aW9uPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNlcnJvcjI+RGlzcGxheSBFcnJvcjwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjZGlzYWJsZTIgKGNoYW5nZSk9XCJvbkRpc2FibGVkXzIoZGlzYWJsZTIuY2hlY2tlZClcIj5EaXNhYmxlPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgTGFiZWwgYW5kIFBsYWNlaG9sZGVyPGJyPlxuICAgIFJlcXVpcmVkPGJyPlxuICAgIFZhbGlkIHt7IHNlbGVjdGlvbkNvbnRyb2xfMi52YWxpZCB9fTxicj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAuNXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTtcIj5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdj5cbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3Rpb25Db250cm9sXzMucmVzZXQoKVwiPlJlc2V0PC9idXR0b24+XG4gIDwvZGl2PlxuICA8YXBwLWNoZWNrYm94LXNlbGVjdGlvbi1pbnB1dFxuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIGxhYmVsPVwiUHJvdmlkZXJzXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0aW9uQ29udHJvbF8zXCJcbiAgICBbbWluU2VsZWN0aW9uXT1cIjJcIlxuICA+PC9hcHAtY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3IzLmNoZWNrZWRcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VsZWN0aW9uQ29udHJvbF8zLmhhc0Vycm9yKCdtaW5SZXF1aXJlZCcpXCI+TWluaW11bSBvZiAxIHJlcXVpcmVkPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGlvbkNvbnRyb2xfMy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlRoaXMgZmllbGQgaXMgUmVxdWlyZWQ8L21hdC1lcnJvcj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDJyZW07IG1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgW2Zvcm1Db250cm9sXT1cImNoYW5nZURldGVjdGlvbl8zXCI+Q2hhbmdlIERldGVjdGlvbjwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjZXJyb3IzPkRpc3BsYXkgRXJyb3I8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2Rpc2FibGUzIChjaGFuZ2UpPVwib25EaXNhYmxlZF8zKGRpc2FibGUzLmNoZWNrZWQpXCI+RGlzYWJsZTwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAycmVtO1wiPlxuICAgIExhYmVsPGJyPlxuICAgIE1pbmltdW0gb2YgMiBSZXF1aXJlZDxicj5cbiAgICBWYWxpZCB7eyBzZWxlY3Rpb25Db250cm9sXzMudmFsaWQgfX08YnI+XG4gIDwvZGl2PlxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogLjVyZW07IG1hcmdpbi1ib3R0b206IDFyZW07XCI+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPGRpdj5cbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3Rpb25Db250cm9sXzQucmVzZXQoKVwiPlJlc2V0PC9idXR0b24+XG4gIDwvZGl2PlxuICA8YXBwLWNoZWNrYm94LXNlbGVjdGlvbi1pbnB1dFxuICAgIFtkYXRhXT1cImRhdGFcIlxuICAgIGxhYmVsPVwiUHJvdmlkZXJzXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0aW9uQ29udHJvbF80XCJcbiAgICBbbWF4U2VsZWN0aW9uXT1cIjJcIlxuICAgIFtkaXNhYmxlTWF4XT1cImZhbHNlXCJcbiAgPjwvYXBwLWNoZWNrYm94LXNlbGVjdGlvbi1pbnB1dD5cbiAgPGRpdiAqbmdJZj1cImVycm9yNC5jaGVja2VkXCI+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGlvbkNvbnRyb2xfNC5oYXNFcnJvcignbWF4RXhjZWVkZWQnKVwiPk1heGltdW0gcmVhY2hlZDwvbWF0LWVycm9yPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZWxlY3Rpb25Db250cm9sXzQuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5UaGlzIGZpZWxkIGlzIFJlcXVpcmVkPC9tYXQtZXJyb3I+XG4gIDwvZGl2PlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiAycmVtOyBtYXJnaW4tdG9wOiAycmVtO1wiPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFtmb3JtQ29udHJvbF09XCJjaGFuZ2VEZXRlY3Rpb25fNFwiPkNoYW5nZSBEZXRlY3Rpb248L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2Vycm9yND5EaXNwbGF5IEVycm9yPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNkaXNhYmxlNCAoY2hhbmdlKT1cIm9uRGlzYWJsZWRfNChkaXNhYmxlNC5jaGVja2VkKVwiPkRpc2FibGU8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPHNwYW4gc3R5bGU9XCJmbGV4OjFcIj48L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogMnJlbTtcIj5cbiAgICBMYWJlbDxicj5cbiAgICBNYXhpbXVtIG9mIDIgUmVxdWlyZWQ8YnI+XG4gICAgVmFsaWQge3sgc2VsZWN0aW9uQ29udHJvbF80LnZhbGlkIH19PGJyPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2PlxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cbiAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPjwvc3Bhbj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInNlbGVjdGlvbkNvbnRyb2xfNS5yZXNldCgpXCI+UmVzZXQ8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxhcHAtY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0XG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgbGFiZWw9XCJQcm92aWRlcnNcIlxuICAgIFtmb3JtQ29udHJvbF09XCJzZWxlY3Rpb25Db250cm9sXzVcIlxuICAgIFttYXhTZWxlY3Rpb25dPVwiMlwiXG4gICAgW2Rpc2FibGVNYXhdPVwidHJ1ZVwiXG4gID48L2FwcC1jaGVja2JveC1zZWxlY3Rpb24taW5wdXQ+XG4gIDxkaXYgKm5nSWY9XCJlcnJvcjUuY2hlY2tlZFwiPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJzZWxlY3Rpb25Db250cm9sXzUuaGFzRXJyb3IoJ21heEV4Y2VlZGVkJylcIj5NYXhpbXVtIHJlYWNoZWQ8L21hdC1lcnJvcj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VsZWN0aW9uQ29udHJvbF81Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+VGhpcyBmaWVsZCBpcyBSZXF1aXJlZDwvbWF0LWVycm9yPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnJlbTsgbWFyZ2luLXRvcDogMnJlbTtcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbZm9ybUNvbnRyb2xdPVwiY2hhbmdlRGV0ZWN0aW9uXzVcIj5DaGFuZ2UgRGV0ZWN0aW9uPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNlcnJvcjU+RGlzcGxheSBFcnJvcjwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjZGlzYWJsZTUgKGNoYW5nZSk9XCJvbkRpc2FibGVkXzUoZGlzYWJsZTUuY2hlY2tlZClcIj5EaXNhYmxlPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgTGFiZWw8YnI+XG4gICAgTWF4aW11bSBvZiAyIFJlcXVpcmVkPGJyPlxuICAgIERpc2FibGUgaWYgTWF4IFJlYWNoZWQ8YnI+XG4gICAgVmFsaWQge3sgc2VsZWN0aW9uQ29udHJvbF81LnZhbGlkIH19PGJyPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG5cbjxkaXY+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwic2VsZWN0aW9uQ29udHJvbF82LnJlc2V0KClcIj5SZXNldDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGFwcC1jaGVja2JveC1zZWxlY3Rpb24taW5wdXRcbiAgICBbZGF0YV09XCJkYXRhXCJcbiAgICBsYWJlbD1cIlByb3ZpZGVyc1wiXG4gICAgW2Zvcm1Db250cm9sXT1cInNlbGVjdGlvbkNvbnRyb2xfNlwiXG4gICAgW21pblNlbGVjdGlvbl09XCIxXCJcbiAgICBbbWF4U2VsZWN0aW9uXT1cIjJcIlxuICAgIFtkaXNhYmxlTWF4XT1cInRydWVcIlxuICA+PC9hcHAtY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0PlxuICA8ZGl2ICpuZ0lmPVwiZXJyb3I2LmNoZWNrZWRcIj5cbiAgICA8bWF0LWVycm9yICpuZ0lmPVwic2VsZWN0aW9uQ29udHJvbF82Lmhhc0Vycm9yKCdtaW5SZXF1aXJlZCcpXCI+TWluaW11bSBvZiAxIHJlcXVpcmVkPC9tYXQtZXJyb3I+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGlvbkNvbnRyb2xfNi5oYXNFcnJvcignbWF4RXhjZWVkZWQnKVwiPk1heGltdW0gcmVhY2hlZDwvbWF0LWVycm9yPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogMnJlbTsgbWFyZ2luLXRvcDogMnJlbTtcIj5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbZm9ybUNvbnRyb2xdPVwiY2hhbmdlRGV0ZWN0aW9uXzZcIj5DaGFuZ2UgRGV0ZWN0aW9uPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxtYXQtc2xpZGUtdG9nZ2xlICNlcnJvcjY+RGlzcGxheSBFcnJvcjwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjZGlzYWJsZTYgKGNoYW5nZSk9XCJvbkRpc2FibGVkXzYoZGlzYWJsZTYuY2hlY2tlZClcIj5EaXNhYmxlPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgTGFiZWw8YnI+XG4gICAgTWluaW11bSBvZiAxIFJlcXVpcmVkPGJyPlxuICAgIE1heGltdW0gb2YgMiBSZXF1aXJlZDxicj5cbiAgICBEaXNhYmxlIGlmIE1heCBSZWFjaGVkPGJyPlxuICAgIFZhbGlkIHt7IHNlbGVjdGlvbkNvbnRyb2xfNi52YWxpZCB9fTxicj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAuNXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTtcIj5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,198 @@
1
+ import { Component, EventEmitter, Input, Output, forwardRef, inject } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR, FormBuilder, NG_VALIDATORS, Validators } from '@angular/forms';
3
+ import { SelectionItem } from '../models/selection-item.model';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@angular/material/form-field";
8
+ import * as i4 from "@angular/material/checkbox";
9
+ export class CheckboxSelectionInputComponent {
10
+ set minSelection(value) {
11
+ this._minSelection = (value) ? value : 0;
12
+ }
13
+ get minSelection() {
14
+ return this._minSelection;
15
+ }
16
+ set maxSelection(value) {
17
+ this._maxSelection = (value) ? value : 0;
18
+ }
19
+ get maxSelection() {
20
+ return this._maxSelection;
21
+ }
22
+ set data(value) {
23
+ this.selectionControl = this.fb.group({});
24
+ this.isObjects = this.hasObjects(value);
25
+ this.raw = value;
26
+ this._data = (value) ? value.map(item => SelectionItem.adapt(item)) : [];
27
+ const selected = this.data.filter(item => item.selected).length;
28
+ if (this.maxSelection > 0 && selected >= this.maxSelection) {
29
+ for (let index = this.maxSelection + 1; index < this.data.length; index++) {
30
+ this.data[index].selected = false;
31
+ }
32
+ }
33
+ this.data.map(item => {
34
+ const disabled = (item?.disabled) ? item.disabled : false;
35
+ const selected = (item?.selected) ? item.selected : false;
36
+ const newControl = this.fb.control({ value: selected, disabled }, Validators.required);
37
+ this.selectionControl.addControl(item.value, newControl);
38
+ });
39
+ this.initSelection();
40
+ }
41
+ get data() {
42
+ return this._data;
43
+ }
44
+ constructor() {
45
+ this.fb = inject(FormBuilder);
46
+ this.selectionControl = this.fb.group({});
47
+ this.disableMax = false;
48
+ this.useDefaultReset = false;
49
+ this._minSelection = 0;
50
+ this._maxSelection = 0;
51
+ this.isObjects = false;
52
+ this.formInitialized = false;
53
+ this.raw = [];
54
+ this._data = [];
55
+ this.selectionChange = new EventEmitter();
56
+ this.onChange = () => { };
57
+ this.onTouch = () => { };
58
+ // invalid = false
59
+ this.disabled = false;
60
+ this.isArray = (obj) => Array.isArray(obj);
61
+ this.isObject = (obj) => typeof obj === 'object' && obj !== null && !Array.isArray(obj);
62
+ this.hasObjects = (obj) => (this.isArray(obj) && obj.length > 0) ? this.isObject(obj[0]) : false;
63
+ this.objectIsEmpty = (obj) => Object.keys(obj).length === 0;
64
+ this.selectedCheckboxes = (obj) => Object.keys(obj).filter(key => obj[key]);
65
+ }
66
+ ngOnInit() {
67
+ }
68
+ ngAfterViewInit() {
69
+ this.formInitialized = true;
70
+ }
71
+ initSelection() {
72
+ const selectedCount = this.selectedCheckboxes(this.selectionControl.value).length;
73
+ const hasMax = selectedCount >= this.maxSelection && this.maxSelection > 0;
74
+ if (hasMax && this.disableMax) {
75
+ const disable = this.selectedValues(this.selectionControl.value, false);
76
+ disable.map(item => this.selectionControl.controls[item].disable());
77
+ }
78
+ else {
79
+ const enable = this.data.filter(item => (!item.disabled)).map(item => item.value);
80
+ enable.map(item => this.selectionControl.controls[item].enable());
81
+ }
82
+ }
83
+ writeValue(value) {
84
+ const selected = value?.reduce((acc, item) => { return { ...acc, [item]: true }; }, {});
85
+ const newSelected = (selected && Object.keys(selected).length > this.maxSelection && this.maxSelection > 0)
86
+ ? this.removeLast(selected, Object.keys(selected).length - this.maxSelection)
87
+ : selected;
88
+ if (newSelected) {
89
+ this.selectionControl.patchValue(newSelected, { emitEvent: false });
90
+ }
91
+ else {
92
+ if (this.formInitialized)
93
+ this.selectionControl.reset();
94
+ }
95
+ this.formInitialized = true;
96
+ }
97
+ validate(control) {
98
+ const isRequired = control.hasValidator(Validators.required) ? true : false;
99
+ let errors = { 'minRequired': false, 'maxExceeded': false };
100
+ const selectedCount = this.selectedCheckboxes(this.selectionControl.value).length;
101
+ const hasValue = selectedCount > 0;
102
+ const hasMin = selectedCount < this.minSelection;
103
+ if (this.minSelection > 0)
104
+ errors.minRequired = hasMin;
105
+ const hasMax = selectedCount >= this.maxSelection && this.maxSelection > 0;
106
+ if (this.maxSelection > 0)
107
+ errors.maxExceeded = hasMax;
108
+ if (hasMax && this.disableMax) {
109
+ const disable = this.selectedValues(this.selectionControl.value, false);
110
+ disable.map(item => this.selectionControl.controls[item].disable());
111
+ }
112
+ else {
113
+ const enable = this.data.filter(item => (!item.disabled)).map(item => item.value);
114
+ enable.map(item => this.selectionControl.controls[item].enable());
115
+ }
116
+ const hasErrors = this.selectedValues(errors, true).length > 0;
117
+ const values = this.selectedValues(this.selectionControl.value, true).length;
118
+ const hasValues = (this.minSelection > 0 && values > this.minSelection) || (this.maxSelection > 0 && values < this.maxSelection);
119
+ const finalErrors = (isRequired && !hasValues && hasErrors) ? errors : null;
120
+ return finalErrors;
121
+ }
122
+ registerOnChange(fn) {
123
+ this.onChange = fn;
124
+ }
125
+ registerOnTouched(fn) {
126
+ this.onTouch = fn;
127
+ }
128
+ setDisabledState(isDisabled) {
129
+ this.disabled = isDisabled;
130
+ if (this.disabled) {
131
+ this.selectionControl.disable();
132
+ }
133
+ else {
134
+ this.selectionControl.enable();
135
+ }
136
+ }
137
+ onSelectionChange() {
138
+ const data = this.selectedCheckboxes(this.selectionControl.value);
139
+ const selectedData = (this.isObjects) ? this.raw.filter(item => data.includes(item.value)) : data;
140
+ this.onChange(selectedData);
141
+ this.selectionChange.emit(selectedData);
142
+ }
143
+ selectedValues(obj, state = false) {
144
+ return Object.entries(obj).filter(([key, value]) => value === state).map(([key, _]) => key);
145
+ }
146
+ removeLast(obj, index) {
147
+ const entries = Object.entries(obj);
148
+ const slicedEntries = entries.slice(0, entries.length - index);
149
+ return Object.fromEntries(slicedEntries);
150
+ }
151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxSelectionInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CheckboxSelectionInputComponent, selector: "app-checkbox-selection-input", inputs: { label: "label", placeholder: "placeholder", error: "error", disableMax: "disableMax", useDefaultReset: "useDefaultReset", minSelection: "minSelection", maxSelection: "maxSelection", data: "data" }, outputs: { selectionChange: "selectionChange" }, providers: [
153
+ {
154
+ provide: NG_VALUE_ACCESSOR,
155
+ useExisting: forwardRef(() => CheckboxSelectionInputComponent),
156
+ multi: true
157
+ },
158
+ {
159
+ provide: NG_VALIDATORS,
160
+ useExisting: forwardRef(() => CheckboxSelectionInputComponent),
161
+ multi: true
162
+ }
163
+ ], ngImport: i0, template: "<div style=\"display: flex; flex-direction: column;\">\n <mat-label style=\"padding-left: 1rem; font-size: larger;\">\n {{ label }}\n </mat-label>\n <mat-label style=\"padding-left: 1rem; color: grey;\">\n {{ placeholder }}\n </mat-label>\n <ng-container *ngIf=\"data.length > 0; else NODATA\">\n <section\n [formGroup]=\"selectionControl\"\n class=\"container\"\n >\n <mat-checkbox\n class=\"item\"\n color=\"primary\"\n *ngFor=\"let option of data\"\n [formControlName]=\"option.value\"\n [value]=\"option.value\"\n (change)=\"onSelectionChange()\"\n >\n {{option.value}}\n </mat-checkbox>\n </section>\n </ng-container>\n <ng-template #NODATA>\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</div>\n\n", styles: [".container{display:grid;grid-template-columns:repeat(auto-fit,minmax(192px,1fr));grid-auto-rows:minmax(auto,auto)}.item{flex:1 1 calc(33.33% - 2rem);margin:.25rem;margin-bottom:0;box-sizing:border-box;padding:.25rem;white-space:nowrap}.wrapper:not(:empty)+.default{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "component", type: i4.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }] }); }
164
+ }
165
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxSelectionInputComponent, decorators: [{
166
+ type: Component,
167
+ args: [{ selector: 'app-checkbox-selection-input', providers: [
168
+ {
169
+ provide: NG_VALUE_ACCESSOR,
170
+ useExisting: forwardRef(() => CheckboxSelectionInputComponent),
171
+ multi: true
172
+ },
173
+ {
174
+ provide: NG_VALIDATORS,
175
+ useExisting: forwardRef(() => CheckboxSelectionInputComponent),
176
+ multi: true
177
+ }
178
+ ], template: "<div style=\"display: flex; flex-direction: column;\">\n <mat-label style=\"padding-left: 1rem; font-size: larger;\">\n {{ label }}\n </mat-label>\n <mat-label style=\"padding-left: 1rem; color: grey;\">\n {{ placeholder }}\n </mat-label>\n <ng-container *ngIf=\"data.length > 0; else NODATA\">\n <section\n [formGroup]=\"selectionControl\"\n class=\"container\"\n >\n <mat-checkbox\n class=\"item\"\n color=\"primary\"\n *ngFor=\"let option of data\"\n [formControlName]=\"option.value\"\n [value]=\"option.value\"\n (change)=\"onSelectionChange()\"\n >\n {{option.value}}\n </mat-checkbox>\n </section>\n </ng-container>\n <ng-template #NODATA>\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</div>\n\n", styles: [".container{display:grid;grid-template-columns:repeat(auto-fit,minmax(192px,1fr));grid-auto-rows:minmax(auto,auto)}.item{flex:1 1 calc(33.33% - 2rem);margin:.25rem;margin-bottom:0;box-sizing:border-box;padding:.25rem;white-space:nowrap}.wrapper:not(:empty)+.default{display:none}\n"] }]
179
+ }], ctorParameters: function () { return []; }, propDecorators: { label: [{
180
+ type: Input
181
+ }], placeholder: [{
182
+ type: Input
183
+ }], error: [{
184
+ type: Input
185
+ }], disableMax: [{
186
+ type: Input
187
+ }], useDefaultReset: [{
188
+ type: Input
189
+ }], minSelection: [{
190
+ type: Input
191
+ }], maxSelection: [{
192
+ type: Input
193
+ }], data: [{
194
+ type: Input
195
+ }], selectionChange: [{
196
+ type: Output
197
+ }] } });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NoZWNrYm94LXNlbGVjdGlvbi1pbnB1dC9zcmMvbGliL2NoZWNrYm94LXNlbGVjdGlvbi1pbnB1dC9jaGVja2JveC1zZWxlY3Rpb24taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0L3NyYy9saWIvY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0L2NoZWNrYm94LXNlbGVjdGlvbi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBd0IsYUFBYSxFQUFxQyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwSixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7OztBQW1CL0QsTUFBTSxPQUFPLCtCQUErQjtJQWUxQyxJQUFhLFlBQVksQ0FBQyxLQUFhO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQTtJQUMzQixDQUFDO0lBR0QsSUFBYSxZQUFZLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFDLENBQUM7SUFF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QWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLGdDQUFnQyxDQUFDOzRCQUM5RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjswRUFRUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdPLFlBQVk7c0JBQXhCLEtBQUs7Z0JBU08sWUFBWTtzQkFBeEIsS0FBSztnQkFhTyxJQUFJO3NCQUFoQixLQUFLO2dCQWdDSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybUJ1aWxkZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZWxlY3Rpb25JdGVtIH0gZnJvbSAnLi4vbW9kZWxzL3NlbGVjdGlvbi1pdGVtLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNoZWNrYm94LXNlbGVjdGlvbi1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC1zZWxlY3Rpb24taW5wdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1zZWxlY3Rpb24taW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDaGVja2JveFNlbGVjdGlvbklucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQ2hlY2tib3hTZWxlY3Rpb25JbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveFNlbGVjdGlvbklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXG5cbiAgc2VsZWN0aW9uQ29udHJvbCA9IHRoaXMuZmIuZ3JvdXA8YW55Pih7fSlcblxuICBASW5wdXQoKSBsYWJlbD86IHN0cmluZ1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBASW5wdXQoKSBlcnJvcj86IHN0cmluZ1xuXG4gIEBJbnB1dCgpIGRpc2FibGVNYXggPSBmYWxzZVxuXG4gIEBJbnB1dCgpIHVzZURlZmF1bHRSZXNldCA9IGZhbHNlXG5cbiAgcHJpdmF0ZSBfbWluU2VsZWN0aW9uID0gMFxuICBASW5wdXQoKSBzZXQgbWluU2VsZWN0aW9uKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9taW5TZWxlY3Rpb24gPSAodmFsdWUpID8gdmFsdWUgOiAwXG4gIH1cblxuICBnZXQgbWluU2VsZWN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9taW5TZWxlY3Rpb25cbiAgfVxuXG4gIF9tYXhTZWxlY3Rpb24gPSAwXG4gIEBJbnB1dCgpIHNldCBtYXhTZWxlY3Rpb24odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX21heFNlbGVjdGlvbiA9ICh2YWx1ZSkgPyB2YWx1ZSA6IDBcbiAgfVxuXG4gIGdldCBtYXhTZWxlY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX21heFNlbGVjdGlvblxuICB9XG5cbiAgaXNPYmplY3RzID0gZmFsc2VcbiAgZm9ybUluaXRpYWxpemVkID0gZmFsc2VcbiAgcmF3OiBhbnlbXSA9IFtdXG5cbiAgcHJpdmF0ZSBfZGF0YTogKGFueXxzdHJpbmcpW10gPSBbXVxuICBASW5wdXQoKSBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbCA9IHRoaXMuZmIuZ3JvdXAoe30pXG5cbiAgICB0aGlzLmlzT2JqZWN0cyA9IHRoaXMuaGFzT2JqZWN0cyh2YWx1ZSlcbiAgICB0aGlzLnJhdyA9IHZhbHVlXG5cbiAgICB0aGlzLl9kYXRhID0gKHZhbHVlKSA/IHZhbHVlLm1hcChpdGVtID0+IFNlbGVjdGlvbkl0ZW0uYWRhcHQoaXRlbSkpIDogW11cblxuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5kYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0uc2VsZWN0ZWQpLmxlbmd0aFxuXG4gICAgaWYodGhpcy5tYXhTZWxlY3Rpb24gPiAwICYmIHNlbGVjdGVkID49IHRoaXMubWF4U2VsZWN0aW9uKSB7XG4gICAgICBmb3IgKGxldCBpbmRleCA9IHRoaXMubWF4U2VsZWN0aW9uKzE7IGluZGV4IDwgdGhpcy5kYXRhLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICB0aGlzLmRhdGFbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmRhdGEubWFwKGl0ZW0gPT4ge1xuICAgICAgY29uc3QgZGlzYWJsZWQgPSAoaXRlbT8uZGlzYWJsZWQpID8gaXRlbS5kaXNhYmxlZCA6IGZhbHNlXG4gICAgICBjb25zdCBzZWxlY3RlZCA9IChpdGVtPy5zZWxlY3RlZCkgPyBpdGVtLnNlbGVjdGVkIDogZmFsc2VcbiAgICAgIGNvbnN0IG5ld0NvbnRyb2wgPSB0aGlzLmZiLmNvbnRyb2woeyB2YWx1ZTogc2VsZWN0ZWQsIGRpc2FibGVkIH0sIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuYWRkQ29udHJvbChpdGVtLnZhbHVlLCBuZXdDb250cm9sKVxuICAgIH0pXG5cbiAgICB0aGlzLmluaXRTZWxlY3Rpb24oKVxuXG4gIH1cblxuICBnZXQgZGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVxuICB9XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KClcblxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4ge31cbiAgb25Ub3VjaDogYW55ID0gKCkgPT4ge31cblxuICAvLyBpbnZhbGlkID0gZmFsc2VcblxuICBkaXNhYmxlZCA9IGZhbHNlXG5cbiAgaXNBcnJheSA9IChvYmo6IGFueSkgPT4gQXJyYXkuaXNBcnJheShvYmopXG4gIGlzT2JqZWN0ID0gKG9iajogYW55KSA9PiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkob2JqKVxuICBoYXNPYmplY3RzID0gKG9iajogYW55KSA9PiAodGhpcy5pc0FycmF5KG9iaikgJiYgb2JqLmxlbmd0aCA+IDApID8gdGhpcy5pc09iamVjdChvYmpbMF0pIDogZmFsc2VcbiAgb2JqZWN0SXNFbXB0eSA9IChvYmo6IGFueSkgPT4gT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT09IDBcblxuICBzZWxlY3RlZENoZWNrYm94ZXMgPSAob2JqOiBhbnkpID0+IE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKGtleSA9PiBvYmpba2V5XSlcblxuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmZvcm1Jbml0aWFsaXplZCA9IHRydWVcbiAgfVxuXG4gIGluaXRTZWxlY3Rpb24oKSB7XG5cbiAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gdGhpcy5zZWxlY3RlZENoZWNrYm94ZXModGhpcy5zZWxlY3Rpb25Db250cm9sLnZhbHVlKS5sZW5ndGhcbiAgICBjb25zdCBoYXNNYXggPSBzZWxlY3RlZENvdW50ID49IHRoaXMubWF4U2VsZWN0aW9uICYmIHRoaXMubWF4U2VsZWN0aW9uID4gMFxuXG4gICAgaWYoaGFzTWF4ICYmIHRoaXMuZGlzYWJsZU1heCkge1xuICAgICAgY29uc3QgZGlzYWJsZSA9IHRoaXMuc2VsZWN0ZWRWYWx1ZXModGhpcy5zZWxlY3Rpb25Db250cm9sLnZhbHVlLCBmYWxzZSlcbiAgICAgIGRpc2FibGUubWFwKGl0ZW0gPT4gdGhpcy5zZWxlY3Rpb25Db250cm9sLmNvbnRyb2xzW2l0ZW1dLmRpc2FibGUoKSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZW5hYmxlID0gdGhpcy5kYXRhLmZpbHRlcihpdGVtID0+ICghaXRlbS5kaXNhYmxlZCkpLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpXG4gICAgICBlbmFibGUubWFwKGl0ZW0gPT4gdGhpcy5zZWxlY3Rpb25Db250cm9sLmNvbnRyb2xzW2l0ZW1dLmVuYWJsZSgpKVxuICAgIH1cblxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nW10pIHtcblxuICAgIGNvbnN0IHNlbGVjdGVkID0gdmFsdWU/LnJlZHVjZSgoYWNjLCBpdGVtKSA9PiB7IHJldHVybiB7IC4uLmFjYywgW2l0ZW1dOiB0cnVlIH0gfSwge30pXG5cbiAgICBjb25zdCBuZXdTZWxlY3RlZCA9IChzZWxlY3RlZCAmJiBPYmplY3Qua2V5cyhzZWxlY3RlZCkubGVuZ3RoID4gdGhpcy5tYXhTZWxlY3Rpb24gJiYgdGhpcy5tYXhTZWxlY3Rpb24gPiAwKVxuICAgICAgPyB0aGlzLnJlbW92ZUxhc3Qoc2VsZWN0ZWQsIE9iamVjdC5rZXlzKHNlbGVjdGVkKS5sZW5ndGggLSB0aGlzLm1heFNlbGVjdGlvbilcbiAgICAgIDogc2VsZWN0ZWRcblxuICAgIGlmKG5ld1NlbGVjdGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wucGF0Y2hWYWx1ZShuZXdTZWxlY3RlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKHRoaXMuZm9ybUluaXRpYWxpemVkKSB0aGlzLnNlbGVjdGlvbkNvbnRyb2wucmVzZXQoKVxuICAgIH1cblxuICAgIHRoaXMuZm9ybUluaXRpYWxpemVkID0gdHJ1ZVxuXG4gIH1cblxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG5cbiAgICBjb25zdCBpc1JlcXVpcmVkID0gY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZCkgPyB0cnVlIDogZmFsc2VcblxuICAgIGxldCBlcnJvcnMgPSB7ICdtaW5SZXF1aXJlZCc6IGZhbHNlLCAnbWF4RXhjZWVkZWQnOiBmYWxzZSB9XG5cbiAgICBjb25zdCBzZWxlY3RlZENvdW50ID0gdGhpcy5zZWxlY3RlZENoZWNrYm94ZXModGhpcy5zZWxlY3Rpb25Db250cm9sLnZhbHVlKS5sZW5ndGhcblxuICAgIGNvbnN0IGhhc1ZhbHVlID0gc2VsZWN0ZWRDb3VudCA+IDBcblxuICAgIGNvbnN0IGhhc01pbiA9IHNlbGVjdGVkQ291bnQgPCB0aGlzLm1pblNlbGVjdGlvblxuICAgIGlmKHRoaXMubWluU2VsZWN0aW9uID4gMCkgZXJyb3JzLm1pblJlcXVpcmVkID0gaGFzTWluXG5cbiAgICBjb25zdCBoYXNNYXggPSBzZWxlY3RlZENvdW50ID49IHRoaXMubWF4U2VsZWN0aW9uICYmIHRoaXMubWF4U2VsZWN0aW9uID4gMFxuICAgIGlmKHRoaXMubWF4U2VsZWN0aW9uID4gMCkgZXJyb3JzLm1heEV4Y2VlZGVkID0gaGFzTWF4XG5cbiAgICBpZihoYXNNYXggJiYgdGhpcy5kaXNhYmxlTWF4KSB7XG4gICAgICBjb25zdCBkaXNhYmxlID0gdGhpcy5zZWxlY3RlZFZhbHVlcyh0aGlzLnNlbGVjdGlvbkNvbnRyb2wudmFsdWUsIGZhbHNlKVxuICAgICAgZGlzYWJsZS5tYXAoaXRlbSA9PiB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuY29udHJvbHNbaXRlbV0uZGlzYWJsZSgpKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBlbmFibGUgPSB0aGlzLmRhdGEuZmlsdGVyKGl0ZW0gPT4gKCFpdGVtLmRpc2FibGVkKSkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSlcbiAgICAgIGVuYWJsZS5tYXAoaXRlbSA9PiB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuY29udHJvbHNbaXRlbV0uZW5hYmxlKCkpXG4gICAgfVxuXG4gICAgY29uc3QgaGFzRXJyb3JzID0gdGhpcy5zZWxlY3RlZFZhbHVlcyhlcnJvcnMsIHRydWUpLmxlbmd0aCA+IDBcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnNlbGVjdGVkVmFsdWVzKHRoaXMuc2VsZWN0aW9uQ29udHJvbC52YWx1ZSwgdHJ1ZSkubGVuZ3RoXG5cbiAgICBjb25zdCBoYXNWYWx1ZXMgPSAodGhpcy5taW5TZWxlY3Rpb24gPiAwICYmIHZhbHVlcyA+IHRoaXMubWluU2VsZWN0aW9uKSB8fCAodGhpcy5tYXhTZWxlY3Rpb24gPiAwICYmIHZhbHVlcyA8IHRoaXMubWF4U2VsZWN0aW9uKVxuXG4gICAgY29uc3QgZmluYWxFcnJvcnMgPSAoaXNSZXF1aXJlZCAmJiAhaGFzVmFsdWVzICYmIGhhc0Vycm9ycykgPyBlcnJvcnMgOiBudWxsXG5cbiAgICByZXR1cm4gZmluYWxFcnJvcnNcblxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KXtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpe1xuICAgIHRoaXMub25Ub3VjaCA9IGZuXG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcblxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkXG5cbiAgICBpZih0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wuZGlzYWJsZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5lbmFibGUoKVxuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0aW9uQ2hhbmdlKCkge1xuXG4gICAgY29uc3QgZGF0YSA9IHRoaXMuc2VsZWN0ZWRDaGVja2JveGVzKHRoaXMuc2VsZWN0aW9uQ29udHJvbC52YWx1ZSlcbiAgICBjb25zdCBzZWxlY3RlZERhdGEgPSAodGhpcy5pc09iamVjdHMpID8gdGhpcy5yYXcuZmlsdGVyKGl0ZW0gPT4gZGF0YS5pbmNsdWRlcyhpdGVtLnZhbHVlKSkgOiBkYXRhXG5cbiAgICB0aGlzLm9uQ2hhbmdlKHNlbGVjdGVkRGF0YSlcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHNlbGVjdGVkRGF0YSlcblxuICB9XG5cbiAgc2VsZWN0ZWRWYWx1ZXMob2JqOiBhbnksIHN0YXRlID0gZmFsc2UpIHtcbiAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKS5maWx0ZXIoKFtrZXksIHZhbHVlXSkgPT4gdmFsdWUgPT09IHN0YXRlKS5tYXAoKFtrZXksIF9dKSA9PiBrZXkpXG4gIH1cblxuICByZW1vdmVMYXN0KG9iajogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKG9iailcbiAgICBjb25zdCBzbGljZWRFbnRyaWVzID0gZW50cmllcy5zbGljZSgwLCBlbnRyaWVzLmxlbmd0aCAtIGluZGV4KVxuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoc2xpY2VkRW50cmllcylcbiAgfVxuXG59XG4iLCI8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcIj5cbiAgPG1hdC1sYWJlbCBzdHlsZT1cInBhZGRpbmctbGVmdDogMXJlbTsgZm9udC1zaXplOiBsYXJnZXI7XCI+XG4gICAge3sgbGFiZWwgfX1cbiAgPC9tYXQtbGFiZWw+XG4gIDxtYXQtbGFiZWwgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDFyZW07IGNvbG9yOiBncmV5O1wiPlxuICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gIDwvbWF0LWxhYmVsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sZW5ndGggPiAwOyBlbHNlIE5PREFUQVwiPlxuICAgIDxzZWN0aW9uXG4gICAgICBbZm9ybUdyb3VwXT1cInNlbGVjdGlvbkNvbnRyb2xcIlxuICAgICAgY2xhc3M9XCJjb250YWluZXJcIlxuICAgID5cbiAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkYXRhXCJcbiAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgKGNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgpXCJcbiAgICAgID5cbiAgICAgICAge3tvcHRpb24udmFsdWV9fVxuICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgPC9zZWN0aW9uPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNOT0RBVEE+XG4gICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG4iXX0=
@@ -0,0 +1,97 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
+ import { MatSliderModule } from '@angular/material/slider';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatFormFieldModule } from '@angular/material/form-field';
8
+ import { MatMenuModule } from '@angular/material/menu';
9
+ import { MatRadioModule } from '@angular/material/radio';
10
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
11
+ import { MatCheckboxModule } from '@angular/material/checkbox';
12
+ import { MatInputModule } from '@angular/material/input';
13
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
14
+ import { MatDividerModule } from '@angular/material/divider';
15
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
16
+ import { MatToolbarModule } from '@angular/material/toolbar';
17
+ import { MatOptionModule } from '@angular/material/core';
18
+ import { MatSelectModule } from '@angular/material/select';
19
+ import { CheckboxSelectionInputComponent, CheckboxSelectionDemoComponent, RemoveUnderscorePipe } from '../public-api';
20
+ import * as i0 from "@angular/core";
21
+ export class CheckboxSelectionInputModule {
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxSelectionInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CheckboxSelectionInputModule, declarations: [CheckboxSelectionInputComponent,
24
+ CheckboxSelectionDemoComponent], imports: [CommonModule,
25
+ FormsModule,
26
+ ReactiveFormsModule,
27
+ MatSliderModule,
28
+ MatButtonModule,
29
+ MatIconModule,
30
+ MatFormFieldModule,
31
+ MatToolbarModule,
32
+ MatCheckboxModule,
33
+ MatMenuModule,
34
+ MatButtonToggleModule,
35
+ MatDividerModule,
36
+ MatRadioModule,
37
+ MatInputModule,
38
+ MatAutocompleteModule,
39
+ RemoveUnderscorePipe,
40
+ MatSelectModule,
41
+ MatOptionModule,
42
+ MatSlideToggleModule], exports: [CheckboxSelectionInputComponent,
43
+ CheckboxSelectionDemoComponent] }); }
44
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxSelectionInputModule, imports: [CommonModule,
45
+ FormsModule,
46
+ ReactiveFormsModule,
47
+ MatSliderModule,
48
+ MatButtonModule,
49
+ MatIconModule,
50
+ MatFormFieldModule,
51
+ MatToolbarModule,
52
+ MatCheckboxModule,
53
+ MatMenuModule,
54
+ MatButtonToggleModule,
55
+ MatDividerModule,
56
+ MatRadioModule,
57
+ MatInputModule,
58
+ MatAutocompleteModule,
59
+ MatSelectModule,
60
+ MatOptionModule,
61
+ MatSlideToggleModule] }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CheckboxSelectionInputModule, decorators: [{
64
+ type: NgModule,
65
+ args: [{
66
+ imports: [
67
+ CommonModule,
68
+ FormsModule,
69
+ ReactiveFormsModule,
70
+ MatSliderModule,
71
+ MatButtonModule,
72
+ MatIconModule,
73
+ MatFormFieldModule,
74
+ MatToolbarModule,
75
+ MatCheckboxModule,
76
+ MatMenuModule,
77
+ MatButtonToggleModule,
78
+ MatDividerModule,
79
+ MatRadioModule,
80
+ MatInputModule,
81
+ MatAutocompleteModule,
82
+ RemoveUnderscorePipe,
83
+ MatSelectModule,
84
+ MatOptionModule,
85
+ MatSlideToggleModule,
86
+ ],
87
+ declarations: [
88
+ CheckboxSelectionInputComponent,
89
+ CheckboxSelectionDemoComponent,
90
+ ],
91
+ exports: [
92
+ CheckboxSelectionInputComponent,
93
+ CheckboxSelectionDemoComponent
94
+ ]
95
+ }]
96
+ }] });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NoZWNrYm94LXNlbGVjdGlvbi1pbnB1dC9zcmMvbGliL2NoZWNrYm94LXNlbGVjdGlvbi1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLCtCQUErQixFQUFFLDhCQUE4QixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWtDdEgsTUFBTSxPQUFPLDRCQUE0QjsrR0FBNUIsNEJBQTRCO2dIQUE1Qiw0QkFBNEIsaUJBUnJDLCtCQUErQjtZQUMvQiw4QkFBOEIsYUF0QjlCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYTtZQUNiLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixxQkFBcUI7WUFDckIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQixlQUFlO1lBQ2YsZUFBZTtZQUNmLG9CQUFvQixhQU9wQiwrQkFBK0I7WUFDL0IsOEJBQThCO2dIQUdyQiw0QkFBNEIsWUE3QnJDLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYTtZQUNiLGtCQUFrQjtZQUNsQixnQkFBZ0I7WUFDaEIsaUJBQWlCO1lBQ2pCLGFBQWE7WUFDYixxQkFBcUI7WUFDckIsZ0JBQWdCO1lBQ2hCLGNBQWM7WUFDZCxjQUFjO1lBQ2QscUJBQXFCO1lBRXJCLGVBQWU7WUFDZixlQUFlO1lBQ2Ysb0JBQW9COzs0RkFXWCw0QkFBNEI7a0JBL0J4QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLHFCQUFxQjt3QkFDckIsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixvQkFBb0I7d0JBQ3BCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixvQkFBb0I7cUJBQ3JCO29CQUNELFlBQVksRUFBRTt3QkFDWiwrQkFBK0I7d0JBQy9CLDhCQUE4QjtxQkFDL0I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLCtCQUErQjt3QkFDL0IsOEJBQThCO3FCQUMvQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcblxuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5cbmltcG9ydCB7IENoZWNrYm94U2VsZWN0aW9uSW5wdXRDb21wb25lbnQsIENoZWNrYm94U2VsZWN0aW9uRGVtb0NvbXBvbmVudCwgUmVtb3ZlVW5kZXJzY29yZVBpcGUgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcblxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0U2xpZGVyTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRUb29sYmFyTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdE1lbnVNb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIE1hdERpdmlkZXJNb2R1bGUsXG4gICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIFJlbW92ZVVuZGVyc2NvcmVQaXBlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIENoZWNrYm94U2VsZWN0aW9uSW5wdXRDb21wb25lbnQsXG4gICAgQ2hlY2tib3hTZWxlY3Rpb25EZW1vQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgQ2hlY2tib3hTZWxlY3Rpb25JbnB1dENvbXBvbmVudCxcbiAgICBDaGVja2JveFNlbGVjdGlvbkRlbW9Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBDaGVja2JveFNlbGVjdGlvbklucHV0TW9kdWxlIHsgfVxuIl19
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Public API Surface of selections
3
+ */
4
+ export * from './selection-basic.model';
5
+ export * from './selection-item.model';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGVja2JveC1zZWxlY3Rpb24taW5wdXQvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHNlbGVjdGlvbnNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1iYXNpYy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1pdGVtLm1vZGVsJztcblxuXG4iXX0=