kwikid-forms 0.0.0-watch

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 (87) hide show
  1. package/README.md +44 -0
  2. package/assets/done1.png +0 -0
  3. package/assets/edit.png +0 -0
  4. package/assets/lock.png +0 -0
  5. package/esm2015/kwikid-forms.js +5 -0
  6. package/esm2015/lib/builder/builder.component.js +138 -0
  7. package/esm2015/lib/builder/builder.module.js +21 -0
  8. package/esm2015/lib/kwikid-forms.module.js +53 -0
  9. package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.js +16 -0
  10. package/esm2015/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.js +2 -0
  11. package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.js +8 -0
  12. package/esm2015/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.js +2 -0
  13. package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.js +47 -0
  14. package/esm2015/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.js +2 -0
  15. package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.js +15 -0
  16. package/esm2015/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.js +2 -0
  17. package/esm2015/lib/renderer/form-view/definitions/rules/form-view.rules.enum.definitions.js +7 -0
  18. package/esm2015/lib/renderer/form-view/definitions/rules/form-view.rules.type.definitions.js +2 -0
  19. package/esm2015/lib/renderer/form-view/definitions/sources/form-view.sources.enum.definitions.js +16 -0
  20. package/esm2015/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.js +2 -0
  21. package/esm2015/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.js +2 -0
  22. package/esm2015/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.js +2 -0
  23. package/esm2015/lib/renderer/form-view/form-view.component.js +654 -0
  24. package/esm2015/lib/renderer/form-view/form-view.decorators.js +93 -0
  25. package/esm2015/lib/renderer/form-view/form-view.module.js +37 -0
  26. package/esm2015/lib/renderer/form-view/form-view.service.js +27 -0
  27. package/esm2015/lib/renderer/form-view/helpers/form-view.actions.helper.js +27 -0
  28. package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +105 -0
  29. package/esm2015/lib/renderer/form-view/helpers/form-view.common.helper.js +136 -0
  30. package/esm2015/lib/renderer/form-view/helpers/form-view.condition.helper.js +46 -0
  31. package/esm2015/lib/renderer/form-view/helpers/form-view.defaults.helper.js +52 -0
  32. package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +146 -0
  33. package/esm2015/lib/renderer/form-view/helpers/form-view.rules.helper.js +86 -0
  34. package/esm2015/lib/renderer/form-view/helpers/form-view.sources.helper.js +161 -0
  35. package/esm2015/lib/renderer/form-view/helpers/form-view.validations.helper.js +156 -0
  36. package/esm2015/lib/renderer/forms-list/forms-list.component.js +61 -0
  37. package/esm2015/lib/renderer/forms-list/forms-list.helper.js +4 -0
  38. package/esm2015/lib/renderer/forms-list/forms-list.module.js +37 -0
  39. package/esm2015/lib/renderer/renderer.component.js +201 -0
  40. package/esm2015/lib/renderer/renderer.config-converter.helper.js +530 -0
  41. package/esm2015/lib/renderer/renderer.helper.js +50 -0
  42. package/esm2015/lib/renderer/renderer.module.js +39 -0
  43. package/esm2015/lib/renderer/renderer.service.js +115 -0
  44. package/esm2015/public_api.js +17 -0
  45. package/fesm2015/kwikid-forms.js +2970 -0
  46. package/fesm2015/kwikid-forms.js.map +1 -0
  47. package/kwikid-forms.d.ts +5 -0
  48. package/lib/builder/builder.component.d.ts +68 -0
  49. package/lib/builder/builder.module.d.ts +10 -0
  50. package/lib/kwikid-forms.module.d.ts +13 -0
  51. package/lib/renderer/form-view/definitions/actions/form-view.actions.enum.definitions.d.ts +14 -0
  52. package/lib/renderer/form-view/definitions/actions/form-view.actions.type.definitions.d.ts +91 -0
  53. package/lib/renderer/form-view/definitions/apis/form-view.apis.enum.definitions.d.ts +6 -0
  54. package/lib/renderer/form-view/definitions/apis/form-view.apis.type.definitions.d.ts +40 -0
  55. package/lib/renderer/form-view/definitions/common/form-view.common.enum.definitions.d.ts +43 -0
  56. package/lib/renderer/form-view/definitions/common/form-view.common.type.definitions.d.ts +7 -0
  57. package/lib/renderer/form-view/definitions/fields/form-view.fields.enum.definitions.d.ts +13 -0
  58. package/lib/renderer/form-view/definitions/fields/form-view.fields.type.definitions.d.ts +137 -0
  59. package/lib/renderer/form-view/definitions/rules/form-view.rules.enum.definitions.d.ts +5 -0
  60. package/lib/renderer/form-view/definitions/rules/form-view.rules.type.definitions.d.ts +41 -0
  61. package/lib/renderer/form-view/definitions/sources/form-view.sources.enum.definitions.d.ts +13 -0
  62. package/lib/renderer/form-view/definitions/sources/form-view.sources.type.definitions.d.ts +16 -0
  63. package/lib/renderer/form-view/definitions/triggers/form-view.triggers.type.definitions.d.ts +1 -0
  64. package/lib/renderer/form-view/definitions/validations/form-view.validations.type.definitions.d.ts +17 -0
  65. package/lib/renderer/form-view/form-view.component.d.ts +66 -0
  66. package/lib/renderer/form-view/form-view.decorators.d.ts +7 -0
  67. package/lib/renderer/form-view/form-view.module.d.ts +11 -0
  68. package/lib/renderer/form-view/form-view.service.d.ts +5 -0
  69. package/lib/renderer/form-view/helpers/form-view.actions.helper.d.ts +13 -0
  70. package/lib/renderer/form-view/helpers/form-view.apis.helper.d.ts +17 -0
  71. package/lib/renderer/form-view/helpers/form-view.common.helper.d.ts +19 -0
  72. package/lib/renderer/form-view/helpers/form-view.condition.helper.d.ts +8 -0
  73. package/lib/renderer/form-view/helpers/form-view.defaults.helper.d.ts +10 -0
  74. package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +20 -0
  75. package/lib/renderer/form-view/helpers/form-view.rules.helper.d.ts +12 -0
  76. package/lib/renderer/form-view/helpers/form-view.sources.helper.d.ts +29 -0
  77. package/lib/renderer/form-view/helpers/form-view.validations.helper.d.ts +25 -0
  78. package/lib/renderer/forms-list/forms-list.component.d.ts +18 -0
  79. package/lib/renderer/forms-list/forms-list.helper.d.ts +1 -0
  80. package/lib/renderer/forms-list/forms-list.module.d.ts +11 -0
  81. package/lib/renderer/renderer.component.d.ts +30 -0
  82. package/lib/renderer/renderer.config-converter.helper.d.ts +7 -0
  83. package/lib/renderer/renderer.helper.d.ts +6 -0
  84. package/lib/renderer/renderer.module.d.ts +12 -0
  85. package/lib/renderer/renderer.service.d.ts +27 -0
  86. package/package.json +47 -0
  87. package/public_api.d.ts +9 -0
