ngx-t-forms 2.0.3 → 2.0.5

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 (48) hide show
  1. package/fesm2022/{ngx-t-forms-api-value-access-rules.component-CytfuO29.mjs → ngx-t-forms-api-value-access-rules.component-DVxjY46W.mjs} +2 -2
  2. package/fesm2022/{ngx-t-forms-api-value-access-rules.component-CytfuO29.mjs.map → ngx-t-forms-api-value-access-rules.component-DVxjY46W.mjs.map} +1 -1
  3. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-CvLOnB-D.mjs → ngx-t-forms-calculated-field-rules.component-CF0b2IAN.mjs} +3 -3
  4. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-CvLOnB-D.mjs.map → ngx-t-forms-calculated-field-rules.component-CF0b2IAN.mjs.map} +1 -1
  5. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-CTNtAPO2.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-DEDrjICX.mjs} +2 -2
  6. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-CTNtAPO2.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-DEDrjICX.mjs.map} +1 -1
  7. package/fesm2022/{ngx-t-forms-form-input-selector.component-DkD21i0S.mjs → ngx-t-forms-form-input-selector.component-BZLCiTEx.mjs} +2 -2
  8. package/fesm2022/{ngx-t-forms-form-input-selector.component-DkD21i0S.mjs.map → ngx-t-forms-form-input-selector.component-BZLCiTEx.mjs.map} +1 -1
  9. package/fesm2022/{ngx-t-forms-form-json-view.component-DZUXKjEQ.mjs → ngx-t-forms-form-json-view.component-BbPsAiEG.mjs} +2 -2
  10. package/fesm2022/{ngx-t-forms-form-json-view.component-DZUXKjEQ.mjs.map → ngx-t-forms-form-json-view.component-BbPsAiEG.mjs.map} +1 -1
  11. package/fesm2022/{ngx-t-forms-form-section-stepper.component-B1WsRH_V.mjs → ngx-t-forms-form-section-stepper.component-BYli3qzy.mjs} +4 -4
  12. package/fesm2022/{ngx-t-forms-form-section-stepper.component-B1WsRH_V.mjs.map → ngx-t-forms-form-section-stepper.component-BYli3qzy.mjs.map} +1 -1
  13. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-CD38wT-7.mjs → ngx-t-forms-forms-builder-menu.component-beIiFQyM.mjs} +4 -4
  14. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-CD38wT-7.mjs.map → ngx-t-forms-forms-builder-menu.component-beIiFQyM.mjs.map} +1 -1
  15. package/fesm2022/ngx-t-forms-input-editor.component-CItOFrvx.mjs +280 -0
  16. package/fesm2022/ngx-t-forms-input-editor.component-CItOFrvx.mjs.map +1 -0
  17. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-5qwlGB0u.mjs → ngx-t-forms-mat-chip-list-editor.component-D1jGY0Wp.mjs} +2 -2
  18. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-5qwlGB0u.mjs.map → ngx-t-forms-mat-chip-list-editor.component-D1jGY0Wp.mjs.map} +1 -1
  19. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-XCU9hPdy.mjs → ngx-t-forms-mat-slider-editor.component-bDCnls3E.mjs} +2 -2
  20. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-XCU9hPdy.mjs.map → ngx-t-forms-mat-slider-editor.component-bDCnls3E.mjs.map} +1 -1
  21. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-CQsL9H0c.mjs → ngx-t-forms-mat-slider-toggle-editor.component-C7q7RAhA.mjs} +2 -2
  22. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-CQsL9H0c.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-C7q7RAhA.mjs.map} +1 -1
  23. package/fesm2022/{ngx-t-forms-missing-form-configs.component-BqcHRWNR.mjs → ngx-t-forms-missing-form-configs.component-kdu_ar17.mjs} +2 -2
  24. package/fesm2022/{ngx-t-forms-missing-form-configs.component-BqcHRWNR.mjs.map → ngx-t-forms-missing-form-configs.component-kdu_ar17.mjs.map} +1 -1
  25. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-CqUdqEen.mjs → ngx-t-forms-mscoa-segment-config.component-B80B7Y2g.mjs} +2 -2
  26. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-CqUdqEen.mjs.map → ngx-t-forms-mscoa-segment-config.component-B80B7Y2g.mjs.map} +1 -1
  27. package/fesm2022/{ngx-t-forms-ngx-t-forms-DeOqfmLd.mjs → ngx-t-forms-ngx-t-forms-BIKaG6Gx.mjs} +28 -149
  28. package/fesm2022/ngx-t-forms-ngx-t-forms-BIKaG6Gx.mjs.map +1 -0
  29. package/fesm2022/{ngx-t-forms-pipeline-generator.component-DW5oPviS.mjs → ngx-t-forms-pipeline-generator.component-CZRBVUb4.mjs} +2 -2
  30. package/fesm2022/{ngx-t-forms-pipeline-generator.component-DW5oPviS.mjs.map → ngx-t-forms-pipeline-generator.component-CZRBVUb4.mjs.map} +1 -1
  31. package/fesm2022/{ngx-t-forms-required-inputs.component-hPIZYUEj.mjs → ngx-t-forms-required-inputs.component-CnRGUtEj.mjs} +2 -2
  32. package/fesm2022/{ngx-t-forms-required-inputs.component-hPIZYUEj.mjs.map → ngx-t-forms-required-inputs.component-CnRGUtEj.mjs.map} +1 -1
  33. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-B1XSgNdh.mjs → ngx-t-forms-rest-api-call-setup.component-C_zsy4Pr.mjs} +2 -2
  34. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-B1XSgNdh.mjs.map → ngx-t-forms-rest-api-call-setup.component-C_zsy4Pr.mjs.map} +1 -1
  35. package/fesm2022/{ngx-t-forms-section-report.component-L-27MDZb.mjs → ngx-t-forms-section-report.component-y45ZmKLZ.mjs} +2 -2
  36. package/fesm2022/{ngx-t-forms-section-report.component-L-27MDZb.mjs.map → ngx-t-forms-section-report.component-y45ZmKLZ.mjs.map} +1 -1
  37. package/fesm2022/{ngx-t-forms-selection-options-editor.component-0zGHmmzU.mjs → ngx-t-forms-selection-options-editor.component-CKdTcvyb.mjs} +2 -2
  38. package/fesm2022/{ngx-t-forms-selection-options-editor.component-0zGHmmzU.mjs.map → ngx-t-forms-selection-options-editor.component-CKdTcvyb.mjs.map} +1 -1
  39. package/fesm2022/{ngx-t-forms-validators-config.component-WX30Ybz_.mjs → ngx-t-forms-validators-config.component-CTUwEJKh.mjs} +3 -3
  40. package/fesm2022/{ngx-t-forms-validators-config.component-WX30Ybz_.mjs.map → ngx-t-forms-validators-config.component-CTUwEJKh.mjs.map} +1 -1
  41. package/fesm2022/ngx-t-forms.mjs +1 -1
  42. package/lib/components/form-builder/elements/input-element-editor/input-element-editor.component.d.ts +5 -3
  43. package/lib/components/forms/store/Form-selectors-FormBuilder.d.ts +0 -12
  44. package/lib/components/forms/store/forms-store.service.d.ts +0 -12
  45. package/package.json +1 -1
  46. package/fesm2022/ngx-t-forms-input-editor.component-Bh-Dz5yu.mjs +0 -148
  47. package/fesm2022/ngx-t-forms-input-editor.component-Bh-Dz5yu.mjs.map +0 -1
  48. package/fesm2022/ngx-t-forms-ngx-t-forms-DeOqfmLd.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, InjectionToken, makeEnvironmentProviders, inject, Inject, Directive, NgModule, Input, Pipe, EventEmitter, Output, ViewChild, Optional, Self, ChangeDetectionStrategy, ViewEncapsulation, forwardRef } from '@angular/core';
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';
3
+ import { DataSources, formColumnInputsSchema, ElementTypes, validateCalculatedFieldRules, CalculationFunctions, MinInputTypes, InputDataTypes, FormSubmissionStatus, validateForm, FormListSection, FormStateErrors, DefaultInputConfig, validateFormSlide, validateFormColumnInputsWithRequired, BlurHandleTypes, AllFormInputPrimaryKeys, ElementEditorTypes, 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
6
  import ExpressionValidator from 'stringtoobjectvalidator';
@@ -3504,146 +3504,6 @@ function missingConfig(form) {
3504
3504
  }
3505
3505
  }
