ngx-t-forms 2.0.6 → 2.0.7

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.
Files changed (46) hide show
  1. package/fesm2022/{ngx-t-forms-api-value-access-rules.component--ueeSVqR.mjs → ngx-t-forms-api-value-access-rules.component-Cp0BeYD7.mjs} +2 -2
  2. package/fesm2022/{ngx-t-forms-api-value-access-rules.component--ueeSVqR.mjs.map → ngx-t-forms-api-value-access-rules.component-Cp0BeYD7.mjs.map} +1 -1
  3. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-BN_-yZi7.mjs → ngx-t-forms-calculated-field-rules.component-C1v-xiGd.mjs} +3 -3
  4. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-BN_-yZi7.mjs.map → ngx-t-forms-calculated-field-rules.component-C1v-xiGd.mjs.map} +1 -1
  5. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-D_IRYDOM.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-jgXTh0do.mjs} +2 -2
  6. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-D_IRYDOM.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-jgXTh0do.mjs.map} +1 -1
  7. package/fesm2022/{ngx-t-forms-form-input-selector.component-67wrHiYd.mjs → ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs} +2 -2
  8. package/fesm2022/{ngx-t-forms-form-input-selector.component-67wrHiYd.mjs.map → ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs.map} +1 -1
  9. package/fesm2022/{ngx-t-forms-form-json-view.component-3SIqgTUg.mjs → ngx-t-forms-form-json-view.component-DSnLKnfH.mjs} +2 -2
  10. package/fesm2022/{ngx-t-forms-form-json-view.component-3SIqgTUg.mjs.map → ngx-t-forms-form-json-view.component-DSnLKnfH.mjs.map} +1 -1
  11. package/fesm2022/{ngx-t-forms-form-section-stepper.component-CmIrhO2e.mjs → ngx-t-forms-form-section-stepper.component-hnOcnZGc.mjs} +4 -4
  12. package/fesm2022/{ngx-t-forms-form-section-stepper.component-CmIrhO2e.mjs.map → ngx-t-forms-form-section-stepper.component-hnOcnZGc.mjs.map} +1 -1
  13. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-aRCX4Hz7.mjs → ngx-t-forms-forms-builder-menu.component-DQ8JYw6g.mjs} +4 -4
  14. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-aRCX4Hz7.mjs.map → ngx-t-forms-forms-builder-menu.component-DQ8JYw6g.mjs.map} +1 -1
  15. package/fesm2022/{ngx-t-forms-input-editor.component-mXuY17jv.mjs → ngx-t-forms-input-editor.component-Gi9MgyHB.mjs} +2 -2
  16. package/fesm2022/{ngx-t-forms-input-editor.component-mXuY17jv.mjs.map → ngx-t-forms-input-editor.component-Gi9MgyHB.mjs.map} +1 -1
  17. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-Cm59yS0V.mjs → ngx-t-forms-mat-chip-list-editor.component-C2jw_2gf.mjs} +2 -2
  18. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-Cm59yS0V.mjs.map → ngx-t-forms-mat-chip-list-editor.component-C2jw_2gf.mjs.map} +1 -1
  19. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-Cf-bgYEw.mjs → ngx-t-forms-mat-slider-editor.component-D_IMC63r.mjs} +2 -2
  20. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-Cf-bgYEw.mjs.map → ngx-t-forms-mat-slider-editor.component-D_IMC63r.mjs.map} +1 -1
  21. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-BghPaJ4n.mjs → ngx-t-forms-mat-slider-toggle-editor.component-DeKGDDuU.mjs} +2 -2
  22. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-BghPaJ4n.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-DeKGDDuU.mjs.map} +1 -1
  23. package/fesm2022/{ngx-t-forms-missing-form-configs.component-CB9fHHqd.mjs → ngx-t-forms-missing-form-configs.component-BvsopeCg.mjs} +2 -2
  24. package/fesm2022/{ngx-t-forms-missing-form-configs.component-CB9fHHqd.mjs.map → ngx-t-forms-missing-form-configs.component-BvsopeCg.mjs.map} +1 -1
  25. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-BDVj1NFN.mjs → ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs} +2 -2
  26. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-BDVj1NFN.mjs.map → ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs.map} +1 -1
  27. package/fesm2022/{ngx-t-forms-ngx-t-forms-8hOAg-8v.mjs → ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs} +189 -12
  28. package/fesm2022/ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs.map +1 -0
  29. package/fesm2022/{ngx-t-forms-pipeline-generator.component-IEocJSHF.mjs → ngx-t-forms-pipeline-generator.component-IwmDgCk9.mjs} +2 -2
  30. package/fesm2022/{ngx-t-forms-pipeline-generator.component-IEocJSHF.mjs.map → ngx-t-forms-pipeline-generator.component-IwmDgCk9.mjs.map} +1 -1
  31. package/fesm2022/{ngx-t-forms-required-inputs.component-B6tNZ162.mjs → ngx-t-forms-required-inputs.component-DdNLYKY6.mjs} +2 -2
  32. package/fesm2022/{ngx-t-forms-required-inputs.component-B6tNZ162.mjs.map → ngx-t-forms-required-inputs.component-DdNLYKY6.mjs.map} +1 -1
  33. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-YNPCGXf7.mjs → ngx-t-forms-rest-api-call-setup.component-DH5GpWKn.mjs} +2 -2
  34. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-YNPCGXf7.mjs.map → ngx-t-forms-rest-api-call-setup.component-DH5GpWKn.mjs.map} +1 -1
  35. package/fesm2022/{ngx-t-forms-section-report.component-Ch5q5jLF.mjs → ngx-t-forms-section-report.component-BAddUET-.mjs} +2 -2
  36. package/fesm2022/{ngx-t-forms-section-report.component-Ch5q5jLF.mjs.map → ngx-t-forms-section-report.component-BAddUET-.mjs.map} +1 -1
  37. package/fesm2022/{ngx-t-forms-selection-options-editor.component-Cg8VpW0u.mjs → ngx-t-forms-selection-options-editor.component-CQh-InJ6.mjs} +2 -2
  38. package/fesm2022/{ngx-t-forms-selection-options-editor.component-Cg8VpW0u.mjs.map → ngx-t-forms-selection-options-editor.component-CQh-InJ6.mjs.map} +1 -1
  39. package/fesm2022/{ngx-t-forms-validators-config.component-CtKO5o6m.mjs → ngx-t-forms-validators-config.component-SyL_Vln8.mjs} +3 -3
  40. package/fesm2022/{ngx-t-forms-validators-config.component-CtKO5o6m.mjs.map → ngx-t-forms-validators-config.component-SyL_Vln8.mjs.map} +1 -1
  41. package/fesm2022/ngx-t-forms.mjs +1 -1
  42. package/lib/components/t-form-input/elements/mscoa-form-input/mscoa-form-input.component.d.ts +1 -2
  43. package/lib/shared/index.d.ts +2 -1
  44. package/lib/shared/modules/stringJsonValidator/getObjectValidations.d.ts +15 -0
  45. package/package.json +1 -2
  46. package/fesm2022/ngx-t-forms-ngx-t-forms-8hOAg-8v.mjs.map +0 -1
@@ -5,7 +5,7 @@ import { EventEmitter, Output, Input, HostBinding, Optional, Self, Component } f
5
5
  import * as i1 from '@angular/forms';
6
6
  import { Validators, ReactiveFormsModule } from '@angular/forms';
7
7
  import { Subject, BehaviorSubject, take, tap, catchError, takeUntil } from 'rxjs';
8
- import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-8hOAg-8v.mjs';
8
+ import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs';
9
9
  import * as i4$1 from '@angular/material/form-field';
10
10
  import { MatFormFieldControl } from '@angular/material/form-field';
11
11
  import * as i2$1 from '@angular/material/core';
@@ -227,4 +227,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
227
227
  }] } });
228
228
 
229
229
  export { MscoaSegmentConfigComponent };