@@ -0,0 +1,2970 @@
1
+ import { copyArrayItem, moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
2
+ import * as i0 from '@angular/core';
3
+ import { VERSION, Component, EventEmitter, Input, Output, Injectable, HostListener, NgModule } from '@angular/core';
4
+ import * as i5 from '@angular/forms';
5
+ import { FormGroup, FormControl, Validators, FormArray, FormsModule, ReactiveFormsModule } from '@angular/forms';
6
+ import * as i2 from 'kwikui';
7
+ import { KwikUIButtonComponent, KwikUIProgressSegmentedComponent, KwikUIInputComponent, KwikUIModule } from 'kwikui';
8
+ import _, { cloneDeep } from 'lodash';
9
+ import { __decorate, __awaiter } from 'tslib';
10
+ import { pairwise } from 'rxjs/operators';
11
+ import jp from 'jsonpath';
12
+ import { TuiDay } from '@taiga-ui/cdk';
13
+ import * as i3 from '@taiga-ui/core';
14
+ import { TuiLabelModule, TuiSvgModule, TuiRootModule, TuiAlertModule } from '@taiga-ui/core';
15
+ import * as i4 from '@angular/common';
16
+ import { CommonModule } from '@angular/common';
17
+ import { trigger, transition, style, animate } from '@angular/animations';
18
+ import { HttpClientModule } from '@angular/common/http';
19
+ import { BrowserModule } from '@angular/platform-browser';
20
+ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
21
+
22
+ class KwikIDFormsBuilderComponent {
23
+ constructor() {
24
+ this.buttonComponent = {
25
+ disabled: false,
26
+ id: "",
27
+ label: "Button",
28
+ showLoader: false,
29
+ styles: "",
30
+ class: "tui-space_right-3 tui-space_bottom-3",
31
+ type: "button",
32
+ appearance: "primary",
33
+ icon: "",
34
+ iconRight: "",
35
+ shape: null,
36
+ size: "m"
37
+ };
38
+ this.progressSegmentedComponent = {
39
+ colors: "tui(--tui-primary)",
40
+ max: "5",
41
+ size: "m",
42
+ value: "2"
43
+ };
44
+ this.inputComponent = {
45
+ case: "default",
46
+ disabled: false,
47
+ focus: false,
48
+ id: "id",
49
+ invalid: false,
50
+ label: "label",
51
+ placeholder: "placeholder",
52
+ type: "text",
53
+ validators: {
54
+ required: true
55
+ }
56
+ };
57
+ this.formGroup = new FormGroup({});
58
+ this.name = "Angular " + VERSION.major;
59
+ this.menu = [
60
+ {
61
+ title: "button",
62
+ key: "button",
63
+ component: KwikUIButtonComponent,
64
+ props: this.buttonComponent
65
+ },
66
+ {
67
+ title: "progress-segmented",
68
+ key: "progress_segmented",
69
+ component: KwikUIProgressSegmentedComponent,
70
+ props: this.progressSegmentedComponent
71
+ },
72
+ {
73
+ title: "input",
74
+ key: "input",
75
+ component: KwikUIInputComponent,
76
+ props: this.inputComponent
77
+ }
78
+ ];
79
+ this.table = [];
80
+ }
81
+ ngOnInit() {
82
+ for (let m of this.menu) {
83
+ m.id = this.revisedRandId();
84
+ }
85
+ }
86
+ revisedRandId() {
87
+ return Math.random()
88
+ .toString(36)
89
+ .replace(/[^a-z]+/g, "");
90
+ }
91
+ handleOnChange(event, id, key, idx) {
92
+ const _value = event.target.value;
93
+ this.formGroup.controls[id]["controls"][key].patchValue(_value);
94
+ }
95
+ toggleShow(id) {
96
+ console.log(id);
97
+ }
98
+ drop(event) {
99
+ // let item = JSON.parse(JSON.stringify(event));
100
+ if (event.previousContainer !== event.container) {
101
+ console.log("copying");
102
+ // Clone the item that was dropped.
103
+ let clone = cloneDeep(event.previousContainer.data[event.previousIndex]);
104
+ clone.id = clone.key + "__" + this.revisedRandId();
105
+ event.previousContainer.data[event.previousIndex] = clone;
106
+ let newFormGroup = new FormGroup({});
107
+ const props = clone.props;
108
+ Object.keys(props).forEach((key) => {
109
+ newFormGroup.addControl(key, new FormControl({ value: props[key], disabled: false }));
110
+ });
111
+ this.formGroup.addControl(clone.id, newFormGroup);
112
+ copyArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);
113
+ }
114
+ else {
115
+ console.log("moving");
116
+ moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
117
+ }
118
+ if (event.previousContainer.data) {
119
+ this.menu = this.menu.filter((f) => !f.temp);
120
+ }
121
+ }
122
+ exited(event) {
123
+ const currentIdx = event.container.data.findIndex((f) => f.id === event.item.data.id);
124
+ this.menu.splice(currentIdx + 1, 0, Object.assign(Object.assign({}, event.item.data), { temp: true }));
125
+ }
126
+ entered() {
127
+ this.menu = this.menu.filter((f) => !f.temp);
128
+ }
129
+ isNumber(val) {
130
+ return typeof val;
131
+ }
132
+ removeElement(idx, id) {
133
+ this.formGroup.removeControl(id);
134
+ this.table.splice(idx, 1);
135
+ }
136
+ getJSON() {
137
+ for (let t of this.table) {
138
+ t.props = this.formGroup.getRawValue()[t.id];
139
+ }
140
+ console.log(this.table);
141
+ }
142
+ }
143
+ /** @nocollapse */ KwikIDFormsBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
144
+ /** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", ngImport: i0, template: "<!-- <div>{{ name }}</div>\r\n<p>Start editing to see some magic happen :)</p>\r\n\r\n<button (click)=\"getJSON()\">Get JSON</button>\r\n\r\n<div class=\"drap-copy\">\r\n <div>\r\n <ul\r\n class=\"menu\"\r\n cdkDropList\r\n #menuList=\"cdkDropList\"\r\n [cdkDropListData]=\"menu\"\r\n cdkDropListSortingDisabled\r\n [cdkDropListConnectedTo]=\"[tableList]\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n (cdkDropListExited)=\"exited($event)\"\r\n (cdkDropListEntered)=\"entered()\"\r\n >\r\n <li class=\"item\" *ngFor=\"let item of menu\" cdkDrag [cdkDragData]=\"item\">\r\n <div class=\"item\" *cdkDragPlaceholder>\r\n <a>{{ item.title }}</a>\r\n </div>\r\n <ng-container *ngComponentOutlet=\"item.component\"> </ng-container>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div\r\n class=\"table\"\r\n cdkDropList\r\n #tableList=\"cdkDropList\"\r\n [cdkDropListData]=\"table\"\r\n (cdkDropListDropped)=\"drop($event)\"\r\n >\r\n <div class=\"content\">\r\n <div>\r\n <div class=\"item\" *ngFor=\"let item of table; let idx = index\" cdkDrag>\r\n <ng-container *ngComponentOutlet=\"item.component\"> </ng-container>\r\n <div class=\"item-header\">\r\n <p>{{ idx }}--{{ item.title }}</p>\r\n <button (click)=\"removeElement(idx, item.id)\">Remove</button>\r\n </div>\r\n <div class=\"desc\">\r\n <div>id - {{ item.id }}</div>\r\n <div>key - {{ item.key }}</div>\r\n </div>\r\n <ng-container\r\n *ngTemplateOutlet=\"formModal; context: item\"\r\n ></ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<ng-template #formModal let-component=\"component\" let-props=\"props\" let-id=\"id\">\r\n <div class=\"field_editor\">\r\n <div *ngFor=\"let i of props | keyvalue; let idx = index\">\r\n <div class=\"formModalInputGroup\">\r\n <label>{{ i.key }}</label>\r\n <input\r\n value=\"{{ i.value }}\"\r\n (keyup)=\"handleOnChange($event, id, i.key, idx)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template> -->\r\n", styles: [":host{--padding: 1rem;--border: 1px solid #e8e8e8}ul,li{list-style:none}*{margin:0;padding:0}p{font-family:Lato}.item{margin-bottom:12px;padding:var(--padding);border:var(--border);background:#fff;cursor:move;display:flex;flex-direction:column;grid-row-gap:.5rem;row-gap:.5rem}.item-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;align-content:center;grid-column-gap:.5rem;column-gap:.5rem}.table,.menu{padding:var(--padding)}.drap-copy{display:flex;border:var(--border)}.drap-copy>div{flex:1}.drap-copy>div:first-child{border-right:var(--border)}.desc{display:flex;justify-content:space-between;font-size:1em;color:#00000073}.field_editor{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;align-content:center;grid-row-gap:.5rem;row-gap:.5rem}.formModalInputGroup{display:flex;flex-direction:row;align-items:center;justify-content:space-between;align-content:center;grid-column-gap:.5rem;column-gap:.5rem}\n"] });
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsBuilderComponent, decorators: [{
146
+ type: Component,
147
+ args: [{
148
+ selector: "kwikid-forms-builder",
149
+ templateUrl: "./builder.component.html",
150
+ styleUrls: ["./builder.component.scss"]
151
+ }]
152
+ }], ctorParameters: function () { return []; } });
153
+
154
+ var EActionKey;
155
+ (function (EActionKey) {
156
+ EActionKey["SET_VALUE"] = "SET_VALUE";
157
+ EActionKey["FIELD_MESSAGE_SHOW"] = "FIELD_MESSAGE_SHOW";
158
+ EActionKey["FIELD_MESSAGES_HIDE"] = "FIELD_MESSAGES_HIDE";
159
+ EActionKey["FIELD_ERROR_SHOW"] = "FIELD_ERROR_SHOW";
160
+ EActionKey["FIELD_ERROR_HIDE"] = "FIELD_ERROR_HIDE";
161
+ EActionKey["FIELD_SHOW"] = "FIELD_SHOW";
162
+ EActionKey["FIELD_HIDE"] = "FIELD_HIDE";
163
+ EActionKey["FIELD_ENABLE"] = "FIELD_ENABLE";
164
+ EActionKey["FIELD_DISABLE"] = "FIELD_DISABLE";
165
+ EActionKey["FIELD_RESET"] = "FIELD_RESET";
166
+ EActionKey["HANDLE_CONNECTED_ELEMENTS"] = "HANDLE_CONNECTED_ELEMENTS";
167
+ EActionKey["CUSTOM"] = "CUSTOM";
168
+ })(EActionKey || (EActionKey = {}));
169
+
170
+ var EApiStatusType;
171
+ (function (EApiStatusType) {
172
+ EApiStatusType["DEFAULT"] = "default";
173
+ EApiStatusType["LOADING"] = "loading";
174
+ EApiStatusType["SUCCESS"] = "success";
175
+ EApiStatusType["FAILED"] = "failed";
176
+ })(EApiStatusType || (EApiStatusType = {}));
177
+
178
+ var EPatternKey;
179
+ (function (EPatternKey) {
180
+ EPatternKey["CUSTOM"] = "CUSTOM";
181
+ EPatternKey["IS_PAN_NUMBER"] = "IS_PAN_NUMBER";
182
+ EPatternKey["IS_AADHAAR_NUMBER"] = "IS_AADHAAR_NUMBER";
183
+ EPatternKey["IS_EMPTY"] = "IS_EMPTY";
184
+ EPatternKey["IS_NOT_EMPTY"] = "IS_NOT_EMPTY";
185
+ EPatternKey["IS_EMAIL"] = "IS_EMAIL";
186
+ EPatternKey["IS_NUMBER"] = "IS_NUMBER";
187
+ EPatternKey["IS_INTEGER"] = "IS_INTEGER";
188
+ EPatternKey["IS_URL"] = "IS_URL";
189
+ EPatternKey["IS_ALPHA"] = "IS_ALPHA";
190
+ EPatternKey["IS_ALPHANUMERIC"] = "IS_ALPHANUMERIC";
191
+ EPatternKey["IS_UPPERCASE"] = "IS_UPPERCASE";
192
+ EPatternKey["IS_LOWERCASE"] = "IS_LOWERCASE";
193
+ EPatternKey["IS_IP_ADDRESS"] = "IS_IP_ADDRESS";
194
+ EPatternKey["IS_JSON"] = "IS_JSON";
195
+ EPatternKey["IS_HTML"] = "IS_HTML";
196
+ EPatternKey["IS_TRUE"] = "IS_TRUE";
197
+ })(EPatternKey || (EPatternKey = {}));
198
+ var EPattern;
199
+ (function (EPattern) {
200
+ EPattern["IS_EMPTY"] = "^$";
201
+ EPattern["IS_PAN_NUMBER"] = "^[A-Z]{5}[[0-9]{4}[A-Z]{1}$";
202
+ EPattern["IS_AADHAAR_NUMBER"] = "^[0-9]{12}$";
203
+ EPattern["IS_NOT_EMPTY"] = "^.+$";
204
+ EPattern["IS_EMAIL"] = "^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$";
205
+ EPattern["IS_NUMBER"] = "^[+-]?d+(.d+)?$";
206
+ EPattern["IS_INTEGER"] = "^[+-]?d+$";
207
+ EPattern["IS_URL"] = "^(?:http(s)?://)?[w.-]+(?:.[w.-]+)+[w-._~:/?#[]@!$&'()*+,;=.]+$";
208
+ EPattern["IS_ALPHA"] = "^[a-zA-Z]+$";
209
+ EPattern["IS_ALPHANUMERIC"] = "^[a-zA-Z0-9]+$";
210
+ EPattern["IS_UPPERCASE"] = "^[A-Z]+$";
211
+ EPattern["IS_LOWERCASE"] = "^[a-z]+$";
212
+ EPattern["IS_IP_ADDRESS"] = "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$";
213
+ EPattern["IS_JSON"] = "^\\s*({(.|\\s)}|[(.|\\s)])\\s*$";
214
+ EPattern["IS_HTML"] = "^<([a-z]+)([^<]+)(?:>(.)</\\1>|\\s+/>)$";
215
+ EPattern["IS_TRUE"] = "true";
216
+ })(EPattern || (EPattern = {}));
217
+ var EMessageType;
218
+ (function (EMessageType) {
219
+ EMessageType["DEFAULT"] = "default";
220
+ EMessageType["ERROR"] = "error";
221
+ EMessageType["SUCCESS"] = "success";
222
+ EMessageType["WARNING"] = "warning";
223
+ })(EMessageType || (EMessageType = {}));
224
+
225
+ /**
226
+ * A function that logs the execution of a method.
227
+ * @param {any} target - The object the method belongs to.
228
+ * @param {string} propertyKey - The name of the method.
229
+ * @param {PropertyDescriptor} descriptor - The property descriptor for the method.
230
+ */
231
+ function log(target, propertyKey, descriptor) {
232
+ // save a reference to the original method
233
+ const originalMethod = descriptor.value;
234
+ // update the descriptor value with a new function that will log and execute the original method
235
+ descriptor.value = function (...args) {
236
+ console.group("Logging Method"); // start a new logging group
237
+ console.time("Execution Time:"); // start a timer
238
+ let result; // declare result variable
239
+ try {
240
+ // execute the original method and save the result
241
+ result = originalMethod.apply(this, args);
242
+ }
243
+ catch (error) {
244
+ // if an error is thrown, log the error and throw it again
245
+ logSyncMethodError(target.constructor.name, propertyKey, args, error);
246
+ console.timeEnd(`Execution Time:`); // stop the timer
247
+ console.groupEnd(); // end the logging group
248
+ throw error;
249
+ }
250
+ // if the result is a Promise, handle it as an async method
251
+ if (result instanceof Promise) {
252
+ result = result
253
+ .then((resolvedValue) => {
254
+ // on success, log the resolved value and return it
255
+ logAsyncMethod(target.constructor.name, propertyKey, args, resolvedValue);
256
+ console.timeEnd(`Execution Time:`); // stop the timer
257
+ console.groupEnd(); // end the logging group
258
+ return resolvedValue;
259
+ })
260
+ .catch((error) => {
261
+ // on error, log the error and throw it again
262
+ logAsyncMethodError(target.constructor.name, propertyKey, args, error);
263
+ console.timeEnd(`Execution Time:`); // stop the timer
264
+ console.groupEnd(); // end the logging group
265
+ throw error;
266
+ });
267
+ }
268
+ else {
269
+ // if the result is not a Promise, handle it as a sync method
270
+ logSyncMethod(target.constructor.name, propertyKey, args, result);
271
+ console.timeEnd("Execution Time:");
272
+ console.groupEnd();
273
+ }
274
+ return result;
275
+ };
276
+ }
277
+ /**
278
+ * This function logs a sync method's information to the console.
279
+ * @param {string} className - The name of the class where the method belongs.
280
+ * @param {string} methodName - The name of the method being called.
281
+ * @param {any[]} args - An array of arguments passed to the method.
282
+ * @param {any} result - The result of the method.
283
+ */
284
+ function logSyncMethod(className, methodName, args, result) {
285
+ console.log("%cType: Sync Method -", "color: #0d47a1; font-weight: bold;", "\nClass:", className, "\nMethod:", methodName, "\nArgs:", args, "\nReturn:", result);
286
+ }
287
+ /**
288
+ * Logs an error that occurred during the execution of a synchronous method.
289
+ * @param {string} className - The name of the class the method belongs to.
290
+ * @param {string} methodName - The name of the method.
291
+ * @param {any[]} args - The arguments passed to the method.
292
+ * @param {Error} error - The error that occurred.
293
+ */
294
+ function logSyncMethodError(className, methodName, args, error) {
295
+ console.log("%cType: Sync Method -", "color: #0d47a1; font-weight: bold;", "\nClass:", className, "\nMethod:", methodName, "\nArgs:", args, "\nError:", error);
296
+ }
297
+ /**
298
+ * Logs the result of the execution of an asynchronous method.
299
+ * @param {string} className - The name of the class the method belongs to.
300
+ * @param {string} methodName - The name of the method.
301
+ * @param {any[]} args - The arguments passed to the method.
302
+ * @param {any} result - The result of the method execution.
303
+ */
304
+ function logAsyncMethod(className, methodName, args, result) {
305
+ console.log("%cType: Async Method -", "color: #1565c0; font-weight: bold;", "\nClass:", className, "\nMethod:", methodName, "\nArgs:", args, "\nReturn:", result);
306
+ }
307
+ /**
308
+ * Logs an error that occurred during the execution of an asynchronous method.
309
+ * @param {string} className - The name of the class the method belongs to.
310
+ * @param {string} methodName - The name of the method.
311
+ * @param {any[]} args - The arguments passed to the method.
312
+ * @param {Error} error - The error that occurred.
313
+ */
314
+ function logAsyncMethodError(className, methodName, args, error) {
315
+ console.log("%cType: Async Method -", "color: #1565c0; font-weight: bold;", "\nClass:", className, "\nMethod:", methodName, "\nArgs:", args, "\nError:", error);
316
+ }
317
+
318
+ const hasKey$2 = (object, key) => {
319
+ return object.hasOwnProperty(key);
320
+ };
321
+ const isEmpty$1 = (value) => {
322
+ if (value === "" || value === undefined || value === null) {
323
+ return true;
324
+ }
325
+ else if (value &&
326
+ Object.keys(value).length === 0 &&
327
+ Object.getPrototypeOf(value) === Object.prototype) {
328
+ return true;
329
+ }
330
+ else if (Array.isArray(value)) {
331
+ if (value.length === 0) {
332
+ return true;
333
+ }
334
+ else {
335
+ return false;
336
+ }
337
+ }
338
+ else {
339
+ return false;
340
+ }
341
+ };
342
+ const isNotEmpty$1 = (value) => {
343
+ return !isEmpty$1(value);
344
+ };
345
+ const handleJPQueryResponse$1 = (value) => {
346
+ /**
347
+ * jp.query doesn't always return an array with one element
348
+ * so directly can't access with [0], need to check conditionally
349
+ */
350
+ if (Array.isArray(value)) {
351
+ if (value.length > 0) {
352
+ value = value[0];
353
+ }
354
+ else if (value.length === 0) {
355
+ value = "";
356
+ }
357
+ }
358
+ return value;
359
+ };
360
+ const jpQueryWrapper$1 = (obj, key) => {
361
+ return handleJPQueryResponse$1(jp.query(obj, key));
362
+ };
363
+ const isSingleForm = (formsList) => {
364
+ return formsList.length === 1;
365
+ };
366
+
367
+ var EFieldType;
368
+ (function (EFieldType) {
369
+ EFieldType["TITLE"] = "title";
370
+ EFieldType["TEXT"] = "text";
371
+ EFieldType["CHECKBOX"] = "checkbox";
372
+ EFieldType["NUMBER"] = "number";
373
+ EFieldType["DATE"] = "date";
374
+ EFieldType["PHONE"] = "phone";
375
+ EFieldType["RADIO"] = "radio";
376
+ EFieldType["DROPDOWN_WITH_SEARCH"] = "dropdown-with-search";
377
+ EFieldType["API_CALL"] = "api-call";
378
+ EFieldType["OTP"] = "otp";
379
+ EFieldType["AADHAAR_NUMBER"] = "aadhaar-number";
380
+ })(EFieldType || (EFieldType = {}));
381
+
382
+ const hasKey$1 = (object, key) => {
383
+ return object.hasOwnProperty(key);
384
+ };
385
+ const hasPath = (object, path) => {
386
+ return _.has(object, path);
387
+ };
388
+ const isEmptyString = (value) => {
389
+ return value === "";
390
+ };
391
+ const isUndefined = (value) => {
392
+ return value === undefined;
393
+ };
394
+ const isNull = (value) => {
395
+ return value === null;
396
+ };
397
+ const isEmptyObject = (object) => {
398
+ return (object &&
399
+ Object.keys(object).length === 0 &&
400
+ Object.getPrototypeOf(object) === Object.prototype);
401
+ };
402
+ const isEmptyArray = (arr) => {
403
+ return arr.length === 0;
404
+ };
405
+ const isEmpty = (value) => {
406
+ if (isEmptyString(value) || isUndefined(value) || isNull(value)) {
407
+ return true;
408
+ }
409
+ else if (isEmptyObject(value)) {
410
+ return true;
411
+ }
412
+ else if (Array.isArray(value)) {
413
+ if (isEmptyArray(value)) {
414
+ return true;
415
+ }
416
+ else {
417
+ return false;
418
+ }
419
+ }
420
+ else {
421
+ return false;
422
+ }
423
+ };
424
+ const isNotEmpty = (value) => {
425
+ return !isEmpty(value);
426
+ };
427
+ const isEmptyBrowserStorageValue = (value) => {
428
+ return isNull(value) && isUndefined(value);
429
+ };
430
+ const isNotEmptyBrowserStorageValue = (value) => {
431
+ return !isEmptyBrowserStorageValue(value);
432
+ };
433
+ const handleJPQueryResponse = (value) => {
434
+ /**
435
+ * jp.query doesn't always return an array with one element
436
+ * so directly can't access with [0], need to check conditionally
437
+ */
438
+ if (Array.isArray(value)) {
439
+ if (value.length > 0) {
440
+ value = value[0];
441
+ }
442
+ else if (value.length === 0) {
443
+ value = "";
444
+ }
445
+ }
446
+ else {
447
+ value = "";
448
+ }
449
+ return value;
450
+ };
451
+ const jpQueryWrapper = (obj, key) => {
452
+ return handleJPQueryResponse(jp.query(obj, key));
453
+ };
454
+ const replaceString = (str, find, replace) => {
455
+ return str.replace(new RegExp(find, "g"), replace);
456
+ };
457
+ const setFieldKeyValue = (field, path, value) => {
458
+ return _.set(field, path, value);
459
+ };
460
+ const setValueToObject = (object, path, value) => {
461
+ return _.set(object, path, value);
462
+ };
463
+ const formatValue = (field, fieldValue) => {
464
+ const fieldType = field.type;
465
+ let value;
466
+ if (isNotEmpty(fieldValue)) {
467
+ switch (fieldType) {
468
+ case EFieldType.DATE:
469
+ const splitDate = fieldValue.split("-");
470
+ value = new TuiDay(Number(splitDate[2]), // Year
471
+ Number(splitDate[1]) - 1, // Month, Why '-1' => Because Taiga-UI Required It, So...
472
+ Number(splitDate[0]) // Day
473
+ );
474
+ break;
475
+ case EFieldType.RADIO:
476
+ const fieldRadio = field;
477
+ value = fieldRadio.options.find((item) => {
478
+ return item.label === fieldValue;
479
+ });
480
+ break;
481
+ case EFieldType.CHECKBOX:
482
+ value = Boolean(fieldValue);
483
+ break;
484
+ default:
485
+ value = fieldValue;
486
+ break;
487
+ }
488
+ }
489
+ else {
490
+ value = fieldValue;
491
+ }
492
+ return value;
493
+ };
494
+ const setEmptyValue = (field) => {
495
+ const fieldType = field.type;
496
+ let value;
497
+ switch (fieldType) {
498
+ case EFieldType.CHECKBOX:
499
+ value = false;
500
+ break;
501
+ case EFieldType.NUMBER:
502
+ value = null;
503
+ break;
504
+ case EFieldType.DATE:
505
+ value = null;
506
+ break;
507
+ default:
508
+ value = "";
509
+ break;
510
+ }
511
+ return value;
512
+ };
513
+
514
+ class Condition {
515
+ constructor(condition, rulesMapping) {
516
+ this._condition = condition;
517
+ this._rulesMapping = rulesMapping;
518
+ }
519
+ parseKeys(condition, rulesEvaluationMapping) {
520
+ Object.keys(rulesEvaluationMapping).forEach((key) => {
521
+ condition = replaceString(condition, key, rulesEvaluationMapping[key]);
522
+ });
523
+ return condition;
524
+ }
525
+ parseOperators(condition) {
526
+ return condition.replace(/AND|OR|NOT|XOR|NAND|NOR|XNOR/g, (match) => {
527
+ switch (match) {
528
+ case "AND":
529
+ return "&&";
530
+ case "OR":
531
+ return "||";
532
+ case "NOT":
533
+ return "!";
534
+ case "XOR":
535
+ return "^";
536
+ case "NAND":
537
+ return "!&";
538
+ case "NOR":
539
+ return "!|";
540
+ case "XNOR":
541
+ return "!^";
542
+ default:
543
+ return match;
544
+ }
545
+ });
546
+ }
547
+ evaluate() {
548
+ this._condition = this.parseKeys(this._condition, this._rulesMapping);
549
+ this._condition = this.parseOperators(this._condition);
550
+ return eval(this._condition);
551
+ }
552
+ }
553
+ __decorate([
554
+ log
555
+ ], Condition.prototype, "evaluate", null);
556
+
557
+ class Actions {
558
+ constructor(action, field, ruleMapping, allFormsData, formData, previousFormData, takeAction) {
559
+ this._action = action;
560
+ this._field = field;
561
+ this._ruleMapping = ruleMapping;
562
+ this._allFormsData = allFormsData;
563
+ this._formData = formData;
564
+ this._previousFormData = previousFormData;
565
+ this._takeAction = takeAction;
566
+ }
567
+ execute() {
568
+ return __awaiter(this, void 0, void 0, function* () {
569
+ const condition = new Condition(this._action.condition, this._ruleMapping);
570
+ const actionSuccess = condition.evaluate();
571
+ if (actionSuccess) {
572
+ return this._takeAction(this._action, this._field, this._allFormsData, this._formData, this._previousFormData);
573
+ }
574
+ });
575
+ }
576
+ }
577
+ __decorate([
578
+ log
579
+ ], Actions.prototype, "execute", null);
580
+
581
+ var ERuleKey;
582
+ (function (ERuleKey) {
583
+ ERuleKey["OBJECT_PATH_EXISTS"] = "OBJECT_PATH_EXISTS";
584
+ ERuleKey["VALUE_CHECK"] = "VALUE_CHECK";
585
+ ERuleKey["VALUE_CHANGE"] = "VALUE_CHANGE";
586
+ })(ERuleKey || (ERuleKey = {}));
587
+
588
+ var ESourceKey;
589
+ (function (ESourceKey) {
590
+ ESourceKey["FIELD_CONFIG"] = "FIELD_CONFIG";
591
+ ESourceKey["FORM_DATA"] = "FORM_DATA";
592
+ ESourceKey["PREVIOUS_FORM_DATA"] = "PREVIOUS_FORM_DATA";
593
+ ESourceKey["ALL_FORMS_DATA"] = "ALL_FORMS_DATA";
594
+ ESourceKey["BROWSER_STORAGE"] = "BROWSER_STORAGE";
595
+ ESourceKey["PREDEFINED"] = "PREDEFINED";
596
+ ESourceKey["CUSTOM"] = "CUSTOM";
597
+ })(ESourceKey || (ESourceKey = {}));
598
+ var EBrowserStorageType;
599
+ (function (EBrowserStorageType) {
600
+ EBrowserStorageType["LOCAL_STORAGE"] = "LOCAL_STORAGE";
601
+ EBrowserStorageType["SESSION_STORAGE"] = "SESSION_STORAGE";
602
+ })(EBrowserStorageType || (EBrowserStorageType = {}));
603
+
604
+ class Sources {
605
+ constructor(field, formData, previousFormData, allFormsData) {
606
+ this._field = field;
607
+ this._formData = formData;
608
+ this._previousFormData = previousFormData;
609
+ this._allFormsData = allFormsData;
610
+ }
611
+ get formData() {
612
+ return this._formData;
613
+ }
614
+ set formData(value) {
615
+ this._formData = value;
616
+ }
617
+ get previousFormData() {
618
+ return this._previousFormData;
619
+ }
620
+ set previousFormData(value) {
621
+ this._previousFormData = value;
622
+ }
623
+ get allFormsData() {
624
+ return this._allFormsData;
625
+ }
626
+ set allFormsData(value) {
627
+ this._allFormsData = value;
628
+ }
629
+ get field() {
630
+ return this._field;
631
+ }
632
+ set field(value) {
633
+ this._field = value;
634
+ }
635
+ getValueFromFieldConfig(path) {
636
+ let value = "";
637
+ if (isNotEmpty(path)) {
638
+ value = jpQueryWrapper(this._field, path);
639
+ }
640
+ else {
641
+ value = setEmptyValue(this._field);
642
+ }
643
+ return value;
644
+ }
645
+ getValueFromFormData(path) {
646
+ let value;
647
+ value = jpQueryWrapper(this._formData, path);
648
+ return value;
649
+ }
650
+ getValueFromPreviousFormData(path) {
651
+ let value;
652
+ value = jpQueryWrapper(this._previousFormData, path);
653
+ return value;
654
+ }
655
+ getValueFromAllFormsData(path) {
656
+ let value;
657
+ value = jpQueryWrapper(this._allFormsData, path);
658
+ return value;
659
+ }
660
+ getValueFromBrowserStorage(type, key) {
661
+ let value = "";
662
+ switch (type) {
663
+ case EBrowserStorageType.LOCAL_STORAGE:
664
+ value = isNotEmptyBrowserStorageValue(localStorage.getItem(key))
665
+ ? localStorage.getItem(key)
666
+ : "";
667
+ break;
668
+ case EBrowserStorageType.SESSION_STORAGE:
669
+ value = isNotEmptyBrowserStorageValue(sessionStorage.getItem(key))
670
+ ? sessionStorage.getItem(key)
671
+ : "";
672
+ break;
673
+ default:
674
+ value = "";
675
+ break;
676
+ }
677
+ return value;
678
+ }
679
+ getValueFromSource(source) {
680
+ let value = "";
681
+ switch (source.key) {
682
+ case ESourceKey.FIELD_CONFIG:
683
+ value = this.getValueFromFieldConfig(source.props.path);
684
+ break;
685
+ case ESourceKey.FORM_DATA:
686
+ value = this.getValueFromFormData(source.props.path);
687
+ break;
688
+ case ESourceKey.ALL_FORMS_DATA:
689
+ value = this.getValueFromAllFormsData(source.props.path);
690
+ break;
691
+ case ESourceKey.PREVIOUS_FORM_DATA:
692
+ value = this.getValueFromPreviousFormData(source.props.path);
693
+ break;
694
+ case ESourceKey.BROWSER_STORAGE:
695
+ value = this.getValueFromBrowserStorage(source.props.browserStorage.type, source.props.browserStorage.key);
696
+ break;
697
+ case ESourceKey.PREDEFINED:
698
+ value = source.value;
699
+ break;
700
+ default:
701
+ value = "";
702
+ break;
703
+ }
704
+ return value;
705
+ }
706
+ setValueToFieldConfig(path, value) {
707
+ this._field = setValueToObject(this._field, path, value);
708
+ }
709
+ setValueToFormData(path, value) {
710
+ this._formData = setValueToObject(this._formData, path, value);
711
+ }
712
+ setValueToAllFormsData(path, value) {
713
+ this._allFormsData = setValueToObject(this._allFormsData, path, value);
714
+ }
715
+ setValueToPreviousFromData(path, value) {
716
+ this._previousFormData = setValueToObject(this._previousFormData, path, value);
717
+ }
718
+ setValueToBrowserStorage(type, key, value) {
719
+ switch (type) {
720
+ case EBrowserStorageType.LOCAL_STORAGE:
721
+ localStorage.setItem(key, value);
722
+ break;
723
+ case EBrowserStorageType.SESSION_STORAGE:
724
+ sessionStorage.setItem(key, value);
725
+ break;
726
+ default:
727
+ break;
728
+ }
729
+ }
730
+ setValueToSource(source, value) {
731
+ return __awaiter(this, void 0, void 0, function* () {
732
+ switch (source.key) {
733
+ case ESourceKey.FIELD_CONFIG:
734
+ this._field = this.setValueToFieldConfig(source.props.path, value);
735
+ break;
736
+ case ESourceKey.FORM_DATA:
737
+ this._formData = this.setValueToFormData(source.props.path, value);
738
+ break;
739
+ case ESourceKey.ALL_FORMS_DATA:
740
+ this._allFormsData = this.setValueToAllFormsData(source.props.path, value);
741
+ break;
742
+ case ESourceKey.PREVIOUS_FORM_DATA:
743
+ this._previousFormData = this.setValueToPreviousFromData(source.props.path, value);
744
+ break;
745
+ case ESourceKey.BROWSER_STORAGE:
746
+ yield this.setValueToBrowserStorage(source.props.browserStorage.type, source.props.browserStorage.key, value);
747
+ break;
748
+ default:
749
+ break;
750
+ }
751
+ });
752
+ }
753
+ }
754
+ __decorate([
755
+ log
756
+ ], Sources.prototype, "getValueFromSource", null);
757
+ __decorate([
758
+ log
759
+ ], Sources.prototype, "setValueToSource", null);
760
+
761
+ class Rules {
762
+ constructor(rules, field, formData, previousFormData, allFormsData) {
763
+ this._field = field;
764
+ this._formData = formData;
765
+ this._previousFormData = previousFormData;
766
+ this._allFormsData = allFormsData;
767
+ this._rules = rules;
768
+ }
769
+ evaluate(rule) {
770
+ let ruleType = rule.key;
771
+ let ruleEvaluationStatus = false;
772
+ if (this._field.type === "radio") {
773
+ this._formData[this._field.key] = this._formData[this._field.key].label;
774
+ }
775
+ const source = new Sources(this._field, this._formData, this._previousFormData, this._allFormsData);
776
+ switch (ruleType) {
777
+ case ERuleKey.OBJECT_PATH_EXISTS:
778
+ const ruleObjectPathExists = rule;
779
+ const ruleObjectPathExistsObject = ruleObjectPathExists.props.object;
780
+ const ruleObjectPathExistsPath = ruleObjectPathExists.props.path;
781
+ switch (ruleObjectPathExistsObject) {
782
+ case ESourceKey.ALL_FORMS_DATA:
783
+ ruleEvaluationStatus = hasPath(this._allFormsData, ruleObjectPathExistsPath);
784
+ break;
785
+ case ESourceKey.FORM_DATA:
786
+ ruleEvaluationStatus = hasPath(this._formData, ruleObjectPathExistsPath);
787
+ break;
788
+ case ESourceKey.PREVIOUS_FORM_DATA:
789
+ ruleEvaluationStatus = hasPath(this._previousFormData, ruleObjectPathExistsPath);
790
+ break;
791
+ case ESourceKey.FIELD_CONFIG:
792
+ ruleEvaluationStatus = hasPath(this._field, ruleObjectPathExistsPath);
793
+ break;
794
+ default:
795
+ ruleEvaluationStatus = false;
796
+ break;
797
+ }
798
+ break;
799
+ case ERuleKey.VALUE_CHECK:
800
+ const ruleValueCheck = rule;
801
+ const ruleValueCheckSource = ruleValueCheck.props.value.source;
802
+ const ruleValueCheckValue = source.getValueFromSource(ruleValueCheckSource);
803
+ if (ruleValueCheck.props.pattern.key === EPatternKey.CUSTOM) {
804
+ var re = new RegExp(ruleValueCheck.props.pattern.pattern);
805
+ }
806
+ else {
807
+ var re = new RegExp(EPattern[ruleValueCheck.props.pattern.key]);
808
+ }
809
+ ruleEvaluationStatus = re.test(ruleValueCheckValue);
810
+ break;
811
+ case ERuleKey.VALUE_CHANGE:
812
+ const ruleValueChange = rule;
813
+ const ruleValueChangeCurrentSource = ruleValueChange.props.value.current.source;
814
+ const ruleValueChangePreviousSource = ruleValueChange.props.value.previous.source;
815
+ const previousValue = source.getValueFromSource(ruleValueChangePreviousSource);
816
+ const currentValue = source.getValueFromSource(ruleValueChangeCurrentSource);
817
+ ruleEvaluationStatus = previousValue === currentValue;
818
+ break;
819
+ default:
820
+ break;
821
+ }
822
+ return ruleEvaluationStatus;
823
+ }
824
+ mapping() {
825
+ let rulesEvaluationMapping = {};
826
+ for (const rule of this._rules) {
827
+ const ruleEvaluationStatus = this.evaluate(rule);
828
+ rulesEvaluationMapping = Object.assign(Object.assign({}, rulesEvaluationMapping), { [rule.id]: ruleEvaluationStatus });
829
+ }
830
+ return rulesEvaluationMapping;
831
+ }
832
+ }
833
+ __decorate([
834
+ log
835
+ ], Rules.prototype, "evaluate", null);
836
+ __decorate([
837
+ log
838
+ ], Rules.prototype, "mapping", null);
839
+
840
+ class Defaults {
841
+ constructor(field, allFormsData, formData, previousFormData, takeAction) {
842
+ this._field = field;
843
+ this._allFormsData = allFormsData;
844
+ this._formData = formData;
845
+ this._previousFormData = previousFormData;
846
+ this._takeAction = takeAction;
847
+ }
848
+ getDefaultValue() {
849
+ return __awaiter(this, void 0, void 0, function* () {
850
+ let defaultValue;
851
+ const sources = this._field.default.value.sources;
852
+ let sourceIndex = 0;
853
+ for (let source of sources) {
854
+ const sources = new Sources(this._field, this._formData, this._previousFormData, this._allFormsData);
855
+ const value = sources.getValueFromSource(source);
856
+ // Set the Value of current source.
857
+ this._field = setValueToObject(this._field, `default.value.sources.[${sourceIndex}].value`, value);
858
+ const validation = source.validation;
859
+ const triggers = validation.triggers;
860
+ const rules = validation.rules;
861
+ const actions = validation.actions;
862
+ const rulesMapping = new Rules(rules, this._field, this._formData, this._previousFormData, this._allFormsData).mapping();
863
+ for (let action of actions) {
864
+ const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
865
+ if (conditionEvaluation) {
866
+ const actions = new Actions(action, this._field, rulesMapping, this._allFormsData, this._formData, this._previousFormData, this._takeAction);
867
+ yield actions.execute();
868
+ }
869
+ }
870
+ sourceIndex++;
871
+ }
872
+ defaultValue = this._field.default.value.value;
873
+ if (isEmpty$1(defaultValue)) {
874
+ defaultValue = setEmptyValue(this._field);
875
+ }
876
+ return defaultValue;
877
+ });
878
+ }
879
+ }
880
+ __decorate([
881
+ log
882
+ ], Defaults.prototype, "getDefaultValue", null);
883
+
884
+ class Validations {
885
+ constructor(field, formData, previousFormData, allFormsData, takeAction) {
886
+ this._field = field;
887
+ this._formData = formData;
888
+ this._previousFormData = previousFormData;
889
+ this._allFormsData = allFormsData;
890
+ this._takeAction = takeAction;
891
+ }
892
+ get formData() {
893
+ return this._formData;
894
+ }
895
+ set formData(value) {
896
+ this._formData = value;
897
+ }
898
+ get previousFormData() {
899
+ return this._previousFormData;
900
+ }
901
+ set previousFormData(value) {
902
+ this._previousFormData = value;
903
+ }
904
+ get allFormsData() {
905
+ return this._allFormsData;
906
+ }
907
+ set allFormsData(value) {
908
+ this._allFormsData = value;
909
+ }
910
+ get field() {
911
+ return this._field;
912
+ }
913
+ set field(value) {
914
+ this._field = value;
915
+ }
916
+ getFieldValidators(field) {
917
+ let validators = [];
918
+ if (hasKey$1(field, "validators") &&
919
+ hasKey$1(field.validators, "min") &&
920
+ isNotEmpty(field.validators.min)) {
921
+ validators.push(Validators.min(field.validators.min));
922
+ }
923
+ if (hasKey$1(field, "validators") &&
924
+ hasKey$1(field.validators, "max") &&
925
+ isNotEmpty(field.validators.max)) {
926
+ validators.push(Validators.max(field.validators.max));
927
+ }
928
+ if (hasKey$1(field, "required") ||
929
+ (hasKey$1(field, "validators") && hasKey$1(field.validators, "required"))) {
930
+ validators.push(Validators.required);
931
+ }
932
+ if (hasKey$1(field, "validators") &&
933
+ hasKey$1(field.validators, "minLength") &&
934
+ isNotEmpty(field.validators.minLength)) {
935
+ validators.push(Validators.minLength(field.validators.minLength));
936
+ }
937
+ if (hasKey$1(field, "validators") &&
938
+ hasKey$1(field.validators, "maxLength") &&
939
+ isNotEmpty(field.validators.maxLength)) {
940
+ validators.push(Validators.maxLength(field.validators.maxLength));
941
+ }
942
+ if (hasKey$1(field, "validators") &&
943
+ hasKey$1(field.validators, "pattern") &&
944
+ isNotEmpty(field.validators.pattern)) {
945
+ if (field.validators.pattern.key === EPatternKey.CUSTOM) {
946
+ validators.push(Validators.pattern(field.validators.pattern.pattern));
947
+ }
948
+ else {
949
+ validators.push(Validators.pattern(EPattern[field.validators.pattern.key]));
950
+ }
951
+ }
952
+ if (hasKey$1(field, "validators") &&
953
+ hasKey$1(field.validators, "nullValidator") &&
954
+ isNotEmpty(field.validators.nullValidator)) {
955
+ validators.push(Validators.nullValidator(field.validators.nullValidator));
956
+ }
957
+ return validators;
958
+ }
959
+ getFormValidationErrors(control) {
960
+ let errors = [];
961
+ for (const key in control.controls) {
962
+ const controlErrors = control.controls[key].errors;
963
+ if (controlErrors !== null && controlErrors !== undefined) {
964
+ Object.keys(controlErrors).forEach((keyError) => {
965
+ errors.push({
966
+ name: keyError,
967
+ value: controlErrors[keyError]
968
+ });
969
+ });
970
+ }
971
+ }
972
+ return errors;
973
+ }
974
+ findInvalidControlsRecursive(formToInvestigate) {
975
+ var controls = [];
976
+ let recursiveFunc = (form) => {
977
+ Object.keys(form.controls).forEach((field) => {
978
+ const control = form.get(field);
979
+ if (control.invalid) {
980
+ controls.push({
981
+ key: field,
982
+ invalid: true
983
+ });
984
+ }
985
+ else {
986
+ controls.push({
987
+ key: field,
988
+ invalid: false
989
+ });
990
+ }
991
+ if (control instanceof FormGroup) {
992
+ recursiveFunc(control);
993
+ }
994
+ else if (control instanceof FormArray) {
995
+ recursiveFunc(control);
996
+ }
997
+ });
998
+ };
999
+ recursiveFunc(formToInvestigate);
1000
+ return controls;
1001
+ }
1002
+ validateField() {
1003
+ return __awaiter(this, void 0, void 0, function* () {
1004
+ const validations = this._field.validation;
1005
+ const triggers = validations.triggers;
1006
+ const rules = validations.rules;
1007
+ const actions = validations.actions;
1008
+ const rulesMapping = new Rules(rules, this._field, this._formData, this._previousFormData, this._allFormsData).mapping();
1009
+ for (let action of actions) {
1010
+ const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
1011
+ if (conditionEvaluation) {
1012
+ const actions = new Actions(action, this._field, rulesMapping, this._allFormsData, this._formData, this._previousFormData, this._takeAction);
1013
+ yield actions.execute();
1014
+ }
1015
+ }
1016
+ });
1017
+ }
1018
+ }
1019
+ __decorate([
1020
+ log
1021
+ ], Validations.prototype, "getFieldValidators", null);
1022
+ __decorate([
1023
+ log
1024
+ ], Validations.prototype, "getFormValidationErrors", null);
1025
+ __decorate([
1026
+ log
1027
+ ], Validations.prototype, "findInvalidControlsRecursive", null);
1028
+ __decorate([
1029
+ log
1030
+ ], Validations.prototype, "validateField", null);
1031
+
1032
+ class KwikIDFormViewService {
1033
+ constructor() { }
1034
+ // 'init' stage of the form
1035
+ createFormGroup(fields, formData, previousFormData, allFormsData, takeAction) {
1036
+ return __awaiter(this, void 0, void 0, function* () {
1037
+ let formGroup = new FormGroup({});
1038
+ for (let field of fields) {
1039
+ if (field.type !== "title") {
1040
+ const defaults = new Defaults(field, allFormsData, formData, previousFormData, takeAction);
1041
+ const value = yield defaults.getDefaultValue();
1042
+ const validators = new Validations(field, formData, previousFormData, allFormsData, takeAction).getFieldValidators(field);
1043
+ formGroup.addControl(field.key, new FormControl({ value: value, disabled: field.disabled }, { validators: validators }));
1044
+ }
1045
+ }
1046
+ return formGroup;
1047
+ });
1048
+ }
1049
+ }
1050
+ __decorate([
1051
+ log
1052
+ ], KwikIDFormViewService.prototype, "createFormGroup", null);
1053
+
1054
+ class Apis {
1055
+ constructor(field, formData, previousFormData, allFormsData, takeAction) {
1056
+ this._field = field;
1057
+ this._formData = formData;
1058
+ this._previousFormData = previousFormData;
1059
+ this._allFormsData = allFormsData;
1060
+ this._takeAction = takeAction;
1061
+ this._api = field.api;
1062
+ this._request = field.api.request;
1063
+ this._response = field.api.response;
1064
+ this._status = field.api.status;
1065
+ }
1066
+ setRequestBodyParams() {
1067
+ var _a, _b, _c;
1068
+ return __awaiter(this, void 0, void 0, function* () {
1069
+ let params = this._request.body.params;
1070
+ let paramIndex = 0;
1071
+ for (let param of params) {
1072
+ let sources = param.sources;
1073
+ let sourceIndex = 0;
1074
+ for (let source of sources) {
1075
+ const sources = new Sources(this._field, this._formData, this._previousFormData, this._allFormsData);
1076
+ const value = sources.getValueFromSource(source);
1077
+ // Set the Value of current source.
1078
+ this._field = setValueToObject(this._field, `api.request.body.params[${paramIndex}].sources[${sourceIndex}].value`, value);
1079
+ const validation = source.validation;
1080
+ const triggers = (_a = validation === null || validation === void 0 ? void 0 : validation.triggers) !== null && _a !== void 0 ? _a : [];
1081
+ const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
1082
+ const actions = (_c = validation === null || validation === void 0 ? void 0 : validation.actions) !== null && _c !== void 0 ? _c : [];
1083
+ const rulesMapping = new Rules(rules, this._field, this._formData, this._previousFormData, this._allFormsData).mapping();
1084
+ for (let action of actions) {
1085
+ const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
1086
+ if (conditionEvaluation) {
1087
+ const actions = new Actions(action, this._field, rulesMapping, this._allFormsData, this._formData, this._previousFormData, this._takeAction);
1088
+ yield actions.execute();
1089
+ }
1090
+ }
1091
+ sourceIndex++;
1092
+ }
1093
+ paramIndex++;
1094
+ }
1095
+ return this._field;
1096
+ });
1097
+ }
1098
+ validateRequestBody() {
1099
+ return __awaiter(this, void 0, void 0, function* () {
1100
+ const body = this._request.body;
1101
+ const validation = body.validation;
1102
+ const triggers = validation.triggers;
1103
+ const rules = validation.rules;
1104
+ const actions = validation.actions;
1105
+ const rulesMapping = new Rules(rules, this._field, this._formData, this._previousFormData, this._allFormsData).mapping();
1106
+ for (let action of actions) {
1107
+ const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
1108
+ if (conditionSuccess) {
1109
+ const actions = new Actions(action, this._field, rulesMapping, this._allFormsData, this._formData, this._previousFormData, this._takeAction);
1110
+ yield actions.execute();
1111
+ }
1112
+ }
1113
+ return this._field;
1114
+ });
1115
+ }
1116
+ validateApiCallResponse() {
1117
+ return __awaiter(this, void 0, void 0, function* () {
1118
+ const validation = this._response.validation;
1119
+ const triggers = validation.triggers;
1120
+ const rules = validation.rules;
1121
+ const actions = validation.actions;
1122
+ const rulesMapping = new Rules(rules, this._field, this._formData, this._previousFormData, this._allFormsData).mapping();
1123
+ for (let action of actions) {
1124
+ const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
1125
+ if (conditionSuccess) {
1126
+ const actions = new Actions(action, this._field, rulesMapping, this._allFormsData, this._formData, this._previousFormData, this._takeAction);
1127
+ yield actions.execute();
1128
+ }
1129
+ }
1130
+ return this._field;
1131
+ });
1132
+ }
1133
+ getPropsValues() {
1134
+ return {
1135
+ field: this._field,
1136
+ formData: this._formData,
1137
+ previousFormData: this._previousFormData,
1138
+ allFormsData: this._allFormsData
1139
+ };
1140
+ }
1141
+ }
1142
+ __decorate([
1143
+ log
1144
+ ], Apis.prototype, "setRequestBodyParams", null);
1145
+ __decorate([
1146
+ log
1147
+ ], Apis.prototype, "validateRequestBody", null);
1148
+ __decorate([
1149
+ log
1150
+ ], Apis.prototype, "validateApiCallResponse", null);
1151
+
1152
+ const findFieldFromKey = (fields, key) => {
1153
+ const field = fields.find((field) => {
1154
+ if (field.key === key) {
1155
+ return field;
1156
+ }
1157
+ });
1158
+ return field;
1159
+ };
1160
+ const findFieldIndexFromKey = (fields, key) => {
1161
+ let fieldIndex;
1162
+ fieldIndex = fields.findIndex((_) => {
1163
+ return key === _.key;
1164
+ });
1165
+ return fieldIndex;
1166
+ };
1167
+ const getSearchTextOptionsFromRemoteFile = (field, childField, formGroup) => __awaiter(void 0, void 0, void 0, function* () {
1168
+ const parentFieldValue = formGroup.controls[field.key].value;
1169
+ // Determine the URL of the remote file to fetch
1170
+ let fileUrl;
1171
+ if (childField.regexToGetJsonRemoteUrlKey) {
1172
+ const fileKey = parentFieldValue.match(childField.regexToGetJsonRemoteUrlKey)[0];
1173
+ fileUrl = childField.jsonRemoteUrlMapping[fileKey];
1174
+ }
1175
+ else {
1176
+ fileUrl = childField.fileUrl;
1177
+ }
1178
+ // Return early if there is no file URL
1179
+ if (!fileUrl)
1180
+ return;
1181
+ // Fetch the remote file and parse its JSON data
1182
+ const response = yield fetch(fileUrl);
1183
+ const data = yield response.json();
1184
+ // Return the data for the given parent field value
1185
+ return data[parentFieldValue];
1186
+ });
1187
+ const getSearchTextOptionsFromFieldConfig = (field, childField, formGroup) => {
1188
+ let options;
1189
+ const fieldValue = formGroup.controls[field.key].value;
1190
+ if (isNotEmpty(childField["json"])) {
1191
+ options = childField["json"][fieldValue];
1192
+ }
1193
+ return options;
1194
+ };
1195
+ const formatSearchTextOptions = (options) => {
1196
+ return options.map(({ title }) => title);
1197
+ };
1198
+ const formatDateToStandardFormat = (date) => {
1199
+ let formattedDate;
1200
+ let year = date.year;
1201
+ let month = date.month;
1202
+ let day = date.day;
1203
+ formattedDate = `${day}-${month + 1}-${year}`;
1204
+ return formattedDate;
1205
+ };
1206
+ function highlightFieldError(field, error) {
1207
+ field.invalid = error;
1208
+ field.focus = error;
1209
+ // if (!error) {
1210
+ // field["messages"] = field["messages"].filter(function (fieldMessage: {
1211
+ // type: string;
1212
+ // message: string;
1213
+ // }) {
1214
+ // return fieldMessage.type === "error";
1215
+ // });
1216
+ // }
1217
+ return field;
1218
+ }
1219
+ const addMessage = (field, message) => {
1220
+ const isDuplicateMessage = (messages, message) => {
1221
+ return messages.some((fieldMessage) => {
1222
+ return (fieldMessage.type === message.type &&
1223
+ fieldMessage.message === message.message);
1224
+ });
1225
+ };
1226
+ field["messages"] = [];
1227
+ if (hasKey$1(field, "messages")) {
1228
+ if (!isDuplicateMessage(field["messages"], message)) {
1229
+ field["messages"].push({
1230
+ type: message.type,
1231
+ message: message.message
1232
+ });
1233
+ }
1234
+ }
1235
+ else {
1236
+ field["messages"] = [{ type: message.type, message: message.message }];
1237
+ }
1238
+ return field;
1239
+ };
1240
+ const removeMessage = (field, message) => {
1241
+ field["messages"] = field["messages"].filter(function (fieldMessage) {
1242
+ return fieldMessage.type !== message.type;
1243
+ });
1244
+ return field;
1245
+ };
1246
+ function setFieldError(fields, errors, key, error) {
1247
+ const fieldIndex = fields.findIndex((field) => {
1248
+ return field.key === key;
1249
+ });
1250
+ const setErrorMessages = (field, errors) => {
1251
+ const getErrorMessage = (fieldLabel, errorType) => {
1252
+ let errorMessage = "";
1253
+ switch (errorType) {
1254
+ case "required":
1255
+ errorMessage = `${fieldLabel} is required!`;
1256
+ break;
1257
+ case "pattern":
1258
+ errorMessage = `${fieldLabel} has wrong pattern!`;
1259
+ break;
1260
+ case "email":
1261
+ errorMessage = `${fieldLabel} has wrong email format!`;
1262
+ break;
1263
+ case "minlength":
1264
+ errorMessage = `${fieldLabel} has wrong length! Required minimum length: ${field.validators.minLength}`;
1265
+ break;
1266
+ case "maxlength":
1267
+ errorMessage = `${fieldLabel} has wrong length! Required maximum length: ${field.validators.maxLength}`;
1268
+ break;
1269
+ case "areEqual":
1270
+ errorMessage = `${fieldLabel} must be equal!`;
1271
+ break;
1272
+ default:
1273
+ errorMessage = `${fieldLabel}: ${"error.error_name"}: ${"error.error_value"}`;
1274
+ break;
1275
+ }
1276
+ return errorMessage;
1277
+ };
1278
+ Object.keys(errors).forEach((error) => {
1279
+ field = addMessage(field, {
1280
+ type: "error",
1281
+ message: getErrorMessage(field.label, error)
1282
+ });
1283
+ });
1284
+ return field;
1285
+ };
1286
+ if (error) {
1287
+ fields[fieldIndex] = setErrorMessages(fields[fieldIndex], errors);
1288
+ }
1289
+ else {
1290
+ fields[fieldIndex]["messages"] = [];
1291
+ }
1292
+ fields[fieldIndex] = highlightFieldError(fields[fieldIndex], error);
1293
+ return fields;
1294
+ }
1295
+
1296
+ class KwikIDFormViewComponent {
1297
+ constructor(formViewService) {
1298
+ this.formViewService = formViewService;
1299
+ this.componentThis = this;
1300
+ this.apiCallResponse = {};
1301
+ this.isMobileView = false;
1302
+ this.onClickViewForms = new EventEmitter();
1303
+ this.onClickSaveForm = new EventEmitter();
1304
+ this.onClickApiCall = new EventEmitter();
1305
+ this.getActiveFormData = new EventEmitter();
1306
+ this.formFields = [];
1307
+ this.previousFormData = {};
1308
+ this.loading = true;
1309
+ this.viewFormsButton = {
1310
+ disabled: false,
1311
+ showLoader: false
1312
+ };
1313
+ this.saveFormButton = {
1314
+ disabled: false,
1315
+ showLoader: false
1316
+ };
1317
+ this.formGroup = new FormGroup({});
1318
+ }
1319
+ ngOnInit() {
1320
+ (() => __awaiter(this, void 0, void 0, function* () {
1321
+ yield this.initFormConfig(this.formConfig);
1322
+ this.loading = false;
1323
+ }))();
1324
+ }
1325
+ ngAfterViewInit() { }
1326
+ ngOnChanges(changes) {
1327
+ const verifyChange = (key) => {
1328
+ return hasKey$1(changes, key) && !changes[key].firstChange;
1329
+ };
1330
+ if (verifyChange("formData")) {
1331
+ this.formData = Object.assign(Object.assign({}, this.formData), changes.formData.currentValue);
1332
+ }
1333
+ if (verifyChange("apiCallResponse")) {
1334
+ this.apiCallResponse = changes.apiCallResponse.currentValue;
1335
+ this.formData = Object.assign(Object.assign({}, this.formData), { [this.apiCallResponse.key]: this.apiCallResponse.response });
1336
+ this.formGroup.patchValue({
1337
+ [this.apiCallResponse.key]: this.apiCallResponse.response
1338
+ }, { emitEvent: false });
1339
+ let field = findFieldFromKey(this.formFields, this.apiCallResponse.key);
1340
+ const apis = new Apis(field, this.formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this));
1341
+ (() => __awaiter(this, void 0, void 0, function* () {
1342
+ field = yield apis.validateApiCallResponse();
1343
+ }))();
1344
+ }
1345
+ if (verifyChange("isMobileView")) {
1346
+ this.isMobileView = changes.isMobileView.currentValue;
1347
+ }
1348
+ if (verifyChange("allFormsData")) {
1349
+ this.allFormsData = changes.allFormsData.currentValue;
1350
+ }
1351
+ if (verifyChange("formsList")) {
1352
+ this.formsList = changes.formsList.currentValue;
1353
+ }
1354
+ if (verifyChange("formConfig")) {
1355
+ this.formConfig = changes.formConfig.currentValue;
1356
+ (() => __awaiter(this, void 0, void 0, function* () {
1357
+ yield this.initFormConfig(this.formConfig);
1358
+ }))();
1359
+ }
1360
+ }
1361
+ initFormConfig(formConfig) {
1362
+ return __awaiter(this, void 0, void 0, function* () {
1363
+ this.setFormFieldsFromFormConfig(formConfig);
1364
+ this.setFormDataFromAllFormsData();
1365
+ this.formGroup = yield this.formViewService.createFormGroup(this.formFields, this.formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this));
1366
+ for (let field of this.formFields) {
1367
+ if (field.type !== "title") {
1368
+ this.previousFormData = Object.assign(Object.assign({}, this.previousFormData), { [field.key]: this.formGroup.controls[field.key].value });
1369
+ this.formGroup.controls[field.key].valueChanges
1370
+ .pipe(pairwise())
1371
+ .subscribe(([previousValue, currentValue]) => {
1372
+ this.previousFormData = Object.assign(Object.assign({}, this.previousFormData), { [field.key]: previousValue });
1373
+ this.formData = Object.assign(Object.assign({}, this.formData), { [field.key]: currentValue });
1374
+ });
1375
+ }
1376
+ }
1377
+ for (let field of this.formFields) {
1378
+ if (field.type !== "title") {
1379
+ (() => __awaiter(this, void 0, void 0, function* () {
1380
+ field = yield this.handleConnectedElements({
1381
+ key: field.key,
1382
+ value: this.formGroup.controls[field.key].value
1383
+ }, "ON_INIT");
1384
+ }))();
1385
+ }
1386
+ }
1387
+ });
1388
+ }
1389
+ setFormFieldsFromFormConfig(formConfig) {
1390
+ if (hasKey$1(formConfig, "fields")) {
1391
+ this.formFields = formConfig.fields;
1392
+ }
1393
+ else if (hasKey$1(formConfig, "multiForm") &&
1394
+ hasKey$1(formConfig.multiForm, "fields")) {
1395
+ this.formFields = formConfig.multiForm.fields;
1396
+ }
1397
+ }
1398
+ setFormDataFromAllFormsData() {
1399
+ if (hasKey$1(this.allFormsData, this.formConfig.key)) {
1400
+ this.formData = this.allFormsData[this.formConfig.key];
1401
+ }
1402
+ else {
1403
+ this.formData = {};
1404
+ }
1405
+ }
1406
+ handleConnectedElementFieldActions(connectedFieldConfig, connectedField) {
1407
+ return __awaiter(this, void 0, void 0, function* () {
1408
+ if (hasKey$1(connectedFieldConfig, "rules")) {
1409
+ const rulesMapping = new Rules(connectedFieldConfig.rules, connectedField, this.formData, this.previousFormData, this.allFormsData).mapping();
1410
+ for (let action of connectedFieldConfig.actions) {
1411
+ const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
1412
+ if (conditionSuccess) {
1413
+ const actions = new Actions(action, connectedField, rulesMapping, this.allFormsData, this.formData, this.previousFormData, this.takeAction.bind(this));
1414
+ yield actions.execute();
1415
+ }
1416
+ }
1417
+ }
1418
+ return connectedField;
1419
+ });
1420
+ }
1421
+ handleConnectedElementFields(currentField, connectedFieldConfig, eventType) {
1422
+ return __awaiter(this, void 0, void 0, function* () {
1423
+ let connectedField = findFieldFromKey(this.formFields, connectedFieldConfig["key"]);
1424
+ switch (eventType) {
1425
+ case "INIT":
1426
+ if (hasKey$1(connectedField, "triggers") &&
1427
+ connectedField.triggers.includes("INIT")) {
1428
+ if (this.isFieldEnabled(connectedField.key)) {
1429
+ if (hasKey$1(connectedFieldConfig, "connectedParentFields")) {
1430
+ switch (connectedFieldConfig.type) {
1431
+ case "dropdown-with-search":
1432
+ connectedField = yield this.handleFieldTypeSearchText(currentField, connectedField);
1433
+ break;
1434
+ default:
1435
+ break;
1436
+ }
1437
+ }
1438
+ }
1439
+ connectedField = yield this.handleConnectedElementFieldActions(connectedFieldConfig, connectedField);
1440
+ }
1441
+ break;
1442
+ case "VALUE_CHANGE":
1443
+ if (hasKey$1(connectedFieldConfig, "triggers") &&
1444
+ connectedFieldConfig.triggers.includes("VALUE_CHANGE")) {
1445
+ switch (connectedField.type) {
1446
+ case "dropdown-with-search":
1447
+ connectedField = yield this.handleFieldTypeSearchText(currentField, connectedField);
1448
+ break;
1449
+ default:
1450
+ break;
1451
+ }
1452
+ connectedField = yield this.handleConnectedElementFieldActions(connectedFieldConfig, connectedField);
1453
+ }
1454
+ break;
1455
+ case "NESTED_LINK":
1456
+ if (hasKey$1(connectedFieldConfig, "triggers") &&
1457
+ connectedFieldConfig.triggers.includes("NESTED_LINK")) {
1458
+ connectedField = yield this.handleConnectedElementFieldActions(connectedFieldConfig, connectedField);
1459
+ }
1460
+ default:
1461
+ if (hasKey$1(connectedFieldConfig, "triggers")) {
1462
+ connectedField = yield this.handleConnectedElementFieldActions(connectedFieldConfig, connectedField);
1463
+ }
1464
+ break;
1465
+ }
1466
+ if (hasKey$1(connectedField, "connectedElements")) {
1467
+ for (const connectedFieldConfig of connectedField.connectedElements
1468
+ .fields) {
1469
+ connectedField = this.handleConnectedElementFields(connectedField, connectedFieldConfig, "NESTED_LINK");
1470
+ }
1471
+ }
1472
+ return currentField;
1473
+ });
1474
+ }
1475
+ handleConnectedElements(e, eventType) {
1476
+ let currentField = findFieldFromKey(this.formFields, e.key);
1477
+ if (hasKey$1(currentField, "connectedElements")) {
1478
+ let connectedFields = currentField.connectedElements.connectedFields;
1479
+ for (let connectedFieldConfig of connectedFields) {
1480
+ currentField = this.handleConnectedElementFields(currentField, connectedFieldConfig, eventType);
1481
+ }
1482
+ }
1483
+ }
1484
+ // DOM Event Handlers
1485
+ handleGetKeyValue(e) {
1486
+ this.formGroup.patchValue({
1487
+ [e.key]: e.value
1488
+ }, { emitEvent: false });
1489
+ // Currently set only for dropdown-with-search connected fields
1490
+ let field = findFieldFromKey(this.formFields, e.key);
1491
+ if (field.type !== "title" &&
1492
+ field.validation.triggers.includes("ON_CHANGE")) {
1493
+ const validations = new Validations(field, this.formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this));
1494
+ (() => __awaiter(this, void 0, void 0, function* () {
1495
+ yield validations.validateField();
1496
+ }))();
1497
+ this.handleConnectedElements({
1498
+ key: field.key,
1499
+ value: this.formGroup.controls[field.key].value
1500
+ }, "ON_CHANGE");
1501
+ }
1502
+ }
1503
+ handleOnClickResetFormFields(e, field) {
1504
+ return __awaiter(this, void 0, void 0, function* () {
1505
+ for (let f of field.reset.fields) {
1506
+ for (let a of f.actions) {
1507
+ const resetField = findFieldFromKey(this.formFields, a.props.fieldKey);
1508
+ const actions = new Actions(a, resetField, {}, this.allFormsData, this.formData, this.previousFormData, this.takeAction.bind(this));
1509
+ yield actions.execute();
1510
+ }
1511
+ }
1512
+ });
1513
+ }
1514
+ handleOnClickApiCall(e) {
1515
+ return __awaiter(this, void 0, void 0, function* () {
1516
+ let field = findFieldFromKey(this.formFields, e.key);
1517
+ if (field.type === "api-call") {
1518
+ // set button status to loading
1519
+ field["api"]["status"]["value"] = EApiStatusType.LOADING;
1520
+ field["showLoader"] = true;
1521
+ this.viewFormsButton["disabled"] = true;
1522
+ this.viewFormsButton["showLoader"] = true;
1523
+ this.saveFormButton["disabled"] = true;
1524
+ this.saveFormButton["showLoader"] = true;
1525
+ const apis = new Apis(field, this.formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this));
1526
+ field = yield apis.setRequestBodyParams();
1527
+ field = yield apis.validateRequestBody();
1528
+ if (field.api.request.body.validation.is_valid) {
1529
+ // Call API Here
1530
+ this.onClickApiCall.emit({
1531
+ key: e.key,
1532
+ request: {
1533
+ mode: "POST",
1534
+ body: field.api.request.body.value,
1535
+ headers: {}
1536
+ }
1537
+ });
1538
+ }
1539
+ else {
1540
+ // Request Body Validation Failed
1541
+ // Highlight Error in UI to User to Retry After Sometime.
1542
+ // Take Actions based on Validation
1543
+ setTimeout(() => {
1544
+ field["api"]["status"]["value"] = EApiStatusType.FAILED;
1545
+ field["showLoader"] = false;
1546
+ }, 500);
1547
+ }
1548
+ this.viewFormsButton["disabled"] = false;
1549
+ this.viewFormsButton["showLoader"] = false;
1550
+ this.saveFormButton["disabled"] = false;
1551
+ this.saveFormButton["showLoader"] = false;
1552
+ }
1553
+ });
1554
+ }
1555
+ handleOnClickViewForms(e) {
1556
+ this.onClickViewForms.emit({
1557
+ clicked: true
1558
+ });
1559
+ }
1560
+ handleOnClickSaveForm(e) {
1561
+ let formData = this.formGroup.getRawValue();
1562
+ for (let field of this.formFields) {
1563
+ if (field.type !== "title" &&
1564
+ field.validation.triggers.includes("ON_SAVE")) {
1565
+ const validations = new Validations(field, this.formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this));
1566
+ (() => __awaiter(this, void 0, void 0, function* () {
1567
+ yield validations.validateField();
1568
+ }))();
1569
+ }
1570
+ }
1571
+ if (this.formGroup.invalid) {
1572
+ const controls = new Validations(undefined, this.formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this)).findInvalidControlsRecursive(this.formGroup);
1573
+ let firstFieldWithError = "";
1574
+ for (let control of controls) {
1575
+ if (control.invalid && isEmpty(firstFieldWithError)) {
1576
+ firstFieldWithError = control.key;
1577
+ }
1578
+ this.formFields = setFieldError(this.formFields, this.formGroup.controls[control.key].errors, control.key, control.invalid);
1579
+ }
1580
+ return;
1581
+ }
1582
+ // Need to have an API Validator as well here.
1583
+ // if(apiCallSuccess()) { then only proceed further, else highlight the button to click to call api}
1584
+ for (let field of this.formFields) {
1585
+ switch (field.type) {
1586
+ case "radio":
1587
+ if (hasKey$1(formData[field.key], "label")) {
1588
+ formData[field.key] = formData[field.key].label;
1589
+ }
1590
+ else {
1591
+ formData[field.key] = "";
1592
+ }
1593
+ break;
1594
+ case "date":
1595
+ if (isNull(formData[field.key])) {
1596
+ formData[field.key] = "";
1597
+ }
1598
+ else {
1599
+ formData[field.key] = formatDateToStandardFormat(formData[field.key]);
1600
+ }
1601
+ break;
1602
+ case "title":
1603
+ break;
1604
+ default:
1605
+ if (isEmpty(formData[field.key])) {
1606
+ formData[field.key] = "";
1607
+ }
1608
+ break;
1609
+ }
1610
+ }
1611
+ Object.keys(formData).map((key) => {
1612
+ if (isEmpty(formData[key])) {
1613
+ formData[key] = "";
1614
+ }
1615
+ });
1616
+ this.onClickSaveForm.emit({ data: formData });
1617
+ }
1618
+ // Component Helpers
1619
+ fieldHide(fieldKey) {
1620
+ let field = findFieldFromKey(this.formFields, fieldKey);
1621
+ let fieldIndex = this.formFields.findIndex((_) => {
1622
+ return field.key === _.key;
1623
+ });
1624
+ this.formFields[fieldIndex]["hidden"] = true;
1625
+ }
1626
+ fieldShow(fieldKey) {
1627
+ let field = findFieldFromKey(this.formFields, fieldKey);
1628
+ let fieldIndex = this.formFields.findIndex((_) => {
1629
+ return field.key === _.key;
1630
+ });
1631
+ this.formFields[fieldIndex]["hidden"] = false;
1632
+ this.formGroup.updateValueAndValidity();
1633
+ }
1634
+ fieldDisable(fieldKey) {
1635
+ let field = findFieldFromKey(this.formFields, fieldKey);
1636
+ let fieldIndex = this.formFields.findIndex((_) => {
1637
+ return field.key === _.key;
1638
+ });
1639
+ this.formFields[fieldIndex]["disabled"] = true;
1640
+ if (isNotEmpty(this.formGroup.controls)) {
1641
+ this.formGroup.controls[field.key].disable({
1642
+ emitEvent: false
1643
+ });
1644
+ }
1645
+ }
1646
+ fieldEnable(fieldKey) {
1647
+ let field = findFieldFromKey(this.formFields, fieldKey);
1648
+ let fieldIndex = this.formFields.findIndex((_) => {
1649
+ return field.key === _.key;
1650
+ });
1651
+ this.formFields[fieldIndex]["disabled"] = false;
1652
+ if (isNotEmpty(this.formGroup.controls)) {
1653
+ this.formGroup.controls[field.key].enable({
1654
+ emitEvent: false
1655
+ });
1656
+ }
1657
+ }
1658
+ fieldReset(fieldKey) {
1659
+ // Find the field and its index in the formFields array
1660
+ let field = findFieldFromKey(this.formFields, fieldKey);
1661
+ let fieldIndex = findFieldIndexFromKey(this.formFields, fieldKey);
1662
+ // Delete the field from the formData object
1663
+ delete this.formData[fieldKey];
1664
+ // Reset the value of the field in the formGroup
1665
+ this.formGroup.controls[field.key].reset(setEmptyValue(field), {
1666
+ emitEvent: false
1667
+ });
1668
+ // Reset the messages and errors for the field
1669
+ field = removeMessage(field, {
1670
+ type: EMessageType.WARNING,
1671
+ message: ""
1672
+ });
1673
+ field = removeMessage(field, {
1674
+ type: EMessageType.SUCCESS,
1675
+ message: ""
1676
+ });
1677
+ this.fieldErrorHide(fieldKey, {
1678
+ type: EMessageType.ERROR,
1679
+ message: ""
1680
+ });
1681
+ // Reset the value of the field in the formFields array
1682
+ switch (field.type) {
1683
+ case "api-call":
1684
+ const fieldApiCall = field;
1685
+ fieldApiCall.api.status.value = EApiStatusType.DEFAULT;
1686
+ this.formFields[fieldIndex] = fieldApiCall;
1687
+ break;
1688
+ default:
1689
+ field.focus = false;
1690
+ field.invalid = false;
1691
+ this.formFields[fieldIndex] = field;
1692
+ break;
1693
+ }
1694
+ }
1695
+ fieldErrorShow(fieldKey, message) {
1696
+ let field = findFieldFromKey(this.formFields, fieldKey);
1697
+ let fieldIndex = this.formFields.findIndex((_) => {
1698
+ return field.key === _.key;
1699
+ });
1700
+ field = highlightFieldError(field, true);
1701
+ field = addMessage(field, message);
1702
+ this.formFields[fieldIndex] = field;
1703
+ }
1704
+ fieldErrorHide(fieldKey, message) {
1705
+ let field = findFieldFromKey(this.formFields, fieldKey);
1706
+ let fieldIndex = this.formFields.findIndex((_) => {
1707
+ return field.key === _.key;
1708
+ });
1709
+ field = highlightFieldError(field, false);
1710
+ field = removeMessage(field, message);
1711
+ this.formFields[fieldIndex] = field;
1712
+ }
1713
+ fieldMessageShow(fieldKey, message) {
1714
+ let field = findFieldFromKey(this.formFields, fieldKey);
1715
+ let fieldIndex = this.formFields.findIndex((_) => {
1716
+ return field.key === _.key;
1717
+ });
1718
+ field = addMessage(field, message);
1719
+ this.formFields[fieldIndex] = field;
1720
+ }
1721
+ fieldMessageHide(fieldKey, message) {
1722
+ let field = findFieldFromKey(this.formFields, fieldKey);
1723
+ let fieldIndex = this.formFields.findIndex((_) => {
1724
+ return field.key === _.key;
1725
+ });
1726
+ field = removeMessage(field, message);
1727
+ this.formFields[fieldIndex] = field;
1728
+ }
1729
+ setObjectValue(field, path, value) { }
1730
+ patchFieldControlValue(key, value) {
1731
+ this.formGroup.patchValue({
1732
+ [key]: value
1733
+ }, { emitEvent: false });
1734
+ }
1735
+ isFieldValid(fieldKey) {
1736
+ return this.formGroup.controls[fieldKey].valid;
1737
+ }
1738
+ isFieldEnabled(fieldKey) {
1739
+ return this.formGroup.controls[fieldKey].enabled;
1740
+ }
1741
+ getFormGroupRawValues() {
1742
+ return this.formGroup.getRawValue();
1743
+ }
1744
+ handleFieldTypeSearchText(field, childField) {
1745
+ return __awaiter(this, void 0, void 0, function* () {
1746
+ if (hasKey$1(childField, "json")) {
1747
+ childField.options = getSearchTextOptionsFromFieldConfig(field, childField, this.formGroup);
1748
+ }
1749
+ if (hasKey$1(childField, "fetchJsonFromRemote")) {
1750
+ childField.options = yield getSearchTextOptionsFromRemoteFile(field, childField, this.formGroup);
1751
+ }
1752
+ return childField;
1753
+ });
1754
+ }
1755
+ takeAction(action, field, allFormsData, formData, previousFormData) {
1756
+ return __awaiter(this, void 0, void 0, function* () {
1757
+ switch (action.key) {
1758
+ case EActionKey.FIELD_HIDE:
1759
+ this.fieldHide(action.props.fieldKey);
1760
+ break;
1761
+ case EActionKey.FIELD_SHOW:
1762
+ this.fieldShow(action.props.fieldKey);
1763
+ break;
1764
+ case EActionKey.FIELD_DISABLE:
1765
+ this.fieldDisable(action.props.fieldKey);
1766
+ break;
1767
+ case EActionKey.FIELD_ENABLE:
1768
+ this.fieldEnable(action.props.fieldKey);
1769
+ break;
1770
+ case EActionKey.FIELD_RESET:
1771
+ this.fieldReset(action.props.fieldKey);
1772
+ break;
1773
+ case EActionKey.FIELD_ERROR_SHOW:
1774
+ this.fieldErrorShow(action.props.fieldKey, action.props.message);
1775
+ break;
1776
+ case EActionKey.FIELD_ERROR_HIDE:
1777
+ this.fieldErrorHide(action.props.fieldKey, action.props.message);
1778
+ break;
1779
+ case EActionKey.FIELD_MESSAGE_SHOW:
1780
+ this.fieldMessageShow(action.props.fieldKey, action.props.message);
1781
+ break;
1782
+ case EActionKey.FIELD_MESSAGES_HIDE:
1783
+ this.fieldMessageHide(action.props.fieldKey, action.props.message);
1784
+ break;
1785
+ case EActionKey.SET_VALUE:
1786
+ const sources = new Sources(field, this.formData, this.previousFormData, this.allFormsData);
1787
+ const sourceValue = yield sources.getValueFromSource(action.props.value.source);
1788
+ sources.setValueToSource(action.props.value.destination, sourceValue);
1789
+ field = sources.field;
1790
+ this.formData = sources.formData;
1791
+ this.allFormsData = sources.allFormsData;
1792
+ this.previousFormData = sources.previousFormData;
1793
+ break;
1794
+ case EActionKey.HANDLE_CONNECTED_ELEMENTS:
1795
+ this.handleConnectedElements({ key: field.key }, "ACTION");
1796
+ break;
1797
+ case EActionKey.CUSTOM:
1798
+ break;
1799
+ default:
1800
+ break;
1801
+ }
1802
+ });
1803
+ }
1804
+ }
1805
+ /** @nocollapse */ KwikIDFormViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewComponent, deps: [{ token: KwikIDFormViewService }], target: i0.ɵɵFactoryTarget.Component });
1806
+ /** @nocollapse */ KwikIDFormViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: KwikIDFormViewComponent, selector: "kwikid-form-view", inputs: { formConfig: "formConfig", formData: "formData", apiCallResponse: "apiCallResponse", isMobileView: "isMobileView", allFormsData: "allFormsData", formsList: "formsList" }, outputs: { onClickViewForms: "onClickViewForms", onClickSaveForm: "onClickSaveForm", onClickApiCall: "onClickApiCall", getActiveFormData: "getActiveFormData" }, providers: [KwikIDFormViewService], usesOnChanges: true, ngImport: i0, template: "<div\r\n class=\"kwikid-form-container\"\r\n *ngIf=\"!this.loading\"\r\n>\r\n <div id=\"uf-form-fields-header-container\">\r\n <div id=\"uf-form-fields-title\">\r\n {{ this.formConfig.title }}\r\n </div>\r\n <div id=\"uf-form-fields-steps\">\r\n Step {{ this.formConfig.sequenceNo }} of {{ this.formsList.length }}\r\n </div>\r\n </div>\r\n <form\r\n class=\"kwikid-form show\"\r\n [formGroup]=\"this.formGroup\"\r\n >\r\n <ng-container *ngFor=\"let field of this.formFields; let i = index\">\r\n <ng-container [ngSwitch]=\"field.type\">\r\n <!-- Form Title -->\r\n <ng-container *ngSwitchCase=\"'title'\">\r\n <div class=\"title\">\r\n <div>\r\n {{ field.label }}\r\n </div>\r\n <kwikui-button\r\n *ngIf=\"field?.reset\"\r\n appearance=\"whiteblock\"\r\n size=\"s\"\r\n label=\"Reset\"\r\n (onClick)=\"this.handleOnClickResetFormFields($event, field)\"\r\n ></kwikui-button>\r\n </div>\r\n </ng-container>\r\n <!-- Input Text -->\r\n <ng-container *ngSwitchCase=\"'text'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-input\r\n [case]=\"field?.properties?.case\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [type]=\"'text'\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Checkbox -->\r\n <ng-container *ngSwitchCase=\"'checkbox'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-checkbox-block\r\n [contentAlign]=\"field?.properties?.contentAlign ?? 'left'\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.properties?.placeholder\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [size]=\"field?.properties?.size ?? 'l'\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-checkbox-block\r\n ><kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Number -->\r\n <ng-container *ngSwitchCase=\"'number'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-input-number\r\n [decimal]=\"field?.properties?.decimal\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [max]=\"field?.properties?.max\"\r\n [min]=\"field?.properties?.min\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [postfix]=\"field?.properties?.postfix ?? ''\"\r\n [precision]=\"field?.properties?.precision\"\r\n [prefix]=\"field?.properties?.prefix ?? ''\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-number\r\n ><kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Date -->\r\n <ng-container *ngSwitchCase=\"'date'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-input-date\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [max]=\"field?.properties?.max\"\r\n [min]=\"field?.properties?.min\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-date>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Phone -->\r\n <ng-container *ngSwitchCase=\"'phone'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-input-phone\r\n [countryCode]=\"field?.properties?.countryCode\"\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [phoneMaskAfterCountryCode]=\"\r\n field?.properties?.phoneMaskAfterCountryCode\r\n \"\r\n [placeholder]=\"field?.placeholder\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-phone>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Input Radio -->\r\n <ng-container *ngSwitchCase=\"'radio'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <label\r\n [tuiLabel]=\"labelTemplate\"\r\n style=\"min-height: auto\"\r\n >\r\n <kwikui-radio-list\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [items]=\"field?.options\"\r\n [label]=\"field?.label\"\r\n [orientation]=\"field?.properties?.orientation\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [size]=\"field?.properties?.size\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-radio-list>\r\n </label>\r\n <ng-template #labelTemplate>\r\n <p\r\n class=\"tui-space_bottom-2\"\r\n [hidden]=\"field?.hidden\"\r\n >\r\n <b>\r\n {{ field.label }}\r\n <span *ngIf=\"field.validators?.required\"></span>\r\n </b>\r\n </p>\r\n </ng-template>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Dropdown -->\r\n <ng-container *ngSwitchCase=\"'dropdown-with-search'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-select-combobox\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field.label\"\r\n [options]=\"field.options\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-select-combobox>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- API Call -->\r\n <ng-container *ngSwitchCase=\"'api-call'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-button-api-call\r\n [apiStatus]=\"field?.api?.status?.value\"\r\n [class]=\"field?.class\"\r\n [disabled]=\"field?.disabled\"\r\n [id]=\"field.key\"\r\n [label]=\"field?.api?.status?.labels[field?.api?.status?.value]\"\r\n [showLoader]=\"field?.disabled === 'loading'\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: fit-content\"\r\n (onClick)=\"this.handleOnClickApiCall($event)\"\r\n ></kwikui-button-api-call>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Mobile OTP -->\r\n <ng-container *ngSwitchCase=\"'otp'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-input-otp\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [mask]=\"field?.properties?.mask\"\r\n [placeholder]=\"field?.properties?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-otp>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n <!-- Aadhaar Number -->\r\n <ng-container *ngSwitchCase=\"'aadhaar-number'\">\r\n <div [hidden]=\"field?.hidden\">\r\n <kwikui-input-aadhaar\r\n [disabled]=\"field?.disabled\"\r\n [focus]=\"field?.focus\"\r\n [formControl]=\"formGroup.controls[field.key]\"\r\n [formControlName]=\"field.key\"\r\n [id]=\"field.key\"\r\n [invalid]=\"field?.invalid\"\r\n [label]=\"field?.label\"\r\n [placeholder]=\"field?.placeholder\"\r\n [properties]=\"field?.properties\"\r\n [validators]=\"field?.validators\"\r\n (getKeyValue)=\"handleGetKeyValue($event)\"\r\n ></kwikui-input-aadhaar>\r\n <kwikui-messages\r\n [messages]=\"field.messages\"\r\n [id]=\"field.key\"\r\n ></kwikui-messages>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </form>\r\n <div class=\"kwikid-form-buttons\">\r\n <kwikui-button\r\n *ngIf=\"this.isMobileView\"\r\n [disabled]=\"viewFormsButton.disabled\"\r\n id=\"\"\r\n label=\"View Forms\"\r\n [showLoader]=\"viewFormsButton.showLoader\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"secondary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"this.handleOnClickViewForms($event)\"\r\n ></kwikui-button>\r\n <kwikui-button\r\n [disabled]=\"saveFormButton.disabled\"\r\n id=\"\"\r\n label=\"Save\"\r\n [showLoader]=\"saveFormButton.showLoader\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"primary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"this.handleOnClickSaveForm($event)\"\r\n ></kwikui-button>\r\n </div>\r\n</div>\r\n<div\r\n class=\"kwikid-form-container-loading\"\r\n *ngIf=\"this.loading\"\r\n>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n <div\r\n class=\"large-wrapper\"\r\n [class.tui-skeleton]=\"this.loading\"\r\n [class.tui-skeleton_rounded]=\"this.loading\"\r\n ></div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}.kwikid-form-container{width:100%;height:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center}.kwikid-form.show{width:100%;height:100%;padding:1rem;overflow-y:auto;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-row-gap:1rem;row-gap:1rem}.kwikid-form-buttons{width:100%;bottom:0px;padding:1rem;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-column-gap:10px;column-gap:10px}.kwikid-form-buttons *{flex-grow:1}#uf-form-fields-header-container{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:flex-start;grid-row-gap:.5rem;row-gap:.5rem;padding:1rem}#uf-form-fields-title{color:#000;font-size:1.75em;font-weight:bold}#uf-form-fields-steps{color:var(--color-on-secondary-container);font-size:1em}.title{border-left:.25rem solid var(--tui-primary);padding:.75rem;font-size:1.4em;font-weight:bold;background-color:var(--tui-secondary);display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-gap:.5rem;gap:.5rem}.title:not(:first-child){margin-top:.5rem}.large-wrapper{width:100%;height:60px}.large-wrapper:first-child{margin-bottom:auto}.large-wrapper:last-child{margin-top:auto}.kwikid-form-container-loading{width:100%;height:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;grid-row-gap:1rem;row-gap:1rem;padding:1rem}\n"], components: [{ type: i2.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }, { type: i2.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "properties"], outputs: ["getKeyValue"] }, { type: i2.KwikUIMessagesComponent, selector: "kwikui-messages", inputs: ["messages", "id"] }, { type: i2.KwikUICheckboxBlockComponent, selector: "kwikui-checkbox-block", inputs: ["label", "id", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "size", "contentAlign", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i2.KwikUIInputNumberComponent, selector: "kwikui-input-number", inputs: ["label", "id", "formControlName", "formControl", "focus", "invalid", "disabled", "placeholder", "min", "max", "prefix", "postfix", "precision", "decimal", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i2.KwikUIInputDateComponent, selector: "kwikui-input-date", inputs: ["label", "id", "formControlName", "formControl", "focus", "invalid", "disabled", "placeholder", "min", "max", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i2.KwikUIInputPhoneComponent, selector: "kwikui-input-phone", inputs: ["label", "id", "formControlName", "formControl", "focus", "invalid", "disabled", "placeholder", "countryCode", "phoneMaskAfterCountryCode", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i3.TuiLabelComponent, selector: "label[tuiLabel]", inputs: ["tuiLabel", "context"] }, { type: i2.KwikUIRadioListComponent, selector: "kwikui-radio-list", inputs: ["label", "id", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "size", "items", "orientation", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i2.KwikUISelectComboboxComponent, selector: "kwikui-select-combobox", inputs: ["label", "id", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "options", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i2.KwikUIButtonApiCallComponent, selector: "kwikui-button-api-call", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "shape", "size", "apiStatus"], outputs: ["onClick"] }, { type: i2.KwikUIInputOtpComponent, selector: "kwikui-input-otp", inputs: ["label", "id", "formControlName", "formControl", "focus", "invalid", "disabled", "placeholder", "mask", "validators", "properties"], outputs: ["getKeyValue"] }, { type: i2.KwikUIInputAadhaarComponent, selector: "kwikui-input-aadhaar", inputs: ["label", "id", "formControlName", "formControl", "focus", "invalid", "disabled", "placeholder", "mask", "validators", "properties"], outputs: ["getKeyValue"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }] });
1807
+ __decorate([
1808
+ log
1809
+ ], KwikIDFormViewComponent.prototype, "ngOnInit", null);
1810
+ __decorate([
1811
+ log
1812
+ ], KwikIDFormViewComponent.prototype, "ngAfterViewInit", null);
1813
+ __decorate([
1814
+ log
1815
+ ], KwikIDFormViewComponent.prototype, "ngOnChanges", null);
1816
+ __decorate([
1817
+ log
1818
+ ], KwikIDFormViewComponent.prototype, "initFormConfig", null);
1819
+ __decorate([
1820
+ log
1821
+ ], KwikIDFormViewComponent.prototype, "setFormFieldsFromFormConfig", null);
1822
+ __decorate([
1823
+ log
1824
+ ], KwikIDFormViewComponent.prototype, "setFormDataFromAllFormsData", null);
1825
+ __decorate([
1826
+ log
1827
+ ], KwikIDFormViewComponent.prototype, "handleConnectedElementFieldActions", null);
1828
+ __decorate([
1829
+ log
1830
+ ], KwikIDFormViewComponent.prototype, "handleConnectedElementFields", null);
1831
+ __decorate([
1832
+ log
1833
+ ], KwikIDFormViewComponent.prototype, "handleConnectedElements", null);
1834
+ __decorate([
1835
+ log
1836
+ ], KwikIDFormViewComponent.prototype, "handleGetKeyValue", null);
1837
+ __decorate([
1838
+ log
1839
+ ], KwikIDFormViewComponent.prototype, "handleOnClickResetFormFields", null);
1840
+ __decorate([
1841
+ log
1842
+ ], KwikIDFormViewComponent.prototype, "handleOnClickApiCall", null);
1843
+ __decorate([
1844
+ log
1845
+ ], KwikIDFormViewComponent.prototype, "handleOnClickViewForms", null);
1846
+ __decorate([
1847
+ log
1848
+ ], KwikIDFormViewComponent.prototype, "handleOnClickSaveForm", null);
1849
+ __decorate([
1850
+ log
1851
+ ], KwikIDFormViewComponent.prototype, "fieldHide", null);
1852
+ __decorate([
1853
+ log
1854
+ ], KwikIDFormViewComponent.prototype, "fieldShow", null);
1855
+ __decorate([
1856
+ log
1857
+ ], KwikIDFormViewComponent.prototype, "fieldDisable", null);
1858
+ __decorate([
1859
+ log
1860
+ ], KwikIDFormViewComponent.prototype, "fieldEnable", null);
1861
+ __decorate([
1862
+ log
1863
+ ], KwikIDFormViewComponent.prototype, "fieldReset", null);
1864
+ __decorate([
1865
+ log
1866
+ ], KwikIDFormViewComponent.prototype, "fieldErrorShow", null);
1867
+ __decorate([
1868
+ log
1869
+ ], KwikIDFormViewComponent.prototype, "fieldErrorHide", null);
1870
+ __decorate([
1871
+ log
1872
+ ], KwikIDFormViewComponent.prototype, "fieldMessageShow", null);
1873
+ __decorate([
1874
+ log
1875
+ ], KwikIDFormViewComponent.prototype, "fieldMessageHide", null);
1876
+ __decorate([
1877
+ log
1878
+ ], KwikIDFormViewComponent.prototype, "setObjectValue", null);
1879
+ __decorate([
1880
+ log
1881
+ ], KwikIDFormViewComponent.prototype, "patchFieldControlValue", null);
1882
+ __decorate([
1883
+ log
1884
+ ], KwikIDFormViewComponent.prototype, "isFieldValid", null);
1885
+ __decorate([
1886
+ log
1887
+ ], KwikIDFormViewComponent.prototype, "isFieldEnabled", null);
1888
+ __decorate([
1889
+ log
1890
+ ], KwikIDFormViewComponent.prototype, "getFormGroupRawValues", null);
1891
+ __decorate([
1892
+ log
1893
+ ], KwikIDFormViewComponent.prototype, "handleFieldTypeSearchText", null);
1894
+ __decorate([
1895
+ log
1896
+ ], KwikIDFormViewComponent.prototype, "takeAction", null);
1897
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewComponent, decorators: [{
1898
+ type: Component,
1899
+ args: [{
1900
+ selector: "kwikid-form-view",
1901
+ templateUrl: "./form-view.component.html",
1902
+ styleUrls: ["./form-view.component.scss"],
1903
+ providers: [KwikIDFormViewService]
1904
+ }]
1905
+ }], ctorParameters: function () { return [{ type: KwikIDFormViewService }]; }, propDecorators: { formConfig: [{
1906
+ type: Input
1907
+ }], formData: [{
1908
+ type: Input
1909
+ }], apiCallResponse: [{
1910
+ type: Input
1911
+ }], isMobileView: [{
1912
+ type: Input
1913
+ }], allFormsData: [{
1914
+ type: Input
1915
+ }], formsList: [{
1916
+ type: Input
1917
+ }], onClickViewForms: [{
1918
+ type: Output
1919
+ }], onClickSaveForm: [{
1920
+ type: Output
1921
+ }], onClickApiCall: [{
1922
+ type: Output
1923
+ }], getActiveFormData: [{
1924
+ type: Output
1925
+ }], ngOnInit: [], ngAfterViewInit: [], ngOnChanges: [], initFormConfig: [], setFormFieldsFromFormConfig: [], setFormDataFromAllFormsData: [], handleConnectedElementFieldActions: [], handleConnectedElementFields: [], handleConnectedElements: [], handleGetKeyValue: [], handleOnClickResetFormFields: [], handleOnClickApiCall: [], handleOnClickViewForms: [], handleOnClickSaveForm: [], fieldHide: [], fieldShow: [], fieldDisable: [], fieldEnable: [], fieldReset: [], fieldErrorShow: [], fieldErrorHide: [], fieldMessageShow: [], fieldMessageHide: [], setObjectValue: [], patchFieldControlValue: [], isFieldValid: [], isFieldEnabled: [], getFormGroupRawValues: [], handleFieldTypeSearchText: [], takeAction: [] } });
1926
+
1927
+ const hasKey = (object, key) => {
1928
+ return object.hasOwnProperty(key);
1929
+ };
1930
+
1931
+ class KwikIDFormsListComponent {
1932
+ constructor() {
1933
+ this.formsList = [];
1934
+ this.formsListCompleted = [];
1935
+ this.isMobileView = false;
1936
+ this.onClickSetActiveForm = new EventEmitter();
1937
+ this.onClickHideFormsList = new EventEmitter();
1938
+ this.onClickSubmitForms = new EventEmitter();
1939
+ this.selectedForm = "";
1940
+ }
1941
+ ngOnInit() { }
1942
+ ngOnChanges(changes) {
1943
+ const verifyChange = (key) => {
1944
+ return hasKey(changes, key) && !changes[key].firstChange;
1945
+ };
1946
+ if (verifyChange("formsList")) {
1947
+ this.formsList = changes.formsList.currentValue;
1948
+ }
1949
+ if (verifyChange("isMobileView")) {
1950
+ this.isMobileView = changes.isMobileView.currentValue;
1951
+ }
1952
+ }
1953
+ handleOnClickSetActiveForm(selectedForm) {
1954
+ if (this.selectedForm !== selectedForm) {
1955
+ this.selectedForm = selectedForm;
1956
+ this.onClickSetActiveForm.emit(selectedForm);
1957
+ }
1958
+ }
1959
+ handleOnSubmitForms(e) {
1960
+ this.onClickSubmitForms.emit(e);
1961
+ }
1962
+ }
1963
+ /** @nocollapse */ KwikIDFormsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1964
+ /** @nocollapse */ KwikIDFormsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: KwikIDFormsListComponent, selector: "kwikid-forms-list", inputs: { formsList: "formsList", formsListCompleted: "formsListCompleted", isMobileView: "isMobileView" }, outputs: { onClickSetActiveForm: "onClickSetActiveForm", onClickHideFormsList: "onClickHideFormsList", onClickSubmitForms: "onClickSubmitForms" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"sidebar-container\">\r\n <div id=\"sidebar\">\r\n <div id=\"uf-progress\">\r\n <div id=\"uf-progress-steps\">\r\n {{ this.formsListCompleted.length }} / {{ this.formsList.length }} Steps\r\n Completed\r\n </div>\r\n <kwikui-progress-segmented\r\n [max]=\"this.formsList.length\"\r\n size=\"m\"\r\n [value]=\"this.formsListCompleted.length\"\r\n ></kwikui-progress-segmented>\r\n </div>\r\n <div id=\"uf-sections-container\">\r\n <div\r\n *ngFor=\"let form of formsList; let i = index\"\r\n [class]=\"'uf-section-item'\"\r\n [class.completed]=\"form.status === 'completed' && !form.disabled\"\r\n [class.edit]=\"form.status !== 'completed' && !form.disabled\"\r\n [class.locked]=\"form.status !== 'completed' && form.disabled\"\r\n (click)=\"\r\n form.status !== 'completed' && form.disabled\r\n ? undefined\r\n : handleOnClickSetActiveForm(form.key)\r\n \"\r\n >\r\n <div class=\"uf-form-section-card-title\">\r\n {{ form.title }}\r\n </div>\r\n <div class=\"uf-form-section-card-action\">\r\n <div\r\n *ngIf=\"form.status === 'completed' && !form.disabled\"\r\n class=\"uf-form-section-card-action-img completed\"\r\n >\r\n <tui-svg src=\"tuiIconCheckLarge\"></tui-svg>\r\n <!-- <img class=\"completed\" src=\"assets/done1.png\" /> -->\r\n </div>\r\n <div\r\n *ngIf=\"form.status !== 'completed' && !form.disabled\"\r\n class=\"uf-form-section-card-action-img edit\"\r\n >\r\n <tui-svg src=\"tuiIconEdit\"></tui-svg>\r\n <!-- <img class=\"active\" src=\"assets/edit.png\" /> -->\r\n </div>\r\n <div\r\n *ngIf=\"form.status !== 'completed' && form.disabled\"\r\n class=\"uf-form-section-card-action-img locked\"\r\n >\r\n <tui-svg src=\"tuiIconLock\"></tui-svg>\r\n <!-- <img class=\"disabled\" src=\"assets/lock.png\" /> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div id=\"submit-sidebar-btn-container\">\r\n <kwikui-button\r\n [disabled]=\"false\"\r\n id=\"\"\r\n label=\"Submit\"\r\n [showLoader]=\"false\"\r\n styles=\"\"\r\n class=\"\"\r\n type=\"button\"\r\n appearance=\"primary\"\r\n icon=\"\"\r\n iconRight=\"\"\r\n shape=\"null\"\r\n size=\"m\"\r\n styles=\"width: 100%\"\r\n (onClick)=\"handleOnSubmitForms($event)\"\r\n ></kwikui-button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}#sidebar-container{width:100%;height:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center}#sidebar{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch}.uf-section-item{width:100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;align-content:center;padding:1rem;grid-gap:1rem;gap:1rem;cursor:pointer;box-shadow:0 .1rem .5rem -.25rem gray;border-radius:.5rem;background-color:var(--tui-base-02)}.uf-section-item:hover{box-shadow:0 .2rem .75rem -.5rem #656565}#submit-sidebar-btn-container{width:100%;bottom:0px;z-index:1;padding:1rem;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-gap:1rem;gap:1rem}#submit-sidebar-btn-container *{flex-grow:1}#uf-sections-container{display:flex;flex-direction:column;height:100%;grid-row-gap:20px;row-gap:20px;padding:1rem;overflow-y:auto}.uf-form-section-card{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:10px;column-gap:10px;border:none;border-radius:8px;background-color:#e9e9e9;height:-moz-fit-content;height:fit-content;min-height:60px;padding:10px 15px;width:100%;max-width:350px;margin:0 auto}.uf-section-item.locked{-webkit-user-select:none;user-select:none;cursor:not-allowed}.uf-form-section-card .uf-form-section-card-title{font-size:1.2em;text-align:left;line-height:1.25em}.uf-form-section-card .uf-form-section-card-action{width:30px;height:30px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.uf-form-section-card .uf-form-section-card-action .uf-form-section-card-action-img{width:30px;height:30px;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;border-radius:100%;color:#fff;font-weight:bold}.uf-form-section-card-action-img.completed{background-color:#228b22;padding:.25rem;border-radius:50%;color:#fff}.uf-form-section-card-action-img.edit{background-color:#dc143c;padding:.25rem;border-radius:50%;color:#fff}.uf-form-section-card-action-img.locked{background-color:gray;padding:.25rem;border-radius:50%;color:#fff}#uf-progress{display:flex;padding:1rem;flex-direction:column;align-content:center;justify-content:center;align-items:stretch;grid-gap:.5rem;gap:.5rem}#uf-progress-steps{font-size:1em;text-align:right;color:#3d3d3d}.uf-form-section-card-title{font-size:1em;font-weight:bold;color:#121212}@media screen and (max-width: 600px){#sidebar-container{max-width:unset}}\n"], components: [{ type: i2.KwikUIProgressSegmentedComponent, selector: "kwikui-progress-segmented", inputs: ["value", "max", "size", "colors"] }, { type: i3.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { type: i2.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1965
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsListComponent, decorators: [{
1966
+ type: Component,
1967
+ args: [{
1968
+ selector: "kwikid-forms-list",
1969
+ templateUrl: "./forms-list.component.html",
1970
+ styleUrls: ["./forms-list.component.scss"]
1971
+ }]
1972
+ }], ctorParameters: function () { return []; }, propDecorators: { formsList: [{
1973
+ type: Input
1974
+ }], formsListCompleted: [{
1975
+ type: Input
1976
+ }], isMobileView: [{
1977
+ type: Input
1978
+ }], onClickSetActiveForm: [{
1979
+ type: Output
1980
+ }], onClickHideFormsList: [{
1981
+ type: Output
1982
+ }], onClickSubmitForms: [{
1983
+ type: Output
1984
+ }] } });
1985
+
1986
+ class Converter {
1987
+ constructor() {
1988
+ this.getFormFields = (formConfig) => {
1989
+ let fields;
1990
+ if (hasKey$2(formConfig, "multiForm")) {
1991
+ fields = formConfig.multiForm.fields;
1992
+ }
1993
+ else {
1994
+ fields = formConfig.fields;
1995
+ }
1996
+ return fields;
1997
+ };
1998
+ this.setMissingFieldKeyValue = (field, key, value) => {
1999
+ if (!hasKey$2(field, key)) {
2000
+ field[key] = value;
2001
+ }
2002
+ return field;
2003
+ };
2004
+ this.setFieldKeyValue = (field, key, value) => {
2005
+ field[key] = value;
2006
+ return field;
2007
+ };
2008
+ this.removeFieldKey = (field, key) => {
2009
+ if (hasKey$2(field, key)) {
2010
+ delete field[key];
2011
+ }
2012
+ return field;
2013
+ };
2014
+ }
2015
+ convertFormConfig(formConfig) {
2016
+ const updateOnFieldType = (field) => {
2017
+ const formatFieldTypeTitle = (field) => {
2018
+ const fieldKey = `${field.type}_${field.label
2019
+ .split(" ")
2020
+ .join("_")
2021
+ .toLocaleLowerCase()}`;
2022
+ field = this.setFieldKeyValue(field, "key", fieldKey);
2023
+ field = this.setFieldKeyValue(field, "hidden", false);
2024
+ return field;
2025
+ };
2026
+ const formatFieldTypeRadio = (field) => {
2027
+ field.properties = this.setMissingFieldKeyValue(field.properties, "size", "m");
2028
+ field.properties = this.setMissingFieldKeyValue(field.properties, "orientation", "vertical");
2029
+ field = this.setFieldKeyValue(field, "hidden", false);
2030
+ field.options = field.options.map((x) => {
2031
+ return { label: x, disabled: false };
2032
+ });
2033
+ return field;
2034
+ };
2035
+ const formatFieldTypeOtp = (field) => {
2036
+ field.properties = this.setMissingFieldKeyValue(field.properties, "mask", new Array(field.properties.otpLength).fill("#").join(" "));
2037
+ field = this.setFieldKeyValue(field, "hidden", false);
2038
+ return field;
2039
+ };
2040
+ const formatFieldTypeDate = (field) => {
2041
+ const convertDateStringToTuiDayFormat = (date) => {
2042
+ const splitDate = date.split("-");
2043
+ const tuiDay = new TuiDay(Number(splitDate[2]), // Year
2044
+ Number(splitDate[1]) - 1, // Month, Why '-1' => Because Taiga-UI Required It, So...
2045
+ Number(splitDate[0]) // Day
2046
+ );
2047
+ return tuiDay;
2048
+ };
2049
+ if (hasKey$2(field, "min")) {
2050
+ const tuiDay = convertDateStringToTuiDayFormat(field["min"]);
2051
+ field.properties = this.setFieldKeyValue(field.properties, "min", tuiDay);
2052
+ }
2053
+ else {
2054
+ field.properties = this.setMissingFieldKeyValue(field.properties, "min", new TuiDay(0, 0, 1)); // Year - 0000, Month - 0 (0 Indexing), Day - 1
2055
+ }
2056
+ if (hasKey$2(field, "max")) {
2057
+ const tuiDay = convertDateStringToTuiDayFormat(field["max"]);
2058
+ field.properties = this.setFieldKeyValue(field.properties, "max", tuiDay);
2059
+ }
2060
+ else {
2061
+ field.properties = this.setMissingFieldKeyValue(field.properties, "max", new TuiDay(new Date().getFullYear(), // Year - 9999
2062
+ new Date().getMonth(), // Month - 11 (0 Indexing)
2063
+ new Date().getDate() // Day - 31
2064
+ ));
2065
+ }
2066
+ field = this.setFieldKeyValue(field, "hidden", false);
2067
+ return field;
2068
+ };
2069
+ const formatFieldTypeNumber = (field) => {
2070
+ if (hasKey$2(field, "key")) {
2071
+ if (field.key === "aadhaar_number") {
2072
+ field = this.setFieldKeyValue(field, "type", "aadhaar_number");
2073
+ }
2074
+ if (field.key === "contact_number") {
2075
+ field = this.setFieldKeyValue(field, "type", "phone");
2076
+ field.properties = this.setMissingFieldKeyValue(field.properties, "countryCode", "+91");
2077
+ field.properties = this.setMissingFieldKeyValue(field.properties, "phoneMaskAfterCountryCode", "####-######");
2078
+ field.properties = this.setFieldKeyValue(field.properties, "decimal", "not-zero");
2079
+ field.properties = this.setFieldKeyValue(field.properties, "min", -Infinity);
2080
+ field.properties = this.setFieldKeyValue(field.properties, "max", Infinity);
2081
+ field.properties = this.setFieldKeyValue(field.properties, "precision", 0);
2082
+ }
2083
+ }
2084
+ field = this.setFieldKeyValue(field, "hidden", false);
2085
+ return field;
2086
+ };
2087
+ const formatFieldTypeApiCall = (field) => {
2088
+ if (!hasKey$2(field.properties, "shape")) {
2089
+ field.properties = this.setFieldKeyValue(field.properties, "shape", null);
2090
+ }
2091
+ if (!hasKey$2(field, "showLoader")) {
2092
+ field = this.setFieldKeyValue(field, "showLoader", false);
2093
+ }
2094
+ if (!hasKey$2(field.properties, "size")) {
2095
+ field.properties = this.setFieldKeyValue(field.properties, "size", "m");
2096
+ }
2097
+ if (!hasKey$2(field, "api")) {
2098
+ field = this.setFieldKeyValue(field, "api", {});
2099
+ field.api = this.setMissingFieldKeyValue(field.api, "url", "");
2100
+ field.api = this.setMissingFieldKeyValue(field.api, "request", "");
2101
+ field.api = this.setMissingFieldKeyValue(field.api, "response", "");
2102
+ field.api = this.setMissingFieldKeyValue(field.api, "status", "");
2103
+ field.api.status = this.setMissingFieldKeyValue(field.api.status, "value", "default");
2104
+ field.api.status = this.setMissingFieldKeyValue(field.api.status, "labels", {
2105
+ default: "Call API",
2106
+ loading: "Call API",
2107
+ success: "API Success",
2108
+ failed: "API Failed"
2109
+ });
2110
+ }
2111
+ return field;
2112
+ };
2113
+ const formatFieldTypeSearchText = (field) => {
2114
+ if (hasKey$2(field, "type")) {
2115
+ if (field.type === "search-text") {
2116
+ field = this.setFieldKeyValue(field, "type", "dropdown-with-search");
2117
+ }
2118
+ }
2119
+ return field;
2120
+ };
2121
+ const formatFieldTypeText = (field) => {
2122
+ return field;
2123
+ };
2124
+ switch (field.type) {
2125
+ case "title":
2126
+ field = formatFieldTypeTitle(field);
2127
+ break;
2128
+ case "radio":
2129
+ field = formatFieldTypeRadio(field);
2130
+ break;
2131
+ case "otp":
2132
+ field = formatFieldTypeOtp(field);
2133
+ break;
2134
+ case "date":
2135
+ field = formatFieldTypeDate(field);
2136
+ break;
2137
+ case "number":
2138
+ field = formatFieldTypeNumber(field);
2139
+ break;
2140
+ case "api-call":
2141
+ field = formatFieldTypeApiCall(field);
2142
+ break;
2143
+ case "search-text":
2144
+ field = formatFieldTypeSearchText(field);
2145
+ break;
2146
+ default:
2147
+ break;
2148
+ }
2149
+ return field;
2150
+ };
2151
+ const getConnectedElementKeyValueObject = (key) => {
2152
+ const object = {
2153
+ key: key,
2154
+ conditions: { formula: "", rules: [] },
2155
+ actions: { success: [], failure: [] }
2156
+ };
2157
+ return object;
2158
+ };
2159
+ const formatFieldKeys = (field) => {
2160
+ if (hasKey$2(field, "connectedTo")) {
2161
+ if (typeof field["connectedTo"] === "string") {
2162
+ field["connectedElements"] = [
2163
+ getConnectedElementKeyValueObject(field["connectedTo"])
2164
+ ];
2165
+ }
2166
+ else {
2167
+ field["connectedTo"] = field["connectedTo"].map((key) => {
2168
+ return getConnectedElementKeyValueObject(key);
2169
+ });
2170
+ field["connectedElements"] = field["connectedTo"];
2171
+ }
2172
+ }
2173
+ this.removeFieldKey(field, "connectedTo");
2174
+ if (hasKey$2(field, "connectedToParent")) {
2175
+ if (typeof field["connectedToParent"] === "string") {
2176
+ field["connectedParentFields"] = [
2177
+ getConnectedElementKeyValueObject(field["connectedToParent"])
2178
+ ];
2179
+ }
2180
+ else {
2181
+ field["connectedParentFields"] = getConnectedElementKeyValueObject(field["connectedToParent"]);
2182
+ }
2183
+ }
2184
+ this.removeFieldKey(field, "connectedToParent");
2185
+ this.removeFieldKey(field, "sideEffect");
2186
+ return field;
2187
+ };
2188
+ const getConnectedElementFieldMapping = (field, connectedFieldMapping) => {
2189
+ const getConnectedElementChildFieldMapping = (field, connectedFieldMapping) => {
2190
+ if (hasKey$2(field, "connectedElements")) {
2191
+ connectedFieldMapping["child"][field.key] = field.connectedElements;
2192
+ }
2193
+ else if (hasKey$2(connectedFieldMapping["child"], field.key)) {
2194
+ field["connectedElements"] =
2195
+ connectedFieldMapping["child"][field.key];
2196
+ }
2197
+ return { field: field, connectedFieldMapping: connectedFieldMapping };
2198
+ };
2199
+ const getConnectedElementParentFieldMapping = (field, connectedFieldMapping) => {
2200
+ console.log(field, connectedFieldMapping);
2201
+ if (hasKey$2(connectedFieldMapping["child"], field.key)) {
2202
+ for (let connectedParentKey of connectedFieldMapping["child"][field.key]) {
2203
+ if (hasKey$2(connectedFieldMapping["parent"], connectedParentKey["key"])) {
2204
+ connectedFieldMapping["parent"][connectedParentKey["key"]].push(field.key);
2205
+ }
2206
+ else {
2207
+ connectedFieldMapping["parent"][connectedParentKey["key"]] = [
2208
+ field.key
2209
+ ];
2210
+ }
2211
+ }
2212
+ }
2213
+ return { field: field, connectedFieldMapping: connectedFieldMapping };
2214
+ };
2215
+ const connectedChildFieldMapping = getConnectedElementChildFieldMapping(field, connectedFieldMapping);
2216
+ field = connectedChildFieldMapping["field"];
2217
+ connectedFieldMapping =
2218
+ connectedChildFieldMapping["connectedFieldMapping"];
2219
+ const connectedParentFieldMapping = getConnectedElementParentFieldMapping(field, connectedFieldMapping);
2220
+ field = connectedParentFieldMapping["field"];
2221
+ connectedFieldMapping =
2222
+ connectedParentFieldMapping["connectedFieldMapping"];
2223
+ return connectedFieldMapping;
2224
+ };
2225
+ const updateConnectedElementsKeyValue = (field, connectedFieldMapping) => {
2226
+ if (hasKey$2(connectedFieldMapping["child"], field.key)) {
2227
+ field["connectedElements"] = connectedFieldMapping["child"][field.key];
2228
+ }
2229
+ if (hasKey$2(connectedFieldMapping["parent"], field.key)) {
2230
+ field["connectedParentFields"] =
2231
+ connectedFieldMapping["parent"][field.key];
2232
+ }
2233
+ return field;
2234
+ };
2235
+ const updateFieldValidatorConfig = (field) => {
2236
+ if (field.type !== "title") {
2237
+ const validators = hasKey$2(field, "validators") ? field.validators : {};
2238
+ field = this.setMissingFieldKeyValue(field, "validators", {});
2239
+ field = this.setFieldKeyValue(field, "validators", Object.assign(Object.assign({}, field["validators"]), { min: hasKey$2(validators, "min")
2240
+ ? validators.min
2241
+ : hasKey$2(field, "min")
2242
+ ? field.min
2243
+ : undefined, max: hasKey$2(validators, "max")
2244
+ ? validators.max
2245
+ : hasKey$2(field, "max")
2246
+ ? field.max
2247
+ : undefined, required: hasKey$2(validators, "required")
2248
+ ? validators.required
2249
+ : hasKey$2(field, "required")
2250
+ ? field.required
2251
+ : undefined, minLength: hasKey$2(validators, "minLength")
2252
+ ? validators.minLength
2253
+ : hasKey$2(field, "minLength")
2254
+ ? field.minLength
2255
+ : undefined, maxLength: hasKey$2(validators, "maxLength")
2256
+ ? validators.maxLength
2257
+ : hasKey$2(field, "length")
2258
+ ? field.length
2259
+ : hasKey$2(field, "maxLength")
2260
+ ? field.maxLength
2261
+ : undefined, pattern: hasKey$2(field.validators, "pattern")
2262
+ ? field.validators.pattern
2263
+ : hasKey$2(field, "pattern")
2264
+ ? field.pattern
2265
+ : hasKey$2(field, "regex")
2266
+ ? field.regex
2267
+ : undefined }));
2268
+ delete field.min;
2269
+ delete field.max;
2270
+ delete field.required;
2271
+ delete field.minLength;
2272
+ delete field.length;
2273
+ delete field.maxLength;
2274
+ delete field.pattern;
2275
+ delete field.regex;
2276
+ }
2277
+ return field;
2278
+ };
2279
+ const updateFieldDefaultValueConfig = (field) => {
2280
+ if (field.type !== "title") {
2281
+ if (hasKey$2(field, "defaultValue")) {
2282
+ return field;
2283
+ }
2284
+ else if (hasKey$2(field, "default")) {
2285
+ return field;
2286
+ }
2287
+ else {
2288
+ if (hasKey$2(field, "defaultVal")) {
2289
+ // Currently below line is commented because it caused issues in setting Default Value.
2290
+ // field["defaultValue"] = field["defaultVal"];
2291
+ // delete field["defaultVal"];
2292
+ }
2293
+ // TODO: Condition for all_forms_data is not considered yet.
2294
+ if (field.autoPopulateFromSummaryData) {
2295
+ field["defaultValue"] = {
2296
+ is_found: false,
2297
+ value: "",
2298
+ sources: [
2299
+ {
2300
+ source: "summary_data",
2301
+ summary_data: {
2302
+ path: `$.${field.key}`,
2303
+ validation: {
2304
+ rules: [
2305
+ {
2306
+ key: "1",
2307
+ type: "is_not_empty",
2308
+ is_not_empty: {
2309
+ value: true
2310
+ }
2311
+ }
2312
+ ],
2313
+ actions: [
2314
+ {
2315
+ type: "set_default_value_found",
2316
+ condition: "1",
2317
+ set_default_value_found: {
2318
+ value: true
2319
+ }
2320
+ },
2321
+ {
2322
+ type: "enable_field",
2323
+ condition: "1 OR NOT(1)",
2324
+ enable_field: { value: true }
2325
+ }
2326
+ ]
2327
+ }
2328
+ }
2329
+ }
2330
+ ]
2331
+ };
2332
+ }
2333
+ else if (hasKey$2(field, "autofill")) {
2334
+ if (hasKey$2(field.autofill, "type")) {
2335
+ if (field.autofill.type === "storage") {
2336
+ field["defaultValue"] = {
2337
+ is_found: false,
2338
+ value: "",
2339
+ sources: [
2340
+ {
2341
+ source: "browser_storage",
2342
+ browser_storage: {
2343
+ path: `$.${field.key}`,
2344
+ validation: {
2345
+ rules: [
2346
+ {
2347
+ key: "1",
2348
+ type: "is_not_empty",
2349
+ is_not_empty: {
2350
+ value: true
2351
+ }
2352
+ }
2353
+ ],
2354
+ actions: [
2355
+ {
2356
+ type: "set_default_value_found",
2357
+ condition: "1",
2358
+ set_default_value_found: {
2359
+ value: true
2360
+ }
2361
+ },
2362
+ {
2363
+ type: "enable_field",
2364
+ condition: "1 OR NOT(1)",
2365
+ enable_field: { value: true }
2366
+ }
2367
+ ]
2368
+ }
2369
+ }
2370
+ }
2371
+ ]
2372
+ };
2373
+ }
2374
+ else if (field.autofill.type === "config") {
2375
+ field["defaultValue"] = {
2376
+ is_found: false,
2377
+ value: "",
2378
+ sources: [
2379
+ {
2380
+ source: "field_config",
2381
+ field_config: {
2382
+ path: `$.${field.key}`,
2383
+ validation: {
2384
+ rules: [
2385
+ {
2386
+ key: "1",
2387
+ type: "is_not_empty",
2388
+ is_not_empty: {
2389
+ value: true
2390
+ }
2391
+ }
2392
+ ],
2393
+ actions: [
2394
+ {
2395
+ type: "set_default_value_found",
2396
+ condition: "1",
2397
+ set_default_value_found: {
2398
+ value: true
2399
+ }
2400
+ },
2401
+ {
2402
+ type: "enable_field",
2403
+ condition: "1 OR NOT(1)",
2404
+ enable_field: { value: true }
2405
+ }
2406
+ ]
2407
+ }
2408
+ }
2409
+ }
2410
+ ]
2411
+ };
2412
+ }
2413
+ }
2414
+ }
2415
+ else {
2416
+ field["defaultValue"] = {
2417
+ is_found: false,
2418
+ value: "",
2419
+ sources: [
2420
+ {
2421
+ source: "form_data",
2422
+ form_data: {
2423
+ path: `$.${field.key}`,
2424
+ validation: {
2425
+ rules: [
2426
+ {
2427
+ key: "1",
2428
+ type: "is_not_empty",
2429
+ is_not_empty: {
2430
+ value: true
2431
+ }
2432
+ }
2433
+ ],
2434
+ actions: [
2435
+ {
2436
+ type: "set_default_value_found",
2437
+ condition: "1",
2438
+ set_default_value_found: {
2439
+ value: true
2440
+ }
2441
+ },
2442
+ {
2443
+ type: "enable_field",
2444
+ condition: "1 OR NOT(1)",
2445
+ enable_field: { value: true }
2446
+ }
2447
+ ]
2448
+ }
2449
+ }
2450
+ }
2451
+ ]
2452
+ };
2453
+ }
2454
+ }
2455
+ delete field["defaultVal"];
2456
+ }
2457
+ return field;
2458
+ };
2459
+ const updateFieldMessages = (field) => {
2460
+ if (field.type !== "title") {
2461
+ field = this.setMissingFieldKeyValue(field, "messages", []);
2462
+ }
2463
+ return field;
2464
+ };
2465
+ const updateFieldResetButton = (field) => {
2466
+ if (field.type === "title") {
2467
+ if (hasKey$2(field, "action") &&
2468
+ field.action === "reset" &&
2469
+ hasKey$2(field, "fields")) {
2470
+ field = this.setFieldKeyValue(field, "reset", {
2471
+ fields: field.fields
2472
+ });
2473
+ }
2474
+ }
2475
+ return field;
2476
+ };
2477
+ let fields = this.getFormFields(formConfig);
2478
+ let connectedFieldMapping = {
2479
+ parent: {},
2480
+ child: {}
2481
+ };
2482
+ const setFormFields = (formConfig, fields) => {
2483
+ if (hasKey$2(formConfig, "multiForm")) {
2484
+ formConfig.multiForm["fields"] = fields;
2485
+ }
2486
+ else {
2487
+ formConfig["fields"] = fields;
2488
+ }
2489
+ return formConfig;
2490
+ };
2491
+ for (let field of fields) {
2492
+ field = updateOnFieldType(field);
2493
+ field = formatFieldKeys(field);
2494
+ // connectedFieldMapping = getConnectedElementFieldMapping(
2495
+ // field,
2496
+ // connectedFieldMapping
2497
+ // );
2498
+ // field = updateConnectedElementsKeyValue(field, connectedFieldMapping);
2499
+ field = updateFieldDefaultValueConfig(field);
2500
+ field = updateFieldValidatorConfig(field);
2501
+ field = updateFieldResetButton(field);
2502
+ field = updateFieldMessages(field);
2503
+ }
2504
+ formConfig = setFormFields(formConfig, fields);
2505
+ return formConfig;
2506
+ }
2507
+ }
2508
+ __decorate([
2509
+ log
2510
+ ], Converter.prototype, "convertFormConfig", null);
2511
+
2512
+ class KwikIDRendererService {
2513
+ constructor() {
2514
+ this.isMobileView = false;
2515
+ this.allFormsData = {};
2516
+ }
2517
+ setIsMobileView(isMobileView) {
2518
+ this.isMobileView = isMobileView;
2519
+ }
2520
+ setFormsList(formsList) {
2521
+ this.formsList = formsList;
2522
+ }
2523
+ setFormsListCompleted(formsListCompleted) {
2524
+ this.formsListCompleted = formsListCompleted;
2525
+ }
2526
+ setAllFormsData(allFormsData) {
2527
+ this.allFormsData = allFormsData;
2528
+ }
2529
+ setActiveFormConfig(activeFormConfig) {
2530
+ this.activeFormConfig = activeFormConfig;
2531
+ }
2532
+ setActiveFormFields(activeFormFields) {
2533
+ this.activeFormFields = activeFormFields;
2534
+ }
2535
+ setActiveFormData(activeFormData) {
2536
+ this.activeFormData = activeFormData;
2537
+ }
2538
+ fetchFormConfig(url) {
2539
+ return __awaiter(this, void 0, void 0, function* () {
2540
+ const response = yield fetch(url, { method: "GET" });
2541
+ const data = yield response.json();
2542
+ return data;
2543
+ });
2544
+ }
2545
+ findActiveFormConfig(formsList) {
2546
+ const activeFormConfig = formsList.find((form) => {
2547
+ return form.status === "editable" && !form.disabled;
2548
+ });
2549
+ return activeFormConfig;
2550
+ }
2551
+ findCompletedFormsList(allFormsData) {
2552
+ let formsListCompleted = [];
2553
+ Object.keys(allFormsData).map((formKey) => {
2554
+ formsListCompleted.push(formKey);
2555
+ });
2556
+ return formsListCompleted;
2557
+ }
2558
+ markFormInFormsListAsCompleted(formsList, formsListCompleted) {
2559
+ for (let form of formsList) {
2560
+ if (formsListCompleted.includes(form.key)) {
2561
+ form = setValueToObject(form, "status", "completed");
2562
+ form = setValueToObject(form, "disabled", false);
2563
+ }
2564
+ }
2565
+ return formsList;
2566
+ }
2567
+ markFormInFormsListAsDisabled(formsList, formsListCompleted) {
2568
+ for (let form of formsList) {
2569
+ if (form.status !== "completed") {
2570
+ if (hasKey$2(form, "dependentOn")) {
2571
+ const isDependent = form.dependentOn.every((r) => formsListCompleted.includes(r));
2572
+ if (isDependent) {
2573
+ form = setValueToObject(form, "status", "editable");
2574
+ form = setValueToObject(form, "disabled", false);
2575
+ }
2576
+ else {
2577
+ form = setValueToObject(form, "status", "locked");
2578
+ form = setValueToObject(form, "disabled", false);
2579
+ }
2580
+ }
2581
+ else {
2582
+ form = setValueToObject(form, "dependentOn", []);
2583
+ form = setValueToObject(form, "status", "editable");
2584
+ form = setValueToObject(form, "disabled", false);
2585
+ }
2586
+ }
2587
+ }
2588
+ return formsList;
2589
+ }
2590
+ assignSequenceNoToForm(formsList) {
2591
+ let sequenceNo = 1;
2592
+ for (let form of formsList) {
2593
+ form.sequenceNo = sequenceNo++;
2594
+ }
2595
+ return formsList;
2596
+ }
2597
+ updateFormsList() {
2598
+ let formsList = this.formsList;
2599
+ let formsListCompleted;
2600
+ let activeFormConfig;
2601
+ formsList = this.assignSequenceNoToForm(formsList);
2602
+ formsListCompleted = this.findCompletedFormsList(this.allFormsData);
2603
+ formsList = this.markFormInFormsListAsCompleted(formsList, formsListCompleted);
2604
+ formsList = this.markFormInFormsListAsDisabled(formsList, formsListCompleted);
2605
+ if (formsList.length !== formsListCompleted.length) {
2606
+ activeFormConfig = this.findActiveFormConfig(formsList);
2607
+ this.setActiveFormConfig(activeFormConfig);
2608
+ }
2609
+ this.setFormsList(formsList);
2610
+ this.setFormsListCompleted(formsListCompleted);
2611
+ }
2612
+ }
2613
+ /** @nocollapse */ KwikIDRendererService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDRendererService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2614
+ /** @nocollapse */ KwikIDRendererService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDRendererService, providedIn: "root" });
2615
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDRendererService, decorators: [{
2616
+ type: Injectable,
2617
+ args: [{
2618
+ providedIn: "root"
2619
+ }]
2620
+ }], ctorParameters: function () { return []; } });
2621
+
2622
+ class KwikIDFormsRendererComponent {
2623
+ constructor(rendererService, hostElement) {
2624
+ this.rendererService = rendererService;
2625
+ this.hostElement = hostElement;
2626
+ this.formsData = {};
2627
+ this.apiCallResponse = {};
2628
+ this.getFormData = new EventEmitter();
2629
+ this.onClickApiCall = new EventEmitter();
2630
+ this.loading = false;
2631
+ // display forms and list conditionally
2632
+ this.showForm = false;
2633
+ this.showFormFields = true;
2634
+ this.showFormSections = true;
2635
+ }
2636
+ // The final value should be provided to service, so that it can be used in all components
2637
+ windowResizeWatcher() {
2638
+ if (this.hostElement.nativeElement.offsetWidth < 600) {
2639
+ if (this.showForm) {
2640
+ this.showFormSections = false;
2641
+ this.showFormFields = true;
2642
+ }
2643
+ else {
2644
+ this.showFormSections = true;
2645
+ this.showFormFields = false;
2646
+ }
2647
+ this.rendererService.isMobileView = true;
2648
+ }
2649
+ else {
2650
+ if (this.showForm) {
2651
+ this.showFormSections = true;
2652
+ this.showFormFields = true;
2653
+ }
2654
+ else {
2655
+ this.showFormSections = true;
2656
+ this.showFormFields = false;
2657
+ }
2658
+ this.rendererService.isMobileView = false;
2659
+ }
2660
+ }
2661
+ ngOnInit() {
2662
+ this.loading = true;
2663
+ this.rendererService.setFormsList(this.userConfig.userFormFields);
2664
+ this.initializeForms();
2665
+ }
2666
+ ngOnChanges(changes) {
2667
+ const verifyChange = (prop) => {
2668
+ return changes.hasOwnProperty(prop) && !changes[prop].firstChange;
2669
+ };
2670
+ if (verifyChange("userConfig")) {
2671
+ this.userConfig = changes.userConfig.currentValue;
2672
+ }
2673
+ if (verifyChange("formsData")) {
2674
+ this.formsData = changes.formsData.currentValue;
2675
+ this.initializeForms();
2676
+ }
2677
+ if (verifyChange("apiCallResponse")) {
2678
+ this.apiCallResponse = changes.apiCallResponse.currentValue;
2679
+ }
2680
+ }
2681
+ initializeForms() {
2682
+ return __awaiter(this, void 0, void 0, function* () {
2683
+ this.rendererService.setAllFormsData(this.formsData);
2684
+ this.rendererService.updateFormsList();
2685
+ this.handleResize(this.rendererService.formsList);
2686
+ if (this.rendererService.formsList.length !==
2687
+ this.rendererService.formsListCompleted.length) {
2688
+ yield this.handleOnClickSetActiveForm(this.rendererService.activeFormConfig.key);
2689
+ }
2690
+ else {
2691
+ this.showForm = false;
2692
+ this.showFormFields = false;
2693
+ }
2694
+ this.loading = false;
2695
+ });
2696
+ }
2697
+ handleResize(formsList) {
2698
+ if (this.hostElement.nativeElement.offsetWidth < 600) {
2699
+ if (!isSingleForm(formsList)) {
2700
+ this.showFormSections = true;
2701
+ this.showFormFields = false;
2702
+ this.showForm = false;
2703
+ }
2704
+ else {
2705
+ this.showFormSections = true;
2706
+ this.showFormFields = false;
2707
+ this.showForm = false;
2708
+ }
2709
+ this.rendererService.isMobileView = true;
2710
+ }
2711
+ else {
2712
+ this.rendererService.isMobileView = false;
2713
+ }
2714
+ }
2715
+ // forms-list listener
2716
+ handleOnClickSetActiveForm(selectedForm) {
2717
+ return __awaiter(this, void 0, void 0, function* () {
2718
+ const activeFormConfig = this.rendererService.formsList.find((form) => {
2719
+ if (form.key === selectedForm) {
2720
+ return form;
2721
+ }
2722
+ });
2723
+ let formConfig = yield this.rendererService.fetchFormConfig(activeFormConfig.formContent.url);
2724
+ formConfig = new Converter().convertFormConfig(formConfig);
2725
+ this.rendererService.setActiveFormData(this.rendererService.allFormsData[formConfig.key]);
2726
+ this.rendererService.setActiveFormConfig(Object.assign(Object.assign({}, activeFormConfig), formConfig));
2727
+ if (this.hostElement.nativeElement.offsetWidth < 600) {
2728
+ this.showFormSections = false;
2729
+ this.showFormFields = true;
2730
+ }
2731
+ else if (this.hostElement.nativeElement.offsetWidth >= 600) {
2732
+ this.showFormSections = true;
2733
+ this.showFormFields = true;
2734
+ }
2735
+ this.showForm = true;
2736
+ });
2737
+ }
2738
+ // forms-list listener
2739
+ handleOnClickSubmitForms(e) {
2740
+ console.log(e);
2741
+ }
2742
+ // form-view listener
2743
+ handleOnClickApiCall(e) {
2744
+ this.onClickApiCall.emit(e);
2745
+ }
2746
+ // form-view listener
2747
+ handleGetActiveFormData(e) {
2748
+ this.getFormData.emit({
2749
+ [this.rendererService.activeFormConfig.key]: e["data"]
2750
+ });
2751
+ }
2752
+ // form-view listener
2753
+ handleOnClickSaveForm(e) {
2754
+ this.getFormData.emit({
2755
+ [this.rendererService.activeFormConfig.key]: e["data"]
2756
+ });
2757
+ }
2758
+ // form-view listener
2759
+ handleOnClickViewForms(e) {
2760
+ console.log(e);
2761
+ this.showFormSections = true;
2762
+ this.showForm = false;
2763
+ this.showFormFields = false;
2764
+ }
2765
+ }
2766
+ /** @nocollapse */ KwikIDFormsRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsRendererComponent, deps: [{ token: KwikIDRendererService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2767
+ /** @nocollapse */ KwikIDFormsRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: KwikIDFormsRendererComponent, selector: "kwikid-forms-renderer", inputs: { userConfig: "userConfig", formsData: "formsData", apiCallResponse: "apiCallResponse" }, outputs: { getFormData: "getFormData", onClickApiCall: "onClickApiCall" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, providers: [KwikIDRendererService], usesOnChanges: true, ngImport: i0, template: "<div ngClass=\"kwikid-renderer\">\r\n <div ngClass=\"kwikid-form-header\">\r\n <div id=\"uf-header\">\r\n <div id=\"uf-header-logo-container\">\r\n <img\r\n id=\"uf-header-logo\"\r\n src=\"https://kwikid.s3.ap-south-1.amazonaws.com/CONFIG/USER/assets/logo/kwikid/kwikid-logo-favicon-32x32.png\"\r\n [ngClass]=\"showForm ? 'small-icon' : 'large-icon'\"\r\n />\r\n </div>\r\n <div id=\"uf-header-title-container\">\r\n <div id=\"uf-header-title\">Customer Registration</div>\r\n <div id=\"uf-header-subtitle\">\r\n {{ \"Central Bank of India\" }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n ngClass=\"kwikid-layout-container\"\r\n *ngIf=\"!loading\"\r\n >\r\n <div\r\n ngClass=\"kwikid-sections-container\"\r\n *ngIf=\"showFormSections\"\r\n class=\"active\"\r\n [class.active]=\"showFormSections\"\r\n [class.mobile]=\"rendererService.isMobileView\"\r\n >\r\n <kwikid-forms-list\r\n [formsList]=\"this.rendererService.formsList\"\r\n [formsListCompleted]=\"this.rendererService.formsListCompleted\"\r\n [isMobileView]=\"this.rendererService.isMobileView\"\r\n (onClickSetActiveForm)=\"this.handleOnClickSetActiveForm($event)\"\r\n (onClickSubmitForms)=\"this.handleOnClickSubmitForms($event)\"\r\n ></kwikid-forms-list>\r\n </div>\r\n <div\r\n ngClass=\"kwikid-forms-container\"\r\n *ngIf=\"this.showForm && this.showFormFields\"\r\n [class.active]=\"showFormFields\"\r\n [class.mobile]=\"rendererService.isMobileView\"\r\n [@panelInOut]\r\n >\r\n <kwikid-form-view\r\n [formConfig]=\"this.rendererService.activeFormConfig\"\r\n [formData]=\"this.rendererService.activeFormData\"\r\n [apiCallResponse]=\"this.apiCallResponse\"\r\n [formsList]=\"this.rendererService.formsList\"\r\n [allFormsData]=\"this.rendererService.allFormsData\"\r\n [isMobileView]=\"this.rendererService.isMobileView\"\r\n (onClickApiCall)=\"this.handleOnClickApiCall($event)\"\r\n (onClickViewForms)=\"this.handleOnClickViewForms($event)\"\r\n (onClickSaveForm)=\"this.handleOnClickSaveForm($event)\"\r\n (getActiveFormData)=\"this.handleGetActiveFormData($event)\"\r\n ></kwikid-form-view>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".kwikid-root{width:100%;height:100%}.kwikid-renderer{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;align-content:center;width:100%;height:100%}.kwikid-form-header{height:70px;box-shadow:0 0 12px -8px var(--tui-primary);z-index:6}#uf-header{display:flex;flex-direction:row;align-content:center;align-items:center;justify-content:flex-start;grid-column-gap:10px;column-gap:10px;padding:10px 20px;width:100%;max-width:calc(400px + 50vw + 2rem);margin:0 auto;height:70px;z-index:1}#uf-header #uf-header-goback-container{display:none}#uf-header #uf-header-goback-container:hover{border-radius:50%;background-color:#d3d3d3}#uf-header #uf-header-goback-container #uf-header-goback{width:100%;height:auto}#uf-header #uf-header-logo-container{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}#uf-header #uf-header-logo-container #uf-header-logo.small-icon{width:50px;height:50px}#uf-header #uf-header-logo-container #uf-header-logo.large-icon{width:50px;height:50px}#uf-header #uf-header-title-container{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;grid-row-gap:4px;row-gap:4px}#uf-header #uf-header-title-container #uf-header-title{font-size:1.4em;color:#121212}#uf-header #uf-header-title-container #uf-header-subtitle{font-size:1.2em;color:#121212}.kwikid-layout-container{display:flex;flex-direction:row;padding:0 1rem;height:calc(100% - 70px);justify-content:center;align-items:stretch;background:var(--tui-secondary);position:relative}.kwikid-sections-container{display:block;width:100%;max-width:400px;height:calc(100% - 2rem);padding:.25rem .5rem 0;border-radius:1rem;background-color:var(--tui-base-01);margin:auto 1rem auto 0;box-shadow:0 0 12px -8px var(--tui-primary)}.kwikid-sections-container.mobile{position:absolute;top:0;left:0;z-index:5;opacity:1;visibility:visible;transition:all 1s}.kwikid-forms-container{display:block;width:100%;max-width:50vw;margin:auto 0;height:calc(100% - 2rem);padding:.25rem .5rem 0;border-radius:1rem;background-color:var(--tui-base-01);box-shadow:0 0 12px -8px var(--tui-primary)}.kwikid-forms-container.mobile{position:absolute;top:0;left:0;z-index:5;opacity:1;visibility:visible;transition:all 1s}@media screen and (max-width: 600px){.kwikid-layout-container{padding:0;background:transparent}.kwikid-sections-container{position:absolute;max-width:100%;bottom:-10000px;left:-10000px;opacity:0;padding:0;visibility:hidden}.kwikid-sections-container.active{visibility:visible}.kwikid-sections-container.mobile{height:100%;opacity:1;visibility:visible;transition:all 2s;border-radius:0;box-shadow:none;top:0px;margin:0;position:absolute}.kwikid-forms-container{display:none;max-width:100%;height:100%;padding:0;border-radius:0;box-shadow:none}.kwikid-forms-container.mobile{height:100%;opacity:1;visibility:visible;transition:all 2s;border-radius:0;box-shadow:none;top:0px;margin:0;position:absolute}.kwikid-forms-container.active{display:block}}\n"], components: [{ type: KwikIDFormsListComponent, selector: "kwikid-forms-list", inputs: ["formsList", "formsListCompleted", "isMobileView"], outputs: ["onClickSetActiveForm", "onClickHideFormsList", "onClickSubmitForms"] }, { type: KwikIDFormViewComponent, selector: "kwikid-form-view", inputs: ["formConfig", "formData", "apiCallResponse", "isMobileView", "allFormsData", "formsList"], outputs: ["onClickViewForms", "onClickSaveForm", "onClickApiCall", "getActiveFormData"] }], directives: [{ type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
2768
+ trigger("panelInOut", [
2769
+ transition(":enter", [
2770
+ style({ transform: "translateY(100%)" }),
2771
+ animate(150)
2772
+ ]),
2773
+ transition(":leave", [
2774
+ animate(100, style({ transform: "translateY(100%)" }))
2775
+ ])
2776
+ ])
2777
+ ] });
2778
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsRendererComponent, decorators: [{
2779
+ type: Component,
2780
+ args: [{
2781
+ selector: "kwikid-forms-renderer",
2782
+ templateUrl: "./renderer.component.html",
2783
+ styleUrls: ["./renderer.component.scss"],
2784
+ animations: [
2785
+ trigger("panelInOut", [
2786
+ transition(":enter", [
2787
+ style({ transform: "translateY(100%)" }),
2788
+ animate(150)
2789
+ ]),
2790
+ transition(":leave", [
2791
+ animate(100, style({ transform: "translateY(100%)" }))
2792
+ ])
2793
+ ])
2794
+ ],
2795
+ providers: [KwikIDRendererService]
2796
+ }]
2797
+ }], ctorParameters: function () { return [{ type: KwikIDRendererService }, { type: i0.ElementRef }]; }, propDecorators: { windowResizeWatcher: [{
2798
+ type: HostListener,
2799
+ args: ["window:resize", ["$event"]]
2800
+ }], userConfig: [{
2801
+ type: Input
2802
+ }], formsData: [{
2803
+ type: Input
2804
+ }], apiCallResponse: [{
2805
+ type: Input
2806
+ }], getFormData: [{
2807
+ type: Output
2808
+ }], onClickApiCall: [{
2809
+ type: Output
2810
+ }] } });
2811
+
2812
+ class KwikIDFormBuilderModule {
2813
+ }
2814
+ /** @nocollapse */ KwikIDFormBuilderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormBuilderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2815
+ /** @nocollapse */ KwikIDFormBuilderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormBuilderModule, declarations: [KwikIDFormsBuilderComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule], exports: [KwikIDFormsBuilderComponent] });
2816
+ /** @nocollapse */ KwikIDFormBuilderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormBuilderModule, providers: [], imports: [[CommonModule, FormsModule, ReactiveFormsModule, DragDropModule]] });
2817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormBuilderModule, decorators: [{
2818
+ type: NgModule,
2819
+ args: [{
2820
+ declarations: [KwikIDFormsBuilderComponent],
2821
+ imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule],
2822
+ providers: [],
2823
+ exports: [KwikIDFormsBuilderComponent]
2824
+ }]
2825
+ }] });
2826
+
2827
+ class KwikIDFormViewModule {
2828
+ }
2829
+ /** @nocollapse */ KwikIDFormViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2830
+ /** @nocollapse */ KwikIDFormViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewModule, declarations: [KwikIDFormViewComponent], imports: [CommonModule,
2831
+ FormsModule,
2832
+ ReactiveFormsModule,
2833
+ TuiLabelModule,
2834
+ KwikUIModule], exports: [KwikIDFormViewComponent] });
2835
+ /** @nocollapse */ KwikIDFormViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewModule, imports: [[
2836
+ CommonModule,
2837
+ FormsModule,
2838
+ ReactiveFormsModule,
2839
+ TuiLabelModule,
2840
+ KwikUIModule
2841
+ ]] });
2842
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewModule, decorators: [{
2843
+ type: NgModule,
2844
+ args: [{
2845
+ declarations: [KwikIDFormViewComponent],
2846
+ imports: [
2847
+ CommonModule,
2848
+ FormsModule,
2849
+ ReactiveFormsModule,
2850
+ TuiLabelModule,
2851
+ KwikUIModule
2852
+ ],
2853
+ exports: [KwikIDFormViewComponent]
2854
+ }]
2855
+ }] });
2856
+
2857
+ class KwikIDFormsListModule {
2858
+ }
2859
+ /** @nocollapse */ KwikIDFormsListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2860
+ /** @nocollapse */ KwikIDFormsListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsListModule, declarations: [KwikIDFormsListComponent], imports: [CommonModule,
2861
+ FormsModule,
2862
+ ReactiveFormsModule,
2863
+ KwikUIModule,
2864
+ TuiSvgModule], exports: [KwikIDFormsListComponent] });
2865
+ /** @nocollapse */ KwikIDFormsListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsListModule, imports: [[
2866
+ CommonModule,
2867
+ FormsModule,
2868
+ ReactiveFormsModule,
2869
+ KwikUIModule,
2870
+ TuiSvgModule
2871
+ ]] });
2872
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsListModule, decorators: [{
2873
+ type: NgModule,
2874
+ args: [{
2875
+ declarations: [KwikIDFormsListComponent],
2876
+ imports: [
2877
+ CommonModule,
2878
+ FormsModule,
2879
+ ReactiveFormsModule,
2880
+ KwikUIModule,
2881
+ TuiSvgModule
2882
+ ],
2883
+ exports: [KwikIDFormsListComponent]
2884
+ }]
2885
+ }] });
2886
+
2887
+ class KwikIDFormRendererModule {
2888
+ }
2889
+ /** @nocollapse */ KwikIDFormRendererModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormRendererModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2890
+ /** @nocollapse */ KwikIDFormRendererModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormRendererModule, declarations: [KwikIDFormsRendererComponent], imports: [CommonModule,
2891
+ HttpClientModule,
2892
+ KwikIDFormViewModule,
2893
+ KwikIDFormsListModule,
2894
+ KwikUIModule], exports: [KwikIDFormsRendererComponent] });
2895
+ /** @nocollapse */ KwikIDFormRendererModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormRendererModule, providers: [], imports: [[
2896
+ CommonModule,
2897
+ HttpClientModule,
2898
+ KwikIDFormViewModule,
2899
+ KwikIDFormsListModule,
2900
+ KwikUIModule
2901
+ ]] });
2902
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormRendererModule, decorators: [{
2903
+ type: NgModule,
2904
+ args: [{
2905
+ declarations: [KwikIDFormsRendererComponent],
2906
+ imports: [
2907
+ CommonModule,
2908
+ HttpClientModule,
2909
+ KwikIDFormViewModule,
2910
+ KwikIDFormsListModule,
2911
+ KwikUIModule
2912
+ ],
2913
+ providers: [],
2914
+ exports: [KwikIDFormsRendererComponent]
2915
+ }]
2916
+ }] });
2917
+
2918
+ class KwikIDFormsModule {
2919
+ }
2920
+ /** @nocollapse */ KwikIDFormsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2921
+ /** @nocollapse */ KwikIDFormsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsModule, imports: [CommonModule,
2922
+ BrowserModule,
2923
+ BrowserAnimationsModule,
2924
+ FormsModule,
2925
+ ReactiveFormsModule,
2926
+ KwikIDFormBuilderModule,
2927
+ KwikIDFormRendererModule,
2928
+ TuiRootModule,
2929
+ TuiAlertModule], exports: [KwikIDFormBuilderModule, KwikIDFormRendererModule] });
2930
+ /** @nocollapse */ KwikIDFormsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsModule, providers: [KwikIDRendererService], imports: [[
2931
+ CommonModule,
2932
+ BrowserModule,
2933
+ BrowserAnimationsModule,
2934
+ FormsModule,
2935
+ ReactiveFormsModule,
2936
+ KwikIDFormBuilderModule,
2937
+ KwikIDFormRendererModule,
2938
+ TuiRootModule,
2939
+ TuiAlertModule
2940
+ ], KwikIDFormBuilderModule, KwikIDFormRendererModule] });
2941
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsModule, decorators: [{
2942
+ type: NgModule,
2943
+ args: [{
2944
+ declarations: [],
2945
+ imports: [
2946
+ CommonModule,
2947
+ BrowserModule,
2948
+ BrowserAnimationsModule,
2949
+ FormsModule,
2950
+ ReactiveFormsModule,
2951
+ KwikIDFormBuilderModule,
2952
+ KwikIDFormRendererModule,
2953
+ TuiRootModule,
2954
+ TuiAlertModule
2955
+ ],
2956
+ exports: [KwikIDFormBuilderModule, KwikIDFormRendererModule],
2957
+ providers: [KwikIDRendererService]
2958
+ }]
2959
+ }] });
2960
+
2961
+ /*
2962
+ * Public API Surface of kwikid-forms
2963
+ */
2964
+
2965
+ /**
2966
+ * Generated bundle index. Do not edit.
2967
+ */
2968
+
2969
+ export { KwikIDFormBuilderModule, KwikIDFormRendererModule, KwikIDFormViewComponent, KwikIDFormViewModule, KwikIDFormsBuilderComponent, KwikIDFormsListComponent, KwikIDFormsListModule, KwikIDFormsModule, KwikIDFormsRendererComponent };
2970
+ //# sourceMappingURL=kwikid-forms.js.map