3506
3506
 
3507
- function testAgainstItem(test, item) {
3508
- try {
3509
- const testValue = test.deepBind ? safeReturnDeepProperty(item, test.deepBind || [])?.value : item;
3510
- const key = test.deepBind ? test.deepBind[test.deepBind.length - 1] : '';
3511
- const objectValue = test.deepBind ? { [key || '']: testValue } : testValue;
3512
- if (test.expression) {
3513
- return ExpressionValidator(test.expression, objectValue);
3514
- }
3515
- if (test.testType === 'exists') {
3516
- return test.testType === 'exists' && testValue !== '' && testValue !== undefined;
3517
- }
3518
- if (test.testType === 'equalTo') {
3519
- return testValue === test.valueMatch;
3520
- }
3521
- return false;
3522
- }
3523
- catch (error) {
3524
- return false;
3525
- }
3526
- }
3527
-
3528
- ;
3529
- function inputElementEditorConfigs(form, inputInEdit, NGX_T_FORMS_CONFIG, utils) {
3530
- try {
3531
- const config = getElementEditorConfig;
3532
- const errors = inputInEditValidationErrors(form, inputInEdit);
3533
- return {
3534
- ...config,
3535
- editorSections: config.editorSections.map(section => ({
3536
- ...section,
3537
- elements: getSectionElements(section.elements, inputInEdit, NGX_T_FORMS_CONFIG, utils, errors),
3538
- hasErrors: section.elements.some(el => errors.some(err => err.key === el.deepBind?.join('.')))
3539
- }))
3540
- };
3541
- }
3542
- catch (error) {
3543
- const message = error instanceof Error ? error.message : 'Failed to configure columns';
3544
- throw new Error(message);
3545
- }
3546
- }
3547
- function getSectionElements(elements, inputInEdit, NGX_T_FORMS_CONFIG, utils, errors = []) {
3548
- try {
3549
- const defaultInputs = { ...DefaultInputConfig };
3550
- if (!inputInEdit)
3551
- return [];
3552
- const defaultInput = defaultInputs[inputInEdit?.element];
3553
- return elements
3554
- .map(el => processElement(el, inputInEdit, NGX_T_FORMS_CONFIG, utils, errors))
3555
- .filter(el => isElementApplicable(inputInEdit, defaultInput?.properties, el));
3556
- }
3557
- catch (err) {
3558
- console.error('Error processing section elements:', err);
3559
- return [];
3560
- }
3561
- }
3562
- function processElement(element, inputInEdit, NGX_T_FORMS_CONFIG, utils, errors = []) {
3563
- const defaultInputs = { ...DefaultInputConfig };
3564
- if (!inputInEdit)
3565
- return [];
3566
- const defaultInput = defaultInputs[inputInEdit?.element];
3567
- return {
3568
- ...element,
3569
- computedErrors: computedErrors(element, errors),
3570
- required: defaultInput?.requiredProperties?.includes(element.name),
3571
- postmanCollectionConfig: getPostmanConfig(element, NGX_T_FORMS_CONFIG),
3572
- httpGetDataFunction: utils.httpGetDataFunction.bind(utils),
3573
- getWorkflowOptions: element.editType === ElementEditorTypes.MongoPipelineBuilder ?
3574
- NGX_T_FORMS_CONFIG.formBuilder.workflows() :
3575
- undefined,
3576
- getMscoaTree: element.editType === ElementEditorTypes.ConfigMscoaSegments ?
3577
- NGX_T_FORMS_CONFIG.formBuilder.getScoaTree() :
3578
- undefined
3579
- };
3580
- }
3581
- ;
3582
- function getPostmanConfig(element, NGX_T_FORMS_CONFIG) {
3583
- if (![ElementEditorTypes.ApiCall, ElementEditorTypes.ApiValueAccessRules].includes(element.editType)) {
3584
- return undefined;
3585
- }
3586
- return {
3587
- collectionUrl: String(NGX_T_FORMS_CONFIG['POSTMAN_COLLECTION_URL'] || ''),
3588
- collectionKey: String(NGX_T_FORMS_CONFIG['POSTMAN_COLLECTION_KEY'] || '')
3589
- };
3590
- }
3591
- function isElementApplicable(input, inputProperties, element) {
3592
- const { name, additionalTest } = element;
3593
- const isDefault = name === SpecialElementKeys.Default;
3594
- if (!!isDefault && !additionalTest)
3595
- return true;
3596
- // Check property inclusion
3597
- const isInputProperty = inputProperties?.includes(name);
3598
- if (!isInputProperty && !isDefault)
3599
- return false;
3600
- // Execute additional tests
3601
- return additionalTest ?
3602
- additionalTest.every(test => testAgainstItem(test, input)) :
3603
- !!isInputProperty;
3604
- }
3605
- ;
3606
- function inputInEditValidationErrors(form, inputInEdit) {
3607
- try {
3608
- const defaultInputs = { ...DefaultInputConfig };
3609
- let allInputs = form?.slides?.flatMap(slide => slide.columns) || [];
3610
- const parentInput = allInputs.find(input => input.id === inputInEdit?.multipleInputInEditId);
3611
- if (!inputInEdit || !inputInEdit.element)
3612
- return [];
3613
- const editingNewInput = !inputInEdit?.id;
3614
- if (!editingNewInput) {
3615
- return validateFormColumnInputsWithRequired({
3616
- data: inputInEdit,
3617
- requiredKeys: (defaultInputs[inputInEdit.element]?.requiredProperties || [])
3618
- });
3619
- }
3620
- // Improved duplicate check logic
3621
- const isDuplicateFormControl = () => {
3622
- if (!inputInEdit.formControlName)
3623
- return false;
3624
- if (parentInput) {
3625
- return parentInput.formInputs?.some(input => input.formControlName === inputInEdit.formControlName) || false;
3626
- }
3627
- return allInputs.some(input => input.formControlName === inputInEdit.formControlName);
3628
- };
3629
- const duplicateError = isDuplicateFormControl()
3630
- ? [{ key: 'formControlName', message: 'Form control name must be unique' }]
3631
- : [];
3632
- return [...duplicateError, ...validateFormColumnInputsWithRequired({
3633
- data: inputInEdit,
3634
- requiredKeys: (defaultInputs[inputInEdit.element]?.requiredProperties || [])
3635
- })];
3636
- }
3637
- catch (error) {
3638
- const msg = error instanceof Error ? error.message : 'Failed to check form config';
3639
- throw new Error(msg);
3640
- }
3641
- }
3642
- function computedErrors(element, allErrors) {
3643
- const errors = allErrors?.filter(error => error.key === element.deepBind?.join('.'));
3644
- return [...[], ...errors];
3645
- }
3646
-
3647
3507
  ;
