filter-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 +24 -0
- package/esm2022/filter-selection-input.mjs +5 -0
- package/esm2022/lib/filter-demo/filter-demo.component.mjs +77 -0
- package/esm2022/lib/filter-selection-input/filter-selection-input.component.mjs +181 -0
- package/esm2022/lib/filter-selection-input.module.mjs +97 -0
- package/esm2022/lib/models/index.mjs +6 -0
- package/esm2022/lib/models/selection-basic.model.mjs +10 -0
- package/esm2022/lib/models/selection-item.model.mjs +12 -0
- package/esm2022/lib/pipes/remove-underscore.pipe.mjs +17 -0
- package/esm2022/public-api.mjs +9 -0
- package/fesm2022/filter-selection-input.mjs +394 -0
- package/fesm2022/filter-selection-input.mjs.map +1 -0
- package/filter-selection-input-15.0.4.tgz +0 -0
- package/index.d.ts +5 -0
- package/lib/filter-demo/filter-demo.component.d.ts +36 -0
- package/lib/filter-selection-input/filter-selection-input.component.d.ts +53 -0
- package/lib/filter-selection-input.module.d.ts +26 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/selection-basic.model.d.ts +10 -0
- package/lib/models/selection-item.model.d.ts +14 -0
- package/lib/pipes/remove-underscore.pipe.d.ts +7 -0
- package/package.json +25 -0
- package/public-api.d.ts +5 -0
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Pipe, inject, EventEmitter, forwardRef, Component, ViewEncapsulation, ViewChild, Output, Input, 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 i4 from '@angular/material/form-field';
|
|
10
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
11
|
+
import * as i5$1 from '@angular/material/button-toggle';
|
|
12
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
13
|
+
import * as i6$1 from '@angular/material/divider';
|
|
14
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
15
|
+
import * as i7$1 from '@angular/material/slide-toggle';
|
|
16
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
17
|
+
import { of, startWith, map } from 'rxjs';
|
|
18
|
+
import * as i6 from '@angular/material/autocomplete';
|
|
19
|
+
import { MatAutocompleteTrigger, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
20
|
+
import * as i3 from '@angular/material/icon';
|
|
21
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
22
|
+
import * as i5 from '@angular/material/input';
|
|
23
|
+
import { MatInputModule } from '@angular/material/input';
|
|
24
|
+
import * as i7 from '@angular/material/core';
|
|
25
|
+
import { MatOptionModule } from '@angular/material/core';
|
|
26
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
27
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
28
|
+
import { MatRadioModule } from '@angular/material/radio';
|
|
29
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
30
|
+
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
31
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
32
|
+
|
|
33
|
+
class SelectionBasic {
|
|
34
|
+
constructor(id = 0, value = '') {
|
|
35
|
+
this.id = id;
|
|
36
|
+
this.value = value;
|
|
37
|
+
}
|
|
38
|
+
static adapt(item) {
|
|
39
|
+
return new SelectionBasic(item?.id, (item?.value) ? item.value : item);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
class SelectionItem {
|
|
44
|
+
constructor(id = crypto.randomUUID(), value = '', disabled, selected) {
|
|
45
|
+
this.id = id;
|
|
46
|
+
this.value = value;
|
|
47
|
+
this.disabled = disabled;
|
|
48
|
+
this.selected = selected;
|
|
49
|
+
}
|
|
50
|
+
static adapt(item) {
|
|
51
|
+
return new SelectionItem(item?.id, (item?.value) ? item.value : item, (item?.disabled) ? true : false, (item?.selected) ? true : false);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* Public API Surface of selections
|
|
57
|
+
*/
|
|
58
|
+
|
|
59
|
+
class RemoveUnderscorePipe {
|
|
60
|
+
transform(value) {
|
|
61
|
+
return value ? value.replace(/_/g, " ") : value;
|
|
62
|
+
}
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
64
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, isStandalone: true, name: "removeUnderscore" }); }
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RemoveUnderscorePipe, decorators: [{
|
|
67
|
+
type: Pipe,
|
|
68
|
+
args: [{
|
|
69
|
+
name: 'removeUnderscore',
|
|
70
|
+
standalone: true
|
|
71
|
+
}]
|
|
72
|
+
}] });
|
|
73
|
+
|
|
74
|
+
class FilterSelectionInputComponent {
|
|
75
|
+
set data(value) {
|
|
76
|
+
value = (value) ? value : [];
|
|
77
|
+
this.isObjects = this.hasObjects(value);
|
|
78
|
+
this._data = (value) ? value.map(item => SelectionItem.adapt(item)) : [];
|
|
79
|
+
const selectedObjects = value.filter(item => item.selected).map(item => item.value);
|
|
80
|
+
this.defaultDisabled = (!this.defaultDisabled) ? value.map(item => SelectionItem.adapt(item)).filter(item => item.disabled) : this.defaultDisabled;
|
|
81
|
+
const selected = this.findFirst(selectedObjects);
|
|
82
|
+
this.selectionControl.patchValue(selected, { emitEvent: false });
|
|
83
|
+
}
|
|
84
|
+
get data() {
|
|
85
|
+
return this._data;
|
|
86
|
+
}
|
|
87
|
+
constructor() {
|
|
88
|
+
this.fb = inject(FormBuilder);
|
|
89
|
+
this.selected = new EventEmitter();
|
|
90
|
+
this.isObjects = false;
|
|
91
|
+
this.defaultDisabled = [];
|
|
92
|
+
this.formInitialized = false;
|
|
93
|
+
this.panelOpened = false;
|
|
94
|
+
this.disabled = false;
|
|
95
|
+
this._data = [];
|
|
96
|
+
this.isArray = (obj) => Array.isArray(obj);
|
|
97
|
+
this.hasObjects = (obj) => (this.isArray(obj) && obj.length > 0) ? this.isObject(obj[0]) : false;
|
|
98
|
+
this.isObject = (obj) => typeof obj === 'object' && obj !== null && !Array.isArray(obj);
|
|
99
|
+
this.isEmpty = (obj) => (!obj) ? false : (Object.keys(obj).length === 0);
|
|
100
|
+
this.findFirst = (obj) => {
|
|
101
|
+
const found = this.data.find(item => obj.includes(item.value));
|
|
102
|
+
return (found) ? found.value : null;
|
|
103
|
+
};
|
|
104
|
+
this.firstElement = (arr) => (arr.length > 0) ? arr[0] : '';
|
|
105
|
+
this.isSelected = (value) => {
|
|
106
|
+
const compareTo = this.selectedOption instanceof (SelectionItem) ? this.selectedOption.value : this.selectedOption;
|
|
107
|
+
return value === compareTo;
|
|
108
|
+
};
|
|
109
|
+
this.selectionControl = this.fb.control(null, Validators.required);
|
|
110
|
+
this.appearance = 'outline';
|
|
111
|
+
this.label = '';
|
|
112
|
+
this.placeholder = '';
|
|
113
|
+
this.forceSelection = true; // TODO
|
|
114
|
+
this.filteredOptions = of([]);
|
|
115
|
+
this.isDisabled = (selection) => {
|
|
116
|
+
const foundDisabled = this.findSelection(selection);
|
|
117
|
+
return (foundDisabled?.disabled) ? true : false;
|
|
118
|
+
};
|
|
119
|
+
this.onChange = () => { };
|
|
120
|
+
this.onTouch = () => { };
|
|
121
|
+
}
|
|
122
|
+
ngOnInit() {
|
|
123
|
+
this.filteredOptions = this.selectionControl.valueChanges
|
|
124
|
+
.pipe(startWith(''), map(value => this._filter(value || '')));
|
|
125
|
+
}
|
|
126
|
+
ngAfterViewInit() {
|
|
127
|
+
this.formInitialized = true;
|
|
128
|
+
}
|
|
129
|
+
writeValue(value) {
|
|
130
|
+
const option = (this.isArray(value)) ? this.firstElement(value) : value;
|
|
131
|
+
this.selectedOption = option instanceof (SelectionItem) ? option.value : option;
|
|
132
|
+
this.selectionControl.patchValue(this.selectedOption);
|
|
133
|
+
this.formInitialized = true;
|
|
134
|
+
}
|
|
135
|
+
validate(control) {
|
|
136
|
+
const isRequired = control.hasValidator(Validators.required) ? true : false;
|
|
137
|
+
if (!isRequired)
|
|
138
|
+
this.selectionControl.clearValidators();
|
|
139
|
+
return (isRequired) ? (this.selectionControl.valid) ? null : { 'required': true } : null;
|
|
140
|
+
}
|
|
141
|
+
registerOnChange(fn) {
|
|
142
|
+
this.onChange = fn;
|
|
143
|
+
}
|
|
144
|
+
registerOnTouched(fn) {
|
|
145
|
+
this.onTouch = fn;
|
|
146
|
+
}
|
|
147
|
+
setDisabledState(isDisabled) {
|
|
148
|
+
this.disabled = isDisabled;
|
|
149
|
+
if (this.disabled) {
|
|
150
|
+
this.selectionControl.disable();
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
this.selectionControl.enable();
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
onOpened() {
|
|
157
|
+
if (this.panelOpened)
|
|
158
|
+
this.selectionControl.patchValue(null);
|
|
159
|
+
this.panelOpened = true;
|
|
160
|
+
this.selectionControl.patchValue(null);
|
|
161
|
+
}
|
|
162
|
+
onClosed() {
|
|
163
|
+
this.panelOpened = false;
|
|
164
|
+
const selectedValue = this.selectedOption instanceof (SelectionItem) ? this.selectedOption.value : this.selectedOption;
|
|
165
|
+
this.selectionControl.patchValue(selectedValue);
|
|
166
|
+
}
|
|
167
|
+
onSelected(value) {
|
|
168
|
+
this.onEnteredValue(value.option.value);
|
|
169
|
+
}
|
|
170
|
+
onEnteredValue(value) {
|
|
171
|
+
const foundIndex = this.data.findIndex(item => item.value.toLowerCase().includes(value.toLowerCase()));
|
|
172
|
+
const found = (foundIndex >= 0) ? this.data[foundIndex] : value;
|
|
173
|
+
const selected = (foundIndex >= 0 && this.forceSelection) ? found : { id: 0, value: found };
|
|
174
|
+
this.selectedOption = selected instanceof (SelectionItem) ? selected.value : selected;
|
|
175
|
+
if (this.forceSelection && foundIndex === -1) {
|
|
176
|
+
this.selectionControl.patchValue(null);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.selectionControl.patchValue(selected.value);
|
|
180
|
+
}
|
|
181
|
+
const dataValue = this.findSelection(this.selectedOption);
|
|
182
|
+
const selectedValue = (this.isObjects) ? dataValue : dataValue.value;
|
|
183
|
+
this.onChange(selectedValue);
|
|
184
|
+
this.selected.next(selectedValue);
|
|
185
|
+
if (this.panelOpened)
|
|
186
|
+
this.autoCompleteInput?.closePanel();
|
|
187
|
+
this.panelOpened = false;
|
|
188
|
+
}
|
|
189
|
+
findSelection(selection) {
|
|
190
|
+
return this.data.find(item => item.value === selection);
|
|
191
|
+
}
|
|
192
|
+
_filter(value) {
|
|
193
|
+
const filterValue = value.toLowerCase();
|
|
194
|
+
return (this.data) ? this.data.filter(option => option.value.toLowerCase().includes(filterValue)).map(item => item.value) : [];
|
|
195
|
+
}
|
|
196
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterSelectionInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
197
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterSelectionInputComponent, selector: "app-filter-selection-input", inputs: { data: "data", appearance: "appearance", label: "label", placeholder: "placeholder", forceSelection: "forceSelection" }, outputs: { selected: "selected" }, providers: [
|
|
198
|
+
{
|
|
199
|
+
provide: NG_VALUE_ACCESSOR,
|
|
200
|
+
useExisting: forwardRef(() => FilterSelectionInputComponent),
|
|
201
|
+
multi: true
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
provide: NG_VALIDATORS,
|
|
205
|
+
useExisting: forwardRef(() => FilterSelectionInputComponent),
|
|
206
|
+
multi: true
|
|
207
|
+
}
|
|
208
|
+
], viewQueries: [{ propertyName: "autoCompleteInput", first: true, predicate: ["autoCompleteInput"], descendants: true, read: MatAutocompleteTrigger }], ngImport: i0, template: "<div *ngIf=\"data\" style=\"display: flex;\">\n <mat-form-field style=\"flex:1\" [appearance]=\"appearance\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input\n matInput\n #autoCompleteInput\n type=\"text\"\n [placeholder]=\"(panelOpened) ? selectedOption : placeholder\"\n [formControl]=\"selectionControl\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"onEnteredValue(autoCompleteInput.value)\"\n >\n <mat-autocomplete #auto=\"matAutocomplete\" (opened)=\"onOpened()\" (closed)=\"onClosed()\" (optionSelected)=\"onSelected($event)\">\n <mat-option\n *ngFor=\"let option of filteredOptions | async\"\n [value]=\"option\"\n [disabled]=\"isDisabled(option)\"\n >\n <div style=\"display: flex;\" *ngIf=\"isSelected(option); else NOT_SELECTED\">\n <span style=\"flex:1; font-weight: 400; color: #673ab7;\">{{option}}</span>\n <mat-icon color=\"primary\">check</mat-icon>\n </div>\n <ng-template #NOT_SELECTED>\n {{option}}\n </ng-template>\n\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n</div>\n\n\n\n", styles: [".mdc-list-item__primary-text{margin:0;flex:1}\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.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { 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.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple", "hideSingleSelectionIndicator"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
209
|
+
}
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterSelectionInputComponent, decorators: [{
|
|
211
|
+
type: Component,
|
|
212
|
+
args: [{ selector: 'app-filter-selection-input', providers: [
|
|
213
|
+
{
|
|
214
|
+
provide: NG_VALUE_ACCESSOR,
|
|
215
|
+
useExisting: forwardRef(() => FilterSelectionInputComponent),
|
|
216
|
+
multi: true
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
provide: NG_VALIDATORS,
|
|
220
|
+
useExisting: forwardRef(() => FilterSelectionInputComponent),
|
|
221
|
+
multi: true
|
|
222
|
+
}
|
|
223
|
+
], encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"data\" style=\"display: flex;\">\n <mat-form-field style=\"flex:1\" [appearance]=\"appearance\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input\n matInput\n #autoCompleteInput\n type=\"text\"\n [placeholder]=\"(panelOpened) ? selectedOption : placeholder\"\n [formControl]=\"selectionControl\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"onEnteredValue(autoCompleteInput.value)\"\n >\n <mat-autocomplete #auto=\"matAutocomplete\" (opened)=\"onOpened()\" (closed)=\"onClosed()\" (optionSelected)=\"onSelected($event)\">\n <mat-option\n *ngFor=\"let option of filteredOptions | async\"\n [value]=\"option\"\n [disabled]=\"isDisabled(option)\"\n >\n <div style=\"display: flex;\" *ngIf=\"isSelected(option); else NOT_SELECTED\">\n <span style=\"flex:1; font-weight: 400; color: #673ab7;\">{{option}}</span>\n <mat-icon color=\"primary\">check</mat-icon>\n </div>\n <ng-template #NOT_SELECTED>\n {{option}}\n </ng-template>\n\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n</div>\n\n\n\n", styles: [".mdc-list-item__primary-text{margin:0;flex:1}\n"] }]
|
|
224
|
+
}], ctorParameters: function () { return []; }, propDecorators: { autoCompleteInput: [{
|
|
225
|
+
type: ViewChild,
|
|
226
|
+
args: ['autoCompleteInput', { read: MatAutocompleteTrigger, static: false }]
|
|
227
|
+
}], selected: [{
|
|
228
|
+
type: Output,
|
|
229
|
+
args: ['selected']
|
|
230
|
+
}], data: [{
|
|
231
|
+
type: Input
|
|
232
|
+
}], appearance: [{
|
|
233
|
+
type: Input
|
|
234
|
+
}], label: [{
|
|
235
|
+
type: Input
|
|
236
|
+
}], placeholder: [{
|
|
237
|
+
type: Input
|
|
238
|
+
}], forceSelection: [{
|
|
239
|
+
type: Input
|
|
240
|
+
}] } });
|
|
241
|
+
|
|
242
|
+
class FilterSelectionDemoComponent {
|
|
243
|
+
constructor() {
|
|
244
|
+
this.fb = inject(FormBuilder);
|
|
245
|
+
this.data_1 = [
|
|
246
|
+
{ id: 11, value: 'Telus' },
|
|
247
|
+
{ id: 12, value: 'AT&T', disabled: true },
|
|
248
|
+
{ id: 14, value: 'Bell', selected: true },
|
|
249
|
+
{ id: 63, value: 'Rogers', selected: true }
|
|
250
|
+
];
|
|
251
|
+
this.data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers'];
|
|
252
|
+
// SELECTIONS
|
|
253
|
+
this.selectionControl_1 = this.fb.control(null);
|
|
254
|
+
this.selectionControl_2 = this.fb.control(null, Validators.required);
|
|
255
|
+
//CHANGE DETECTION
|
|
256
|
+
this.changeDetection_1 = this.fb.control(false);
|
|
257
|
+
this.changeDetection_2 = this.fb.control(false);
|
|
258
|
+
this.data = this.data_2;
|
|
259
|
+
}
|
|
260
|
+
ngOnInit() {
|
|
261
|
+
// SELECTIONS
|
|
262
|
+
this.selectionControl_1.valueChanges.subscribe(data => {
|
|
263
|
+
if (this.changeDetection_1.value)
|
|
264
|
+
console.log('CHANGE:', data);
|
|
265
|
+
});
|
|
266
|
+
this.selectionControl_2.valueChanges.subscribe(data => {
|
|
267
|
+
if (this.changeDetection_2.value)
|
|
268
|
+
console.log('CHANGE:', data);
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
onPerformPatch() {
|
|
272
|
+
this.selectionControl_1.patchValue(['Bell']);
|
|
273
|
+
this.selectionControl_2.patchValue(['AT&T']);
|
|
274
|
+
}
|
|
275
|
+
onChangeDataType(type) {
|
|
276
|
+
if (type === 'strings') {
|
|
277
|
+
this.data = this.data_2; //strings
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
this.data = this.data_1; //objects
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// DISABLE
|
|
284
|
+
onDisabled_1(disable) {
|
|
285
|
+
if (disable) {
|
|
286
|
+
this.selectionControl_1.disable();
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
this.selectionControl_1.enable();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
onDisabled_2(disable) {
|
|
293
|
+
if (disable) {
|
|
294
|
+
this.selectionControl_2.disable();
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
this.selectionControl_2.enable();
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterSelectionDemoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
301
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterSelectionDemoComponent, selector: "app-filter-selection-demo", ngImport: i0, template: "<div style=\"display: flex;\">\n <h1>Filter Selection (Autocomplete) 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\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-filter-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-filter-selection-input>\n\n<div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Autocomplete - {{ varTypes.value | uppercase }}</h3>\n <div>\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-filter-selection-input\n style=\"flex:1\"\n appearance=\"outline\"\n placeholder=\"Select an Option\"\n label=\"Choices\"\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-filter-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error1>Display Error</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 Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n </div>\n\n <div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\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-filter-selection-input\n style=\"flex:1\"\n appearance=\"outline\"\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n ></app-filter-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: 1rem;\">\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_1(disable2.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 Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n </div>\n\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: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5$1.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i5$1.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "component", type: i6$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i7$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: FilterSelectionInputComponent, selector: "app-filter-selection-input", inputs: ["data", "appearance", "label", "placeholder", "forceSelection"], outputs: ["selected"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }] }); }
|
|
302
|
+
}
|
|
303
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterSelectionDemoComponent, decorators: [{
|
|
304
|
+
type: Component,
|
|
305
|
+
args: [{ selector: 'app-filter-selection-demo', template: "<div style=\"display: flex;\">\n <h1>Filter Selection (Autocomplete) 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\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-filter-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-filter-selection-input>\n\n<div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Autocomplete - {{ varTypes.value | uppercase }}</h3>\n <div>\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-filter-selection-input\n style=\"flex:1\"\n appearance=\"outline\"\n placeholder=\"Select an Option\"\n label=\"Choices\"\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-filter-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error1>Display Error</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 Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n </div>\n\n <div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\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-filter-selection-input\n style=\"flex:1\"\n appearance=\"outline\"\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n ></app-filter-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: 1rem;\">\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_1(disable2.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 Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n </div>\n\n" }]
|
|
306
|
+
}], ctorParameters: function () { return []; } });
|
|
307
|
+
|
|
308
|
+
class FilterSelectionInputModule {
|
|
309
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterSelectionInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
310
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FilterSelectionInputModule, declarations: [FilterSelectionDemoComponent,
|
|
311
|
+
FilterSelectionInputComponent], imports: [CommonModule,
|
|
312
|
+
FormsModule,
|
|
313
|
+
ReactiveFormsModule,
|
|
314
|
+
MatSliderModule,
|
|
315
|
+
MatButtonModule,
|
|
316
|
+
MatIconModule,
|
|
317
|
+
MatFormFieldModule,
|
|
318
|
+
MatToolbarModule,
|
|
319
|
+
MatCheckboxModule,
|
|
320
|
+
MatMenuModule,
|
|
321
|
+
MatButtonToggleModule,
|
|
322
|
+
MatDividerModule,
|
|
323
|
+
MatRadioModule,
|
|
324
|
+
MatInputModule,
|
|
325
|
+
MatAutocompleteModule,
|
|
326
|
+
RemoveUnderscorePipe,
|
|
327
|
+
MatSelectModule,
|
|
328
|
+
MatOptionModule,
|
|
329
|
+
MatSlideToggleModule], exports: [FilterSelectionDemoComponent,
|
|
330
|
+
FilterSelectionInputComponent] }); }
|
|
331
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterSelectionInputModule, imports: [CommonModule,
|
|
332
|
+
FormsModule,
|
|
333
|
+
ReactiveFormsModule,
|
|
334
|
+
MatSliderModule,
|
|
335
|
+
MatButtonModule,
|
|
336
|
+
MatIconModule,
|
|
337
|
+
MatFormFieldModule,
|
|
338
|
+
MatToolbarModule,
|
|
339
|
+
MatCheckboxModule,
|
|
340
|
+
MatMenuModule,
|
|
341
|
+
MatButtonToggleModule,
|
|
342
|
+
MatDividerModule,
|
|
343
|
+
MatRadioModule,
|
|
344
|
+
MatInputModule,
|
|
345
|
+
MatAutocompleteModule,
|
|
346
|
+
MatSelectModule,
|
|
347
|
+
MatOptionModule,
|
|
348
|
+
MatSlideToggleModule] }); }
|
|
349
|
+
}
|
|
350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterSelectionInputModule, decorators: [{
|
|
351
|
+
type: NgModule,
|
|
352
|
+
args: [{
|
|
353
|
+
imports: [
|
|
354
|
+
CommonModule,
|
|
355
|
+
FormsModule,
|
|
356
|
+
ReactiveFormsModule,
|
|
357
|
+
MatSliderModule,
|
|
358
|
+
MatButtonModule,
|
|
359
|
+
MatIconModule,
|
|
360
|
+
MatFormFieldModule,
|
|
361
|
+
MatToolbarModule,
|
|
362
|
+
MatCheckboxModule,
|
|
363
|
+
MatMenuModule,
|
|
364
|
+
MatButtonToggleModule,
|
|
365
|
+
MatDividerModule,
|
|
366
|
+
MatRadioModule,
|
|
367
|
+
MatInputModule,
|
|
368
|
+
MatAutocompleteModule,
|
|
369
|
+
RemoveUnderscorePipe,
|
|
370
|
+
MatSelectModule,
|
|
371
|
+
MatOptionModule,
|
|
372
|
+
MatSlideToggleModule,
|
|
373
|
+
],
|
|
374
|
+
declarations: [
|
|
375
|
+
FilterSelectionDemoComponent,
|
|
376
|
+
FilterSelectionInputComponent,
|
|
377
|
+
],
|
|
378
|
+
exports: [
|
|
379
|
+
FilterSelectionDemoComponent,
|
|
380
|
+
FilterSelectionInputComponent,
|
|
381
|
+
]
|
|
382
|
+
}]
|
|
383
|
+
}] });
|
|
384
|
+
|
|
385
|
+
/*
|
|
386
|
+
* Public API Surface of checkbox-selection-input
|
|
387
|
+
*/
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Generated bundle index. Do not edit.
|
|
391
|
+
*/
|
|
392
|
+
|
|
393
|
+
export { FilterSelectionDemoComponent, FilterSelectionInputComponent, FilterSelectionInputModule, RemoveUnderscorePipe, SelectionBasic, SelectionItem };
|
|
394
|
+
//# sourceMappingURL=filter-selection-input.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-selection-input.mjs","sources":["../../../projects/filter-selection-input/src/lib/models/selection-basic.model.ts","../../../projects/filter-selection-input/src/lib/models/selection-item.model.ts","../../../projects/filter-selection-input/src/lib/models/index.ts","../../../projects/filter-selection-input/src/lib/pipes/remove-underscore.pipe.ts","../../../projects/filter-selection-input/src/lib/filter-selection-input/filter-selection-input.component.ts","../../../projects/filter-selection-input/src/lib/filter-selection-input/filter-selection-input.component.html","../../../projects/filter-selection-input/src/lib/filter-demo/filter-demo.component.ts","../../../projects/filter-selection-input/src/lib/filter-demo/filter-demo.component.html","../../../projects/filter-selection-input/src/lib/filter-selection-input.module.ts","../../../projects/filter-selection-input/src/public-api.ts","../../../projects/filter-selection-input/src/filter-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, ViewChild, ViewEncapsulation, forwardRef, inject } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, FormBuilder, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validators } from '@angular/forms';\nimport { Observable, startWith, map, of } from 'rxjs';\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\nimport { MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';\n\nimport { SelectionItem } from '../models/selection-item.model';\n\n@Component({\n selector: 'app-filter-selection-input',\n templateUrl: './filter-selection-input.component.html',\n styleUrls: ['./filter-selection-input.component.css'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FilterSelectionInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => FilterSelectionInputComponent),\n multi: true\n }\n ],\n encapsulation: ViewEncapsulation.None\n})\nexport class FilterSelectionInputComponent implements OnInit, ControlValueAccessor {\n\n @ViewChild('autoCompleteInput', { read: MatAutocompleteTrigger, static: false }) autoCompleteInput?: MatAutocompleteTrigger;\n\n fb = inject(FormBuilder)\n\n @Output('selected') selected = new EventEmitter<SelectionItem|any>()\n\n isObjects = false\n defaultDisabled: SelectionItem[] = []\n formInitialized = false\n\n panelOpened = false\n\n disabled = false\n\n private _data: (any|string)[] = []\n @Input() set data(value: any[]|undefined|null) {\n\n value = (value) ? value : []\n\n this.isObjects = this.hasObjects(value)\n this._data = (value) ? value.map(item => SelectionItem.adapt(item)) : []\n\n const selectedObjects = value.filter(item => item.selected).map(item => item.value)\n this.defaultDisabled = (!this.defaultDisabled) ? value.map(item => SelectionItem.adapt(item)).filter(item => item.disabled) : this.defaultDisabled\n\n const selected = this.findFirst(selectedObjects)\n this.selectionControl.patchValue(selected, { emitEvent: false })\n\n }\n\n get data(): any[] {\n return this._data\n }\n\n isArray = (obj: any) => Array.isArray(obj)\n hasObjects = (obj: any) => (this.isArray(obj) && obj.length > 0) ? this.isObject(obj[0]) : false\n isObject = (obj: any) => typeof obj === 'object' && obj !== null && !Array.isArray(obj)\n isEmpty = (obj: any) => (!obj) ? false : (Object.keys(obj).length === 0)\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 firstElement = (arr: string[]) => (arr.length > 0) ? arr[0] : ''\n\n isSelected = (value: any) => {\n const compareTo = this.selectedOption instanceof(SelectionItem) ? this.selectedOption.value : this.selectedOption\n return value === compareTo\n }\n\n selectionControl = this.fb.control<string|undefined|null>(null, Validators.required)\n\n @Input() appearance: MatFormFieldAppearance = 'outline'\n\n @Input() label?: string|null|undefined = ''\n @Input() placeholder: string = ''\n\n @Input() forceSelection = true // TODO\n\n filteredOptions: Observable<string[]|any> = of([])\n\n selectedOption?: string|any\n\n isDisabled = (selection: string) => {\n const foundDisabled = this.findSelection(selection)\n return(foundDisabled?.disabled) ? true : false\n }\n\n onChange: any = () => {}\n onTouch: any = () => {}\n\n constructor() { }\n\n ngOnInit() {\n\n this.filteredOptions = this.selectionControl.valueChanges\n .pipe(\n startWith(''),\n map(value => this._filter(value || '')),\n )\n\n }\n\n ngAfterViewInit(): void {\n this.formInitialized = true\n }\n\n writeValue(value: any){\n\n const option = (this.isArray(value)) ? this.firstElement(value) : value\n this.selectedOption = option instanceof(SelectionItem) ? option.value : option\n\n this.selectionControl.patchValue(this.selectedOption)\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 return (isRequired) ? (this.selectionControl.valid) ? null : { 'required': true } : null\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 this.disabled = isDisabled\n\n if(this.disabled) {\n this.selectionControl.disable()\n } else {\n this.selectionControl.enable()\n }\n\n }\n\n onOpened() {\n if(this.panelOpened) this.selectionControl.patchValue(null)\n this.panelOpened = true\n this.selectionControl.patchValue(null)\n }\n\n onClosed() {\n this.panelOpened = false\n const selectedValue = this.selectedOption instanceof(SelectionItem) ? this.selectedOption.value : this.selectedOption\n this.selectionControl.patchValue(selectedValue)\n }\n\n onSelected(value: MatAutocompleteSelectedEvent) {\n this.onEnteredValue(value.option.value)\n }\n\n onEnteredValue(value: string) {\n\n const foundIndex = this.data.findIndex(item => item.value.toLowerCase().includes(value.toLowerCase()))\n const found = (foundIndex >= 0) ? this.data[foundIndex] : value\n\n const selected = (foundIndex >= 0 && this.forceSelection) ? found : { id: 0, value: found }\n\n this.selectedOption = selected instanceof(SelectionItem) ? selected.value : selected\n\n if(this.forceSelection && foundIndex === -1) {\n this.selectionControl.patchValue(null)\n } else {\n this.selectionControl.patchValue(selected.value)\n }\n\n const dataValue = this.findSelection(this.selectedOption)\n const selectedValue = (this.isObjects) ? dataValue : dataValue.value\n\n this.onChange(selectedValue)\n this.selected.next(selectedValue)\n\n if(this.panelOpened) this.autoCompleteInput?.closePanel()\n this.panelOpened = false\n\n }\n\n findSelection(selection: string) {\n return this.data.find(item => item.value === selection)\n }\n\n private _filter(value: string) {\n const filterValue = value.toLowerCase();\n return (this.data) ? this.data.filter(option => option.value.toLowerCase().includes(filterValue)).map(item => item.value) : []\n }\n\n}\n","<div *ngIf=\"data\" style=\"display: flex;\">\n <mat-form-field style=\"flex:1\" [appearance]=\"appearance\">\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\n <input\n matInput\n #autoCompleteInput\n type=\"text\"\n [placeholder]=\"(panelOpened) ? selectedOption : placeholder\"\n [formControl]=\"selectionControl\"\n [matAutocomplete]=\"auto\"\n (keyup.enter)=\"onEnteredValue(autoCompleteInput.value)\"\n >\n <mat-autocomplete #auto=\"matAutocomplete\" (opened)=\"onOpened()\" (closed)=\"onClosed()\" (optionSelected)=\"onSelected($event)\">\n <mat-option\n *ngFor=\"let option of filteredOptions | async\"\n [value]=\"option\"\n [disabled]=\"isDisabled(option)\"\n >\n <div style=\"display: flex;\" *ngIf=\"isSelected(option); else NOT_SELECTED\">\n <span style=\"flex:1; font-weight: 400; color: #673ab7;\">{{option}}</span>\n <mat-icon color=\"primary\">check</mat-icon>\n </div>\n <ng-template #NOT_SELECTED>\n {{option}}\n </ng-template>\n\n </mat-option>\n </mat-autocomplete>\n </mat-form-field>\n</div>\n\n\n\n","import { Component, OnInit, inject } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-filter-selection-demo',\n templateUrl: './filter-demo.component.html',\n styleUrls: ['./filter-demo.component.scss']\n})\nexport class FilterSelectionDemoComponent 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', selected: true }\n ]\n\n data_2 = ['Telus', 'AT&T', 'Bell', 'Rogers']\n\n // SELECTIONS\n selectionControl_1 = this.fb.control<string[]|null>(null)\n selectionControl_2 = this.fb.control<string[]|null>(null, Validators.required)\n\n //CHANGE DETECTION\n changeDetection_1 = this.fb.control(false)\n changeDetection_2 = this.fb.control(false)\n\n\n data: any = this.data_2\n\n constructor() { }\n\n ngOnInit() {\n\n // SELECTIONS\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 if(this.changeDetection_2.value) console.log('CHANGE:',data)\n })\n\n }\n\n onPerformPatch() {\n this.selectionControl_1.patchValue(['Bell'])\n this.selectionControl_2.patchValue(['AT&T'])\n }\n\n onChangeDataType(type: string) {\n if(type === 'strings') {\n this.data = this.data_2 //strings\n } else {\n this.data = this.data_1 //objects\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}\n","<div style=\"display: flex;\">\n <h1>Filter Selection (Autocomplete) 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\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-filter-selection-input error=\"No Data Provided\">\n <h3 style=\"color: red; margin-top: 0; margin-bottom: 0;\">No Data</h3>\n</app-filter-selection-input>\n\n<div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\n</div>\n\n<div>\n <h3 style=\"margin-bottom: 0;\">Autocomplete - {{ varTypes.value | uppercase }}</h3>\n <div>\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-filter-selection-input\n style=\"flex:1\"\n appearance=\"outline\"\n placeholder=\"Select an Option\"\n label=\"Choices\"\n [data]=\"data\"\n [formControl]=\"selectionControl_1\"\n ></app-filter-selection-input>\n <div style=\"display: flex; gap: 2rem; margin-top: 1rem;\">\n <mat-slide-toggle [formControl]=\"changeDetection_1\">Change Detection</mat-slide-toggle>\n <mat-slide-toggle #error1>Display Error</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 Label and Placeholder<br>\n Not Required<br>\n Valid {{ selectionControl_1.valid }}<br>\n </div>\n </div>\n\n <div style=\"margin-top: 2rem; margin-bottom: 1rem;\">\n <mat-divider></mat-divider>\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-filter-selection-input\n style=\"flex:1\"\n appearance=\"outline\"\n [data]=\"data\"\n [formControl]=\"selectionControl_2\"\n ></app-filter-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: 1rem;\">\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_1(disable2.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 Required<br>\n Valid {{ selectionControl_2.valid }}<br>\n </div>\n </div>\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\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 { MatDividerModule } from '@angular/material/divider';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatSelectModule } from '@angular/material/select';\n\nimport { FilterSelectionDemoComponent, FilterSelectionInputComponent, RemoveUnderscorePipe } from '../public-api';\n\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatSliderModule,\n MatButtonModule,\n MatIconModule,\n MatFormFieldModule,\n MatToolbarModule,\n MatCheckboxModule,\n MatMenuModule,\n MatButtonToggleModule,\n MatDividerModule,\n MatRadioModule,\n MatInputModule,\n MatAutocompleteModule,\n RemoveUnderscorePipe,\n MatSelectModule,\n MatOptionModule,\n MatSlideToggleModule,\n ],\n declarations: [\n FilterSelectionDemoComponent,\n FilterSelectionInputComponent,\n ],\n exports: [\n FilterSelectionDemoComponent,\n FilterSelectionInputComponent,\n ]\n})\nexport class FilterSelectionInputModule { }\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/filter-demo/filter-demo.component';\n\nexport * from './lib/filter-selection-input/filter-selection-input.component';\n\nexport * from './lib/filter-selection-input.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5","i6","i7","i8.FilterSelectionInputComponent"],"mappings":"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"}
|
|
Binary file
|
package/index.d.ts
ADDED
|
@@ -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 FilterSelectionDemoComponent 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
|
+
selectionControl_1: import("@angular/forms").FormControl<string[] | null>;
|
|
24
|
+
selectionControl_2: import("@angular/forms").FormControl<string[] | null>;
|
|
25
|
+
changeDetection_1: import("@angular/forms").FormControl<boolean | null>;
|
|
26
|
+
changeDetection_2: import("@angular/forms").FormControl<boolean | null>;
|
|
27
|
+
data: any;
|
|
28
|
+
constructor();
|
|
29
|
+
ngOnInit(): void;
|
|
30
|
+
onPerformPatch(): void;
|
|
31
|
+
onChangeDataType(type: string): void;
|
|
32
|
+
onDisabled_1(disable: boolean): void;
|
|
33
|
+
onDisabled_2(disable: boolean): void;
|
|
34
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterSelectionDemoComponent, never>;
|
|
35
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilterSelectionDemoComponent, "app-filter-selection-demo", never, {}, {}, never, never, false, never>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { EventEmitter, OnInit } from '@angular/core';
|
|
2
|
+
import { AbstractControl, ControlValueAccessor, FormBuilder, ValidationErrors } from '@angular/forms';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
5
|
+
import { MatAutocompleteSelectedEvent, MatAutocompleteTrigger } from '@angular/material/autocomplete';
|
|
6
|
+
import { SelectionItem } from '../models/selection-item.model';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export declare class FilterSelectionInputComponent implements OnInit, ControlValueAccessor {
|
|
9
|
+
autoCompleteInput?: MatAutocompleteTrigger;
|
|
10
|
+
fb: FormBuilder;
|
|
11
|
+
selected: EventEmitter<any>;
|
|
12
|
+
isObjects: boolean;
|
|
13
|
+
defaultDisabled: SelectionItem[];
|
|
14
|
+
formInitialized: boolean;
|
|
15
|
+
panelOpened: boolean;
|
|
16
|
+
disabled: boolean;
|
|
17
|
+
private _data;
|
|
18
|
+
set data(value: any[] | undefined | null);
|
|
19
|
+
get data(): any[];
|
|
20
|
+
isArray: (obj: any) => boolean;
|
|
21
|
+
hasObjects: (obj: any) => boolean;
|
|
22
|
+
isObject: (obj: any) => boolean;
|
|
23
|
+
isEmpty: (obj: any) => boolean;
|
|
24
|
+
findFirst: (obj: string[]) => any;
|
|
25
|
+
firstElement: (arr: string[]) => string;
|
|
26
|
+
isSelected: (value: any) => boolean;
|
|
27
|
+
selectionControl: import("@angular/forms").FormControl<string | null | undefined>;
|
|
28
|
+
appearance: MatFormFieldAppearance;
|
|
29
|
+
label?: string | null | undefined;
|
|
30
|
+
placeholder: string;
|
|
31
|
+
forceSelection: boolean;
|
|
32
|
+
filteredOptions: Observable<string[] | any>;
|
|
33
|
+
selectedOption?: string | any;
|
|
34
|
+
isDisabled: (selection: string) => boolean;
|
|
35
|
+
onChange: any;
|
|
36
|
+
onTouch: any;
|
|
37
|
+
constructor();
|
|
38
|
+
ngOnInit(): void;
|
|
39
|
+
ngAfterViewInit(): void;
|
|
40
|
+
writeValue(value: any): void;
|
|
41
|
+
validate(control: AbstractControl): ValidationErrors | null;
|
|
42
|
+
registerOnChange(fn: any): void;
|
|
43
|
+
registerOnTouched(fn: any): void;
|
|
44
|
+
setDisabledState?(isDisabled: boolean): void;
|
|
45
|
+
onOpened(): void;
|
|
46
|
+
onClosed(): void;
|
|
47
|
+
onSelected(value: MatAutocompleteSelectedEvent): void;
|
|
48
|
+
onEnteredValue(value: string): void;
|
|
49
|
+
findSelection(selection: string): any;
|
|
50
|
+
private _filter;
|
|
51
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterSelectionInputComponent, never>;
|
|
52
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FilterSelectionInputComponent, "app-filter-selection-input", never, { "data": { "alias": "data"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "forceSelection": { "alias": "forceSelection"; "required": false; }; }, { "selected": "selected"; }, never, never, false, never>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import * as i1 from "./filter-demo/filter-demo.component";
|
|
3
|
+
import * as i2 from "./filter-selection-input/filter-selection-input.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/toolbar";
|
|
11
|
+
import * as i10 from "@angular/material/checkbox";
|
|
12
|
+
import * as i11 from "@angular/material/menu";
|
|
13
|
+
import * as i12 from "@angular/material/button-toggle";
|
|
14
|
+
import * as i13 from "@angular/material/divider";
|
|
15
|
+
import * as i14 from "@angular/material/radio";
|
|
16
|
+
import * as i15 from "@angular/material/input";
|
|
17
|
+
import * as i16 from "@angular/material/autocomplete";
|
|
18
|
+
import * as i17 from "./pipes/remove-underscore.pipe";
|
|
19
|
+
import * as i18 from "@angular/material/select";
|
|
20
|
+
import * as i19 from "@angular/material/core";
|
|
21
|
+
import * as i20 from "@angular/material/slide-toggle";
|
|
22
|
+
export declare class FilterSelectionInputModule {
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FilterSelectionInputModule, never>;
|
|
24
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<FilterSelectionInputModule, [typeof i1.FilterSelectionDemoComponent, typeof i2.FilterSelectionInputComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule, typeof i5.MatSliderModule, typeof i6.MatButtonModule, typeof i7.MatIconModule, typeof i8.MatFormFieldModule, typeof i9.MatToolbarModule, typeof i10.MatCheckboxModule, typeof i11.MatMenuModule, typeof i12.MatButtonToggleModule, typeof i13.MatDividerModule, typeof i14.MatRadioModule, typeof i15.MatInputModule, typeof i16.MatAutocompleteModule, typeof i17.RemoveUnderscorePipe, typeof i18.MatSelectModule, typeof i19.MatOptionModule, typeof i20.MatSlideToggleModule], [typeof i1.FilterSelectionDemoComponent, typeof i2.FilterSelectionInputComponent]>;
|
|
25
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<FilterSelectionInputModule>;
|
|
26
|
+
}
|