230
- //# sourceMappingURL=ngx-t-forms-mscoa-segment-config.component-BDVj1NFN.mjs.map
230
+ //# sourceMappingURL=ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-t-forms-mscoa-segment-config.component-BDVj1NFN.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, ReactiveFormsModule, NgControl } from '@angular/forms';\r\nimport { BehaviorSubject, catchError, Observable, Subject, take, takeUntil, tap } from 'rxjs';\r\n\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { IGetTreeResponse } from 'ngx-t-forms-types';\r\n\r\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\n\r\ninterface IIncludedSegmentConfig{\r\n segment:string,\r\n label:string,\r\n readOnly:boolean\r\n singleSelect:boolean\r\n\r\n}\r\n@Component({\r\n selector: 'app-mscoa-segment-config',\r\n templateUrl: './mscoa-segment-config.component.html',\r\n styleUrls: ['./mscoa-segment-config.component.scss'],\r\n standalone: true,\r\n imports:[\r\n CommonModule,\r\n MatModulesModule,\r\n ReactiveFormsModule\r\n ],\r\nproviders: [{ provide: MatFormFieldControl, useExisting:MscoaSegmentConfigComponent }],\r\n \r\n})\r\nexport class MscoaSegmentConfigComponent implements OnInit, OnDestroy,MatFormFieldControl<IIncludedSegmentConfig[]|undefined>{\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n \r\n @HostBinding() id = `app-mscoa-segment-config'-${MscoaSegmentConfigComponent.nextId++}`;\r\n \r\n placeholder: string = ''\r\n constructor(\r\n private fb: FormBuilder,\r\n @Optional() @Self() public ngControl: NgControl, private _elementRef: ElementRef<HTMLElement>,\r\n ) {\r\n this.segmentForm = this.createSegmentForm();\r\n \r\n }\r\n\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 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-mscoa-segment-config');\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 @Input() errors:IConfigElementError[] |undefined = [];\r\n \r\n @Input() set value(val: IIncludedSegmentConfig[]) {\r\n this._value.next(val || []);\r\n }\r\n \r\n get value(): IIncludedSegmentConfig[] {\r\n return this._value.value;\r\n }\r\n _getMscoaTree :Observable<IGetTreeResponse|undefined> | undefined;\r\n _showAllSegments:boolean = false;\r\n @Input() set showAllSegments(val:boolean){\r\n\r\n if(!!val){\r\n this.checkShowAllSegments()\r\n }\r\n this._showAllSegments = !!val\r\n \r\n }\r\n get showAllSegments(){\r\n return this._showAllSegments\r\n }\r\n @Input() set getMscoaTree(options$:Observable<IGetTreeResponse | undefined> ){\r\n if(!!options$ && this._getMscoaTree === undefined){\r\n this._getMscoaTree = options$\r\n this.loadMscoa()\r\n }\r\n }\r\n@Output() valueChanged = new EventEmitter<IIncludedSegmentConfig[]>();\r\n private _value = new BehaviorSubject<IIncludedSegmentConfig[]>([]);\r\n private destroy$ = new Subject<void>();\r\n\r\n mscoaTree!:IGetTreeResponse | undefined;\r\n treeSegments!:IIncludedSegmentConfig[];\r\n error$ = new BehaviorSubject<string | null>(null);\r\n\r\n segmentForm: FormGroup;\r\n editingIndex: number | null = null;\r\n isAddingNew = false;\r\n\r\n\r\n\r\n ngOnInit() {\r\n this.listenToFormChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n getMscoaError:string|undefined = undefined\r\n private loadMscoa(){\r\n \r\n this._getMscoaTree?.pipe(\r\n take(1),\r\n tap((options) => {\r\n this.mscoaTree = options;\r\n this.treeSegments = options?.accountTreeKeys?.map((treeKeys) => ({\r\n segment:treeKeys,\r\n singleSelect:true,\r\n label: this.toTitleCase(treeKeys),\r\n readOnly: this.value.find((v) => v.segment === treeKeys)?.readOnly || false, \r\n })) || [];\r\n }),\r\n catchError((error) => {\r\n this.getMscoaError = 'Failed to fetch mscoa tree';\r\n console.error('Error while fetching SCOA tree:', error);\r\n return [null];\r\n })\r\n ).subscribe();\r\n }\r\n private createSegmentForm(segment: IIncludedSegmentConfig = {\r\n segment: '', label: '',\r\n singleSelect:true,\r\n readOnly:false}): FormGroup {\r\n return this.fb.group({\r\n segment: [segment.segment, Validators.required],\r\n readOnly: [segment.readOnly, Validators.required],\r\n singleSelect:[segment.singleSelect,Validators.required]\r\n });\r\n }\r\n\r\n private listenToFormChanges() {\r\n this.segmentForm.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((v) => console.log(v));\r\n }\r\n\r\n startAddNew() {\r\n this.isAddingNew = true;\r\n this.editingIndex = null;\r\n this.segmentForm = this.createSegmentForm();\r\n }\r\n\r\n startEdit(index: number) {\r\n this.editingIndex = index;\r\n this.isAddingNew = false;\r\n this.segmentForm = this.createSegmentForm(this.value[index]);\r\n }\r\n\r\n cancelEdit() {\r\n this.editingIndex = null;\r\n this.isAddingNew = false;\r\n this.segmentForm.reset();\r\n }\r\n\r\n saveSegment() {\r\n if (this.segmentForm.valid) {\r\n const newSegment: IIncludedSegmentConfig = ({\r\n segment:this.segmentForm.value.segment,\r\n label:this.toTitleCase(this.segmentForm.value.segment),\r\n singleSelect:this.segmentForm.value.singleSelect,\r\n readOnly:this.segmentForm.value.readOnly\r\n })\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 readOnly(event:MatSlideToggleChange){\r\n this.segmentForm.patchValue({readOnly:event.checked}) \r\n }\r\n singleSelectChange(event:MatSlideToggleChange){\r\n this.segmentForm.patchValue({singleSelect:event.checked}) \r\n }\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\r\n private toTitleCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase());\r\n }\r\n alreadyExists(segment:string){\r\n return this.value.find((v) => v.segment === segment)\r\n }\r\n checkShowAllSegments() {\r\n if (!this._getMscoaTree || !this.treeSegments) return;\r\n \r\n const updatedValue = this.treeSegments.map(segment => ({\r\n ...segment,\r\n ...(this.value.find(v => v.segment === segment.segment) || {})\r\n }));\r\n\r\n if (JSON.stringify(updatedValue) !== JSON.stringify(this.value)) {\r\n this.valueChanged.emit([{} as any]);\r\n setTimeout(() => {\r\n this.valueChanged.emit(updatedValue);\r\n }, 0);\r\n }\r\n }\r\n}","<div *ngIf=\"(value||[]).length>0\" class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span> Allowed segment configuration</span>\n</div>\n\n<mat-chip-listbox *ngIf=\"(value?.length || 0) > 0; else noSegments\" aria-label=\"Fish selection\">\n @for (segment of value||[]; track segment.segment) {\n <mat-chip-option (removed)=\"removeSegment($index)\" (click)=\"startEdit($index)\" color=\"accent\"\n [value]=\"segment?.segment\" [selected]=\"this.editingIndex === $index\">\n <div style=\" \n display: flex;\n align-items: center;\n gap: 1px;\">\n <span style=\"margin-right: 2px;\">\n {{ segment.label }}\n </span>\n <mat-icon class=\"icons\">\n {{ segment.singleSelect ? 'done' : ' done_all' }}\n </mat-icon>\n <mat-icon class=\"icons\">\n\n {{ segment.readOnly ? 'edit_off' : 'edit' }}\n </mat-icon>\n </div>\n\n @if ( showAllSegments === false) {\n <button matChipRemove [attr.aria-label]=\"'remove' \">\n <mat-icon>cancel</mat-icon>\n </button>\n }\n\n </mat-chip-option>\n }\n</mat-chip-listbox>\n\n\n\n\n\n<ng-template #noSegments>\n <div class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span>No segment configuration available. Start by adding a segment below.</span>\n </div>\n</ng-template>\n\n<mat-toolbar *ngIf=\"!isAddingNew && editingIndex === null && showAllSegments === false\">\n <button style=\"width:100%\" mat-stroked-button (click)=\"startAddNew()\">\n Add New Segment <mat-icon>add</mat-icon>\n </button>\n</mat-toolbar>\n\n@if (!!getMscoaError) {\n<div class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span>\n {{ getMscoaError }}\n </span>\n</div>\n}\n<mat-card *ngIf=\"isAddingNew || editingIndex !== null\">\n <mat-card-header>\n <mat-card-subtitle>\n {{ isAddingNew ? 'Add a new' : 'Update' }} Segment\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <form [formGroup]=\"segmentForm\" (ngSubmit)=\"saveSegment()\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Segment</mat-label>\n <mat-select matNativeControl formControlName=\"segment\" [value]=\"value\" placeholder=\"Select segment\">\n @for ( segment of treeSegments; track segment.segment) {\n <mat-option [disabled]=\"alreadyExists(segment.segment)\" [value]=\"segment.segment\"> {{ segment.label\n }}</mat-option>\n }\n </mat-select>\n <mat-hint>\n Choose a function to run on the array\n </mat-hint>\n </mat-form-field>\n <mat-toolbar>\n <mat-slide-toggle (change)=\"singleSelectChange($event)\" [checked]=\"segmentForm.value.singleSelect\">\n Single select segment\n </mat-slide-toggle>\n </mat-toolbar>\n <mat-toolbar>\n <mat-slide-toggle (change)=\"readOnly($event)\" [checked]=\"segmentForm.value.readOnly\">Read only\n segment</mat-slide-toggle>\n </mat-toolbar>\n\n <br>\n <mat-card-actions>\n <button mat-button type=\"submit\" [disabled]=\"!segmentForm.valid\">Save</button>\n <button mat-button (click)=\"cancelEdit()\">Cancel</button>\n </mat-card-actions>\n\n\n </form>\n </mat-card-content>\n</mat-card>\n\n<span color=\"danger\" *ngIf=\"error$ | async as error\">\n <p>{{ error }}</p>\n</span>"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.html"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators, ReactiveFormsModule, NgControl } from '@angular/forms';\r\nimport { BehaviorSubject, catchError, Observable, Subject, take, takeUntil, tap } from 'rxjs';\r\n\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { IGetTreeResponse } from 'ngx-t-forms-types';\r\n\r\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\n\r\ninterface IIncludedSegmentConfig{\r\n segment:string,\r\n label:string,\r\n readOnly:boolean\r\n singleSelect:boolean\r\n\r\n}\r\n@Component({\r\n selector: 'app-mscoa-segment-config',\r\n templateUrl: './mscoa-segment-config.component.html',\r\n styleUrls: ['./mscoa-segment-config.component.scss'],\r\n standalone: true,\r\n imports:[\r\n CommonModule,\r\n MatModulesModule,\r\n ReactiveFormsModule\r\n ],\r\nproviders: [{ provide: MatFormFieldControl, useExisting:MscoaSegmentConfigComponent }],\r\n \r\n})\r\nexport class MscoaSegmentConfigComponent implements OnInit, OnDestroy,MatFormFieldControl<IIncludedSegmentConfig[]|undefined>{\r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n \r\n @HostBinding() id = `app-mscoa-segment-config'-${MscoaSegmentConfigComponent.nextId++}`;\r\n \r\n placeholder: string = ''\r\n constructor(\r\n private fb: FormBuilder,\r\n @Optional() @Self() public ngControl: NgControl, private _elementRef: ElementRef<HTMLElement>,\r\n ) {\r\n this.segmentForm = this.createSegmentForm();\r\n \r\n }\r\n\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 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-mscoa-segment-config');\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 @Input() errors:IConfigElementError[] |undefined = [];\r\n \r\n @Input() set value(val: IIncludedSegmentConfig[]) {\r\n this._value.next(val || []);\r\n }\r\n \r\n get value(): IIncludedSegmentConfig[] {\r\n return this._value.value;\r\n }\r\n _getMscoaTree :Observable<IGetTreeResponse|undefined> | undefined;\r\n _showAllSegments:boolean = false;\r\n @Input() set showAllSegments(val:boolean){\r\n\r\n if(!!val){\r\n this.checkShowAllSegments()\r\n }\r\n this._showAllSegments = !!val\r\n \r\n }\r\n get showAllSegments(){\r\n return this._showAllSegments\r\n }\r\n @Input() set getMscoaTree(options$:Observable<IGetTreeResponse | undefined> ){\r\n if(!!options$ && this._getMscoaTree === undefined){\r\n this._getMscoaTree = options$\r\n this.loadMscoa()\r\n }\r\n }\r\n@Output() valueChanged = new EventEmitter<IIncludedSegmentConfig[]>();\r\n private _value = new BehaviorSubject<IIncludedSegmentConfig[]>([]);\r\n private destroy$ = new Subject<void>();\r\n\r\n mscoaTree!:IGetTreeResponse | undefined;\r\n treeSegments!:IIncludedSegmentConfig[];\r\n error$ = new BehaviorSubject<string | null>(null);\r\n\r\n segmentForm: FormGroup;\r\n editingIndex: number | null = null;\r\n isAddingNew = false;\r\n\r\n\r\n\r\n ngOnInit() {\r\n this.listenToFormChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n }\r\n getMscoaError:string|undefined = undefined\r\n private loadMscoa(){\r\n \r\n this._getMscoaTree?.pipe(\r\n take(1),\r\n tap((options) => {\r\n this.mscoaTree = options;\r\n this.treeSegments = options?.accountTreeKeys?.map((treeKeys) => ({\r\n segment:treeKeys,\r\n singleSelect:true,\r\n label: this.toTitleCase(treeKeys),\r\n readOnly: this.value.find((v) => v.segment === treeKeys)?.readOnly || false, \r\n })) || [];\r\n }),\r\n catchError((error) => {\r\n this.getMscoaError = 'Failed to fetch mscoa tree';\r\n console.error('Error while fetching SCOA tree:', error);\r\n return [null];\r\n })\r\n ).subscribe();\r\n }\r\n private createSegmentForm(segment: IIncludedSegmentConfig = {\r\n segment: '', label: '',\r\n singleSelect:true,\r\n readOnly:false}): FormGroup {\r\n return this.fb.group({\r\n segment: [segment.segment, Validators.required],\r\n readOnly: [segment.readOnly, Validators.required],\r\n singleSelect:[segment.singleSelect,Validators.required]\r\n });\r\n }\r\n\r\n private listenToFormChanges() {\r\n this.segmentForm.valueChanges\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((v) => console.log(v));\r\n }\r\n\r\n startAddNew() {\r\n this.isAddingNew = true;\r\n this.editingIndex = null;\r\n this.segmentForm = this.createSegmentForm();\r\n }\r\n\r\n startEdit(index: number) {\r\n this.editingIndex = index;\r\n this.isAddingNew = false;\r\n this.segmentForm = this.createSegmentForm(this.value[index]);\r\n }\r\n\r\n cancelEdit() {\r\n this.editingIndex = null;\r\n this.isAddingNew = false;\r\n this.segmentForm.reset();\r\n }\r\n\r\n saveSegment() {\r\n if (this.segmentForm.valid) {\r\n const newSegment: IIncludedSegmentConfig = ({\r\n segment:this.segmentForm.value.segment,\r\n label:this.toTitleCase(this.segmentForm.value.segment),\r\n singleSelect:this.segmentForm.value.singleSelect,\r\n readOnly:this.segmentForm.value.readOnly\r\n })\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 readOnly(event:MatSlideToggleChange){\r\n this.segmentForm.patchValue({readOnly:event.checked}) \r\n }\r\n singleSelectChange(event:MatSlideToggleChange){\r\n this.segmentForm.patchValue({singleSelect:event.checked}) \r\n }\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\r\n private toTitleCase(str: string): string {\r\n return str.replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase());\r\n }\r\n alreadyExists(segment:string){\r\n return this.value.find((v) => v.segment === segment)\r\n }\r\n checkShowAllSegments() {\r\n if (!this._getMscoaTree || !this.treeSegments) return;\r\n \r\n const updatedValue = this.treeSegments.map(segment => ({\r\n ...segment,\r\n ...(this.value.find(v => v.segment === segment.segment) || {})\r\n }));\r\n\r\n if (JSON.stringify(updatedValue) !== JSON.stringify(this.value)) {\r\n this.valueChanged.emit([{} as any]);\r\n setTimeout(() => {\r\n this.valueChanged.emit(updatedValue);\r\n }, 0);\r\n }\r\n }\r\n}","<div *ngIf=\"(value||[]).length>0\" class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span> Allowed segment configuration</span>\n</div>\n\n<mat-chip-listbox *ngIf=\"(value?.length || 0) > 0; else noSegments\" aria-label=\"Fish selection\">\n @for (segment of value||[]; track segment.segment) {\n <mat-chip-option (removed)=\"removeSegment($index)\" (click)=\"startEdit($index)\" color=\"accent\"\n [value]=\"segment?.segment\" [selected]=\"this.editingIndex === $index\">\n <div style=\" \n display: flex;\n align-items: center;\n gap: 1px;\">\n <span style=\"margin-right: 2px;\">\n {{ segment.label }}\n </span>\n <mat-icon class=\"icons\">\n {{ segment.singleSelect ? 'done' : ' done_all' }}\n </mat-icon>\n <mat-icon class=\"icons\">\n\n {{ segment.readOnly ? 'edit_off' : 'edit' }}\n </mat-icon>\n </div>\n\n @if ( showAllSegments === false) {\n <button matChipRemove [attr.aria-label]=\"'remove' \">\n <mat-icon>cancel</mat-icon>\n </button>\n }\n\n </mat-chip-option>\n }\n</mat-chip-listbox>\n\n\n\n\n\n<ng-template #noSegments>\n <div class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span>No segment configuration available. Start by adding a segment below.</span>\n </div>\n</ng-template>\n\n<mat-toolbar *ngIf=\"!isAddingNew && editingIndex === null && showAllSegments === false\">\n <button style=\"width:100%\" mat-stroked-button (click)=\"startAddNew()\">\n Add New Segment <mat-icon>add</mat-icon>\n </button>\n</mat-toolbar>\n\n@if (!!getMscoaError) {\n<div class=\"tree-instructions\">\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\n <span>\n {{ getMscoaError }}\n </span>\n</div>\n}\n<mat-card *ngIf=\"isAddingNew || editingIndex !== null\">\n <mat-card-header>\n <mat-card-subtitle>\n {{ isAddingNew ? 'Add a new' : 'Update' }} Segment\n </mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <form [formGroup]=\"segmentForm\" (ngSubmit)=\"saveSegment()\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Segment</mat-label>\n <mat-select matNativeControl formControlName=\"segment\" [value]=\"value\" placeholder=\"Select segment\">\n @for ( segment of treeSegments; track segment.segment) {\n <mat-option [disabled]=\"alreadyExists(segment.segment)\" [value]=\"segment.segment\"> {{ segment.label\n }}</mat-option>\n }\n </mat-select>\n <mat-hint>\n Choose a function to run on the array\n </mat-hint>\n </mat-form-field>\n <mat-toolbar>\n <mat-slide-toggle (change)=\"singleSelectChange($event)\" [checked]=\"segmentForm.value.singleSelect\">\n Single select segment\n </mat-slide-toggle>\n </mat-toolbar>\n <mat-toolbar>\n <mat-slide-toggle (change)=\"readOnly($event)\" [checked]=\"segmentForm.value.readOnly\">Read only\n segment</mat-slide-toggle>\n </mat-toolbar>\n\n <br>\n <mat-card-actions>\n <button mat-button type=\"submit\" [disabled]=\"!segmentForm.valid\">Save</button>\n <button mat-button (click)=\"cancelEdit()\">Cancel</button>\n </mat-card-actions>\n\n\n </form>\n </mat-card-content>\n</mat-card>\n\n<span color=\"danger\" *ngIf=\"error$ | async as error\">\n <p>{{ error }}</p>\n</span>"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import { Injectable, Component, InjectionToken, makeEnvironmentProviders, inject
3
3
  import { DataSources, formColumnInputsSchema, ElementTypes, validateCalculatedFieldRules, CalculationFunctions, MinInputTypes, InputDataTypes, FormSubmissionStatus, validateForm, FormListSection, FormStateErrors, getElementEditorConfig, DefaultInputConfig, ElementEditorTypes, SpecialElementKeys, validateFormColumnInputsWithRequired, validateFormSlide, BlurHandleTypes, AllFormInputPrimaryKeys, AllDocumentFileExtensions, AllImageFileExtensions, InputFileType, UploadTypes, InputTypes, AutocapitalizeOptions } from 'ngx-t-forms-types';
