ngx-t-forms 2.0.7 → 2.0.9

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 (125) hide show
  1. package/fesm2022/{ngx-t-forms-api-value-access-rules.component-Cp0BeYD7.mjs → ngx-t-forms-api-value-access-rules.component-DjZDnTHz.mjs} +11 -11
  2. package/fesm2022/{ngx-t-forms-api-value-access-rules.component-Cp0BeYD7.mjs.map → ngx-t-forms-api-value-access-rules.component-DjZDnTHz.mjs.map} +1 -1
  3. package/fesm2022/ngx-t-forms-api-value-access-rules.component-Zg1ddSDb.mjs +813 -0
  4. package/fesm2022/ngx-t-forms-api-value-access-rules.component-Zg1ddSDb.mjs.map +1 -0
  5. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-C1v-xiGd.mjs → ngx-t-forms-calculated-field-rules.component-E3l7DQo7.mjs} +11 -11
  6. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-C1v-xiGd.mjs.map → ngx-t-forms-calculated-field-rules.component-E3l7DQo7.mjs.map} +1 -1
  7. package/fesm2022/ngx-t-forms-calculated-field-rules.component-ZepKycLR.mjs +532 -0
  8. package/fesm2022/ngx-t-forms-calculated-field-rules.component-ZepKycLR.mjs.map +1 -0
  9. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DLnB3R7t.mjs +297 -0
  10. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DLnB3R7t.mjs.map +1 -0
  11. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-jgXTh0do.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-sOC54w4T.mjs} +9 -9
  12. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-jgXTh0do.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-sOC54w4T.mjs.map} +1 -1
  13. package/fesm2022/ngx-t-forms-form-input-selector.component-BjwzDiCY.mjs +187 -0
  14. package/fesm2022/ngx-t-forms-form-input-selector.component-BjwzDiCY.mjs.map +1 -0
  15. package/fesm2022/{ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs → ngx-t-forms-form-input-selector.component-CB03sPjA.mjs} +6 -6
  16. package/fesm2022/{ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs.map → ngx-t-forms-form-input-selector.component-CB03sPjA.mjs.map} +1 -1
  17. package/fesm2022/{ngx-t-forms-form-json-view.component-DSnLKnfH.mjs → ngx-t-forms-form-json-view.component-C1AZujJH.mjs} +2 -2
  18. package/fesm2022/{ngx-t-forms-form-json-view.component-DSnLKnfH.mjs.map → ngx-t-forms-form-json-view.component-C1AZujJH.mjs.map} +1 -1
  19. package/fesm2022/ngx-t-forms-form-json-view.component-CqtTYCRH.mjs +28 -0
  20. package/fesm2022/ngx-t-forms-form-json-view.component-CqtTYCRH.mjs.map +1 -0
  21. package/fesm2022/ngx-t-forms-form-section-stepper.component-Ba5WCLzp.mjs +673 -0
  22. package/fesm2022/ngx-t-forms-form-section-stepper.component-Ba5WCLzp.mjs.map +1 -0
  23. package/fesm2022/ngx-t-forms-form-section-stepper.component-C_dciQhe.mjs +225 -0
  24. package/fesm2022/ngx-t-forms-form-section-stepper.component-C_dciQhe.mjs.map +1 -0
  25. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-DQ8JYw6g.mjs → ngx-t-forms-forms-builder-menu.component-CPIcPREp.mjs} +13 -13
  26. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-DQ8JYw6g.mjs.map → ngx-t-forms-forms-builder-menu.component-CPIcPREp.mjs.map} +1 -1
  27. package/fesm2022/ngx-t-forms-forms-builder-menu.component-DbxEBvpt.mjs +735 -0
  28. package/fesm2022/ngx-t-forms-forms-builder-menu.component-DbxEBvpt.mjs.map +1 -0
  29. package/fesm2022/ngx-t-forms-input-editor.component-BnsC-jsN.mjs +445 -0
  30. package/fesm2022/ngx-t-forms-input-editor.component-BnsC-jsN.mjs.map +1 -0
  31. package/fesm2022/{ngx-t-forms-input-editor.component-Gi9MgyHB.mjs → ngx-t-forms-input-editor.component-__grERM8.mjs} +7 -10
  32. package/fesm2022/ngx-t-forms-input-editor.component-__grERM8.mjs.map +1 -0
  33. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DS6s98ZX.mjs +111 -0
  34. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DS6s98ZX.mjs.map +1 -0
  35. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-C2jw_2gf.mjs → ngx-t-forms-mat-chip-list-editor.component-DcdHYqhN.mjs} +2 -3
  36. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DcdHYqhN.mjs.map +1 -0
  37. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-D_IMC63r.mjs → ngx-t-forms-mat-slider-editor.component-C9rintm4.mjs} +2 -2
  38. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-D_IMC63r.mjs.map → ngx-t-forms-mat-slider-editor.component-C9rintm4.mjs.map} +1 -1
  39. package/fesm2022/ngx-t-forms-mat-slider-editor.component-ChiiJYK2.mjs +130 -0
  40. package/fesm2022/ngx-t-forms-mat-slider-editor.component-ChiiJYK2.mjs.map +1 -0
  41. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-DeKGDDuU.mjs → ngx-t-forms-mat-slider-toggle-editor.component-CItK6kXf.mjs} +2 -2
  42. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-DeKGDDuU.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-CItK6kXf.mjs.map} +1 -1
  43. package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DFcLzkSF.mjs +171 -0
  44. package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DFcLzkSF.mjs.map +1 -0
  45. package/fesm2022/ngx-t-forms-missing-form-configs.component-DNkGCH0e.mjs +104 -0
  46. package/fesm2022/ngx-t-forms-missing-form-configs.component-DNkGCH0e.mjs.map +1 -0
  47. package/fesm2022/{ngx-t-forms-missing-form-configs.component-BvsopeCg.mjs → ngx-t-forms-missing-form-configs.component-Da3SdUn6.mjs} +4 -4
  48. package/fesm2022/{ngx-t-forms-missing-form-configs.component-BvsopeCg.mjs.map → ngx-t-forms-missing-form-configs.component-Da3SdUn6.mjs.map} +1 -1
  49. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-4hrEpLk3.mjs +258 -0
  50. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-4hrEpLk3.mjs.map +1 -0
  51. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-CrHAIRAw.mjs +455 -0
  52. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-CrHAIRAw.mjs.map +1 -0
  53. package/fesm2022/{ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs → ngx-t-forms-ngx-t-forms-1Roar4qK.mjs} +710 -1294
  54. package/fesm2022/ngx-t-forms-ngx-t-forms-1Roar4qK.mjs.map +1 -0
  55. package/fesm2022/ngx-t-forms-ngx-t-forms-DaAFB-HX.mjs +14694 -0
  56. package/fesm2022/ngx-t-forms-ngx-t-forms-DaAFB-HX.mjs.map +1 -0
  57. package/fesm2022/{ngx-t-forms-pipeline-generator.component-IwmDgCk9.mjs → ngx-t-forms-pipeline-generator.component-BQDykLNH.mjs} +14 -14
  58. package/fesm2022/{ngx-t-forms-pipeline-generator.component-IwmDgCk9.mjs.map → ngx-t-forms-pipeline-generator.component-BQDykLNH.mjs.map} +1 -1
  59. package/fesm2022/ngx-t-forms-pipeline-generator.component-U0d8jQKW.mjs +1362 -0
  60. package/fesm2022/ngx-t-forms-pipeline-generator.component-U0d8jQKW.mjs.map +1 -0
  61. package/fesm2022/{ngx-t-forms-required-inputs.component-DdNLYKY6.mjs → ngx-t-forms-required-inputs.component-BGK3DNu0.mjs} +10 -10
  62. package/fesm2022/{ngx-t-forms-required-inputs.component-DdNLYKY6.mjs.map → ngx-t-forms-required-inputs.component-BGK3DNu0.mjs.map} +1 -1
  63. package/fesm2022/ngx-t-forms-required-inputs.component-S3cbA-zG.mjs +383 -0
  64. package/fesm2022/ngx-t-forms-required-inputs.component-S3cbA-zG.mjs.map +1 -0
  65. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-DH5GpWKn.mjs → ngx-t-forms-rest-api-call-setup.component-CCaRUSVQ.mjs} +4 -4
  66. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-DH5GpWKn.mjs.map → ngx-t-forms-rest-api-call-setup.component-CCaRUSVQ.mjs.map} +1 -1
  67. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-DDg4fCFx.mjs +457 -0
  68. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-DDg4fCFx.mjs.map +1 -0
  69. package/fesm2022/{ngx-t-forms-section-report.component-BAddUET-.mjs → ngx-t-forms-section-report.component-C8Ja_G_3.mjs} +5 -5
  70. package/fesm2022/{ngx-t-forms-section-report.component-BAddUET-.mjs.map → ngx-t-forms-section-report.component-C8Ja_G_3.mjs.map} +1 -1
  71. package/fesm2022/ngx-t-forms-section-report.component-C_h0KIR4.mjs +314 -0
  72. package/fesm2022/ngx-t-forms-section-report.component-C_h0KIR4.mjs.map +1 -0
  73. package/fesm2022/ngx-t-forms-selection-options-editor.component-CllhwZ5Y.mjs +231 -0
  74. package/fesm2022/ngx-t-forms-selection-options-editor.component-CllhwZ5Y.mjs.map +1 -0
  75. package/fesm2022/{ngx-t-forms-selection-options-editor.component-CQh-InJ6.mjs → ngx-t-forms-selection-options-editor.component-cYkn1O48.mjs} +6 -6
  76. package/fesm2022/{ngx-t-forms-selection-options-editor.component-CQh-InJ6.mjs.map → ngx-t-forms-selection-options-editor.component-cYkn1O48.mjs.map} +1 -1
  77. package/fesm2022/ngx-t-forms-validators-config.component-BPJZRtjT.mjs +434 -0
  78. package/fesm2022/ngx-t-forms-validators-config.component-BPJZRtjT.mjs.map +1 -0
  79. package/fesm2022/{ngx-t-forms-validators-config.component-SyL_Vln8.mjs → ngx-t-forms-validators-config.component-CGXCCl45.mjs} +8 -8
  80. package/fesm2022/{ngx-t-forms-validators-config.component-SyL_Vln8.mjs.map → ngx-t-forms-validators-config.component-CGXCCl45.mjs.map} +1 -1
  81. package/fesm2022/ngx-t-forms.mjs +1 -1
  82. package/lib/components/form-builder/elements/form-section-stepper/form-section-stepper.component.d.ts +2 -0
  83. package/lib/components/form-builder/elements/form-submissions-config/form-submissions-config.component.d.ts +1 -1
  84. package/lib/components/form-builder/elements/input-element-editor/input-element-editor.component.d.ts +2 -2
  85. package/lib/components/forms/forms.component.d.ts +1 -1
  86. package/lib/components/forms/store/Form-actions-formBuilder.d.ts +1 -0
  87. package/lib/components/forms/store/Form-selectors-FormBuilder.d.ts +1 -1
  88. package/lib/components/forms/store/forms-store.service.d.ts +2 -1
  89. package/lib/components/index.d.ts +2 -1
  90. package/lib/components/t-dynamic-data-edit/elements/mscoa-segment-config/mscoa-segment-config.component.d.ts +5 -9
  91. package/lib/components/t-form-input/elements/mscoa-form-input/elements/account-value/account-value.component.d.ts +3 -3
  92. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-chart/mscoa-chart.component.d.ts +67 -52
  93. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-computation/mscoa-computation.component.d.ts +10 -10
  94. package/lib/components/t-form-input/elements/mscoa-form-input/elements/mscoa-reactive-form-field/mscoa-reactive-form-field.component.d.ts +8 -6
  95. package/lib/components/t-form-input/elements/mscoa-form-input/elements/scoa-account-table/scoa-account-table.component.d.ts +8 -8
  96. package/lib/components/t-form-input/elements/mscoa-form-input/elements/scoa-input/scoa-input.component.d.ts +1 -1
  97. package/lib/components/t-form-input/elements/mscoa-form-input/mscoa-form-input.component.d.ts +4 -3
  98. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-actions.d.ts +5 -5
  99. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-component-store.service.d.ts +27 -31
  100. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-effects.d.ts +2 -2
  101. package/lib/components/t-form-input/elements/mscoa-form-input/store/mscoa-selectors.d.ts +20 -24
  102. package/lib/components/t-form-input/elements/multiple-input-input-element/core/multiple-input-table-edit/multiple-input-table-edit.component.d.ts +1 -1
  103. package/lib/components/t-form-input/elements/select-input-element/elements/select-input/select-input.component.d.ts +20 -0
  104. package/lib/components/t-form-input/elements/select-input-element/select-input-element.component.d.ts +0 -3
  105. package/lib/components/t-form-input/t-form-input.component.d.ts +3 -2
  106. package/lib/components/user-form-stepper/user-form-stepper.component.d.ts +5 -0
  107. package/lib/components/workflow-builder/store/workflow-builder-store.service.d.ts +18 -0
  108. package/lib/components/workflow-builder/store/workflowEditorActions.d.ts +4 -0
  109. package/lib/components/workflow-builder/store/workflowEditorEffects.d.ts +2 -0
  110. package/lib/components/workflow-builder/store/workflowEditorSelectors.d.ts +2 -0
  111. package/lib/components/workflow-builder/workflow-builder.component.d.ts +12 -0
  112. package/lib/services/core/t-form-builder/functions/addScoaExtensionInput.d.ts +2 -0
  113. package/lib/services/core/t-form-tower-controller/form-tower-controller.service.d.ts +2 -0
  114. package/lib/services/core/t-form-tower-controller/functions/allFormInputs.d.ts +2 -3
  115. package/lib/services/core/t-form-tower-controller/functions/getAllFunctionTypes.d.ts +2 -0
  116. package/lib/shared/functions/textIconsForUserHints.d.ts +2 -1
  117. package/package.json +3 -2
  118. package/fesm2022/ngx-t-forms-form-section-stepper.component-hnOcnZGc.mjs +0 -220
  119. package/fesm2022/ngx-t-forms-form-section-stepper.component-hnOcnZGc.mjs.map +0 -1
  120. package/fesm2022/ngx-t-forms-input-editor.component-Gi9MgyHB.mjs.map +0 -1
  121. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-C2jw_2gf.mjs.map +0 -1
  122. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs +0 -230
  123. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-D_IIYPud.mjs.map +0 -1
  124. package/fesm2022/ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs.map +0 -1
  125. package/testForm.d.ts +0 -797