3648
3508
  ;
3649
3509
  function formsFormBuilderStoreSelectors(store) {
@@ -3708,7 +3568,6 @@ function formsFormBuilderStoreSelectors(store) {
3708
3568
  }));
3709
3569
  const selectFormTitle$ = selectFormInEdit$.pipe(map((form) => form?.formTitle));
3710
3570
  const getAllFormInputs$ = selectFormInEdit$.pipe(map((form) => form?.slides.flatMap(slide => slide.columns) || []));
3711
- const inputElementEditorConfigs$ = inputInEdit$.pipe(switchMap((inputInEdit) => selectFormInEdit$.pipe(map(form => inputElementEditorConfigs(form, inputInEdit, store.NGX_T_FORMS_CONFIG, store.utils)))));
3712
3571
  return {
3713
3572
  selectFormSlides$,
3714
3573
  missingConfig$,
@@ -3722,7 +3581,6 @@ function formsFormBuilderStoreSelectors(store) {
3722
3581
  inputInEditValidationErrors$,
3723
3582
  selectFormTitle$,
3724
3583
  getAllFormInputs$,
3725
- inputElementEditorConfigs$,
3726
3584
  selectFormSlideSections$
3727
3585
  };
3728
3586
  }
@@ -4925,9 +4783,9 @@ class FormBuilderComponent {
4925
4783
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4926
4784
  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: [
4927
4785
  FormsStoreService
4928
- ], 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-CD38wT-7.mjs').then(m => m.FormsBuilderMenuComponent)], () => [i2$1.CdkDrag, i7.MatProgressSpinner, import('./ngx-t-forms-input-editor.component-Bh-Dz5yu.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-B1WsRH_V.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-BqcHRWNR.mjs').then(m => m.MissingFormConfigsComponent)]] }); }
4786
+ ], 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-beIiFQyM.mjs').then(m => m.FormsBuilderMenuComponent)], () => [i2$1.CdkDrag, i7.MatProgressSpinner, import('./ngx-t-forms-input-editor.component-CItOFrvx.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-BYli3qzy.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-kdu_ar17.mjs').then(m => m.MissingFormConfigsComponent)]] }); }
4929
4787
  }
