@muraai/mnl-form 0.0.1-alpha-32ca3fa → 0.0.1-alpha-11e96eb
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 +5 -5
- package/fesm2022/muraai-mnl-form.mjs +152 -145
- package/fesm2022/muraai-mnl-form.mjs.map +1 -1
- package/lib/{formly-lib/formly-lib.component.d.ts → mnl-form/mnl-form.component.d.ts} +3 -3
- package/lib/types/upload-file.d.ts +1 -1
- package/lib/workflow-status/ workflow-status.module.d.ts +8 -8
- package/lib/workflow-status/workflow-status.component.d.ts +1 -1
- package/package.json +4 -5
- package/public-api.d.ts +2 -2
- package/esm2022/lib/confirmation-dialog/confirmation-dialog.component.mjs +0 -34
- package/esm2022/lib/formly-lib/formly-lib.component.mjs +0 -199
- package/esm2022/lib/formly-lib/formly-standalone.module.mjs +0 -155
- package/esm2022/lib/models/custom-form-field.model.mjs +0 -2
- package/esm2022/lib/models/workflow-status.model.mjs +0 -2
- package/esm2022/lib/services/graphql.service.mjs +0 -30
- package/esm2022/lib/services/scoring.service.mjs +0 -103
- package/esm2022/lib/types/action-button-renderer.component.mjs +0 -59
- package/esm2022/lib/types/autocomplete-type.component.mjs +0 -68
- package/esm2022/lib/types/button.type.mjs +0 -72
- package/esm2022/lib/types/comments.type.mjs +0 -102
- package/esm2022/lib/types/country-code-input.type.mjs +0 -181
- package/esm2022/lib/types/custom-date.type.mjs +0 -20
- package/esm2022/lib/types/custom-input.component.mjs +0 -62
- package/esm2022/lib/types/date-format.type.mjs +0 -196
- package/esm2022/lib/types/expansion-panel.types.mjs +0 -85
- package/esm2022/lib/types/formly-field-panel.type.mjs +0 -70
- package/esm2022/lib/types/grid-actionable.type.mjs +0 -197
- package/esm2022/lib/types/grid-formly-cell.component.mjs +0 -42
- package/esm2022/lib/types/grid.type.mjs +0 -125
- package/esm2022/lib/types/input.type.mjs +0 -43
- package/esm2022/lib/types/mu-helper-text.type.mjs +0 -331
- package/esm2022/lib/types/multi-select-autocomplete.mjs +0 -139
- package/esm2022/lib/types/multi-select-checkbox.component.mjs +0 -247
- package/esm2022/lib/types/radio.type.mjs +0 -71
- package/esm2022/lib/types/scrollable-tabs.types.mjs +0 -220
- package/esm2022/lib/types/select-api-auto-complete.component.mjs +0 -111
- package/esm2022/lib/types/select-autocomplete-redefined.component.mjs +0 -142
- package/esm2022/lib/types/select-autocomplete.type.mjs +0 -254
- package/esm2022/lib/types/stepper.type.mjs +0 -268
- package/esm2022/lib/types/table.types.mjs +0 -79
- package/esm2022/lib/types/tabs.types.mjs +0 -293
- package/esm2022/lib/types/tabular-form-dialog.component.mjs +0 -331
- package/esm2022/lib/types/tabular-form.type.mjs +0 -641
- package/esm2022/lib/types/upload-file.mjs +0 -524
- package/esm2022/lib/types/view-file-dialog.component.mjs +0 -90
- package/esm2022/lib/utils/formly.utils.mjs +0 -105
- package/esm2022/lib/validators/custom-email-validator.mjs +0 -18
- package/esm2022/lib/validators/ein-validators.mjs +0 -11
- package/esm2022/lib/validators/gst-validator.mjs +0 -11
- package/esm2022/lib/validators/normal-email-validator.mjs +0 -17
- package/esm2022/lib/validators/npi-validator.mjs +0 -11
- package/esm2022/lib/validators/pan-validator.mjs +0 -11
- package/esm2022/lib/validators/phone-number-validator.mjs +0 -22
- package/esm2022/lib/validators/select-validator.mjs +0 -7
- package/esm2022/lib/validators/tinSsn-validator.mjs +0 -12
- package/esm2022/lib/workflow-status/ workflow-status.module.mjs +0 -52
- package/esm2022/lib/workflow-status/workflow-status.component.mjs +0 -70
- package/esm2022/lib/wrappers/form-field-description-wrapper.component.mjs +0 -44
- package/esm2022/lib/wrappers/form-field-wrapper.component.mjs +0 -34
- package/esm2022/lib/wrappers/formly-wrapper-with-old-value.component.mjs +0 -140
- package/esm2022/lib/wrappers/prefix-suffix-wrapper.component.mjs +0 -95
- package/esm2022/lib/wrappers/prefix-sufix-extension.component.mjs +0 -9
- package/esm2022/muraai-mnl-form.mjs +0 -5
- package/esm2022/public-api.mjs +0 -12
- /package/lib/{formly-lib/formly-standalone.module.d.ts → mnl-form/mnl-form-standalone.module.d.ts} +0 -0
|
@@ -1,331 +0,0 @@
|
|
|
1
|
-
import { TextFieldModule } from '@angular/cdk/text-field';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { Component, ViewChild } from '@angular/core';
|
|
4
|
-
import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
-
import { MatNativeDateModule } from '@angular/material/core';
|
|
6
|
-
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
7
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
8
|
-
import { MatInputModule } from '@angular/material/input';
|
|
9
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
10
|
-
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
11
|
-
import { FormlyModule, } from '@ngx-formly/core';
|
|
12
|
-
import { FieldType } from '@ngx-formly/material';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/common";
|
|
15
|
-
import * as i2 from "@angular/material/input";
|
|
16
|
-
import * as i3 from "@angular/material/form-field";
|
|
17
|
-
import * as i4 from "@angular/cdk/text-field";
|
|
18
|
-
import * as i5 from "@ngx-formly/core";
|
|
19
|
-
import * as i6 from "@angular/forms";
|
|
20
|
-
import * as i7 from "@angular/material/slide-toggle";
|
|
21
|
-
export class MnlFormHelperTextInputComponent extends FieldType {
|
|
22
|
-
get helperLabel() {
|
|
23
|
-
return this.to['helperProps']?.['helperLabel'] || 'Need help?';
|
|
24
|
-
}
|
|
25
|
-
get defaultHelperText() {
|
|
26
|
-
return this.to['helperProps']?.['defaultHelperText'] || '';
|
|
27
|
-
}
|
|
28
|
-
// Get value from primary model (answers)
|
|
29
|
-
get originalValue() {
|
|
30
|
-
const fieldKey = this.field.key;
|
|
31
|
-
return this.field.model?.[fieldKey];
|
|
32
|
-
}
|
|
33
|
-
// Get/Set value from secondary model (helper)
|
|
34
|
-
get helperModel() {
|
|
35
|
-
return (this.to['helperModel'] ||
|
|
36
|
-
this.props['helperModel'] ||
|
|
37
|
-
this.options?.formState?.['helperModel']);
|
|
38
|
-
}
|
|
39
|
-
get helperKey() {
|
|
40
|
-
return this.to['helperKey'] || this.field.key;
|
|
41
|
-
}
|
|
42
|
-
get currentHelperValue() {
|
|
43
|
-
if (this.helperModel && this.helperKey) {
|
|
44
|
-
return this.helperModel[this.helperKey];
|
|
45
|
-
}
|
|
46
|
-
return '';
|
|
47
|
-
}
|
|
48
|
-
set currentHelperValue(value) {
|
|
49
|
-
if (this.helperModel && this.helperKey) {
|
|
50
|
-
this.helperModel[this.helperKey] = value;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
get readonly() {
|
|
54
|
-
return this.to['readonly'] || this.props['readonly'] || false;
|
|
55
|
-
}
|
|
56
|
-
constructor(cdr) {
|
|
57
|
-
super();
|
|
58
|
-
this.cdr = cdr;
|
|
59
|
-
this.checked = false;
|
|
60
|
-
}
|
|
61
|
-
ngOnInit() {
|
|
62
|
-
// Initialize helper form control with value from helper model
|
|
63
|
-
this.helperFormControl = new FormControl(this.currentHelperValue || '');
|
|
64
|
-
// Subscribe to changes in helper form control and update helper model
|
|
65
|
-
this.helperFormControl.valueChanges.subscribe((value) => {
|
|
66
|
-
this.currentHelperValue = value;
|
|
67
|
-
// Emit helper model change to parent component
|
|
68
|
-
this.options?.formState?.['onHelperModelChange']?.(this.helperModel);
|
|
69
|
-
});
|
|
70
|
-
this.setupDefaultField();
|
|
71
|
-
if (this.to['enableHelper']) {
|
|
72
|
-
this.setCorrectValue();
|
|
73
|
-
this.determineInitialState();
|
|
74
|
-
}
|
|
75
|
-
if (this.currentHelperValue && this.currentHelperValue.trim() !== '') {
|
|
76
|
-
this.checked = true;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
ngAfterViewInit() {
|
|
80
|
-
setTimeout(() => {
|
|
81
|
-
this.cdr.detectChanges();
|
|
82
|
-
this.autosize?.resizeToFitContent(true);
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
resizeTextarea() {
|
|
86
|
-
if (this.autosize) {
|
|
87
|
-
this.cdr.detectChanges();
|
|
88
|
-
setTimeout(() => this.autosize?.resizeToFitContent(true), 50);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
toggleSlide() {
|
|
92
|
-
this.checked = !this.checked;
|
|
93
|
-
if (this.checked) {
|
|
94
|
-
// When toggle is opened, check if helper field is empty
|
|
95
|
-
const currenthelper = this.helperFormControl.value;
|
|
96
|
-
if (!currenthelper || currenthelper.trim() === '') {
|
|
97
|
-
this.helperFormControl.setValue(this.defaultHelperText);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
this.helperFormControl.setValue('');
|
|
102
|
-
}
|
|
103
|
-
this.cdr.detectChanges();
|
|
104
|
-
}
|
|
105
|
-
setupDefaultField() {
|
|
106
|
-
const fieldConfig = this.to['defaultFieldConfig'];
|
|
107
|
-
if (fieldConfig) {
|
|
108
|
-
// Get current value from model and sync with formControl
|
|
109
|
-
const fieldKey = this.field.key;
|
|
110
|
-
const modelValue = this.field.model?.[fieldKey];
|
|
111
|
-
// Sync formControl value with model value if it exists
|
|
112
|
-
if (modelValue !== undefined && modelValue !== null) {
|
|
113
|
-
this.formControl.setValue(modelValue, { emitEvent: false });
|
|
114
|
-
}
|
|
115
|
-
// Create enhanced props with necessary fixes for production
|
|
116
|
-
const enhancedProps = {
|
|
117
|
-
...fieldConfig.props,
|
|
118
|
-
};
|
|
119
|
-
// For select fields, add compareWith function to ensure proper value matching in production builds
|
|
120
|
-
if (fieldConfig.type === 'select' && !enhancedProps['compareWith']) {
|
|
121
|
-
enhancedProps['compareWith'] = (o1, o2) => o1 === o2;
|
|
122
|
-
}
|
|
123
|
-
this.defaultFieldConfig = {
|
|
124
|
-
type: fieldConfig.type,
|
|
125
|
-
key: this.field.key || fieldConfig.key || 'defaultKey',
|
|
126
|
-
formControl: this.formControl,
|
|
127
|
-
props: enhancedProps,
|
|
128
|
-
wrappers: fieldConfig.wrappers || [],
|
|
129
|
-
modelOptions: fieldConfig.modelOptions || this.field.modelOptions || {},
|
|
130
|
-
validators: fieldConfig.validators || this.field.validators || {},
|
|
131
|
-
asyncValidators: fieldConfig.asyncValidators || this.field.asyncValidators || {},
|
|
132
|
-
hooks: fieldConfig.hooks || this.field.hooks || {},
|
|
133
|
-
expressions: fieldConfig.expressions || this.field.expressions || {},
|
|
134
|
-
hide: fieldConfig.hide !== undefined ? fieldConfig.hide : false,
|
|
135
|
-
className: fieldConfig.className || this.field.className || '',
|
|
136
|
-
fieldGroupClassName: fieldConfig.fieldGroupClassName ||
|
|
137
|
-
this.field.fieldGroupClassName ||
|
|
138
|
-
'',
|
|
139
|
-
parent: this.field.parent,
|
|
140
|
-
options: this.field.options,
|
|
141
|
-
model: this.field.model,
|
|
142
|
-
form: this.field.form,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
determineInitialState() {
|
|
147
|
-
// Auto-open helper based on scoring criteria
|
|
148
|
-
switch (this.to['scoring']?.['criteria']) {
|
|
149
|
-
case 'exactMatch':
|
|
150
|
-
if (Array.isArray(this.to['scoring']?.['answer'])) {
|
|
151
|
-
// Handle multiselect case where answer is also an array
|
|
152
|
-
if (Array.isArray(this.originalValue)) {
|
|
153
|
-
// Check if not empty AND all selected answers are in expected answers
|
|
154
|
-
const isCorrect = this.originalValue.length > 0 &&
|
|
155
|
-
this.originalValue.every(a => this.to['scoring']?.['answer'].includes(a));
|
|
156
|
-
if (!isCorrect) {
|
|
157
|
-
this.checked = true;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
else {
|
|
161
|
-
// Single value case
|
|
162
|
-
if (!this.to['scoring']?.['answer'].includes(this.originalValue)) {
|
|
163
|
-
this.checked = true;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
break;
|
|
168
|
-
case 'range':
|
|
169
|
-
const answer = this.originalValue;
|
|
170
|
-
const num = typeof answer === 'number' ? answer : Number(answer);
|
|
171
|
-
const correct = Number.isFinite(num) &&
|
|
172
|
-
num >= this.to['scoring']?.['answer'].min &&
|
|
173
|
-
num <= this.to['scoring']?.['answer'].max;
|
|
174
|
-
if (!correct) {
|
|
175
|
-
this.checked = true;
|
|
176
|
-
}
|
|
177
|
-
break;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
setCorrectValue() {
|
|
181
|
-
const currentHelperValue = this.currentHelperValue;
|
|
182
|
-
// If helper already has a value (user edited), don't override
|
|
183
|
-
if (currentHelperValue && currentHelperValue.trim() !== '') {
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
switch (this.to['scoring']?.['criteria']) {
|
|
187
|
-
case 'attempted':
|
|
188
|
-
// For attempted, set defaultHelperText
|
|
189
|
-
this.helperFormControl.setValue('');
|
|
190
|
-
break;
|
|
191
|
-
case 'exactMatch':
|
|
192
|
-
if (Array.isArray(this.to['scoring']?.['answer'])) {
|
|
193
|
-
// Handle multiselect case where answer is also an array
|
|
194
|
-
if (Array.isArray(this.originalValue)) {
|
|
195
|
-
// Check if not empty AND all selected answers are in expected answers
|
|
196
|
-
const isCorrect = this.originalValue.length > 0 &&
|
|
197
|
-
this.originalValue.every(a => this.to['scoring']?.['answer'].includes(a));
|
|
198
|
-
if (isCorrect) {
|
|
199
|
-
// Answer is correct - set empty value in helper
|
|
200
|
-
this.helperFormControl.setValue('');
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
// Answer is incorrect - set defaultHelperText in helper
|
|
204
|
-
this.helperFormControl.setValue(this.defaultHelperText);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
// Single value case
|
|
209
|
-
if (this.to['scoring']?.['answer'].includes(this.originalValue)) {
|
|
210
|
-
// Answer is correct - set empty value in helper
|
|
211
|
-
this.helperFormControl.setValue('');
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
// Answer is incorrect - set defaultHelperText in helper
|
|
215
|
-
this.helperFormControl.setValue(this.defaultHelperText);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
break;
|
|
220
|
-
case 'range':
|
|
221
|
-
const answer = this.originalValue;
|
|
222
|
-
const num = typeof answer === 'number' ? answer : Number(answer);
|
|
223
|
-
const correct = Number.isFinite(num) &&
|
|
224
|
-
num >= this.to['scoring']?.['answer'].min &&
|
|
225
|
-
num <= this.to['scoring']?.['answer'].max;
|
|
226
|
-
if (correct) {
|
|
227
|
-
// Answer is correct - set empty value in helper
|
|
228
|
-
this.helperFormControl.setValue('');
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
// Answer is incorrect - set defaultHelperText in helper
|
|
232
|
-
this.helperFormControl.setValue(this.defaultHelperText);
|
|
233
|
-
}
|
|
234
|
-
break;
|
|
235
|
-
default:
|
|
236
|
-
break;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MnlFormHelperTextInputComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
240
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MnlFormHelperTextInputComponent, isStandalone: true, selector: "mu-helper-text", viewQueries: [{ propertyName: "autosize", first: true, predicate: ["autosize"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
|
|
241
|
-
<div class="helper-text-container">
|
|
242
|
-
<!-- Helper Mode - Show toggle and conditional content -->
|
|
243
|
-
<div *ngIf="to['enableHelper']">
|
|
244
|
-
<mat-label>{{ to.label }}</mat-label>
|
|
245
|
-
<div *ngIf="originalValue" class="flex-row">
|
|
246
|
-
<span class="answer">{{ originalValue }}</span>
|
|
247
|
-
<mat-slide-toggle
|
|
248
|
-
[(ngModel)]="checked"
|
|
249
|
-
(toggleChange)="toggleSlide()"
|
|
250
|
-
[disabled]="field.form?.disabled"
|
|
251
|
-
>{{ helperLabel }}</mat-slide-toggle
|
|
252
|
-
>
|
|
253
|
-
</div>
|
|
254
|
-
|
|
255
|
-
<mat-form-field class="textarea" appearance="outline" *ngIf="checked">
|
|
256
|
-
<textarea
|
|
257
|
-
cdkTextareaAutosize
|
|
258
|
-
#autosize="cdkTextareaAutosize"
|
|
259
|
-
cdkAutosizeMinRows="2"
|
|
260
|
-
rows="2"
|
|
261
|
-
matInput
|
|
262
|
-
[formControl]="helperFormControl"
|
|
263
|
-
[readonly]="readonly || field.form?.disabled"
|
|
264
|
-
[disabled]="field.form?.disabled"
|
|
265
|
-
></textarea>
|
|
266
|
-
</mat-form-field>
|
|
267
|
-
</div>
|
|
268
|
-
|
|
269
|
-
<!-- Default Mode - Show field directly -->
|
|
270
|
-
<div *ngIf="!to['enableHelper']">
|
|
271
|
-
<formly-field *ngIf="defaultFieldConfig" [field]="defaultFieldConfig">
|
|
272
|
-
</formly-field>
|
|
273
|
-
</div>
|
|
274
|
-
</div>
|
|
275
|
-
`, isInline: true, styles: [".helper-text-container{display:flex;flex-direction:column}.answer{font-size:12px;width:85%;overflow-wrap:break-word;word-wrap:break-word}.textarea{margin:0!important;width:100%}.flex-row{display:flex;flex-direction:row;justify-content:space-between}.w-full{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.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: i3.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "component", type: i5.FormlyField, selector: "formly-field", inputs: ["field"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i7.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: TextFieldModule }] }); }
|
|
276
|
-
}
|
|
277
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MnlFormHelperTextInputComponent, decorators: [{
|
|
278
|
-
type: Component,
|
|
279
|
-
args: [{ selector: 'mu-helper-text', standalone: true, imports: [
|
|
280
|
-
CommonModule,
|
|
281
|
-
MatInputModule,
|
|
282
|
-
FormlyModule,
|
|
283
|
-
ReactiveFormsModule,
|
|
284
|
-
FormsModule,
|
|
285
|
-
MatFormFieldModule,
|
|
286
|
-
MatSlideToggleModule,
|
|
287
|
-
MatSelectModule,
|
|
288
|
-
MatDatepickerModule,
|
|
289
|
-
MatNativeDateModule,
|
|
290
|
-
TextFieldModule
|
|
291
|
-
], template: `
|
|
292
|
-
<div class="helper-text-container">
|
|
293
|
-
<!-- Helper Mode - Show toggle and conditional content -->
|
|
294
|
-
<div *ngIf="to['enableHelper']">
|
|
295
|
-
<mat-label>{{ to.label }}</mat-label>
|
|
296
|
-
<div *ngIf="originalValue" class="flex-row">
|
|
297
|
-
<span class="answer">{{ originalValue }}</span>
|
|
298
|
-
<mat-slide-toggle
|
|
299
|
-
[(ngModel)]="checked"
|
|
300
|
-
(toggleChange)="toggleSlide()"
|
|
301
|
-
[disabled]="field.form?.disabled"
|
|
302
|
-
>{{ helperLabel }}</mat-slide-toggle
|
|
303
|
-
>
|
|
304
|
-
</div>
|
|
305
|
-
|
|
306
|
-
<mat-form-field class="textarea" appearance="outline" *ngIf="checked">
|
|
307
|
-
<textarea
|
|
308
|
-
cdkTextareaAutosize
|
|
309
|
-
#autosize="cdkTextareaAutosize"
|
|
310
|
-
cdkAutosizeMinRows="2"
|
|
311
|
-
rows="2"
|
|
312
|
-
matInput
|
|
313
|
-
[formControl]="helperFormControl"
|
|
314
|
-
[readonly]="readonly || field.form?.disabled"
|
|
315
|
-
[disabled]="field.form?.disabled"
|
|
316
|
-
></textarea>
|
|
317
|
-
</mat-form-field>
|
|
318
|
-
</div>
|
|
319
|
-
|
|
320
|
-
<!-- Default Mode - Show field directly -->
|
|
321
|
-
<div *ngIf="!to['enableHelper']">
|
|
322
|
-
<formly-field *ngIf="defaultFieldConfig" [field]="defaultFieldConfig">
|
|
323
|
-
</formly-field>
|
|
324
|
-
</div>
|
|
325
|
-
</div>
|
|
326
|
-
`, styles: [".helper-text-container{display:flex;flex-direction:column}.answer{font-size:12px;width:85%;overflow-wrap:break-word;word-wrap:break-word}.textarea{margin:0!important;width:100%}.flex-row{display:flex;flex-direction:row;justify-content:space-between}.w-full{width:100%}\n"] }]
|
|
327
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { autosize: [{
|
|
328
|
-
type: ViewChild,
|
|
329
|
-
args: ['autosize']
|
|
330
|
-
}] } });
|
|
331
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXUtaGVscGVyLXRleHQudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tbGliL3NyYy9saWIvdHlwZXMvbXUtaGVscGVyLXRleHQudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9DLFNBQVMsRUFBVSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFHTCxZQUFZLEdBQ2IsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7OztBQStFakQsTUFBTSxPQUFPLCtCQUNYLFNBQVEsU0FBMEI7SUFPbEMsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksWUFBWSxDQUFDO0lBQ2pFLENBQUM7SUFDRCxJQUFJLGlCQUFpQjtRQUNuQixPQUFPLElB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QUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7cUJBQU0sQ0FBQztvQkFDTix3REFBd0Q7b0JBQ3hELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7Z0JBQzFELENBQUM7Z0JBQ0QsTUFBTTtZQUVSO2dCQUNFLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzsrR0FoUVUsK0JBQStCO21HQUEvQiwrQkFBK0IsdU1BN0RoQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQ1QsdVZBL0NDLFlBQVksa0lBQ1osY0FBYyxxMUJBQ2QsWUFBWSx3SEFDWixtQkFBbUIseWtCQUNuQixXQUFXLHNQQUNYLGtCQUFrQiw4QkFDbEIsb0JBQW9CLHlYQUNwQixlQUFlLDhCQUNmLG1CQUFtQiw4QkFDbkIsbUJBQW1CLDhCQUNuQixlQUFlOzs0RkErRE4sK0JBQStCO2tCQTdFM0MsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixXQUFXO3dCQUNYLGtCQUFrQjt3QkFDbEIsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQixlQUFlO3FCQUNoQixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVDtzRkE4QnNCLFFBQVE7c0JBQTlCLFNBQVM7dUJBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka1RleHRhcmVhQXV0b3NpemUsIFRleHRGaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXh0LWZpZWxkJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0TmF0aXZlRGF0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQge1xuICBGaWVsZFR5cGVDb25maWcsXG4gIEZvcm1seUZpZWxkQ29uZmlnLFxuICBGb3JtbHlNb2R1bGUsXG59IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnQG5neC1mb3JtbHkvbWF0ZXJpYWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdS1oZWxwZXItdGV4dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdFNsaWRlVG9nZ2xlTW9kdWxlLFxuICAgIE1hdFNlbGVjdE1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gICAgVGV4dEZpZWxkTW9kdWxlIFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJoZWxwZXItdGV4dC1jb250YWluZXJcIj5cbiAgICAgIDwhLS0gSGVscGVyIE1vZGUgLSBTaG93IHRvZ2dsZSBhbmQgY29uZGl0aW9uYWwgY29udGVudCAtLT5cbiAgICAgIDxkaXYgKm5nSWY9XCJ0b1snZW5hYmxlSGVscGVyJ11cIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyB0by5sYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwib3JpZ2luYWxWYWx1ZVwiIGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFuc3dlclwiPnt7IG9yaWdpbmFsVmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGVcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2hlY2tlZFwiXG4gICAgICAgICAgICAodG9nZ2xlQ2hhbmdlKT1cInRvZ2dsZVNsaWRlKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkLmZvcm0/LmRpc2FibGVkXCJcbiAgICAgICAgICAgID57eyBoZWxwZXJMYWJlbCB9fTwvbWF0LXNsaWRlLXRvZ2dsZVxuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidGV4dGFyZWFcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiICpuZ0lmPVwiY2hlY2tlZFwiPlxuICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgY2RrVGV4dGFyZWFBdXRvc2l6ZVxuICAgICAgICAgICAgI2F1dG9zaXplPVwiY2RrVGV4dGFyZWFBdXRvc2l6ZVwiXG4gICAgICAgICAgICBjZGtBdXRvc2l6ZU1pblJvd3M9XCIyXCJcbiAgICAgICAgICAgIHJvd3M9XCIyXCJcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaGVscGVyRm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5IHx8IGZpZWxkLmZvcm0/LmRpc2FibGVkXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZC5mb3JtPy5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBEZWZhdWx0IE1vZGUgLSBTaG93IGZpZWxkIGRpcmVjdGx5IC0tPlxuICAgICAgPGRpdiAqbmdJZj1cIiF0b1snZW5hYmxlSGVscGVyJ11cIj5cbiAgICAgICAgPGZvcm1seS1maWVsZCAqbmdJZj1cImRlZmF1bHRGaWVsZENvbmZpZ1wiIFtmaWVsZF09XCJkZWZhdWx0RmllbGRDb25maWdcIj5cbiAgICAgICAgPC9mb3JtbHktZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBgXG4gICAgIC5oZWxwZXItdGV4dC1jb250YWluZXJ7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgfVxuICAgICAuYW5zd2Vye1xuICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgd2lkdGg6IDg1JTtcbiAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgIH1cbiAgICAgIC50ZXh0YXJlYXtcbiAgICAgIG1hcmdpbjogMHB4ICFpbXBvcnRhbnQ7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgfVxuICAgICAuZmxleC1yb3d7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgfVxuICAgICAudy1mdWxse1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgIH1cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgTW5sRm9ybUhlbHBlclRleHRJbnB1dENvbXBvbmVudFxuICBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc+XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0XG57XG4gIEBWaWV3Q2hpbGQoJ2F1dG9zaXplJykgYXV0b3NpemU/OiBDZGtUZXh0YXJlYUF1dG9zaXplO1xuICBjaGVja2VkID0gZmFsc2U7XG4gIGhlbHBlckZvcm1Db250cm9sITogRm9ybUNvbnRyb2w7IC8vIFNlcGFyYXRlIGZvcm0gY29udHJvbCBmb3IgaGVscGVyIG1vZGVsXG5cbiAgZ2V0IGhlbHBlckxhYmVsKCkge1xuICAgIHJldHVybiB0aGlzLnRvWydoZWxwZXJQcm9wcyddPy5bJ2hlbHBlckxhYmVsJ10gfHwgJ05lZWQgaGVscD8nO1xuICB9XG4gIGdldCBkZWZhdWx0SGVscGVyVGV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy50b1snaGVscGVyUHJvcHMnXT8uWydkZWZhdWx0SGVscGVyVGV4dCddIHx8ICcnO1xuICB9XG5cbiAgLy8gR2V0IHZhbHVlIGZyb20gcHJpbWFyeSBtb2RlbCAoYW5zd2VycylcbiAgZ2V0IG9yaWdpbmFsVmFsdWUoKSB7XG4gICAgY29uc3QgZmllbGRLZXkgPSB0aGlzLmZpZWxkLmtleSBhcyBzdHJpbmc7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQubW9kZWw/LltmaWVsZEtleV07XG4gIH1cblxuICAvLyBHZXQvU2V0IHZhbHVlIGZyb20gc2Vjb25kYXJ5IG1vZGVsIChoZWxwZXIpXG4gIGdldCBoZWxwZXJNb2RlbCgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy50b1snaGVscGVyTW9kZWwnXSB8fFxuICAgICAgdGhpcy5wcm9wc1snaGVscGVyTW9kZWwnXSB8fFxuICAgICAgdGhpcy5vcHRpb25zPy5mb3JtU3RhdGU/LlsnaGVscGVyTW9kZWwnXVxuICAgICk7XG4gIH1cblxuICBnZXQgaGVscGVyS2V5KCkge1xuICAgIHJldHVybiB0aGlzLnRvWydoZWxwZXJLZXknXSB8fCB0aGlzLmZpZWxkLmtleTtcbiAgfVxuXG4gIGdldCBjdXJyZW50SGVscGVyVmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuaGVscGVyTW9kZWwgJiYgdGhpcy5oZWxwZXJLZXkpIHtcbiAgICAgIHJldHVybiB0aGlzLmhlbHBlck1vZGVsW3RoaXMuaGVscGVyS2V5IGFzIHN0cmluZ107XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHNldCBjdXJyZW50SGVscGVyVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLmhlbHBlck1vZGVsICYmIHRoaXMuaGVscGVyS2V5KSB7XG4gICAgICB0aGlzLmhlbHBlck1vZGVsW3RoaXMuaGVscGVyS2V5IGFzIHN0cmluZ10gPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXQgcmVhZG9ubHkoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9bJ3JlYWRvbmx5J10gfHwgdGhpcy5wcm9wc1sncmVhZG9ubHknXSB8fCBmYWxzZTtcbiAgfVxuXG4gIGRlZmF1bHRGaWVsZENvbmZpZz86IEZvcm1seUZpZWxkQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBJbml0aWFsaXplIGhlbHBlciBmb3JtIGNvbnRyb2wgd2l0aCB2YWx1ZSBmcm9tIGhlbHBlciBtb2RlbFxuICAgIHRoaXMuaGVscGVyRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodGhpcy5jdXJyZW50SGVscGVyVmFsdWUgfHwgJycpO1xuXG4gICAgLy8gU3Vic2NyaWJlIHRvIGNoYW5nZXMgaW4gaGVscGVyIGZvcm0gY29udHJvbCBhbmQgdXBkYXRlIGhlbHBlciBtb2RlbFxuICAgIHRoaXMuaGVscGVyRm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudEhlbHBlclZhbHVlID0gdmFsdWU7XG4gICAgICAvLyBFbWl0IGhlbHBlciBtb2RlbCBjaGFuZ2UgdG8gcGFyZW50IGNvbXBvbmVudFxuICAgICAgdGhpcy5vcHRpb25zPy5mb3JtU3RhdGU/Llsnb25IZWxwZXJNb2RlbENoYW5nZSddPy4odGhpcy5oZWxwZXJNb2RlbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnNldHVwRGVmYXVsdEZpZWxkKCk7XG5cbiAgICBpZiAodGhpcy50b1snZW5hYmxlSGVscGVyJ10pIHtcbiAgICAgIHRoaXMuc2V0Q29ycmVjdFZhbHVlKCk7XG4gICAgICB0aGlzLmRldGVybWluZUluaXRpYWxTdGF0ZSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jdXJyZW50SGVscGVyVmFsdWUgJiYgdGhpcy5jdXJyZW50SGVscGVyVmFsdWUudHJpbSgpICE9PSAnJykge1xuICAgICAgdGhpcy5jaGVja2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLmF1dG9zaXplPy5yZXNpemVUb0ZpdENvbnRlbnQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuXG4gIHB1YmxpYyByZXNpemVUZXh0YXJlYSgpIHtcbiAgICBpZiAodGhpcy5hdXRvc2l6ZSkge1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmF1dG9zaXplPy5yZXNpemVUb0ZpdENvbnRlbnQodHJ1ZSksIDUwKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVTbGlkZSgpIHtcbiAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcbiAgICAgIC8vIFdoZW4gdG9nZ2xlIGlzIG9wZW5lZCwgY2hlY2sgaWYgaGVscGVyIGZpZWxkIGlzIGVtcHR5XG4gICAgICBjb25zdCBjdXJyZW50aGVscGVyID0gdGhpcy5oZWxwZXJGb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgIGlmICghY3VycmVudGhlbHBlciB8fCBjdXJyZW50aGVscGVyLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgdGhpcy5oZWxwZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRIZWxwZXJUZXh0KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZWxwZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHNldHVwRGVmYXVsdEZpZWxkKCkge1xuICAgIGNvbnN0IGZpZWxkQ29uZmlnID0gdGhpcy50b1snZGVmYXVsdEZpZWxkQ29uZmlnJ107XG4gICAgaWYgKGZpZWxkQ29uZmlnKSB7XG4gICAgICAvLyBHZXQgY3VycmVudCB2YWx1ZSBmcm9tIG1vZGVsIGFuZCBzeW5jIHdpdGggZm9ybUNvbnRyb2xcbiAgICAgIGNvbnN0IGZpZWxkS2V5ID0gdGhpcy5maWVsZC5rZXkgYXMgc3RyaW5nO1xuICAgICAgY29uc3QgbW9kZWxWYWx1ZSA9IHRoaXMuZmllbGQubW9kZWw/LltmaWVsZEtleV07XG4gICAgICBcbiAgICAgIC8vIFN5bmMgZm9ybUNvbnRyb2wgdmFsdWUgd2l0aCBtb2RlbCB2YWx1ZSBpZiBpdCBleGlzdHNcbiAgICAgIGlmIChtb2RlbFZhbHVlICE9PSB1bmRlZmluZWQgJiYgbW9kZWxWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKG1vZGVsVmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgLy8gQ3JlYXRlIGVuaGFuY2VkIHByb3BzIHdpdGggbmVjZXNzYXJ5IGZpeGVzIGZvciBwcm9kdWN0aW9uXG4gICAgICBjb25zdCBlbmhhbmNlZFByb3BzID0ge1xuICAgICAgICAuLi5maWVsZENvbmZpZy5wcm9wcyxcbiAgICAgIH07XG4gICAgICBcbiAgICAgIC8vIEZvciBzZWxlY3QgZmllbGRzLCBhZGQgY29tcGFyZVdpdGggZnVuY3Rpb24gdG8gZW5zdXJlIHByb3BlciB2YWx1ZSBtYXRjaGluZyBpbiBwcm9kdWN0aW9uIGJ1aWxkc1xuICAgICAgaWYgKGZpZWxkQ29uZmlnLnR5cGUgPT09ICdzZWxlY3QnICYmICFlbmhhbmNlZFByb3BzWydjb21wYXJlV2l0aCddKSB7XG4gICAgICAgIGVuaGFuY2VkUHJvcHNbJ2NvbXBhcmVXaXRoJ10gPSAobzE6IGFueSwgbzI6IGFueSkgPT4gbzEgPT09IG8yO1xuICAgICAgfVxuICAgICAgXG4gICAgICB0aGlzLmRlZmF1bHRGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgdHlwZTogZmllbGRDb25maWcudHlwZSxcbiAgICAgICAga2V5OiB0aGlzLmZpZWxkLmtleSB8fCBmaWVsZENvbmZpZy5rZXkgfHwgJ2RlZmF1bHRLZXknLFxuICAgICAgICBmb3JtQ29udHJvbDogdGhpcy5mb3JtQ29udHJvbCxcbiAgICAgICAgcHJvcHM6IGVuaGFuY2VkUHJvcHMsXG4gICAgICAgIHdyYXBwZXJzOiBmaWVsZENvbmZpZy53cmFwcGVycyB8fCBbXSxcbiAgICAgICAgbW9kZWxPcHRpb25zOiBmaWVsZENvbmZpZy5tb2RlbE9wdGlvbnMgfHwgdGhpcy5maWVsZC5tb2RlbE9wdGlvbnMgfHwge30sXG4gICAgICAgIHZhbGlkYXRvcnM6IGZpZWxkQ29uZmlnLnZhbGlkYXRvcnMgfHwgdGhpcy5maWVsZC52YWxpZGF0b3JzIHx8IHt9LFxuICAgICAgICBhc3luY1ZhbGlkYXRvcnM6XG4gICAgICAgICAgZmllbGRDb25maWcuYXN5bmNWYWxpZGF0b3JzIHx8IHRoaXMuZmllbGQuYXN5bmNWYWxpZGF0b3JzIHx8IHt9LFxuICAgICAgICBob29rczogZmllbGRDb25maWcuaG9va3MgfHwgdGhpcy5maWVsZC5ob29rcyB8fCB7fSxcbiAgICAgICAgZXhwcmVzc2lvbnM6IGZpZWxkQ29uZmlnLmV4cHJlc3Npb25zIHx8IHRoaXMuZmllbGQuZXhwcmVzc2lvbnMgfHwge30sXG4gICAgICAgIGhpZGU6IGZpZWxkQ29uZmlnLmhpZGUgIT09IHVuZGVmaW5lZCA/IGZpZWxkQ29uZmlnLmhpZGUgOiBmYWxzZSxcbiAgICAgICAgY2xhc3NOYW1lOiBmaWVsZENvbmZpZy5jbGFzc05hbWUgfHwgdGhpcy5maWVsZC5jbGFzc05hbWUgfHwgJycsXG4gICAgICAgIGZpZWxkR3JvdXBDbGFzc05hbWU6XG4gICAgICAgICAgZmllbGRDb25maWcuZmllbGRHcm91cENsYXNzTmFtZSB8fFxuICAgICAgICAgIHRoaXMuZmllbGQuZmllbGRHcm91cENsYXNzTmFtZSB8fFxuICAgICAgICAgICcnLFxuICAgICAgICBwYXJlbnQ6IHRoaXMuZmllbGQucGFyZW50LFxuICAgICAgICBvcHRpb25zOiB0aGlzLmZpZWxkLm9wdGlvbnMsXG4gICAgICAgIG1vZGVsOiB0aGlzLmZpZWxkLm1vZGVsLFxuICAgICAgICBmb3JtOiB0aGlzLmZpZWxkLmZvcm0sXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIGRldGVybWluZUluaXRpYWxTdGF0ZSgpIHtcbiAgICAvLyBBdXRvLW9wZW4gaGVscGVyIGJhc2VkIG9uIHNjb3JpbmcgY3JpdGVyaWFcbiAgICBzd2l0Y2ggKHRoaXMudG9bJ3Njb3JpbmcnXT8uWydjcml0ZXJpYSddKSB7XG4gICAgICBjYXNlICdleGFjdE1hdGNoJzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy50b1snc2NvcmluZyddPy5bJ2Fuc3dlciddKSkge1xuICAgICAgICAgIC8vIEhhbmRsZSBtdWx0aXNlbGVjdCBjYXNlIHdoZXJlIGFuc3dlciBpcyBhbHNvIGFuIGFycmF5XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcmlnaW5hbFZhbHVlKSkge1xuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgbm90IGVtcHR5IEFORCBhbGwgc2VsZWN0ZWQgYW5zd2VycyBhcmUgaW4gZXhwZWN0ZWQgYW5zd2Vyc1xuICAgICAgICAgICAgY29uc3QgaXNDb3JyZWN0ID0gdGhpcy5vcmlnaW5hbFZhbHVlLmxlbmd0aCA+IDAgJiYgXG4gICAgICAgICAgICAgIHRoaXMub3JpZ2luYWxWYWx1ZS5ldmVyeShhID0+IHRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXS5pbmNsdWRlcyhhKSk7XG4gICAgICAgICAgICBpZiAoIWlzQ29ycmVjdCkge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTaW5nbGUgdmFsdWUgY2FzZVxuICAgICAgICAgICAgaWYgKCF0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10uaW5jbHVkZXModGhpcy5vcmlnaW5hbFZhbHVlKSkge1xuICAgICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAncmFuZ2UnOlxuICAgICAgICBjb25zdCBhbnN3ZXIgPSB0aGlzLm9yaWdpbmFsVmFsdWU7XG4gICAgICAgIGNvbnN0IG51bSA9IHR5cGVvZiBhbnN3ZXIgPT09ICdudW1iZXInID8gYW5zd2VyIDogTnVtYmVyKGFuc3dlcik7XG5cbiAgICAgICAgY29uc3QgY29ycmVjdCA9XG4gICAgICAgICAgTnVtYmVyLmlzRmluaXRlKG51bSkgJiZcbiAgICAgICAgICBudW0gPj0gdGhpcy50b1snc2NvcmluZyddPy5bJ2Fuc3dlciddLm1pbiAmJlxuICAgICAgICAgIG51bSA8PSB0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10ubWF4O1xuXG4gICAgICAgIGlmICghY29ycmVjdCkge1xuICAgICAgICAgIHRoaXMuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgc2V0Q29ycmVjdFZhbHVlKCkge1xuICAgIGNvbnN0IGN1cnJlbnRIZWxwZXJWYWx1ZSA9IHRoaXMuY3VycmVudEhlbHBlclZhbHVlO1xuXG4gICAgLy8gSWYgaGVscGVyIGFscmVhZHkgaGFzIGEgdmFsdWUgKHVzZXIgZWRpdGVkKSwgZG9uJ3Qgb3ZlcnJpZGVcbiAgICBpZiAoY3VycmVudEhlbHBlclZhbHVlICYmIGN1cnJlbnRIZWxwZXJWYWx1ZS50cmltKCkgIT09ICcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLnRvWydzY29yaW5nJ10/LlsnY3JpdGVyaWEnXSkge1xuICAgICAgY2FzZSAnYXR0ZW1wdGVkJzpcbiAgICAgICAgLy8gRm9yIGF0dGVtcHRlZCwgc2V0IGRlZmF1bHRIZWxwZXJUZXh0XG4gICAgICAgIHRoaXMuaGVscGVyRm9ybUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnZXhhY3RNYXRjaCc6XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXSkpIHtcbiAgICAgICAgICAvLyBIYW5kbGUgbXVsdGlzZWxlY3QgY2FzZSB3aGVyZSBhbnN3ZXIgaXMgYWxzbyBhbiBhcnJheVxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMub3JpZ2luYWxWYWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIENoZWNrIGlmIG5vdCBlbXB0eSBBTkQgYWxsIHNlbGVjdGVkIGFuc3dlcnMgYXJlIGluIGV4cGVjdGVkIGFuc3dlcnNcbiAgICAgICAgICAgIGNvbnN0IGlzQ29ycmVjdCA9IHRoaXMub3JpZ2luYWxWYWx1ZS5sZW5ndGggPiAwICYmIFxuICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsVmFsdWUuZXZlcnkoYSA9PiB0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10uaW5jbHVkZXMoYSkpO1xuICAgICAgICAgICAgaWYgKGlzQ29ycmVjdCkge1xuICAgICAgICAgICAgICAvLyBBbnN3ZXIgaXMgY29ycmVjdCAtIHNldCBlbXB0eSB2YWx1ZSBpbiBoZWxwZXJcbiAgICAgICAgICAgICAgdGhpcy5oZWxwZXJGb3JtQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBBbnN3ZXIgaXMgaW5jb3JyZWN0IC0gc2V0IGRlZmF1bHRIZWxwZXJUZXh0IGluIGhlbHBlclxuICAgICAgICAgICAgICB0aGlzLmhlbHBlckZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuZGVmYXVsdEhlbHBlclRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTaW5nbGUgdmFsdWUgY2FzZVxuICAgICAgICAgICAgaWYgKHRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXS5pbmNsdWRlcyh0aGlzLm9yaWdpbmFsVmFsdWUpKSB7XG4gICAgICAgICAgICAgIC8vIEFuc3dlciBpcyBjb3JyZWN0IC0gc2V0IGVtcHR5IHZhbHVlIGluIGhlbHBlclxuICAgICAgICAgICAgICB0aGlzLmhlbHBlckZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIEFuc3dlciBpcyBpbmNvcnJlY3QgLSBzZXQgZGVmYXVsdEhlbHBlclRleHQgaW4gaGVscGVyXG4gICAgICAgICAgICAgIHRoaXMuaGVscGVyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5kZWZhdWx0SGVscGVyVGV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdyYW5nZSc6XG4gICAgICAgIGNvbnN0IGFuc3dlciA9IHRoaXMub3JpZ2luYWxWYWx1ZTtcbiAgICAgICAgY29uc3QgbnVtID0gdHlwZW9mIGFuc3dlciA9PT0gJ251bWJlcicgPyBhbnN3ZXIgOiBOdW1iZXIoYW5zd2VyKTtcblxuICAgICAgICBjb25zdCBjb3JyZWN0ID1cbiAgICAgICAgICBOdW1iZXIuaXNGaW5pdGUobnVtKSAmJlxuICAgICAgICAgIG51bSA+PSB0aGlzLnRvWydzY29yaW5nJ10/LlsnYW5zd2VyJ10ubWluICYmXG4gICAgICAgICAgbnVtIDw9IHRoaXMudG9bJ3Njb3JpbmcnXT8uWydhbnN3ZXInXS5tYXg7XG5cbiAgICAgICAgaWYgKGNvcnJlY3QpIHtcbiAgICAgICAgICAvLyBBbnN3ZXIgaXMgY29ycmVjdCAtIHNldCBlbXB0eSB2YWx1ZSBpbiBoZWxwZXJcbiAgICAgICAgICB0aGlzLmhlbHBlckZvcm1Db250cm9sLnNldFZhbHVlKCcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBbnN3ZXIgaXMgaW5jb3JyZWN0IC0gc2V0IGRlZmF1bHRIZWxwZXJUZXh0IGluIGhlbHBlclxuICAgICAgICAgIHRoaXMuaGVscGVyRm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5kZWZhdWx0SGVscGVyVGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { Component, computed, inject, model, signal } from "@angular/core";
|
|
2
|
-
import { FieldType } from "@ngx-formly/material";
|
|
3
|
-
import { FormControl, FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
4
|
-
import { MatFormFieldModule } from "@angular/material/form-field";
|
|
5
|
-
import { MatInputModule } from "@angular/material/input";
|
|
6
|
-
import { MatAutocompleteModule } from "@angular/material/autocomplete";
|
|
7
|
-
import { AsyncPipe, CommonModule } from "@angular/common";
|
|
8
|
-
import { FormlyModule } from "@ngx-formly/core";
|
|
9
|
-
import { MatChipsModule } from "@angular/material/chips";
|
|
10
|
-
import { LiveAnnouncer } from "@angular/cdk/a11y";
|
|
11
|
-
import { MatIconModule } from "@angular/material/icon";
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/forms";
|
|
14
|
-
import * as i2 from "@angular/material/form-field";
|
|
15
|
-
import * as i3 from "@angular/material/autocomplete";
|
|
16
|
-
import * as i4 from "@angular/material/core";
|
|
17
|
-
import * as i5 from "@ngx-formly/core";
|
|
18
|
-
import * as i6 from "@angular/material/chips";
|
|
19
|
-
import * as i7 from "@angular/material/icon";
|
|
20
|
-
import * as i8 from "@angular/common";
|
|
21
|
-
export class MultiSelectAutocompleteComponent extends FieldType {
|
|
22
|
-
constructor() {
|
|
23
|
-
super(...arguments);
|
|
24
|
-
this.currentState = model("");
|
|
25
|
-
this.chipsArr = signal([]);
|
|
26
|
-
this.announcer = inject(LiveAnnouncer);
|
|
27
|
-
this.itemControl = new FormControl();
|
|
28
|
-
this.filteredStates = computed(() => {
|
|
29
|
-
const currentState = this.currentState().toLowerCase();
|
|
30
|
-
this.tempArr = this.props.options;
|
|
31
|
-
this.tempArr = this.tempArr?.filter((state) => !this.formControl.value.includes(state));
|
|
32
|
-
return currentState
|
|
33
|
-
? this.tempArr?.filter((state) => state.toLowerCase().includes(currentState))
|
|
34
|
-
: this.tempArr?.slice();
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
removeChip(i) {
|
|
38
|
-
const value = this.formControl.value;
|
|
39
|
-
this.formControl.setValue([
|
|
40
|
-
...value.slice(0, i),
|
|
41
|
-
...value.slice(i + 1, value.length)
|
|
42
|
-
]);
|
|
43
|
-
this.formControl.markAsTouched();
|
|
44
|
-
}
|
|
45
|
-
selectedChip(event) {
|
|
46
|
-
const data = [
|
|
47
|
-
...this.itemControl.value,
|
|
48
|
-
event.option.viewValue,
|
|
49
|
-
];
|
|
50
|
-
this.formControl.setValue([...new Set(data)]);
|
|
51
|
-
this.itemControl.setValue("");
|
|
52
|
-
this.currentState.set("");
|
|
53
|
-
}
|
|
54
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiSelectAutocompleteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
55
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: MultiSelectAutocompleteComponent, isStandalone: true, selector: "mu-formly-autocomplete-type", inputs: { currentState: { classPropertyName: "currentState", publicName: "currentState", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { currentState: "currentStateChange" }, usesInheritance: true, ngImport: i0, template: `
|
|
56
|
-
<mat-chip-grid
|
|
57
|
-
#chipGrid
|
|
58
|
-
[formControl]="itemControl"
|
|
59
|
-
[formlyAttributes]="field"
|
|
60
|
-
>
|
|
61
|
-
@for (chip of formControl.value; track $index; let i= $index) {
|
|
62
|
-
<mat-chip-row (removed)="removeChip(i)">
|
|
63
|
-
{{ chip }}
|
|
64
|
-
<button matChipRemove [attr.aria-label]="'remove ' + chip">
|
|
65
|
-
<mat-icon>cancel</mat-icon>
|
|
66
|
-
</button>
|
|
67
|
-
</mat-chip-row>
|
|
68
|
-
}
|
|
69
|
-
</mat-chip-grid>
|
|
70
|
-
<input
|
|
71
|
-
[(ngModel)]="currentState"
|
|
72
|
-
[matChipInputFor]="chipGrid"
|
|
73
|
-
[matAutocomplete]="auto"
|
|
74
|
-
/>
|
|
75
|
-
<mat-autocomplete
|
|
76
|
-
#auto="matAutocomplete"
|
|
77
|
-
(optionSelected)="selectedChip($event)"
|
|
78
|
-
>
|
|
79
|
-
@for (state of filteredStates(); track state) {
|
|
80
|
-
<mat-option [value]="state">{{ state }}</mat-option>
|
|
81
|
-
}
|
|
82
|
-
</mat-autocomplete>
|
|
83
|
-
<mat-error *ngIf="formControl.invalid && formControl.touched">
|
|
84
|
-
{{ field.validation?.messages?.['required'] }}
|
|
85
|
-
</mat-error>
|
|
86
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "directive", type: i2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i3.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i3.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i5.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i6.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i6.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i6.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i6.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
87
|
-
}
|
|
88
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MultiSelectAutocompleteComponent, decorators: [{
|
|
89
|
-
type: Component,
|
|
90
|
-
args: [{
|
|
91
|
-
selector: "mu-formly-autocomplete-type",
|
|
92
|
-
standalone: true,
|
|
93
|
-
imports: [
|
|
94
|
-
FormsModule,
|
|
95
|
-
MatFormFieldModule,
|
|
96
|
-
MatInputModule,
|
|
97
|
-
MatAutocompleteModule,
|
|
98
|
-
ReactiveFormsModule,
|
|
99
|
-
AsyncPipe,
|
|
100
|
-
FormlyModule,
|
|
101
|
-
MatChipsModule,
|
|
102
|
-
MatIconModule,
|
|
103
|
-
CommonModule
|
|
104
|
-
],
|
|
105
|
-
template: `
|
|
106
|
-
<mat-chip-grid
|
|
107
|
-
#chipGrid
|
|
108
|
-
[formControl]="itemControl"
|
|
109
|
-
[formlyAttributes]="field"
|
|
110
|
-
>
|
|
111
|
-
@for (chip of formControl.value; track $index; let i= $index) {
|
|
112
|
-
<mat-chip-row (removed)="removeChip(i)">
|
|
113
|
-
{{ chip }}
|
|
114
|
-
<button matChipRemove [attr.aria-label]="'remove ' + chip">
|
|
115
|
-
<mat-icon>cancel</mat-icon>
|
|
116
|
-
</button>
|
|
117
|
-
</mat-chip-row>
|
|
118
|
-
}
|
|
119
|
-
</mat-chip-grid>
|
|
120
|
-
<input
|
|
121
|
-
[(ngModel)]="currentState"
|
|
122
|
-
[matChipInputFor]="chipGrid"
|
|
123
|
-
[matAutocomplete]="auto"
|
|
124
|
-
/>
|
|
125
|
-
<mat-autocomplete
|
|
126
|
-
#auto="matAutocomplete"
|
|
127
|
-
(optionSelected)="selectedChip($event)"
|
|
128
|
-
>
|
|
129
|
-
@for (state of filteredStates(); track state) {
|
|
130
|
-
<mat-option [value]="state">{{ state }}</mat-option>
|
|
131
|
-
}
|
|
132
|
-
</mat-autocomplete>
|
|
133
|
-
<mat-error *ngIf="formControl.invalid && formControl.touched">
|
|
134
|
-
{{ field.validation?.messages?.['required'] }}
|
|
135
|
-
</mat-error>
|
|
136
|
-
`,
|
|
137
|
-
}]
|
|
138
|
-
}] });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Zvcm0tbGliL3NyYy9saWIvdHlwZXMvbXVsdGktc2VsZWN0LWF1dG9jb21wbGV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7O0FBa0R2RCxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsU0FBMEI7SUFoRGhGOztRQWlEVyxpQkFBWSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixhQUFRLEdBQUcsTUFBTSxDQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFM0MsZ0JBQVcsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRXZCLG1CQUFjLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN0QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzdGLE9BQU8sWUFBWTtnQkFDZixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRSxDQUNwQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUMzQztnQkFDRCxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztLQXNCTjtJQW5CQyxVQUFVLENBQUMsQ0FBSztRQUNkLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDO1lBQ3hCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3BCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDcEMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUNsQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQW1DO1FBQzlDLE1BQU0sSUFBSSxHQUFJO1lBQ1osR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUs7WUFDekIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ3ZCLENBQUE7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7K0dBcENVLGdDQUFnQzttR0FBaEMsZ0NBQWdDLHdUQWpDakM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQlQsMkRBMUNDLFdBQVcsOG1CQUNYLGtCQUFrQiwySEFDbEIsY0FBYyw4QkFDZCxxQkFBcUIsdzFCQUNyQixtQkFBbUIsaU5BRW5CLFlBQVkscUpBQ1osY0FBYyw0dUJBQ2QsYUFBYSxtTEFDYixZQUFZOzs0RkFtQ0gsZ0NBQWdDO2tCQWhENUMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFO3dCQUNQLFdBQVc7d0JBQ1gsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3dCQUNiLFlBQVk7cUJBQ2I7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0JUO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBtb2RlbCwgT25Jbml0LCBzaWduYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBuZ3gtZm9ybWx5L21hdGVyaWFsXCI7XG5pbXBvcnQgeyBGaWVsZFR5cGVDb25maWcgfSBmcm9tIFwiQG5neC1mb3JtbHkvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZFwiO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXRcIjtcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSwgTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGVcIjtcbmltcG9ydCB7IEFzeW5jUGlwZSwgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgRm9ybWx5TW9kdWxlIH0gZnJvbSBcIkBuZ3gtZm9ybWx5L2NvcmVcIjtcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NoaXBzXCI7XG5pbXBvcnQgeyBMaXZlQW5ub3VuY2VyIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9hMTF5XCI7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm11LWZvcm1seS1hdXRvY29tcGxldGUtdHlwZVwiLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgIE1hdElucHV0TW9kdWxlLFxuICAgIE1hdEF1dG9jb21wbGV0ZU1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgICBGb3JtbHlNb2R1bGUsXG4gICAgTWF0Q2hpcHNNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBDb21tb25Nb2R1bGVcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWF0LWNoaXAtZ3JpZFxuICAgICAgI2NoaXBHcmlkXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiaXRlbUNvbnRyb2xcIlxuICAgICAgW2Zvcm1seUF0dHJpYnV0ZXNdPVwiZmllbGRcIlxuICAgID5cbiAgICAgIEBmb3IgKGNoaXAgb2YgZm9ybUNvbnRyb2wudmFsdWU7IHRyYWNrICRpbmRleDsgbGV0IGk9ICRpbmRleCkge1xuICAgICAgPG1hdC1jaGlwLXJvdyAocmVtb3ZlZCk9XCJyZW1vdmVDaGlwKGkpXCI+XG4gICAgICAgIHt7IGNoaXAgfX1cbiAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3JlbW92ZSAnICsgY2hpcFwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jYW5jZWw8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbWF0LWNoaXAtcm93PlxuICAgICAgfVxuICAgIDwvbWF0LWNoaXAtZ3JpZD5cbiAgICA8aW5wdXRcbiAgICAgIFsobmdNb2RlbCldPVwiY3VycmVudFN0YXRlXCJcbiAgICAgIFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcEdyaWRcIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAvPlxuICAgIDxtYXQtYXV0b2NvbXBsZXRlXG4gICAgICAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiXG4gICAgICAob3B0aW9uU2VsZWN0ZWQpPVwic2VsZWN0ZWRDaGlwKCRldmVudClcIlxuICAgID5cbiAgICAgIEBmb3IgKHN0YXRlIG9mIGZpbHRlcmVkU3RhdGVzKCk7IHRyYWNrIHN0YXRlKSB7XG4gICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwic3RhdGVcIj57eyBzdGF0ZSB9fTwvbWF0LW9wdGlvbj5cbiAgICAgIH1cbiAgICA8L21hdC1hdXRvY29tcGxldGU+XG4gICAgPG1hdC1lcnJvciAqbmdJZj1cImZvcm1Db250cm9sLmludmFsaWQgJiYgZm9ybUNvbnRyb2wudG91Y2hlZFwiPlxuICAgICAgICB7eyBmaWVsZC52YWxpZGF0aW9uPy5tZXNzYWdlcz8uWydyZXF1aXJlZCddIH19XG4gICAgPC9tYXQtZXJyb3I+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpU2VsZWN0QXV0b2NvbXBsZXRlQ29tcG9uZW50IGV4dGVuZHMgRmllbGRUeXBlPEZpZWxkVHlwZUNvbmZpZz4ge1xuICByZWFkb25seSBjdXJyZW50U3RhdGUgPSBtb2RlbChcIlwiKTtcbiAgcmVhZG9ubHkgY2hpcHNBcnIgPSBzaWduYWw8c3RyaW5nW10+KFtdKTtcbiAgcmVhZG9ubHkgYW5ub3VuY2VyID0gaW5qZWN0KExpdmVBbm5vdW5jZXIpO1xuICB0ZW1wQXJyOiBhbnk7XG4gIGl0ZW1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG5cbiAgcmVhZG9ubHkgZmlsdGVyZWRTdGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFN0YXRlID0gdGhpcy5jdXJyZW50U3RhdGUoKS50b0xvd2VyQ2FzZSgpOyAgICBcbiAgICB0aGlzLnRlbXBBcnIgPSB0aGlzLnByb3BzLm9wdGlvbnM7XG4gICAgdGhpcy50ZW1wQXJyID0gdGhpcy50ZW1wQXJyPy5maWx0ZXIoKHN0YXRlOiBhbnkpID0+ICF0aGlzLmZvcm1Db250cm9sLnZhbHVlLmluY2x1ZGVzKHN0YXRlKSk7XG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZVxuICAgICAgICA/IHRoaXMudGVtcEFycj8uZmlsdGVyKChzdGF0ZTogYW55KSA9PlxuICAgICAgICAgIHN0YXRlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY3VycmVudFN0YXRlKVxuICAgICAgICApXG4gICAgICAgIDogdGhpcy50ZW1wQXJyPy5zbGljZSgpO1xuICAgIH0pO1xuXG5cbiAgcmVtb3ZlQ2hpcChpOmFueSk6IHZvaWQge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTsgICAgXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShbXG4gICAgICAuLi52YWx1ZS5zbGljZSgwLCBpKSxcbiAgICAgIC4uLnZhbHVlLnNsaWNlKGkgKyAxLCB2YWx1ZS5sZW5ndGgpXG4gICAgXSk7XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCkgIFxuICB9XG5cbiAgc2VsZWN0ZWRDaGlwKGV2ZW50OiBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YSA9ICBbXG4gICAgICAuLi50aGlzLml0ZW1Db250cm9sLnZhbHVlLFxuICAgICAgZXZlbnQub3B0aW9uLnZpZXdWYWx1ZSxcbiAgICBdXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShbLi4ubmV3IFNldChkYXRhKV0pO1xuICAgIHRoaXMuaXRlbUNvbnRyb2wuc2V0VmFsdWUoXCJcIik7XG4gICAgdGhpcy5jdXJyZW50U3RhdGUuc2V0KFwiXCIpO1xuICB9XG5cbn1cbiJdfQ==
|