ngx-t-forms 2.0.28 → 2.0.30
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 +2 -1
- package/fesm2022/{ngx-t-forms-calculated-field-rules.component-DqEcErNO.mjs → ngx-t-forms-calculated-field-rules.component-Ct6_c_Lj.mjs} +6 -6
- package/fesm2022/{ngx-t-forms-calculated-field-rules.component-DqEcErNO.mjs.map → ngx-t-forms-calculated-field-rules.component-Ct6_c_Lj.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-ItZ2K6AS.mjs → ngx-t-forms-chip-options-creator-editor.component-yuM1KHho.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-chip-options-creator-editor.component-ItZ2K6AS.mjs.map → ngx-t-forms-chip-options-creator-editor.component-yuM1KHho.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-cGgQrGlZ.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-BptpYSe-.mjs} +6 -8
- package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-BptpYSe-.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-data-source-picker.component-cxjBReMg.mjs → ngx-t-forms-data-source-picker.component-Badna1Rl.mjs} +8 -9
- package/fesm2022/ngx-t-forms-data-source-picker.component-Badna1Rl.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-document-list-label-config-editor.component-Dr-w1JzX.mjs → ngx-t-forms-document-list-label-config-editor.component-2_8XzUgD.mjs} +7 -9
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-2_8XzUgD.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-form-input-selector.component-DV4Sts9F.mjs +134 -0
- package/fesm2022/ngx-t-forms-form-input-selector.component-DV4Sts9F.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-form-json-view.component-00g2e0dT.mjs → ngx-t-forms-form-json-view.component-B8seYzMQ.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-form-json-view.component-00g2e0dT.mjs.map → ngx-t-forms-form-json-view.component-B8seYzMQ.mjs.map} +1 -1
- package/fesm2022/ngx-t-forms-form-section-stepper.component-x_83iAWA.mjs +281 -0
- package/fesm2022/ngx-t-forms-form-section-stepper.component-x_83iAWA.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-forms-builder-menu.component-DKybEMbx.mjs → ngx-t-forms-forms-builder-menu.component-UWo_dyVt.mjs} +14 -18
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-UWo_dyVt.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-input-editor.component-otrfAVh7.mjs → ngx-t-forms-input-editor.component-B_kkOoEO.mjs} +10 -10
- package/fesm2022/ngx-t-forms-input-editor.component-B_kkOoEO.mjs.map +1 -0
- package/fesm2022/ngx-t-forms-map-mat-options-keys-SM5XM9uy.mjs +124 -0
- package/fesm2022/ngx-t-forms-map-mat-options-keys-SM5XM9uy.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-Bj0vLXbO.mjs → ngx-t-forms-mat-chip-list-editor.component-C41AL9Et.mjs} +5 -6
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-C41AL9Et.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-mat-slider-editor.component-FJV0cwS2.mjs → ngx-t-forms-mat-slider-editor.component-BWe8U-sI.mjs} +2 -3
- package/fesm2022/ngx-t-forms-mat-slider-editor.component-BWe8U-sI.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-BFZ0NqQb.mjs → ngx-t-forms-mat-slider-toggle-editor.component-B_XlkHuK.mjs} +2 -2
- package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-BFZ0NqQb.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-B_XlkHuK.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-CTEQEHFc.mjs → ngx-t-forms-missing-form-configs.component-DPNNyKkt.mjs} +6 -6
- package/fesm2022/{ngx-t-forms-missing-form-configs.component-CTEQEHFc.mjs.map → ngx-t-forms-missing-form-configs.component-DPNNyKkt.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mscoa-chart-toolbar.component-DS_AVAsh.mjs → ngx-t-forms-mscoa-chart-toolbar.component-DY1QnG08.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-mscoa-chart-toolbar.component-DS_AVAsh.mjs.map → ngx-t-forms-mscoa-chart-toolbar.component-DY1QnG08.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mscoa-error-display.component-CEO9xouF.mjs → ngx-t-forms-mscoa-error-display.component-CRc_4l3l.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-mscoa-error-display.component-CEO9xouF.mjs.map → ngx-t-forms-mscoa-error-display.component-CRc_4l3l.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-C7pdGHqP.mjs → ngx-t-forms-mscoa-segment-config.component-Ckr_nuZF.mjs} +7 -10
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-Ckr_nuZF.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-mscoa-temporary-hint.component-Ct1Mb2x-.mjs → ngx-t-forms-mscoa-temporary-hint.component-GYxT-56Y.mjs} +4 -4
- package/fesm2022/{ngx-t-forms-mscoa-temporary-hint.component-Ct1Mb2x-.mjs.map → ngx-t-forms-mscoa-temporary-hint.component-GYxT-56Y.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-ngx-t-forms-mfuTrkmM.mjs → ngx-t-forms-ngx-t-forms-DP2koSL5.mjs} +2153 -587
- package/fesm2022/ngx-t-forms-ngx-t-forms-DP2koSL5.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-pipeline-generator.component-CgpB8grY.mjs → ngx-t-forms-pipeline-generator.component-BxHetD_Q.mjs} +11 -35
- package/fesm2022/ngx-t-forms-pipeline-generator.component-BxHetD_Q.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-record-list-manager.component-CzZ0oofH.mjs → ngx-t-forms-record-list-manager.component-BQuMkoXo.mjs} +5 -6
- package/fesm2022/ngx-t-forms-record-list-manager.component-BQuMkoXo.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-required-inputs.component-BKWaKqO6.mjs → ngx-t-forms-required-inputs.component-CLyq9dIR.mjs} +5 -7
- package/fesm2022/ngx-t-forms-required-inputs.component-CLyq9dIR.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-DqGJ_q5y.mjs → ngx-t-forms-rest-api-call-setup.component-CWeIUKLz.mjs} +7 -11
- package/fesm2022/ngx-t-forms-rest-api-call-setup.component-CWeIUKLz.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-section-report.component-Z0hcYnrT.mjs → ngx-t-forms-section-report.component-BtaF39WD.mjs} +5 -5
- package/fesm2022/{ngx-t-forms-section-report.component-Z0hcYnrT.mjs.map → ngx-t-forms-section-report.component-BtaF39WD.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-selection-options-editor.component-DKfWcIYB.mjs → ngx-t-forms-selection-options-editor.component-B4cEGWrK.mjs} +7 -8
- package/fesm2022/ngx-t-forms-selection-options-editor.component-B4cEGWrK.mjs.map +1 -0
- package/fesm2022/{ngx-t-forms-t-workflow-picker.component-CUX4KlZd.mjs → ngx-t-forms-t-workflow-picker.component-BkVN4Wdk.mjs} +5 -5
- package/fesm2022/{ngx-t-forms-t-workflow-picker.component-CUX4KlZd.mjs.map → ngx-t-forms-t-workflow-picker.component-BkVN4Wdk.mjs.map} +1 -1
- package/fesm2022/{ngx-t-forms-validators-config.component-D5lUrnLK.mjs → ngx-t-forms-validators-config.component-Cq07Er-G.mjs} +8 -10
- package/fesm2022/ngx-t-forms-validators-config.component-Cq07Er-G.mjs.map +1 -0
- package/fesm2022/ngx-t-forms.mjs +1 -1
- package/package.json +2 -2
- package/types/ngx-t-forms.d.ts +172 -7
- package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-cGgQrGlZ.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-data-source-picker.component-cxjBReMg.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-document-list-label-config-editor.component-Dr-w1JzX.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-form-input-selector.component-9kIiAxlg.mjs +0 -132
- package/fesm2022/ngx-t-forms-form-input-selector.component-9kIiAxlg.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-form-section-stepper.component-BaT3CcFj.mjs +0 -264
- package/fesm2022/ngx-t-forms-form-section-stepper.component-BaT3CcFj.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-forms-builder-menu.component-DKybEMbx.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-input-editor.component-otrfAVh7.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-Bj0vLXbO.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mat-slider-editor.component-FJV0cwS2.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-mscoa-segment-config.component-C7pdGHqP.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-ngx-t-forms-mfuTrkmM.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-pipeline-generator.component-CgpB8grY.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-record-list-manager.component-CzZ0oofH.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-required-inputs.component-BKWaKqO6.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-rest-api-call-setup.component-DqGJ_q5y.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-selection-options-editor.component-DKfWcIYB.mjs.map +0 -1
- package/fesm2022/ngx-t-forms-validators-config.component-D5lUrnLK.mjs.map +0 -1
package/types/ngx-t-forms.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { OLD_FormInterface, FormInterface, NgxTFormsConfig, FormColumnInputs, IF
|
|
|
5
5
|
import { FormGroup, AbstractControl, FormControl } from '@angular/forms';
|
|
6
6
|
import { IStepOption } from 'ngx-ui-tour-md-menu';
|
|
7
7
|
import * as rxjs from 'rxjs';
|
|
8
|
-
import {
|
|
8
|
+
import { Observable, Subject, Subscription, BehaviorSubject } from 'rxjs';
|
|
9
9
|
import { HttpClient } from '@angular/common/http';
|
|
10
10
|
import { StepperSelectionEvent, StepState } from '@angular/cdk/stepper';
|
|
11
11
|
import { MatDialogRef } from '@angular/material/dialog';
|
|
@@ -89,29 +89,61 @@ interface DependentInput {
|
|
|
89
89
|
declare abstract class FormTowerControllerService implements OnDestroy {
|
|
90
90
|
private _http;
|
|
91
91
|
readonly NGX_T_FORMS_CONFIG: ngx_t_forms_types.NgxTFormsConfig;
|
|
92
|
+
readonly getFinacialCycles: () => Observable<ngx_t_forms_types.IFinancialCycles>;
|
|
92
93
|
constructor(_http: HttpClient);
|
|
93
94
|
protected _destroyed$: Subject<void>;
|
|
94
95
|
protected _form: FormInterface | undefined;
|
|
95
96
|
protected _mainForm: FormGroup | undefined;
|
|
97
|
+
private _activeStatusKeys;
|
|
98
|
+
private _busyState$;
|
|
99
|
+
private _syncBusyState;
|
|
96
100
|
protected _formValue: Record<string, any>;
|
|
97
101
|
protected _initialFormValue: Record<string, any>;
|
|
102
|
+
protected _systemInputs: FormColumnInputs[];
|
|
98
103
|
protected _inputFunctionsCollection: Record<string, Partial<Record<FunctionTypes, Observable<void>>>>;
|
|
99
104
|
protected _inputChangeDependencyRecords: Partial<Record<string, Partial<Record<FunctionTypes, Record<string, boolean>>>>>;
|
|
100
105
|
protected _reverseDependencyMap: Record<string, DependentInput[]>;
|
|
101
106
|
protected _changeHistory: IFormChangeHistory[];
|
|
102
107
|
submittingStatus: FormSubmissionStatus | undefined;
|
|
103
|
-
|
|
108
|
+
private _submittingForm;
|
|
109
|
+
get submittingForm(): boolean;
|
|
110
|
+
set submittingForm(value: boolean);
|
|
104
111
|
get form(): FormInterface | undefined;
|
|
105
112
|
set form(value: FormInterface | undefined);
|
|
113
|
+
set systemInputs(value: FormColumnInputs[]);
|
|
114
|
+
get systemInputs(): FormColumnInputs[];
|
|
106
115
|
get mainForm(): FormGroup | undefined;
|
|
107
116
|
get changeHistory(): IFormChangeHistory[];
|
|
108
117
|
set changeHistory(value: IFormChangeHistory[]);
|
|
109
118
|
get inputFunctionsCollection(): Record<string, Partial<Record<FunctionTypes, Observable<void>>>>;
|
|
119
|
+
get isBusy(): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Reactive stream of the tower's busy state.
|
|
122
|
+
* Emits `true` whenever any calculation, API fetch, or validation is in flight,
|
|
123
|
+
* or while the form is submitting. Emits `false` when all operations have settled.
|
|
124
|
+
*/
|
|
125
|
+
get isBusy$(): Observable<boolean>;
|
|
126
|
+
/**
|
|
127
|
+
* Resolves once the tower has finished all in-flight computations (calculations,
|
|
128
|
+
* API fetches, input-sourced values, validations).
|
|
129
|
+
*
|
|
130
|
+
* Safe to use in import workflows:
|
|
131
|
+
* ```ts
|
|
132
|
+
* await tower.initialize(form);
|
|
133
|
+
* tower.initializeFormValues(rowData);
|
|
134
|
+
* await tower.waitUntilSettled(); // changeMonitor debounce + all ops complete
|
|
135
|
+
* const value = tower.getFormValueNames();
|
|
136
|
+
* ```
|
|
137
|
+
*
|
|
138
|
+
* @param debounceMs Extra lead time matching the changeMonitor debounce (default 600ms).
|
|
139
|
+
* @param timeoutMs Hard timeout before the promise rejects (default 30s).
|
|
140
|
+
*/
|
|
141
|
+
waitUntilSettled(debounceMs?: number, timeoutMs?: number): Promise<void>;
|
|
110
142
|
ngOnDestroy(): void;
|
|
111
143
|
initialize: (form: FormInterface) => Promise<void>;
|
|
112
144
|
setFirstStepAsActive: () => void;
|
|
113
145
|
getFormValueNames: () => Record<string, any>;
|
|
114
|
-
readonly allFormInputs: () => FormColumnInputs[]
|
|
146
|
+
readonly allFormInputs: () => FormColumnInputs[];
|
|
115
147
|
prevValue: any;
|
|
116
148
|
protected changeMonitor: (newFormValue: any) => Observable<any>;
|
|
117
149
|
createInputFunctionsCollection: () => void;
|
|
@@ -126,6 +158,8 @@ declare abstract class FormTowerControllerService implements OnDestroy {
|
|
|
126
158
|
executeInputFunctionsWithoutDependencies: () => void;
|
|
127
159
|
_hintTimeoutIds: Record<string, any>;
|
|
128
160
|
setTemporaryHint: (inputId: string, hint: string, type: HintType) => void;
|
|
161
|
+
_onFormInputConfigChange?: (inputId: string, config: FormColumnInputs) => void;
|
|
162
|
+
registerFormInputConfigChangeFn: (fn: (inputId: string, config: FormColumnInputs) => void) => (inputId: string, config: FormColumnInputs) => void;
|
|
129
163
|
httpPostDataFunction: (url: string, data: any, options: any) => Observable<any>;
|
|
130
164
|
httpGetDataFunction: (url: string, options: any) => Observable<any>;
|
|
131
165
|
_errorTimeoutIds: Record<string, any>;
|
|
@@ -159,6 +193,11 @@ declare abstract class FormTowerControllerService implements OnDestroy {
|
|
|
159
193
|
saveMultipleInputForm: (inputId: string) => boolean;
|
|
160
194
|
multipleInputEditRow: (inputId: string, rowId: string) => boolean;
|
|
161
195
|
multipleInputDuplicateRow: (inputId: string, rowId: string) => boolean;
|
|
196
|
+
refreshSection: (sectionId: string) => Observable<void>;
|
|
197
|
+
refreshActiveSection: () => void;
|
|
198
|
+
refreshInput: (inputId: string) => Observable<undefined>;
|
|
199
|
+
canRefreshFn: (inputId: string) => boolean;
|
|
200
|
+
canRefreshSection: (sectionId: string) => boolean;
|
|
162
201
|
static ɵfac: i0.ɵɵFactoryDeclaration<FormTowerControllerService, never>;
|
|
163
202
|
static ɵdir: i0.ɵɵDirectiveDeclaration<FormTowerControllerService, never, never, {}, {}, never, never, true, never>;
|
|
164
203
|
}
|
|
@@ -198,11 +237,127 @@ declare function getSectionElements(elements: ElementEditorInnerSectionElementIn
|
|
|
198
237
|
max?: number;
|
|
199
238
|
step?: number;
|
|
200
239
|
format?: (value: any) => number;
|
|
240
|
+
multipleSelection?: boolean;
|
|
201
241
|
})[];
|
|
202
242
|
|
|
203
243
|
declare const returnMappedPathValue: (pathMap: TreeNode[], obj: any) => any;
|
|
204
244
|
declare const getValueFromValueAccessor: (valueAccessRules: FormInputBasicOptionInterface | TreeNode[] | Record<string, TreeNode[]>, data: any) => any;
|
|
205
245
|
|
|
246
|
+
type ImportRowStatus = 'pending' | 'processing' | 'valid' | 'invalid' | 'error';
|
|
247
|
+
interface ImportRowState {
|
|
248
|
+
rowIndex: number;
|
|
249
|
+
originalData: Record<string, any>;
|
|
250
|
+
status: ImportRowStatus;
|
|
251
|
+
/** Flat formControlName-keyed values after the tower has settled */
|
|
252
|
+
settledValue?: Record<string, any>;
|
|
253
|
+
isValid?: boolean;
|
|
254
|
+
/** inputId → array of Angular validator error keys */
|
|
255
|
+
validationErrors?: Record<string, string[]>;
|
|
256
|
+
/** formControlName → error keys concatenated with '.' (e.g. `"required.minlength"`) */
|
|
257
|
+
colErrors?: Record<string, string>;
|
|
258
|
+
errorMessage?: string;
|
|
259
|
+
}
|
|
260
|
+
interface ImportProgress {
|
|
261
|
+
total: number;
|
|
262
|
+
pending: number;
|
|
263
|
+
processing: number;
|
|
264
|
+
complete: number;
|
|
265
|
+
valid: number;
|
|
266
|
+
invalid: number;
|
|
267
|
+
error: number;
|
|
268
|
+
rows: ImportRowState[];
|
|
269
|
+
}
|
|
270
|
+
declare class TFormImportController {
|
|
271
|
+
private readonly _injector;
|
|
272
|
+
private readonly _rows$;
|
|
273
|
+
/**
|
|
274
|
+
* Per-session HTTP caches.
|
|
275
|
+
* Key: serialized request identity → shared Observable (shareReplay).
|
|
276
|
+
* Populated at the start of runImport and cleared when it finishes,
|
|
277
|
+
* so every import session starts cold but identical in-flight requests
|
|
278
|
+
* across concurrent rows reuse a single HTTP call.
|
|
279
|
+
*/
|
|
280
|
+
private _getCache;
|
|
281
|
+
private _postCache;
|
|
282
|
+
/**
|
|
283
|
+
* Shared financial-cycles observable for the current import session.
|
|
284
|
+
* loadSystemInputs calls getFinacialCycles() directly via NGX_T_FORMS_CONFIG
|
|
285
|
+
* (not through utils), so HTTP-function patching alone cannot deduplicate it.
|
|
286
|
+
* We intercept it at the config level by providing a wrapped token in each
|
|
287
|
+
* tower's child injector that returns this shared observable instead.
|
|
288
|
+
*/
|
|
289
|
+
private _financialCycles$;
|
|
290
|
+
/**
|
|
291
|
+
* Reactive progress stream — subscribe to track each row in real time.
|
|
292
|
+
*/
|
|
293
|
+
readonly progress$: Observable<ImportProgress>;
|
|
294
|
+
/**
|
|
295
|
+
* Snapshot of the current progress (non-reactive).
|
|
296
|
+
*/
|
|
297
|
+
get currentProgress(): ImportProgress;
|
|
298
|
+
/**
|
|
299
|
+
* Runs an import session.
|
|
300
|
+
*
|
|
301
|
+
* For each row a fresh tower instance is spun up via a child injector,
|
|
302
|
+
* prepopulated, and left to settle (calculations + API fetches) before
|
|
303
|
+
* recording the final value and validation status.
|
|
304
|
+
* All rows are processed concurrently.
|
|
305
|
+
*
|
|
306
|
+
* Usage:
|
|
307
|
+
* ```ts
|
|
308
|
+
* const results = await importController.runImport(form, rows);
|
|
309
|
+
* const valid = results.filter(r => r.isValid);
|
|
310
|
+
* ```
|
|
311
|
+
*
|
|
312
|
+
* @param form The form definition every row is validated against.
|
|
313
|
+
* @param rows Raw data objects — one per import row.
|
|
314
|
+
*/
|
|
315
|
+
runImport(form: FormInterface, rows: Record<string, any>[]): Promise<ImportRowState[]>;
|
|
316
|
+
/** Clears all row state. */
|
|
317
|
+
reset(): void;
|
|
318
|
+
/**
|
|
319
|
+
* Creates an isolated tower instance through a short-lived child injector.
|
|
320
|
+
*
|
|
321
|
+
* The child injector delegates all token resolution to the parent, so
|
|
322
|
+
* HttpClient, NGX_T_FORMS_CONFIG_TOKEN, and any other deps the tower needs
|
|
323
|
+
* are found automatically — no manual wiring required here.
|
|
324
|
+
*
|
|
325
|
+
* After creation the tower's HTTP functions are replaced with cache-aware
|
|
326
|
+
* wrappers so that identical requests fired by different rows share one
|
|
327
|
+
* in-flight Observable instead of each issuing their own HTTP call.
|
|
328
|
+
*/
|
|
329
|
+
private _createTower;
|
|
330
|
+
/**
|
|
331
|
+
* Returns a shared Observable for a GET request.
|
|
332
|
+
* On cache miss the original function is called once and its result is
|
|
333
|
+
* multicasted via shareReplay(1) so every concurrent subscriber (row) that
|
|
334
|
+
* asks for the same URL+options receives the same response without an
|
|
335
|
+
* additional HTTP call.
|
|
336
|
+
*/
|
|
337
|
+
private _cachedGet;
|
|
338
|
+
/**
|
|
339
|
+
* Returns a shared Observable for a POST request.
|
|
340
|
+
* Keyed by URL + serialised body + serialised options so only truly
|
|
341
|
+
* identical requests are deduplicated.
|
|
342
|
+
*/
|
|
343
|
+
private _cachedPost;
|
|
344
|
+
private _processRow;
|
|
345
|
+
/**
|
|
346
|
+
* Walks `{ [sectionId]: FormGroup { [inputId]: FormControl } }` and
|
|
347
|
+
* collects every control that carries validation errors.
|
|
348
|
+
*/
|
|
349
|
+
private _collectValidationErrors;
|
|
350
|
+
/**
|
|
351
|
+
* Builds a formControlName-keyed error map from the settled form.
|
|
352
|
+
* Multiple error keys on one control are joined with '.'.
|
|
353
|
+
*/
|
|
354
|
+
private _collectColErrors;
|
|
355
|
+
private _patchRow;
|
|
356
|
+
private _toProgress;
|
|
357
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TFormImportController, never>;
|
|
358
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TFormImportController>;
|
|
359
|
+
}
|
|
360
|
+
|
|
206
361
|
declare const FORM_ACTIONS_TOKEN: InjectionToken<IFormActions>;
|
|
207
362
|
declare const FORM_CONFIG_TOKEN: InjectionToken<FormInterface>;
|
|
208
363
|
declare const FORM_SLIDES_TOKEN: InjectionToken<FormSlideInterface>;
|
|
@@ -273,7 +428,7 @@ declare class FormsStoreService extends ComponentStore<IFormsInitStateInterface>
|
|
|
273
428
|
defaultInputInEdit$: Observable<any>;
|
|
274
429
|
inputInEditValidationErrors$: Observable<ngx_t_forms_types.ValidationError[]>;
|
|
275
430
|
selectFormTitle$: Observable<string | undefined>;
|
|
276
|
-
getAllFormInputs$: Observable<ngx_t_forms_types.FormColumnInputs[]
|
|
431
|
+
getAllFormInputs$: Observable<never[] | ngx_t_forms_types.FormColumnInputs[]>;
|
|
277
432
|
inputElementEditorConfigs$: Observable<{
|
|
278
433
|
editorSections: {
|
|
279
434
|
elements: {
|
|
@@ -308,6 +463,7 @@ declare class FormsStoreService extends ComponentStore<IFormsInitStateInterface>
|
|
|
308
463
|
httpGetDataFunction?: (url: string, options: any) => Observable<any>;
|
|
309
464
|
getWorkflowOptions?: Observable<ngx_t_forms_types.IWorkflowOption[]> | undefined;
|
|
310
465
|
getMscoaTree?: Observable<ngx_t_forms_types.IGetTreeResponse> | undefined;
|
|
466
|
+
multipleSelection?: boolean;
|
|
311
467
|
}[];
|
|
312
468
|
hasErrors: boolean;
|
|
313
469
|
label: string;
|
|
@@ -396,6 +552,13 @@ declare class FormsStoreService extends ComponentStore<IFormsInitStateInterface>
|
|
|
396
552
|
} | Observable<{
|
|
397
553
|
form: FormInterface;
|
|
398
554
|
}>) => rxjs.Subscription;
|
|
555
|
+
updateFormInputConfigFromTower: (observableOrValue: {
|
|
556
|
+
inputId: string;
|
|
557
|
+
config: ngx_t_forms_types.FormColumnInputs;
|
|
558
|
+
} | Observable<{
|
|
559
|
+
inputId: string;
|
|
560
|
+
config: ngx_t_forms_types.FormColumnInputs;
|
|
561
|
+
}>) => rxjs.Subscription;
|
|
399
562
|
setInputInEditId: (observableOrValue: {
|
|
400
563
|
inputInEdit: string | null;
|
|
401
564
|
} | Observable<{
|
|
@@ -484,7 +647,7 @@ declare class FormsComponent implements OnInit, OnDestroy {
|
|
|
484
647
|
formControlName: string;
|
|
485
648
|
}[];
|
|
486
649
|
activeForm: string | null;
|
|
487
|
-
getCols(): 1 |
|
|
650
|
+
getCols(): 1 | 2 | 3 | 4;
|
|
488
651
|
getFormAvatar(formTitle: string): string;
|
|
489
652
|
archive(form: LocalFormStateSelectorInterface, event: Event): Promise<void>;
|
|
490
653
|
unarchive(form: LocalFormStateSelectorInterface, event: Event): Promise<void>;
|
|
@@ -733,6 +896,7 @@ declare class UserFormStepperComponent extends FormTowerControllerService {
|
|
|
733
896
|
loadForm(formId: string | undefined): void;
|
|
734
897
|
_initialFormValuesLocal: any;
|
|
735
898
|
set initialValues(initialFormValues: any);
|
|
899
|
+
set globalSystemInputs(inputs: FormColumnInputs[]);
|
|
736
900
|
passParamsOnSubmit: any;
|
|
737
901
|
get formBuilderFunctions(): FormBuilderFunctions;
|
|
738
902
|
stepper: MatStepper | undefined;
|
|
@@ -750,8 +914,9 @@ declare class UserFormStepperComponent extends FormTowerControllerService {
|
|
|
750
914
|
* The tour guides the user through the form's title, sections, and individual fields.
|
|
751
915
|
*/
|
|
752
916
|
startTour(): void;
|
|
917
|
+
refreshASection(sectionId: string): void;
|
|
753
918
|
static ɵfac: i0.ɵɵFactoryDeclaration<UserFormStepperComponent, never>;
|
|
754
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<UserFormStepperComponent, "lib-user-form-stepper", never, { "formId": { "alias": "formId"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "passParamsOnSubmit": { "alias": "passParamsOnSubmit"; "required": false; }; }, {}, never, never, true, never>;
|
|
919
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<UserFormStepperComponent, "lib-user-form-stepper", never, { "formId": { "alias": "formId"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "globalSystemInputs": { "alias": "globalSystemInputs"; "required": false; }; "passParamsOnSubmit": { "alias": "passParamsOnSubmit"; "required": false; }; }, {}, never, never, true, never>;
|
|
755
920
|
}
|
|
756
921
|
|
|
757
922
|
declare class FormatDataPipe implements PipeTransform {
|
|
@@ -939,4 +1104,4 @@ declare function getUrl(url: string, variables: NgxTFormsConfig): string;
|
|
|
939
1104
|
declare const validateObjectAgainstString: (expression: string, object: any) => boolean;
|
|
940
1105
|
declare function validateExpressionSyntax(expression: string): string | null;
|
|
941
1106
|
|
|
942
|
-
export { DialogTemplateComponent, FORM_ACTIONS_TOKEN, FORM_CONFIG_TOKEN, FORM_INPUTS_TOKEN, FORM_SLIDES_TOKEN, FormBuilderComponent, FormTowerControllerService, FormatDataPipe, FormsComponent, MSCOA_TREE_PROVIDER, MULTIPLE_FORM_INPUT_TOKEN, MscoaFormInputComponent, NGX_T_FORMS_CONFIG_TOKEN, NgxTFormsComponent, NgxTFormsService, PropertyAccessError, SignatureInputElementComponent, TDynamicDataEditComponent, TDynamicDataViewComponent, TFormInputComponent, UTILS_OBJECT_TOKEN, UserFormStepperComponent, ValidationExpressioCreatorComponent, assignDeepPropertyToObject, createFileFromBase64, formGenerator, getPipedValueFromDataType, getSampleValueForInput, getSectionElements, getSignatureImage, getUrl, getValueFromValueAccessor, initFormConfigToV2, provideNgxTForms, returnDeepProperty, returnMappedPathValue, safeReturnDeepProperty, testAgainstItem, textIconsForUserHints, validateExpressionSyntax, validateObjectAgainstString };
|
|
1107
|
+
export { DialogTemplateComponent, FORM_ACTIONS_TOKEN, FORM_CONFIG_TOKEN, FORM_INPUTS_TOKEN, FORM_SLIDES_TOKEN, FormBuilderComponent, FormTowerControllerService, FormatDataPipe, FormsComponent, MSCOA_TREE_PROVIDER, MULTIPLE_FORM_INPUT_TOKEN, MscoaFormInputComponent, NGX_T_FORMS_CONFIG_TOKEN, NgxTFormsComponent, NgxTFormsService, PropertyAccessError, SignatureInputElementComponent, TDynamicDataEditComponent, TDynamicDataViewComponent, TFormImportController, TFormInputComponent, UTILS_OBJECT_TOKEN, UserFormStepperComponent, ValidationExpressioCreatorComponent, assignDeepPropertyToObject, createFileFromBase64, formGenerator, getPipedValueFromDataType, getSampleValueForInput, getSectionElements, getSignatureImage, getUrl, getValueFromValueAccessor, initFormConfigToV2, provideNgxTForms, returnDeepProperty, returnMappedPathValue, safeReturnDeepProperty, testAgainstItem, textIconsForUserHints, validateExpressionSyntax, validateObjectAgainstString };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-config-mscoa-additional-inputs.component-cGgQrGlZ.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 console.log('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((error) => {\r\n console.error('Error while fetching SCOA tree:', error);\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":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-data-source-picker.component-cxjBReMg.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/data-source-picker/data-source-picker.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/data-source-picker/data-source-picker.component.html"],"sourcesContent":["import { Component, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, Self } from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\nimport { APIDataFetchingConfigurationInterface, DataSources, ElementEditorInnerSectionElementInterface, FormColumnInputs, IReportDataSources, MinimumInputRequiredInterface, MongoDbPipeLineConfigInterface } from 'ngx-t-forms-types';\r\nimport {MatButtonModule} from '@angular/material/button';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatChipListEditorComponent } from '../mat-chip-list-editor/mat-chip-list-editor.component';\r\nimport { RestApiCallSetupComponent } from '../rest-api-call-setup/rest-api-call-setup.component';\r\nimport { PipelineGeneratorComponent } from '../pipeline-generator/pipeline-generator.component';\r\nimport {MatCardModule} from '@angular/material/card';\r\nimport {MatDividerModule} from '@angular/material/divider';\r\nimport {MatListModule} from '@angular/material/list';\r\nimport {MatIconModule} from '@angular/material/icon';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { RequiredInputsComponent } from '../required-inputs/required-inputs.component';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\n@Component({\r\n selector: 'lib-data-source-picker',\r\n imports: [\r\n MatButtonModule,\r\n CommonModule,\r\n MatChipListEditorComponent,\r\n RestApiCallSetupComponent,\r\n PipelineGeneratorComponent,\r\n MatCardModule,\r\n MatDividerModule,\r\n MatListModule,\r\n MatIconModule,\r\n RequiredInputsComponent,\r\n MatTooltipModule\r\n \r\n ],\r\n templateUrl: './data-source-picker.component.html',\r\n styleUrl: './data-source-picker.component.css',\r\n providers: [{ provide: MatFormFieldControl, useExisting: DataSourcePickerComponent,}],\r\n})\r\nexport class DataSourcePickerComponent implements MatFormFieldControl< Array< IReportDataSources>| undefined> {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n @Input() errors:IConfigElementError[] |undefined = [];\r\n @HostBinding() id = `lib-data-source-picker-${DataSourcePickerComponent .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\nget 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('.lib-data-source-picker');\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 console.log('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 _value = new BehaviorSubject<Array< IReportDataSources>|undefined>(undefined)\r\n @Input() set value(value: Array<IReportDataSources>| undefined) {\r\n if (this._value.getValue() === value) {\r\n return\r\n }\r\n this._value.next(value)\r\n }\r\n get value() {\r\n return this._value.getValue()\r\n }\r\n get value$() {\r\n return this._value.asObservable()\r\n\r\n }\r\n _editorConfig:ElementEditorInnerSectionElementInterface | undefined = undefined\r\n @Input() formInputs: Array<FormColumnInputs> = []\r\n @Input() disabled: boolean = false\r\n @Output() valueChange = new EventEmitter<any>()\r\n @Input() set editorConfig(config: ElementEditorInnerSectionElementInterface | undefined) {\r\n this._editorConfig = (config)\r\n }\r\n get editorConfig() {\r\n return this._editorConfig\r\n }\r\n dataSourceInEdit:IReportDataSources | undefined | Record<string,any> = undefined\r\n get dataSourceOptions(){\r\n return [\r\n {\r\n label: 'API',\r\n value: DataSources.Api\r\n },\r\n {\r\n label: 'MongoDB',\r\n value: DataSources.MongoDb\r\n }\r\n ]\r\n }\r\n dataSources = DataSources\r\n dataSourceChanged(source:DataSources | undefined) {\r\n if(!this.dataSourceInEdit) {\r\n return\r\n }\r\n this.dataSourceInEdit['source'] = source\r\n \r\n }\r\n sourceValueChanged(value:APIDataFetchingConfigurationInterface | MongoDbPipeLineConfigInterface | undefined) {\r\n if(!this.dataSourceInEdit) {\r\n return\r\n }\r\n this.dataSourceInEdit['config'] = value\r\n\r\n }\r\n minimumInputRequiredValueChanged(value: Array<MinimumInputRequiredInterface> ) {\r\n if(!this.dataSourceInEdit) {\r\n return\r\n }\r\n this.dataSourceInEdit['config']['backEndConfig']['minimumInputRequired'] = value\r\n\r\n }\r\n saveNewSource(){\r\n if(!this.dataSourceInEdit) {\r\n return\r\n }\r\n const data:any = {\r\n ...this.dataSourceInEdit,\r\n id:uuidv4(),\r\n }\r\n this.value = [...(this.value || []), data]\r\n this.dataSourceInEdit = undefined\r\n this.valueChange.emit(this.value)\r\n \r\n }\r\n removeSubmissionApi(api:IReportDataSources) {\r\n if(!this.value) {\r\n return\r\n }\r\n this.value = this.value.filter((item) => item.id !== api.id)\r\n this.valueChange.emit(this.value)\r\n }\r\n getName(value:IReportDataSources | undefined, index:number) {\r\n if((value?.config as APIDataFetchingConfigurationInterface).name) {\r\n return (value?.config as APIDataFetchingConfigurationInterface).name\r\n\r\n }\r\n if(value?.source !== 'api') {\r\n return `MongoDB ${index + 1}`\r\n }\r\n return `API ${index + 1}`\r\n }\r\n getIcon(value:IReportDataSources | undefined) {\r\n if(value?.source === 'api') {\r\n return\"api\"\r\n }\r\n return 'storage'\r\n }\r\n getEndpoint(value:IReportDataSources | undefined) {\r\n if(value?.source === 'api') {\r\n return (value.config as APIDataFetchingConfigurationInterface).httpEndPoint\r\n }\r\n return (value?.config as MongoDbPipeLineConfigInterface).workflowId\r\n }\r\n\r\n}\r\n","<mat-nav-list >\r\n <h5 matSubheader class=\"api-list-header\">\r\n\r\n DataSources\r\n </h5>\r\n @if((value)?.length === 0){\r\n <p class=\"no-api-list\">\r\n No data sources configured. Add one to get started.\r\n </p>\r\n }\r\n @for (source of value||[]; track source.id) {\r\n\r\n <mat-list-item \r\n style=\"background: azure;\"\r\n matTooltipPosition=\"before\"\r\n [matTooltip]=\"source.source +' ' + getEndpoint(source)\"\r\n class=\"api-list-item\">\r\n\r\n <mat-icon \r\n \r\n matListItemIcon \r\n [style.color]=\"source.source === 'api' ? 'green' : 'blue'\">\r\n {{getIcon(source)}}\r\n </mat-icon>\r\n <div matListItemTitle>\r\n <div style=\"line-height: normal;\">\r\n <small style=\"white-space: nowrap;overflow: hidden;text-overflow: ellipsis;\">\r\n <strong>\r\n {{getName(source,$index)}}\r\n\r\n </strong>\r\n </small>\r\n\r\n </div>\r\n <div style=\"line-height: normal;opacity: 0.6;\">\r\n <small>\r\n\r\n {{getEndpoint(source)}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <button [disabled]=\"disabled\" matListItemMeta (click)=\"removeSubmissionApi(source)\" mat-icon-button>\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-list-item>\r\n <mat-divider>\r\n </mat-divider>\r\n\r\n\r\n\r\n }\r\n\r\n\r\n</mat-nav-list>\r\n\r\n@if(dataSourceInEdit !== undefined ) {\r\n<mat-card appearance=\"outlined\" class=\"data-source-card\">\r\n <mat-card-content>\r\n\r\n\r\n <label for=\"629879d6-763b-4f98-b67f-67bbe91045ea\">\r\n Select Source Type\r\n </label>\r\n <lib-mat-chip-list-editor [id]=\"'629879d6-763b-4f98-b67f-67bbe91045ea'\" (valueChange)=\"dataSourceChanged($event)\"\r\n [value]=\"dataSourceInEdit.source\" [options]=\"dataSourceOptions\"></lib-mat-chip-list-editor>\r\n @if(dataSourceInEdit.source !== undefined) {\r\n @switch (dataSourceInEdit.source) {\r\n @case(dataSources.Api){\r\n <label for=\"1a049f19-b4a0-42c9-8058-1759792ee4a5\">\r\n Select API\r\n </label>\r\n <lib-rest-api-call-setup [postmanCollectionConfig]=\"(editorConfig)?.postmanCollectionConfig\"\r\n [httpGetDataFunction]=\"(editorConfig)?.httpGetDataFunction\" [id]=\"'1a049f19-b4a0-42c9-8058-1759792ee4a5'\"\r\n [value]=\"(dataSourceInEdit?.config)\" (valueChanged)=\"sourceValueChanged($event)\">\r\n\r\n </lib-rest-api-call-setup>\r\n @if ((dataSourceInEdit.config?.backEndConfig?.minimumInputRequired)) {\r\n <app-required-inputs [formInputs]=\"formInputs ||[]\" [id]=\"'0ca91260-b610-4d0d-91c1-fdaca61cc5f2'\"\r\n [value]=\"(dataSourceInEdit.config.backEndConfig.minimumInputRequired)\" [errors]=\"[]\"\r\n (valueChanged)=\"minimumInputRequiredValueChanged($event)\">\r\n </app-required-inputs>\r\n }\r\n\r\n }\r\n @case(dataSources.MongoDb){\r\n <label for=\"d3c22913-505d-41f8-a267-72c086b8b10b\">\r\n Add a MongoDB pipeline\r\n </label>\r\n <app-pipeline-generator [id]=\"'d3c22913-505d-41f8-a267-72c086b8b10b'\" [value]=\"(dataSourceInEdit?.config)\"\r\n [getWorkflowOptions]=\"editorConfig?.getWorkflowOptions\"\r\n (valueChanged)=\"sourceValueChanged($event)\"></app-pipeline-generator>\r\n\r\n\r\n }\r\n\r\n }\r\n }\r\n </mat-card-content>\r\n <br>\r\n <mat-divider></mat-divider>\r\n <mat-card-actions>\r\n <button mat-flat-button color=\"primary\" (click)=\"saveNewSource()\">Save Source</button>\r\n <span class=\"spacer\"></span>\r\n <button mat-button (click)=\"dataSourceInEdit = undefined\" color=\"warn\">Cancel</button>\r\n </mat-card-actions>\r\n</mat-card>\r\n\r\n}\r\n\r\n\r\n\r\n@if (dataSourceInEdit === undefined) {\r\n<button [disabled]=\"disabled\" (click)=\"dataSourceInEdit={}\" class=\"AddButton\" mat-stroked-button color=\"primary\">\r\n Add Data Source\r\n</button>\r\n}"],"names":["uuidv4","i5","i6","i7"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-document-list-label-config-editor.component-Dr-w1JzX.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/document-list-label-config-editor/document-list-label-config-editor.component.html"],"sourcesContent":["import { Component, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, Self } from '@angular/core';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\nimport { Subject } from 'rxjs';\r\nimport { DocumentLitsLabelConfigInterface, DocumentLitsLabelConfigInterfaceValueType, ElementEditorInnerSectionElementInterface, ElementTypes, FormColumnInputs, InputDataTypes, InputPipeTypes, InputTypes, ReportTypes } from 'ngx-t-forms-types';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { NgControl } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatCardModule } from '@angular/material/card';\r\n\r\nimport { MatSliderToggleEditorComponent } from '../mat-slider-toggle-editor/mat-slider-toggle-editor.component';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatChipListEditorComponent } from '../mat-chip-list-editor/mat-chip-list-editor.component';\r\nimport { MatAutocompleteModule, MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport {\r\n CdkDragDrop,\r\n CdkDrag,\r\n CdkDropList,\r\n} from '@angular/cdk/drag-drop';\r\nimport { _isEqual } from '../../../../shared/functions/isEqual';\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\n@Component({\r\n selector: 'lib-document-list-label-config-editor',\r\n imports: [CommonModule, MatListModule, MatTooltipModule, ClipboardModule, MatSliderToggleEditorComponent,\r\n MatChipListEditorComponent,\r\n MatFormFieldModule,\r\n MatButtonModule,\r\n MatAutocompleteModule,\r\n MatInputModule,\r\n MatIconModule, MatCardModule, CdkDropList, CdkDrag],\r\n templateUrl: './document-list-label-config-editor.component.html',\r\n styleUrl: './document-list-label-config-editor.component.css',\r\n providers: [{ provide: MatFormFieldControl, useExisting: DocumentListLabelConfigEditorComponent }],\r\n})\r\nexport class DocumentListLabelConfigEditorComponent implements MatFormFieldControl<Array<DocumentLitsLabelConfigInterface>> {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n @Input() errors: IConfigElementError[] | undefined = [];\r\n @HostBinding() id = `lib-document-list-label-config-editor-${DocumentListLabelConfigEditorComponent.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 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('.lib-document-list-label-config-editor');\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 console.log('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 _value: Array<DocumentLitsLabelConfigInterface> = []\r\n @Input() set value(value: Array<DocumentLitsLabelConfigInterface>) {\r\n\r\n this._value = value as Array<DocumentLitsLabelConfigInterface>\r\n }\r\n get value() {\r\n return this._value\r\n }\r\n\r\n _editorConfig: ElementEditorInnerSectionElementInterface | undefined = undefined\r\n @Input() formInputs: Array<FormColumnInputs> = []\r\n @Input() disabled: boolean = false\r\n @Input() mapToData: string[] | undefined = []\r\n @Output() valueChange = new EventEmitter<any>()\r\n @Input() set editorConfig(config: ElementEditorInnerSectionElementInterface | undefined) {\r\n this._editorConfig = (config)\r\n }\r\n get editorConfig() {\r\n return this._editorConfig\r\n }\r\n get filteredControlNames() {\r\n // Handle case where mapToData is undefined\r\n if (!this.mapToData) return [];\r\n\r\n const searchTerm = this.labelInEdit?.formControlName;\r\n\r\n // If searchTerm is undefined or empty, return all options\r\n if (!searchTerm || searchTerm.trim() === '') {\r\n return this.mapToData;\r\n }\r\n\r\n const lowerSearchTerm = searchTerm.toLowerCase();\r\n\r\n return this.mapToData.filter(option => {\r\n // Skip null/undefined options\r\n if (option == null) return false;\r\n\r\n // Convert option to string for comparison\r\n const optionStr = String(option).toLowerCase();\r\n\r\n // Flexible matching using includes (less rigid than exact RegExp)\r\n if (optionStr.includes(lowerSearchTerm)) return true;\r\n\r\n // Also match if any word in the option starts with the search term\r\n // This helps with partial word matching\r\n return optionStr.split(/\\s+/).some(word =>\r\n word.startsWith(lowerSearchTerm)\r\n );\r\n });\r\n }\r\n saveHeader() {\r\n\r\n const formControlName = this.labelInEdit?.formControlName\r\n const index = (this.value || []).findIndex((item) => item.formControlName === formControlName)\r\n const v = [...this.value]\r\n if (index !== -1) {\r\n v[index] = this.labelInEdit as DocumentLitsLabelConfigInterface\r\n\r\n\r\n\r\n } else {\r\n\r\n v.push(this.labelInEdit as DocumentLitsLabelConfigInterface)\r\n\r\n\r\n }\r\n\r\n this.value = v\r\n this.valueChange.emit(v)\r\n this.labelInEdit = null\r\n\r\n\r\n }\r\n removeLabel(label: DocumentLitsLabelConfigInterface) {\r\n this.value = this.value.filter(\r\n (item) => item.formControlName !== label.formControlName\r\n )\r\n this.valueChange.emit(this.value)\r\n }\r\n labelInEdit: DocumentLitsLabelConfigInterface | null | Record<string, any> = null\r\n get labelSaveDisabled() {\r\n if (!this.labelInEdit) return true\r\n if (!this.labelInEdit.label) return true\r\n if (!this.labelInEdit.formControlName) return true\r\n if (!this.labelInEdit.valueType) return true\r\n\r\n return false\r\n }\r\n get valueTypes() {\r\n return Object.keys(DocumentLitsLabelConfigInterfaceValueType).map((key) => {\r\n return {\r\n label: key.replace(/([A-Z])/g, ' $1').trim().toLowerCase().replace(/^\\w/, c => c.toUpperCase()),\r\n value: key\r\n }\r\n })\r\n }\r\n get reportTypes (){\r\n const valueType = this.labelInEdit?.valueType \r\n if(!valueType){\r\n return \r\n }\r\n const types = Object.values(ReportTypes).filter(reportType=> {\r\n if(valueType === DocumentLitsLabelConfigInterfaceValueType.currency || valueType === DocumentLitsLabelConfigInterfaceValueType.number){\r\n return reportType === ReportTypes.Avg || reportType === ReportTypes.Highest || reportType === ReportTypes.Lowest || reportType === ReportTypes.Sum\r\n } \r\n\r\n if(valueType === DocumentLitsLabelConfigInterfaceValueType.string){\r\n return reportType === ReportTypes.Category\r\n }\r\n return false\r\n } ).map((key) => {\r\n return {\r\n label: key.replace(/([A-Z])/g, ' $1').trim().toLowerCase().replace(/^\\w/, c => c.toUpperCase()),\r\n value: key\r\n }\r\n })\r\n return types\r\n\r\n }\r\n nameChange(event: any) {\r\n const value = event.target?.value;\r\n\r\n this.labelInEdit = {\r\n ...this.labelInEdit,\r\n label: value\r\n }\r\n\r\n\r\n }\r\n formControlNameChange(event: any) {\r\n const value = event.target?.value;\r\n const input = this.formInputs.find(input=>input.formControlName === value)\r\n \r\n \r\n this.labelInEdit = {\r\n ...this.labelInEdit,\r\n formControlName: value,\r\n valueType : this.getValueTypeFromInput(input)\r\n }\r\n }\r\n getValueTypeFromInput(input:FormColumnInputs | undefined){\r\n if(!input){\r\n return\r\n }\r\n const dataType = input.dataType\r\n const type = input.type \r\n if(dataType === InputDataTypes.Number || type === InputTypes.Number || input.pipe?.pipeType === InputPipeTypes .Number ){\r\n return DocumentLitsLabelConfigInterfaceValueType.number\r\n }\r\n if(input.pipe?.pipeType === InputPipeTypes .Currency ){\r\n return DocumentLitsLabelConfigInterfaceValueType.currency\r\n }\r\n if(dataType === InputDataTypes.Boolean || input.element ===ElementTypes.Toggle ){\r\n DocumentLitsLabelConfigInterfaceValueType.boolean\r\n }\r\n return DocumentLitsLabelConfigInterfaceValueType.string\r\n }\r\n valueTypeChanged(event: any) {\r\n const value = event\r\n \r\n\r\n this.labelInEdit = {\r\n ...this.labelInEdit,\r\n valueType: value\r\n }\r\n\r\n }\r\n reportTypeChanged(event:any){\r\n this.labelInEdit = {\r\n ...this.labelInEdit,\r\n reportType:event\r\n }\r\n console.error(\"tttttttttttttttt\",this.labelInEdit)\r\n }\r\n\r\n isHiddenChanged(event: boolean) {\r\n\r\n\r\n this.labelInEdit = {\r\n ...this.labelInEdit,\r\n isHidden: event\r\n }\r\n\r\n }\r\n isCategoryChanged(event: boolean) {\r\n this.labelInEdit = {\r\n ...this.labelInEdit,\r\n isCategory: event\r\n }\r\n }\r\n formControlSelected(event: MatAutocompleteSelectedEvent) {\r\n\r\n const formControlName = event.option.value\r\n \r\n this.labelInEdit = {\r\n ...this.labelInEdit,\r\n formControlName,\r\n label: this.labelInEdit?.label || formControlName.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z])([A-Z][a-z])/g, '$1 $2')\r\n }\r\n\r\n\r\n }\r\n reorderArray(arr: DocumentLitsLabelConfigInterface[], fromIndex: number, toIndex: number): DocumentLitsLabelConfigInterface[] {\r\n const element = arr[fromIndex];\r\n if (!element) return arr\r\n const newArr = [...arr];\r\n newArr.splice(fromIndex, 1);\r\n newArr.splice(toIndex, 0, element);\r\n return newArr;\r\n }\r\n\r\n drop(event: CdkDragDrop<DocumentLitsLabelConfigInterface[]>) {\r\n this.value = [... this.reorderArray(this.value, event.previousIndex, event.currentIndex)]\r\n this.valueChange.emit(this.value)\r\n }\r\n copyToClipboard(value: string) {\r\n\r\n }\r\n}\r\n","<mat-nav-list cdkDropList [cdkDropListData]=\"value\" (cdkDropListDropped)=\"drop($event)\" class=\"list\">\r\n <h5 matSubheader class=\"api-list-header\">\r\n\r\n List header config\r\n </h5>\r\n @if((value).length === 0){\r\n <p class=\"no-api-list\" style=\" margin-top: 0px;\r\n padding-left: 16px;\r\n padding-right: 16px;\">\r\n No header configured. <strong>Add new column </strong> below\r\n </p>\r\n }\r\n @for (label of value||[]; track label.formControlName) {\r\n\r\n <mat-list-item cdkDrag style=\"background: azure;\" [matTooltip]=\"'click to copy ' + label.formControlName\"\r\n [cdkCopyToClipboard]=\"label.formControlName\" matTooltipPosition=\"before\" class=\"api-list-item\">\r\n\r\n <mat-icon matListItemIcon>\r\n view_column\r\n </mat-icon>\r\n <div matListItemTitle>\r\n <div style=\"line-height: normal;\">\r\n <small style=\"white-space: nowrap;overflow: hidden;text-overflow: ellipsis;\">\r\n <strong>\r\n {{label.label}}\r\n\r\n </strong>\r\n </small>\r\n\r\n </div>\r\n <div style=\"line-height: normal;opacity: 0.6;\">\r\n <small>\r\n <strong><code>{{label.formControlName}}</code></strong>: {{label.valueType}}\r\n </small>\r\n </div>\r\n </div>\r\n\r\n <button [disabled]=\"disabled\" matListItemMeta (click)=\"removeLabel(label)\" mat-icon-button>\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n\r\n </mat-list-item>\r\n <mat-divider>\r\n </mat-divider>\r\n\r\n\r\n\r\n }\r\n\r\n\r\n</mat-nav-list>\r\n<br>\r\n@if(labelInEdit !== null){\r\n<mat-card appearance=\"outlined\" class=\"data-source-card\">\r\n <mat-card-content>\r\n\r\n <label for=\"fb27a2ec-e41f-45f0-916b-f2ef303c2344\">\r\n Form Control Name\r\n </label>\r\n <input ngDefaultControl type=\"text\" [id]=\"'fb27a2ec-e41f-45f0-916b-f2ef303c2344'\" placeholder=\"Pick one\"\r\n aria-label=\"form control\" [value]=\"labelInEdit.formControlName||''\" (input)=\"formControlNameChange($event)\"\r\n [matAutocomplete]=\"auto\">\r\n <mat-autocomplete (optionSelected)=\"formControlSelected($event)\" autoActiveFirstOption #auto=\"matAutocomplete\">\r\n @for (option of filteredControlNames ; track option) {\r\n <mat-option [value]=\"option\">{{option}}</mat-option>\r\n }\r\n </mat-autocomplete>\r\n\r\n\r\n <label for=\"629879d6-763b-4f98-b67f-67bbe91045ea\">\r\n Name\r\n </label>\r\n <input (input)=\"nameChange($event)\" [value]=\"labelInEdit.label||''\" [id]=\"'4002a77c-9b01-4cdb-b4ce-fdad5a3597d7'\"\r\n [placeholder]=\"'Enter label name'\">\r\n <label for=\"bbdad0dc-f92e-4359-92af-a3ff90d0924b\">\r\n value Type\r\n </label>\r\n <lib-mat-chip-list-editor [errors]=\"[]\" [id]=\"'bbdad0dc-f92e-4359-92af-a3ff90d0924b'\"\r\n [value]=\"labelInEdit.valueType\" [options]=\"valueTypes\" (valueChange)=\"valueTypeChanged($event)\">\r\n </lib-mat-chip-list-editor>\r\n\r\n\r\n \r\n @if(reportTypes && reportTypes.length > 0){\r\n <label for=\"bbdad0dc-f92e-4359-92af-a3ff90d0924b\">\r\n Add Report types\r\n </label>\r\n <lib-mat-chip-list-editor [errors]=\"[]\" [id]=\"'163e944b-16a7-44c5-b6c2-0bfd6a6d582c'\" [multiple]=\"true\"\r\n [value]=\"labelInEdit.valueType\" [options]=\"reportTypes\" (valueChange)=\"reportTypeChanged($event)\">\r\n </lib-mat-chip-list-editor>\r\n }\r\n <br>\r\n <lib-mat-slider-toggle-editor [label]=\"'is Hidden '\" [id]=\"'7c0b575c-c41c-4525-ac7e-dc4b9c351009'\"\r\n (valueChange)=\"isHiddenChanged(!!$event)\" [value]=\"labelInEdit.isHidden\" [errors]=\"[]\">\r\n </lib-mat-slider-toggle-editor>\r\n\r\n </mat-card-content>\r\n <br>\r\n <mat-divider></mat-divider>\r\n <mat-card-actions>\r\n <button mat-flat-button color=\"primary\" [disabled]=\"labelSaveDisabled\" (click)=\"saveHeader()\">Save Header</button>\r\n <span class=\"spacer\"></span>\r\n <button mat-button (click)=\"labelInEdit = null\" color=\"warn\">Cancel</button>\r\n </mat-card-actions>\r\n</mat-card>\r\n}\r\n\r\n@if (labelInEdit === null) {\r\n<button [disabled]=\"disabled\" (click)=\"labelInEdit={}\" style=\"width: 100%;\" class=\"AddButton\" mat-stroked-button\r\n color=\"primary\">\r\n Add new column\r\n</button>\r\n}"],"names":["i2","i3","i4","i6","i7","i8","i9"],"mappings":"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"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Output, Input, HostBinding, Optional, Self, Component } from '@angular/core';
|
|
3
|
-
import { Subject, BehaviorSubject, take, tap } from 'rxjs';
|
|
4
|
-
import * as i2 from '@angular/common';
|
|
5
|
-
import { CommonModule } from '@angular/common';
|
|
6
|
-
import { f as getInputIllustration, M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-mfuTrkmM.mjs';
|
|
7
|
-
import { map } from 'rxjs/operators';
|
|
8
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
9
|
-
import * as i1 from '@angular/forms';
|
|
10
|
-
import * as i4 from '@angular/material/divider';
|
|
11
|
-
import * as i4$1 from '@angular/material/grid-list';
|
|
12
|
-
import * as i2$1 from '@angular/material/icon';
|
|
13
|
-
import * as i7 from '@angular/material/list';
|
|
14
|
-
import * as i6 from '@angular/material/core';
|
|
15
|
-
import * as i8 from '@angular/material/tooltip';
|
|
16
|
-
|
|
17
|
-
class FormInputSelectorComponent {
|
|
18
|
-
static { this.nextId = 0; }
|
|
19
|
-
constructor(ngControl, _elementRef) {
|
|
20
|
-
this.ngControl = ngControl;
|
|
21
|
-
this._elementRef = _elementRef;
|
|
22
|
-
this.stateChanges = new Subject();
|
|
23
|
-
this.errors = [];
|
|
24
|
-
this.id = `lib-form-input-selector-${FormInputSelectorComponent.nextId++}`;
|
|
25
|
-
this.placeholder = '';
|
|
26
|
-
this.focused = false;
|
|
27
|
-
this.required = false;
|
|
28
|
-
this.touched = false;
|
|
29
|
-
this.onTouched = () => { };
|
|
30
|
-
this._value = new BehaviorSubject(undefined);
|
|
31
|
-
this.formInputs = [];
|
|
32
|
-
this.disabled = false;
|
|
33
|
-
this.change = new EventEmitter();
|
|
34
|
-
}
|
|
35
|
-
get empty() {
|
|
36
|
-
return !this.value;
|
|
37
|
-
}
|
|
38
|
-
get shouldLabelFloat() {
|
|
39
|
-
return this.focused || !this.empty;
|
|
40
|
-
}
|
|
41
|
-
get errorState() {
|
|
42
|
-
const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched;
|
|
43
|
-
return !this.value && !!this.required || hasError;
|
|
44
|
-
}
|
|
45
|
-
setDescribedByIds(ids) {
|
|
46
|
-
// Ensure the component view is initialized
|
|
47
|
-
if (this._elementRef && this._elementRef.nativeElement) {
|
|
48
|
-
const controlElement = this._elementRef.nativeElement.querySelector('.lib-form-input-selector');
|
|
49
|
-
// Check if the controlElement exists before attempting to set its attribute
|
|
50
|
-
if (controlElement) {
|
|
51
|
-
controlElement.setAttribute('aria-describedby', ids.join(' '));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
onContainerClick(event) {
|
|
56
|
-
this.markAsTouched();
|
|
57
|
-
this.stateChanges.next();
|
|
58
|
-
}
|
|
59
|
-
markAsTouched() {
|
|
60
|
-
console.log('markAsTouched');
|
|
61
|
-
if (!this.touched) {
|
|
62
|
-
this.onTouched();
|
|
63
|
-
this.touched = true;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
set value(value) {
|
|
67
|
-
if (this._value.getValue() === value) {
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
this._value.next(value);
|
|
71
|
-
}
|
|
72
|
-
get value() {
|
|
73
|
-
return this._value.getValue();
|
|
74
|
-
}
|
|
75
|
-
get value$() {
|
|
76
|
-
return this._value.asObservable();
|
|
77
|
-
}
|
|
78
|
-
selectInput(id) {
|
|
79
|
-
this.value$.pipe(take(1), tap((value) => {
|
|
80
|
-
if (value === id) {
|
|
81
|
-
this.change.emit(undefined);
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
this.change.emit(id);
|
|
85
|
-
})).subscribe();
|
|
86
|
-
}
|
|
87
|
-
get filteredInputs$() {
|
|
88
|
-
return this.value$.pipe(map((value) => {
|
|
89
|
-
const inputs = () => {
|
|
90
|
-
const selectedInput = this.formInputs.find((input) => input.id === value);
|
|
91
|
-
if (selectedInput) {
|
|
92
|
-
return [{ ...selectedInput, selected: true, illustration: this.getInputIllustration(selectedInput) }];
|
|
93
|
-
}
|
|
94
|
-
return this.formInputs.map(input => ({ ...input, selected: false, illustration: this.getInputIllustration(input) }));
|
|
95
|
-
};
|
|
96
|
-
return inputs().map((input) => {
|
|
97
|
-
return {
|
|
98
|
-
...input,
|
|
99
|
-
illustration: this.getInputIllustration(input)
|
|
100
|
-
};
|
|
101
|
-
});
|
|
102
|
-
}));
|
|
103
|
-
}
|
|
104
|
-
getInputIllustration(input) {
|
|
105
|
-
return getInputIllustration(input.element);
|
|
106
|
-
}
|
|
107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: FormInputSelectorComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
108
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.5", type: FormInputSelectorComponent, isStandalone: true, selector: "lib-form-input-selector", inputs: { errors: "errors", value: "value", formInputs: "formInputs", disabled: "disabled" }, outputs: { change: "change" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: FormInputSelectorComponent }], ngImport: i0, template: "\r\n\r\n <mat-nav-list class=\"inputList\"> \r\n @for(input of filteredInputs$|async;track input.id){\r\n <mat-list-item \r\n [disabled]=\"disabled\"\r\n (click)=\"selectInput(input.id)\" \r\n [activated]=\"input.selected\"\r\n matRipple matTooltip=\"Select form input\">\r\n <img matListItemAvatar \r\n style=\"margin-left: 8px;\" [src]=\"input.illustration \"\r\n [alt]=\"input.label\">\r\n \r\n <span matListItemTitle >\r\n {{ input.label}}\r\n </span>\r\n <span *ngIf=\"input.multipleInputInEditId\" matListItemLine>\r\n Item List Input\r\n </span>\r\n <span matListItemMeta>\r\n <mat-icon [color]=\"input.selected?'primary':''\">\r\n \r\n {{input.selected?'check_circle':'radio_button_unchecked'}}\r\n \r\n </mat-icon>\r\n </span>\r\n \r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n @if((filteredInputs$|async)?.length===0){\r\n <mat-list-item>\r\n <span matLine>\r\n No form inputs found\r\n </span>\r\n </mat-list-item>\r\n }\r\n </mat-nav-list>\r\n\r\n", styles: ["mat-nav-list{max-height:600px;overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i4.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i4$1.MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i7.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: i7.MatListItemAvatar, selector: "[matListItemAvatar]" }, { kind: "directive", type: i7.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i7.MatListItemTitle, selector: "[matListItemTitle]" }, { kind: "directive", type: i7.MatListItemMeta, selector: "[matListItemMeta]" }, { kind: "directive", type: i6.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
109
|
-
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.5", ngImport: i0, type: FormInputSelectorComponent, decorators: [{
|
|
111
|
-
type: Component,
|
|
112
|
-
args: [{ selector: 'lib-form-input-selector', standalone: true, imports: [CommonModule, MatModulesModule], providers: [{ provide: MatFormFieldControl, useExisting: FormInputSelectorComponent }], template: "\r\n\r\n <mat-nav-list class=\"inputList\"> \r\n @for(input of filteredInputs$|async;track input.id){\r\n <mat-list-item \r\n [disabled]=\"disabled\"\r\n (click)=\"selectInput(input.id)\" \r\n [activated]=\"input.selected\"\r\n matRipple matTooltip=\"Select form input\">\r\n <img matListItemAvatar \r\n style=\"margin-left: 8px;\" [src]=\"input.illustration \"\r\n [alt]=\"input.label\">\r\n \r\n <span matListItemTitle >\r\n {{ input.label}}\r\n </span>\r\n <span *ngIf=\"input.multipleInputInEditId\" matListItemLine>\r\n Item List Input\r\n </span>\r\n <span matListItemMeta>\r\n <mat-icon [color]=\"input.selected?'primary':''\">\r\n \r\n {{input.selected?'check_circle':'radio_button_unchecked'}}\r\n \r\n </mat-icon>\r\n </span>\r\n \r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n @if((filteredInputs$|async)?.length===0){\r\n <mat-list-item>\r\n <span matLine>\r\n No form inputs found\r\n </span>\r\n </mat-list-item>\r\n }\r\n </mat-nav-list>\r\n\r\n", styles: ["mat-nav-list{max-height:600px;overflow:auto}\n"] }]
|
|
113
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
114
|
-
type: Optional
|
|
115
|
-
}, {
|
|
116
|
-
type: Self
|
|
117
|
-
}] }, { type: i0.ElementRef }], propDecorators: { errors: [{
|
|
118
|
-
type: Input
|
|
119
|
-
}], id: [{
|
|
120
|
-
type: HostBinding
|
|
121
|
-
}], value: [{
|
|
122
|
-
type: Input
|
|
123
|
-
}], formInputs: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}], disabled: [{
|
|
126
|
-
type: Input
|
|
127
|
-
}], change: [{
|
|
128
|
-
type: Output
|
|
129
|
-
}] } });
|
|
130
|
-
|
|
131
|
-
export { FormInputSelectorComponent };
|
|
132
|
-
//# sourceMappingURL=ngx-t-forms-form-input-selector.component-9kIiAxlg.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-t-forms-form-input-selector.component-9kIiAxlg.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/form-input-selector/form-input-selector.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/form-input-selector/form-input-selector.component.html"],"sourcesContent":["import { Component, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, Self } from '@angular/core';\r\nimport { FormColumnInputs } from 'ngx-t-forms-types';\r\nimport { BehaviorSubject, Observable, Subject, take, tap } from 'rxjs';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { map } from 'rxjs/operators';\r\nimport { getInputIllustration } from '../../../../shared/functions/getInputIllustration';\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\ninterface IFormColumnUiList extends FormColumnInputs {\r\n selected: boolean,\r\n illustration: string\r\n}\r\n@Component({\r\n selector: 'lib-form-input-selector',\r\n standalone: true,\r\n imports: [CommonModule, MatModulesModule],\r\n templateUrl: './form-input-selector.component.html',\r\n styleUrl: './form-input-selector.component.css',\r\n providers: [{ provide: MatFormFieldControl, useExisting: FormInputSelectorComponent }],\r\n})\r\nexport class FormInputSelectorComponent implements MatFormFieldControl<string | undefined> {\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n @Input() errors:IConfigElementError[] |undefined = [];\r\n @HostBinding() id = `lib-form-input-selector-${FormInputSelectorComponent .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\nget 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('.lib-form-input-selector');\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 console.log('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 _value = new BehaviorSubject<string | undefined>(undefined)\r\n @Input() set value(value: string | undefined) {\r\n if (this._value.getValue() === value) {\r\n return\r\n }\r\n this._value.next(value)\r\n }\r\n get value() {\r\n return this._value.getValue()\r\n }\r\n get value$() {\r\n return this._value.asObservable()\r\n\r\n }\r\n @Input() formInputs: Array<FormColumnInputs> = []\r\n @Input() disabled: boolean = false\r\n @Output() change = new EventEmitter<any>()\r\n selectInput(id: string) {\r\n this.value$.pipe(\r\n take(1),\r\n tap((value) => {\r\n if (value === id) {\r\n this.change.emit(undefined)\r\n return;\r\n }\r\n this.change.emit(id)\r\n })\r\n ).subscribe()\r\n\r\n }\r\n get filteredInputs$():Observable<Array<IFormColumnUiList>> {\r\n return this.value$.pipe(\r\n map((value: string | undefined) => {\r\n const inputs = () => {\r\n const selectedInput = this.formInputs.find((input) => input.id === value)\r\n if (selectedInput) {\r\n return [{ ...selectedInput, selected: true , illustration: this.getInputIllustration(selectedInput) }]\r\n }\r\n return this.formInputs.map(input => ({ ...input, selected: false, illustration: this.getInputIllustration(input) }))\r\n }\r\n return inputs().map(\r\n (input) => {\r\n return {\r\n ...input,\r\n illustration: this.getInputIllustration(input)\r\n }\r\n\r\n })}\r\n\r\n )\r\n )\r\n }\r\n getInputIllustration(input: FormColumnInputs) {\r\n return getInputIllustration(input.element)\r\n }\r\n}\r\n","\r\n\r\n <mat-nav-list class=\"inputList\"> \r\n @for(input of filteredInputs$|async;track input.id){\r\n <mat-list-item \r\n [disabled]=\"disabled\"\r\n (click)=\"selectInput(input.id)\" \r\n [activated]=\"input.selected\"\r\n matRipple matTooltip=\"Select form input\">\r\n <img matListItemAvatar \r\n style=\"margin-left: 8px;\" [src]=\"input.illustration \"\r\n [alt]=\"input.label\">\r\n \r\n <span matListItemTitle >\r\n {{ input.label}}\r\n </span>\r\n <span *ngIf=\"input.multipleInputInEditId\" matListItemLine>\r\n Item List Input\r\n </span>\r\n <span matListItemMeta>\r\n <mat-icon [color]=\"input.selected?'primary':''\">\r\n \r\n {{input.selected?'check_circle':'radio_button_unchecked'}}\r\n \r\n </mat-icon>\r\n </span>\r\n \r\n </mat-list-item>\r\n <mat-divider></mat-divider>\r\n }\r\n @if((filteredInputs$|async)?.length===0){\r\n <mat-list-item>\r\n <span matLine>\r\n No form inputs found\r\n </span>\r\n </mat-list-item>\r\n }\r\n </mat-nav-list>\r\n\r\n"],"names":["i3","i4","i5","i6","i7"],"mappings":"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"}
|