4930
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-forms-builder-menu.component-CD38wT-7.mjs').then(m => m.FormsBuilderMenuComponent), import('./ngx-t-forms-input-editor.component-Bh-Dz5yu.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-B1WsRH_V.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-BqcHRWNR.mjs').then(m => m.MissingFormConfigsComponent)], resolveMetadata: (FormsBuilderMenuComponent, InputEditorComponent, FormSectionStepperComponent, MissingFormConfigsComponent) => ({ decorators: [{
4788
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-forms-builder-menu.component-beIiFQyM.mjs').then(m => m.FormsBuilderMenuComponent), import('./ngx-t-forms-input-editor.component-CItOFrvx.mjs').then(m => m.InputEditorComponent), import('./ngx-t-forms-form-section-stepper.component-BYli3qzy.mjs').then(m => m.FormSectionStepperComponent), import('./ngx-t-forms-missing-form-configs.component-kdu_ar17.mjs').then(m => m.MissingFormConfigsComponent)], resolveMetadata: (FormsBuilderMenuComponent, InputEditorComponent, FormSectionStepperComponent, MissingFormConfigsComponent) => ({ decorators: [{
4931
4789
  type: Component,
4932
4790
  args: [{ selector: 'app-form-builder', standalone: true, imports: [CommonModule,
4933
4791
  MatModulesModule,
@@ -5101,6 +4959,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
5101
4959
  args: [DOCUMENT]
5102
4960
  }] }] });