@@ -0,0 +1,434 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, Optional, Self, Output, Input, HostBinding } from '@angular/core';
3
+ import { v4 } from 'uuid';
4
+ import { ElementTypes } from 'ngx-t-forms-types';
5
+ import { g as getInputIllustration } from './ngx-t-forms-getInputIllustration-GCSKx5e5.mjs';
6
+ import * as i2$2 from '@angular/common';
7
+ import { CommonModule } from '@angular/common';
8
+ import { FormInputSelectorComponent } from './ngx-t-forms-form-input-selector.component-BjwzDiCY.mjs';
9
+ import * as i1 from '@angular/forms';
10
+ import { FormsModule } from '@angular/forms';
11
+ import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-DaAFB-HX.mjs';
12
+ import * as i3$1 from '@angular/material/form-field';
13
+ import { MatFormFieldControl } from '@angular/material/form-field';
14
+ import { Subject } from 'rxjs';
15
+ import * as i2 from '@angular/material/button';
16
+ import * as i3 from '@angular/material/card';
17
+ import * as i4 from '@angular/material/chips';
18
+ import * as i4$1 from '@angular/material/divider';
19
+ import * as i6 from '@angular/material/icon';
20
+ import * as i6$1 from '@angular/material/list';
21
+ import * as i2$1 from '@angular/material/slide-toggle';
22
+ import * as i9 from '@angular/material/toolbar';
23
+ import * as i8 from '@angular/material/tooltip';
24
+ import * as i12 from '@angular/material/input';
25
+
26
+ function ValidatorsConfigComponent_For_10_button_4_Template(rf, ctx) { if (rf & 1) {
27
+ const _r4 = i0.ɵɵgetCurrentView();
28
+ i0.ɵɵelementStart(0, "button", 13);
29
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_For_10_button_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const validator_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.remove(validator_r2)); });
30
+ i0.ɵɵelementStart(1, "mat-icon");
31
+ i0.ɵɵtext(2, "cancel");
32
+ i0.ɵɵelementEnd()();
33
+ } if (rf & 2) {
34
+ i0.ɵɵattribute("aria-label", "remove ");
35
+ } }
36
+ function ValidatorsConfigComponent_For_10_mat_icon_5_Template(rf, ctx) { if (rf & 1) {
37
+ i0.ɵɵelementStart(0, "mat-icon", 14);
38
+ i0.ɵɵtext(1, " check_circle ");
39
+ i0.ɵɵelementEnd();
40
+ } }
41
+ function ValidatorsConfigComponent_For_10_Template(rf, ctx) { if (rf & 1) {
42
+ const _r1 = i0.ɵɵgetCurrentView();
43
+ i0.ɵɵelementStart(0, "mat-chip-option", 9);
44
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_For_10_Template_mat_chip_option_click_0_listener() { const validator_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.editV(validator_r2)); });
45
+ i0.ɵɵelementStart(1, "span", 10);
46
+ i0.ɵɵtext(2);
47
+ i0.ɵɵpipe(3, "titlecase");
48
+ i0.ɵɵelementEnd();
49
+ i0.ɵɵtemplate(4, ValidatorsConfigComponent_For_10_button_4_Template, 3, 1, "button", 11)(5, ValidatorsConfigComponent_For_10_mat_icon_5_Template, 2, 0, "mat-icon", 12);
50
+ i0.ɵɵelementEnd();
51
+ } if (rf & 2) {
52
+ const validator_r2 = ctx.$implicit;
53
+ const ctx_r2 = i0.ɵɵnextContext();
54
+ i0.ɵɵproperty("selected", (ctx_r2.edit == null ? null : ctx_r2.edit.id) === validator_r2.id);
55
+ i0.ɵɵadvance(2);
56
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 4, ctx_r2.isFormControlCustomValidator(validator_r2)), " ");
57
+ i0.ɵɵadvance(2);
58
+ i0.ɵɵproperty("ngIf", (ctx_r2.edit == null ? null : ctx_r2.edit.id) !== validator_r2.id);
59
+ i0.ɵɵadvance();
60
+ i0.ɵɵproperty("ngIf", (ctx_r2.edit == null ? null : ctx_r2.edit.id) === validator_r2.id);
61
+ } }
62
+ function ValidatorsConfigComponent_mat_chip_option_11_Template(rf, ctx) { if (rf & 1) {
63
+ const _r5 = i0.ɵɵgetCurrentView();
64
+ i0.ɵɵelementStart(0, "mat-chip-option", 15);
65
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_mat_chip_option_11_Template_mat_chip_option_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.addValidator()); });
66
+ i0.ɵɵelement(1, "span");
67
+ i0.ɵɵtext(2, " Add validator ");
68
+ i0.ɵɵelementStart(3, "mat-icon", 14);
69
+ i0.ɵɵtext(4, "add");
70
+ i0.ɵɵelementEnd()();
71
+ } }
72
+ function ValidatorsConfigComponent_mat_card_12_ng_container_1_Template(rf, ctx) { if (rf & 1) {
73
+ i0.ɵɵelementContainer(0);
74
+ } }
75
+ function ValidatorsConfigComponent_mat_card_12_mat_toolbar_2_Template(rf, ctx) { if (rf & 1) {
76
+ const _r6 = i0.ɵɵgetCurrentView();
77
+ i0.ɵɵelementStart(0, "mat-toolbar");
78
+ i0.ɵɵelement(1, "span", 19);
79
+ i0.ɵɵelementStart(2, "button", 20);
80
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_mat_card_12_mat_toolbar_2_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.edit = undefined); });
81
+ i0.ɵɵtext(3, " close ");
82
+ i0.ɵɵelementEnd();
83
+ i0.ɵɵelementStart(4, "button", 21);
84
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_mat_card_12_mat_toolbar_2_Template_button_click_4_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.saveVariable($event)); });
85
+ i0.ɵɵtext(5, " Save Validation ");
86
+ i0.ɵɵelementEnd()();
87
+ } if (rf & 2) {
88
+ const ctx_r2 = i0.ɵɵnextContext(2);
89
+ i0.ɵɵadvance(4);
90
+ i0.ɵɵproperty("disabled", !ctx_r2.edit.expression || !ctx_r2.edit.message);
91
+ } }
92
+ function ValidatorsConfigComponent_mat_card_12_ng_container_3_Template(rf, ctx) { if (rf & 1) {
93
+ i0.ɵɵelementContainer(0);
94
+ } }
95
+ function ValidatorsConfigComponent_mat_card_12_Template(rf, ctx) { if (rf & 1) {
96
+ i0.ɵɵelementStart(0, "mat-card", 16);
97
+ i0.ɵɵtemplate(1, ValidatorsConfigComponent_mat_card_12_ng_container_1_Template, 1, 0, "ng-container", 17)(2, ValidatorsConfigComponent_mat_card_12_mat_toolbar_2_Template, 6, 1, "mat-toolbar", 18)(3, ValidatorsConfigComponent_mat_card_12_ng_container_3_Template, 1, 0, "ng-container", 17);
98
+ i0.ɵɵelementEnd();
99
+ } if (rf & 2) {
100
+ const ctx_r2 = i0.ɵɵnextContext();
101
+ const validatorEditor_r7 = i0.ɵɵreference(14);
102
+ const variables_r8 = i0.ɵɵreference(16);
103
+ i0.ɵɵadvance();
104
+ i0.ɵɵproperty("ngIf", ctx_r2.edit && !ctx_r2.showVariables)("ngIfThen", validatorEditor_r7);
105
+ i0.ɵɵadvance();
106
+ i0.ɵɵproperty("ngIf", !ctx_r2.showVariables);
107
+ i0.ɵɵadvance();
108
+ i0.ɵɵproperty("ngIf", ctx_r2.edit && !!ctx_r2.showVariables)("ngIfThen", variables_r8);
109
+ } }
110
+ function ValidatorsConfigComponent_ng_template_13_mat_list_7_For_23_Template(rf, ctx) { if (rf & 1) {
111
+ const _r10 = i0.ɵɵgetCurrentView();
112
+ i0.ɵɵelementStart(0, "mat-chip");
113
+ i0.ɵɵtext(1, "input ");
114
+ i0.ɵɵelementStart(2, "button", 13);
115
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_ng_template_13_mat_list_7_For_23_Template_button_click_2_listener($event) { const input_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.removeObserved($event, input_r11)); });
116
+ i0.ɵɵelementStart(3, "mat-icon");
117
+ i0.ɵɵtext(4, "cancel");
118
+ i0.ɵɵelementEnd()()();
119
+ } if (rf & 2) {
120
+ i0.ɵɵadvance(2);
121
+ i0.ɵɵattribute("aria-label", "remove ");
122
+ } }
123
+ function ValidatorsConfigComponent_ng_template_13_mat_list_7_Template(rf, ctx) { if (rf & 1) {
124
+ const _r9 = i0.ɵɵgetCurrentView();
125
+ i0.ɵɵelementStart(0, "mat-list")(1, "mat-form-field", 22);
126
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_ng_template_13_mat_list_7_Template_mat_form_field_click_1_listener($event) { i0.ɵɵrestoreView(_r9); return i0.ɵɵresetView($event.stopPropagation()); });
127
+ i0.ɵɵelementStart(2, "mat-label");
128
+ i0.ɵɵtext(3, "Validation Message");
129
+ i0.ɵɵelementEnd();
130
+ i0.ɵɵelementStart(4, "textarea", 23, 2);
131
+ i0.ɵɵlistener("input", function ValidatorsConfigComponent_ng_template_13_mat_list_7_Template_textarea_input_4_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onTextChange($event, "message")); });
132
+ i0.ɵɵelementEnd();
133
+ i0.ɵɵelementStart(6, "mat-hint");
134
+ i0.ɵɵtext(7, " The message to display when the validation fails ");
135
+ i0.ɵɵelementEnd()();
136
+ i0.ɵɵelementStart(8, "mat-form-field", 24);
137
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_ng_template_13_mat_list_7_Template_mat_form_field_click_8_listener($event) { i0.ɵɵrestoreView(_r9); return i0.ɵɵresetView($event.stopPropagation()); });
138
+ i0.ɵɵelementStart(9, "mat-label");
139
+ i0.ɵɵtext(10, "Expression");
140
+ i0.ɵɵelementEnd();
141
+ i0.ɵɵelementStart(11, "textarea", 25, 2);
142
+ i0.ɵɵlistener("input", function ValidatorsConfigComponent_ng_template_13_mat_list_7_Template_textarea_input_11_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onTextChange($event, "expression")); });
143
+ i0.ɵɵelementEnd();
144
+ i0.ɵɵelementStart(13, "mat-hint");
145
+ i0.ɵɵtext(14, " The expression to evaluate the validation ");
146
+ i0.ɵɵelementEnd()();
147
+ i0.ɵɵelementStart(15, "mat-toolbar")(16, "mat-slide-toggle", 26);
148
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_ng_template_13_mat_list_7_Template_mat_slide_toggle_click_16_listener($event) { i0.ɵɵrestoreView(_r9); return i0.ɵɵresetView($event.stopPropagation()); })("change", function ValidatorsConfigComponent_ng_template_13_mat_list_7_Template_mat_slide_toggle_change_16_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.edit.canOverride = $event.checked); });
149
+ i0.ɵɵelementStart(17, "span", 27);
150
+ i0.ɵɵtext(18, " Users can override this validation");
151
+ i0.ɵɵelementEnd()()();
152
+ i0.ɵɵelementStart(19, "label");
153
+ i0.ɵɵtext(20, " Observe inputs for changes ");
154
+ i0.ɵɵelementEnd();
155
+ i0.ɵɵelementStart(21, "mat-chip-listbox", 5);
156
+ i0.ɵɵrepeaterCreate(22, ValidatorsConfigComponent_ng_template_13_mat_list_7_For_23_Template, 5, 1, "mat-chip", null, i0.ɵɵrepeaterTrackByIdentity);
157
+ i0.ɵɵelementStart(24, "mat-chip", 28);
158
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_ng_template_13_mat_list_7_Template_mat_chip_click_24_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.addVariable($event)); });
159
+ i0.ɵɵtext(25, " Variable ");
160
+ i0.ɵɵelementStart(26, "mat-icon", 14);
161
+ i0.ɵɵtext(27, " add ");
162
+ i0.ɵɵelementEnd()()();
163
+ i0.ɵɵelement(28, "br")(29, "mat-divider");
164
+ i0.ɵɵelementEnd();
165
+ } if (rf & 2) {
166
+ const ctx_r2 = i0.ɵɵnextContext(2);
167
+ i0.ɵɵadvance(4);
168
+ i0.ɵɵproperty("value", ctx_r2.edit.message);
169
+ i0.ɵɵadvance(7);
170
+ i0.ɵɵproperty("value", ctx_r2.edit.expression);
171
+ i0.ɵɵadvance(5);
172
+ i0.ɵɵproperty("checked", ctx_r2.edit.canOverride);
173
+ i0.ɵɵadvance(6);
174
+ i0.ɵɵrepeater(ctx_r2.edit.inputsObservedForChanges);
175
+ } }
176
+ function ValidatorsConfigComponent_ng_template_13_Template(rf, ctx) { if (rf & 1) {
177
+ i0.ɵɵelementStart(0, "div", 3)(1, "mat-icon", 4);
178
+ i0.ɵɵtext(2, "info");
179
+ i0.ɵɵelementEnd();
180
+ i0.ɵɵelementStart(3, "span");
181
+ i0.ɵɵtext(4, " The expression is checked on value change. The message shows if it fails. ");
182
+ i0.ɵɵelement(5, "br");
183
+ i0.ɵɵtext(6, " You can observe inputs for changes to re-evaluate the expression. ");
184
+ i0.ɵɵelementEnd()();
185
+ i0.ɵɵtemplate(7, ValidatorsConfigComponent_ng_template_13_mat_list_7_Template, 30, 3, "mat-list", 18);
186
+ } if (rf & 2) {
187
+ const ctx_r2 = i0.ɵɵnextContext();
188
+ i0.ɵɵadvance(7);
189
+ i0.ɵɵproperty("ngIf", ctx_r2.edit);
190
+ } }
191
+ function ValidatorsConfigComponent_ng_template_15_div_2_Template(rf, ctx) { if (rf & 1) {
192
+ i0.ɵɵelementStart(0, "div", 33)(1, "span", 34);
193
+ i0.ɵɵtext(2, "No form inputs");
194
+ i0.ɵɵelementEnd()();
195
+ } }
196
+ function ValidatorsConfigComponent_ng_template_15_Template(rf, ctx) { if (rf & 1) {
197
+ const _r12 = i0.ɵɵgetCurrentView();
198
+ i0.ɵɵelementStart(0, "section", 29)(1, "lib-form-input-selector", 30);
199
+ i0.ɵɵlistener("change", function ValidatorsConfigComponent_ng_template_15_Template_lib_form_input_selector_change_1_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.selectInput($event)); });
200
+ i0.ɵɵelementEnd();
201
+ i0.ɵɵtemplate(2, ValidatorsConfigComponent_ng_template_15_div_2_Template, 3, 0, "div", 31);
202
+ i0.ɵɵelementEnd();
203
+ i0.ɵɵelementStart(3, "mat-toolbar");
204
+ i0.ɵɵelement(4, "span", 19);
205
+ i0.ɵɵelementStart(5, "button", 32);
206
+ i0.ɵɵlistener("click", function ValidatorsConfigComponent_ng_template_15_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.showVariables = !ctx_r2.showVariables); });
207
+ i0.ɵɵtext(6, " Close ");
208
+ i0.ɵɵelementStart(7, "mat-icon");
209
+ i0.ɵɵtext(8, " close ");
210
+ i0.ɵɵelementEnd()()();
211
+ } if (rf & 2) {
212
+ const ctx_r2 = i0.ɵɵnextContext();
213
+ i0.ɵɵadvance();
214
+ i0.ɵɵproperty("formInputs", ctx_r2.formInputs);
215
+ i0.ɵɵadvance();
216
+ i0.ɵɵproperty("ngIf", ctx_r2.formInputs.length === 0);
217
+ } }
218
+ class ValidatorsConfigComponent {
219
+ static { this.nextId = 0; }
220
+ constructor(ngControl, _elementRef) {
221
+ this.ngControl = ngControl;
222
+ this._elementRef = _elementRef;
223
+ this.stateChanges = new Subject();
224
+ this.id = `app-validators-config-${ValidatorsConfigComponent.nextId++}`;
225
+ this.placeholder = '';
226
+ this.focused = false;
227
+ this.required = false;
228
+ this.disabled = false;
229
+ this.errors = [];
230
+ this.touched = false;
231
+ this.onTouched = () => { };
232
+ this.mapToData = undefined;
233
+ this.formInputs = [];
234
+ this.valueChanged = new EventEmitter();
235
+ this.showVariables = false;
236
+ this.search = '';
237
+ }
238
+ get empty() {
239
+ return !this.value;
240
+ }
241
+ get shouldLabelFloat() {
242
+ return this.focused || !this.empty;
243
+ }
244
+ get errorState() {
245
+ const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched;
246
+ return !this.value && !!this.required || hasError;
247
+ }
248
+ setDescribedByIds(ids) {
249
+ // Ensure the component view is initialized
250
+ if (this._elementRef && this._elementRef.nativeElement) {
251
+ const controlElement = this._elementRef.nativeElement.querySelector('.app-validators-config');
252
+ // Check if the controlElement exists before attempting to set its attribute
253
+ if (controlElement) {
254
+ controlElement.setAttribute('aria-describedby', ids.join(' '));
255
+ }
256
+ }
257
+ }
258
+ onContainerClick(event) {
259
+ this.markAsTouched();
260
+ this.stateChanges.next();
261
+ }
262
+ markAsTouched() {
263
+ console.log('markAsTouched');
264
+ if (!this.touched) {
265
+ this.onTouched();
266
+ this.touched = true;
267
+ }
268
+ }
269
+ ngOnInit() { }
270
+ menuClosed(event) {
271
+ if (this.edit) {
272
+ const editIndex = this.value.findIndex((item) => {
273
+ if (typeof item === 'string') {
274
+ return false;
275
+ }
276
+ return item.id === this.edit?.id;
277
+ });
278
+ if (editIndex !== -1) {
279
+ this.value[editIndex] = this.edit;
280
+ }
281
+ this.valueChanged.emit([...this.value]);
282
+ }
283
+ this.edit = undefined;
284
+ }
285
+ editV(validator) {
286
+ if (this.edit?.id === validator.id) {
287
+ this.edit = undefined;
288
+ return;
289
+ }
290
+ this.edit = validator;
291
+ }
292
+ remove(validator) {
293
+ const indexOfV = this.value.findIndex((item) => {
294
+ if (typeof item === 'string') {
295
+ return item === validator;
296
+ }
297
+ return item.id === validator.id;
298
+ });
299
+ this.value = [...this.value].filter((item, i) => indexOfV !== i);
300
+ this.valueChanged.emit([...this.value]);
301
+ }
302
+ getInputIcon(element) {
303
+ return getInputIllustration(element);
304
+ }
305
+ selectInput(inputId) {
306
+ const input = this.formInputs.find((input) => input.id === inputId);
307
+ if (!input) {
308
+ return;
309
+ }
310
+ if (input?.multipleInputInEditId) {
311
+ throw new Error('multipleInputInEditId is not supported');
312
+ }
313
+ if (!!this.edit) {
314
+ this.edit.expression = (this.edit?.expression || '').concat(input?.formControlName || '');
315
+ if (!this.edit.inputsObservedForChanges.find((i) => i.inputId === (input?.originalId || input?.id))) {
316
+ this.edit.inputsObservedForChanges.push({
317
+ inputId: input?.originalId || input?.id,
318
+ variable: input?.formControlName
319
+ });
320
+ }
321
+ }
322
+ this.showVariables = false;
323
+ }
324
+ addVariable(event) {
325
+ this.showVariables = true;
326
+ event.stopPropagation();
327
+ event.preventDefault();
328
+ }
329
+ getMultipleFormInputs(input) {
330
+ if (input.element === ElementTypes.MultipleInput &&
331
+ this.mapToData?.multipleInputInEditId === input.id) {
332
+ return input.formInputs;
333
+ }
334
+ return [];
335
+ }
336
+ returnExpression() {
337
+ return this.edit?.expression.replace(/(word)/g, '<span style=\'color: blue\'>$1</span>');
338
+ }
339
+ addValidator() {
340
+ this.edit = {
341
+ message: '',
342
+ expression: '',
343
+ canOverride: false,
344
+ inputsObservedForChanges: []
345
+ };
346
+ }
347
+ onTextChange(event, key) {
348
+ if (!this.edit) {
349
+ this.edit = {};
350
+ }
351
+ this.edit[key] = event.target.value;
352
+ }
353
+ saveVariable(event) {
354
+ console.log(this.edit);
355
+ if (!this.edit)
356
+ return;
357
+ const id = v4();
358
+ const val = { ...this.edit, id };
359
+ this.value = [...this.value, val];
360
+ this.valueChanged.emit([...this.value]);
361
+ this.edit = undefined;
362
+ }
363
+ removeObserved(event, item) {
364
+ const i = this.edit?.inputsObservedForChanges.findIndex((i) => i === item);
365
+ if (i !== undefined && i !== -1 && this.edit) {
366
+ this.edit?.inputsObservedForChanges.splice(i, 1);
367
+ this.edit.expression = this.edit?.expression.replace(new RegExp(`\\b${item}\\b`, 'g'), '');
368
+ }
369
+ event.stopPropagation();
370
+ event.preventDefault();
371
+ }
372
+ isFormControlCustomValidator(validator) {
373
+ if (typeof validator == 'string') {
374
+ return validator;
375
+ }
376
+ return validator.message;
377
+ }
378
+ static { this.ɵfac = function ValidatorsConfigComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ValidatorsConfigComponent)(i0.ɵɵdirectiveInject(i1.NgControl, 10), i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
379
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ValidatorsConfigComponent, selectors: [["app-validators-config"]], hostVars: 1, hostBindings: function ValidatorsConfigComponent_HostBindings(rf, ctx) { if (rf & 2) {
380
+ i0.ɵɵhostProperty("id", ctx.id);
381
+ } }, inputs: { errors: "errors", mapToData: "mapToData", value: "value", formInputs: "formInputs" }, outputs: { valueChanged: "valueChanged" }, features: [i0.ɵɵProvidersFeature([{ provide: MatFormFieldControl, useExisting: ValidatorsConfigComponent }])], decls: 17, vars: 2, consts: [["validatorEditor", ""], ["variables", ""], ["textarea", ""], [1, "tree-instructions"], ["color", "primary", 1, "info-icon"], ["aria-label", "Chip select options"], [2, "height", "fit-content", "padding", "8px", 3, "selected"], ["matTooltip", "Add a new custom validator", "selectable", "false", "style", "cursor: pointer !important;", "highlighted", "true", "color", "accent", 3, "click", 4, "ngIf"], ["style", "padding: 8px;background:var(--mat-toolbar-container-background-color, var(--mat-app-surface))", 4, "ngIf"], [2, "height", "fit-content", "padding", "8px", 3, "click", "selected"], [2, "white-space", "normal"], ["matChipRemove", "", 3, "click", 4, "ngIf"], ["matChipTrailingIcon", "", 4, "ngIf"], ["matChipRemove", "", 3, "click"], ["matChipTrailingIcon", ""], ["matTooltip", "Add a new custom validator", "selectable", "false", "highlighted", "true", "color", "accent", 2, "cursor", "pointer !important", 3, "click"], [2, "padding", "8px", "background", "var(--mat-toolbar-container-background-color, var(--mat-app-surface))"], [4, "ngIf", "ngIfThen"], [4, "ngIf"], [1, "spacer"], ["mat-button", "", 3, "click"], ["mat-raised-button", "", "color", "accent", 3, "click", "disabled"], ["appearance", "outline", 2, "margin-bottom", "16px", 3, "click"], ["matInput", "", "placeholder", "\n Enter message\n ", 3, "input", "value"], ["appearance", "outline", 3, "click"], ["matInput", "", "placeholder", "\n enter expression\n ", 3, "input", "value"], ["name", "CanOveride", "ngDefaultControl", "", 3, "click", "change", "checked"], [2, "margin-left", "5px"], ["color", "primary", 3, "click"], [2, "max-height", "360px", "overflow-y", "auto"], [3, "change", "formInputs"], ["class", "contentBackground", 4, "ngIf"], ["mat-flat-button", "", 3, "click"], [1, "contentBackground"], [2, "display", "block", "text-align", "center", "font-style", "italic", "padding", "16px"]], template: function ValidatorsConfigComponent_Template(rf, ctx) { if (rf & 1) {
382
+ i0.ɵɵelementStart(0, "div", 3)(1, "mat-icon", 4);
383
+ i0.ɵɵtext(2, "info");
384
+ i0.ɵɵelementEnd();
385
+ i0.ɵɵelementStart(3, "span");
386
+ i0.ɵɵtext(4, " Custom validators are functions that take a form control as an argument and return an object of errors if the validation fails. ");
387
+ i0.ɵɵelementEnd()();
388
+ i0.ɵɵelementStart(5, "mat-list")(6, "h5");
389
+ i0.ɵɵtext(7, " Custom Validators\n");
390
+ i0.ɵɵelementEnd();
391
+ i0.ɵɵelementStart(8, "mat-chip-listbox", 5);
392
+ i0.ɵɵrepeaterCreate(9, ValidatorsConfigComponent_For_10_Template, 6, 6, "mat-chip-option", 6, i0.ɵɵrepeaterTrackByIndex);
393
+ i0.ɵɵtemplate(11, ValidatorsConfigComponent_mat_chip_option_11_Template, 5, 0, "mat-chip-option", 7);
394
+ i0.ɵɵelementEnd()();
395
+ i0.ɵɵtemplate(12, ValidatorsConfigComponent_mat_card_12_Template, 4, 5, "mat-card", 8)(13, ValidatorsConfigComponent_ng_template_13_Template, 8, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(15, ValidatorsConfigComponent_ng_template_15_Template, 9, 2, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
396
+ } if (rf & 2) {
397
+ i0.ɵɵadvance(9);
398
+ i0.ɵɵrepeater(ctx.value);
399
+ i0.ɵɵadvance(2);
400
+ i0.ɵɵproperty("ngIf", !ctx.edit);
401
+ i0.ɵɵadvance();
402
+ i0.ɵɵproperty("ngIf", ctx.edit);
403
+ } }, dependencies: [MatModulesModule, i2.MatButton, i3.MatCard, i4.MatChip, i4.MatChipListbox, i4.MatChipOption, i4.MatChipRemove, i4.MatChipTrailingIcon, i4$1.MatDivider, i6.MatIcon, i6$1.MatList, i3$1.MatFormField, i3$1.MatLabel, i3$1.MatHint, i2$1.MatSlideToggle, i9.MatToolbar, i8.MatTooltip, i12.MatInput, CommonModule, i2$2.NgIf, i2$2.TitleCasePipe, FormInputSelectorComponent,
404
+ FormsModule, i1.DefaultValueAccessor], styles: [".mat-mdc-menu-panel.mat-mdc-menu-panel[_ngcontent-%COMP%]{min-width:500px!important}mat-form-field[_ngcontent-%COMP%]{width:100%;background:azure}.tree-instructions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon[_ngcontent-%COMP%]{min-width:38px}mat-chip[_ngcontent-%COMP%]{cursor:pointer!important}"] }); }
405
+ }
406
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ValidatorsConfigComponent, [{
407
+ type: Component,
408
+ args: [{ selector: 'app-validators-config', standalone: true, imports: [
409
+ MatModulesModule,
410
+ CommonModule,
411
+ FormInputSelectorComponent,
412
+ FormsModule
413
+ ], providers: [{ provide: MatFormFieldControl, useExisting: ValidatorsConfigComponent }], template: "<div class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Custom validators are functions that take a form control as an argument and return an object of errors if the\r\n validation fails.\r\n </span>\r\n</div>\r\n\r\n<mat-list>\r\n<h5>\r\n Custom Validators\r\n</h5>\r\n <mat-chip-listbox aria-label=\"Chip select options\">\r\n @for (validator of value; track $index) {\r\n <mat-chip-option\r\n style=\"height: fit-content;padding: 8px;\"\r\n [selected]=\"edit?.id === validator.id\"\r\n (click)=\"editV(validator)\"> \r\n <span style=\"white-space: normal;\">\r\n {{isFormControlCustomValidator(validator) | titlecase}}\r\n </span>\r\n \r\n <button *ngIf=\"this.edit?.id !== validator.id\" (click)=\"remove(validator)\" matChipRemove \r\n [attr.aria-label]=\"'remove ' \">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"this.edit?.id === validator.id\" matChipTrailingIcon>\r\n check_circle\r\n </mat-icon>\r\n \r\n \r\n </mat-chip-option>\r\n }\r\n <mat-chip-option\r\n matTooltip=\"Add a new custom validator\"\r\n selectable=\"false\"\r\n style=\"cursor: pointer !important;\"\r\n highlighted=\"true\" color=\"accent\" (click)=\"addValidator()\" *ngIf=\"!edit\">\r\n <span >\r\n\r\n </span>\r\n Add validator\r\n <mat-icon matChipTrailingIcon >add</mat-icon>\r\n\r\n \r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n\r\n \r\n \r\n\r\n\r\n</mat-list>\r\n<mat-card style=\"padding: 8px;background:var(--mat-toolbar-container-background-color, var(--mat-app-surface))\"\r\n *ngIf=\"edit\">\r\n <ng-container *ngIf=\"edit && !showVariables; then validatorEditor\"></ng-container>\r\n <mat-toolbar *ngIf=\"!showVariables\" >\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"edit=undefined\" mat-button>\r\n close\r\n </button>\r\n <button mat-raised-button [disabled]=\"!edit.expression ||!edit.message\"\r\n (click)=\"saveVariable($event)\" color=\"accent\">\r\n Save Validation\r\n </button>\r\n </mat-toolbar>\r\n <ng-container *ngIf=\"edit && !!showVariables; then variables\"></ng-container>\r\n</mat-card>\r\n\r\n\r\n\r\n\r\n<ng-template #validatorEditor>\r\n <div class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n The expression is checked on value change. The message shows if it fails.\r\n <br>\r\n You can observe inputs for changes to re-evaluate the expression.\r\n </span>\r\n </div>\r\n <mat-list *ngIf=\"edit\">\r\n\r\n <mat-form-field style=\"margin-bottom: 16px;\" (click)=\"$event.stopPropagation();\" appearance=\"outline\">\r\n <mat-label >Validation Message</mat-label>\r\n <textarea matInput #textarea [value]=\"edit.message\"\r\n (input)=\"onTextChange($event,'message')\"\r\n placeholder=\"\r\n Enter message\r\n \"></textarea>\r\n\r\n <mat-hint>\r\n The message to display when the validation fails\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n <mat-form-field (click)=\"$event.stopPropagation();\" appearance=\"outline\">\r\n <mat-label >Expression</mat-label>\r\n <textarea matInput #textarea \r\n (input)=\"onTextChange($event,'expression')\"\r\n [value]=\"edit.expression\" placeholder=\"\r\n enter expression\r\n \"></textarea>\r\n\r\n <mat-hint>\r\n The expression to evaluate the validation\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n <mat-toolbar>\r\n <mat-slide-toggle (click)=\"$event.stopPropagation();\" name=\"CanOveride\" ngDefaultControl\r\n (change)=\"edit.canOverride = $event.checked\" [checked]=\"edit.canOverride\">\r\n <span style=\"margin-left: 5px;\"> Users can override this validation</span>\r\n\r\n </mat-slide-toggle>\r\n </mat-toolbar>\r\n <label >\r\n Observe inputs for changes\r\n </label>\r\n <mat-chip-listbox aria-label=\"Chip select options\">\r\n @for(input of edit.inputsObservedForChanges;track input){\r\n <mat-chip>input\r\n <button (click)=\"removeObserved($event,input)\" matChipRemove [attr.aria-label]=\"'remove ' \">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n }\r\n <mat-chip (click)=\"addVariable($event)\" color=\"primary\">\r\n Variable\r\n <mat-icon matChipTrailingIcon>\r\n add\r\n </mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n <br>\r\n <mat-divider></mat-divider>\r\n\r\n\r\n </mat-list>\r\n</ng-template>\r\n\r\n<ng-template #variables>\r\n\r\n <section style=\"max-height: 360px; overflow-y: auto\">\r\n <lib-form-input-selector (change)=\"selectInput($event)\" [formInputs]=\"formInputs\">\r\n\r\n </lib-form-input-selector>\r\n\r\n <div class=\"contentBackground\" *ngIf=\"formInputs.length === 0\">\r\n <span style=\"\r\n display: block;\r\n text-align: center;\r\n font-style: italic;\r\n padding: 16px;\r\n \">No form inputs</span>\r\n </div>\r\n </section>\r\n <mat-toolbar>\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"showVariables = !showVariables\" mat-flat-button>\r\n Close\r\n <mat-icon>\r\n close\r\n </mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n</ng-template>\r\n", styles: [".mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:500px!important}mat-form-field{width:100%;background:azure}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px}mat-chip{cursor:pointer!important}\n"] }]
414
+ }], () => [{ type: i1.NgControl, decorators: [{
415
+ type: Optional
416
+ }, {
417
+ type: Self
418
+ }] }, { type: i0.ElementRef }], { id: [{
419
+ type: HostBinding
420
+ }], errors: [{
421
+ type: Input
422
+ }], mapToData: [{
423
+ type: Input
424
+ }], value: [{
425
+ type: Input
426
+ }], formInputs: [{
427
+ type: Input
428
+ }], valueChanged: [{
429
+ type: Output
430
+ }] }); })();
431
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ValidatorsConfigComponent, { className: "ValidatorsConfigComponent", filePath: "lib/components/t-dynamic-data-edit/elements/validators-config/validators-config.component.ts", lineNumber: 32 }); })();
432
+
433
+ export { ValidatorsConfigComponent };
434
+ //# sourceMappingURL=ngx-t-forms-validators-config.component-BPJZRtjT.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ngx-t-forms-validators-config.component-BPJZRtjT.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/validators-config/validators-config.component.html","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/validators-config/validators-config.component.ts"],"sourcesContent":["<div class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Custom validators are functions that take a form control as an argument and return an object of errors if the\r\n validation fails.\r\n </span>\r\n</div>\r\n\r\n<mat-list>\r\n<h5>\r\n Custom Validators\r\n</h5>\r\n <mat-chip-listbox aria-label=\"Chip select options\">\r\n @for (validator of value; track $index) {\r\n <mat-chip-option\r\n style=\"height: fit-content;padding: 8px;\"\r\n [selected]=\"edit?.id === validator.id\"\r\n (click)=\"editV(validator)\"> \r\n <span style=\"white-space: normal;\">\r\n {{isFormControlCustomValidator(validator) | titlecase}}\r\n </span>\r\n \r\n <button *ngIf=\"this.edit?.id !== validator.id\" (click)=\"remove(validator)\" matChipRemove \r\n [attr.aria-label]=\"'remove ' \">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"this.edit?.id === validator.id\" matChipTrailingIcon>\r\n check_circle\r\n </mat-icon>\r\n \r\n \r\n </mat-chip-option>\r\n }\r\n <mat-chip-option\r\n matTooltip=\"Add a new custom validator\"\r\n selectable=\"false\"\r\n style=\"cursor: pointer !important;\"\r\n highlighted=\"true\" color=\"accent\" (click)=\"addValidator()\" *ngIf=\"!edit\">\r\n <span >\r\n\r\n </span>\r\n Add validator\r\n <mat-icon matChipTrailingIcon >add</mat-icon>\r\n\r\n \r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n\r\n \r\n \r\n\r\n\r\n</mat-list>\r\n<mat-card style=\"padding: 8px;background:var(--mat-toolbar-container-background-color, var(--mat-app-surface))\"\r\n *ngIf=\"edit\">\r\n <ng-container *ngIf=\"edit && !showVariables; then validatorEditor\"></ng-container>\r\n <mat-toolbar *ngIf=\"!showVariables\" >\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"edit=undefined\" mat-button>\r\n close\r\n </button>\r\n <button mat-raised-button [disabled]=\"!edit.expression ||!edit.message\"\r\n (click)=\"saveVariable($event)\" color=\"accent\">\r\n Save Validation\r\n </button>\r\n </mat-toolbar>\r\n <ng-container *ngIf=\"edit && !!showVariables; then variables\"></ng-container>\r\n</mat-card>\r\n\r\n\r\n\r\n\r\n<ng-template #validatorEditor>\r\n <div class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n The expression is checked on value change. The message shows if it fails.\r\n <br>\r\n You can observe inputs for changes to re-evaluate the expression.\r\n </span>\r\n </div>\r\n <mat-list *ngIf=\"edit\">\r\n\r\n <mat-form-field style=\"margin-bottom: 16px;\" (click)=\"$event.stopPropagation();\" appearance=\"outline\">\r\n <mat-label >Validation Message</mat-label>\r\n <textarea matInput #textarea [value]=\"edit.message\"\r\n (input)=\"onTextChange($event,'message')\"\r\n placeholder=\"\r\n Enter message\r\n \"></textarea>\r\n\r\n <mat-hint>\r\n The message to display when the validation fails\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n <mat-form-field (click)=\"$event.stopPropagation();\" appearance=\"outline\">\r\n <mat-label >Expression</mat-label>\r\n <textarea matInput #textarea \r\n (input)=\"onTextChange($event,'expression')\"\r\n [value]=\"edit.expression\" placeholder=\"\r\n enter expression\r\n \"></textarea>\r\n\r\n <mat-hint>\r\n The expression to evaluate the validation\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n <mat-toolbar>\r\n <mat-slide-toggle (click)=\"$event.stopPropagation();\" name=\"CanOveride\" ngDefaultControl\r\n (change)=\"edit.canOverride = $event.checked\" [checked]=\"edit.canOverride\">\r\n <span style=\"margin-left: 5px;\"> Users can override this validation</span>\r\n\r\n </mat-slide-toggle>\r\n </mat-toolbar>\r\n <label >\r\n Observe inputs for changes\r\n </label>\r\n <mat-chip-listbox aria-label=\"Chip select options\">\r\n @for(input of edit.inputsObservedForChanges;track input){\r\n <mat-chip>input\r\n <button (click)=\"removeObserved($event,input)\" matChipRemove [attr.aria-label]=\"'remove ' \">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n }\r\n <mat-chip (click)=\"addVariable($event)\" color=\"primary\">\r\n Variable\r\n <mat-icon matChipTrailingIcon>\r\n add\r\n </mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n <br>\r\n <mat-divider></mat-divider>\r\n\r\n\r\n </mat-list>\r\n</ng-template>\r\n\r\n<ng-template #variables>\r\n\r\n <section style=\"max-height: 360px; overflow-y: auto\">\r\n <lib-form-input-selector (change)=\"selectInput($event)\" [formInputs]=\"formInputs\">\r\n\r\n </lib-form-input-selector>\r\n\r\n <div class=\"contentBackground\" *ngIf=\"formInputs.length === 0\">\r\n <span style=\"\r\n display: block;\r\n text-align: center;\r\n font-style: italic;\r\n padding: 16px;\r\n \">No form inputs</span>\r\n </div>\r\n </section>\r\n <mat-toolbar>\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"showVariables = !showVariables\" mat-flat-button>\r\n Close\r\n <mat-icon>\r\n close\r\n </mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n</ng-template>\r\n","import { Component, ElementRef, EventEmitter, HostBinding, Input, OnInit, Optional, Output, Self } from '@angular/core';\r\nimport { MenuCloseReason } from '@angular/material/menu';\r\n\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport { ElementTypes, FormControlCustomValidatorsInterface, IMultiple } from 'ngx-t-forms-types';\r\nimport { FormColumnInputs } from 'ngx-t-forms-types';\r\nimport { getInputIllustration } from '../../../../shared/functions/getInputIllustration';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormInputSelectorComponent } from '../form-input-selector/form-input-selector.component';\r\n\r\nimport { FormsModule, NgControl } from '@angular/forms';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\n\r\n@Component({\r\n selector: 'app-validators-config',\r\n templateUrl: './validators-config.component.html',\r\n styleUrls: ['./validators-config.component.scss'],\r\n standalone: true,\r\n imports:[\r\n MatModulesModule,\r\n CommonModule,\r\n FormInputSelectorComponent,\r\n FormsModule\r\n ],\r\n providers: [{ provide: MatFormFieldControl, useExisting: ValidatorsConfigComponent}],\r\n})\r\nexport class ValidatorsConfigComponent implements OnInit,MatFormFieldControl<FormControlCustomValidatorsInterface []> {\r\n \r\n\r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n \r\n @HostBinding() id = `app-validators-config-${ValidatorsConfigComponent.nextId++}`;\r\n \r\n placeholder: string = ''\r\n constructor(@Optional() @Self() public ngControl: NgControl, private _elementRef: ElementRef<HTMLElement>,) { }\r\n focused: boolean = false;\r\n get empty() {\r\n return !this.value\r\n }\r\n get shouldLabelFloat() {\r\n return this.focused || !this.empty;\r\n }\r\n required: boolean = false;\r\n disabled: boolean = false;\r\nget errorState(): boolean {\r\n const hasError = !!this.ngControl?.control?.errors || (this.errors||[]).length > 0 && this.touched\r\n return !this.value && !!this.required || hasError\r\n }\r\n \r\n controlType?: string | undefined;\r\n autofilled?: boolean | undefined;\r\n userAriaDescribedBy?: string | undefined;\r\n disableAutomaticLabeling?: boolean | undefined;\r\n setDescribedByIds(ids: string[]) {\r\n // Ensure the component view is initialized\r\n if (this._elementRef && this._elementRef.nativeElement) {\r\n const controlElement = this._elementRef.nativeElement.querySelector('.app-validators-config');\r\n // Check if the controlElement exists before attempting to set its attribute\r\n if (controlElement) {\r\n controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n }\r\n }\r\n }\r\n onContainerClick(event: MouseEvent): void {\r\n this.markAsTouched();\r\n this.stateChanges.next();\r\n }\r\n @Input() errors:IConfigElementError[] |undefined = [];\r\n touched: boolean = false;\r\n onTouched = () => {};\r\n markAsTouched() {\r\n console.log('markAsTouched') \r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n } \r\n \r\n @Input() mapToData:FormColumnInputs | undefined = undefined;\r\n @Input() value!: (FormControlCustomValidatorsInterface )[];\r\n @Input() formInputs: Array<FormColumnInputs> = []\r\n @Output() valueChanged = new EventEmitter<any>();\r\n\r\n\r\n ngOnInit() {}\r\n\r\n edit:FormControlCustomValidatorsInterface | undefined\r\n menuClosed(event:MenuCloseReason){\r\n\r\n if (this.edit) {\r\n const editIndex = this.value.findIndex((item) => {\r\n if (typeof item === 'string') {\r\n return false;\r\n }\r\n return item.id === this.edit?.id;\r\n });\r\n\r\n if (editIndex !== -1) {\r\n this.value[editIndex] = this.edit;\r\n } \r\n this.valueChanged.emit([...this.value])\r\n\r\n\r\n }\r\n\r\n this.edit = undefined\r\n }\r\n showVariables :boolean = false\r\n editV(validator:string | FormControlCustomValidatorsInterface){\r\n if(this.edit?.id === (validator as FormControlCustomValidatorsInterface).id){\r\n this.edit = undefined\r\n return\r\n }\r\n this.edit = validator as any\r\n }\r\n remove(validator:FormControlCustomValidatorsInterface|string){\r\n const indexOfV = this.value.findIndex((item) => {\r\n if (typeof item === 'string') {\r\n return item === validator;\r\n }\r\n return item.id === (validator as FormControlCustomValidatorsInterface).id;\r\n }\r\n )\r\n\r\n\r\n this.value = [...this.value].filter((item,i)=>indexOfV !== i)\r\n this.valueChanged.emit([...this.value])\r\n\r\n }\r\n search: string = '';\r\n\r\n getInputIcon(element: ElementTypes) {\r\n\r\n return getInputIllustration(element)\r\n }\r\n \r\n selectInput(inputId: string) {\r\n const input = this.formInputs.find((input) => input.id === inputId)\r\n if(!input){\r\n return\r\n }\r\n if(input?.multipleInputInEditId){\r\n throw new Error('multipleInputInEditId is not supported')\r\n }\r\n if(!!this.edit){\r\n this.edit.expression = (this.edit?.expression || '' ).concat(input?.formControlName || '')\r\n if(!this.edit.inputsObservedForChanges.find((i)=>i.inputId === (input?.originalId || input?.id))){\r\n this.edit.inputsObservedForChanges.push({\r\n inputId: input?.originalId || input?.id,\r\n variable: input?.formControlName\r\n })\r\n }\r\n \r\n }\r\n \r\n\r\n this.showVariables = false\r\n\r\n }\r\n\r\n addVariable(event:any){\r\n this.showVariables = true\r\n event.stopPropagation()\r\n event.preventDefault()\r\n\r\n }\r\n getMultipleFormInputs(input: IMultiple) {\r\n if (\r\n input.element === ElementTypes.MultipleInput&&\r\n this.mapToData?.multipleInputInEditId === input.id\r\n ) {\r\n return input.formInputs;\r\n }\r\n return [];\r\n }\r\n returnExpression(){\r\n return this.edit?.expression.replace(/(word)/g, '<span style=\\'color: blue\\'>$1</span>')\r\n }\r\n addValidator(){\r\n this.edit = {\r\n message: '',\r\n expression: '',\r\n canOverride: false,\r\n inputsObservedForChanges: []\r\n } as any\r\n }\r\n\r\n onTextChange(event:Event,key:string){\r\n if(!this.edit) {\r\n this.edit = {} as any\r\n }\r\n (this.edit as any)[key] = (event.target as HTMLInputElement).value\r\n }\r\n saveVariable(event:any){\r\n console.log(this.edit)\r\n if(!this.edit) return;\r\n const id = uuidv4()\r\n const val = {...this.edit, id}\r\n this.value = [...this.value, val]\r\n this.valueChanged.emit([...this.value])\r\n this.edit = undefined\r\n \r\n \r\n\r\n\r\n \r\n }\r\n removeObserved(event:any,item:{ inputId: string; variable: string; }){\r\n const i = this.edit?.inputsObservedForChanges.findIndex((i:any)=>i === item)\r\n if(i !== undefined && i !== -1 && this.edit){\r\n this.edit?.inputsObservedForChanges.splice(i, 1);\r\n this.edit.expression = this.edit?.expression.replace(new RegExp(`\\\\b${item}\\\\b`, 'g'), '')\r\n\r\n }\r\n\r\n event.stopPropagation()\r\n event.preventDefault()\r\n }\r\n isFormControlCustomValidator(validator: string |FormControlCustomValidatorsInterface ){\r\n if(typeof validator == 'string'){\r\n return validator\r\n }\r\n return validator.message\r\n\r\n }\r\n}\r\n\r\n\r\n\r\n"],"names":["uuidv4","i5","i7","i8","i9","i10","i11","i13"],"mappings":"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"}
@@ -5,23 +5,23 @@ import { ElementTypes } from 'ngx-t-forms-types';
5
5
  import { g as getInputIllustration } from './ngx-t-forms-getInputIllustration-GCSKx5e5.mjs';
