ngx-t-forms 2.0.9 → 2.0.10

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 (85) hide show
  1. package/fesm2022/{ngx-t-forms-api-value-access-rules.component-DjZDnTHz.mjs → ngx-t-forms-api-value-access-rules.component-N3ygU2OC.mjs} +2 -2
  2. package/fesm2022/{ngx-t-forms-api-value-access-rules.component-DjZDnTHz.mjs.map → ngx-t-forms-api-value-access-rules.component-N3ygU2OC.mjs.map} +1 -1
  3. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-E3l7DQo7.mjs → ngx-t-forms-calculated-field-rules.component-BLWcl6vn.mjs} +3 -3
  4. package/fesm2022/{ngx-t-forms-calculated-field-rules.component-E3l7DQo7.mjs.map → ngx-t-forms-calculated-field-rules.component-BLWcl6vn.mjs.map} +1 -1
  5. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-sOC54w4T.mjs → ngx-t-forms-config-mscoa-additional-inputs.component-CPerh2tW.mjs} +2 -2
  6. package/fesm2022/{ngx-t-forms-config-mscoa-additional-inputs.component-sOC54w4T.mjs.map → ngx-t-forms-config-mscoa-additional-inputs.component-CPerh2tW.mjs.map} +1 -1
  7. package/fesm2022/{ngx-t-forms-form-input-selector.component-CB03sPjA.mjs → ngx-t-forms-form-input-selector.component-CPP9vk2K.mjs} +2 -2
  8. package/fesm2022/{ngx-t-forms-form-input-selector.component-CB03sPjA.mjs.map → ngx-t-forms-form-input-selector.component-CPP9vk2K.mjs.map} +1 -1
  9. package/fesm2022/{ngx-t-forms-form-json-view.component-C1AZujJH.mjs → ngx-t-forms-form-json-view.component-DrYn49ee.mjs} +2 -2
  10. package/fesm2022/{ngx-t-forms-form-json-view.component-C1AZujJH.mjs.map → ngx-t-forms-form-json-view.component-DrYn49ee.mjs.map} +1 -1
  11. package/fesm2022/{ngx-t-forms-form-section-stepper.component-C_dciQhe.mjs → ngx-t-forms-form-section-stepper.component-8D5I7skU.mjs} +4 -4
  12. package/fesm2022/{ngx-t-forms-form-section-stepper.component-C_dciQhe.mjs.map → ngx-t-forms-form-section-stepper.component-8D5I7skU.mjs.map} +1 -1
  13. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-CPIcPREp.mjs → ngx-t-forms-forms-builder-menu.component-CIpEQV76.mjs} +4 -4
  14. package/fesm2022/{ngx-t-forms-forms-builder-menu.component-CPIcPREp.mjs.map → ngx-t-forms-forms-builder-menu.component-CIpEQV76.mjs.map} +1 -1
  15. package/fesm2022/{ngx-t-forms-input-editor.component-__grERM8.mjs → ngx-t-forms-input-editor.component-S5vwN832.mjs} +2 -2
  16. package/fesm2022/{ngx-t-forms-input-editor.component-__grERM8.mjs.map → ngx-t-forms-input-editor.component-S5vwN832.mjs.map} +1 -1
  17. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-DcdHYqhN.mjs → ngx-t-forms-mat-chip-list-editor.component-cuh6pUIa.mjs} +2 -2
  18. package/fesm2022/{ngx-t-forms-mat-chip-list-editor.component-DcdHYqhN.mjs.map → ngx-t-forms-mat-chip-list-editor.component-cuh6pUIa.mjs.map} +1 -1
  19. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-C9rintm4.mjs → ngx-t-forms-mat-slider-editor.component-0oKVJ6ZR.mjs} +2 -2
  20. package/fesm2022/{ngx-t-forms-mat-slider-editor.component-C9rintm4.mjs.map → ngx-t-forms-mat-slider-editor.component-0oKVJ6ZR.mjs.map} +1 -1
  21. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-CItK6kXf.mjs → ngx-t-forms-mat-slider-toggle-editor.component-CH979aIj.mjs} +2 -2
  22. package/fesm2022/{ngx-t-forms-mat-slider-toggle-editor.component-CItK6kXf.mjs.map → ngx-t-forms-mat-slider-toggle-editor.component-CH979aIj.mjs.map} +1 -1
  23. package/fesm2022/{ngx-t-forms-missing-form-configs.component-Da3SdUn6.mjs → ngx-t-forms-missing-form-configs.component-DO5tei0F.mjs} +2 -2
  24. package/fesm2022/{ngx-t-forms-missing-form-configs.component-Da3SdUn6.mjs.map → ngx-t-forms-missing-form-configs.component-DO5tei0F.mjs.map} +1 -1
  25. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-4hrEpLk3.mjs → ngx-t-forms-mscoa-segment-config.component-DVLk9GU0.mjs} +2 -2
  26. package/fesm2022/{ngx-t-forms-mscoa-segment-config.component-4hrEpLk3.mjs.map → ngx-t-forms-mscoa-segment-config.component-DVLk9GU0.mjs.map} +1 -1
  27. package/fesm2022/{ngx-t-forms-ngx-t-forms-1Roar4qK.mjs → ngx-t-forms-ngx-t-forms-dXesQz32.mjs} +8 -6
  28. package/fesm2022/ngx-t-forms-ngx-t-forms-dXesQz32.mjs.map +1 -0
  29. package/fesm2022/{ngx-t-forms-pipeline-generator.component-BQDykLNH.mjs → ngx-t-forms-pipeline-generator.component-CwqafpEq.mjs} +2 -2
  30. package/fesm2022/{ngx-t-forms-pipeline-generator.component-BQDykLNH.mjs.map → ngx-t-forms-pipeline-generator.component-CwqafpEq.mjs.map} +1 -1
  31. package/fesm2022/{ngx-t-forms-required-inputs.component-BGK3DNu0.mjs → ngx-t-forms-required-inputs.component-Cle4WsPa.mjs} +2 -2
  32. package/fesm2022/{ngx-t-forms-required-inputs.component-BGK3DNu0.mjs.map → ngx-t-forms-required-inputs.component-Cle4WsPa.mjs.map} +1 -1
  33. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-CCaRUSVQ.mjs → ngx-t-forms-rest-api-call-setup.component-N7z59aKu.mjs} +2 -2
  34. package/fesm2022/{ngx-t-forms-rest-api-call-setup.component-CCaRUSVQ.mjs.map → ngx-t-forms-rest-api-call-setup.component-N7z59aKu.mjs.map} +1 -1
  35. package/fesm2022/{ngx-t-forms-section-report.component-C8Ja_G_3.mjs → ngx-t-forms-section-report.component-CRJIa-3A.mjs} +2 -2
  36. package/fesm2022/{ngx-t-forms-section-report.component-C8Ja_G_3.mjs.map → ngx-t-forms-section-report.component-CRJIa-3A.mjs.map} +1 -1
  37. package/fesm2022/{ngx-t-forms-selection-options-editor.component-cYkn1O48.mjs → ngx-t-forms-selection-options-editor.component-Cm41dBKq.mjs} +2 -2
  38. package/fesm2022/{ngx-t-forms-selection-options-editor.component-cYkn1O48.mjs.map → ngx-t-forms-selection-options-editor.component-Cm41dBKq.mjs.map} +1 -1
  39. package/fesm2022/{ngx-t-forms-validators-config.component-CGXCCl45.mjs → ngx-t-forms-validators-config.component-CAdn7-Nn.mjs} +3 -3
  40. package/fesm2022/{ngx-t-forms-validators-config.component-CGXCCl45.mjs.map → ngx-t-forms-validators-config.component-CAdn7-Nn.mjs.map} +1 -1
  41. package/fesm2022/ngx-t-forms.mjs +1 -1
  42. package/lib/components/forms/forms.component.d.ts +1 -1
  43. package/lib/components/t-form-input/elements/editor-input-element/core/form-input-rich-text-editor/config.d.ts +1 -0
  44. package/package.json +1 -1
  45. package/fesm2022/ngx-t-forms-api-value-access-rules.component-Zg1ddSDb.mjs +0 -813
  46. package/fesm2022/ngx-t-forms-api-value-access-rules.component-Zg1ddSDb.mjs.map +0 -1
  47. package/fesm2022/ngx-t-forms-calculated-field-rules.component-ZepKycLR.mjs +0 -532
  48. package/fesm2022/ngx-t-forms-calculated-field-rules.component-ZepKycLR.mjs.map +0 -1
  49. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DLnB3R7t.mjs +0 -297
  50. package/fesm2022/ngx-t-forms-config-mscoa-additional-inputs.component-DLnB3R7t.mjs.map +0 -1
  51. package/fesm2022/ngx-t-forms-form-input-selector.component-BjwzDiCY.mjs +0 -187
  52. package/fesm2022/ngx-t-forms-form-input-selector.component-BjwzDiCY.mjs.map +0 -1
  53. package/fesm2022/ngx-t-forms-form-json-view.component-CqtTYCRH.mjs +0 -28
  54. package/fesm2022/ngx-t-forms-form-json-view.component-CqtTYCRH.mjs.map +0 -1
  55. package/fesm2022/ngx-t-forms-form-section-stepper.component-Ba5WCLzp.mjs +0 -673
  56. package/fesm2022/ngx-t-forms-form-section-stepper.component-Ba5WCLzp.mjs.map +0 -1
  57. package/fesm2022/ngx-t-forms-forms-builder-menu.component-DbxEBvpt.mjs +0 -735
  58. package/fesm2022/ngx-t-forms-forms-builder-menu.component-DbxEBvpt.mjs.map +0 -1
  59. package/fesm2022/ngx-t-forms-input-editor.component-BnsC-jsN.mjs +0 -445
  60. package/fesm2022/ngx-t-forms-input-editor.component-BnsC-jsN.mjs.map +0 -1
  61. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DS6s98ZX.mjs +0 -111
  62. package/fesm2022/ngx-t-forms-mat-chip-list-editor.component-DS6s98ZX.mjs.map +0 -1
  63. package/fesm2022/ngx-t-forms-mat-slider-editor.component-ChiiJYK2.mjs +0 -130
  64. package/fesm2022/ngx-t-forms-mat-slider-editor.component-ChiiJYK2.mjs.map +0 -1
  65. package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DFcLzkSF.mjs +0 -171
  66. package/fesm2022/ngx-t-forms-mat-slider-toggle-editor.component-DFcLzkSF.mjs.map +0 -1
  67. package/fesm2022/ngx-t-forms-missing-form-configs.component-DNkGCH0e.mjs +0 -104
  68. package/fesm2022/ngx-t-forms-missing-form-configs.component-DNkGCH0e.mjs.map +0 -1
  69. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-CrHAIRAw.mjs +0 -455
  70. package/fesm2022/ngx-t-forms-mscoa-segment-config.component-CrHAIRAw.mjs.map +0 -1
  71. package/fesm2022/ngx-t-forms-ngx-t-forms-1Roar4qK.mjs.map +0 -1
  72. package/fesm2022/ngx-t-forms-ngx-t-forms-DaAFB-HX.mjs +0 -14694
  73. package/fesm2022/ngx-t-forms-ngx-t-forms-DaAFB-HX.mjs.map +0 -1
  74. package/fesm2022/ngx-t-forms-pipeline-generator.component-U0d8jQKW.mjs +0 -1362
  75. package/fesm2022/ngx-t-forms-pipeline-generator.component-U0d8jQKW.mjs.map +0 -1
  76. package/fesm2022/ngx-t-forms-required-inputs.component-S3cbA-zG.mjs +0 -383
  77. package/fesm2022/ngx-t-forms-required-inputs.component-S3cbA-zG.mjs.map +0 -1
  78. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-DDg4fCFx.mjs +0 -457
  79. package/fesm2022/ngx-t-forms-rest-api-call-setup.component-DDg4fCFx.mjs.map +0 -1
  80. package/fesm2022/ngx-t-forms-section-report.component-C_h0KIR4.mjs +0 -314
  81. package/fesm2022/ngx-t-forms-section-report.component-C_h0KIR4.mjs.map +0 -1
  82. package/fesm2022/ngx-t-forms-selection-options-editor.component-CllhwZ5Y.mjs +0 -231
  83. package/fesm2022/ngx-t-forms-selection-options-editor.component-CllhwZ5Y.mjs.map +0 -1
  84. package/fesm2022/ngx-t-forms-validators-config.component-BPJZRtjT.mjs +0 -434
  85. package/fesm2022/ngx-t-forms-validators-config.component-BPJZRtjT.mjs.map +0 -1