5103
4961
 
4962
+ function testAgainstItem(test, item) {
4963
+ try {
4964
+ const testValue = test.deepBind ? safeReturnDeepProperty(item, test.deepBind || [])?.value : item;
4965
+ const key = test.deepBind ? test.deepBind[test.deepBind.length - 1] : '';
4966
+ const objectValue = test.deepBind ? { [key || '']: testValue } : testValue;
4967
+ if (test.expression) {
4968
+ return ExpressionValidator(test.expression, objectValue);
4969
+ }
4970
+ if (test.testType === 'exists') {
4971
+ return test.testType === 'exists' && testValue !== '' && testValue !== undefined;
4972
+ }
4973
+ if (test.testType === 'equalTo') {
4974
+ return testValue === test.valueMatch;
4975
+ }
4976
+ return false;
4977
+ }
4978
+ catch (error) {
4979
+ return false;
4980
+ }
4981
+ }
4982
+
5104
4983
  class TDynamicDataEditComponent {
5105
4984
  constructor(ngZone) {
5106
4985
  this.ngZone = ngZone;
@@ -5268,9 +5147,9 @@ class TDynamicDataEditComponent {
5268
5147
  }
5269
5148
  }
5270
5149
  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 }); }
5271
- 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-0zGHmmzU.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-DkD21i0S.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-B1XSgNdh.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-CytfuO29.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-hPIZYUEj.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-DW5oPviS.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-CvLOnB-D.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-WX30Ybz_.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-CTNtAPO2.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-XCU9hPdy.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-CqUdqEen.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-CQsL9H0c.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-5qwlGB0u.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]] }); }
5150
+ 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-CKdTcvyb.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-BZLCiTEx.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-C_zsy4Pr.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-DVxjY46W.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-CnRGUtEj.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-CZRBVUb4.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-CF0b2IAN.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-CTUwEJKh.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-DEDrjICX.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-bDCnls3E.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-B80B7Y2g.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-C7q7RAhA.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-D1jGY0Wp.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]] }); }
5272
5151
  }
