ngx-t-forms 2.0.5 → 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 (50) hide show
  1. package/fesm2022/{ngx-t-forms-api-value-access-rules.component-DVxjY46W.mjs → ngx-t-forms-api-value-access-rules.component-Cp0BeYD7.mjs} +2 -2
  2. package/fesm2022/{ngx-t-forms-api-value-access-rules.component-DVxjY46W.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-CF0b2IAN.mjs → ngx-t-forms-calculated-field-rules.component-C1v-xiGd.mjs} +3 -3
  4. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-CF0b2IAN.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-DEDrjICX.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-jgXTh0do.mjs} +2 -2
  6. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-DEDrjICX.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-BZLCiTEx.mjs → ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs} +2 -2
  8. package/fesm2022/{ngx-t-forms-form-input-selector.component-BZLCiTEx.mjs.map → ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs.map} +1 -1
  9. package/fesm2022/{ngx-t-forms-form-json-view.component-BbPsAiEG.mjs → ngx-t-forms-form-json-view.component-DSnLKnfH.mjs} +2 -2
  10. package/fesm2022/{ngx-t-forms-form-json-view.component-BbPsAiEG.mjs.map → ngx-t-forms-form-json-view.component-DSnLKnfH.mjs.map} +1 -1
  11. package/fesm2022/{ngx-t-forms-form-section-stepper.component-BYli3qzy.mjs → ngx-t-forms-form-section-stepper.component-hnOcnZGc.mjs} +4 -4
  12. package/fesm2022/{ngx-t-forms-form-section-stepper.component-BYli3qzy.mjs.map → ngx-t-forms-form-section-stepper.component-hnOcnZGc.mjs.map} +1 -1
  13. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-beIiFQyM.mjs → ngx-t-forms-forms-builder-menu.component-DQ8JYw6g.mjs} +4 -4
  14. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-beIiFQyM.mjs.map → ngx-t-forms-forms-builder-menu.component-DQ8JYw6g.mjs.map} +1 -1
  15. package/fesm2022/{ngx-t-forms-input-editor.component-CItOFrvx.mjs → ngx-t-forms-input-editor.component-Gi9MgyHB.mjs} +7 -137
  16. package/fesm2022/ngx-t-forms-input-editor.component-Gi9MgyHB.mjs.map +1 -0
  17. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-D1jGY0Wp.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-D1jGY0Wp.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-bDCnls3E.mjs → ngx-t-forms-mat-slider-editor.component-D_IMC63r.mjs} +2 -2
  20. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-bDCnls3E.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-C7q7RAhA.mjs → ngx-t-forms-mat-slider-toggle-editor.component-DeKGDDuU.mjs} +2 -2
  22. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-C7q7RAhA.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-kdu_ar17.mjs → ngx-t-forms-missing-form-configs.component-BvsopeCg.mjs} +2 -2
  24. package/fesm2022/{ngx-t-forms-missing-form-configs.component-kdu_ar17.mjs.map → ngx-t-forms-missing-form-configs.component-BvsopeCg.mjs.map} +1 -1
  25. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-B80B7Y2g.mjs → ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs} +2 -2
  26. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-B80B7Y2g.mjs.map → ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs.map} +1 -1
  27. package/fesm2022/{ngx-t-forms-ngx-t-forms-BIKaG6Gx.mjs → ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs} +342 -33
  28. package/fesm2022/ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs.map +1 -0
  29. package/fesm2022/{ngx-t-forms-pipeline-generator.component-CZRBVUb4.mjs → ngx-t-forms-pipeline-generator.component-IwmDgCk9.mjs} +2 -2
  30. package/fesm2022/{ngx-t-forms-pipeline-generator.component-CZRBVUb4.mjs.map → ngx-t-forms-pipeline-generator.component-IwmDgCk9.mjs.map} +1 -1
  31. package/fesm2022/{ngx-t-forms-required-inputs.component-CnRGUtEj.mjs → ngx-t-forms-required-inputs.component-DdNLYKY6.mjs} +2 -2
  32. package/fesm2022/{ngx-t-forms-required-inputs.component-CnRGUtEj.mjs.map → ngx-t-forms-required-inputs.component-DdNLYKY6.mjs.map} +1 -1
  33. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-C_zsy4Pr.mjs → ngx-t-forms-rest-api-call-setup.component-DH5GpWKn.mjs} +2 -2
  34. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-C_zsy4Pr.mjs.map → ngx-t-forms-rest-api-call-setup.component-DH5GpWKn.mjs.map} +1 -1
  35. package/fesm2022/{ngx-t-forms-section-report.component-y45ZmKLZ.mjs → ngx-t-forms-section-report.component-BAddUET-.mjs} +2 -2
  36. package/fesm2022/{ngx-t-forms-section-report.component-y45ZmKLZ.mjs.map → ngx-t-forms-section-report.component-BAddUET-.mjs.map} +1 -1
  37. package/fesm2022/{ngx-t-forms-selection-options-editor.component-CKdTcvyb.mjs → ngx-t-forms-selection-options-editor.component-CQh-InJ6.mjs} +2 -2
  38. package/fesm2022/{ngx-t-forms-selection-options-editor.component-CKdTcvyb.mjs.map → ngx-t-forms-selection-options-editor.component-CQh-InJ6.mjs.map} +1 -1
  39. package/fesm2022/{ngx-t-forms-validators-config.component-CTUwEJKh.mjs → ngx-t-forms-validators-config.component-SyL_Vln8.mjs} +3 -3
  40. package/fesm2022/{ngx-t-forms-validators-config.component-CTUwEJKh.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/form-builder/elements/input-element-editor/input-element-editor.component.d.ts +3 -5
  43. package/lib/components/forms/store/Form-selectors-FormBuilder.d.ts +12 -0
  44. package/lib/components/forms/store/forms-store.service.d.ts +12 -0
  45. package/lib/components/t-form-input/elements/mscoa-form-input/mscoa-form-input.component.d.ts +1 -2
  46. package/lib/shared/index.d.ts +2 -1
  47. package/lib/shared/modules/stringJsonValidator/getObjectValidations.d.ts +15 -0
  48. package/package.json +1 -2
  49. package/fesm2022/ngx-t-forms-input-editor.component-CItOFrvx.mjs.map +0 -1
  50. package/fesm2022/ngx-t-forms-ngx-t-forms-BIKaG6Gx.mjs.map +0 -1
@@ -1,9 +1,8 @@
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, DefaultInputConfig, validateFormSlide, validateFormColumnInputsWithRequired, BlurHandleTypes, AllFormInputPrimaryKeys, ElementEditorTypes, AllDocumentFileExtensions, AllImageFileExtensions, InputFileType, UploadTypes, InputTypes, AutocapitalizeOptions } from 'ngx-t-forms-types';
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) => {
@@ -3504,6 +3675,163 @@ function missingConfig(form) {
3504
3675
  }
3505
3676
  }
