ngx-t-forms 2.0.29 → 2.0.31
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/fesm2022/ngx-t-forms-auto-complete-input-element.component-DCKuXHAW.mjs +104 -0
- package/fesm2022/ngx-t-forms-auto-complete-input-element.component-DCKuXHAW.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-basic-input-input-element.component-Ce4ipSUc.mjs +85 -0
- package/fesm2022/ngx-t-forms-basic-input-input-element.component-Ce4ipSUc.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-C5TPddVe.mjs +643 -0
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-C5TPddVe.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-chip-options-creator-editor.component-CICQaqz6.mjs +97 -0
- package/fesm2022/ngx-t-forms-chip-options-creator-editor.component-CICQaqz6.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-CzisLSIP.mjs +195 -0
- package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-CzisLSIP.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs +261 -0
- package/fesm2022/ngx-t-forms-data-source-picker.component-Dzz_o6fJ.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs +85 -0
- package/fesm2022/ngx-t-forms-date-picker-input-element.component-CYUbVyzP.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs +156 -0
- package/fesm2022/ngx-t-forms-date-range-picker-input-element.component-CmoquQGV.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs +368 -0
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-CLUOXreG.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-document-picker.component-qObjcqhE.mjs +704 -0
- package/fesm2022/ngx-t-forms-document-picker.component-qObjcqhE.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-editor-input-element.component-BLXlfb6F.mjs +294 -0
- package/fesm2022/ngx-t-forms-editor-input-element.component-BLXlfb6F.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-editor-js-input.component-BQL0AH7H.mjs +240 -0
- package/fesm2022/ngx-t-forms-editor-js-input.component-BQL0AH7H.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-file-upload-input-element.component-C7mMeEjF.mjs +205 -0
- package/fesm2022/ngx-t-forms-file-upload-input-element.component-C7mMeEjF.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-form-input-selector.component-C9u8zq9B.mjs +86 -0
- package/fesm2022/ngx-t-forms-form-input-selector.component-C9u8zq9B.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-form-json-view.component-856Hx1Bg.mjs +22 -0
- package/fesm2022/ngx-t-forms-form-json-view.component-856Hx1Bg.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-form-payload-projection.component-CDkTuX9S.mjs +179 -0
- package/fesm2022/ngx-t-forms-form-payload-projection.component-CDkTuX9S.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-Bs50-nEB.mjs +319 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-Bs50-nEB.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-qrhM0jGL.mjs +379 -0
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-qrhM0jGL.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-geo-location.component-Bosp1UzR.mjs +124 -0
- package/fesm2022/ngx-t-forms-geo-location.component-Bosp1UzR.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-getInputIcon-B4ADgevZ.mjs +31 -0
- package/fesm2022/ngx-t-forms-getInputIcon-B4ADgevZ.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-image-capture-input-element.component-C1g7Z0cK.mjs +180 -0
- package/fesm2022/ngx-t-forms-image-capture-input-element.component-C1g7Z0cK.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-index-dDSobs6A.mjs +2 -0
- package/fesm2022/ngx-t-forms-index-dDSobs6A.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-input-custom.component-BkbHFAyR.mjs +105 -0
- package/fesm2022/ngx-t-forms-input-custom.component-BkbHFAyR.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-input-editor.component-BPUOM9kQ.mjs +181 -0
- package/fesm2022/ngx-t-forms-input-editor.component-BPUOM9kQ.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-map-mat-options-keys-CbdW82su.mjs → ngx-t-forms-map-mat-options-keys-B6hJ7Io5.mjs} +12 -14
- package/fesm2022/ngx-t-forms-map-mat-options-keys-B6hJ7Io5.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-c7uZT1sr.mjs +66 -0
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-c7uZT1sr.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mat-slider-editor.component-CTSBrM-j.mjs +211 -0
- package/fesm2022/ngx-t-forms-mat-slider-editor.component-CTSBrM-j.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-CcYiwx-8.mjs +165 -0
- package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-CcYiwx-8.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-missing-form-configs.component-DrnH8qdG.mjs +38 -0
- package/fesm2022/ngx-t-forms-missing-form-configs.component-DrnH8qdG.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs +38 -0
- package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-C_abEBQ5.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mscoa-error-display.component-99DpVSy7.mjs +126 -0
- package/fesm2022/ngx-t-forms-mscoa-error-display.component-99DpVSy7.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C0qsMfsq.mjs +336 -0
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C0qsMfsq.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-B1Z-IXSL.mjs +74 -0
- package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-B1Z-IXSL.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-multiple-input-input-element.component-C7y1OGPx.mjs +905 -0
- package/fesm2022/ngx-t-forms-multiple-input-input-element.component-C7y1OGPx.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-ngx-t-forms-u_kigDid.mjs +19461 -0
- package/fesm2022/ngx-t-forms-ngx-t-forms-u_kigDid.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-paginated-selection-table-AQZSMmhr.mjs +555 -0
- package/fesm2022/ngx-t-forms-paginated-selection-table-AQZSMmhr.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-pipeline-generator.component-DmNSc5aw.mjs +748 -0
- package/fesm2022/ngx-t-forms-pipeline-generator.component-DmNSc5aw.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-record-list-manager.component-CUMMvMch.mjs +358 -0
- package/fesm2022/ngx-t-forms-record-list-manager.component-CUMMvMch.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-required-inputs.component-Ch2yNcIS.mjs +272 -0
- package/fesm2022/ngx-t-forms-required-inputs.component-Ch2yNcIS.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-rest-api-call-setup.component-C_aFtdvW.mjs +398 -0
- package/fesm2022/ngx-t-forms-rest-api-call-setup.component-C_aFtdvW.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-search-field.component-B2ZO7lqO.mjs +38 -0
- package/fesm2022/ngx-t-forms-search-field.component-B2ZO7lqO.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-section-report.component-BxOhR6C0.mjs +98 -0
- package/fesm2022/ngx-t-forms-section-report.component-BxOhR6C0.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-select-input-element.component-DbgZdNoe.mjs +150 -0
- package/fesm2022/ngx-t-forms-select-input-element.component-DbgZdNoe.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-selection-options-editor.component-Dhln81DL.mjs +169 -0
- package/fesm2022/ngx-t-forms-selection-options-editor.component-Dhln81DL.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-t-workflow-picker.component-leBokXvM.mjs +204 -0
- package/fesm2022/ngx-t-forms-t-workflow-picker.component-leBokXvM.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-textarea-input-element.component-BEbXJjFA.mjs +95 -0
- package/fesm2022/ngx-t-forms-textarea-input-element.component-BEbXJjFA.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-toggle-input-element.component-DDErRUJd.mjs +82 -0
- package/fesm2022/ngx-t-forms-toggle-input-element.component-DDErRUJd.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-validators-config.component-oGjQVGE2.mjs +733 -0
- package/fesm2022/ngx-t-forms-validators-config.component-oGjQVGE2.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-workflow-adjudication.component-CtU8dECN.mjs +1303 -0
- package/fesm2022/ngx-t-forms-workflow-adjudication.component-CtU8dECN.mjs.map +1 -0
- package/fesm2022/ngx-t-forms.mjs +2 -1
- package/fesm2022/ngx-t-forms.mjs.map +1 -1
- package/package.json +20 -18
- package/styles/_editor-mixins.scss +62 -0
- package/styles/_json-editor-syntax.scss +26 -0
- package/styles/_signature-pad.scss +26 -0
- package/styles/_tokens.scss +148 -0
- package/types/ngx-t-forms.d.ts +1767 -621
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-D-SBMdYg.mjs +0 -313
- package/fesm2022/ngx-t-forms-calculated-field-rules.component-D-SBMdYg.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-chip-options-creator-editor.component-1cpszpPN.mjs +0 -191
- package/fesm2022/ngx-t-forms-chip-options-creator-editor.component-1cpszpPN.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DFdAVWTg.mjs +0 -207
- package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DFdAVWTg.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-data-source-picker.component-DxORinAD.mjs +0 -204
- package/fesm2022/ngx-t-forms-data-source-picker.component-DxORinAD.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-DcWS1txl.mjs +0 -289
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-DcWS1txl.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-form-input-selector.component-B2QEnvkq.mjs +0 -134
- package/fesm2022/ngx-t-forms-form-input-selector.component-B2QEnvkq.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-form-json-view.component-DePf44w6.mjs +0 -22
- package/fesm2022/ngx-t-forms-form-json-view.component-DePf44w6.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-form-section-stepper.component-BTkcSjg7.mjs +0 -270
- package/fesm2022/ngx-t-forms-form-section-stepper.component-BTkcSjg7.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-Wamzf_sq.mjs +0 -345
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-Wamzf_sq.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-input-editor.component-D4xHO76K.mjs +0 -147
- package/fesm2022/ngx-t-forms-input-editor.component-D4xHO76K.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-map-mat-options-keys-CbdW82su.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DmTyO9Wi.mjs +0 -105
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DmTyO9Wi.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mat-slider-editor.component-DZ4TenrI.mjs +0 -109
- package/fesm2022/ngx-t-forms-mat-slider-editor.component-DZ4TenrI.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DPyBYE4p.mjs +0 -155
- package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DPyBYE4p.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-missing-form-configs.component-BRmnwAK6.mjs +0 -28
- package/fesm2022/ngx-t-forms-missing-form-configs.component-BRmnwAK6.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-D_umeAPL.mjs +0 -43
- package/fesm2022/ngx-t-forms-mscoa-chart-toolbar.component-D_umeAPL.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mscoa-error-display.component-CSX2NCNU.mjs +0 -116
- package/fesm2022/ngx-t-forms-mscoa-error-display.component-CSX2NCNU.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-B6IF8kGg.mjs +0 -296
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-B6IF8kGg.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-BPkjsRmH.mjs +0 -83
- package/fesm2022/ngx-t-forms-mscoa-temporary-hint.component-BPkjsRmH.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-ngx-t-forms-D9qmig6g.mjs +0 -16844
- package/fesm2022/ngx-t-forms-ngx-t-forms-D9qmig6g.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-pipeline-generator.component-DBJEyCbd.mjs +0 -613
- package/fesm2022/ngx-t-forms-pipeline-generator.component-DBJEyCbd.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-record-list-manager.component-Dgs9lNSr.mjs +0 -269
- package/fesm2022/ngx-t-forms-record-list-manager.component-Dgs9lNSr.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-required-inputs.component-CSIJvSHq.mjs +0 -190
- package/fesm2022/ngx-t-forms-required-inputs.component-CSIJvSHq.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-rest-api-call-setup.component-CY-JSkGs.mjs +0 -291
- package/fesm2022/ngx-t-forms-rest-api-call-setup.component-CY-JSkGs.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-section-report.component-12-KdKT6.mjs +0 -156
- package/fesm2022/ngx-t-forms-section-report.component-12-KdKT6.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-selection-options-editor.component-Be3QAG_L.mjs +0 -186
- package/fesm2022/ngx-t-forms-selection-options-editor.component-Be3QAG_L.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-t-workflow-picker.component-a4f1r8gH.mjs +0 -187
- package/fesm2022/ngx-t-forms-t-workflow-picker.component-a4f1r8gH.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-validators-config.component-B3j9Dmgu.mjs +0 -215
- package/fesm2022/ngx-t-forms-validators-config.component-B3j9Dmgu.mjs.map +0 -1
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, EventEmitter, HostBinding, Input, Output, Optional, Self, Component } from '@angular/core';
|
|
3
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
4
|
-
import { Subject } from 'rxjs';
|
|
5
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
6
|
-
import { LiveAnnouncer } from '@angular/cdk/a11y';
|
|
7
|
-
import { ENTER, COMMA } from '@angular/cdk/keycodes';
|
|
8
|
-
import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-D9qmig6g.mjs';
|
|
9
|
-
import * as i1 from '@angular/forms';
|
|
10
|
-
import * as i4 from '@angular/material/chips';
|
|
11
|
-
import * as i3 from '@angular/material/icon';
|
|
12
|
-
|
|
13
|
-
class ChipOptionsCreatorEditorComponent {
|
|
14
|
-
static { this.nextId = 0; }
|
|
15
|
-
get required() {
|
|
16
|
-
return this._required;
|
|
17
|
-
}
|
|
18
|
-
set required(value) {
|
|
19
|
-
this._required = coerceBooleanProperty(value);
|
|
20
|
-
this.stateChanges.next();
|
|
21
|
-
}
|
|
22
|
-
get value() {
|
|
23
|
-
return this._value;
|
|
24
|
-
}
|
|
25
|
-
set value(val) {
|
|
26
|
-
this._value = val;
|
|
27
|
-
this.onChange(val);
|
|
28
|
-
this.stateChanges.next();
|
|
29
|
-
}
|
|
30
|
-
get placeholder() {
|
|
31
|
-
return this._placeholder;
|
|
32
|
-
}
|
|
33
|
-
set placeholder(value) {
|
|
34
|
-
this._placeholder = value;
|
|
35
|
-
this.stateChanges.next();
|
|
36
|
-
}
|
|
37
|
-
get shouldLabelFloat() {
|
|
38
|
-
return this.focused || !this.empty;
|
|
39
|
-
}
|
|
40
|
-
get empty() {
|
|
41
|
-
return !this.value || this.value.length === 0;
|
|
42
|
-
}
|
|
43
|
-
get errorState() {
|
|
44
|
-
return !this.value && this.required && this.touched || !!this.ngControl?.errors || (this.errors || []).length > 0;
|
|
45
|
-
}
|
|
46
|
-
constructor(ngControl, _elementRef) {
|
|
47
|
-
this.ngControl = ngControl;
|
|
48
|
-
this._elementRef = _elementRef;
|
|
49
|
-
this.announcer = inject(LiveAnnouncer);
|
|
50
|
-
this.separatorKeysCodes = [ENTER, COMMA];
|
|
51
|
-
this.stateChanges = new Subject();
|
|
52
|
-
this.focused = false;
|
|
53
|
-
this.touched = false;
|
|
54
|
-
this.disabled = false;
|
|
55
|
-
this.controlType = 'lib-chip-options-creator-editor';
|
|
56
|
-
this.autofilled = false;
|
|
57
|
-
this.errors = [];
|
|
58
|
-
this.valueChange = new EventEmitter();
|
|
59
|
-
this._required = false;
|
|
60
|
-
this._value = undefined;
|
|
61
|
-
this._placeholder = '';
|
|
62
|
-
this.id = `lib-chip-options-creator-editor-${ChipOptionsCreatorEditorComponent.nextId++}`;
|
|
63
|
-
this.describedBy = '';
|
|
64
|
-
// ControlValueAccessor methods
|
|
65
|
-
this.onChange = (_) => { };
|
|
66
|
-
this.onTouched = () => { };
|
|
67
|
-
if (this.ngControl != null) {
|
|
68
|
-
this.ngControl.valueAccessor = this;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
writeValue(value) {
|
|
72
|
-
this._value = value;
|
|
73
|
-
this.stateChanges.next();
|
|
74
|
-
}
|
|
75
|
-
registerOnChange(fn) {
|
|
76
|
-
this.onChange = fn;
|
|
77
|
-
}
|
|
78
|
-
registerOnTouched(fn) {
|
|
79
|
-
this.onTouched = fn;
|
|
80
|
-
}
|
|
81
|
-
setDisabledState(isDisabled) {
|
|
82
|
-
this.disabled = isDisabled;
|
|
83
|
-
this.stateChanges.next();
|
|
84
|
-
}
|
|
85
|
-
// MatFormFieldControl methods
|
|
86
|
-
setDescribedByIds(ids) {
|
|
87
|
-
const element = this._elementRef?.nativeElement;
|
|
88
|
-
if (element) {
|
|
89
|
-
element.setAttribute('aria-describedby', ids.join(' '));
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
onContainerClick(event) {
|
|
93
|
-
if (!this.focused) {
|
|
94
|
-
this.focused = true;
|
|
95
|
-
this.stateChanges.next();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
markAsTouched() {
|
|
99
|
-
if (!this.touched) {
|
|
100
|
-
this.touched = true;
|
|
101
|
-
this.onTouched();
|
|
102
|
-
this.stateChanges.next();
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
add(event) {
|
|
106
|
-
const value = (event.value || '').trim();
|
|
107
|
-
const currentSegments = this.value || [];
|
|
108
|
-
const isDuplicate = currentSegments.some((segment) => segment === value);
|
|
109
|
-
if (isDuplicate) {
|
|
110
|
-
this.announcer.announce(`value ${value} already exists`);
|
|
111
|
-
event.chipInput.clear();
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
// Add our fruit
|
|
115
|
-
if (value) {
|
|
116
|
-
this.setValue([...(this.value || []), value]);
|
|
117
|
-
}
|
|
118
|
-
// Clear the input value
|
|
119
|
-
event.chipInput.clear();
|
|
120
|
-
}
|
|
121
|
-
edit(segment, event) {
|
|
122
|
-
const value = event.value.trim();
|
|
123
|
-
// Remove fruit if it no longer has a name
|
|
124
|
-
if (!value) {
|
|
125
|
-
this.remove(segment);
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
// Edit existing fruit
|
|
129
|
-
const segments = (this.value) || [];
|
|
130
|
-
const index = segments.indexOf(segment);
|
|
131
|
-
if (index >= 0) {
|
|
132
|
-
segments[index] = value;
|
|
133
|
-
this.setValue([...segments]);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
this.setValue([...segments]);
|
|
137
|
-
}
|
|
138
|
-
remove(segment) {
|
|
139
|
-
const segments = (this.value) || [];
|
|
140
|
-
const index = segments.indexOf(segment);
|
|
141
|
-
if (index < 0) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
segments.splice(index, 1);
|
|
145
|
-
this.announcer.announce(`Removed ${segment}`);
|
|
146
|
-
this.setValue([...segments]);
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
setValue(value) {
|
|
150
|
-
if (Array.isArray(value) === false) {
|
|
151
|
-
throw new Error('value must be an array');
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
this.value = value || [];
|
|
155
|
-
this.valueChange.emit(value);
|
|
156
|
-
this.markAsTouched();
|
|
157
|
-
}
|
|
158
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ChipOptionsCreatorEditorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
159
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: ChipOptionsCreatorEditorComponent, isStandalone: true, selector: "lib-chip-options-creator-editor", inputs: { disabled: "disabled", errors: "errors", required: "required", value: "value", placeholder: "placeholder" }, outputs: { valueChange: "valueChange" }, host: { properties: { "id": "this.id", "attr.aria-describedby": "this.describedBy", "class.floating": "this.shouldLabelFloat" } }, providers: [{ provide: MatFormFieldControl, useExisting: ChipOptionsCreatorEditorComponent }], ngImport: i0, template: "<mat-chip-grid [disabled]=\"disabled\" #chipGrid aria-label=\"Account selection extension\" formControlName=\"additionalAccounts\">\r\n @for (segment of (value||[]); track segment) {\r\n <mat-chip-row\r\n (removed)=\"remove(segment)\"\r\n [editable]=\"true\"\r\n (edited)=\"edit(segment, $event)\"\r\n [aria-description]=\"'press enter to edit ' + segment\"\r\n >\r\n {{segment}}\r\n <button matChipRemove [attr.aria-label]=\"'remove ' + segment\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n <input\r\n placeholder=\"New selection...\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n />\r\n </mat-chip-grid>", styles: [""], dependencies: [{ kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i4.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i4.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i4.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
|
|
160
|
-
}
|
|
161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ChipOptionsCreatorEditorComponent, decorators: [{
|
|
162
|
-
type: Component,
|
|
163
|
-
args: [{ selector: 'lib-chip-options-creator-editor', imports: [MatModulesModule], providers: [{ provide: MatFormFieldControl, useExisting: ChipOptionsCreatorEditorComponent }], template: "<mat-chip-grid [disabled]=\"disabled\" #chipGrid aria-label=\"Account selection extension\" formControlName=\"additionalAccounts\">\r\n @for (segment of (value||[]); track segment) {\r\n <mat-chip-row\r\n (removed)=\"remove(segment)\"\r\n [editable]=\"true\"\r\n (edited)=\"edit(segment, $event)\"\r\n [aria-description]=\"'press enter to edit ' + segment\"\r\n >\r\n {{segment}}\r\n <button matChipRemove [attr.aria-label]=\"'remove ' + segment\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n <input\r\n placeholder=\"New selection...\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n />\r\n </mat-chip-grid>" }]
|
|
164
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
165
|
-
type: Optional
|
|
166
|
-
}, {
|
|
167
|
-
type: Self
|
|
168
|
-
}] }, { type: i0.ElementRef }], propDecorators: { disabled: [{
|
|
169
|
-
type: Input
|
|
170
|
-
}], errors: [{
|
|
171
|
-
type: Input
|
|
172
|
-
}], valueChange: [{
|
|
173
|
-
type: Output
|
|
174
|
-
}], required: [{
|
|
175
|
-
type: Input
|
|
176
|
-
}], value: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], placeholder: [{
|
|
179
|
-
type: Input
|
|
180
|
-
}], id: [{
|
|
181
|
-
type: HostBinding
|
|
182
|
-
}], describedBy: [{
|
|
183
|
-
type: HostBinding,
|
|
184
|
-
args: ['attr.aria-describedby']
|
|
185
|
-
}], shouldLabelFloat: [{
|
|
186
|
-
type: HostBinding,
|
|
187
|
-
args: ['class.floating']
|
|
188
|
-
}] } });
|
|
189
|
-
|
|
190
|
-
export { ChipOptionsCreatorEditorComponent };
|
|
191
|
-
//# sourceMappingURL=ngx-t-forms-chip-options-creator-editor.component-1cpszpPN.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-chip-options-creator-editor.component-1cpszpPN.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/chip-options-creator-editor/chip-options-creator-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/chip-options-creator-editor/chip-options-creator-editor.component.html"],"sourcesContent":["import { Component, ElementRef, EventEmitter, HostBinding, inject, Input, Optional, Output, Self } from '@angular/core';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\nimport { NgControl } from '@angular/forms';\r\nimport { LiveAnnouncer } from '@angular/cdk/a11y';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { MatChipEditedEvent, MatChipInputEvent } from '@angular/material/chips';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\n@Component({\r\n selector: 'lib-chip-options-creator-editor',\r\n imports: [MatModulesModule],\r\n templateUrl: './chip-options-creator-editor.component.html',\r\n styleUrl: './chip-options-creator-editor.component.css',\r\n providers: [{ provide: MatFormFieldControl, useExisting: ChipOptionsCreatorEditorComponent }],\r\n})\r\nexport class ChipOptionsCreatorEditorComponent implements MatFormFieldControl<string[] | undefined> {\r\n readonly announcer = inject(LiveAnnouncer);\r\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n focused = false;\r\n touched = false;\r\n @Input() disabled = false;\r\n controlType = 'lib-chip-options-creator-editor';\r\n autofilled = false;\r\n\r\n\r\n @Input() errors:IConfigElementError[] | undefined = [];\r\n @Output() valueChange = new EventEmitter<string[]|undefined>();\r\n\r\n private _required = false;\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n this.stateChanges.next();\r\n }\r\n\r\n private _value: string[] | undefined = undefined;\r\n @Input()\r\n get value(): string[] | undefined {\r\n return this._value;\r\n }\r\n set value(val: string[] | undefined ) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.stateChanges.next();\r\n }\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string) {\r\n this._placeholder = value;\r\n this.stateChanges.next();\r\n }\r\n private _placeholder: string = '';\r\n\r\n @HostBinding() id = `lib-chip-options-creator-editor-${ChipOptionsCreatorEditorComponent.nextId++}`;\r\n @HostBinding('attr.aria-describedby') describedBy = '';\r\n @HostBinding('class.floating') get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n get empty(): boolean {\r\n return !this.value || this.value.length === 0;\r\n }\r\n\r\n get errorState(): boolean {\r\n return !this.value && this.required && this.touched || !!this.ngControl?.errors || (this.errors||[]).length >0;\r\n }\r\n\r\n constructor(\r\n @Optional() @Self() public ngControl: NgControl,\r\n private _elementRef: ElementRef<HTMLElement>\r\n ) {\r\n if (this.ngControl != null) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n }\r\n\r\n // ControlValueAccessor methods\r\n onChange = (_: any) => {};\r\n onTouched = () => {};\r\n\r\n writeValue(value: string[]|undefined): void {\r\n this._value = value;\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.stateChanges.next();\r\n }\r\n\r\n // MatFormFieldControl methods\r\n setDescribedByIds(ids: string[]): void {\r\n const element = this._elementRef?.nativeElement;\r\n if (element) {\r\n element.setAttribute('aria-describedby', ids.join(' '));\r\n }\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if (!this.focused) {\r\n this.focused = true;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n markAsTouched(): void {\r\n if (!this.touched) {\r\n this.touched = true;\r\n this.onTouched();\r\n this.stateChanges.next();\r\n }\r\n }\r\n add(event: MatChipInputEvent): void {\r\n const value = (event.value || '').trim();\r\n const currentSegments = this.value || []\r\n const isDuplicate = currentSegments.some((segment: string) => segment === value);\r\n if (isDuplicate) {\r\n this.announcer.announce(`value ${value} already exists`);\r\n event.chipInput!.clear();\r\n return;\r\n }\r\n // Add our fruit\r\n if (value) {\r\n this.setValue([...(this.value || []), value]);\r\n }\r\n \r\n // Clear the input value\r\n event.chipInput!.clear();\r\n }\r\n edit(segment: string, event: MatChipEditedEvent) {\r\n const value = event.value.trim();\r\n\r\n // Remove fruit if it no longer has a name\r\n if (!value) {\r\n this.remove(segment);\r\n return;\r\n }\r\n\r\n // Edit existing fruit\r\n const segments = (this.value) || []\r\n\r\n const index = segments.indexOf(segment);\r\n if (index >= 0) {\r\n segments[index] = value;\r\n this.setValue([...segments]);\r\n return\r\n }\r\n this.setValue([...segments]);\r\n\r\n\r\n }\r\n \r\n remove(segment: string): void {\r\n const segments = (this.value) || []\r\n const index = segments.indexOf(segment);\r\n if (index < 0) {\r\n return \r\n }\r\n\r\n segments.splice(index, 1);\r\n this.announcer.announce(`Removed ${segment}`);\r\n this.setValue([...segments]);\r\n return\r\n\r\n }\r\n setValue(value: string[] | undefined): void {\r\n if(Array.isArray(value) === false) {\r\n throw new Error('value must be an array')\r\n return \r\n }\r\n this.value = value || [];\r\n this.valueChange.emit(value);\r\n this.markAsTouched();\r\n }\r\n}\r\n","<mat-chip-grid [disabled]=\"disabled\" #chipGrid aria-label=\"Account selection extension\" formControlName=\"additionalAccounts\">\r\n @for (segment of (value||[]); track segment) {\r\n <mat-chip-row\r\n (removed)=\"remove(segment)\"\r\n [editable]=\"true\"\r\n (edited)=\"edit(segment, $event)\"\r\n [aria-description]=\"'press enter to edit ' + segment\"\r\n >\r\n {{segment}}\r\n <button matChipRemove [attr.aria-label]=\"'remove ' + segment\">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n }\r\n <input\r\n placeholder=\"New selection...\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n [matChipInputAddOnBlur]=\"true\"\r\n (matChipInputTokenEnd)=\"add($event)\"\r\n />\r\n </mat-chip-grid>"],"names":["i2"],"mappings":"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"}
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, inject, Output, Input, HostBinding, Optional, Self, Component } from '@angular/core';
|
|
3
|
-
import { Subject, BehaviorSubject, take, tap, catchError } from 'rxjs';
|
|
4
|
-
import { MatDialog } from '@angular/material/dialog';
|
|
5
|
-
import * as i2 from '@angular/common';
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
|
-
import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-D9qmig6g.mjs';
|
|
8
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
9
|
-
import * as i1 from '@angular/forms';
|
|
10
|
-
import * as i2$1 from '@angular/material/autocomplete';
|
|
11
|
-
import * as i2$2 from '@angular/material/button';
|
|
12
|
-
import * as i3 from '@angular/material/icon';
|
|
13
|
-
import * as i7 from '@angular/material/list';
|
|
14
|
-
import * as i3$1 from '@angular/material/select';
|
|
15
|
-
import * as i5 from '@angular/material/toolbar';
|
|
16
|
-
|
|
17
|
-
class ConfigMscoaAdditionalInputsComponent {
|
|
18
|
-
static { this.nextId = 0; }
|
|
19
|
-
constructor(ngControl, _elementRef) {
|
|
20
|
-
this.ngControl = ngControl;
|
|
21
|
-
this._elementRef = _elementRef;
|
|
22
|
-
this.stateChanges = new Subject();
|
|
23
|
-
this.id = `app-config-mscoa-additional-inputs-${ConfigMscoaAdditionalInputsComponent.nextId++}`;
|
|
24
|
-
this.placeholder = '';
|
|
25
|
-
this.focused = false;
|
|
26
|
-
this.required = false;
|
|
27
|
-
this.disabled = false;
|
|
28
|
-
this.touched = false;
|
|
29
|
-
this.onTouched = () => { };
|
|
30
|
-
this.mscoaInitiated = false;
|
|
31
|
-
this.errors = [];
|
|
32
|
-
this.mapToData = undefined;
|
|
33
|
-
this._inputInEdit = new BehaviorSubject(null);
|
|
34
|
-
this.inputInEdit = undefined;
|
|
35
|
-
this.valueChanged = new EventEmitter();
|
|
36
|
-
this._value = new BehaviorSubject([]);
|
|
37
|
-
this.editingIndex = null;
|
|
38
|
-
this.isAddingNew = false;
|
|
39
|
-
this.accountTreeKeys = [];
|
|
40
|
-
this.hovered = null;
|
|
41
|
-
this.hoveredIndex = null;
|
|
42
|
-
this.dialog = inject(MatDialog);
|
|
43
|
-
}
|
|
44
|
-
get empty() {
|
|
45
|
-
return !this.value;
|
|
46
|
-
}
|
|
47
|
-
get shouldLabelFloat() {
|
|
48
|
-
return this.focused || !this.empty;
|
|
49
|
-
}
|
|
50
|
-
get errorState() {
|
|
51
|
-
const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched;
|
|
52
|
-
return !this.value && !!this.required || hasError;
|
|
53
|
-
}
|
|
54
|
-
setDescribedByIds(ids) {
|
|
55
|
-
// Ensure the component view is initialized
|
|
56
|
-
if (this._elementRef && this._elementRef.nativeElement) {
|
|
57
|
-
const controlElement = this._elementRef.nativeElement.querySelector('.app-config-mscoa-additional-inputs');
|
|
58
|
-
// Check if the controlElement exists before attempting to set its attribute
|
|
59
|
-
if (controlElement) {
|
|
60
|
-
controlElement.setAttribute('aria-describedby', ids.join(' '));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
onContainerClick(event) {
|
|
65
|
-
this.markAsTouched();
|
|
66
|
-
this.stateChanges.next();
|
|
67
|
-
}
|
|
68
|
-
markAsTouched() {
|
|
69
|
-
if (!this.touched) {
|
|
70
|
-
this.onTouched();
|
|
71
|
-
this.touched = true;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
set getMscoaTree(options$) {
|
|
75
|
-
if (!!options$ && !this.mscoaInitiated) {
|
|
76
|
-
this.mscoaInitiated = true;
|
|
77
|
-
options$.pipe(take(1), tap((options) => {
|
|
78
|
-
this.accountTreeKeys = options?.accountTreeKeys || [];
|
|
79
|
-
}), catchError(() => {
|
|
80
|
-
return [null];
|
|
81
|
-
})).subscribe();
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
set value(val) {
|
|
85
|
-
this._value.next(val || []);
|
|
86
|
-
}
|
|
87
|
-
get value() {
|
|
88
|
-
return this._value.value;
|
|
89
|
-
}
|
|
90
|
-
ngOnInit() {
|
|
91
|
-
}
|
|
92
|
-
startAddNew() {
|
|
93
|
-
this.isAddingNew = true;
|
|
94
|
-
this.editingIndex = null;
|
|
95
|
-
this.inputInEdit = undefined;
|
|
96
|
-
this.openElementEditor();
|
|
97
|
-
}
|
|
98
|
-
startEdit(index) {
|
|
99
|
-
this.editingIndex = index;
|
|
100
|
-
this.isAddingNew = false;
|
|
101
|
-
this.inputInEdit = this.value[index];
|
|
102
|
-
this.openElementEditor();
|
|
103
|
-
}
|
|
104
|
-
removeInput(index) {
|
|
105
|
-
const updatedValue = this.value.filter((_, i) => i !== index);
|
|
106
|
-
this._value.next(updatedValue);
|
|
107
|
-
this.valueChanged.emit(updatedValue);
|
|
108
|
-
}
|
|
109
|
-
cancelEdit() {
|
|
110
|
-
this.editingIndex = null;
|
|
111
|
-
this.isAddingNew = false;
|
|
112
|
-
}
|
|
113
|
-
saveSegment() {
|
|
114
|
-
// if (this.segmentForm.valid) {
|
|
115
|
-
// const newSegment = ({
|
|
116
|
-
// segment:this.segmentForm.value.segment,
|
|
117
|
-
// label:this.toTitleCase(this.segmentForm.value.segment),
|
|
118
|
-
// }) as IIncludedSegmentConfig;
|
|
119
|
-
// const updatedValue = [...this.value];
|
|
120
|
-
// if (this.isAddingNew) {
|
|
121
|
-
// updatedValue.push(newSegment);
|
|
122
|
-
// } else if (this.editingIndex !== null) {
|
|
123
|
-
// updatedValue[this.editingIndex] = newSegment;
|
|
124
|
-
// }
|
|
125
|
-
// this._value.next(updatedValue);
|
|
126
|
-
// this.valueChanged.emit(updatedValue);
|
|
127
|
-
// this.cancelEdit();
|
|
128
|
-
// }
|
|
129
|
-
}
|
|
130
|
-
removeSegment(index) {
|
|
131
|
-
const updatedValue = this.value.filter((_, i) => i !== index);
|
|
132
|
-
this._value.next(updatedValue);
|
|
133
|
-
this.valueChanged.emit(updatedValue);
|
|
134
|
-
}
|
|
135
|
-
async openElementEditor() {
|
|
136
|
-
this.openFormDialog();
|
|
137
|
-
}
|
|
138
|
-
inputSegmentChanged($event, i) {
|
|
139
|
-
if ($event.detail.value === 'None' && this.value[i] !== undefined) {
|
|
140
|
-
this.value[i].segment = undefined;
|
|
141
|
-
}
|
|
142
|
-
else if (this.value[i] !== undefined) {
|
|
143
|
-
this.value[i].segment = $event.detail.value;
|
|
144
|
-
}
|
|
145
|
-
this.valueChanged.emit(this.value);
|
|
146
|
-
}
|
|
147
|
-
openFormDialog() {
|
|
148
|
-
// const dialogRef = this.dialog.open(FormElementModalEditorComponent,{
|
|
149
|
-
// maxHeight:'95vh',
|
|
150
|
-
// panelClass:'form-element-modal-editor',
|
|
151
|
-
// data:{
|
|
152
|
-
// inputInEdit:this.inputInEdit
|
|
153
|
-
// }
|
|
154
|
-
// });
|
|
155
|
-
// dialogRef.afterClosed().pipe(take(1)).subscribe(result => {
|
|
156
|
-
// const {input,action} = result
|
|
157
|
-
// if(action === 'add'){
|
|
158
|
-
// this.value.push(input)
|
|
159
|
-
// this.valueChanged.emit(this.value)
|
|
160
|
-
// }
|
|
161
|
-
// if(action === 'edit'&& this.editingIndex !== null){
|
|
162
|
-
// this.value[this.editingIndex] = input
|
|
163
|
-
// this.valueChanged.emit(this.value)
|
|
164
|
-
// }
|
|
165
|
-
// this.cancelEdit()
|
|
166
|
-
// });
|
|
167
|
-
}
|
|
168
|
-
get limitInputTo() {
|
|
169
|
-
return [...this.accountTreeKeys.map((key) => ({
|
|
170
|
-
value: key,
|
|
171
|
-
label: key,
|
|
172
|
-
})), {
|
|
173
|
-
value: undefined,
|
|
174
|
-
label: 'None'
|
|
175
|
-
}];
|
|
176
|
-
}
|
|
177
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ConfigMscoaAdditionalInputsComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
178
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: ConfigMscoaAdditionalInputsComponent, isStandalone: true, selector: "app-config-mscoa-additional-inputs", inputs: { disabled: "disabled", errors: "errors", getMscoaTree: "getMscoaTree", mapToData: "mapToData", value: "value" }, outputs: { valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: ConfigMscoaAdditionalInputsComponent }], ngImport: i0, template: "\n\n<mat-list *ngIf=\"(value?.length||0) > 0; else noInputs\">\n <mat-toolbar>\n Additional inputs configuration\n </mat-toolbar>\n <mat-form-field \n (mouseover)=\"hovered = i\"\n subscriptSizing=\"dynamic\" \n (mouseleave)=\"hovered = null\"\n *ngFor=\"let input of value; let i = index\" style=\" margin-bottom: 8px;\" appearance=\"outline\" >\n <mat-label>\n {{ input.label }}\n </mat-label>\n <mat-select [disabled]=\"disabled\" matNativeControl \n \n [value]=\"input.segment\"\n\n placeholder=\"select segment\" (selectionChange)=\"inputSegmentChanged($event,i)\"\n >\n \n \n @for (segment of limitInputTo; track segment.value) {\n <mat-option [value]=\"segment.value\" >{{segment.label}}</mat-option>\n }\n\n\n </mat-select>\n <mat-hint>\n Link formula to an input value\n </mat-hint>\n </mat-form-field>\n\n</mat-list>\n\n<ng-template #noInputs>\n <div *ngIf=\"mapToData?.id\" class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span><strong>\n No input configuration available. \n </strong> <br>\n Start by adding inputs below.</span>\n </div>\n\n</ng-template>\n\n\n\n\n<mat-toolbar *ngIf=\"!isAddingNew && editingIndex === null && mapToData?.id\">\n <button [disabled]=\"disabled\" style=\"width: 100%;\" (click)=\"startAddNew()\" mat-stroked-button>\n <mat-icon>\n add\n </mat-icon>\n Add New Input\n </button>\n</mat-toolbar>\n\n<ng-template #InputEditor>\n <h1>\n Not implemented yet\n </h1>\n\n not implemented\n</ng-template>\n", styles: [".tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i2$2.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i3$1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }] }); }
|
|
179
|
-
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: ConfigMscoaAdditionalInputsComponent, decorators: [{
|
|
181
|
-
type: Component,
|
|
182
|
-
args: [{ selector: 'app-config-mscoa-additional-inputs', standalone: true, imports: [
|
|
183
|
-
CommonModule,
|
|
184
|
-
MatModulesModule,
|
|
185
|
-
], providers: [{ provide: MatFormFieldControl, useExisting: ConfigMscoaAdditionalInputsComponent }], template: "\n\n<mat-list *ngIf=\"(value?.length||0) > 0; else noInputs\">\n <mat-toolbar>\n Additional inputs configuration\n </mat-toolbar>\n <mat-form-field \n (mouseover)=\"hovered = i\"\n subscriptSizing=\"dynamic\" \n (mouseleave)=\"hovered = null\"\n *ngFor=\"let input of value; let i = index\" style=\" margin-bottom: 8px;\" appearance=\"outline\" >\n <mat-label>\n {{ input.label }}\n </mat-label>\n <mat-select [disabled]=\"disabled\" matNativeControl \n \n [value]=\"input.segment\"\n\n placeholder=\"select segment\" (selectionChange)=\"inputSegmentChanged($event,i)\"\n >\n \n \n @for (segment of limitInputTo; track segment.value) {\n <mat-option [value]=\"segment.value\" >{{segment.label}}</mat-option>\n }\n\n\n </mat-select>\n <mat-hint>\n Link formula to an input value\n </mat-hint>\n </mat-form-field>\n\n</mat-list>\n\n<ng-template #noInputs>\n <div *ngIf=\"mapToData?.id\" class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span><strong>\n No input configuration available. \n </strong> <br>\n Start by adding inputs below.</span>\n </div>\n\n</ng-template>\n\n\n\n\n<mat-toolbar *ngIf=\"!isAddingNew && editingIndex === null && mapToData?.id\">\n <button [disabled]=\"disabled\" style=\"width: 100%;\" (click)=\"startAddNew()\" mat-stroked-button>\n <mat-icon>\n add\n </mat-icon>\n Add New Input\n </button>\n</mat-toolbar>\n\n<ng-template #InputEditor>\n <h1>\n Not implemented yet\n </h1>\n\n not implemented\n</ng-template>\n", styles: [".tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px}\n"] }]
|
|
186
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
187
|
-
type: Optional
|
|
188
|
-
}, {
|
|
189
|
-
type: Self
|
|
190
|
-
}] }, { type: i0.ElementRef }], propDecorators: { id: [{
|
|
191
|
-
type: HostBinding
|
|
192
|
-
}], disabled: [{
|
|
193
|
-
type: Input
|
|
194
|
-
}], errors: [{
|
|
195
|
-
type: Input
|
|
196
|
-
}], getMscoaTree: [{
|
|
197
|
-
type: Input
|
|
198
|
-
}], mapToData: [{
|
|
199
|
-
type: Input
|
|
200
|
-
}], value: [{
|
|
201
|
-
type: Input
|
|
202
|
-
}], valueChanged: [{
|
|
203
|
-
type: Output
|
|
204
|
-
}] } });
|
|
205
|
-
|
|
206
|
-
export { ConfigMscoaAdditionalInputsComponent };
|
|
207
|
-
//# sourceMappingURL=ngx-t-forms-config-mscoa-additional-inputs.component-DFdAVWTg.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-config-mscoa-additional-inputs.component-DFdAVWTg.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/config-mscoa-additional-inputs/config-mscoa-additional-inputs.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/config-mscoa-additional-inputs/config-mscoa-additional-inputs.component.html"],"sourcesContent":["import { Component, ElementRef, EventEmitter, HostBinding, inject, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { BehaviorSubject, catchError, Observable, Subject, take, tap } from 'rxjs';\r\n\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { FormColumnInputs } from 'ngx-t-forms-types';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { IGetTreeResponse } from 'ngx-t-forms-types';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { NgControl } from '@angular/forms';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\n\r\n\r\n\r\n\r\ninterface ConfiguredMscoaInput extends FormColumnInputs {\r\n segment:string\r\n}\r\n@Component({\r\n selector: 'app-config-mscoa-additional-inputs',\r\n standalone: true,\r\n imports:[\r\n CommonModule,\r\n MatModulesModule,\r\n ],\r\n templateUrl: './config-mscoa-additional-inputs.component.html',\r\n styleUrls: ['./config-mscoa-additional-inputs.component.scss'],\r\n providers: [{ provide: MatFormFieldControl, useExisting: ConfigMscoaAdditionalInputsComponent}],\r\n})\r\nexport class ConfigMscoaAdditionalInputsComponent implements OnInit, MatFormFieldControl<ConfiguredMscoaInput[]> {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n \r\n @HostBinding() id = `app-config-mscoa-additional-inputs-${ConfigMscoaAdditionalInputsComponent .nextId++}`;\r\n \r\n placeholder: string = ''\r\n constructor(@Optional() @Self() public ngControl: NgControl, private _elementRef: ElementRef<HTMLElement>,) { }\r\n focused: boolean = false;\r\n get empty() {\r\n return !this.value\r\n }\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n required: boolean = false;\r\n @Input() disabled: boolean = false;\r\n get errorState(): boolean {\r\n const hasError = !!this.ngControl?.control?.errors || (this.errors||[]).length > 0 && this.touched\r\n return !this.value && !!this.required || hasError\r\n }\r\n \r\n controlType?: string | undefined;\r\n autofilled?: boolean | undefined;\r\n userAriaDescribedBy?: string | undefined;\r\n disableAutomaticLabeling?: boolean | undefined;\r\n setDescribedByIds(ids: string[]) {\r\n // Ensure the component view is initialized\r\n if (this._elementRef && this._elementRef.nativeElement) {\r\n const controlElement = this._elementRef.nativeElement.querySelector('.app-config-mscoa-additional-inputs');\r\n // Check if the controlElement exists before attempting to set its attribute\r\n if (controlElement) {\r\n controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n }\r\n }\r\n }\r\n onContainerClick(event: MouseEvent): void {\r\n this.markAsTouched();\r\n this.stateChanges.next();\r\n }\r\n \r\n touched: boolean = false;\r\n onTouched = () => {};\r\n markAsTouched() {\r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n } \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n mscoaInitiated = false\r\n @Input() errors:IConfigElementError[] |undefined = [];\r\n @Input() set getMscoaTree(options$:Observable<IGetTreeResponse| undefined> ){\r\n if(!!options$ &&!this.mscoaInitiated){\r\n this.mscoaInitiated = true\r\n options$.pipe(\r\n take(1),\r\n tap((options) => {\r\n this.accountTreeKeys = options?.accountTreeKeys || []\r\n }),\r\n catchError(() => {\r\n return [null];\r\n })\r\n ).subscribe();\r\n\r\n }\r\n }\r\n @Input() mapToData:FormColumnInputs | undefined = undefined;\r\n @Input() set value(val: ConfiguredMscoaInput[]) {\r\n this._value.next(val || []);\r\n }\r\n get value(): ConfiguredMscoaInput[] {\r\n return this._value.value;\r\n }\r\n _inputInEdit = new BehaviorSubject<ConfiguredMscoaInput|null>(null)\r\n inputInEdit:ConfiguredMscoaInput|undefined = undefined\r\n\r\n @Output() valueChanged = new EventEmitter<ConfiguredMscoaInput[]>();\r\n private _value = new BehaviorSubject<ConfiguredMscoaInput[]>([]);\r\n\r\n editingIndex: number | null = null;\r\n isAddingNew = false;\r\n accountTreeKeys: string[] = [];\r\n \r\n ngOnInit() {\r\n\r\n }\r\n hovered :null|number = null\r\n\r\n\r\n startAddNew() {\r\n this.isAddingNew = true;\r\n this.editingIndex = null;\r\n this.inputInEdit = undefined\r\n this.openElementEditor();\r\n }\r\n\r\n startEdit(index: number) {\r\n this.editingIndex = index;\r\n this.isAddingNew = false;\r\n this.inputInEdit = this.value[index]\r\n this.openElementEditor();\r\n }\r\n removeInput(index: number) {\r\n const updatedValue = this.value.filter((_, i) => i !== index);\r\n this._value.next(updatedValue);\r\n this.valueChanged.emit(updatedValue);\r\n }\r\n cancelEdit() {\r\n this.editingIndex = null;\r\n this.isAddingNew = false;\r\n }\r\n\r\n saveSegment() {\r\n // if (this.segmentForm.valid) {\r\n // const newSegment = ({\r\n // segment:this.segmentForm.value.segment,\r\n // label:this.toTitleCase(this.segmentForm.value.segment),\r\n // }) as IIncludedSegmentConfig;\r\n // const updatedValue = [...this.value];\r\n\r\n // if (this.isAddingNew) {\r\n // updatedValue.push(newSegment);\r\n // } else if (this.editingIndex !== null) {\r\n // updatedValue[this.editingIndex] = newSegment;\r\n // }\r\n\r\n \r\n // this._value.next(updatedValue);\r\n // this.valueChanged.emit(updatedValue);\r\n // this.cancelEdit();\r\n // }\r\n }\r\n hoveredIndex:number|null = null\r\n removeSegment(index: number) {\r\n const updatedValue = this.value.filter((_, i) => i !== index);\r\n this._value.next(updatedValue);\r\n this.valueChanged.emit(updatedValue);\r\n }\r\n parentId:string|undefined \r\n async openElementEditor() {\r\n\r\n this.openFormDialog()\r\n }\r\n inputSegmentChanged($event:any,i:number){\r\n if($event.detail.value === 'None'&&this.value[i] !== undefined){\r\n this.value[i]!.segment = undefined as any\r\n }else if(this.value[i] !== undefined){\r\n this.value[i]!.segment = $event.detail.value\r\n }\r\n this.valueChanged.emit(this.value)\r\n }\r\nreadonly dialog = inject(MatDialog);\r\nopenFormDialog() {\r\n // const dialogRef = this.dialog.open(FormElementModalEditorComponent,{\r\n // maxHeight:'95vh',\r\n // panelClass:'form-element-modal-editor',\r\n // data:{\r\n // inputInEdit:this.inputInEdit\r\n // }\r\n // });\r\n\r\n // dialogRef.afterClosed().pipe(take(1)).subscribe(result => {\r\n // const {input,action} = result\r\n // if(action === 'add'){\r\n // this.value.push(input)\r\n // this.valueChanged.emit(this.value)\r\n // }\r\n // if(action === 'edit'&& this.editingIndex !== null){\r\n // this.value[this.editingIndex] = input\r\n // this.valueChanged.emit(this.value)\r\n // }\r\n // this.cancelEdit()\r\n // });\r\n}\r\nget limitInputTo(){\r\n return [...this.accountTreeKeys.map((key) => ({\r\n value: key,\r\n label: key,\r\n })),{\r\n value:undefined,\r\n label:'None'\r\n }]\r\n}\r\n\r\n}\r\n","\n\n<mat-list *ngIf=\"(value?.length||0) > 0; else noInputs\">\n <mat-toolbar>\n Additional inputs configuration\n </mat-toolbar>\n <mat-form-field \n (mouseover)=\"hovered = i\"\n subscriptSizing=\"dynamic\" \n (mouseleave)=\"hovered = null\"\n *ngFor=\"let input of value; let i = index\" style=\" margin-bottom: 8px;\" appearance=\"outline\" >\n <mat-label>\n {{ input.label }}\n </mat-label>\n <mat-select [disabled]=\"disabled\" matNativeControl \n \n [value]=\"input.segment\"\n\n placeholder=\"select segment\" (selectionChange)=\"inputSegmentChanged($event,i)\"\n >\n \n \n @for (segment of limitInputTo; track segment.value) {\n <mat-option [value]=\"segment.value\" >{{segment.label}}</mat-option>\n }\n\n\n </mat-select>\n <mat-hint>\n Link formula to an input value\n </mat-hint>\n </mat-form-field>\n\n</mat-list>\n\n<ng-template #noInputs>\n <div *ngIf=\"mapToData?.id\" class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span><strong>\n No input configuration available. \n </strong> <br>\n Start by adding inputs below.</span>\n </div>\n\n</ng-template>\n\n\n\n\n<mat-toolbar *ngIf=\"!isAddingNew && editingIndex === null && mapToData?.id\">\n <button [disabled]=\"disabled\" style=\"width: 100%;\" (click)=\"startAddNew()\" mat-stroked-button>\n <mat-icon>\n add\n </mat-icon>\n Add New Input\n </button>\n</mat-toolbar>\n\n<ng-template #InputEditor>\n <h1>\n Not implemented yet\n </h1>\n\n not implemented\n</ng-template>\n"],"names":["i3","i4","i5","i6","i7","i8"],"mappings":";;;;;;;;;;;;;;;;MA6Ba,oCAAoC,CAAA;aAEvC,IAAA,CAAA,MAAM,GAAG,CAAH,CAAK;IAMlB,WAAA,CAAuC,SAAoB,EAAU,WAAoC,EAAA;QAAlE,IAAA,CAAA,SAAS,GAAT,SAAS;QAAqB,IAAA,CAAA,WAAW,GAAX,WAAW;AALhF,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAEnB,QAAA,IAAA,CAAA,EAAE,GAAG,CAAA,mCAAA,EAAsC,oCAAoC,CAAE,MAAM,EAAE,EAAE;QAE1G,IAAA,CAAA,WAAW,GAAW,EAAE;QAExB,IAAA,CAAA,OAAO,GAAY,KAAK;QAOxB,IAAA,CAAA,QAAQ,GAAY,KAAK;QACjB,IAAA,CAAA,QAAQ,GAAY,KAAK;QAyBjC,IAAA,CAAA,OAAO,GAAY,KAAK;AACxB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAK,EAAE,CAAC;QAkBrB,IAAA,CAAA,cAAc,GAAG,KAAK;QACT,IAAA,CAAA,MAAM,GAAoC,EAAE;QAgBhD,IAAA,CAAA,SAAS,GAAgC,SAAS;AAO3D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAA4B,IAAI,CAAC;QACnE,IAAA,CAAA,WAAW,GAAkC,SAAS;AAE5C,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAA0B;AAC3D,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,eAAe,CAAyB,EAAE,CAAC;QAEhE,IAAA,CAAA,YAAY,GAAkB,IAAI;QAClC,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,eAAe,GAAa,EAAE;QAK9B,IAAA,CAAA,OAAO,GAAgB,IAAI;QA8C3B,IAAA,CAAA,YAAY,GAAe,IAAI;AAmBxB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IA3J8E;AAE9G,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK;IACpB;AACA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK;IACpC;AAGA,IAAA,IAAI,UAAU,GAAA;QACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAE,EAAE,EAAE,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO;AAClG,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAK,QAAQ;IACpD;AAMA,IAAA,iBAAiB,CAAC,GAAa,EAAA;;QAE7B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AACtD,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,qCAAqC,CAAC;;YAE1G,IAAI,cAAc,EAAE;AAClB,gBAAA,cAAc,CAAC,YAAY,CAAC,kBAAkB,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChE;QACF;IACF;AACA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC1B;IAIA,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACrB;IACF;IAcD,IAAa,YAAY,CAAC,QAAgD,EAAA;QACxE,IAAG,CAAC,CAAC,QAAQ,IAAG,CAAC,IAAI,CAAC,cAAc,EAAC;AACnC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;AAC1B,YAAA,QAAQ,CAAC,IAAI,CACX,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,OAAO,KAAI;gBACd,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,IAAI,EAAE;AACvD,YAAA,CAAC,CAAC,EACF,UAAU,CAAC,MAAK;gBACd,OAAO,CAAC,IAAI,CAAC;AACf,YAAA,CAAC,CAAC,CACH,CAAC,SAAS,EAAE;QAEf;IACF;IAEA,IAAa,KAAK,CAAC,GAA2B,EAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;IAC7B;AACA,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK;IAC1B;IAWA,QAAQ,GAAA;IAER;IAIA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAC5B,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AAEA,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,iBAAiB,EAAE;IAC1B;AACA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;IACtC;IACA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;IAC1B;IAEA,WAAW,GAAA;;;;;;;;;;;;;;;;IAmBX;AAEA,IAAA,aAAa,CAAC,KAAa,EAAA;AACzB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AAC7D,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;AAC9B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC;IACtC;AAEA,IAAA,MAAM,iBAAiB,GAAA;QAErB,IAAI,CAAC,cAAc,EAAE;IACvB;IACA,mBAAmB,CAAC,MAAU,EAAC,CAAQ,EAAA;AACrC,QAAA,IAAG,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,IAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,GAAG,SAAgB;QAC3C;aAAM,IAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAC;AACnC,YAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK;QAC9C;QACA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC;IAEF,cAAc,GAAA;;;;;;;;;;;;;;;;;;;;IAqBd;AACA,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM;AAC5C,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,KAAK,EAAE,GAAG;AACX,aAAA,CAAC,CAAC,EAAC;AACF,gBAAA,KAAK,EAAC,SAAS;AACf,gBAAA,KAAK,EAAC;AACP,aAAA,CAAC;IACJ;8GAlMa,oCAAoC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,iSAFpC,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,oCAAoC,EAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BjG,ulDAiEA,EAAA,MAAA,EAAA,CAAA,4JAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED3CI,YAAY,+PACZ,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAMP,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAXhD,SAAS;+BACE,oCAAoC,EAAA,UAAA,EAClC,IAAI,EAAA,OAAA,EACR;wBACN,YAAY;wBACZ,gBAAgB;qBACjB,EAAA,SAAA,EAGU,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAA,oCAAsC,EAAC,CAAC,EAAA,QAAA,EAAA,ulDAAA,EAAA,MAAA,EAAA,CAAA,4JAAA,CAAA,EAAA;;0BAUjF;;0BAAY;;sBAHxB;;sBAYD;;sBA6CI;;sBACJ;;sBAeA;;sBACA;;sBASA;;;;;"}
|