5273
- i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: TDynamicDataEditComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-selection-options-editor.component-0zGHmmzU.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-DkD21i0S.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-B1XSgNdh.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-CytfuO29.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-hPIZYUEj.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-DW5oPviS.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-CvLOnB-D.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-WX30Ybz_.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-CTNtAPO2.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-XCU9hPdy.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-CqUdqEen.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-CQsL9H0c.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-5qwlGB0u.mjs').then(m => m.MatChipListEditorComponent)], resolveMetadata: (SelectionOptionsEditorComponent, FormInputSelectorComponent, RestApiCallSetupComponent, ApiValueAccessRulesComponent, RequiredInputsComponent, PipelineGeneratorComponent, CalculatedFieldRulesComponent, ValidatorsConfigComponent, ConfigMscoaAdditionalInputsComponent, MatSliderEditorComponent, MscoaSegmentConfigComponent, MatSliderToggleEditorComponent, MatChipListEditorComponent) => ({ decorators: [{
5152
+ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "19.2.2", ngImport: i0, type: TDynamicDataEditComponent, resolveDeferredDeps: () => [import('./ngx-t-forms-selection-options-editor.component-CKdTcvyb.mjs').then(m => m.SelectionOptionsEditorComponent), import('./ngx-t-forms-form-input-selector.component-BZLCiTEx.mjs').then(m => m.FormInputSelectorComponent), import('./ngx-t-forms-rest-api-call-setup.component-C_zsy4Pr.mjs').then(m => m.RestApiCallSetupComponent), import('./ngx-t-forms-api-value-access-rules.component-DVxjY46W.mjs').then(m => m.ApiValueAccessRulesComponent), import('./ngx-t-forms-required-inputs.component-CnRGUtEj.mjs').then(m => m.RequiredInputsComponent), import('./ngx-t-forms-pipeline-generator.component-CZRBVUb4.mjs').then(m => m.PipelineGeneratorComponent), import('./ngx-t-forms-calculated-field-rules.component-CF0b2IAN.mjs').then(m => m.CalculatedFieldRulesComponent), import('./ngx-t-forms-validators-config.component-CTUwEJKh.mjs').then(m => m.ValidatorsConfigComponent), import('./ngx-t-forms-config-mscoa-additional-inputs.component-DEDrjICX.mjs').then(m => m.ConfigMscoaAdditionalInputsComponent), import('./ngx-t-forms-mat-slider-editor.component-bDCnls3E.mjs').then(m => m.MatSliderEditorComponent), import('./ngx-t-forms-mscoa-segment-config.component-B80B7Y2g.mjs').then(m => m.MscoaSegmentConfigComponent), import('./ngx-t-forms-mat-slider-toggle-editor.component-C7q7RAhA.mjs').then(m => m.MatSliderToggleEditorComponent), import('./ngx-t-forms-mat-chip-list-editor.component-D1jGY0Wp.mjs').then(m => m.MatChipListEditorComponent)], resolveMetadata: (SelectionOptionsEditorComponent, FormInputSelectorComponent, RestApiCallSetupComponent, ApiValueAccessRulesComponent, RequiredInputsComponent, PipelineGeneratorComponent, CalculatedFieldRulesComponent, ValidatorsConfigComponent, ConfigMscoaAdditionalInputsComponent, MatSliderEditorComponent, MscoaSegmentConfigComponent, MatSliderToggleEditorComponent, MatChipListEditorComponent) => ({ decorators: [{
5274
5153
  type: Component,
5275
5154
  args: [{ selector: 'lib-t-dynamic-data-edit', standalone: true, imports: [CommonModule,
5276
5155
  SelectionOptionsEditorComponent,
@@ -10386,5 +10265,5 @@ console.debug = () => { };
10386
10265
  * Generated bundle index. Do not edit.
10387
10266
  */
10388
10267
 
10389
- 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, 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 };
10390
- //# sourceMappingURL=ngx-t-forms-ngx-t-forms-DeOqfmLd.mjs.map
10268
+ export { returnDeepProperty as A, safeReturnDeepProperty 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, returnAnyFormInputFromForm as r, FormsComponent as s, testAgainstItem as t, FormBuilderComponent as u, MscoaFormInputComponent as v, UserFormStepperComponent as w, TFormInputComponent as x, DialogTemplateComponent as y, SignatureInputElementComponent as z };
10269
+ //# sourceMappingURL=ngx-t-forms-ngx-t-forms-BIKaG6Gx.mjs.map