6
6
  import * as i2$2 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
- import { FormInputSelectorComponent } from './ngx-t-forms-form-input-selector.component-DbKhNmVM.mjs';
8
+ import { FormInputSelectorComponent } from './ngx-t-forms-form-input-selector.component-CB03sPjA.mjs';
9
9
  import * as i1 from '@angular/forms';
10
10
  import { FormsModule } from '@angular/forms';
11
- import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-DtoFU6uQ.mjs';
12
- import * as i4$2 from '@angular/material/form-field';
11
+ import { M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-1Roar4qK.mjs';
12
+ import * as i3$1 from '@angular/material/form-field';
13
13
  import { MatFormFieldControl } from '@angular/material/form-field';
14
14
  import { Subject } from 'rxjs';
15
15
  import * as i2 from '@angular/material/button';
16
16
  import * as i3 from '@angular/material/card';
17
17
  import * as i4 from '@angular/material/chips';
18
18
  import * as i4$1 from '@angular/material/divider';
19
- import * as i5 from '@angular/material/icon';
20
- import * as i6 from '@angular/material/list';
19
+ import * as i6 from '@angular/material/icon';
20
+ import * as i6$1 from '@angular/material/list';
21
21
  import * as i2$1 from '@angular/material/slide-toggle';
22
22
  import * as i9 from '@angular/material/toolbar';
23
23
  import * as i8 from '@angular/material/tooltip';
24
- import * as i5$1 from '@angular/material/input';
24
+ import * as i12 from '@angular/material/input';
25
25
 
26
26
  class ValidatorsConfigComponent {
27
27
  static { this.nextId = 0; }
@@ -184,7 +184,7 @@ class ValidatorsConfigComponent {
184
184
  return validator.message;
185
185
  }
186
186
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ValidatorsConfigComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
187
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: ValidatorsConfigComponent, isStandalone: true, selector: "app-validators-config", inputs: { errors: "errors", mapToData: "mapToData", value: "value", formInputs: "formInputs" }, outputs: { valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: ValidatorsConfigComponent }], ngImport: i0, template: "<div class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Custom validators are functions that take a form control as an argument and return an object of errors if the\r\n validation fails.\r\n </span>\r\n</div>\r\n\r\n<mat-list>\r\n<h5>\r\n Custom Validators\r\n</h5>\r\n <mat-chip-listbox aria-label=\"Chip select options\">\r\n @for (validator of value; track $index) {\r\n <mat-chip-option\r\n style=\"height: fit-content;padding: 8px;\"\r\n [selected]=\"edit?.id === validator.id\"\r\n (click)=\"editV(validator)\"> \r\n <span style=\"white-space: normal;\">\r\n {{isFormControlCustomValidator(validator) | titlecase}}\r\n </span>\r\n \r\n <button *ngIf=\"this.edit?.id !== validator.id\" (click)=\"remove(validator)\" matChipRemove \r\n [attr.aria-label]=\"'remove ' \">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"this.edit?.id === validator.id\" matChipTrailingIcon>\r\n check_circle\r\n </mat-icon>\r\n \r\n \r\n </mat-chip-option>\r\n }\r\n <mat-chip-option\r\n matTooltip=\"Add a new custom validator\"\r\n selectable=\"false\"\r\n style=\"cursor: pointer !important;\"\r\n highlighted=\"true\" color=\"accent\" (click)=\"addValidator()\" *ngIf=\"!edit\">\r\n <span >\r\n\r\n </span>\r\n Add validator\r\n <mat-icon matChipTrailingIcon >add</mat-icon>\r\n\r\n \r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n\r\n \r\n \r\n\r\n\r\n</mat-list>\r\n<mat-card style=\"padding: 8px;background:var(--mat-toolbar-container-background-color, var(--mat-app-surface))\"\r\n *ngIf=\"edit\">\r\n <ng-container *ngIf=\"edit && !showVariables; then validatorEditor\"></ng-container>\r\n <mat-toolbar *ngIf=\"!showVariables\" >\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"edit=undefined\" mat-button>\r\n close\r\n </button>\r\n <button mat-raised-button [disabled]=\"!edit.expression ||!edit.message\"\r\n (click)=\"saveVariable($event)\" color=\"accent\">\r\n Save Validation\r\n </button>\r\n </mat-toolbar>\r\n <ng-container *ngIf=\"edit && !!showVariables; then variables\"></ng-container>\r\n</mat-card>\r\n\r\n\r\n\r\n\r\n<ng-template #validatorEditor>\r\n <div class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n The expression is checked on value change. The message shows if it fails.\r\n <br>\r\n You can observe inputs for changes to re-evaluate the expression.\r\n </span>\r\n </div>\r\n <mat-list *ngIf=\"edit\">\r\n\r\n <mat-form-field style=\"margin-bottom: 16px;\" (click)=\"$event.stopPropagation();\" appearance=\"outline\">\r\n <mat-label >Validation Message</mat-label>\r\n <textarea matInput #textarea [value]=\"edit.message\"\r\n (input)=\"onTextChange($event,'message')\"\r\n placeholder=\"\r\n Enter message\r\n \"></textarea>\r\n\r\n <mat-hint>\r\n The message to display when the validation fails\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n <mat-form-field (click)=\"$event.stopPropagation();\" appearance=\"outline\">\r\n <mat-label >Expression</mat-label>\r\n <textarea matInput #textarea \r\n (input)=\"onTextChange($event,'expression')\"\r\n [value]=\"edit.expression\" placeholder=\"\r\n enter expression\r\n \"></textarea>\r\n\r\n <mat-hint>\r\n The expression to evaluate the validation\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n <mat-toolbar>\r\n <mat-slide-toggle (click)=\"$event.stopPropagation();\" name=\"CanOveride\" ngDefaultControl\r\n (change)=\"edit.canOverride = $event.checked\" [checked]=\"edit.canOverride\">\r\n <span style=\"margin-left: 5px;\"> Users can override this validation</span>\r\n\r\n </mat-slide-toggle>\r\n </mat-toolbar>\r\n <label >\r\n Observe inputs for changes\r\n </label>\r\n <mat-chip-listbox aria-label=\"Chip select options\">\r\n @for(input of edit.inputsObservedForChanges;track input){\r\n <mat-chip>input\r\n <button (click)=\"removeObserved($event,input)\" matChipRemove [attr.aria-label]=\"'remove ' \">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n }\r\n <mat-chip (click)=\"addVariable($event)\" color=\"primary\">\r\n Variable\r\n <mat-icon matChipTrailingIcon>\r\n add\r\n </mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n <br>\r\n <mat-divider></mat-divider>\r\n\r\n\r\n </mat-list>\r\n</ng-template>\r\n\r\n<ng-template #variables>\r\n\r\n <section style=\"max-height: 360px; overflow-y: auto\">\r\n <lib-form-input-selector (change)=\"selectInput($event)\" [formInputs]=\"formInputs\">\r\n\r\n </lib-form-input-selector>\r\n\r\n <div class=\"contentBackground\" *ngIf=\"formInputs.length === 0\">\r\n <span style=\"\r\n display: block;\r\n text-align: center;\r\n font-style: italic;\r\n padding: 16px;\r\n \">No form inputs</span>\r\n </div>\r\n </section>\r\n <mat-toolbar>\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"showVariables = !showVariables\" mat-flat-button>\r\n Close\r\n <mat-icon>\r\n close\r\n </mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n</ng-template>\r\n", styles: [".mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:500px!important}mat-form-field{width:100%;background:azure}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px}mat-chip{cursor:pointer!important}\n"], dependencies: [{ 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: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i4.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i4.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: i4.MatChipTrailingIcon, selector: "mat-chip-trailing-icon, [matChipTrailingIcon]" }, { kind: "component", type: i4$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i4$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i2$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i5$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$2.TitleCasePipe, name: "titlecase" }, { kind: "component", type: FormInputSelectorComponent, selector: "lib-form-input-selector", inputs: ["errors", "value", "formInputs", "disabled"], outputs: ["change"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] }); }
187
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.2", type: ValidatorsConfigComponent, isStandalone: true, selector: "app-validators-config", inputs: { errors: "errors", mapToData: "mapToData", value: "value", formInputs: "formInputs" }, outputs: { valueChanged: "valueChanged" }, host: { properties: { "id": "this.id" } }, providers: [{ provide: MatFormFieldControl, useExisting: ValidatorsConfigComponent }], ngImport: i0, template: "<div class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n Custom validators are functions that take a form control as an argument and return an object of errors if the\r\n validation fails.\r\n </span>\r\n</div>\r\n\r\n<mat-list>\r\n<h5>\r\n Custom Validators\r\n</h5>\r\n <mat-chip-listbox aria-label=\"Chip select options\">\r\n @for (validator of value; track $index) {\r\n <mat-chip-option\r\n style=\"height: fit-content;padding: 8px;\"\r\n [selected]=\"edit?.id === validator.id\"\r\n (click)=\"editV(validator)\"> \r\n <span style=\"white-space: normal;\">\r\n {{isFormControlCustomValidator(validator) | titlecase}}\r\n </span>\r\n \r\n <button *ngIf=\"this.edit?.id !== validator.id\" (click)=\"remove(validator)\" matChipRemove \r\n [attr.aria-label]=\"'remove ' \">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n <mat-icon *ngIf=\"this.edit?.id === validator.id\" matChipTrailingIcon>\r\n check_circle\r\n </mat-icon>\r\n \r\n \r\n </mat-chip-option>\r\n }\r\n <mat-chip-option\r\n matTooltip=\"Add a new custom validator\"\r\n selectable=\"false\"\r\n style=\"cursor: pointer !important;\"\r\n highlighted=\"true\" color=\"accent\" (click)=\"addValidator()\" *ngIf=\"!edit\">\r\n <span >\r\n\r\n </span>\r\n Add validator\r\n <mat-icon matChipTrailingIcon >add</mat-icon>\r\n\r\n \r\n </mat-chip-option>\r\n </mat-chip-listbox>\r\n\r\n \r\n \r\n\r\n\r\n</mat-list>\r\n<mat-card style=\"padding: 8px;background:var(--mat-toolbar-container-background-color, var(--mat-app-surface))\"\r\n *ngIf=\"edit\">\r\n <ng-container *ngIf=\"edit && !showVariables; then validatorEditor\"></ng-container>\r\n <mat-toolbar *ngIf=\"!showVariables\" >\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"edit=undefined\" mat-button>\r\n close\r\n </button>\r\n <button mat-raised-button [disabled]=\"!edit.expression ||!edit.message\"\r\n (click)=\"saveVariable($event)\" color=\"accent\">\r\n Save Validation\r\n </button>\r\n </mat-toolbar>\r\n <ng-container *ngIf=\"edit && !!showVariables; then variables\"></ng-container>\r\n</mat-card>\r\n\r\n\r\n\r\n\r\n<ng-template #validatorEditor>\r\n <div class=\"tree-instructions\">\r\n <mat-icon class=\"info-icon\" color=\"primary\">info</mat-icon>\r\n <span>\r\n The expression is checked on value change. The message shows if it fails.\r\n <br>\r\n You can observe inputs for changes to re-evaluate the expression.\r\n </span>\r\n </div>\r\n <mat-list *ngIf=\"edit\">\r\n\r\n <mat-form-field style=\"margin-bottom: 16px;\" (click)=\"$event.stopPropagation();\" appearance=\"outline\">\r\n <mat-label >Validation Message</mat-label>\r\n <textarea matInput #textarea [value]=\"edit.message\"\r\n (input)=\"onTextChange($event,'message')\"\r\n placeholder=\"\r\n Enter message\r\n \"></textarea>\r\n\r\n <mat-hint>\r\n The message to display when the validation fails\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n\r\n\r\n\r\n\r\n <mat-form-field (click)=\"$event.stopPropagation();\" appearance=\"outline\">\r\n <mat-label >Expression</mat-label>\r\n <textarea matInput #textarea \r\n (input)=\"onTextChange($event,'expression')\"\r\n [value]=\"edit.expression\" placeholder=\"\r\n enter expression\r\n \"></textarea>\r\n\r\n <mat-hint>\r\n The expression to evaluate the validation\r\n </mat-hint>\r\n\r\n </mat-form-field>\r\n <mat-toolbar>\r\n <mat-slide-toggle (click)=\"$event.stopPropagation();\" name=\"CanOveride\" ngDefaultControl\r\n (change)=\"edit.canOverride = $event.checked\" [checked]=\"edit.canOverride\">\r\n <span style=\"margin-left: 5px;\"> Users can override this validation</span>\r\n\r\n </mat-slide-toggle>\r\n </mat-toolbar>\r\n <label >\r\n Observe inputs for changes\r\n </label>\r\n <mat-chip-listbox aria-label=\"Chip select options\">\r\n @for(input of edit.inputsObservedForChanges;track input){\r\n <mat-chip>input\r\n <button (click)=\"removeObserved($event,input)\" matChipRemove [attr.aria-label]=\"'remove ' \">\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n }\r\n <mat-chip (click)=\"addVariable($event)\" color=\"primary\">\r\n Variable\r\n <mat-icon matChipTrailingIcon>\r\n add\r\n </mat-icon>\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n\r\n <br>\r\n <mat-divider></mat-divider>\r\n\r\n\r\n </mat-list>\r\n</ng-template>\r\n\r\n<ng-template #variables>\r\n\r\n <section style=\"max-height: 360px; overflow-y: auto\">\r\n <lib-form-input-selector (change)=\"selectInput($event)\" [formInputs]=\"formInputs\">\r\n\r\n </lib-form-input-selector>\r\n\r\n <div class=\"contentBackground\" *ngIf=\"formInputs.length === 0\">\r\n <span style=\"\r\n display: block;\r\n text-align: center;\r\n font-style: italic;\r\n padding: 16px;\r\n \">No form inputs</span>\r\n </div>\r\n </section>\r\n <mat-toolbar>\r\n <span class=\"spacer\"></span>\r\n <button (click)=\"showVariables = !showVariables\" mat-flat-button>\r\n Close\r\n <mat-icon>\r\n close\r\n </mat-icon>\r\n </button>\r\n </mat-toolbar>\r\n</ng-template>\r\n", styles: [".mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:500px!important}mat-form-field{width:100%;background:azure}.tree-instructions{display:flex;align-items:center;gap:8px;padding:12px;background:azure;border-radius:4px;margin-bottom:16px}.info-icon{min-width:38px}mat-chip{cursor:pointer!important}\n"], dependencies: [{ 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: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i4.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i4.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "directive", type: i4.MatChipRemove, selector: "[matChipRemove]" }, { kind: "directive", type: i4.MatChipTrailingIcon, selector: "mat-chip-trailing-icon, [matChipTrailingIcon]" }, { kind: "component", type: i4$1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6$1.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i3$1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3$1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i3$1.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i2$1.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon", "disabledInteractive"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i9.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i12.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2$2.TitleCasePipe, name: "titlecase" }, { kind: "component", type: FormInputSelectorComponent, selector: "lib-form-input-selector", inputs: ["errors", "value", "formInputs", "disabled"], outputs: ["change"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }] }); }
188
188
  }
189
189
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImport: i0, type: ValidatorsConfigComponent, decorators: [{
190
190
  type: Component,
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.2", ngImpor
213
213
  }] } });
214
214
 
215
215
  export { ValidatorsConfigComponent };
216
- //# sourceMappingURL=ngx-t-forms-validators-config.component-SyL_Vln8.mjs.map
216
+ //# sourceMappingURL=ngx-t-forms-validators-config.component-CGXCCl45.mjs.map