@@ -1,457 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, Optional, Self, HostBinding } from '@angular/core';
3
- import * as i2 from '@angular/common';
4
- import { CommonModule } from '@angular/common';
5
- import * as i1$1 from '@angular/forms';
6
- import { FormsModule } from '@angular/forms';
7
- import { e as TreeComponent, M as MatModulesModule } from './ngx-t-forms-ngx-t-forms-DaAFB-HX.mjs';
8
- import * as i1 from '@angular/common/http';
9
- import { HttpErrorResponse } from '@angular/common/http';
10
- import { BehaviorSubject, take, tap, catchError, throwError, Subject } from 'rxjs';
11
- import { c as convertPostmanFolderItemsToTree } from './ngx-t-forms-convertPostmanCollectionToTree-DktdVBeQ.mjs';
12
- import * as i2$1 from '@angular/material/button';
13
- import * as i4 from '@angular/material/divider';
14
- import * as i6 from '@angular/material/icon';
15
- import * as i7 from '@angular/material/progress-spinner';
16
- import * as i9 from '@angular/material/toolbar';
17
- import * as i8 from '@angular/material/tooltip';
18
- import * as i3 from '@angular/material/tree';
19
- import { DataSources } from 'ngx-t-forms-types';
20
- import { MatFormFieldControl } from '@angular/material/form-field';
21
-
22
- // Update the filter function signature
23
- function filterCollectionItems(collections, searchKey) {
24
- const items = collections.collection.item;
25
- const searchText = searchKey.trim().toLowerCase();
26
- if (!searchText) {
27
- return items;
28
- }
29
- return items.filter(collection => {
30
- return searchInItems(collection.item, searchText);
31
- });
32
- }
33
- function searchInItems(items, searchText) {
34
- if (!items)
35
- return false;
36
- for (const item of items) {
37
- // Check if current item matches search
38
- if (item.name?.toLowerCase().includes(searchText) ||
39
- item.description?.toLowerCase().includes(searchText)) {
40
- return true;
41
- }
42
- // Recursively search in nested items
43
- if (item.item && searchInItems(item.item, searchText)) {
44
- return true;
45
- }
46
- }
47
- return false;
48
- }
49
-
50
- function methodColor(method) {
51
- switch (method) {
52
- case 'GET':
53
- return 'green';
54
- case 'POST':
55
- return 'chocolate';
56
- case 'PUT':
57
- return 'yellow';
58
- case 'DELETE':
59
- return 'red';
60
- default:
61
- return 'currentColor';
62
- }
63
- }
64
-
65
- function PostmanCollectionsComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelementStart(0, "div", 0);
67
- i0.ɵɵelement(1, "mat-spinner");
68
- i0.ɵɵelementEnd();
69
- } }
70
- function PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
71
- i0.ɵɵelement(0, "mat-spinner", 8);
72
- } }
73
- function PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_div_2_Template(rf, ctx) { if (rf & 1) {
74
- i0.ɵɵelement(0, "div", 11);
75
- } if (rf & 2) {
76
- const line_r3 = ctx.$implicit;
77
- i0.ɵɵstyleProp("left", line_r3 * 40 + 8 + "px");
78
- } }
79
- function PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_button_3_Template(rf, ctx) { if (rf & 1) {
80
- const _r4 = i0.ɵɵgetCurrentView();
81
- i0.ɵɵelementStart(0, "button", 12);
82
- i0.ɵɵlistener("click", function PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const node_r5 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectNode(node_r5.value)); });
83
- i0.ɵɵelementStart(1, "span", 13);
84
- i0.ɵɵtext(2);
85
- i0.ɵɵelementEnd();
86
- i0.ɵɵelementStart(3, "span");
87
- i0.ɵɵtext(4);
88
- i0.ɵɵelementEnd()();
89
- } if (rf & 2) {
90
- const node_r5 = i0.ɵɵnextContext().$implicit;
91
- const ctx_r1 = i0.ɵɵnextContext(3);
92
- i0.ɵɵproperty("disabled", !(node_r5.value == null ? null : node_r5.value.request == null ? null : node_r5.value.request.body == null ? null : node_r5.value.request.body.raw) && node_r5.value.request.method === "POST" || !(node_r5.value == null ? null : node_r5.value.request == null ? null : node_r5.value.request.url == null ? null : node_r5.value.request.url.raw))("matTooltip", (node_r5.value == null ? null : node_r5.value.request == null ? null : node_r5.value.request.url == null ? null : node_r5.value.request.url.raw) || "Invalid Postman config,missing Endpoint URL");
93
- i0.ɵɵadvance();
94
- i0.ɵɵstyleProp("color", ctx_r1.methodColor(node_r5.value.request.method));
95
- i0.ɵɵadvance();
96
- i0.ɵɵtextInterpolate1(" ", node_r5.value.request.method, "");
97
- i0.ɵɵadvance(2);
98
- i0.ɵɵtextInterpolate1(" ", node_r5.key, " ");
99
- } }
100
- function PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_Template(rf, ctx) { if (rf & 1) {
101
- i0.ɵɵelementStart(0, "mat-tree-node", 7);
102
- i0.ɵɵtemplate(1, PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_Conditional_1_Template, 1, 0, "mat-spinner", 8)(2, PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_div_2_Template, 1, 2, "div", 9)(3, PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_button_3_Template, 5, 6, "button", 10);
103
- i0.ɵɵelementEnd();
104
- } if (rf & 2) {
105
- const node_r5 = ctx.$implicit;
106
- const ctx_r1 = i0.ɵɵnextContext(3);
107
- i0.ɵɵadvance();
108
- i0.ɵɵconditional(ctx_r1.loadingEndPoints.includes(node_r5.value.id) ? 1 : -1);
109
- i0.ɵɵadvance();
110
- i0.ɵɵproperty("ngForOf", ctx_r1.getNodeLines(node_r5.level));
111
- i0.ɵɵadvance();
112
- i0.ɵɵproperty("ngIf", node_r5.value == null ? null : node_r5.value.request);
113
- } }
114
- function PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_3_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵelementStart(0, "mat-tree-node", 7)(1, "button", 14)(2, "mat-icon");
116
- i0.ɵɵtext(3);
117
- i0.ɵɵelementEnd()();
118
- i0.ɵɵelementStart(4, "mat-icon", 15);
119
- i0.ɵɵtext(5);
120
- i0.ɵɵelementEnd();
121
- i0.ɵɵelementStart(6, "span", 16);
122
- i0.ɵɵtext(7);
123
- i0.ɵɵelementEnd()();
124
- } if (rf & 2) {
125
- const node_r6 = ctx.$implicit;
126
- const tree_r7 = i0.ɵɵnextContext().ngIf;
127
- i0.ɵɵadvance();
128
- i0.ɵɵattribute("aria-label", "Toggle " + node_r6.key);
129
- i0.ɵɵadvance(2);
130
- i0.ɵɵtextInterpolate1(" ", tree_r7.treeControl.isExpanded(node_r6) ? "expand_more" : "chevron_right", " ");
131
- i0.ɵɵadvance(2);
132
- i0.ɵɵtextInterpolate1(" ", tree_r7.treeControl.isExpanded(node_r6) ? "folder_open" : "folder", " ");
133
- i0.ɵɵadvance(2);
134
- i0.ɵɵtextInterpolate1(" ", node_r6.key, " ");
135
- } }
136
- function PostmanCollectionsComponent_Conditional_1_ng_container_5_Template(rf, ctx) { if (rf & 1) {
137
- i0.ɵɵelementContainerStart(0);
138
- i0.ɵɵelementStart(1, "mat-tree", 4);
139
- i0.ɵɵtemplate(2, PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_2_Template, 4, 3, "mat-tree-node", 5)(3, PostmanCollectionsComponent_Conditional_1_ng_container_5_mat_tree_node_3_Template, 8, 4, "mat-tree-node", 6);
140
- i0.ɵɵelementEnd();
141
- i0.ɵɵelementContainerEnd();
142
- } if (rf & 2) {
143
- const tree_r7 = ctx.ngIf;
144
- i0.ɵɵadvance();
145
- i0.ɵɵproperty("dataSource", tree_r7.dataSource)("treeControl", tree_r7.treeControl);
146
- i0.ɵɵadvance(2);
147
- i0.ɵɵproperty("matTreeNodeDefWhen", tree_r7.hasChild);
148
- } }
149
- function PostmanCollectionsComponent_Conditional_1_ng_container_6_Template(rf, ctx) { if (rf & 1) {
150
- i0.ɵɵelementContainerStart(0);
151
- i0.ɵɵelementStart(1, "mat-toolbar")(2, "span", 17);
152
- i0.ɵɵtext(3);
153
- i0.ɵɵelementEnd()();
154
- i0.ɵɵelementContainerEnd();
155
- } if (rf & 2) {
156
- const ctx_r1 = i0.ɵɵnextContext(2);
157
- i0.ɵɵadvance(3);
158
- i0.ɵɵtextInterpolate1(" ", ctx_r1.error.message, " ");
159
- } }
160
- function PostmanCollectionsComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
161
- const _r1 = i0.ɵɵgetCurrentView();
162
- i0.ɵɵelementStart(0, "mat-toolbar", 1)(1, "mat-icon");
163
- i0.ɵɵtext(2, " search ");
164
- i0.ɵɵelementEnd();
165
- i0.ɵɵelementStart(3, "input", 2);
166
- i0.ɵɵlistener("input", function PostmanCollectionsComponent_Conditional_1_Template_input_input_3_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.searchTree($event)); });
167
- i0.ɵɵelementEnd()();
168
- i0.ɵɵelement(4, "mat-divider");
169
- i0.ɵɵtemplate(5, PostmanCollectionsComponent_Conditional_1_ng_container_5_Template, 4, 3, "ng-container", 3)(6, PostmanCollectionsComponent_Conditional_1_ng_container_6_Template, 4, 1, "ng-container", 3);
170
- } if (rf & 2) {
171
- const ctx_r1 = i0.ɵɵnextContext();
172
- i0.ɵɵadvance(5);
173
- i0.ɵɵproperty("ngIf", ctx_r1.treeComponent);
174
- i0.ɵɵadvance();
175
- i0.ɵɵproperty("ngIf", ctx_r1.error);
176
- } }
177
- class PostmanCollectionsComponent {
178
- get collection$() {
179
- return this._collection$.asObservable();
180
- }
181
- constructor(httpClient) {
182
- this.httpClient = httpClient;
183
- this._collection$ = new BehaviorSubject(undefined);
184
- this.treeComponent = new TreeComponent();
185
- this.nodeSelectionChanged = new EventEmitter();
186
- this._searchKey = '';
187
- this.loadingEndPoints = [];
188
- this.loading = false;
189
- }
190
- ngOnInit() {
191
- this.initializePostmanService();
192
- }
193
- selectNode(node) {
194
- this.nodeSelectionChanged.emit(node);
195
- }
196
- isValidConfig(config) {
197
- return Boolean(config?.collectionUrl && config?.collectionKey);
198
- }
199
- initializePostmanService() {
200
- const isValidConfig = this.isValidConfig(this.postmanCollectionConfig);
201
- if (!isValidConfig) {
202
- this.error = new HttpErrorResponse({
203
- error: 'Invalid Postman Collection Config',
204
- });
205
- return;
206
- }
207
- const { collectionUrl, collectionKey } = this.postmanCollectionConfig;
208
- const requestOptions = {
209
- params: {
210
- apikey: collectionKey,
211
- clearSystemHeaders: true
212
- },
213
- headers: {
214
- 'Content-Type': 'application/json',
215
- }
216
- };
217
- this.loading = true;
218
- this.httpClient.get(collectionUrl, requestOptions).pipe(take(1), tap((data) => {
219
- this._collection$.next(data);
220
- // To ensure the data can be shown as a tree
221
- const treeData = convertPostmanFolderItemsToTree(data.collection.item);
222
- this.treeComponent.assignDataSourceData(treeData);
223
- this.error = undefined;
224
- this.loading = false;
225
- }), catchError((err) => {
226
- this.loading = false;
227
- this.error = err;
228
- console.error(err);
229
- return throwError(err);
230
- })).subscribe();
231
- }
232
- methodColor(method) {
233
- return methodColor(method);
234
- }
235
- searchTree(event) {
236
- const search = event.target.value;
237
- this.collection$.pipe(take(1), tap((collection) => {
238
- if (!collection) {
239
- return;
240
- }
241
- const items = filterCollectionItems(collection, search);
242
- const treeData = convertPostmanFolderItemsToTree(items);
243
- this.treeComponent.assignDataSourceData(treeData);
244
- })).subscribe();
245
- }
246
- getNodeLines(level) {
247
- return Array(level).fill(0).map((_, i) => i + 1);
248
- }
249
- static { this.ɵfac = function PostmanCollectionsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PostmanCollectionsComponent)(i0.ɵɵdirectiveInject(i1.HttpClient)); }; }
250
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PostmanCollectionsComponent, selectors: [["app-postman-collections"]], inputs: { postmanCollectionConfig: "postmanCollectionConfig", loadingEndPoints: "loadingEndPoints" }, outputs: { nodeSelectionChanged: "nodeSelectionChanged" }, decls: 2, vars: 2, consts: [[1, "loadingContainer"], [1, "search-container"], ["type", "search", "placeholder", "Search api", 1, "search-field", 3, "input"], [4, "ngIf"], [3, "dataSource", "treeControl"], ["matTreeNodePadding", "", 4, "matTreeNodeDef"], ["matTreeNodePadding", "", 4, "matTreeNodeDef", "matTreeNodeDefWhen"], ["matTreeNodePadding", ""], ["diameter", "22", 1, "loading-spinner"], ["class", "line", 3, "left", 4, "ngFor", "ngForOf"], ["class", "item", "mat-button", "", 3, "disabled", "matTooltip", "click", 4, "ngIf"], [1, "line"], ["mat-button", "", 1, "item", 3, "click", "disabled", "matTooltip"], [1, "node-key", "method"], ["mat-icon-button", "", "matTreeNodeToggle", "", 2, "padding", "0px"], [2, "color", "var(--ion-color-medium)"], [2, "margin-left", "8px", "font-weight", "500"], [2, "color", "red", "font-size", "14px", "line-height", "normal", "text-wrap", "auto"]], template: function PostmanCollectionsComponent_Template(rf, ctx) { if (rf & 1) {
251
- i0.ɵɵtemplate(0, PostmanCollectionsComponent_Conditional_0_Template, 2, 0, "div", 0)(1, PostmanCollectionsComponent_Conditional_1_Template, 7, 2);
252
- } if (rf & 2) {
253
- i0.ɵɵconditional(!!ctx.loading ? 0 : -1);
254
- i0.ɵɵadvance();
255
- i0.ɵɵconditional(!ctx.loading ? 1 : -1);
256
- } }, dependencies: [CommonModule, i2.NgForOf, i2.NgIf, MatModulesModule, i2$1.MatButton, i2$1.MatIconButton, i4.MatDivider, i6.MatIcon, i7.MatProgressSpinner, i9.MatToolbar, i8.MatTooltip, i3.MatTreeNodeDef, i3.MatTreeNodePadding, i3.MatTreeNodeToggle, i3.MatTree, i3.MatTreeNode, FormsModule], styles: ["mat-tree-node[_ngcontent-%COMP%]{min-height:28px!important;height:32px!important}.breadcrumb-container[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;padding:8px 0}.breadcrumb-item[_ngcontent-%COMP%]{display:inline-flex;align-items:center;margin:0;transition:background-color .3s ease}.breadcrumb-separator[_ngcontent-%COMP%]{margin:0}.breadcrumb-separator[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{font-size:16px;width:16px;height:16px}.suggestion-container[_ngcontent-%COMP%]{display:flex;width:100%;gap:14px}.suggestion-column[_ngcontent-%COMP%]{flex:1;min-width:0}.button-container[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap}.suggestion-button[_ngcontent-%COMP%]{--padding-start: 8px;--padding-end: 8px;--padding-top: 2px;--padding-bottom: 4px;height:auto;font-size:.8em;text-transform:capitalize}.suggestion-button[_ngcontent-%COMP%] ion-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}h5[_ngcontent-%COMP%]{margin-bottom:8px;font-size:1em}mat-tree[_ngcontent-%COMP%]{background:none}.item[_ngcontent-%COMP%]{text-align:left;display:flex;width:100%;justify-content:left;font-size:small;white-space:nowrap;font-weight:400;overflow:hidden}.method[_ngcontent-%COMP%]{display:inline-block;width:38px;text-align:right}.line[_ngcontent-%COMP%]{position:absolute;height:32px;left:48px;background:var(--mat-divider-color, var(--mat-app-outline));width:1px}.loadingContainer[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;padding:24px;height:100%}.search-field[_ngcontent-%COMP%]{width:100%;padding:8px;border:1px solid var(--mat-divider-color, var(--mat-app-outline));border-radius:4px;margin-left:14px}.search-container[_ngcontent-%COMP%]{background:inherit;padding-left:12px;padding-right:12px;height:48px}"] }); }
257
- }
258
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PostmanCollectionsComponent, [{
259
- type: Component,
260
- args: [{ selector: 'app-postman-collections', standalone: true, imports: [CommonModule, MatModulesModule, FormsModule], template: "\n@if (!!loading ) {\n<div class=\"loadingContainer\">\n <mat-spinner></mat-spinner>\n</div>\n\n}\n@if(!loading){\n <mat-toolbar class=\"search-container\">\n <mat-icon>\n search\n </mat-icon>\n <input type=\"search\" \n placeholder=\"Search api\" \n class=\"search-field\"\n (input)=\"searchTree($event)\"> \n </mat-toolbar>\n <mat-divider ></mat-divider>\n <ng-container *ngIf=\"treeComponent as tree\">\n <mat-tree [dataSource]=\"tree.dataSource\" [treeControl]=\" tree.treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding>\n @if (loadingEndPoints.includes(node.value.id)) {\n <mat-spinner diameter=\"22\" class=\"loading-spinner\" >\n \n </mat-spinner>\n }\n <div class=\"line\" *ngFor=\"let line of getNodeLines(node.level)\" [style.left]=\"line* 40 +8 + 'px'\"></div>\n <button [disabled]=\"!node.value?.request?.body?.raw && node.value.request.method ==='POST' || !node.value?.request?.url?.raw \"\n (click)=\"selectNode(node.value)\" [matTooltip]=\"node.value?.request?.url?.raw || 'Invalid Postman config,missing Endpoint URL'\" class=\"item\" mat-button\n *ngIf=\"node.value?.request\">\n \n <span class=\"node-key method\" [style.color]=\" methodColor(node.value.request.method)\">\n <!-- -->\n\n {{node.value.request.method}}</span>\n <span>\n \n {{ node.key }} \n \n </span>\n </button>\n \n </mat-tree-node>\n \n <mat-tree-node *matTreeNodeDef=\"let node; when: tree.hasChild\" matTreeNodePadding>\n <button style=\"padding: 0px; \n \" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.key\">\n <mat-icon>\n \n {{tree.treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n \n </button>\n \n <mat-icon style=\"color: var(--ion-color-medium)\">\n {{tree.treeControl.isExpanded(node) ? 'folder_open' : 'folder'}}\n\n </mat-icon>\n <span style=\"margin-left: 8px;font-weight:500\">\n \n {{ node.key }}\n </span>\n \n </mat-tree-node>\n </mat-tree>\n \n </ng-container>\n <ng-container *ngIf=\"error\">\n <mat-toolbar>\n <span style=\"color: red ;font-size:14px; line-height: normal;\n text-wrap: auto;\">\n {{error.message}}\n </span>\n </mat-toolbar>\n </ng-container>\n}\n", styles: ["mat-tree-node{min-height:28px!important;height:32px!important}.breadcrumb-container{display:flex;align-items:center;flex-wrap:wrap;padding:8px 0}.breadcrumb-item{display:inline-flex;align-items:center;margin:0;transition:background-color .3s ease}.breadcrumb-separator{margin:0}.breadcrumb-separator .mat-icon{font-size:16px;width:16px;height:16px}.suggestion-container{display:flex;width:100%;gap:14px}.suggestion-column{flex:1;min-width:0}.button-container{display:flex;flex-wrap:wrap}.suggestion-button{--padding-start: 8px;--padding-end: 8px;--padding-top: 2px;--padding-bottom: 4px;height:auto;font-size:.8em;text-transform:capitalize}.suggestion-button ::ng-deep ion-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}h5{margin-bottom:8px;font-size:1em}mat-tree{background:none}.item{text-align:left;display:flex;width:100%;justify-content:left;font-size:small;white-space:nowrap;font-weight:400;overflow:hidden}.method{display:inline-block;width:38px;text-align:right}.line{position:absolute;height:32px;left:48px;background:var(--mat-divider-color, var(--mat-app-outline));width:1px}.loadingContainer{display:flex;justify-content:center;align-items:center;padding:24px;height:100%}.search-field{width:100%;padding:8px;border:1px solid var(--mat-divider-color, var(--mat-app-outline));border-radius:4px;margin-left:14px}.search-container{background:inherit;padding-left:12px;padding-right:12px;height:48px}\n"] }]
261
- }], () => [{ type: i1.HttpClient }], { nodeSelectionChanged: [{
262
- type: Output
263
- }], postmanCollectionConfig: [{
264
- type: Input
265
- }], loadingEndPoints: [{
266
- type: Input
267
- }] }); })();
268
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PostmanCollectionsComponent, { className: "PostmanCollectionsComponent", filePath: "lib/components/t-dynamic-data-edit/elements/postman-collections/postman-collections.component.ts", lineNumber: 21 }); })();
269
-
270
- function RestApiCallSetupComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
271
- const _r1 = i0.ɵɵgetCurrentView();
272
- i0.ɵɵelementStart(0, "app-postman-collections", 2);
273
- i0.ɵɵlistener("nodeSelectionChanged", function RestApiCallSetupComponent_Conditional_0_Template_app_postman_collections_nodeSelectionChanged_0_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.nodeSelectionChanged($event)); });
274
- i0.ɵɵelementEnd();
275
- } if (rf & 2) {
276
- const ctx_r1 = i0.ɵɵnextContext();
277
- i0.ɵɵproperty("loadingEndPoints", ctx_r1.loadingEndPoints)("postmanCollectionConfig", ctx_r1.postmanCollectionConfig);
278
- } }
279
- function RestApiCallSetupComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
280
- const _r3 = i0.ɵɵgetCurrentView();
281
- i0.ɵɵelementStart(0, "mat-toolbar")(1, "button", 3);
282
- i0.ɵɵlistener("click", function RestApiCallSetupComponent_Conditional_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.clearValue()); });
283
- i0.ɵɵelementStart(2, "span", 4);
284
- i0.ɵɵtext(3);
285
- i0.ɵɵelementEnd();
286
- i0.ɵɵelementStart(4, "span");
287
- i0.ɵɵtext(5);
288
- i0.ɵɵelementEnd()()();
289
- } if (rf & 2) {
290
- const ctx_r1 = i0.ɵɵnextContext();
291
- i0.ɵɵadvance();
292
- i0.ɵɵproperty("matTooltip", ctx_r1.value == null ? null : ctx_r1.value.httpEndPoint);
293
- i0.ɵɵadvance();
294
- i0.ɵɵstyleProp("color", ctx_r1.methodColor(ctx_r1.value == null ? null : ctx_r1.value.httpMethod));
295
- i0.ɵɵadvance();
296
- i0.ɵɵtextInterpolate1(" ", ctx_r1.value == null ? null : ctx_r1.value.httpMethod, "");
297
- i0.ɵɵadvance(2);
298
- i0.ɵɵtextInterpolate1(" ", ctx_r1.value == null ? null : ctx_r1.value.name, " ");
299
- } }
300
- function RestApiCallSetupComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
301
- i0.ɵɵelementStart(0, "mat-toolbar", 1)(1, "p", 5);
302
- i0.ɵɵtext(2, " No postman collection configured. Add Postman collection Id and Api key ");
303
- i0.ɵɵelementEnd()();
304
- } }
305
- class RestApiCallSetupComponent {
306
- static { this.nextId = 0; }
307
- constructor(ngControl, _elementRef) {
308
- this.ngControl = ngControl;
309
- this._elementRef = _elementRef;
310
- this.stateChanges = new Subject();
311
- this.id = `lib-rest-api-call-setup-${RestApiCallSetupComponent.nextId++}`;
312
- this.placeholder = '';
313
- this.focused = false;
314
- this.required = false;
315
- this.disabled = false;
316
- this.touched = false;
317
- this.onTouched = () => { };
318
- this.httpGetDataFunction = undefined;
319
- this.errors = [];
320
- this.valueChanged = new EventEmitter();
321
- this.loadingEndPoints = [];
322
- }
323
- get empty() {
324
- return !this.value;
325
- }
326
- get shouldLabelFloat() {
327
- return this.focused || !this.empty;
328
- }
329
- get errorState() {
330
- const hasError = !!this.ngControl?.control?.errors || (this.errors || []).length > 0 && this.touched;
331
- return !this.value && !!this.required || hasError;
332
- }
333
- setDescribedByIds(ids) {
334
- // Ensure the component view is initialized
335
- if (this._elementRef && this._elementRef.nativeElement) {
336
- const controlElement = this._elementRef.nativeElement.querySelector('.lib-rest-api-call-setup');
337
- // Check if the controlElement exists before attempting to set its attribute
338
- if (controlElement) {
339
- controlElement.setAttribute('aria-describedby', ids.join(' '));
340
- }
341
- }
342
- }
343
- onContainerClick(event) {
344
- this.markAsTouched();
345
- this.stateChanges.next();
346
- }
347
- markAsTouched() {
348
- console.log('markAsTouched');
349
- if (!this.touched) {
350
- this.onTouched();
351
- this.touched = true;
352
- }
353
- }
354
- set value(val) {
355
- if (JSON.stringify(val) !== JSON.stringify(this._value)) {
356
- this._value = val;
357
- }
358
- }
359
- get value() {
360
- return this._value;
361
- }
362
- async nodeSelectionChanged(node) {
363
- const { id, name, request, response } = node;
364
- if (!request || !response)
365
- return;
366
- let requestBody;
367
- try {
368
- requestBody = JSON.parse(request?.body?.raw || '{}');
369
- }
370
- catch (error) {
371
- console.error("API BODY PARSE ERROR");
372
- requestBody = {};
373
- }
374
- const keyExtraction = (key, value, primaryKey) => {
375
- return ({
376
- name: key,
377
- type: typeof value,
378
- primaryKey
379
- });
380
- };
381
- // if(request.method === 'GET'){
382
- // this.loadingEndPoints.push(id)
383
- // try {
384
- // responseBody = await this.httpGetDataFunction?.(request.url.raw)
385
- // } catch (error) {
386
- // console.error(error)
387
- // this.loadingEndPoints = this.loadingEndPoints.filter((item) => item !== id)
388
- // }
389
- // }
390
- const secondaryKeys = Object.entries(requestBody['data'] || {}).map(([key, value]) => keyExtraction(key, value, false));
391
- delete requestBody['data'];
392
- const primaryKeys = Object.entries(requestBody).map(([key, value]) => keyExtraction(key, value, true));
393
- const minimumInputRequired = request?.method === 'POST' ? [...primaryKeys, ...secondaryKeys] : [];
394
- const transformedNode = {
395
- _id: id,
396
- name: name,
397
- httpEndPoint: request.url.raw,
398
- httpMethod: request.method,
399
- source: DataSources.Api,
400
- postFormData: request.method === 'POST',
401
- backEndConfig: {
402
- minimumInputRequired,
403
- },
404
- };
405
- const fetch = transformedNode;
406
- console.log(fetch);
407
- this.valueChanged.emit(fetch);
408
- }
409
- clearValue() {
410
- const source = this.value?.source;
411
- this._value = undefined;
412
- this.valueChanged.emit(undefined);
413
- this.valueChanged.emit({ source: source });
414
- }
415
- methodColor(method) {
416
- return methodColor(method || 'POST');
417
- }
418
- get hasValidValue() {
419
- return Boolean(this.value) && Boolean(this.value?.httpEndPoint) && Boolean(this.value?.httpMethod);
420
- }
421
- static { this.ɵfac = function RestApiCallSetupComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || RestApiCallSetupComponent)(i0.ɵɵdirectiveInject(i1$1.NgControl, 10), i0.ɵɵdirectiveInject(i0.ElementRef)); }; }
422
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: RestApiCallSetupComponent, selectors: [["lib-rest-api-call-setup"]], hostVars: 1, hostBindings: function RestApiCallSetupComponent_HostBindings(rf, ctx) { if (rf & 2) {
423
- i0.ɵɵhostProperty("id", ctx.id);
424
- } }, inputs: { postmanCollectionConfig: "postmanCollectionConfig", httpGetDataFunction: "httpGetDataFunction", value: "value", errors: "errors" }, outputs: { valueChanged: "valueChanged" }, features: [i0.ɵɵProvidersFeature([{ provide: MatFormFieldControl, useExisting: RestApiCallSetupComponent }])], decls: 3, vars: 3, consts: [[3, "loadingEndPoints", "postmanCollectionConfig"], ["color", "warn"], [3, "nodeSelectionChanged", "loadingEndPoints", "postmanCollectionConfig"], ["mat-flat-button", "", 1, "item", 3, "click", "matTooltip"], [1, "node-key", "method"], [2, "font-size", "14px", "white-space", "normal", "line-height", "normal"]], template: function RestApiCallSetupComponent_Template(rf, ctx) { if (rf & 1) {
425
- i0.ɵɵtemplate(0, RestApiCallSetupComponent_Conditional_0_Template, 1, 2, "app-postman-collections", 0)(1, RestApiCallSetupComponent_Conditional_1_Template, 6, 5, "mat-toolbar")(2, RestApiCallSetupComponent_Conditional_2_Template, 3, 0, "mat-toolbar", 1);
426
- } if (rf & 2) {
427
- i0.ɵɵconditional(ctx.postmanCollectionConfig && !ctx.hasValidValue ? 0 : -1);
428
- i0.ɵɵadvance();
429
- i0.ɵɵconditional(!!ctx.hasValidValue && !!ctx.postmanCollectionConfig ? 1 : -1);
430
- i0.ɵɵadvance();
431
- i0.ɵɵconditional(!ctx.postmanCollectionConfig ? 2 : -1);
432
- } }, dependencies: [PostmanCollectionsComponent, MatModulesModule, i2$1.MatButton, i9.MatToolbar, i8.MatTooltip, CommonModule], styles: [".item[_ngcontent-%COMP%]{text-align:left;display:flex;width:100%;justify-content:left;font-size:small;white-space:nowrap;font-weight:400;overflow:hidden}.center[_ngcontent-%COMP%]{display:flex!important;align-items:center}"] }); }
433
- }
434
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RestApiCallSetupComponent, [{
435
- type: Component,
436
- args: [{ selector: 'lib-rest-api-call-setup', standalone: true, imports: [PostmanCollectionsComponent, MatModulesModule, CommonModule], providers: [{ provide: MatFormFieldControl, useExisting: RestApiCallSetupComponent }], template: "\r\n@if(postmanCollectionConfig && !hasValidValue ){\r\n <app-postman-collections \r\n (nodeSelectionChanged)=\"nodeSelectionChanged($event)\"\r\n [loadingEndPoints]=\"loadingEndPoints\"\r\n [postmanCollectionConfig]=\"postmanCollectionConfig\" >\r\n \r\n </app-postman-collections>\r\n}\r\n\r\n@if(!!hasValidValue && !!postmanCollectionConfig){\r\n<mat-toolbar>\r\n \r\n <button \r\n (click)=\"clearValue()\" [matTooltip]=\"value?.httpEndPoint\" class=\"item\" mat-flat-button\r\n >\r\n\r\n <span class=\"node-key method\" [style.color]=\" methodColor(value?.httpMethod)\">\r\n {{value?.httpMethod}}</span>\r\n <span>\r\n {{ value?.name }} \r\n\r\n </span>\r\n </button> \r\n</mat-toolbar>\r\n\r\n}\r\n\r\n@if(!postmanCollectionConfig) {\r\n <mat-toolbar color=\"warn\">\r\n <p style=\"font-size: 14px; white-space: normal;\r\n line-height: normal;\">\r\n No postman collection configured. \r\n Add Postman collection Id and Api key\r\n </p>\r\n \r\n </mat-toolbar>\r\n \r\n}\r\n", styles: [".item{text-align:left;display:flex;width:100%;justify-content:left;font-size:small;white-space:nowrap;font-weight:400;overflow:hidden}.center{display:flex!important;align-items:center}\n"] }]
437
- }], () => [{ type: i1$1.NgControl, decorators: [{
438
- type: Optional
439
- }, {
440
- type: Self
441
- }] }, { type: i0.ElementRef }], { id: [{
442
- type: HostBinding
443
- }], postmanCollectionConfig: [{
444
- type: Input
445
- }], httpGetDataFunction: [{
446
- type: Input
447
- }], value: [{
448
- type: Input
449
- }], errors: [{
450
- type: Input
451
- }], valueChanged: [{
452
- type: Output
453
- }] }); })();
454
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(RestApiCallSetupComponent, { className: "RestApiCallSetupComponent", filePath: "lib/components/t-dynamic-data-edit/elements/rest-api-call-setup/rest-api-call-setup.component.ts", lineNumber: 23 }); })();
455
-
456
- export { RestApiCallSetupComponent };
457
- //# sourceMappingURL=ngx-t-forms-rest-api-call-setup.component-DDg4fCFx.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-t-forms-rest-api-call-setup.component-DDg4fCFx.mjs","sources":["../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/postman-collections/functions/filterCollectionItems.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/postman-collections/functions/methodColors.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/postman-collections/postman-collections.component.html","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/postman-collections/postman-collections.component.ts","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/rest-api-call-setup/rest-api-call-setup.component.html","../../../projects/ngx-t-forms/src/lib/components/t-dynamic-data-edit/elements/rest-api-call-setup/rest-api-call-setup.component.ts"],"sourcesContent":["import { IFolderItem, IGetPostmanCollections } from 'ngx-t-forms-types';\r\n\r\n// Update the filter function signature\r\nexport function filterCollectionItems(\r\n collections: IGetPostmanCollections,\r\n searchKey: string\r\n): IFolderItem[] {\r\n const items = collections.collection.item;\r\n const searchText = searchKey.trim().toLowerCase();\r\n if (!searchText) {\r\n return items\r\n }\r\n\r\n return items.filter(collection => {\r\n return searchInItems(collection.item, searchText);\r\n })\r\n \r\n}\r\n\r\nexport function searchInItems(\r\n items: IFolderItem[], \r\n searchText: string\r\n): boolean {\r\n if (!items) return false;\r\n\r\n for (const item of items) {\r\n // Check if current item matches search\r\n if (item.name?.toLowerCase().includes(searchText) || \r\n item.description?.toLowerCase().includes(searchText)) {\r\n return true;\r\n }\r\n\r\n // Recursively search in nested items\r\n if (item.item && searchInItems(item.item, searchText)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}","export function methodColor(method: string): string {\r\n switch (method) {\r\n case 'GET':\r\n return 'green';\r\n case 'POST':\r\n return 'chocolate';\r\n case 'PUT':\r\n return 'yellow'; \r\n case 'DELETE':\r\n return 'red';\r\n default:\r\n return 'currentColor';\r\n }\r\n }","\n@if (!!loading ) {\n<div class=\"loadingContainer\">\n <mat-spinner></mat-spinner>\n</div>\n\n}\n@if(!loading){\n <mat-toolbar class=\"search-container\">\n <mat-icon>\n search\n </mat-icon>\n <input type=\"search\" \n placeholder=\"Search api\" \n class=\"search-field\"\n (input)=\"searchTree($event)\"> \n </mat-toolbar>\n <mat-divider ></mat-divider>\n <ng-container *ngIf=\"treeComponent as tree\">\n <mat-tree [dataSource]=\"tree.dataSource\" [treeControl]=\" tree.treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding>\n @if (loadingEndPoints.includes(node.value.id)) {\n <mat-spinner diameter=\"22\" class=\"loading-spinner\" >\n \n </mat-spinner>\n }\n <div class=\"line\" *ngFor=\"let line of getNodeLines(node.level)\" [style.left]=\"line* 40 +8 + 'px'\"></div>\n <button [disabled]=\"!node.value?.request?.body?.raw && node.value.request.method ==='POST' || !node.value?.request?.url?.raw \"\n (click)=\"selectNode(node.value)\" [matTooltip]=\"node.value?.request?.url?.raw || 'Invalid Postman config,missing Endpoint URL'\" class=\"item\" mat-button\n *ngIf=\"node.value?.request\">\n \n <span class=\"node-key method\" [style.color]=\" methodColor(node.value.request.method)\">\n <!-- -->\n\n {{node.value.request.method}}</span>\n <span>\n \n {{ node.key }} \n \n </span>\n </button>\n \n </mat-tree-node>\n \n <mat-tree-node *matTreeNodeDef=\"let node; when: tree.hasChild\" matTreeNodePadding>\n <button style=\"padding: 0px; \n \" mat-icon-button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.key\">\n <mat-icon>\n \n {{tree.treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right' }}\n </mat-icon>\n \n </button>\n \n <mat-icon style=\"color: var(--ion-color-medium)\">\n {{tree.treeControl.isExpanded(node) ? 'folder_open' : 'folder'}}\n\n </mat-icon>\n <span style=\"margin-left: 8px;font-weight:500\">\n \n {{ node.key }}\n </span>\n \n </mat-tree-node>\n </mat-tree>\n \n </ng-container>\n <ng-container *ngIf=\"error\">\n <mat-toolbar>\n <span style=\"color: red ;font-size:14px; line-height: normal;\n text-wrap: auto;\">\n {{error.message}}\n </span>\n </mat-toolbar>\n </ng-container>\n}\n","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { TreeComponent } from '../api-value-access-rules/functions/convertDataToTree';\r\nimport { IFolderItem, IGetPostmanCollections, IPostmanCollectionConfig } from \"ngx-t-forms-types\";\r\n\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { BehaviorSubject, catchError, Observable, take, tap, throwError } from 'rxjs';\r\nimport { convertPostmanFolderItemsToTree } from './functions/convertPostmanCollectionToTree';\r\nimport { filterCollectionItems } from './functions/filterCollectionItems';\r\nimport { methodColor } from './functions/methodColors';\r\n\r\n@Component({\r\n selector: 'app-postman-collections',\r\n templateUrl: './postman-collections.component.html',\r\n styleUrls: ['./postman-collections.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, MatModulesModule, FormsModule]\r\n})\r\nexport class PostmanCollectionsComponent implements OnInit {\r\n\r\n private _collection$: BehaviorSubject<IGetPostmanCollections | undefined> = new BehaviorSubject<IGetPostmanCollections | undefined>(undefined)\r\n get collection$(): Observable<IGetPostmanCollections | undefined> {\r\n return this._collection$.asObservable();\r\n }\r\n treeComponent = new TreeComponent();\r\n\r\n\r\n @Output() nodeSelectionChanged = new EventEmitter<IFolderItem>();\r\n\r\n constructor(private readonly httpClient: HttpClient) { }\r\n ngOnInit(): void {\r\n this.initializePostmanService()\r\n }\r\n _searchKey: string = ''\r\n\r\n @Input() postmanCollectionConfig: IPostmanCollectionConfig | undefined\r\n @Input() loadingEndPoints:string[] = []\r\n \r\n selectNode(node: IFolderItem): void {\r\n this.nodeSelectionChanged.emit(node);\r\n }\r\n\r\n private isValidConfig(config: IPostmanCollectionConfig | undefined): boolean {\r\n return Boolean(config?.collectionUrl && config?.collectionKey);\r\n }\r\n\r\n\r\n error: HttpErrorResponse | undefined\r\n loading: boolean = false\r\n private initializePostmanService(): void {\r\n const isValidConfig = this.isValidConfig(this.postmanCollectionConfig)\r\n if (!isValidConfig) {\r\n this.error = new HttpErrorResponse({\r\n error: 'Invalid Postman Collection Config',\r\n })\r\n return\r\n }\r\n const { collectionUrl, collectionKey } = this.postmanCollectionConfig!\r\n \r\n const requestOptions = {\r\n params: {\r\n apikey: collectionKey,\r\n clearSystemHeaders: true\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n\r\n }\r\n }\r\n this.loading = true\r\n this.httpClient.get<IGetPostmanCollections>(\r\n collectionUrl,\r\n requestOptions\r\n ).pipe(\r\n take(1),\r\n tap((data) => {\r\n this._collection$.next(data)\r\n // To ensure the data can be shown as a tree\r\n const treeData = convertPostmanFolderItemsToTree(data.collection.item);\r\n this.treeComponent.assignDataSourceData(treeData)\r\n this.error = undefined\r\n this.loading = false\r\n }),\r\n catchError((err: HttpErrorResponse) => {\r\n this.loading = false\r\n this.error = err\r\n console.error(err)\r\n return throwError(err)\r\n })\r\n ).subscribe();\r\n }\r\n methodColor(method: string): string {\r\n return methodColor(method)\r\n }\r\n searchTree(event: any): void {\r\n const search: string = event.target.value\r\n this.collection$.pipe(\r\n take(1),\r\n tap((collection) => {\r\n if (!collection) {\r\n return\r\n }\r\n const items = filterCollectionItems(collection, search)\r\n const treeData = convertPostmanFolderItemsToTree(items);\r\n this.treeComponent.assignDataSourceData(treeData)\r\n\r\n\r\n })\r\n ).subscribe()\r\n }\r\n getNodeLines(level: number): number[] {\r\n return Array(level).fill(0).map((_, i) => i + 1)\r\n }\r\n}\r\n","\r\n@if(postmanCollectionConfig && !hasValidValue ){\r\n <app-postman-collections \r\n (nodeSelectionChanged)=\"nodeSelectionChanged($event)\"\r\n [loadingEndPoints]=\"loadingEndPoints\"\r\n [postmanCollectionConfig]=\"postmanCollectionConfig\" >\r\n \r\n </app-postman-collections>\r\n}\r\n\r\n@if(!!hasValidValue && !!postmanCollectionConfig){\r\n<mat-toolbar>\r\n \r\n <button \r\n (click)=\"clearValue()\" [matTooltip]=\"value?.httpEndPoint\" class=\"item\" mat-flat-button\r\n >\r\n\r\n <span class=\"node-key method\" [style.color]=\" methodColor(value?.httpMethod)\">\r\n {{value?.httpMethod}}</span>\r\n <span>\r\n {{ value?.name }} \r\n\r\n </span>\r\n </button> \r\n</mat-toolbar>\r\n\r\n}\r\n\r\n@if(!postmanCollectionConfig) {\r\n <mat-toolbar color=\"warn\">\r\n <p style=\"font-size: 14px; white-space: normal;\r\n line-height: normal;\">\r\n No postman collection configured. \r\n Add Postman collection Id and Api key\r\n </p>\r\n \r\n </mat-toolbar>\r\n \r\n}\r\n","import { Component, ElementRef, EventEmitter, HostBinding, Input, Optional, Output, Self } from '@angular/core';\r\nimport { PostmanCollectionsComponent } from '../postman-collections/postman-collections.component';\r\nimport { IFolderItem, IPostmanCollectionConfig } from \"ngx-t-forms-types\";\r\nimport { APIDataFetchingConfigurationInterface } from 'ngx-t-forms-types';\r\nimport { DataSources } from \"ngx-t-forms-types\";\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatModulesModule } from '../../../../shared/modules/mat-modules.module';\r\nimport { methodColor } from '../postman-collections/functions/methodColors';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { NgControl } from '@angular/forms';\r\nimport { IConfigElementError } from '../../t-dynamic-data-edit.component';\r\n\r\n@Component({\r\n selector: 'lib-rest-api-call-setup',\r\n standalone: true,\r\n imports: [PostmanCollectionsComponent,MatModulesModule,CommonModule],\r\n providers: [{ provide: MatFormFieldControl, useExisting:RestApiCallSetupComponent}],\r\n templateUrl: './rest-api-call-setup.component.html',\r\n styleUrl: './rest-api-call-setup.component.css'\r\n})\r\nexport class RestApiCallSetupComponent implements MatFormFieldControl<APIDataFetchingConfigurationInterface | undefined> {\r\n \r\n static nextId = 0;\r\n stateChanges = new Subject<void>();\r\n \r\n @HostBinding() id = `lib-rest-api-call-setup-${RestApiCallSetupComponent.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\n get errorState(): boolean {\r\n const hasError = !!this.ngControl?.control?.errors || (this.errors||[]).length > 0 && this.touched\r\n return !this.value && !!this.required || hasError\r\n }\r\n \r\n controlType?: string | undefined;\r\n autofilled?: boolean | undefined;\r\n userAriaDescribedBy?: string | undefined;\r\n disableAutomaticLabeling?: boolean | undefined;\r\n setDescribedByIds(ids: string[]) {\r\n // Ensure the component view is initialized\r\n if (this._elementRef && this._elementRef.nativeElement) {\r\n const controlElement = this._elementRef.nativeElement.querySelector('.lib-rest-api-call-setup');\r\n // Check if the controlElement exists before attempting to set its attribute\r\n if (controlElement) {\r\n controlElement.setAttribute('aria-describedby', ids.join(' '));\r\n }\r\n }\r\n }\r\n onContainerClick(event: MouseEvent): void {\r\n this.markAsTouched();\r\n this.stateChanges.next();\r\n }\r\n \r\n touched: boolean = false;\r\n onTouched = () => {};\r\n markAsTouched() {\r\n console.log('markAsTouched') \r\n if (!this.touched) {\r\n this.onTouched();\r\n this.touched = true;\r\n }\r\n } \r\n \r\n \r\n \r\n @Input() postmanCollectionConfig: IPostmanCollectionConfig | undefined\r\n @Input() httpGetDataFunction: ((url: string,options:any) => Observable<any>) | undefined = undefined\r\n private _value: APIDataFetchingConfigurationInterface | undefined;\r\n @Input() \r\n set value(val: APIDataFetchingConfigurationInterface | undefined) {\r\n if (JSON.stringify(val) !== JSON.stringify(this._value)) {\r\n this._value = val;\r\n }\r\n }\r\n get value(): APIDataFetchingConfigurationInterface | undefined {\r\n return this._value;\r\n }\r\n @Input() errors:IConfigElementError[] |undefined = [];\r\n @Output() valueChanged = new EventEmitter<APIDataFetchingConfigurationInterface | undefined >();\r\n loadingEndPoints: string[] = []\r\n async nodeSelectionChanged(node: IFolderItem) {\r\n\r\n const { id, name, request, response } = node;\r\n \r\n if(!request || !response) return;\r\n let requestBody\r\n try {\r\n requestBody = JSON.parse(request?.body?.raw || '{}')\r\n } catch (error) {\r\n console.error(\"API BODY PARSE ERROR\")\r\n requestBody = {}\r\n }\r\n \r\n \r\n\r\n \r\n const keyExtraction = (key: string, value: any, primaryKey: boolean) => {\r\n return ({\r\n name: key,\r\n type: typeof value,\r\n primaryKey\r\n }) as any\r\n }\r\n\r\n // if(request.method === 'GET'){\r\n // this.loadingEndPoints.push(id)\r\n // try {\r\n // responseBody = await this.httpGetDataFunction?.(request.url.raw)\r\n // } catch (error) {\r\n // console.error(error)\r\n // this.loadingEndPoints = this.loadingEndPoints.filter((item) => item !== id)\r\n // }\r\n\r\n // }\r\n \r\n const secondaryKeys = Object.entries(requestBody['data'] || {}).map(([key, value]) => keyExtraction(key, value, false))\r\n delete requestBody['data']\r\n\r\n const primaryKeys = Object.entries(requestBody).map(([key, value]) => keyExtraction(key, value, true))\r\n const minimumInputRequired: any = request?.method === 'POST' ? [...primaryKeys, ...secondaryKeys] : []\r\n const transformedNode= {\r\n _id: id,\r\n name: name,\r\n httpEndPoint: request.url.raw,\r\n httpMethod: request.method,\r\n source: DataSources.Api,\r\n postFormData: request.method === 'POST',\r\n backEndConfig: {\r\n minimumInputRequired,\r\n },\r\n \r\n } as APIDataFetchingConfigurationInterface \r\n const fetch: any = transformedNode;\r\n console.log(fetch)\r\n this.valueChanged.emit(fetch);\r\n }\r\n clearValue() {\r\n const source = this.value?.source as any\r\n this._value = undefined;\r\n this.valueChanged.emit(undefined);\r\n this.valueChanged.emit({source:source} as any);\r\n }\r\n methodColor(method: string| undefined): string {\r\n return methodColor(method||'POST')\r\n }\r\n get hasValidValue(){\r\n return Boolean(this.value) && Boolean(this.value?.httpEndPoint) && Boolean(this.value?.httpMethod) \r\n }\r\n \r\n}\r\n"],"names":["i3","i5","i6","i7","i9","i1","i2","i4"],"mappings":"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"}