4
4
  import * as i1$2 from '@angular/forms';
5
5
  import { Validators, FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
6
- import ExpressionValidator from 'stringtoobjectvalidator';
7
6
  import { takeUntil, debounceTime, distinctUntilChanged, startWith, map, pairwise, switchMap, catchError, EMPTY, throwError, of, tap, forkJoin, filter, Subject, take, Observable, concatMap, concat, finalize, Subscription, BehaviorSubject, combineLatest, withLatestFrom, firstValueFrom, timer } from 'rxjs';
8
7
  import { evaluate } from 'mathjs';
9
8
  import * as i1 from '@angular/common/http';
@@ -245,6 +244,173 @@ function provideNgxTForms(config) {
245
244
  ]);
246
245
  }
247
246
 
247
+ /**
248
+ * Validates an object against a validation expression.
249
+ *
250
+ * @param {string} expression - The validation expression to evaluate.
251
+ * @param {object} object - The object to validate.
252
+ * @returns {boolean} - A boolean indicating whether the object is valid according to the expression.
253
+ *
254
+ * This function is designed to handle a variety of cases for validating objects based on a given expression. It can:
255
+ * 1. Evaluate an expression part with a single comparison operator, for example: 'a === 1' or '(a === 1)'.
256
+ * 2. Evaluate an expression with multiple comparison operators, including: '===', '==', '!==', '!=', '>', '<', '>=', and '<='.
257
+ * 3. Group expression parts considering bracket enclosures and logical operators.
258
+ * 4. Evaluate an expression with multiple logical operators, such as 'a === 1 && b === 2 || c === 3'.
259
+ */
260
+ //type LogicalOperator = '&&' | '||' | '!';
261
+ const validateObjectAgainstString = (expression, object) => {
262
+ /**
263
+ * Removes enclosing brackets from a string.
264
+ * @param expression The string to remove brackets from.
265
+ * @returns The string without enclosing brackets.
266
+ */
267
+ function removeEnclosingBrackets(exp) {
268
+ exp = exp.trim();
269
+ if (exp.startsWith('(') && exp.endsWith(')')) {
270
+ // remove the first and last characters from the string
271
+ return exp.slice(1, -1);
272
+ }
273
+ return exp;
274
+ }
275
+ /**
276
+ * Evaluates a validation string against an object.
277
+ * @param validationString The validation string to evaluate.
278
+ * @param data The object to validate.
279
+ * @returns A boolean indicating whether the object is valid according to the validation string.
280
+ */
281
+ function evaluateValidationString(validationString, data) {
282
+ //const operators: Operator[] = ['===', '==', '!==', '!=', '>', '<', '>=', '<='];
283
+ const evaluationExpression = removeEnclosingBrackets(validationString);
284
+ /**
285
+ * Parses an operand from a string.
286
+ * @param operand The string to parse.
287
+ * @returns The parsed operand.
288
+ */
289
+ function parseOperand(operand) {
290
+ if (!operand) {
291
+ throw new Error(`Invalid operand: ${operand}`);
292
+ }
293
+ if (operand in data) {
294
+ return data[operand];
295
+ }
296
+ else if (operand === 'true') {
297
+ return true;
298
+ }
299
+ else if (operand === 'false') {
300
+ return false;
301
+ }
302
+ else if (!isNaN(Number(operand))) {
303
+ return Number(operand);
304
+ }
305
+ else if (typeof operand === 'string') {
306
+ return operand.replace(/['"]+/g, '');
307
+ }
308
+ else {
309
+ throw new Error(`Invalid operand: ${operand}`);
310
+ }
311
+ }
312
+ /**
313
+ * Evaluates a comparison expression.
314
+ * @param expression The expression to evaluate.
315
+ * @returns A boolean indicating whether the expression is true or false.
316
+ */
317
+ function evaluateExpression(expression) {
318
+ const operators = ['===', '==', '!==', '!=', '>', '<', '>=', '<='];
319
+ const parts = (expression || '').split(' ');
320
+ if (parts.length !== 3) {
321
+ throw new Error(`Invalid expression: ${expression}`);
322
+ }
323
+ const [leftOperand, operator, rightOperand] = parts;
324
+ const leftValue = parseOperand(leftOperand);
325
+ const rightValue = parseOperand(rightOperand);
326
+ if (!operators.includes(operator)) {
327
+ throw new Error(`Invalid operator: ${operator}`);
328
+ }
329
+ switch (operator) {
330
+ case '===':
331
+ return leftValue === rightValue;
332
+ case '==':
333
+ return leftValue == rightValue;
334
+ case '!==':
335
+ return leftValue !== rightValue;
336
+ case '!=':
337
+ return leftValue != rightValue;
338
+ case '>':
339
+ console.log(data, leftValue, rightValue, "TTTTTTTTTTTTTTTTTTTTT");
340
+ return leftValue > rightValue;
341
+ case '<':
342
+ return leftValue < rightValue;
343
+ case '>=':
344
+ return leftValue >= rightValue;
345
+ case '<=':
346
+ return leftValue <= rightValue;
347
+ default:
348
+ throw new Error(`Invalid operator: ${operator}`);
349
+ }
350
+ }
351
+ return evaluateExpression(evaluationExpression);
352
+ }
353
+ /**
354
+ * Evaluates a conjunction expression.
355
+ * @param conjunctionExpression The conjunction expression to evaluate.
356
+ * @param object The object to validate.
357
+ * @returns A boolean indicating whether the object is valid according to the conjunction expression.
358
+ */
359
+ function evaluateConjunction(conjunctionExpression, object) {
360
+ if (typeof conjunctionExpression !== 'string') {
361
+ return false;
362
+ }
363
+ const parts = (conjunctionExpression || '').split("&&"); //conjunctions
364
+ return parts.every((part) => {
365
+ const hasDisjunction = part.split("||").length > 1;
366
+ const hasConjunction = part.split("&&").length > 1;
367
+ const strippedPart = removeEnclosingBrackets(part);
368
+ if (hasDisjunction) {
369
+ return evaluateDisjunctions(strippedPart, object);
370
+ }
371
+ if (hasConjunction) {
372
+ return evaluateConjunction(strippedPart, object);
373
+ }
374
+ if (!hasConjunction && !hasDisjunction) {
375
+ return evaluateValidationString(strippedPart, object);
376
+ }
377
+ return false;
378
+ });
379
+ }
380
+ /**
381
+ * Evaluates a disjunction expression.
382
+ * @param disjunctionExpression The disjunction expression to evaluate.
383
+ * @param object The object to validate.
384
+ * @returns A boolean indicating whether the object is valid according to the disjunction expression.
385
+ */
386
+ function evaluateDisjunctions(disjunctionExpression, object) {
387
+ let evaluationResult = false;
388
+ if (typeof disjunctionExpression !== 'string') {
389
+ return false;
390
+ }
391
+ const parts = disjunctionExpression.split("||"); //disjunctions
392
+ for (let part of parts) {
393
+ const hasDisjunction = part.split("||").length > 1;
394
+ const hasConjunction = part.split("&&").length > 1;
395
+ const strippedPart = removeEnclosingBrackets(part);
396
+ if (hasDisjunction) {
397
+ evaluationResult = evaluateDisjunctions(strippedPart, object);
398
+ }
399
+ else if (hasConjunction) {
400
+ evaluationResult = evaluateConjunction(strippedPart, object);
401
+ }
402
+ else if (!hasConjunction && !hasDisjunction) {
403
+ evaluationResult = evaluateValidationString(strippedPart, object);
404
+ }
405
+ if (evaluationResult) {
406
+ break;
407
+ }
408
+ }
409
+ return evaluationResult;
410
+ }
411
+ return evaluateDisjunctions(expression, object);
412
+ };
413
+
248
414
  function compileInputValidators(input, getFormValue) {
249
415
  const isRequired = !!input.required;
250
416
  let inputValidators = input.validators ? [...input.validators] : [];
@@ -291,7 +457,7 @@ function createCustomValidator(config, formValue) {
291
457
  }
292
458
  try {
293
459
  const scope = getValidationScopeFromFormValue(inputsObservedForChanges, formValue());
294
- const isInvalid = ExpressionValidator(expression, scope);
460
+ const isInvalid = validateObjectAgainstString(expression, scope);
295
461
  const ev = isInvalid ? { [config.id]: { message, canOverride } } : null;
296
462
  if (isInvalid) {
297
463
  control.markAsTouched();
@@ -960,12 +1126,17 @@ function arrayAccessFunctions(array, rule) {
960
1126
  const ruleFunctions = {
961
1127
  [FunctionTypes.Filter]: (array, expression) => {
962
1128
  return array.filter((item) => {
963
- const ev = ExpressionValidator(expression, item);
964
- return ev;
1129
+ try {
1130
+ const ev = validateObjectAgainstString(expression, item);
1131
+ return ev;
1132
+ }
1133
+ catch (error) {
1134
+ return false;
1135
+ }
965
1136
  });
966
1137
  },
967
1138
  [FunctionTypes.Find]: (array, expression) => {
968
- return array.find((item) => ExpressionValidator(expression, item));
1139
+ return array.find((item) => validateObjectAgainstString(expression, item));
969
1140
  },
970
1141
  [FunctionTypes.Map]: (array, expression) => {
971
1142
  return array.map((item) => {
@@ -3510,7 +3681,13 @@ function testAgainstItem(test, item) {
3510
3681
  const key = test.deepBind ? test.deepBind[test.deepBind.length - 1] : '';
3511
3682
  const objectValue = test.deepBind ? { [key || '']: testValue } : testValue;
3512
3683
  if (test.expression) {
3513
- return ExpressionValidator(test.expression, objectValue);
3684
+ try {
3685
+ return validateObjectAgainstString(test.expression, objectValue);
3686
+ }
3687
+ catch (error) {
3688
+ console.error(error);
3689
+ return false;
3690
+ }
3514
3691
  }
3515
3692
  if (test.testType === 'exists') {
3516
3693
  return test.testType === 'exists' && testValue !== '' && testValue !== undefined;
@@ -4936,9 +5113,9 @@ class FormBuilderComponent {
4936
5113
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4937
5114
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: FormBuilderComponent, isStandalone: true, selector: "app-form-builder", inputs: { formId: "formId" }, providers: [
4938
5115
  FormsStoreService
4939
- ], ngImport: i0, template: "<header>\r\n <mat-toolbar color=\"primary\">\r\n @if (closeButton) {\r\n <button mat-icon-button [style.color]=\"closeButton.color\" (click)=\"closeButton.onClick()\">\r\n <mat-icon>{{closeButton.icon}}</mat-icon>\r\n </button>\r\n }\r\n\r\n <!-- Navigation group -->\r\n <div class=\"nav-group\">\r\n <button mat-button routerLink=\"/\">Forms</button>\r\n <mat-icon>navigate_next</mat-icon>\r\n </div>\r\n\r\n <!-- Title input with optimized binding -->\r\n @if (selectHasFormId()) {\r\n <input [(ngModel)]=\"titleValue\" class=\"section-title-input\" placeholder=\"Enter Form Title\">\r\n }\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n @defer (on viewport) {\r\n <app-forms-builder-menu />\r\n } @placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"20\" />\r\n </div>\r\n\r\n }\r\n\r\n <span class=\"divider\">|</span>\r\n\r\n <!-- Save/Update button with optimized reactive state -->\r\n <button mat-raised-button color=\"accent\" class=\"save-button\" [disabled]=\"!(canSaveForm())\"\r\n (click)=\"saveForm()\">\r\n\r\n <mat-icon>\r\n {{(isNewForm()) ? 'save' : 'update'}}\r\n </mat-icon>\r\n\r\n @if (selectFormBuilderIsBusy()) {\r\n {{(isNewForm()) ? '..Saving new form' : '..Updating Form'}}\r\n } @else {\r\n {{(isNewForm()) ? 'Save' : 'Update'}}\r\n }\r\n </button>\r\n\r\n <!-- Updated time info -->\r\n @if (!(isNewForm())) {\r\n <div class=\"updated-time\">\r\n <mat-icon>update</mat-icon>\r\n <span>Updated {{ selectFormUpdated() }}</span>\r\n </div>\r\n }\r\n </mat-toolbar>\r\n</header>\r\n\r\n<!-- Main content with optimized loading -->\r\n@defer (on viewport) {\r\n<div class=\"container\">\r\n <div class=\"middle\">\r\n <br>\r\n @if (selectLoadingForm()) {\r\n <div class=\"loading-container\">\r\n <mat-spinner />\r\n </div>\r\n } @else {\r\n <app-form-section-stepper />\r\n }\r\n <br>\r\n @if ((hasMissingConfigs()) && !(selectLoadingForm())) {\r\n <app-missing-form-configs />\r\n }\r\n </div>\r\n\r\n @if (elementEditorOpen()) {\r\n <app-input-editor style=\"max-width:480px;height:calc(100vh - 64px);z-index:1\" cdkDrag cdkDragBoundary=\"container\" class=\"middle editor-container\" />\r\n }\r\n <!-- Missing fields section -->`\r\n\r\n\r\n</div>\r\n}@placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"50\" />\r\n </div>\r\n}", styles: [".container{display:flex;width:100%;height:calc(100% - 64px)}.side{width:100px;background-color:#f8d7da}.middle{flex-grow:1;height:100%;overflow:auto;background-color:none}.section-title-input{border:none;background-color:transparent;font-size:16px;font-weight:600;color:#fff;padding-top:12px;padding-bottom:12px;outline:none;min-width:268px;transition:border-bottom-color .3s ease-in-out}.section-title-input:focus{border-bottom:1px solid #ffffff}.missing-fields{position:fixed;bottom:0}.updated-time{display:flex;gap:8px;align-items:center;line-height:normal;font-size:14px;bottom:0;position:absolute;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:8px;border-radius:4px}.nav-group{display:flex;align-items:center;gap:8px}.save-button{margin-left:8px;min-width:168px}.loading-container{display:flex;height:calc(100% - 150px);justify-content:center;align-items:center}.editor-container{max-width:500px}.divider{margin:0 8px;opacity:.5}app-missing-form-configs{position:absolute;bottom:0;right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], deferBlockDependencies: [() => [import('./ngx-t-forms-forms-builder-menu.component-aRCX4Hz7.mjs').then(m => m.FormsBuilderMenuComponent)], () => [i2$1.CdkDrag, i7.MatProgressSpinner, import('./ngx-t-forms-input-editor.component-mXuY17jv.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-CmIrhO2e.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-CB9fHHqd.mjs').then(m => m.MissingFormConfigsComponent)]] }); }
5116
+ ], ngImport: i0, template: "<header>\r\n <mat-toolbar color=\"primary\">\r\n @if (closeButton) {\r\n <button mat-icon-button [style.color]=\"closeButton.color\" (click)=\"closeButton.onClick()\">\r\n <mat-icon>{{closeButton.icon}}</mat-icon>\r\n </button>\r\n }\r\n\r\n <!-- Navigation group -->\r\n <div class=\"nav-group\">\r\n <button mat-button routerLink=\"/\">Forms</button>\r\n <mat-icon>navigate_next</mat-icon>\r\n </div>\r\n\r\n <!-- Title input with optimized binding -->\r\n @if (selectHasFormId()) {\r\n <input [(ngModel)]=\"titleValue\" class=\"section-title-input\" placeholder=\"Enter Form Title\">\r\n }\r\n\r\n <span class=\"spacer\"></span>\r\n\r\n @defer (on viewport) {\r\n <app-forms-builder-menu />\r\n } @placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"20\" />\r\n </div>\r\n\r\n }\r\n\r\n <span class=\"divider\">|</span>\r\n\r\n <!-- Save/Update button with optimized reactive state -->\r\n <button mat-raised-button color=\"accent\" class=\"save-button\" [disabled]=\"!(canSaveForm())\"\r\n (click)=\"saveForm()\">\r\n\r\n <mat-icon>\r\n {{(isNewForm()) ? 'save' : 'update'}}\r\n </mat-icon>\r\n\r\n @if (selectFormBuilderIsBusy()) {\r\n {{(isNewForm()) ? '..Saving new form' : '..Updating Form'}}\r\n } @else {\r\n {{(isNewForm()) ? 'Save' : 'Update'}}\r\n }\r\n </button>\r\n\r\n <!-- Updated time info -->\r\n @if (!(isNewForm())) {\r\n <div class=\"updated-time\">\r\n <mat-icon>update</mat-icon>\r\n <span>Updated {{ selectFormUpdated() }}</span>\r\n </div>\r\n }\r\n </mat-toolbar>\r\n</header>\r\n\r\n<!-- Main content with optimized loading -->\r\n@defer (on viewport) {\r\n<div class=\"container\">\r\n <div class=\"middle\">\r\n <br>\r\n @if (selectLoadingForm()) {\r\n <div class=\"loading-container\">\r\n <mat-spinner />\r\n </div>\r\n } @else {\r\n <app-form-section-stepper />\r\n }\r\n <br>\r\n @if ((hasMissingConfigs()) && !(selectLoadingForm())) {\r\n <app-missing-form-configs />\r\n }\r\n </div>\r\n\r\n @if (elementEditorOpen()) {\r\n <app-input-editor style=\"max-width:480px;height:calc(100vh - 64px);z-index:1\" cdkDrag cdkDragBoundary=\"container\" class=\"middle editor-container\" />\r\n }\r\n <!-- Missing fields section -->`\r\n\r\n\r\n</div>\r\n}@placeholder {\r\n <div style=\"padding: 50px;display:flex;justify-content:center;align-items:center; text-align: center;\">\r\n <mat-spinner diameter=\"50\" />\r\n </div>\r\n}", styles: [".container{display:flex;width:100%;height:calc(100% - 64px)}.side{width:100px;background-color:#f8d7da}.middle{flex-grow:1;height:100%;overflow:auto;background-color:none}.section-title-input{border:none;background-color:transparent;font-size:16px;font-weight:600;color:#fff;padding-top:12px;padding-bottom:12px;outline:none;min-width:268px;transition:border-bottom-color .3s ease-in-out}.section-title-input:focus{border-bottom:1px solid #ffffff}.missing-fields{position:fixed;bottom:0}.updated-time{display:flex;gap:8px;align-items:center;line-height:normal;font-size:14px;bottom:0;position:absolute;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:8px;border-radius:4px}.nav-group{display:flex;align-items:center;gap:8px}.save-button{margin-left:8px;min-width:168px}.loading-container{display:flex;height:calc(100% - 150px);justify-content:center;align-items:center}.editor-container{max-width:500px}.divider{margin:0 8px;opacity:.5}app-missing-form-configs{position:absolute;bottom:0;right:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i2.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], deferBlockDependencies: [() => [import('./ngx-t-forms-forms-builder-menu.component-DQ8JYw6g.mjs').then(m => m.FormsBuilderMenuComponent)], () => [i2$1.CdkDrag, i7.MatProgressSpinner, import('./ngx-t-forms-input-editor.component-Gi9MgyHB.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-hnOcnZGc.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-BvsopeCg.mjs').then(m => m.MissingFormConfigsComponent)]] }); }
4940
5117
  }
4941
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-forms-builder-menu.component-aRCX4Hz7.mjs').then(m => m.FormsBuilderMenuComponent), import('./ngx-t-forms-input-editor.component-mXuY17jv.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-CmIrhO2e.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-CB9fHHqd.mjs').then(m => m.MissingFormConfigsComponent)], resolveMetadata: (FormsBuilderMenuComponent, InputEditorComponent, FormSectionStepperComponent, MissingFormConfigsComponent) => ({ decorators: [{
5118
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-forms-builder-menu.component-DQ8JYw6g.mjs').then(m => m.FormsBuilderMenuComponent), import('./ngx-t-forms-input-editor.component-Gi9MgyHB.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-hnOcnZGc.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-BvsopeCg.mjs').then(m => m.MissingFormConfigsComponent)], resolveMetadata: (FormsBuilderMenuComponent, InputEditorComponent, FormSectionStepperComponent, MissingFormConfigsComponent) => ({ decorators: [{
4942
5119
  type: Component,
4943
5120
  args: [{ selector: 'app-form-builder', standalone: true, imports: [CommonModule,
4944
5121
  MatModulesModule,
@@ -5279,9 +5456,9 @@ class TDynamicDataEditComponent {
5279
5456
  }
5280
5457
  }
5281
5458
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: TDynamicDataEditComponent, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
5282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TDynamicDataEditComponent, isStandalone: true, selector: "lib-t-dynamic-data-edit", inputs: { editorConfig: "editorConfig", formInputs: "formInputs", data: "data", validationErrors: "validationErrors" }, outputs: { valueChange: "valueChange", blur: "blur" }, ngImport: i0, template: "@defer {\r\n <ng-container *ngIf=\"( vm$ |async) as vm\" >\r\n\r\n <mat-form-field appearance=\"outline\"\r\n [color]=\"((validationErrors)||[]||[]).length>0 ? 'warn' : 'primary'\"\r\n [floatLabel]=\"'always'\" [subscriptSizing]=\"'dynamic'\"\r\n [hintLabel]=\"vm.editorConfigValue?.hint||''\">\r\n <mat-label> {{ (vm. editorConfigValue)?.label + ((vm. editorConfigValue)?.required ? '*' : '')}} </mat-label>\r\n \r\n @switch ((vm. editorConfigValue)?.editType) {\r\n @default {\r\n <input \r\n (blur)=\"elementBlur($event)\" \r\n (input)=\"inputChange($event)\" \r\n [disabled]=\"(vm.disabled)\"\r\n [value]=\"(vm.value)\" matInput \r\n \r\n [placeholder]=\"(vm. editorConfigValue)?.placeholder ||'Enter value'\">\r\n \r\n \r\n }\r\n @case ( elementEditorTypes.Toggle) {\r\n <lib-mat-slider-toggle-editor \r\n [name]=\"((vm. editorConfigValue)?.name||'') \" \r\n [label]=\"((vm. editorConfigValue)?.label||'')\"\r\n \r\n (valueChange)=\"valueChanged(!!$event)\" [value]=\"(vm.value)\" \r\n [errors]=\"(validationErrors)||[]\">\r\n </lib-mat-slider-toggle-editor>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.Range) {\r\n \r\n \r\n <lib-mat-slider-editor [format]=\"( vm.editorConfigValue)?.format \" [formatLabel]=\" formatLabel\"\r\n [max]=\"( vm.editorConfigValue)?.max || 100\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n [min]=\"( vm.editorConfigValue)?.min || 0\" (valueChange)=\"inputChange($event)\"\r\n [step]=\"( vm.editorConfigValue)?.step || 1\" tickInterval=\"( vm.editorConfigValue)?.step || 1\">\r\n \r\n \r\n </lib-mat-slider-editor>\r\n \r\n \r\n \r\n }\r\n \r\n @case (elementEditorTypes.ChipSelect) {\r\n <lib-mat-chip-list-editor [options]=\"(vm.editorConfigValue)?.options\" [required]=\"!!( vm.editorConfigValue)?.required\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" (valueChange)=\" valueChanged($event)\"></lib-mat-chip-list-editor>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.OptionSelect) {\r\n \r\n <mat-select [value]=\"(vm.value)\" (selectionChange)=\"valueChanged($event.value)\">\r\n @for(option of ( vm.editorConfigValue)?.options;track option.value){\r\n <mat-option [value]=\"option.value\">{{option.label}}</mat-option>\r\n }\r\n </mat-select>\r\n \r\n }\r\n <!--\r\n @case (elementEditorTypes.RichTextEditor) {\r\n <p>\r\n Not implemented yet\r\n </p>\r\n }\r\n --->\r\n \r\n @case (elementEditorTypes.SelectionOptions) {\r\n \r\n <app-selection-options-editor [errors]=\"(validationErrors)||[]\" [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [options]=\"(vm.value) || []\" (valueChanged)=\"valueChanged($event)\"></app-selection-options-editor>\r\n }\r\n \r\n @case (\r\n elementEditorTypes.ApiCall) {\r\n \r\n <lib-rest-api-call-setup \r\n [postmanCollectionConfig]=\"(vm.editorConfigValue)?.postmanCollectionConfig\"\r\n [httpGetDataFunction]=\"(vm.editorConfigValue)?.httpGetDataFunction\"\r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n \r\n </lib-rest-api-call-setup>\r\n }\r\n \r\n @case (elementEditorTypes.MongoPipelineBuilder) {\r\n \r\n <app-pipeline-generator [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" [getWorkflowOptions]=\"getWorkflowOptions$\"\r\n (valueChanged)=\"valueChanged($event)\"></app-pipeline-generator>\r\n \r\n }\r\n @case (elementEditorTypes.ApiValueAccessRules) {\r\n \r\n \r\n \r\n <app-api-value-access-rules \r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" [formInputs]=\"formInputs ||[]\" \r\n [postmanCollectionConfig]=\"(vm.editorConfigValue)?.postmanCollectionConfig\"\r\n \r\n [mapToData]=\"vm.dataOptions\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n </app-api-value-access-rules>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.FormInputSelector)\r\n {\r\n \r\n <lib-form-input-selector [formInputs]=\"formInputs ||[]\" [errors]=\"(validationErrors)||[]\" [value]=\"(vm.value) || []\"\r\n (change)=\"valueChanged($event)\">\r\n </lib-form-input-selector>\r\n }\r\n \r\n @case (\r\n elementEditorTypes.RequiredInputs\r\n ){\r\n \r\n <app-required-inputs [formInputs]=\"formInputs ||[]\" [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" (valueChanged)=\"valueChanged($event)\">\r\n </app-required-inputs>\r\n }\r\n \r\n @case(elementEditorTypes.CalculatedFieldRules){\r\n \r\n <app-calculated-field-rules [formInputs]=\"formInputs ||[]\"\r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n (valueChanged)=\"valueChanged($event)\" [mapToData]=\"vm.dataOptions\"></app-calculated-field-rules>\r\n }\r\n \r\n @case(elementEditorTypes.Validators){\r\n \r\n <app-validators-config [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" (valueChanged)=\"valueChanged($event)\" [formInputs]=\"formInputs ||[]\"\r\n [mapToData]=\"vm.dataOptions\">\r\n </app-validators-config>\r\n \r\n }\r\n @case(elementEditorTypes.ConfigMscoaSegments){\r\n \r\n <app-mscoa-segment-config [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" [getMscoaTree]=\"getMscoaTree$\"\r\n [showAllSegments]=\"vm.dataOptions\" (valueChanged)=\"valueChanged($event)\"></app-mscoa-segment-config>\r\n }\r\n @case(elementEditorTypes.ConfigMscoaAdditionalInputs){\r\n \r\n <app-config-mscoa-additional-inputs [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" [getMscoaTree]=\"getMscoaTree$\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n </app-config-mscoa-additional-inputs>\r\n \r\n }\r\n }\r\n \r\n <button [matTooltip]=\"blurFunctionTooltip((vm.editorConfigValue)?.blurHandle)\" *ngIf=\"(vm.inputHasBlurFunction)\"\r\n [disabled]=\"(vm.disabled)\" [color]=\"blurOff?'':'primary'\" (click)=\"blurOff=!blurOff\" matSuffix\r\n mat-icon-button>\r\n <mat-icon>{{\r\n blurOff?'blur_off':'blur_on'\r\n }}\r\n \r\n \r\n </mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n \r\n <mat-error style=\" font-size: 12px;\r\n margin-left: 14px;\r\n \" *ngFor=\"let error of (validationErrors)||[]\">\r\n \r\n {{error.message}}</mat-error>\r\n \r\n </ng-container>\r\n \r\n}@error {\r\n <mat-card>\r\n <mat-card-content>\r\n \r\n <span> \r\n Failed to load form inputs\r\n </span>\r\n </mat-card-content>\r\n </mat-card>\r\n }\r\n\r\n\r\n\r\n<!-- - \r\n `TableConfigSetup`\r\n- `ConditionalInputConfig`\r\n- `MatrixTable`-->", styles: [".showItemValue{opacity:.6}mat-form-field{width:100%}mat-slider{width:100%}.range{display:flex;align-items:center}label{line-height:normal;margin-top:12px;font-weight:500;font-size:12px;color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary));display:flex;justify-content:space-between;align-items:center}.elementInfo{display:flex;align-items:center;justify-content:center;padding:0;height:24px;width:24px}.infoIcon{font-size:16px;height:16px;width:16px}.toggle-label{margin-left:5px;align-items:center;display:flex;font-weight:500;line-height:normal;justify-content:space-between;color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }], deferBlockDependencies: [() => [i2$2.NgForOf, i2$2.NgIf, i2$2.AsyncPipe, import('./ngx-t-forms-selection-options-editor.component-Cg8VpW0u.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-67wrHiYd.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-YNPCGXf7.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component--ueeSVqR.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-B6tNZ162.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-IEocJSHF.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-BN_-yZi7.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-CtKO5o6m.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-D_IRYDOM.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-Cf-bgYEw.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-BDVj1NFN.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-BghPaJ4n.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-Cm59yS0V.mjs').then(m => m.MatChipListEditorComponent), i2$3.MatOption, i2.MatIconButton, i5.MatIcon, i4.MatFormField, i4.MatLabel, i4.MatError, i4.MatSuffix, i7$1.MatSelect, i8.MatTooltip, i5$1.MatInput]] }); }
5459
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: TDynamicDataEditComponent, isStandalone: true, selector: "lib-t-dynamic-data-edit", inputs: { editorConfig: "editorConfig", formInputs: "formInputs", data: "data", validationErrors: "validationErrors" }, outputs: { valueChange: "valueChange", blur: "blur" }, ngImport: i0, template: "@defer {\r\n <ng-container *ngIf=\"( vm$ |async) as vm\" >\r\n\r\n <mat-form-field appearance=\"outline\"\r\n [color]=\"((validationErrors)||[]||[]).length>0 ? 'warn' : 'primary'\"\r\n [floatLabel]=\"'always'\" [subscriptSizing]=\"'dynamic'\"\r\n [hintLabel]=\"vm.editorConfigValue?.hint||''\">\r\n <mat-label> {{ (vm. editorConfigValue)?.label + ((vm. editorConfigValue)?.required ? '*' : '')}} </mat-label>\r\n \r\n @switch ((vm. editorConfigValue)?.editType) {\r\n @default {\r\n <input \r\n (blur)=\"elementBlur($event)\" \r\n (input)=\"inputChange($event)\" \r\n [disabled]=\"(vm.disabled)\"\r\n [value]=\"(vm.value)\" matInput \r\n \r\n [placeholder]=\"(vm. editorConfigValue)?.placeholder ||'Enter value'\">\r\n \r\n \r\n }\r\n @case ( elementEditorTypes.Toggle) {\r\n <lib-mat-slider-toggle-editor \r\n [name]=\"((vm. editorConfigValue)?.name||'') \" \r\n [label]=\"((vm. editorConfigValue)?.label||'')\"\r\n \r\n (valueChange)=\"valueChanged(!!$event)\" [value]=\"(vm.value)\" \r\n [errors]=\"(validationErrors)||[]\">\r\n </lib-mat-slider-toggle-editor>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.Range) {\r\n \r\n \r\n <lib-mat-slider-editor [format]=\"( vm.editorConfigValue)?.format \" [formatLabel]=\" formatLabel\"\r\n [max]=\"( vm.editorConfigValue)?.max || 100\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n [min]=\"( vm.editorConfigValue)?.min || 0\" (valueChange)=\"inputChange($event)\"\r\n [step]=\"( vm.editorConfigValue)?.step || 1\" tickInterval=\"( vm.editorConfigValue)?.step || 1\">\r\n \r\n \r\n </lib-mat-slider-editor>\r\n \r\n \r\n \r\n }\r\n \r\n @case (elementEditorTypes.ChipSelect) {\r\n <lib-mat-chip-list-editor [options]=\"(vm.editorConfigValue)?.options\" [required]=\"!!( vm.editorConfigValue)?.required\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" (valueChange)=\" valueChanged($event)\"></lib-mat-chip-list-editor>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.OptionSelect) {\r\n \r\n <mat-select [value]=\"(vm.value)\" (selectionChange)=\"valueChanged($event.value)\">\r\n @for(option of ( vm.editorConfigValue)?.options;track option.value){\r\n <mat-option [value]=\"option.value\">{{option.label}}</mat-option>\r\n }\r\n </mat-select>\r\n \r\n }\r\n <!--\r\n @case (elementEditorTypes.RichTextEditor) {\r\n <p>\r\n Not implemented yet\r\n </p>\r\n }\r\n --->\r\n \r\n @case (elementEditorTypes.SelectionOptions) {\r\n \r\n <app-selection-options-editor [errors]=\"(validationErrors)||[]\" [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [options]=\"(vm.value) || []\" (valueChanged)=\"valueChanged($event)\"></app-selection-options-editor>\r\n }\r\n \r\n @case (\r\n elementEditorTypes.ApiCall) {\r\n \r\n <lib-rest-api-call-setup \r\n [postmanCollectionConfig]=\"(vm.editorConfigValue)?.postmanCollectionConfig\"\r\n [httpGetDataFunction]=\"(vm.editorConfigValue)?.httpGetDataFunction\"\r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n \r\n </lib-rest-api-call-setup>\r\n }\r\n \r\n @case (elementEditorTypes.MongoPipelineBuilder) {\r\n \r\n <app-pipeline-generator [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" [getWorkflowOptions]=\"getWorkflowOptions$\"\r\n (valueChanged)=\"valueChanged($event)\"></app-pipeline-generator>\r\n \r\n }\r\n @case (elementEditorTypes.ApiValueAccessRules) {\r\n \r\n \r\n \r\n <app-api-value-access-rules \r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" [formInputs]=\"formInputs ||[]\" \r\n [postmanCollectionConfig]=\"(vm.editorConfigValue)?.postmanCollectionConfig\"\r\n \r\n [mapToData]=\"vm.dataOptions\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n </app-api-value-access-rules>\r\n \r\n }\r\n \r\n @case (elementEditorTypes.FormInputSelector)\r\n {\r\n \r\n <lib-form-input-selector [formInputs]=\"formInputs ||[]\" [errors]=\"(validationErrors)||[]\" [value]=\"(vm.value) || []\"\r\n (change)=\"valueChanged($event)\">\r\n </lib-form-input-selector>\r\n }\r\n \r\n @case (\r\n elementEditorTypes.RequiredInputs\r\n ){\r\n \r\n <app-required-inputs [formInputs]=\"formInputs ||[]\" [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" (valueChanged)=\"valueChanged($event)\">\r\n </app-required-inputs>\r\n }\r\n \r\n @case(elementEditorTypes.CalculatedFieldRules){\r\n \r\n <app-calculated-field-rules [formInputs]=\"formInputs ||[]\"\r\n [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\"\r\n (valueChanged)=\"valueChanged($event)\" [mapToData]=\"vm.dataOptions\"></app-calculated-field-rules>\r\n }\r\n \r\n @case(elementEditorTypes.Validators){\r\n \r\n <app-validators-config [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\" [value]=\"(vm.value)\"\r\n [errors]=\"(validationErrors)||[]\" (valueChanged)=\"valueChanged($event)\" [formInputs]=\"formInputs ||[]\"\r\n [mapToData]=\"vm.dataOptions\">\r\n </app-validators-config>\r\n \r\n }\r\n @case(elementEditorTypes.ConfigMscoaSegments){\r\n \r\n <app-mscoa-segment-config [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" [getMscoaTree]=\"getMscoaTree$\"\r\n [showAllSegments]=\"vm.dataOptions\" (valueChanged)=\"valueChanged($event)\"></app-mscoa-segment-config>\r\n }\r\n @case(elementEditorTypes.ConfigMscoaAdditionalInputs){\r\n \r\n <app-config-mscoa-additional-inputs [id]=\"((vm.editorConfigValue)?.label||'')+((vm.editorConfigValue)?.editType||'')\"\r\n [value]=\"(vm.value)\" [errors]=\"(validationErrors)||[]\" [getMscoaTree]=\"getMscoaTree$\"\r\n (valueChanged)=\"valueChanged($event)\">\r\n </app-config-mscoa-additional-inputs>\r\n \r\n }\r\n }\r\n \r\n <button [matTooltip]=\"blurFunctionTooltip((vm.editorConfigValue)?.blurHandle)\" *ngIf=\"(vm.inputHasBlurFunction)\"\r\n [disabled]=\"(vm.disabled)\" [color]=\"blurOff?'':'primary'\" (click)=\"blurOff=!blurOff\" matSuffix\r\n mat-icon-button>\r\n <mat-icon>{{\r\n blurOff?'blur_off':'blur_on'\r\n }}\r\n \r\n \r\n </mat-icon>\r\n </button>\r\n </mat-form-field>\r\n\r\n \r\n <mat-error style=\" font-size: 12px;\r\n margin-left: 14px;\r\n \" *ngFor=\"let error of (validationErrors)||[]\">\r\n \r\n {{error.message}}</mat-error>\r\n \r\n </ng-container>\r\n \r\n}@error {\r\n <mat-card>\r\n <mat-card-content>\r\n \r\n <span> \r\n Failed to load form inputs\r\n </span>\r\n </mat-card-content>\r\n </mat-card>\r\n }\r\n\r\n\r\n\r\n<!-- - \r\n `TableConfigSetup`\r\n- `ConditionalInputConfig`\r\n- `MatrixTable`-->", styles: [".showItemValue{opacity:.6}mat-form-field{width:100%}mat-slider{width:100%}.range{display:flex;align-items:center}label{line-height:normal;margin-top:12px;font-weight:500;font-size:12px;color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary));display:flex;justify-content:space-between;align-items:center}.elementInfo{display:flex;align-items:center;justify-content:center;padding:0;height:24px;width:24px}.infoIcon{font-size:16px;height:16px;width:16px}.toggle-label{margin-left:5px;align-items:center;display:flex;font-weight:500;line-height:normal;justify-content:space-between;color:var(--mdc-filled-text-field-focus-label-text-color, var(--mat-app-primary))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatModulesModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }], deferBlockDependencies: [() => [i2$2.NgForOf, i2$2.NgIf, i2$2.AsyncPipe, import('./ngx-t-forms-selection-options-editor.component-CQh-InJ6.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-DH5GpWKn.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-Cp0BeYD7.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-DdNLYKY6.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-IwmDgCk9.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-C1v-xiGd.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-SyL_Vln8.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-jgXTh0do.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-D_IMC63r.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-DeKGDDuU.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-C2jw_2gf.mjs').then(m => m.MatChipListEditorComponent), i2$3.MatOption, i2.MatIconButton, i5.MatIcon, i4.MatFormField, i4.MatLabel, i4.MatError, i4.MatSuffix, i7$1.MatSelect, i8.MatTooltip, i5$1.MatInput]] }); }
5283
5460
  }
5284
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: TDynamicDataEditComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-selection-options-editor.component-Cg8VpW0u.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-67wrHiYd.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-YNPCGXf7.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component--ueeSVqR.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-B6tNZ162.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-IEocJSHF.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-BN_-yZi7.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-CtKO5o6m.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-D_IRYDOM.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-Cf-bgYEw.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-BDVj1NFN.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-BghPaJ4n.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-Cm59yS0V.mjs').then(m => m.MatChipListEditorComponent)], resolveMetadata: (SelectionOptionsEditorComponent, FormInputSelectorComponent, RestApiCallSetupComponent, ApiValueAccessRulesComponent, RequiredInputsComponent, PipelineGeneratorComponent, CalculatedFieldRulesComponent, ValidatorsConfigComponent, ConfigMscoaAdditionalInputsComponent, MatSliderEditorComponent, MscoaSegmentConfigComponent, MatSliderToggleEditorComponent, MatChipListEditorComponent) => ({ decorators: [{
5461
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: TDynamicDataEditComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-selection-options-editor.component-CQh-InJ6.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-DH5GpWKn.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-Cp0BeYD7.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-DdNLYKY6.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-IwmDgCk9.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-C1v-xiGd.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-SyL_Vln8.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-jgXTh0do.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-D_IMC63r.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-DeKGDDuU.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-C2jw_2gf.mjs').then(m => m.MatChipListEditorComponent)], resolveMetadata: (SelectionOptionsEditorComponent, FormInputSelectorComponent, RestApiCallSetupComponent, ApiValueAccessRulesComponent, RequiredInputsComponent, PipelineGeneratorComponent, CalculatedFieldRulesComponent, ValidatorsConfigComponent, ConfigMscoaAdditionalInputsComponent, MatSliderEditorComponent, MscoaSegmentConfigComponent, MatSliderToggleEditorComponent, MatChipListEditorComponent) => ({ decorators: [{
5285
5462
  type: Component,
5286
5463
  args: [{ selector: 'lib-t-dynamic-data-edit', standalone: true, imports: [CommonModule,
5287
5464
  SelectionOptionsEditorComponent,
@@ -10397,5 +10574,5 @@ console.debug = () => { };
10397
10574
  * Generated bundle index. Do not edit.
10398
10575
  */
10399
10576
 
10400
- export { safeReturnDeepProperty as A, getUrl as B, textIconsForUserHints as C, DaysAgoPipe as D, index as E, FormsStoreService as F, MatModulesModule as M, NGX_T_FORMS_CONFIG_TOKEN as N, PropertyAccessError as P, SyncEditorComponent as S, TDynamicDataEditComponent as T, UTILS_OBJECT_TOKEN as U, _isEqual as _, assignDeepPropertyToObject as a, TDynamicDataViewComponent as b, FormTowerControllerService as c, getSubmissionStatusFn as d, TreeComponent as e, NgxTFormsService as f, getAvatar as g, NgxTFormsComponent as h, initFormConfigToV2 as i, formGenerator as j, FORM_ACTIONS_TOKEN as k, FORM_CONFIG_TOKEN as l, FORM_SLIDES_TOKEN as m, FORM_INPUTS_TOKEN as n, MULTIPLE_FORM_INPUT_TOKEN as o, provideNgxTForms as p, MSCOA_TREE_PROVIDER as q, FormsComponent as r, FormBuilderComponent as s, testAgainstItem as t, MscoaFormInputComponent as u, UserFormStepperComponent as v, TFormInputComponent as w, DialogTemplateComponent as x, SignatureInputElementComponent as y, returnDeepProperty as z };
10401
- //# sourceMappingURL=ngx-t-forms-ngx-t-forms-8hOAg-8v.mjs.map
10577
+ export { safeReturnDeepProperty as A, validateObjectAgainstString as B, getUrl as C, DaysAgoPipe as D, textIconsForUserHints as E, FormsStoreService as F, index as G, MatModulesModule as M, NGX_T_FORMS_CONFIG_TOKEN as N, PropertyAccessError as P, SyncEditorComponent as S, TDynamicDataEditComponent as T, UTILS_OBJECT_TOKEN as U, _isEqual as _, assignDeepPropertyToObject as a, TDynamicDataViewComponent as b, FormTowerControllerService as c, getSubmissionStatusFn as d, TreeComponent as e, NgxTFormsService as f, getAvatar as g, NgxTFormsComponent as h, initFormConfigToV2 as i, formGenerator as j, FORM_ACTIONS_TOKEN as k, FORM_CONFIG_TOKEN as l, FORM_SLIDES_TOKEN as m, FORM_INPUTS_TOKEN as n, MULTIPLE_FORM_INPUT_TOKEN as o, provideNgxTForms as p, MSCOA_TREE_PROVIDER as q, FormsComponent as r, FormBuilderComponent as s, testAgainstItem as t, MscoaFormInputComponent as u, UserFormStepperComponent as v, TFormInputComponent as w, DialogTemplateComponent as x, SignatureInputElementComponent as y, returnDeepProperty as z };
10578
+ //# sourceMappingURL=ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs.map