3506
3677
 
3678
+ function testAgainstItem(test, item) {
3679
+ try {
3680
+ const testValue = test.deepBind ? safeReturnDeepProperty(item, test.deepBind || [])?.value : item;
3681
+ const key = test.deepBind ? test.deepBind[test.deepBind.length - 1] : '';
3682
+ const objectValue = test.deepBind ? { [key || '']: testValue } : testValue;
3683
+ if (test.expression) {
3684
+ try {
3685
+ return validateObjectAgainstString(test.expression, objectValue);
3686
+ }
3687
+ catch (error) {
3688
+ console.error(error);
3689
+ return false;
3690
+ }
3691
+ }
3692
+ if (test.testType === 'exists') {
3693
+ return test.testType === 'exists' && testValue !== '' && testValue !== undefined;
3694
+ }
3695
+ if (test.testType === 'equalTo') {
3696
+ return testValue === test.valueMatch;
3697
+ }
3698
+ return false;
3699
+ }
3700
+ catch (error) {
3701
+ return false;
3702
+ }
3703
+ }
3704
+
3705
+ ;
3706
+ function inputElementEditorConfigs(form, inputInEdit, NGX_T_FORMS_CONFIG, utils) {
3707
+ try {
3708
+ // Get base configuration
3709
+ const config = getElementEditorConfig;
3710
+ // Get validation errors for the input being edited
3711
+ const errors = inputInEditValidationErrors(form, inputInEdit);
3712
+ // Create a completely new configuration object (for change detection)
3713
+ return {
3714
+ ...config, // Copy all base properties
3715
+ // Create new array with new section objects
3716
+ editorSections: config.editorSections.map(section => {
3717
+ const elements = getSectionElements(section.elements, inputInEdit, NGX_T_FORMS_CONFIG, utils, errors);
3718
+ // Check if any element in this section has errors
3719
+ const hasErrors = section.elements.some(el => errors.some(err => err.key === el.deepBind?.join('.')));
3720
+ return ({
3721
+ ...section,
3722
+ elements: [...[], ...elements],
3723
+ hasErrors
3724
+ });
3725
+ })
3726
+ };
3727
+ }
3728
+ catch (error) {
3729
+ const message = error instanceof Error ? error.message : 'Failed to configure columns';
3730
+ throw new Error(message);
3731
+ }
3732
+ }
3733
+ function getSectionElements(elements, inputInEdit, NGX_T_FORMS_CONFIG, utils, errors = []) {
3734
+ try {
3735
+ const defaultInputs = { ...DefaultInputConfig };
3736
+ if (!inputInEdit)
3737
+ return [];
3738
+ const defaultInput = defaultInputs[inputInEdit?.element];
3739
+ const processedElements = elements
3740
+ .map(el => processElement(el, inputInEdit, NGX_T_FORMS_CONFIG, utils, errors));
3741
+ const filteredElements = processedElements.filter(el => isElementApplicable(inputInEdit, defaultInput?.properties, el));
3742
+ console.error('%c Form Element Editor Debug Info ', 'background: #ff0000; color: white; font-weight: bold; padding: 2px;', '\n\nFiltered Elements:', filteredElements, '\n\nProcessed Elements:', processedElements, '\n\nInput Being Edited:', inputInEdit, '\n\nDefault Input Config:', defaultInputs[inputInEdit?.element], '\n\nElements Removed:', processedElements.filter(el => !filteredElements.includes(el)));
3743
+ return filteredElements;
3744
+ }
3745
+ catch (err) {
3746
+ console.error('Error processing section elements:', err);
3747
+ return [];
3748
+ }
3749
+ }
3750
+ function processElement(element, inputInEdit, NGX_T_FORMS_CONFIG, utils, errors = []) {
3751
+ const defaultInputs = { ...DefaultInputConfig };
3752
+ if (!inputInEdit)
3753
+ return [];
3754
+ const defaultInput = defaultInputs[inputInEdit?.element];
3755
+ return {
3756
+ ...element,
3757
+ computedErrors: computedErrors(element, errors),
3758
+ required: defaultInput?.requiredProperties?.includes(element.name),
3759
+ postmanCollectionConfig: getPostmanConfig(element, NGX_T_FORMS_CONFIG),
3760
+ httpGetDataFunction: utils.httpGetDataFunction.bind(utils),
3761
+ getWorkflowOptions: element.editType === ElementEditorTypes.MongoPipelineBuilder ?
3762
+ NGX_T_FORMS_CONFIG.formBuilder.workflows() :
3763
+ undefined,
3764
+ getMscoaTree: element.editType === ElementEditorTypes.ConfigMscoaSegments ?
3765
+ NGX_T_FORMS_CONFIG.formBuilder.getScoaTree() :
3766
+ undefined
3767
+ };
3768
+ }
3769
+ ;
3770
+ function getPostmanConfig(element, NGX_T_FORMS_CONFIG) {
3771
+ if (![ElementEditorTypes.ApiCall, ElementEditorTypes.ApiValueAccessRules].includes(element.editType)) {
3772
+ return undefined;
3773
+ }
3774
+ return {
3775
+ collectionUrl: String(NGX_T_FORMS_CONFIG['POSTMAN_COLLECTION_URL'] || ''),
3776
+ collectionKey: String(NGX_T_FORMS_CONFIG['POSTMAN_COLLECTION_KEY'] || '')
3777
+ };
3778
+ }
3779
+ function isElementApplicable(input, inputProperties, element) {
3780
+ const { name, additionalTest } = element;
3781
+ const isDefault = name === SpecialElementKeys.Default;
3782
+ if (!!isDefault && !additionalTest)
3783
+ return true;
3784
+ // Check property inclusion
3785
+ const isInputProperty = inputProperties?.includes(name);
3786
+ if (!isInputProperty && !isDefault)
3787
+ return false;
3788
+ // Execute additional tests
3789
+ return additionalTest ?
3790
+ additionalTest.every(test => testAgainstItem(test, input)) :
3791
+ !!isInputProperty;
3792
+ }
3793
+ ;
3794
+ function inputInEditValidationErrors(form, inputInEdit) {
3795
+ try {
3796
+ const defaultInputs = { ...DefaultInputConfig };
3797
+ let allInputs = form?.slides?.flatMap(slide => slide.columns) || [];
3798
+ const parentInput = allInputs.find(input => input.id === inputInEdit?.multipleInputInEditId);
3799
+ if (!inputInEdit || !inputInEdit.element)
3800
+ return [];
3801
+ const editingNewInput = !inputInEdit?.id;
3802
+ if (!editingNewInput) {
3803
+ return validateFormColumnInputsWithRequired({
3804
+ data: inputInEdit,
3805
+ requiredKeys: (defaultInputs[inputInEdit.element]?.requiredProperties || [])
3806
+ });
3807
+ }
3808
+ // Improved duplicate check logic
3809
+ const isDuplicateFormControl = () => {
3810
+ if (!inputInEdit.formControlName)
3811
+ return false;
3812
+ if (parentInput) {
3813
+ return parentInput.formInputs?.some(input => input.formControlName === inputInEdit.formControlName) || false;
3814
+ }
3815
+ return allInputs.some(input => input.formControlName === inputInEdit.formControlName);
3816
+ };
3817
+ const duplicateError = isDuplicateFormControl()
3818
+ ? [{ key: 'formControlName', message: 'Form control name must be unique' }]
3819
+ : [];
3820
+ return [...duplicateError, ...validateFormColumnInputsWithRequired({
3821
+ data: inputInEdit,
3822
+ requiredKeys: (defaultInputs[inputInEdit.element]?.requiredProperties || [])
3823
+ })];
3824
+ }
3825
+ catch (error) {
3826
+ const msg = error instanceof Error ? error.message : 'Failed to check form config';
3827
+ throw new Error(msg);
3828
+ }
3829
+ }
3830
+ function computedErrors(element, allErrors) {
3831
+ const errors = allErrors?.filter(error => error.key === element.deepBind?.join('.'));
3832
+ return [...[], ...errors];
3833
+ }
3834
+
3507
3835
  ;
