radio-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
+ # RadioSelectionInput
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.2.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project radio-selection-input` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project radio-selection-input`.
8
+ > Note: Don't forget to add `--project radio-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 radio-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 radio-selection-input`, go to the dist folder `cd dist/radio-selection-input` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test radio-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,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 { MatToolbarModule } from '@angular/material/toolbar';
15
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
16
+ import { MatOptionModule } from '@angular/material/core';
17
+ import { MatDividerModule } from '@angular/material/divider';
18
+ import { MatSelectModule } from '@angular/material/select';
19
+ import { RemoveUnderscorePipe, RadioSelectionInputComponent, RadioDemoComponent } from '../public-api';
20
+ import * as i0 from "@angular/core";
21
+ export class RadioSelectionInputModule {
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
23
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputModule, declarations: [RadioSelectionInputComponent,
24
+ RadioDemoComponent], imports: [CommonModule,
25
+ FormsModule,
26
+ ReactiveFormsModule,
27
+ MatSliderModule,
28
+ MatButtonModule,
29
+ MatIconModule,
30
+ MatFormFieldModule,
31
+ MatCheckboxModule,
32
+ MatMenuModule,
33
+ MatRadioModule,
34
+ MatInputModule,
35
+ MatAutocompleteModule,
36
+ MatSlideToggleModule,
37
+ MatToolbarModule,
38
+ MatDividerModule,
39
+ MatSelectModule,
40
+ MatOptionModule,
41
+ MatButtonToggleModule,
42
+ RemoveUnderscorePipe], exports: [RadioSelectionInputComponent,
43
+ RadioDemoComponent] }); }
44
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputModule, imports: [CommonModule,
45
+ FormsModule,
46
+ ReactiveFormsModule,
47
+ MatSliderModule,
48
+ MatButtonModule,
49
+ MatIconModule,
50
+ MatFormFieldModule,
51
+ MatCheckboxModule,
52
+ MatMenuModule,
53
+ MatRadioModule,
54
+ MatInputModule,
55
+ MatAutocompleteModule,
56
+ MatSlideToggleModule,
57
+ MatToolbarModule,
58
+ MatDividerModule,
59
+ MatSelectModule,
60
+ MatOptionModule,
61
+ MatButtonToggleModule] }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputModule, decorators: [{
64
+ type: NgModule,
65
+ args: [{
66
+ imports: [
67
+ CommonModule,
68
+ FormsModule,
69
+ ReactiveFormsModule,
70
+ MatSliderModule,
71
+ MatButtonModule,
72
+ MatIconModule,
73
+ MatFormFieldModule,
74
+ MatCheckboxModule,
75
+ MatMenuModule,
76
+ MatRadioModule,
77
+ MatInputModule,
78
+ MatAutocompleteModule,
79
+ MatSlideToggleModule,
80
+ MatToolbarModule,
81
+ MatDividerModule,
82
+ MatSelectModule,
83
+ MatOptionModule,
84
+ MatButtonToggleModule,
85
+ RemoveUnderscorePipe,
86
+ ],
87
+ declarations: [
88
+ RadioSelectionInputComponent,
89
+ RadioDemoComponent,
90
+ ],
91
+ exports: [
92
+ RadioSelectionInputComponent,
93
+ RadioDemoComponent
94
+ ]
95
+ }]
96
+ }] });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3JhZGlvLXNlbGVjdGlvbi1pbnB1dC9zcmMvbGliL2NoZWNrYm94LXNlbGVjdGlvbi1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLDRCQUE0QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWlDdkcsTUFBTSxPQUFPLHlCQUF5QjsrR0FBekIseUJBQXlCO2dIQUF6Qix5QkFBeUIsaUJBUmxDLDRCQUE0QjtZQUM1QixrQkFBa0IsYUF0QmxCLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixlQUFlO1lBQ2YsYUFBYTtZQUNiLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIsYUFBYTtZQUNiLGNBQWM7WUFDZCxjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG9CQUFvQjtZQUNwQixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGVBQWU7WUFDZixlQUFlO1lBQ2YscUJBQXFCO1lBQ3JCLG9CQUFvQixhQU9wQiw0QkFBNEI7WUFDNUIsa0JBQWtCO2dIQUdULHlCQUF5QixZQTdCbEMsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsZUFBZTtZQUNmLGVBQWU7WUFDZixhQUFhO1lBQ2Isa0JBQWtCO1lBQ2xCLGlCQUFpQjtZQUNqQixhQUFhO1lBQ2IsY0FBYztZQUNkLGNBQWM7WUFDZCxxQkFBcUI7WUFDckIsb0JBQW9CO1lBQ3BCLGdCQUFnQjtZQUNoQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGVBQWU7WUFDZixxQkFBcUI7OzRGQVlaLHlCQUF5QjtrQkEvQnJDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsaUJBQWlCO3dCQUNqQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLG9CQUFvQjtxQkFDckI7b0JBQ0QsWUFBWSxFQUFFO3dCQUNaLDRCQUE0Qjt3QkFDNUIsa0JBQWtCO3FCQUNuQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsNEJBQTRCO3dCQUM1QixrQkFBa0I7cUJBQ25CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuaW1wb3J0IHsgTWF0UmFkaW9Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2xpZGUtdG9nZ2xlJztcblxuaW1wb3J0IHsgTWF0VG9vbGJhck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2xiYXInO1xuaW1wb3J0IHsgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5cbmltcG9ydCB7IFJlbW92ZVVuZGVyc2NvcmVQaXBlLCBSYWRpb1NlbGVjdGlvbklucHV0Q29tcG9uZW50LCBSYWRpb0RlbW9Db21wb25lbnQgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE1hdFNsaWRlck1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0Q2hlY2tib3hNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXRSYWRpb01vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgTWF0VG9vbGJhck1vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXRPcHRpb25Nb2R1bGUsXG4gICAgTWF0QnV0dG9uVG9nZ2xlTW9kdWxlLFxuICAgIFJlbW92ZVVuZGVyc2NvcmVQaXBlLFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBSYWRpb1NlbGVjdGlvbklucHV0Q29tcG9uZW50LFxuICAgIFJhZGlvRGVtb0NvbXBvbmVudCxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFJhZGlvU2VsZWN0aW9uSW5wdXRDb21wb25lbnQsXG4gICAgUmFkaW9EZW1vQ29tcG9uZW50XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUmFkaW9TZWxlY3Rpb25JbnB1dE1vZHVsZSB7IH1cbiJdfQ==
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWRpby1zZWxlY3Rpb24taW5wdXQvc3JjL2xpYi9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHNlbGVjdGlvbnNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1iYXNpYy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdGlvbi1pdGVtLm1vZGVsJztcblxuXG4iXX0=
@@ -0,0 +1,10 @@
1
+ export class SelectionBasic {
2
+ constructor(id = 0, value = '') {
3
+ this.id = id;
4
+ this.value = value;
5
+ }
6
+ static adapt(item) {
7
+ return new SelectionBasic(item?.id, (item?.value) ? item.value : item);
8
+ }
9
+ }
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJhc2ljLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFkaW8tc2VsZWN0aW9uLWlucHV0L3NyYy9saWIvbW9kZWxzL3NlbGVjdGlvbi1iYXNpYy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUNTLEtBQUssQ0FBQyxFQUNOLFFBQVEsRUFBRTtRQURWLE9BQUUsR0FBRixFQUFFLENBQUk7UUFDTixVQUFLLEdBQUwsS0FBSyxDQUFLO0lBQ2hCLENBQUM7SUFFSixNQUFNLENBQUMsS0FBSyxDQUFDLElBQVU7UUFFckIsT0FBTyxJQUFJLGNBQWMsQ0FDdkIsSUFBSSxFQUFFLEVBQUUsRUFDUixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNsQyxDQUFDO0lBQ0osQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTZWxlY3Rpb25CYXNpY0ludGVyZmFjZSB7XG4gIGlkOiBudW1iZXJ8c3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgU2VsZWN0aW9uQmFzaWMgaW1wbGVtZW50cyBTZWxlY3Rpb25CYXNpY0ludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlkID0gMCxcbiAgICBwdWJsaWMgdmFsdWUgPSAnJyxcbiAgKSB7fVxuXG4gIHN0YXRpYyBhZGFwdChpdGVtPzogYW55KSB7XG5cbiAgICByZXR1cm4gbmV3IFNlbGVjdGlvbkJhc2ljKFxuICAgICAgaXRlbT8uaWQsXG4gICAgICAoaXRlbT8udmFsdWUpID8gaXRlbS52YWx1ZSA6IGl0ZW0sXG4gICAgKTtcbiAgfVxuXG59XG4iXX0=
@@ -0,0 +1,12 @@
1
+ export class SelectionItem {
2
+ constructor(id = crypto.randomUUID(), value = '', disabled, selected) {
3
+ this.id = id;
4
+ this.value = value;
5
+ this.disabled = disabled;
6
+ this.selected = selected;
7
+ }
8
+ static adapt(item) {
9
+ return new SelectionItem(item?.id, (item?.value) ? item.value : item, (item?.disabled) ? true : false, (item?.selected) ? true : false);
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWl0ZW0ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWRpby1zZWxlY3Rpb24taW5wdXQvc3JjL2xpYi9tb2RlbHMvc2VsZWN0aW9uLWl0ZW0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsTUFBTSxPQUFPLGFBQWE7SUFFeEIsWUFDUyxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFDeEIsUUFBUSxFQUFFLEVBQ1YsUUFBa0IsRUFDbEIsUUFBa0I7UUFIbEIsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDeEIsVUFBSyxHQUFMLEtBQUssQ0FBSztRQUNWLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUN4QixDQUFDO0lBRUosTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFVO1FBRXJCLE9BQU8sSUFBSSxhQUFhLENBQ3RCLElBQUksRUFBRSxFQUFFLEVBQ1IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDakMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUMvQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQ2hDLENBQUM7SUFDSixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNlbGVjdGlvbkl0ZW1JbnRlcmZhY2Uge1xuICBpZDogbnVtYmVyfHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBzZWxlY3RlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25JdGVtIGltcGxlbWVudHMgU2VsZWN0aW9uSXRlbUludGVyZmFjZSB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGlkID0gY3J5cHRvLnJhbmRvbVVVSUQoKSxcbiAgICBwdWJsaWMgdmFsdWUgPSAnJyxcbiAgICBwdWJsaWMgZGlzYWJsZWQ/OiBib29sZWFuLFxuICAgIHB1YmxpYyBzZWxlY3RlZD86IGJvb2xlYW4sXG4gICkge31cblxuICBzdGF0aWMgYWRhcHQoaXRlbT86IGFueSkge1xuXG4gICAgcmV0dXJuIG5ldyBTZWxlY3Rpb25JdGVtKFxuICAgICAgaXRlbT8uaWQsXG4gICAgICAoaXRlbT8udmFsdWUpID8gaXRlbS52YWx1ZSA6IGl0ZW0sXG4gICAgICAoaXRlbT8uZGlzYWJsZWQpID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgKGl0ZW0/LnNlbGVjdGVkKSA/IHRydWUgOiBmYWxzZSxcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class RemoveUnderscorePipe {
4
+ transform(value) {
5
+ return value ? value.replace(/_/g, " ") : value;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
8
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, isStandalone: true, name: "removeUnderscore" }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, decorators: [{
11
+ type: Pipe,
12
+ args: [{
13
+ name: 'removeUnderscore',
14
+ standalone: true
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLXVuZGVyc2NvcmUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhZGlvLXNlbGVjdGlvbi1pbnB1dC9zcmMvbGliL3BpcGVzL3JlbW92ZS11bmRlcnNjb3JlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxLQUFLLENBQUEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDakQsQ0FBQzsrR0FIVSxvQkFBb0I7NkdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFKaEMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsa0JBQWtCO29CQUN4QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3JlbW92ZVVuZGVyc2NvcmUnLFxuICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFJlbW92ZVVuZGVyc2NvcmVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWU/IHZhbHVlLnJlcGxhY2UoL18vZywgXCIgXCIpIDogdmFsdWU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,75 @@
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/slide-toggle";
9
+ import * as i6 from "@angular/material/divider";
10
+ import * as i7 from "@angular/material/button-toggle";
11
+ import * as i8 from "../radio-selection-input/radio-selection-input.component";
12
+ export class RadioDemoComponent {
13
+ constructor() {
14
+ this.fb = inject(FormBuilder);
15
+ this.data_1 = [
16
+ { id: 11, value: 'Telus' },
17
+ { id: 12, value: 'AT&T', disabled: true },
18
+ { id: 14, value: 'Bell', selected: true },
19
+ { id: 63, value: 'Rogers' }
20
+ ];
21
+ this.data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers'];
22
+ this.data = this.data_2;
23
+ this.selectionControl_1 = this.fb.control(null);
24
+ this.selectionControl_2 = this.fb.control(null, Validators.required);
25
+ this.changeDetection_1 = this.fb.control(null);
26
+ this.changeDetection_2 = this.fb.control(null);
27
+ }
28
+ ngOnInit() {
29
+ this.selectionControl_1.valueChanges.subscribe(data => {
30
+ if (this.changeDetection_1.value)
31
+ console.log('CHANGE:', data);
32
+ });
33
+ this.selectionControl_2.valueChanges.subscribe(data => {
34
+ console.log('VALID:', this.selectionControl_2.valid);
35
+ if (this.changeDetection_2.value)
36
+ console.log('CHANGE:', data);
37
+ });
38
+ }
39
+ // DISABLE
40
+ onDisabled_1(disable) {
41
+ if (disable) {
42
+ this.selectionControl_1.disable();
43
+ }
44
+ else {
45
+ this.selectionControl_1.enable();
46
+ }
47
+ }
48
+ onDisabled_2(disable) {
49
+ if (disable) {
50
+ this.selectionControl_2.disable();
51
+ }
52
+ else {
53
+ this.selectionControl_2.enable();
54
+ }
55
+ }
56
+ onPerformPatch() {
57
+ this.selectionControl_1.patchValue(['Bell']);
58
+ this.selectionControl_2.patchValue(['Rogers']);
59
+ }
60
+ onChangeDataType(type) {
61
+ if (type === 'strings') {
62
+ this.data = this.data_2;
63
+ }
64
+ else {
65
+ this.data = this.data_1;
66
+ }
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
69
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioDemoComponent, selector: "app-radio-selection-demo", ngImport: i0, template: "<div style=\"display: flex;\">\n <h1>Radio 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<h3>No Data - Projection of Error</h3>\n<app-radio-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-radio-selection-input>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Radio 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-radio-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 or placeholder<br>\n No Validation 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n label=\"Providers\"\n placeholder=\"Placeholder Text\"\n ></app-radio-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<br>\n Validation 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", 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: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i7.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7.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: i8.RadioSelectionInputComponent, selector: "app-radio-selection-input", inputs: ["label", "placeholder", "data"], outputs: ["selectionChange"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }] }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioDemoComponent, decorators: [{
72
+ type: Component,
73
+ args: [{ selector: 'app-radio-selection-demo', template: "<div style=\"display: flex;\">\n <h1>Radio 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<h3>No Data - Projection of Error</h3>\n<app-radio-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-radio-selection-input>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Radio 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-radio-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 or placeholder<br>\n No Validation 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n label=\"Providers\"\n placeholder=\"Placeholder Text\"\n ></app-radio-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<br>\n Validation 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" }]
74
+ }], ctorParameters: function () { return []; } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tZGVtby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yYWRpby1zZWxlY3Rpb24taW5wdXQvc3JjL2xpYi9yYWRpby1kZW1vL3JhZGlvLWRlbW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFkaW8tc2VsZWN0aW9uLWlucHV0L3NyYy9saWIvcmFkaW8tZGVtby9yYWRpby1kZW1vLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFPekQsTUFBTSxPQUFPLGtCQUFrQjtJQXFCN0I7UUFuQkEsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUV4QixXQUFNLEdBQUc7WUFDUCxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUMxQixFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3pDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUM7WUFDeEMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7U0FDM0IsQ0FBQTtRQUVELFdBQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1FBRTVDLFNBQUksR0FBUSxJQUFJLENBQUMsTUFBTSxDQUFBO1FBRXhCLHVCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFhLElBQUksQ0FBQyxDQUFBO1FBQ3RELHVCQUFrQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFhLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFM0Usc0JBQWlCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQWEsSUFBSSxDQUFDLENBQUE7UUFDckQsc0JBQWlCLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQWEsSUFBSSxDQUFDLENBQUE7SUFFckMsQ0FBQztJQUVqQixRQUFRO1FBRU4sSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEQsSUFBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSztnQkFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQyxJQUFJLENBQUMsQ0FBQTtRQUM5RCxDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BELE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNwRCxJQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO2dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFDLElBQUksQ0FBQyxDQUFBO1FBQzlELENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUVELFVBQVU7SUFDVixZQUFZLENBQUMsT0FBZ0I7UUFFM0IsSUFBRyxPQUFPLEVBQUU7WUFDVixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDbEM7YUFBTTtZQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtTQUNqQztJQUVILENBQUM7SUFFRCxZQUFZLENBQUMsT0FBZ0I7UUFFM0IsSUFBRyxPQUFPLEVBQUU7WUFDVixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDbEM7YUFBTTtZQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtTQUNqQztJQUVILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDNUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVk7UUFDM0IsSUFBRyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtTQUN4QjthQUFNO1lBQ0wsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1NBQ3hCO0lBQ0gsQ0FBQzsrR0FwRVUsa0JBQWtCO21HQUFsQixrQkFBa0IsZ0VDUi9CLG04RkE2RUE7OzRGRHJFYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yYWRpby1zZWxlY3Rpb24tZGVtbycsXG4gIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1kZW1vLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFkaW8tZGVtby5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvRGVtb0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgZmIgPSBpbmplY3QoRm9ybUJ1aWxkZXIpXG5cbiAgZGF0YV8xID0gW1xuICAgIHsgaWQ6IDExLCB2YWx1ZTogJ1RlbHVzJyB9LFxuICAgIHsgaWQ6IDEyLCB2YWx1ZTogJ0FUJlQnLCBkaXNhYmxlZDogdHJ1ZSB9LFxuICAgIHsgaWQ6IDE0LCB2YWx1ZTogJ0JlbGwnLCBzZWxlY3RlZDogdHJ1ZX0sXG4gICAgeyBpZDogNjMsIHZhbHVlOiAnUm9nZXJzJyB9XG4gICBdXG5cbiAgIGRhdGFfMiA9IFsnVGVsdXMnLCAnQVQmVCcsICdCZWxsJywgJ1JvZ2VycyddXG5cbiAgIGRhdGE6IGFueSA9IHRoaXMuZGF0YV8yXG5cbiAgc2VsZWN0aW9uQ29udHJvbF8xID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG4gIHNlbGVjdGlvbkNvbnRyb2xfMiA9IHRoaXMuZmIuY29udHJvbDxhbnlbXXxudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuXG4gIGNoYW5nZURldGVjdGlvbl8xID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG4gIGNoYW5nZURldGVjdGlvbl8yID0gdGhpcy5mYi5jb250cm9sPGFueVtdfG51bGw+KG51bGwpXG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8xLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICBpZih0aGlzLmNoYW5nZURldGVjdGlvbl8xLnZhbHVlKSBjb25zb2xlLmxvZygnQ0hBTkdFOicsZGF0YSlcbiAgICB9KVxuXG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzIudmFsdWVDaGFuZ2VzLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdWQUxJRDonLCB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMi52YWxpZClcbiAgICAgIGlmKHRoaXMuY2hhbmdlRGV0ZWN0aW9uXzIudmFsdWUpIGNvbnNvbGUubG9nKCdDSEFOR0U6JyxkYXRhKVxuICAgIH0pXG5cbiAgfVxuXG4gIC8vIERJU0FCTEVcbiAgb25EaXNhYmxlZF8xKGRpc2FibGU6IGJvb2xlYW4pIHtcblxuICAgIGlmKGRpc2FibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8xLmRpc2FibGUoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMS5lbmFibGUoKVxuICAgIH1cblxuICB9XG5cbiAgb25EaXNhYmxlZF8yKGRpc2FibGU6IGJvb2xlYW4pIHtcblxuICAgIGlmKGRpc2FibGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbF8yLmRpc2FibGUoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMi5lbmFibGUoKVxuICAgIH1cblxuICB9XG5cbiAgb25QZXJmb3JtUGF0Y2goKSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Db250cm9sXzEucGF0Y2hWYWx1ZShbJ0JlbGwnXSlcbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2xfMi5wYXRjaFZhbHVlKFsnUm9nZXJzJ10pXG4gIH1cblxuICBvbkNoYW5nZURhdGFUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGlmKHR5cGUgPT09ICdzdHJpbmdzJykge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhXzJcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhID0gdGhpcy5kYXRhXzFcbiAgICB9XG4gIH1cblxufVxuIiwiPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7XCI+XG4gIDxoMT5SYWRpbyBGb3JtQ29udHJvbDwvaDE+XG4gIDxkaXYgc3R5bGU9XCJmbGV4OjE7IHRleHQtYWxpZ246IHJpZ2h0O1wiPlxuICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDJyZW07IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcIj5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSAoY2xpY2spPVwib25QZXJmb3JtUGF0Y2goKVwiPlBhdGNoPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCAjdmFyVHlwZXM9XCJtYXRCdXR0b25Ub2dnbGVHcm91cFwiIChjaGFuZ2UpPVwib25DaGFuZ2VEYXRhVHlwZSh2YXJUeXBlcy52YWx1ZSlcIj5cbiAgICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIHZhbHVlPVwic3RyaW5nc1wiIGNoZWNrZWQ9XCJ0cnVlXCI+U3RyaW5nczwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSB2YWx1ZT1cIm9iamVjdHNcIiBjaGVja2VkPVwiZmFsc2VcIj5PYmplY3RzPC9tYXQtYnV0dG9uLXRvZ2dsZT5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXA+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxoMz5ObyBEYXRhIC0gUHJvamVjdGlvbiBvZiBFcnJvcjwvaDM+XG48YXBwLXJhZGlvLXNlbGVjdGlvbi1pbnB1dCBlcnJvcj1cIk5vIERhdGEgUHJvdmlkZWRcIj5cbiAgPGgzIHN0eWxlPVwiY29sb3I6IHJlZDsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMDtcIj5ObyBEYXRhPC9oMz5cbjwvYXBwLXJhZGlvLXNlbGVjdGlvbi1pbnB1dD5cblxuPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbjwvZGl2PlxuXG48ZGl2PlxuICA8aDMgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAwO1wiPlJhZGlvIFNlbGVjdGlvbiAtIHt7IHZhclR5cGVzLnZhbHVlIHwgdXBwZXJjYXNlIH19PC9oMz5cblxuICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDtcIj5cbiAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPjwvc3Bhbj5cbiAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cInNlbGVjdGlvbkNvbnRyb2xfMS5yZXNldCgpXCI+UmVzZXQ8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxhcHAtcmFkaW8tc2VsZWN0aW9uLWlucHV0XG4gICAgW2RhdGFdPVwiZGF0YVwiXG4gICAgW2Zvcm1Db250cm9sXT1cInNlbGVjdGlvbkNvbnRyb2xfMVwiXG4gID48L2FwcC1yYWRpby1zZWxlY3Rpb24taW5wdXQ+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDJyZW07IG1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgW2Zvcm1Db250cm9sXT1cImNoYW5nZURldGVjdGlvbl8xXCI+Q2hhbmdlIERldGVjdGlvbjwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjZGlzYWJsZTEgKGNoYW5nZSk9XCJvbkRpc2FibGVkXzEoZGlzYWJsZTEuY2hlY2tlZClcIj5EaXNhYmxlPC9tYXQtc2xpZGUtdG9nZ2xlPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgTm8gbGFiZWwgb3IgcGxhY2Vob2xkZXI8YnI+XG4gICAgTm8gVmFsaWRhdGlvbiBSZXF1aXJlZDxicj5cbiAgICBWYWxpZCB7eyBzZWxlY3Rpb25Db250cm9sXzEudmFsaWQgfX08YnI+XG4gIDwvZGl2PlxuICA8ZGl2IHN0eWxlPVwibWFyZ2luLXRvcDogLjVyZW07IG1hcmdpbi1ib3R0b206IDFyZW07XCI+XG4gICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXY+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4O1wiPlxuICAgIDxzcGFuIHN0eWxlPVwiZmxleDoxXCI+PC9zcGFuPlxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwic2VsZWN0aW9uQ29udHJvbF8yLnJlc2V0KClcIj5SZXNldDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGFwcC1yYWRpby1zZWxlY3Rpb24taW5wdXRcbiAgICBbZGF0YV09XCJkYXRhXCJcbiAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0aW9uQ29udHJvbF8yXCJcbiAgICBsYWJlbD1cIlByb3ZpZGVyc1wiXG4gICAgcGxhY2Vob2xkZXI9XCJQbGFjZWhvbGRlciBUZXh0XCJcbiAgPjwvYXBwLXJhZGlvLXNlbGVjdGlvbi1pbnB1dD5cbiAgPGRpdiAqbmdJZj1cImVycm9yMi5jaGVja2VkXCI+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cInNlbGVjdGlvbkNvbnRyb2xfMi5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlRoaXMgZmllbGQgaXMgUmVxdWlyZWQ8L21hdC1lcnJvcj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBnYXA6IDJyZW07IG1hcmdpbi10b3A6IDJyZW07XCI+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgW2Zvcm1Db250cm9sXT1cImNoYW5nZURldGVjdGlvbl8yXCI+Q2hhbmdlIERldGVjdGlvbjwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8bWF0LXNsaWRlLXRvZ2dsZSAjZXJyb3IyPkRpc3BsYXkgRXJyb3I8L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPG1hdC1zbGlkZS10b2dnbGUgI2Rpc2FibGUyIChjaGFuZ2UpPVwib25EaXNhYmxlZF8yKGRpc2FibGUyLmNoZWNrZWQpXCI+RGlzYWJsZTwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICA8c3BhbiBzdHlsZT1cImZsZXg6MVwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgc3R5bGU9XCJtYXJnaW4tdG9wOiAycmVtO1wiPlxuICAgIExhYmVsPGJyPlxuICAgIFZhbGlkYXRpb24gUmVxdWlyZWQ8YnI+XG4gICAgVmFsaWQge3sgc2VsZWN0aW9uQ29udHJvbF8yLnZhbGlkIH19PGJyPlxuICA8L2Rpdj5cbiAgPGRpdiBzdHlsZT1cIm1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtO1wiPlxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,131 @@
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 { Subscription } from 'rxjs';
4
+ import { SelectionItem } from '../models/selection-item.model';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ import * as i3 from "@angular/material/form-field";
9
+ import * as i4 from "@angular/material/radio";
10
+ export class RadioSelectionInputComponent {
11
+ set data(value) {
12
+ this.formInitialized = false;
13
+ this.isObjects = this.hasObjects(value);
14
+ this.raw = value;
15
+ this._data = (value) ? value.map(item => SelectionItem.adapt(item)) : [];
16
+ const selectedObjects = this.data.filter(item => item.selected).map(item => item.value);
17
+ const selected = (selectedObjects.length === 0) ? null : this.findFirst(selectedObjects);
18
+ this.selectionControl.patchValue(selected, { emitEvent: false });
19
+ }
20
+ get data() {
21
+ return this._data;
22
+ }
23
+ constructor() {
24
+ this.fb = inject(FormBuilder);
25
+ this.subscriptions = new Subscription();
26
+ this.selectionControl = this.fb.control(null, Validators.required);
27
+ this.formInitialized = false;
28
+ this.raw = [];
29
+ this.isObjects = false;
30
+ this._data = [];
31
+ this.selectionChange = new EventEmitter();
32
+ this.onChange = () => { };
33
+ this.onTouch = () => { };
34
+ this.isArray = (obj) => Array.isArray(obj);
35
+ this.isObject = (obj) => typeof obj === 'object' && obj !== null && !Array.isArray(obj);
36
+ this.hasObjects = (obj) => (this.isArray(obj) && obj.length > 0) ? this.isObject(obj[0]) : false;
37
+ }
38
+ ngOnInit() {
39
+ this.subscriptions.add(this.selectionControl.valueChanges
40
+ .subscribe((data) => {
41
+ this.onChange(data);
42
+ this.selectionChange.emit(data);
43
+ }));
44
+ }
45
+ ngAfterViewInit() {
46
+ this.formInitialized = true;
47
+ }
48
+ findFirst(obj) {
49
+ const found = this.data.find(item => obj.includes(item.value));
50
+ return (found) ? found.value : null;
51
+ }
52
+ writeValue(value) {
53
+ const selected = Array.isArray(value) ? (value.length > 1) ? this.findFirst(value)[0] : [] : value;
54
+ this.data.map((item) => item.selected = value && value.includes(item.value) ? true : false);
55
+ if (selected !== null) {
56
+ if (!value)
57
+ return;
58
+ this.selectionControl.patchValue(selected, { emitEvent: false });
59
+ this.selectionControl.markAsDirty({ onlySelf: true });
60
+ }
61
+ if (this.formInitialized && !this.selectionControl.pristine) {
62
+ if (value === null)
63
+ this.selectionControl.reset();
64
+ this.selectionControl.markAsDirty({ onlySelf: true });
65
+ this.selectionControl.markAllAsTouched();
66
+ }
67
+ else if (this.formInitialized && this.selectionControl.pristine) {
68
+ if (value === null)
69
+ this.selectionControl.reset();
70
+ }
71
+ this.formInitialized = true;
72
+ }
73
+ validate(control) {
74
+ const isRequired = control.hasValidator(Validators.required) ? true : false;
75
+ if (!isRequired)
76
+ this.selectionControl.clearValidators();
77
+ const errors = (isRequired && !this.selectionControl.valid) ? { 'required': false } : null;
78
+ return errors;
79
+ }
80
+ registerOnChange(fn) {
81
+ this.onChange = fn;
82
+ }
83
+ registerOnTouched(fn) {
84
+ this.onTouch = fn;
85
+ }
86
+ setDisabledState(isDisabled) {
87
+ if (isDisabled) {
88
+ this.selectionControl.disable();
89
+ }
90
+ else {
91
+ this.selectionControl.enable();
92
+ }
93
+ }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioSelectionInputComponent, selector: "app-radio-selection-input", inputs: { label: "label", placeholder: "placeholder", data: "data" }, outputs: { selectionChange: "selectionChange" }, providers: [
96
+ {
97
+ provide: NG_VALUE_ACCESSOR,
98
+ useExisting: forwardRef(() => RadioSelectionInputComponent),
99
+ multi: true
100
+ },
101
+ {
102
+ provide: NG_VALIDATORS,
103
+ useExisting: forwardRef(() => RadioSelectionInputComponent),
104
+ multi: true
105
+ }
106
+ ], 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 <mat-radio-group [formControl]=\"selectionControl\" class=\"container\">\n <mat-radio-button\n class=\"item\"\n color=\"primary\"\n *ngFor=\"let option of data\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{option.value}}\n </mat-radio-button>\n </mat-radio-group>\n </ng-container>\n <ng-template #NODATA>\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</div>\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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i4.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }] }); }
107
+ }
108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputComponent, decorators: [{
109
+ type: Component,
110
+ args: [{ selector: 'app-radio-selection-input', providers: [
111
+ {
112
+ provide: NG_VALUE_ACCESSOR,
113
+ useExisting: forwardRef(() => RadioSelectionInputComponent),
114
+ multi: true
115
+ },
116
+ {
117
+ provide: NG_VALIDATORS,
118
+ useExisting: forwardRef(() => RadioSelectionInputComponent),
119
+ multi: true
120
+ }
121
+ ], 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 <mat-radio-group [formControl]=\"selectionControl\" class=\"container\">\n <mat-radio-button\n class=\"item\"\n color=\"primary\"\n *ngFor=\"let option of data\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{option.value}}\n </mat-radio-button>\n </mat-radio-group>\n </ng-container>\n <ng-template #NODATA>\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</div>\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"] }]
122
+ }], ctorParameters: function () { return []; }, propDecorators: { label: [{
123
+ type: Input
124
+ }], placeholder: [{
125
+ type: Input
126
+ }], data: [{
127
+ type: Input
128
+ }], selectionChange: [{
129
+ type: Output
130
+ }] } });
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tc2VsZWN0aW9uLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3JhZGlvLXNlbGVjdGlvbi1pbnB1dC9zcmMvbGliL3JhZGlvLXNlbGVjdGlvbi1pbnB1dC9yYWRpby1zZWxlY3Rpb24taW5wdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcmFkaW8tc2VsZWN0aW9uLWlucHV0L3NyYy9saWIvcmFkaW8tc2VsZWN0aW9uLWlucHV0L3JhZGlvLXNlbGVjdGlvbi1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBeUMsYUFBYSxFQUFvQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7O0FBbUIvRCxNQUFNLE9BQU8sNEJBQTRCO0lBZXZDLElBQWEsSUFBSSxDQUFDLEtBQVk7UUFFNUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3ZDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFD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QUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUM7Z0JBQzNELEtBQUssRUFBRSxJQUFJO2FBQ1o7WUFDRDtnQkFDRSxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztnQkFDM0QsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQ3BCSCxzeUJBMEJBOzs0RkRKYSw0QkFBNEI7a0JBakJ4QyxTQUFTOytCQUNFLDJCQUEyQixhQUcxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSw2QkFBNkIsQ0FBQzs0QkFDM0QsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGFBQWE7NEJBQ3RCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLDZCQUE2QixDQUFDOzRCQUMzRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjswRUFTUSxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFPTyxJQUFJO3NCQUFoQixLQUFLO2dCQWtCSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybUJ1aWxkZXIsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNlbGVjdGlvbkl0ZW0gfSBmcm9tICcuLi9tb2RlbHMvc2VsZWN0aW9uLWl0ZW0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtcmFkaW8tc2VsZWN0aW9uLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLXNlbGVjdGlvbi1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JhZGlvLXNlbGVjdGlvbi1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFJhZGlvU2VsZWN0aW9uSW5wdXRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBSYWRpb1NlbGVjdGlvbklucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJhZGlvU2VsZWN0aW9uSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICBmYiA9IGluamVjdCggRm9ybUJ1aWxkZXIpXG4gIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKClcblxuICBzZWxlY3Rpb25Db250cm9sID0gdGhpcy5mYi5jb250cm9sPHN0cmluZ3xudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKVxuXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nXG5cbiAgZm9ybUluaXRpYWxpemVkID0gZmFsc2VcbiAgcmF3OiBhbnlbXSA9IFtdXG4gIGlzT2JqZWN0cyA9IGZhbHNlXG5cbiAgcHJpdmF0ZSBfZGF0YTogKGFueXxzdHJpbmcpW10gPSBbXVxuICBASW5wdXQoKSBzZXQgZGF0YSh2YWx1ZTogYW55W10pIHtcblxuICAgIHRoaXMuZm9ybUluaXRpYWxpemVkID0gZmFsc2VcbiAgICB0aGlzLmlzT2JqZWN0cyA9IHRoaXMuaGFzT2JqZWN0cyh2YWx1ZSlcbiAgICB0aGlzLnJhdyA9IHZhbHVlXG4gICAgdGhpcy5fZGF0YSA9ICh2YWx1ZSkgPyB2YWx1ZS5tYXAoaXRlbSA9PiBTZWxlY3Rpb25JdGVtLmFkYXB0KGl0ZW0pKSA6IFtdXG5cbiAgICBjb25zdCBzZWxlY3RlZE9iamVjdHMgPSB0aGlzLmRhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zZWxlY3RlZCkubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSlcbiAgICBjb25zdCBzZWxlY3RlZCA9IChzZWxlY3RlZE9iamVjdHMubGVuZ3RoID09PSAwKSA/IG51bGwgOiB0aGlzLmZpbmRGaXJzdChzZWxlY3RlZE9iamVjdHMpXG5cbiAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wucGF0Y2hWYWx1ZShzZWxlY3RlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXG5cbiAgfVxuXG4gIGdldCBkYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9kYXRhXG4gIH1cblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpXG5cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9XG4gIG9uVG91Y2g6IGFueSA9ICgpID0+IHt9XG5cbiAgaXNBcnJheSA9IChvYmo6IGFueSkgPT4gQXJyYXkuaXNBcnJheShvYmopXG4gIGlzT2JqZWN0ID0gKG9iajogYW55KSA9PiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkob2JqKVxuICBoYXNPYmplY3RzID0gKG9iajogYW55KSA9PiAodGhpcy5pc0FycmF5KG9iaikgJiYgb2JqLmxlbmd0aCA+IDApID8gdGhpcy5pc09iamVjdChvYmpbMF0pIDogZmFsc2VcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5zdWJzY3JpYmUoKGRhdGE6IHN0cmluZ3xudWxsKSA9PiB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UoZGF0YSlcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChkYXRhKVxuICAgICAgfSlcbiAgICApXG5cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Jbml0aWFsaXplZCA9IHRydWVcbiAgfVxuXG4gIGZpbmRGaXJzdChvYmo6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgZm91bmQgPSB0aGlzLmRhdGEuZmluZChpdGVtID0+IG9iai5pbmNsdWRlcyhpdGVtLnZhbHVlKSlcbiAgICByZXR1cm4gKGZvdW5kKSA/IGZvdW5kLnZhbHVlIDogbnVsbFxuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgc3RyaW5nW10gfCBudWxsKSB7XG5cbiAgICBjb25zdCBzZWxlY3RlZDogc3RyaW5nID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyAodmFsdWUubGVuZ3RoID4gMSkgPyB0aGlzLmZpbmRGaXJzdCh2YWx1ZSlbMF0gOiBbXSA6IHZhbHVlXG5cbiAgICB0aGlzLmRhdGEubWFwKChpdGVtKSA9PiBpdGVtLnNlbGVjdGVkID0gdmFsdWUgJiYgdmFsdWUuaW5jbHVkZXMoaXRlbS52YWx1ZSkgPyB0cnVlIDogZmFsc2UpO1xuXG4gICAgaWYgKHNlbGVjdGVkICE9PSBudWxsKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHJldHVyblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wucGF0Y2hWYWx1ZShzZWxlY3RlZCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5tYXJrQXNEaXJ0eSh7IG9ubHlTZWxmOiB0cnVlIH0pXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZm9ybUluaXRpYWxpemVkICYmICF0aGlzLnNlbGVjdGlvbkNvbnRyb2wucHJpc3RpbmUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgdGhpcy5zZWxlY3Rpb25Db250cm9sLnJlc2V0KCk7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmZvcm1Jbml0aWFsaXplZCAmJiB0aGlzLnNlbGVjdGlvbkNvbnRyb2wucHJpc3RpbmUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgdGhpcy5zZWxlY3Rpb25Db250cm9sLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtSW5pdGlhbGl6ZWQgPSB0cnVlXG4gIH1cblxuXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcblxuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBjb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/IHRydWUgOiBmYWxzZVxuXG4gICAgaWYoIWlzUmVxdWlyZWQpIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKVxuICAgIGNvbnN0IGVycm9ycyA9IChpc1JlcXVpcmVkICYmICF0aGlzLnNlbGVjdGlvbkNvbnRyb2wudmFsaWQpID8geyAncmVxdWlyZWQnOiBmYWxzZSB9IDogbnVsbFxuXG4gICAgcmV0dXJuIGVycm9yc1xuXG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpe1xuICAgIHRoaXMub25DaGFuZ2UgPSBmblxuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSl7XG4gICAgdGhpcy5vblRvdWNoID0gZm5cbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcblxuICAgIGlmKGlzRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uQ29udHJvbC5kaXNhYmxlKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Db250cm9sLmVuYWJsZSgpXG4gICAgfVxuXG4gIH1cblxufVxuXG4iLCI8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcIj5cbiAgPG1hdC1sYWJlbCBzdHlsZT1cInBhZGRpbmctbGVmdDogMXJlbTsgZm9udC1zaXplOiBsYXJnZXI7XCI+XG4gICAge3sgbGFiZWwgfX1cbiAgPC9tYXQtbGFiZWw+XG4gIDxtYXQtbGFiZWwgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDFyZW07IGNvbG9yOiBncmV5O1wiPlxuICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gIDwvbWF0LWxhYmVsPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5sZW5ndGggPiAwOyBlbHNlIE5PREFUQVwiPlxuICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sXT1cInNlbGVjdGlvbkNvbnRyb2xcIiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICAgICAgPG1hdC1yYWRpby1idXR0b25cbiAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkYXRhXCJcbiAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgPlxuICAgICAgICB7e29wdGlvbi52YWx1ZX19XG4gICAgICA8L21hdC1yYWRpby1idXR0b24+XG4gICAgPC9tYXQtcmFkaW8tZ3JvdXA+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI05PREFUQT5cbiAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,9 @@
1
+ /*
2
+ * Public API Surface of checkbox-selection-input
3
+ */
4
+ export * from './lib/models/index';
5
+ export * from './lib/pipes/remove-underscore.pipe';
6
+ export * from './lib/radio-demo/radio-demo.component';
7
+ export * from './lib/radio-selection-input/radio-selection-input.component';
8
+ export * from './lib/checkbox-selection-input.module';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3JhZGlvLXNlbGVjdGlvbi1pbnB1dC9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsb0JBQW9CLENBQUM7QUFFbkMsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsNkRBQTZELENBQUM7QUFFNUUsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgY2hlY2tib3gtc2VsZWN0aW9uLWlucHV0XG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kZWxzL2luZGV4JztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvcmVtb3ZlLXVuZGVyc2NvcmUucGlwZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3JhZGlvLWRlbW8vcmFkaW8tZGVtby5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8tc2VsZWN0aW9uLWlucHV0L3JhZGlvLXNlbGVjdGlvbi1pbnB1dC5jb21wb25lbnQnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGVja2JveC1zZWxlY3Rpb24taW5wdXQubW9kdWxlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tc2VsZWN0aW9uLWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvcmFkaW8tc2VsZWN0aW9uLWlucHV0L3NyYy9yYWRpby1zZWxlY3Rpb24taW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,343 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Pipe, inject, EventEmitter, forwardRef, Component, Input, Output, NgModule } from '@angular/core';
3
+ import * as i2 from '@angular/forms';
4
+ import { FormBuilder, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import * as i1 from '@angular/common';
6
+ import { CommonModule } from '@angular/common';
7
+ import * as i3$1 from '@angular/material/button';
8
+ import { MatButtonModule } from '@angular/material/button';
9
+ import * as i3 from '@angular/material/form-field';
10
+ import { MatFormFieldModule } from '@angular/material/form-field';
11
+ import * as i5 from '@angular/material/slide-toggle';
12
+ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
13
+ import * as i6 from '@angular/material/divider';
14
+ import { MatDividerModule } from '@angular/material/divider';
15
+ import * as i7 from '@angular/material/button-toggle';
16
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
17
+ import { Subscription } from 'rxjs';
18
+ import * as i4 from '@angular/material/radio';
19
+ import { MatRadioModule } from '@angular/material/radio';
20
+ import { MatSliderModule } from '@angular/material/slider';
21
+ import { MatIconModule } from '@angular/material/icon';
22
+ import { MatMenuModule } from '@angular/material/menu';
23
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
24
+ import { MatCheckboxModule } from '@angular/material/checkbox';
25
+ import { MatInputModule } from '@angular/material/input';
26
+ import { MatToolbarModule } from '@angular/material/toolbar';
27
+ import { MatOptionModule } from '@angular/material/core';
28
+ import { MatSelectModule } from '@angular/material/select';
29
+
30
+ class SelectionBasic {
31
+ constructor(id = 0, value = '') {
32
+ this.id = id;
33
+ this.value = value;
34
+ }
35
+ static adapt(item) {
36
+ return new SelectionBasic(item?.id, (item?.value) ? item.value : item);
37
+ }
38
+ }
39
+
40
+ class SelectionItem {
41
+ constructor(id = crypto.randomUUID(), value = '', disabled, selected) {
42
+ this.id = id;
43
+ this.value = value;
44
+ this.disabled = disabled;
45
+ this.selected = selected;
46
+ }
47
+ static adapt(item) {
48
+ return new SelectionItem(item?.id, (item?.value) ? item.value : item, (item?.disabled) ? true : false, (item?.selected) ? true : false);
49
+ }
50
+ }
51
+
52
+ /*
53
+ * Public API Surface of selections
54
+ */
55
+
56
+ class RemoveUnderscorePipe {
57
+ transform(value) {
58
+ return value ? value.replace(/_/g, " ") : value;
59
+ }
60
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
61
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, isStandalone: true, name: "removeUnderscore" }); }
62
+ }
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, decorators: [{
64
+ type: Pipe,
65
+ args: [{
66
+ name: 'removeUnderscore',
67
+ standalone: true
68
+ }]
69
+ }] });
70
+
71
+ class RadioSelectionInputComponent {
72
+ set data(value) {
73
+ this.formInitialized = false;
74
+ this.isObjects = this.hasObjects(value);
75
+ this.raw = value;
76
+ this._data = (value) ? value.map(item => SelectionItem.adapt(item)) : [];
77
+ const selectedObjects = this.data.filter(item => item.selected).map(item => item.value);
78
+ const selected = (selectedObjects.length === 0) ? null : this.findFirst(selectedObjects);
79
+ this.selectionControl.patchValue(selected, { emitEvent: false });
80
+ }
81
+ get data() {
82
+ return this._data;
83
+ }
84
+ constructor() {
85
+ this.fb = inject(FormBuilder);
86
+ this.subscriptions = new Subscription();
87
+ this.selectionControl = this.fb.control(null, Validators.required);
88
+ this.formInitialized = false;
89
+ this.raw = [];
90
+ this.isObjects = false;
91
+ this._data = [];
92
+ this.selectionChange = new EventEmitter();
93
+ this.onChange = () => { };
94
+ this.onTouch = () => { };
95
+ this.isArray = (obj) => Array.isArray(obj);
96
+ this.isObject = (obj) => typeof obj === 'object' && obj !== null && !Array.isArray(obj);
97
+ this.hasObjects = (obj) => (this.isArray(obj) && obj.length > 0) ? this.isObject(obj[0]) : false;
98
+ }
99
+ ngOnInit() {
100
+ this.subscriptions.add(this.selectionControl.valueChanges
101
+ .subscribe((data) => {
102
+ this.onChange(data);
103
+ this.selectionChange.emit(data);
104
+ }));
105
+ }
106
+ ngAfterViewInit() {
107
+ this.formInitialized = true;
108
+ }
109
+ findFirst(obj) {
110
+ const found = this.data.find(item => obj.includes(item.value));
111
+ return (found) ? found.value : null;
112
+ }
113
+ writeValue(value) {
114
+ const selected = Array.isArray(value) ? (value.length > 1) ? this.findFirst(value)[0] : [] : value;
115
+ this.data.map((item) => item.selected = value && value.includes(item.value) ? true : false);
116
+ if (selected !== null) {
117
+ if (!value)
118
+ return;
119
+ this.selectionControl.patchValue(selected, { emitEvent: false });
120
+ this.selectionControl.markAsDirty({ onlySelf: true });
121
+ }
122
+ if (this.formInitialized && !this.selectionControl.pristine) {
123
+ if (value === null)
124
+ this.selectionControl.reset();
125
+ this.selectionControl.markAsDirty({ onlySelf: true });
126
+ this.selectionControl.markAllAsTouched();
127
+ }
128
+ else if (this.formInitialized && this.selectionControl.pristine) {
129
+ if (value === null)
130
+ this.selectionControl.reset();
131
+ }
132
+ this.formInitialized = true;
133
+ }
134
+ validate(control) {
135
+ const isRequired = control.hasValidator(Validators.required) ? true : false;
136
+ if (!isRequired)
137
+ this.selectionControl.clearValidators();
138
+ const errors = (isRequired && !this.selectionControl.valid) ? { 'required': false } : null;
139
+ return errors;
140
+ }
141
+ registerOnChange(fn) {
142
+ this.onChange = fn;
143
+ }
144
+ registerOnTouched(fn) {
145
+ this.onTouch = fn;
146
+ }
147
+ setDisabledState(isDisabled) {
148
+ if (isDisabled) {
149
+ this.selectionControl.disable();
150
+ }
151
+ else {
152
+ this.selectionControl.enable();
153
+ }
154
+ }
155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
156
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioSelectionInputComponent, selector: "app-radio-selection-input", inputs: { label: "label", placeholder: "placeholder", data: "data" }, outputs: { selectionChange: "selectionChange" }, providers: [
157
+ {
158
+ provide: NG_VALUE_ACCESSOR,
159
+ useExisting: forwardRef(() => RadioSelectionInputComponent),
160
+ multi: true
161
+ },
162
+ {
163
+ provide: NG_VALIDATORS,
164
+ useExisting: forwardRef(() => RadioSelectionInputComponent),
165
+ multi: true
166
+ }
167
+ ], 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 <mat-radio-group [formControl]=\"selectionControl\" class=\"container\">\n <mat-radio-button\n class=\"item\"\n color=\"primary\"\n *ngFor=\"let option of data\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{option.value}}\n </mat-radio-button>\n </mat-radio-group>\n </ng-container>\n <ng-template #NODATA>\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</div>\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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i4.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }] }); }
168
+ }
169
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputComponent, decorators: [{
170
+ type: Component,
171
+ args: [{ selector: 'app-radio-selection-input', providers: [
172
+ {
173
+ provide: NG_VALUE_ACCESSOR,
174
+ useExisting: forwardRef(() => RadioSelectionInputComponent),
175
+ multi: true
176
+ },
177
+ {
178
+ provide: NG_VALIDATORS,
179
+ useExisting: forwardRef(() => RadioSelectionInputComponent),
180
+ multi: true
181
+ }
182
+ ], 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 <mat-radio-group [formControl]=\"selectionControl\" class=\"container\">\n <mat-radio-button\n class=\"item\"\n color=\"primary\"\n *ngFor=\"let option of data\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{option.value}}\n </mat-radio-button>\n </mat-radio-group>\n </ng-container>\n <ng-template #NODATA>\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</div>\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"] }]
183
+ }], ctorParameters: function () { return []; }, propDecorators: { label: [{
184
+ type: Input
185
+ }], placeholder: [{
186
+ type: Input
187
+ }], data: [{
188
+ type: Input
189
+ }], selectionChange: [{
190
+ type: Output
191
+ }] } });
192
+
193
+ class RadioDemoComponent {
194
+ constructor() {
195
+ this.fb = inject(FormBuilder);
196
+ this.data_1 = [
197
+ { id: 11, value: 'Telus' },
198
+ { id: 12, value: 'AT&T', disabled: true },
199
+ { id: 14, value: 'Bell', selected: true },
200
+ { id: 63, value: 'Rogers' }
201
+ ];
202
+ this.data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers'];
203
+ this.data = this.data_2;
204
+ this.selectionControl_1 = this.fb.control(null);
205
+ this.selectionControl_2 = this.fb.control(null, Validators.required);
206
+ this.changeDetection_1 = this.fb.control(null);
207
+ this.changeDetection_2 = this.fb.control(null);
208
+ }
209
+ ngOnInit() {
210
+ this.selectionControl_1.valueChanges.subscribe(data => {
211
+ if (this.changeDetection_1.value)
212
+ console.log('CHANGE:', data);
213
+ });
214
+ this.selectionControl_2.valueChanges.subscribe(data => {
215
+ console.log('VALID:', this.selectionControl_2.valid);
216
+ if (this.changeDetection_2.value)
217
+ console.log('CHANGE:', data);
218
+ });
219
+ }
220
+ // DISABLE
221
+ onDisabled_1(disable) {
222
+ if (disable) {
223
+ this.selectionControl_1.disable();
224
+ }
225
+ else {
226
+ this.selectionControl_1.enable();
227
+ }
228
+ }
229
+ onDisabled_2(disable) {
230
+ if (disable) {
231
+ this.selectionControl_2.disable();
232
+ }
233
+ else {
234
+ this.selectionControl_2.enable();
235
+ }
236
+ }
237
+ onPerformPatch() {
238
+ this.selectionControl_1.patchValue(['Bell']);
239
+ this.selectionControl_2.patchValue(['Rogers']);
240
+ }
241
+ onChangeDataType(type) {
242
+ if (type === 'strings') {
243
+ this.data = this.data_2;
244
+ }
245
+ else {
246
+ this.data = this.data_1;
247
+ }
248
+ }
249
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
250
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RadioDemoComponent, selector: "app-radio-selection-demo", ngImport: i0, template: "<div style=\"display: flex;\">\n <h1>Radio 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<h3>No Data - Projection of Error</h3>\n<app-radio-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-radio-selection-input>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Radio 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-radio-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 or placeholder<br>\n No Validation 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n label=\"Providers\"\n placeholder=\"Placeholder Text\"\n ></app-radio-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<br>\n Validation 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", 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$1.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: i3.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i5.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i6.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i7.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i7.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: RadioSelectionInputComponent, selector: "app-radio-selection-input", inputs: ["label", "placeholder", "data"], outputs: ["selectionChange"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }] }); }
251
+ }
252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioDemoComponent, decorators: [{
253
+ type: Component,
254
+ args: [{ selector: 'app-radio-selection-demo', template: "<div style=\"display: flex;\">\n <h1>Radio 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<h3>No Data - Projection of Error</h3>\n<app-radio-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-radio-selection-input>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Radio 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-radio-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 or placeholder<br>\n No Validation 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n label=\"Providers\"\n placeholder=\"Placeholder Text\"\n ></app-radio-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<br>\n Validation 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" }]
255
+ }], ctorParameters: function () { return []; } });
256
+
257
+ class RadioSelectionInputModule {
258
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
259
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputModule, declarations: [RadioSelectionInputComponent,
260
+ RadioDemoComponent], imports: [CommonModule,
261
+ FormsModule,
262
+ ReactiveFormsModule,
263
+ MatSliderModule,
264
+ MatButtonModule,
265
+ MatIconModule,
266
+ MatFormFieldModule,
267
+ MatCheckboxModule,
268
+ MatMenuModule,
269
+ MatRadioModule,
270
+ MatInputModule,
271
+ MatAutocompleteModule,
272
+ MatSlideToggleModule,
273
+ MatToolbarModule,
274
+ MatDividerModule,
275
+ MatSelectModule,
276
+ MatOptionModule,
277
+ MatButtonToggleModule,
278
+ RemoveUnderscorePipe], exports: [RadioSelectionInputComponent,
279
+ RadioDemoComponent] }); }
280
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputModule, imports: [CommonModule,
281
+ FormsModule,
282
+ ReactiveFormsModule,
283
+ MatSliderModule,
284
+ MatButtonModule,
285
+ MatIconModule,
286
+ MatFormFieldModule,
287
+ MatCheckboxModule,
288
+ MatMenuModule,
289
+ MatRadioModule,
290
+ MatInputModule,
291
+ MatAutocompleteModule,
292
+ MatSlideToggleModule,
293
+ MatToolbarModule,
294
+ MatDividerModule,
295
+ MatSelectModule,
296
+ MatOptionModule,
297
+ MatButtonToggleModule] }); }
298
+ }
299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RadioSelectionInputModule, decorators: [{
300
+ type: NgModule,
301
+ args: [{
302
+ imports: [
303
+ CommonModule,
304
+ FormsModule,
305
+ ReactiveFormsModule,
306
+ MatSliderModule,
307
+ MatButtonModule,
308
+ MatIconModule,
309
+ MatFormFieldModule,
310
+ MatCheckboxModule,
311
+ MatMenuModule,
312
+ MatRadioModule,
313
+ MatInputModule,
314
+ MatAutocompleteModule,
315
+ MatSlideToggleModule,
316
+ MatToolbarModule,
317
+ MatDividerModule,
318
+ MatSelectModule,
319
+ MatOptionModule,
320
+ MatButtonToggleModule,
321
+ RemoveUnderscorePipe,
322
+ ],
323
+ declarations: [
324
+ RadioSelectionInputComponent,
325
+ RadioDemoComponent,
326
+ ],
327
+ exports: [
328
+ RadioSelectionInputComponent,
329
+ RadioDemoComponent
330
+ ]
331
+ }]
332
+ }] });
333
+
334
+ /*
335
+ * Public API Surface of checkbox-selection-input
336
+ */
337
+
338
+ /**
339
+ * Generated bundle index. Do not edit.
340
+ */
341
+
342
+ export { RadioDemoComponent, RadioSelectionInputComponent, RadioSelectionInputModule, RemoveUnderscorePipe, SelectionBasic, SelectionItem };
343
+ //# sourceMappingURL=radio-selection-input.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-selection-input.mjs","sources":["../../../projects/radio-selection-input/src/lib/models/selection-basic.model.ts","../../../projects/radio-selection-input/src/lib/models/selection-item.model.ts","../../../projects/radio-selection-input/src/lib/models/index.ts","../../../projects/radio-selection-input/src/lib/pipes/remove-underscore.pipe.ts","../../../projects/radio-selection-input/src/lib/radio-selection-input/radio-selection-input.component.ts","../../../projects/radio-selection-input/src/lib/radio-selection-input/radio-selection-input.component.html","../../../projects/radio-selection-input/src/lib/radio-demo/radio-demo.component.ts","../../../projects/radio-selection-input/src/lib/radio-demo/radio-demo.component.html","../../../projects/radio-selection-input/src/lib/checkbox-selection-input.module.ts","../../../projects/radio-selection-input/src/public-api.ts","../../../projects/radio-selection-input/src/radio-selection-input.ts"],"sourcesContent":["export interface SelectionBasicInterface {\n id: number|string;\n value: string;\n}\n\nexport class SelectionBasic implements SelectionBasicInterface {\n\n constructor(\n public id = 0,\n public value = '',\n ) {}\n\n static adapt(item?: any) {\n\n return new SelectionBasic(\n item?.id,\n (item?.value) ? item.value : item,\n );\n }\n\n}\n","export interface SelectionItemInterface {\n id: number|string;\n value: string;\n disabled?: boolean;\n selected?: boolean;\n}\n\nexport class SelectionItem implements SelectionItemInterface {\n\n constructor(\n public id = crypto.randomUUID(),\n public value = '',\n public disabled?: boolean,\n public selected?: boolean,\n ) {}\n\n static adapt(item?: any) {\n\n return new SelectionItem(\n item?.id,\n (item?.value) ? item.value : item,\n (item?.disabled) ? true : false,\n (item?.selected) ? true : false,\n );\n }\n\n}\n","/*\n * Public API Surface of selections\n */\n\nexport * from './selection-basic.model';\nexport * from './selection-item.model';\n\n\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'removeUnderscore',\n standalone: true\n})\nexport class RemoveUnderscorePipe implements PipeTransform {\n transform(value: string): string {\n return value? value.replace(/_/g, \" \") : value;\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output, forwardRef, inject } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, FormBuilder, ControlValueAccessor, AbstractControl, NG_VALIDATORS, ValidationErrors, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { SelectionItem } from '../models/selection-item.model';\n\n@Component({\n selector: 'app-radio-selection-input',\n templateUrl: './radio-selection-input.component.html',\n styleUrls: ['./radio-selection-input.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioSelectionInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RadioSelectionInputComponent),\n multi: true\n }\n ]\n})\nexport class RadioSelectionInputComponent implements OnInit, ControlValueAccessor {\n\n fb = inject( FormBuilder)\n subscriptions = new Subscription()\n\n selectionControl = this.fb.control<string|null>(null, Validators.required)\n\n @Input() label?: string\n @Input() placeholder?: string\n\n formInitialized = false\n raw: any[] = []\n isObjects = false\n\n private _data: (any|string)[] = []\n @Input() set data(value: any[]) {\n\n this.formInitialized = false\n this.isObjects = this.hasObjects(value)\n this.raw = value\n this._data = (value) ? value.map(item => SelectionItem.adapt(item)) : []\n\n const selectedObjects = this.data.filter(item => item.selected).map(item => item.value)\n const selected = (selectedObjects.length === 0) ? null : this.findFirst(selectedObjects)\n\n this.selectionControl.patchValue(selected, { emitEvent: false })\n\n }\n\n get data() {\n return this._data\n }\n\n @Output() selectionChange = new EventEmitter()\n\n onChange: any = () => {}\n onTouch: any = () => {}\n\n isArray = (obj: any) => Array.isArray(obj)\n isObject = (obj: any) => typeof obj === 'object' && obj !== null && !Array.isArray(obj)\n hasObjects = (obj: any) => (this.isArray(obj) && obj.length > 0) ? this.isObject(obj[0]) : false\n\n constructor() { }\n\n ngOnInit() {\n\n this.subscriptions.add(\n this.selectionControl.valueChanges\n .subscribe((data: string|null) => {\n this.onChange(data)\n this.selectionChange.emit(data)\n })\n )\n\n }\n\n ngAfterViewInit(): void {\n this.formInitialized = true\n }\n\n findFirst(obj: string[]) {\n const found = this.data.find(item => obj.includes(item.value))\n return (found) ? found.value : null\n }\n\n writeValue(value: string | string[] | null) {\n\n const selected: string = Array.isArray(value) ? (value.length > 1) ? this.findFirst(value)[0] : [] : value\n\n this.data.map((item) => item.selected = value && value.includes(item.value) ? true : false);\n\n if (selected !== null) {\n if (!value) return\n this.selectionControl.patchValue(selected, { emitEvent: false })\n this.selectionControl.markAsDirty({ onlySelf: true })\n }\n\n if (this.formInitialized && !this.selectionControl.pristine) {\n if (value === null) this.selectionControl.reset();\n this.selectionControl.markAsDirty({ onlySelf: true });\n this.selectionControl.markAllAsTouched();\n } else if (this.formInitialized && this.selectionControl.pristine) {\n if (value === null) this.selectionControl.reset();\n }\n\n this.formInitialized = true\n }\n\n\n validate(control: AbstractControl): ValidationErrors | null {\n\n const isRequired = control.hasValidator(Validators.required) ? true : false\n\n if(!isRequired) this.selectionControl.clearValidators()\n const errors = (isRequired && !this.selectionControl.valid) ? { 'required': false } : null\n\n return errors\n\n }\n\n registerOnChange(fn: any){\n this.onChange = fn\n }\n\n registerOnTouched(fn: any){\n this.onTouch = fn\n }\n\n setDisabledState?(isDisabled: boolean) {\n\n if(isDisabled) {\n this.selectionControl.disable()\n } else {\n this.selectionControl.enable()\n }\n\n }\n\n}\n\n","<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 <mat-radio-group [formControl]=\"selectionControl\" class=\"container\">\n <mat-radio-button\n class=\"item\"\n color=\"primary\"\n *ngFor=\"let option of data\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{option.value}}\n </mat-radio-button>\n </mat-radio-group>\n </ng-container>\n <ng-template #NODATA>\n <div class=\"wrapper\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</div>\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-radio-selection-demo',\n templateUrl: './radio-demo.component.html',\n styleUrls: ['./radio-demo.component.scss']\n})\nexport class RadioDemoComponent implements OnInit {\n\n fb = inject(FormBuilder)\n\n data_1 = [\n { id: 11, value: 'Telus' },\n { id: 12, value: 'AT&T', disabled: true },\n { id: 14, value: 'Bell', selected: true},\n { id: 63, value: 'Rogers' }\n ]\n\n data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers']\n\n data: any = this.data_2\n\n selectionControl_1 = this.fb.control<any[]|null>(null)\n selectionControl_2 = this.fb.control<any[]|null>(null, Validators.required)\n\n changeDetection_1 = this.fb.control<any[]|null>(null)\n changeDetection_2 = this.fb.control<any[]|null>(null)\n\n constructor() { }\n\n ngOnInit() {\n\n this.selectionControl_1.valueChanges.subscribe(data => {\n if(this.changeDetection_1.value) console.log('CHANGE:',data)\n })\n\n this.selectionControl_2.valueChanges.subscribe(data => {\n console.log('VALID:', this.selectionControl_2.valid)\n if(this.changeDetection_2.value) console.log('CHANGE:',data)\n })\n\n }\n\n // DISABLE\n onDisabled_1(disable: boolean) {\n\n if(disable) {\n this.selectionControl_1.disable()\n } else {\n this.selectionControl_1.enable()\n }\n\n }\n\n onDisabled_2(disable: boolean) {\n\n if(disable) {\n this.selectionControl_2.disable()\n } else {\n this.selectionControl_2.enable()\n }\n\n }\n\n onPerformPatch() {\n this.selectionControl_1.patchValue(['Bell'])\n this.selectionControl_2.patchValue(['Rogers'])\n }\n\n onChangeDataType(type: string) {\n if(type === 'strings') {\n this.data = this.data_2\n } else {\n this.data = this.data_1\n }\n }\n\n}\n","<div style=\"display: flex;\">\n <h1>Radio 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<h3>No Data - Projection of Error</h3>\n<app-radio-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-radio-selection-input>\n\n<div style=\"margin-top: .5rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Radio 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-radio-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 or placeholder<br>\n No Validation 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-radio-selection-input\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n label=\"Providers\"\n placeholder=\"Placeholder Text\"\n ></app-radio-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<br>\n Validation 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","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { RemoveUnderscorePipe, RadioSelectionInputComponent, RadioDemoComponent } from '../public-api';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatSliderModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatCheckboxModule,\n MatMenuModule,\n MatRadioModule,\n MatInputModule,\n MatAutocompleteModule,\n MatSlideToggleModule,\n MatToolbarModule,\n MatDividerModule,\n MatSelectModule,\n MatOptionModule,\n MatButtonToggleModule,\n RemoveUnderscorePipe,\n ],\n declarations: [\n RadioSelectionInputComponent,\n RadioDemoComponent,\n ],\n exports: [\n RadioSelectionInputComponent,\n RadioDemoComponent\n ]\n})\nexport class RadioSelectionInputModule { }\n","/*\n * Public API Surface of checkbox-selection-input\n */\n\nexport * from './lib/models/index';\n\nexport * from './lib/pipes/remove-underscore.pipe';\n\nexport * from './lib/radio-demo/radio-demo.component';\nexport * from './lib/radio-selection-input/radio-selection-input.component';\n\nexport * from './lib/checkbox-selection-input.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i8.RadioSelectionInputComponent"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="radio-selection-input" />
5
+ export * from './public-api';
@@ -0,0 +1,26 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./radio-selection-input/radio-selection-input.component";
3
+ import * as i2 from "./radio-demo/radio-demo.component";
4
+ import * as i3 from "@angular/common";
5
+ import * as i4 from "@angular/forms";
6
+ import * as i5 from "@angular/material/slider";
7
+ import * as i6 from "@angular/material/button";
8
+ import * as i7 from "@angular/material/icon";
9
+ import * as i8 from "@angular/material/form-field";
10
+ import * as i9 from "@angular/material/checkbox";
11
+ import * as i10 from "@angular/material/menu";
12
+ import * as i11 from "@angular/material/radio";
13
+ import * as i12 from "@angular/material/input";
14
+ import * as i13 from "@angular/material/autocomplete";
15
+ import * as i14 from "@angular/material/slide-toggle";
16
+ import * as i15 from "@angular/material/toolbar";
17
+ import * as i16 from "@angular/material/divider";
18
+ import * as i17 from "@angular/material/select";
19
+ import * as i18 from "@angular/material/core";
20
+ import * as i19 from "@angular/material/button-toggle";
21
+ import * as i20 from "./pipes/remove-underscore.pipe";
22
+ export declare class RadioSelectionInputModule {
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<RadioSelectionInputModule, never>;
24
+ static ɵmod: i0.ɵɵNgModuleDeclaration<RadioSelectionInputModule, [typeof i1.RadioSelectionInputComponent, typeof i2.RadioDemoComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule, typeof i5.MatSliderModule, typeof i6.MatButtonModule, typeof i7.MatIconModule, typeof i8.MatFormFieldModule, typeof i9.MatCheckboxModule, typeof i10.MatMenuModule, typeof i11.MatRadioModule, typeof i12.MatInputModule, typeof i13.MatAutocompleteModule, typeof i14.MatSlideToggleModule, typeof i15.MatToolbarModule, typeof i16.MatDividerModule, typeof i17.MatSelectModule, typeof i18.MatOptionModule, typeof i19.MatButtonToggleModule, typeof i20.RemoveUnderscorePipe], [typeof i1.RadioSelectionInputComponent, typeof i2.RadioDemoComponent]>;
25
+ static ɵinj: i0.ɵɵInjectorDeclaration<RadioSelectionInputModule>;
26
+ }
@@ -0,0 +1,2 @@
1
+ export * from './selection-basic.model';
2
+ export * from './selection-item.model';
@@ -0,0 +1,10 @@
1
+ export interface SelectionBasicInterface {
2
+ id: number | string;
3
+ value: string;
4
+ }
5
+ export declare class SelectionBasic implements SelectionBasicInterface {
6
+ id: number;
7
+ value: string;
8
+ constructor(id?: number, value?: string);
9
+ static adapt(item?: any): SelectionBasic;
10
+ }
@@ -0,0 +1,14 @@
1
+ export interface SelectionItemInterface {
2
+ id: number | string;
3
+ value: string;
4
+ disabled?: boolean;
5
+ selected?: boolean;
6
+ }
7
+ export declare class SelectionItem implements SelectionItemInterface {
8
+ id: `${string}-${string}-${string}-${string}-${string}`;
9
+ value: string;
10
+ disabled?: boolean | undefined;
11
+ selected?: boolean | undefined;
12
+ constructor(id?: `${string}-${string}-${string}-${string}-${string}`, value?: string, disabled?: boolean | undefined, selected?: boolean | undefined);
13
+ static adapt(item?: any): SelectionItem;
14
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RemoveUnderscorePipe implements PipeTransform {
4
+ transform(value: string): string;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<RemoveUnderscorePipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<RemoveUnderscorePipe, "removeUnderscore", true>;
7
+ }
@@ -0,0 +1,36 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { FormBuilder } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export declare class RadioDemoComponent implements OnInit {
5
+ fb: FormBuilder;
6
+ data_1: ({
7
+ id: number;
8
+ value: string;
9
+ disabled?: undefined;
10
+ selected?: undefined;
11
+ } | {
12
+ id: number;
13
+ value: string;
14
+ disabled: boolean;
15
+ selected?: undefined;
16
+ } | {
17
+ id: number;
18
+ value: string;
19
+ selected: boolean;
20
+ disabled?: undefined;
21
+ })[];
22
+ data_2: string[];
23
+ data: any;
24
+ selectionControl_1: import("@angular/forms").FormControl<any[] | null>;
25
+ selectionControl_2: import("@angular/forms").FormControl<any[] | null>;
26
+ changeDetection_1: import("@angular/forms").FormControl<any[] | null>;
27
+ changeDetection_2: import("@angular/forms").FormControl<any[] | null>;
28
+ constructor();
29
+ ngOnInit(): void;
30
+ onDisabled_1(disable: boolean): void;
31
+ onDisabled_2(disable: boolean): void;
32
+ onPerformPatch(): void;
33
+ onChangeDataType(type: string): void;
34
+ static ɵfac: i0.ɵɵFactoryDeclaration<RadioDemoComponent, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<RadioDemoComponent, "app-radio-selection-demo", never, {}, {}, never, never, false, never>;
36
+ }
@@ -0,0 +1,34 @@
1
+ import { EventEmitter, OnInit } from '@angular/core';
2
+ import { FormBuilder, ControlValueAccessor, AbstractControl, ValidationErrors } from '@angular/forms';
3
+ import { Subscription } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare class RadioSelectionInputComponent implements OnInit, ControlValueAccessor {
6
+ fb: FormBuilder;
7
+ subscriptions: Subscription;
8
+ selectionControl: import("@angular/forms").FormControl<string | null>;
9
+ label?: string;
10
+ placeholder?: string;
11
+ formInitialized: boolean;
12
+ raw: any[];
13
+ isObjects: boolean;
14
+ private _data;
15
+ set data(value: any[]);
16
+ get data(): any[];
17
+ selectionChange: EventEmitter<any>;
18
+ onChange: any;
19
+ onTouch: any;
20
+ isArray: (obj: any) => boolean;
21
+ isObject: (obj: any) => boolean;
22
+ hasObjects: (obj: any) => boolean;
23
+ constructor();
24
+ ngOnInit(): void;
25
+ ngAfterViewInit(): void;
26
+ findFirst(obj: string[]): any;
27
+ writeValue(value: string | string[] | null): void;
28
+ validate(control: AbstractControl): ValidationErrors | null;
29
+ registerOnChange(fn: any): void;
30
+ registerOnTouched(fn: any): void;
31
+ setDisabledState?(isDisabled: boolean): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<RadioSelectionInputComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<RadioSelectionInputComponent, "app-radio-selection-input", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, { "selectionChange": "selectionChange"; }, never, ["*"], false, never>;
34
+ }
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "radio-selection-input",
3
+ "version": "15.0.4",
4
+ "peerDependencies": {
5
+ "@angular/common": "^15.2.0",
6
+ "@angular/core": "^15.2.0"
7
+ },
8
+ "dependencies": {
9
+ "tslib": "^2.3.0"
10
+ },
11
+ "sideEffects": false,
12
+ "module": "fesm2022/radio-selection-input.mjs",
13
+ "typings": "index.d.ts",
14
+ "exports": {
15
+ "./package.json": {
16
+ "default": "./package.json"
17
+ },
18
+ ".": {
19
+ "types": "./index.d.ts",
20
+ "esm2022": "./esm2022/radio-selection-input.mjs",
21
+ "esm": "./esm2022/radio-selection-input.mjs",
22
+ "default": "./fesm2022/radio-selection-input.mjs"
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,5 @@
1
+ export * from './lib/models/index';
2
+ export * from './lib/pipes/remove-underscore.pipe';
3
+ export * from './lib/radio-demo/radio-demo.component';
4
+ export * from './lib/radio-selection-input/radio-selection-input.component';
5
+ export * from './lib/checkbox-selection-input.module';
Binary file