3508
3836
  ;
3509
3837
  function formsFormBuilderStoreSelectors(store) {
@@ -3568,6 +3896,7 @@ function formsFormBuilderStoreSelectors(store) {
3568
3896
  }));
3569
3897
  const selectFormTitle$ = selectFormInEdit$.pipe(map((form) => form?.formTitle));
3570
3898
  const getAllFormInputs$ = selectFormInEdit$.pipe(map((form) => form?.slides.flatMap(slide => slide.columns) || []));
3899
+ const inputElementEditorConfigs$ = inputInEdit$.pipe(switchMap((inputInEdit) => selectFormInEdit$.pipe(map(form => inputElementEditorConfigs(form, inputInEdit, store.NGX_T_FORMS_CONFIG, store.utils)))));
3571
3900
  return {
3572
3901
  selectFormSlides$,
3573
3902
  missingConfig$,
@@ -3581,6 +3910,7 @@ function formsFormBuilderStoreSelectors(store) {
3581
3910
  inputInEditValidationErrors$,
3582
3911
  selectFormTitle$,
3583
3912
  getAllFormInputs$,
3913
+ inputElementEditorConfigs$,
3584
3914
  selectFormSlideSections$
3585
3915
  };
3586
3916
  }
@@ -4783,9 +5113,9 @@ class FormBuilderComponent {
4783
5113
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: FormBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4784
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: [
4785
5115
  FormsStoreService
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)]] }); }
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)]] }); }
4787
5117
  }
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: [{
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: [{
4789
5119
  type: Component,
4790
5120
  args: [{ selector: 'app-form-builder', standalone: true, imports: [CommonModule,
4791
5121
  MatModulesModule,
@@ -4959,27 +5289,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
4959
5289
  args: [DOCUMENT]
4960
5290
  }] }] });
4961
5291
 
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
-
4983
5292
  class TDynamicDataEditComponent {
4984
5293
  constructor(ngZone) {
4985
5294
  this.ngZone = ngZone;
@@ -5147,9 +5456,9 @@ class TDynamicDataEditComponent {
5147
5456
  }
5148
5457
  }
5149
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 }); }
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]] }); }
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]] }); }
5151
5460
  }
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: [{
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: [{
5153
5462
  type: Component,
5154
5463
  args: [{ selector: 'lib-t-dynamic-data-edit', standalone: true, imports: [CommonModule,
5155
5464
  SelectionOptionsEditorComponent,
@@ -10265,5 +10574,5 @@ console.debug = () => { };
10265
10574
  * Generated bundle index. Do not edit.
10266
10575
  */
10267
10576
 
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
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