kwikid-forms 0.0.2 → 0.0.4

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.
@@ -176,41 +176,95 @@ var EApiStatusType;
176
176
  var EPatternKey;
177
177
  (function (EPatternKey) {
178
178
  EPatternKey["CUSTOM"] = "CUSTOM";
179
- EPatternKey["IS_PAN_NUMBER"] = "IS_PAN_NUMBER";
180
- EPatternKey["IS_AADHAAR_NUMBER"] = "IS_AADHAAR_NUMBER";
181
- EPatternKey["IS_EMPTY"] = "IS_EMPTY";
182
- EPatternKey["IS_NOT_EMPTY"] = "IS_NOT_EMPTY";
183
- EPatternKey["IS_EMAIL"] = "IS_EMAIL";
184
- EPatternKey["IS_NUMBER"] = "IS_NUMBER";
185
- EPatternKey["IS_INTEGER"] = "IS_INTEGER";
186
- EPatternKey["IS_URL"] = "IS_URL";
179
+ EPatternKey["IS_ADDRESS"] = "IS_ADDRESS";
187
180
  EPatternKey["IS_ALPHA"] = "IS_ALPHA";
188
181
  EPatternKey["IS_ALPHANUMERIC"] = "IS_ALPHANUMERIC";
189
- EPatternKey["IS_UPPERCASE"] = "IS_UPPERCASE";
190
- EPatternKey["IS_LOWERCASE"] = "IS_LOWERCASE";
182
+ EPatternKey["IS_BOOLEAN"] = "IS_BOOLEAN";
183
+ EPatternKey["IS_EMAIL"] = "IS_EMAIL";
184
+ EPatternKey["IS_EMPTY"] = "IS_EMPTY";
185
+ EPatternKey["IS_FALSE"] = "IS_FALSE";
186
+ EPatternKey["IS_HTML"] = "IS_HTML";
187
+ EPatternKey["IS_INTEGER"] = "IS_INTEGER";
191
188
  EPatternKey["IS_IP_ADDRESS"] = "IS_IP_ADDRESS";
192
189
  EPatternKey["IS_JSON"] = "IS_JSON";
193
- EPatternKey["IS_HTML"] = "IS_HTML";
190
+ EPatternKey["IS_LOWERCASE"] = "IS_LOWERCASE";
191
+ EPatternKey["IS_NOT_EMPTY"] = "IS_NOT_EMPTY";
192
+ EPatternKey["IS_NUMBER"] = "IS_NUMBER";
194
193
  EPatternKey["IS_TRUE"] = "IS_TRUE";
194
+ EPatternKey["IS_UPPERCASE"] = "IS_UPPERCASE";
195
+ EPatternKey["IS_URL"] = "IS_URL";
196
+ EPatternKey["IS_AADHAAR_NUMBER"] = "IS_AADHAAR_NUMBER";
197
+ EPatternKey["IS_BANK_ACCOUNT_NO"] = "IS_BANK_ACCOUNT_NO";
198
+ EPatternKey["IS_BANK_SWIFT_CODE"] = "IS_BANK_SWIFT_CODE";
199
+ EPatternKey["IS_BIRTH_CERTIFICATE_NO"] = "IS_BIRTH_CERTIFICATE_NO";
200
+ EPatternKey["IS_CHEQUE_NO"] = "IS_CHEQUE_NO";
201
+ EPatternKey["IS_CIN"] = "IS_CIN";
202
+ EPatternKey["IS_CREDIT_CARD_NO"] = "IS_CREDIT_CARD_NO";
203
+ EPatternKey["IS_DRIVING_LICENSE"] = "IS_DRIVING_LICENSE";
204
+ EPatternKey["IS_GSTIN"] = "IS_GSTIN";
205
+ EPatternKey["IS_IFSC_NO"] = "IS_IFSC_NO";
206
+ EPatternKey["IS_MICR_CODE"] = "IS_MICR_CODE";
207
+ EPatternKey["IS_MOBILE_NO"] = "IS_MOBILE_NO";
208
+ EPatternKey["IS_MOBILE_NO_IN"] = "IS_MOBILE_NO_IN";
209
+ EPatternKey["IS_NEFT_OR_RTGS_NO"] = "IS_NEFT_OR_RTGS_NO";
210
+ EPatternKey["IS_PAN_NUMBER"] = "IS_PAN_NUMBER";
211
+ EPatternKey["IS_PASSPORT"] = "IS_PASSPORT";
212
+ EPatternKey["IS_PHONE_NO"] = "IS_PHONE_NO";
213
+ EPatternKey["IS_PINCODE"] = "IS_PINCODE";
214
+ EPatternKey["IS_PURCHASE_ORDER_NO"] = "IS_PURCHASE_ORDER_NO";
215
+ EPatternKey["IS_RATION_CARD_NO"] = "IS_RATION_CARD_NO";
216
+ EPatternKey["IS_SERVICE_TAX_NO"] = "IS_SERVICE_TAX_NO";
217
+ EPatternKey["IS_SOCIAL_SECURITY_NO"] = "IS_SOCIAL_SECURITY_NO";
218
+ EPatternKey["IS_UPI_TRANSACTION_REFERENCE_NO"] = "IS_UPI_TRANSACTION_REFERENCE_NO";
219
+ EPatternKey["IS_VAT_TIN_NO"] = "IS_VAT_TIN_NO";
220
+ EPatternKey["IS_VEHICLE_REGISTRATION_NO"] = "IS_VEHICLE_REGISTRATION_NO";
221
+ EPatternKey["IS_VOTER_ID"] = "IS_VOTER_ID";
195
222
  })(EPatternKey || (EPatternKey = {}));
196
223
  var EPattern;
197
224
  (function (EPattern) {
198
- EPattern["IS_EMPTY"] = "^$";
199
- EPattern["IS_PAN_NUMBER"] = "^[A-Z]{5}[[0-9]{4}[A-Z]{1}$";
200
- EPattern["IS_AADHAAR_NUMBER"] = "^[0-9]{12}$";
201
- EPattern["IS_NOT_EMPTY"] = "^.+$";
202
- EPattern["IS_EMAIL"] = "^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$";
203
- EPattern["IS_NUMBER"] = "^[+-]?d+(.d+)?$";
204
- EPattern["IS_INTEGER"] = "^[+-]?d+$";
205
- EPattern["IS_URL"] = "^(?:http(s)?://)?[w.-]+(?:.[w.-]+)+[w-._~:/?#[]@!$&'()*+,;=.]+$";
206
225
  EPattern["IS_ALPHA"] = "^[a-zA-Z]+$";
226
+ EPattern["IS_ADDRESS"] = "^(\\w*\\s*[#-,/.()&]*)+";
207
227
  EPattern["IS_ALPHANUMERIC"] = "^[a-zA-Z0-9]+$";
208
- EPattern["IS_UPPERCASE"] = "^[A-Z]+$";
209
- EPattern["IS_LOWERCASE"] = "^[a-z]+$";
228
+ EPattern["IS_BOOLEAN"] = "(true|false)";
229
+ EPattern["IS_EMAIL"] = "^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$";
230
+ EPattern["IS_EMPTY"] = "^$";
231
+ EPattern["IS_FALSE"] = "false";
232
+ EPattern["IS_HTML"] = "^<([a-z]+)([^<]+)(?:>(.)</\\1>|\\s+/>)$";
233
+ EPattern["IS_INTEGER"] = "^[+-]?d+$";
210
234
  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]?)$";
211
235
  EPattern["IS_JSON"] = "^\\s*({(.|\\s)}|[(.|\\s)])\\s*$";
212
- EPattern["IS_HTML"] = "^<([a-z]+)([^<]+)(?:>(.)</\\1>|\\s+/>)$";
236
+ EPattern["IS_LOWERCASE"] = "^[a-z]+$";
237
+ EPattern["IS_NOT_EMPTY"] = "^.+$";
238
+ EPattern["IS_NUMBER"] = "^[+-]?d+(.d+)?$";
213
239
  EPattern["IS_TRUE"] = "true";
240
+ EPattern["IS_UPPERCASE"] = "^[A-Z]+$";
241
+ EPattern["IS_URL"] = "^(?:http(s)?://)?[w.-]+(?:.[w.-]+)+[w-._~:/?#[]@!$&'()*+,;=.]+$";
242
+ EPattern["IS_AADHAAR_NUMBER"] = "^[0-9]{12}$";
243
+ EPattern["IS_BANK_ACCOUNT_NO"] = "^[0-9]{9,18}$";
244
+ EPattern["IS_BANK_SWIFT_CODE"] = "^[A-Z]{4}[A-Z]{2}[0-9A-Z]{2}[0-9A-Z]{3}$";
245
+ EPattern["IS_BIRTH_CERTIFICATE_NO"] = "^[A-Z]{2}[0-9]{6}[A-Z]{1}[0-9]{2}$";
246
+ EPattern["IS_CHEQUE_NO"] = "^[0-9]{6,14}$";
247
+ EPattern["IS_CIN"] = "^[A-Z]{3}[0-9]{5}[0-9A-Z]{3}$";
248
+ EPattern["IS_CREDIT_CARD_NO"] = "^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4}$";
249
+ EPattern["IS_DRIVING_LICENSE"] = "^[A-Z]{2}[0-9]{2}((19|20)[0-9][0-9])[0-9]{7}$";
250
+ EPattern["IS_GSTIN"] = "^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$";
251
+ EPattern["IS_IFSC_NO"] = "^[A-Z]{4}[0][A-Z0-9]{6}$";
252
+ EPattern["IS_MICR_CODE"] = "^[0-9]{9}$";
253
+ EPattern["IS_MOBILE_NO"] = "^[6-9]\\d{9}$";
254
+ EPattern["IS_MOBILE_NO_IN"] = "^(\\+91)[6-9]\\d{9}$";
255
+ EPattern["IS_NEFT_OR_RTGS_NO"] = "^[A-Z]{4}[0-9]{7}$";
256
+ EPattern["IS_PAN_NUMBER"] = "^[A-Z]{5}[[0-9]{4}[A-Z]{1}$";
257
+ EPattern["IS_PASSPORT"] = "^[A-PR-WYa-pr-wy][1-9]\\d\\s?\\d{4}[1-9]$";
258
+ EPattern["IS_PHONE_NO"] = "^[6-9]\\d{9}$";
259
+ EPattern["IS_PINCODE"] = "^[1-9][0-9]{5}$";
260
+ EPattern["IS_PURCHASE_ORDER_NO"] = "^[0-9]{1,5}$";
261
+ EPattern["IS_RATION_CARD_NO"] = "^[A-Z]{3}[0-9]{7}$";
262
+ EPattern["IS_SERVICE_TAX_NO"] = "^[A-Z]{5}[0-9]{4}[A-Z]{1}$";
263
+ EPattern["IS_SOCIAL_SECURITY_NO"] = "^[0-9]{3}-[0-9]{2}-[0-9]{4}$";
264
+ EPattern["IS_UPI_TRANSACTION_REFERENCE_NO"] = "^[a-zA-Z0-9]{3,128}@[a-z]{3,9}$";
265
+ EPattern["IS_VAT_TIN_NO"] = "^[0-9]{11}$";
266
+ EPattern["IS_VEHICLE_REGISTRATION_NO"] = "^[A-Z]{2}[0-9]{2}((19|20)[0-9][0-9])[0-9]{6}$";
267
+ EPattern["IS_VOTER_ID"] = "^[A-Z]{3}[0-9]{7}$";
214
268
  })(EPattern || (EPattern = {}));
215
269
  var EMessageType;
216
270
  (function (EMessageType) {
@@ -220,6 +274,21 @@ var EMessageType;
220
274
  EMessageType["WARNING"] = "warning";
221
275
  })(EMessageType || (EMessageType = {}));
222
276
 
277
+ var EFieldType;
278
+ (function (EFieldType) {
279
+ EFieldType["TITLE"] = "title";
280
+ EFieldType["TEXT"] = "text";
281
+ EFieldType["CHECKBOX"] = "checkbox";
282
+ EFieldType["NUMBER"] = "number";
283
+ EFieldType["DATE"] = "date";
284
+ EFieldType["PHONE"] = "phone";
285
+ EFieldType["RADIO"] = "radio";
286
+ EFieldType["DROPDOWN_WITH_SEARCH"] = "dropdown-with-search";
287
+ EFieldType["API_CALL"] = "api-call";
288
+ EFieldType["OTP"] = "otp";
289
+ EFieldType["AADHAAR_NUMBER"] = "aadhaar-number";
290
+ })(EFieldType || (EFieldType = {}));
291
+
223
292
  /**
224
293
  * A function that logs the execution of a method.
225
294
  * @param {any} target - The object the method belongs to.
@@ -362,21 +431,6 @@ const isSingleForm = (formsList) => {
362
431
  return formsList.length === 1;
363
432
  };
364
433
 
365
- var EFieldType;
366
- (function (EFieldType) {
367
- EFieldType["TITLE"] = "title";
368
- EFieldType["TEXT"] = "text";
369
- EFieldType["CHECKBOX"] = "checkbox";
370
- EFieldType["NUMBER"] = "number";
371
- EFieldType["DATE"] = "date";
372
- EFieldType["PHONE"] = "phone";
373
- EFieldType["RADIO"] = "radio";
374
- EFieldType["DROPDOWN_WITH_SEARCH"] = "dropdown-with-search";
375
- EFieldType["API_CALL"] = "api-call";
376
- EFieldType["OTP"] = "otp";
377
- EFieldType["AADHAAR_NUMBER"] = "aadhaar-number";
378
- })(EFieldType || (EFieldType = {}));
379
-
380
434
  const hasKey$1 = (object, key) => {
381
435
  return object.hasOwnProperty(key);
382
436
  };
@@ -879,6 +933,208 @@ __decorate([
879
933
  log
880
934
  ], Defaults.prototype, "getDefaultValue", null);
881
935
 
936
+ const findFieldFromKey = (fields, key) => {
937
+ const field = fields.find((field) => {
938
+ if (field.key === key) {
939
+ return field;
940
+ }
941
+ });
942
+ return field;
943
+ };
944
+ const findFieldIndexFromKey = (fields, key) => {
945
+ let fieldIndex;
946
+ fieldIndex = fields.findIndex((_) => {
947
+ return key === _.key;
948
+ });
949
+ return fieldIndex;
950
+ };
951
+ const getSearchTextOptionsFromRemoteFile = (field, childField, formGroup) => __awaiter(void 0, void 0, void 0, function* () {
952
+ const parentFieldValue = formGroup.controls[field.key].value;
953
+ // Determine the URL of the remote file to fetch
954
+ let fileUrl;
955
+ if (childField.regexToGetJsonRemoteUrlKey) {
956
+ const fileKey = parentFieldValue.match(childField.regexToGetJsonRemoteUrlKey)[0];
957
+ fileUrl = childField.jsonRemoteUrlMapping[fileKey];
958
+ }
959
+ else {
960
+ fileUrl = childField.fileUrl;
961
+ }
962
+ // Return early if there is no file URL
963
+ if (!fileUrl)
964
+ return;
965
+ // Fetch the remote file and parse its JSON data
966
+ const response = yield fetch(fileUrl);
967
+ const data = yield response.json();
968
+ // Return the data for the given parent field value
969
+ return data[parentFieldValue];
970
+ });
971
+ const getSearchTextOptionsFromFieldConfig = (field, childField, formGroup) => {
972
+ let options;
973
+ const fieldValue = formGroup.controls[field.key].value;
974
+ if (isNotEmpty(childField["json"])) {
975
+ options = childField["json"][fieldValue];
976
+ }
977
+ return options;
978
+ };
979
+ const formatSearchTextOptions = (options) => {
980
+ return options.map(({ title }) => title);
981
+ };
982
+ const formatDateToStandardFormat = (date) => {
983
+ let formattedDate;
984
+ let year = date.year;
985
+ let month = date.month;
986
+ let day = date.day;
987
+ formattedDate = `${day}-${month + 1}-${year}`;
988
+ return formattedDate;
989
+ };
990
+ function highlightFieldError(field, error) {
991
+ field.invalid = error;
992
+ field.focus = error;
993
+ // if (!error) {
994
+ // field["messages"] = field["messages"].filter(function (fieldMessage: {
995
+ // type: string;
996
+ // message: string;
997
+ // }) {
998
+ // return fieldMessage.type === "error";
999
+ // });
1000
+ // }
1001
+ return field;
1002
+ }
1003
+ const addMessage = (field, message) => {
1004
+ const isDuplicateMessage = (messages, message) => {
1005
+ return messages.some((fieldMessage) => {
1006
+ return (fieldMessage.type === message.type &&
1007
+ fieldMessage.message === message.message);
1008
+ });
1009
+ };
1010
+ field["messages"] = [];
1011
+ if (hasKey$1(field, "messages")) {
1012
+ if (!isDuplicateMessage(field["messages"], message)) {
1013
+ field["messages"].push({
1014
+ type: message.type,
1015
+ message: message.message
1016
+ });
1017
+ }
1018
+ }
1019
+ else {
1020
+ field["messages"] = [{ type: message.type, message: message.message }];
1021
+ }
1022
+ return field;
1023
+ };
1024
+ const removeMessage = (field, message) => {
1025
+ field["messages"] = field["messages"].filter(function (fieldMessage) {
1026
+ return fieldMessage.type !== message.type;
1027
+ });
1028
+ return field;
1029
+ };
1030
+ function setFieldError(fields, errors, key, error) {
1031
+ const fieldIndex = fields.findIndex((field) => {
1032
+ return field.key === key;
1033
+ });
1034
+ const setErrorMessages = (field, errors) => {
1035
+ const getErrorMessage = (fieldLabel, errorType) => {
1036
+ let errorMessage = "";
1037
+ switch (errorType) {
1038
+ case "required":
1039
+ errorMessage = `${fieldLabel} is required!`;
1040
+ break;
1041
+ case "email":
1042
+ errorMessage = `${fieldLabel} has wrong email format!`;
1043
+ break;
1044
+ case "min":
1045
+ errorMessage = `${fieldLabel} has wrong value! Minimum value: ${field.validators.min}`;
1046
+ break;
1047
+ case "minlength":
1048
+ errorMessage = `${fieldLabel} has wrong length! Required minimum length: ${field.validators.minLength}`;
1049
+ break;
1050
+ case "max":
1051
+ errorMessage = `${fieldLabel} has wrong value! Maximum value: ${field.validators.maxLength}`;
1052
+ break;
1053
+ case "maxlength":
1054
+ errorMessage = `${fieldLabel} has wrong length! Required maximum length: ${field.validators.maxLength}`;
1055
+ break;
1056
+ case "areEqual":
1057
+ errorMessage = `${fieldLabel} must be equal!`;
1058
+ break;
1059
+ case "pattern":
1060
+ errorMessage = `${fieldLabel} is in incorrect format!`;
1061
+ break;
1062
+ default:
1063
+ errorMessage = `${fieldLabel}: ${errorType}`;
1064
+ break;
1065
+ }
1066
+ return errorMessage;
1067
+ };
1068
+ Object.keys(errors).forEach((error) => {
1069
+ field = addMessage(field, {
1070
+ type: "error",
1071
+ message: getErrorMessage(field.label, error)
1072
+ });
1073
+ });
1074
+ return field;
1075
+ };
1076
+ if (error) {
1077
+ fields[fieldIndex] = setErrorMessages(fields[fieldIndex], errors);
1078
+ }
1079
+ else {
1080
+ fields[fieldIndex]["messages"] = [];
1081
+ }
1082
+ fields[fieldIndex] = highlightFieldError(fields[fieldIndex], error);
1083
+ return fields;
1084
+ }
1085
+ const convertValueFromKwikUIFormatToBasicFormat = (type, value) => {
1086
+ let convertedValue = value;
1087
+ switch (type) {
1088
+ case EFieldType.DATE:
1089
+ const convertDateStringToTuiDayFormat = (date) => {
1090
+ const splitDate = date.split("-");
1091
+ const tuiDay = new TuiDay(Number(splitDate[2]), // Year
1092
+ Number(splitDate[1]) - 1, // Month, Why '-1' => Because Taiga-UI Required It, So...
1093
+ Number(splitDate[0]) // Day
1094
+ );
1095
+ return tuiDay;
1096
+ };
1097
+ convertedValue = convertDateStringToTuiDayFormat(value);
1098
+ break;
1099
+ default:
1100
+ break;
1101
+ }
1102
+ return convertedValue;
1103
+ };
1104
+ const convertValueFromBasicFormatToKwikUIFormat = (field, value) => {
1105
+ let convertedValue = value;
1106
+ switch (field.type) {
1107
+ case EFieldType.RADIO:
1108
+ if (hasKey$1(value, "label")) {
1109
+ convertedValue = value.label;
1110
+ }
1111
+ else {
1112
+ convertedValue = "";
1113
+ }
1114
+ break;
1115
+ case EFieldType.DATE:
1116
+ if (isNull(value)) {
1117
+ convertedValue = "";
1118
+ }
1119
+ else {
1120
+ convertedValue = formatDateToStandardFormat(value);
1121
+ }
1122
+ break;
1123
+ case EFieldType.PHONE:
1124
+ let fieldPhone = field;
1125
+ convertedValue = value.replace(String(fieldPhone.properties.countryCode), "");
1126
+ break;
1127
+ case EFieldType.TITLE:
1128
+ break;
1129
+ default:
1130
+ if (isEmpty(value)) {
1131
+ convertedValue = "";
1132
+ }
1133
+ break;
1134
+ }
1135
+ return convertedValue;
1136
+ };
1137
+
882
1138
  class Validations {
883
1139
  constructor(field, formData, previousFormData, allFormsData, takeAction) {
884
1140
  this._field = field;
@@ -940,18 +1196,15 @@ class Validations {
940
1196
  if (hasKey$1(field, "validators") &&
941
1197
  hasKey$1(field.validators, "pattern") &&
942
1198
  isNotEmpty(field.validators.pattern)) {
943
- if (field.validators.pattern.key === EPatternKey.CUSTOM) {
944
- validators.push(Validators.pattern(field.validators.pattern.pattern));
945
- }
946
- else {
947
- validators.push(Validators.pattern(EPattern[field.validators.pattern.key]));
1199
+ if (hasKey$1(field.validators.pattern, "key")) {
1200
+ if (field.validators.pattern.key === EPatternKey.CUSTOM) {
1201
+ validators.push(Validators.pattern(field.validators.pattern.pattern));
1202
+ }
1203
+ else {
1204
+ validators.push(Validators.pattern(EPattern[field.validators.pattern.key]));
1205
+ }
948
1206
  }
949
1207
  }
950
- if (hasKey$1(field, "validators") &&
951
- hasKey$1(field.validators, "nullValidator") &&
952
- isNotEmpty(field.validators.nullValidator)) {
953
- validators.push(Validators.nullValidator(field.validators.nullValidator));
954
- }
955
1208
  return validators;
956
1209
  }
957
1210
  getFormValidationErrors(control) {
@@ -1036,7 +1289,7 @@ class KwikIDFormViewService {
1036
1289
  for (let field of fields) {
1037
1290
  if (field.type !== "title") {
1038
1291
  const defaults = new Defaults(field, allFormsData, formData, previousFormData, takeAction);
1039
- const value = yield defaults.getDefaultValue();
1292
+ const value = convertValueFromBasicFormatToKwikUIFormat(field.type, yield defaults.getDefaultValue());
1040
1293
  const validators = new Validations(field, formData, previousFormData, allFormsData, takeAction).getFieldValidators(field);
1041
1294
  formGroup.addControl(field.key, new FormControl({ value: value, disabled: field.disabled }, { validators: validators }));
1042
1295
  }
@@ -1147,150 +1400,6 @@ __decorate([
1147
1400
  log
1148
1401
  ], Apis.prototype, "validateApiCallResponse", null);
1149
1402
 
1150
- const findFieldFromKey = (fields, key) => {
1151
- const field = fields.find((field) => {
1152
- if (field.key === key) {
1153
- return field;
1154
- }
1155
- });
1156
- return field;
1157
- };
1158
- const findFieldIndexFromKey = (fields, key) => {
1159
- let fieldIndex;
1160
- fieldIndex = fields.findIndex((_) => {
1161
- return key === _.key;
1162
- });
1163
- return fieldIndex;
1164
- };
1165
- const getSearchTextOptionsFromRemoteFile = (field, childField, formGroup) => __awaiter(void 0, void 0, void 0, function* () {
1166
- const parentFieldValue = formGroup.controls[field.key].value;
1167
- // Determine the URL of the remote file to fetch
1168
- let fileUrl;
1169
- if (childField.regexToGetJsonRemoteUrlKey) {
1170
- const fileKey = parentFieldValue.match(childField.regexToGetJsonRemoteUrlKey)[0];
1171
- fileUrl = childField.jsonRemoteUrlMapping[fileKey];
1172
- }
1173
- else {
1174
- fileUrl = childField.fileUrl;
1175
- }
1176
- // Return early if there is no file URL
1177
- if (!fileUrl)
1178
- return;
1179
- // Fetch the remote file and parse its JSON data
1180
- const response = yield fetch(fileUrl);
1181
- const data = yield response.json();
1182
- // Return the data for the given parent field value
1183
- return data[parentFieldValue];
1184
- });
1185
- const getSearchTextOptionsFromFieldConfig = (field, childField, formGroup) => {
1186
- let options;
1187
- const fieldValue = formGroup.controls[field.key].value;
1188
- if (isNotEmpty(childField["json"])) {
1189
- options = childField["json"][fieldValue];
1190
- }
1191
- return options;
1192
- };
1193
- const formatSearchTextOptions = (options) => {
1194
- return options.map(({ title }) => title);
1195
- };
1196
- const formatDateToStandardFormat = (date) => {
1197
- let formattedDate;
1198
- let year = date.year;
1199
- let month = date.month;
1200
- let day = date.day;
1201
- formattedDate = `${day}-${month + 1}-${year}`;
1202
- return formattedDate;
1203
- };
1204
- function highlightFieldError(field, error) {
1205
- field.invalid = error;
1206
- field.focus = error;
1207
- // if (!error) {
1208
- // field["messages"] = field["messages"].filter(function (fieldMessage: {
1209
- // type: string;
1210
- // message: string;
1211
- // }) {
1212
- // return fieldMessage.type === "error";
1213
- // });
1214
- // }
1215
- return field;
1216
- }
1217
- const addMessage = (field, message) => {
1218
- const isDuplicateMessage = (messages, message) => {
1219
- return messages.some((fieldMessage) => {
1220
- return (fieldMessage.type === message.type &&
1221
- fieldMessage.message === message.message);
1222
- });
1223
- };
1224
- field["messages"] = [];
1225
- if (hasKey$1(field, "messages")) {
1226
- if (!isDuplicateMessage(field["messages"], message)) {
1227
- field["messages"].push({
1228
- type: message.type,
1229
- message: message.message
1230
- });
1231
- }
1232
- }
1233
- else {
1234
- field["messages"] = [{ type: message.type, message: message.message }];
1235
- }
1236
- return field;
1237
- };
1238
- const removeMessage = (field, message) => {
1239
- field["messages"] = field["messages"].filter(function (fieldMessage) {
1240
- return fieldMessage.type !== message.type;
1241
- });
1242
- return field;
1243
- };
1244
- function setFieldError(fields, errors, key, error) {
1245
- const fieldIndex = fields.findIndex((field) => {
1246
- return field.key === key;
1247
- });
1248
- const setErrorMessages = (field, errors) => {
1249
- const getErrorMessage = (fieldLabel, errorType) => {
1250
- let errorMessage = "";
1251
- switch (errorType) {
1252
- case "required":
1253
- errorMessage = `${fieldLabel} is required!`;
1254
- break;
1255
- case "pattern":
1256
- errorMessage = `${fieldLabel} has wrong pattern!`;
1257
- break;
1258
- case "email":
1259
- errorMessage = `${fieldLabel} has wrong email format!`;
1260
- break;
1261
- case "minlength":
1262
- errorMessage = `${fieldLabel} has wrong length! Required minimum length: ${field.validators.minLength}`;
1263
- break;
1264
- case "maxlength":
1265
- errorMessage = `${fieldLabel} has wrong length! Required maximum length: ${field.validators.maxLength}`;
1266
- break;
1267
- case "areEqual":
1268
- errorMessage = `${fieldLabel} must be equal!`;
1269
- break;
1270
- default:
1271
- errorMessage = `${fieldLabel}: ${"error.error_name"}: ${"error.error_value"}`;
1272
- break;
1273
- }
1274
- return errorMessage;
1275
- };
1276
- Object.keys(errors).forEach((error) => {
1277
- field = addMessage(field, {
1278
- type: "error",
1279
- message: getErrorMessage(field.label, error)
1280
- });
1281
- });
1282
- return field;
1283
- };
1284
- if (error) {
1285
- fields[fieldIndex] = setErrorMessages(fields[fieldIndex], errors);
1286
- }
1287
- else {
1288
- fields[fieldIndex]["messages"] = [];
1289
- }
1290
- fields[fieldIndex] = highlightFieldError(fields[fieldIndex], error);
1291
- return fields;
1292
- }
1293
-
1294
1403
  class KwikIDFormViewComponent {
1295
1404
  constructor(formViewService) {
1296
1405
  this.formViewService = formViewService;
@@ -1558,16 +1667,26 @@ class KwikIDFormViewComponent {
1558
1667
  handleOnClickSaveForm(e) {
1559
1668
  let formData = this.formGroup.getRawValue();
1560
1669
  for (let field of this.formFields) {
1561
- if (field.type !== "title" &&
1670
+ if (field.type !== EFieldType.TITLE) {
1671
+ if (field.hidden) {
1672
+ delete formData[field.key];
1673
+ }
1674
+ else {
1675
+ formData[field.key] = convertValueFromKwikUIFormatToBasicFormat(field, formData[field.key]);
1676
+ }
1677
+ }
1678
+ }
1679
+ for (let field of this.formFields) {
1680
+ if (field.type !== EFieldType.TITLE &&
1562
1681
  field.validation.triggers.includes("ON_SAVE")) {
1563
- const validations = new Validations(field, this.formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this));
1682
+ const validations = new Validations(field, formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this));
1564
1683
  (() => __awaiter(this, void 0, void 0, function* () {
1565
1684
  yield validations.validateField();
1566
1685
  }))();
1567
1686
  }
1568
1687
  }
1569
1688
  if (this.formGroup.invalid) {
1570
- const controls = new Validations(undefined, this.formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this)).findInvalidControlsRecursive(this.formGroup);
1689
+ const controls = new Validations(undefined, formData, this.previousFormData, this.allFormsData, this.takeAction.bind(this)).findInvalidControlsRecursive(this.formGroup);
1571
1690
  let firstFieldWithError = "";
1572
1691
  for (let control of controls) {
1573
1692
  if (control.invalid && isEmpty(firstFieldWithError)) {
@@ -1577,35 +1696,6 @@ class KwikIDFormViewComponent {
1577
1696
  }
1578
1697
  return;
1579
1698
  }
1580
- // Need to have an API Validator as well here.
1581
- // if(apiCallSuccess()) { then only proceed further, else highlight the button to click to call api}
1582
- for (let field of this.formFields) {
1583
- switch (field.type) {
1584
- case "radio":
1585
- if (hasKey$1(formData[field.key], "label")) {
1586
- formData[field.key] = formData[field.key].label;
1587
- }
1588
- else {
1589
- formData[field.key] = "";
1590
- }
1591
- break;
1592
- case "date":
1593
- if (isNull(formData[field.key])) {
1594
- formData[field.key] = "";
1595
- }
1596
- else {
1597
- formData[field.key] = formatDateToStandardFormat(formData[field.key]);
1598
- }
1599
- break;
1600
- case "title":
1601
- break;
1602
- default:
1603
- if (isEmpty(formData[field.key])) {
1604
- formData[field.key] = "";
1605
- }
1606
- break;
1607
- }
1608
- }
1609
1699
  Object.keys(formData).map((key) => {
1610
1700
  if (isEmpty(formData[key])) {
1611
1701
  formData[key] = "";
@@ -1801,7 +1891,7 @@ class KwikIDFormViewComponent {
1801
1891
  }
1802
1892
  }
1803
1893
  /** @nocollapse */ KwikIDFormViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormViewComponent, deps: [{ token: KwikIDFormViewService }], target: i0.ɵɵFactoryTarget.Component });
1804
- /** @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"] }] });
1894
+ /** @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 <hr />\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-header-container hr{width:100%}#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"] }] });
1805
1895
  __decorate([
1806
1896
  log
1807
1897
  ], KwikIDFormViewComponent.prototype, "ngOnInit", null);
@@ -1928,6 +2018,8 @@ const hasKey = (object, key) => {
1928
2018
 
1929
2019
  class KwikIDFormsListComponent {
1930
2020
  constructor() {
2021
+ this.showFormFields = {};
2022
+ this.userConfig = {};
1931
2023
  this.formsList = [];
1932
2024
  this.formsListCompleted = [];
1933
2025
  this.isMobileView = false;
@@ -1935,21 +2027,39 @@ class KwikIDFormsListComponent {
1935
2027
  this.onClickHideFormsList = new EventEmitter();
1936
2028
  this.onClickSubmitForms = new EventEmitter();
1937
2029
  this.selectedForm = "";
2030
+ this.isAllFormsCompleted = true;
2031
+ }
2032
+ ngOnInit() {
2033
+ this.isAllFormsCompleted = this.checkIsAllFormsCompleted(this.formsList);
1938
2034
  }
1939
- ngOnInit() { }
1940
2035
  ngOnChanges(changes) {
1941
2036
  const verifyChange = (key) => {
1942
2037
  return hasKey(changes, key) && !changes[key].firstChange;
1943
2038
  };
2039
+ if (verifyChange("showFormFields")) {
2040
+ this.showFormFields = changes.showFormFields.currentValue;
2041
+ }
1944
2042
  if (verifyChange("formsList")) {
1945
2043
  this.formsList = changes.formsList.currentValue;
2044
+ this.isAllFormsCompleted = this.checkIsAllFormsCompleted(this.formsList);
1946
2045
  }
1947
2046
  if (verifyChange("isMobileView")) {
1948
2047
  this.isMobileView = changes.isMobileView.currentValue;
1949
2048
  }
1950
2049
  }
2050
+ checkIsAllFormsCompleted(formsList) {
2051
+ let isAllFormsCompleted = true;
2052
+ for (let forms of formsList) {
2053
+ if (forms.status !== "completed") {
2054
+ isAllFormsCompleted = false;
2055
+ break;
2056
+ }
2057
+ }
2058
+ return isAllFormsCompleted;
2059
+ }
1951
2060
  handleOnClickSetActiveForm(selectedForm) {
1952
- if (this.selectedForm !== selectedForm) {
2061
+ if (this.selectedForm !== selectedForm ||
2062
+ (this.isAllFormsCompleted && !this.showFormFields)) {
1953
2063
  this.selectedForm = selectedForm;
1954
2064
  this.onClickSetActiveForm.emit(selectedForm);
1955
2065
  }
@@ -1959,7 +2069,7 @@ class KwikIDFormsListComponent {
1959
2069
  }
1960
2070
  }
1961
2071
  /** @nocollapse */ KwikIDFormsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1962
- /** @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"] }] });
2072
+ /** @nocollapse */ KwikIDFormsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.16", type: KwikIDFormsListComponent, selector: "kwikid-forms-list", inputs: { showFormFields: "showFormFields", userConfig: "userConfig", 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 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=\"{{ this.userConfig.theme.clientLogo }}\"\r\n [ngClass]=\"'large-icon'\"\r\n />\r\n </div>\r\n </div>\r\n <hr />\r\n </div>\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 === 'editable' && !form.disabled\"\r\n [class.locked]=\"form.status === 'locked' && form.disabled\"\r\n (click)=\"\r\n form.status === 'locked' && 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 </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 </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 </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}}.kwikid-form-header{height:70px;z-index:6}.kwikid-form-header hr{width:calc(100% - 1rem);margin-left:auto;margin-right:auto}#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:100%;height:50px}#uf-header #uf-header-logo-container #uf-header-logo.large-icon{width:100%;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}\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.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1963
2073
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: KwikIDFormsListComponent, decorators: [{
1964
2074
  type: Component,
1965
2075
  args: [{
@@ -1967,7 +2077,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
1967
2077
  templateUrl: "./forms-list.component.html",
1968
2078
  styleUrls: ["./forms-list.component.scss"]
1969
2079
  }]
1970
- }], ctorParameters: function () { return []; }, propDecorators: { formsList: [{
2080
+ }], ctorParameters: function () { return []; }, propDecorators: { showFormFields: [{
2081
+ type: Input
2082
+ }], userConfig: [{
2083
+ type: Input
2084
+ }], formsList: [{
1971
2085
  type: Input
1972
2086
  }], formsListCompleted: [{
1973
2087
  type: Input
@@ -2195,7 +2309,6 @@ class Converter {
2195
2309
  return { field: field, connectedFieldMapping: connectedFieldMapping };
2196
2310
  };
2197
2311
  const getConnectedElementParentFieldMapping = (field, connectedFieldMapping) => {
2198
- console.log(field, connectedFieldMapping);
2199
2312
  if (hasKey$2(connectedFieldMapping["child"], field.key)) {
2200
2313
  for (let connectedParentKey of connectedFieldMapping["child"][field.key]) {
2201
2314
  if (hasKey$2(connectedFieldMapping["parent"], connectedParentKey["key"])) {
@@ -2231,37 +2344,48 @@ class Converter {
2231
2344
  return field;
2232
2345
  };
2233
2346
  const updateFieldValidatorConfig = (field) => {
2347
+ var _a, _b, _c, _d, _e;
2234
2348
  if (field.type !== "title") {
2235
2349
  const validators = hasKey$2(field, "validators") ? field.validators : {};
2236
2350
  field = this.setMissingFieldKeyValue(field, "validators", {});
2237
2351
  field = this.setFieldKeyValue(field, "validators", Object.assign(Object.assign({}, field["validators"]), { min: hasKey$2(validators, "min")
2238
- ? validators.min
2352
+ ? isNotEmpty$1(validators.min)
2353
+ ? Number(validators.min)
2354
+ : null
2239
2355
  : hasKey$2(field, "min")
2240
- ? field.min
2241
- : undefined, max: hasKey$2(validators, "max")
2242
- ? validators.max
2356
+ ? Number(field.min)
2357
+ : null, max: hasKey$2(validators, "max")
2358
+ ? isNotEmpty$1(validators.max)
2359
+ ? Number(validators.max)
2360
+ : null
2243
2361
  : hasKey$2(field, "max")
2244
- ? field.max
2245
- : undefined, required: hasKey$2(validators, "required")
2246
- ? validators.required
2362
+ ? Number(field.max)
2363
+ : null, required: hasKey$2(validators, "required")
2364
+ ? Boolean(validators.required)
2247
2365
  : hasKey$2(field, "required")
2248
- ? field.required
2249
- : undefined, minLength: hasKey$2(validators, "minLength")
2250
- ? validators.minLength
2366
+ ? Boolean(field.required)
2367
+ : false, minLength: hasKey$2(validators, "minLength")
2368
+ ? isNotEmpty$1(validators.minLength)
2369
+ ? Number(validators.minLength)
2370
+ : null
2251
2371
  : hasKey$2(field, "minLength")
2252
- ? field.minLength
2253
- : undefined, maxLength: hasKey$2(validators, "maxLength")
2254
- ? validators.maxLength
2372
+ ? Number(field.minLength)
2373
+ : null, maxLength: hasKey$2(validators, "maxLength")
2374
+ ? isNotEmpty$1(validators.maxLength)
2375
+ ? Number(validators.maxLength)
2376
+ : null
2255
2377
  : hasKey$2(field, "length")
2256
- ? field.length
2378
+ ? Number(field.length)
2257
2379
  : hasKey$2(field, "maxLength")
2258
- ? field.maxLength
2259
- : undefined, pattern: hasKey$2(field.validators, "pattern")
2260
- ? field.validators.pattern
2380
+ ? Number(field.maxLength)
2381
+ : null, pattern: hasKey$2(validators, "pattern")
2382
+ ? isNotEmpty$1(validators.pattern)
2383
+ ? validators.pattern
2384
+ : undefined
2261
2385
  : hasKey$2(field, "pattern")
2262
- ? field.pattern
2386
+ ? { key: "CUSTOM", pattern: String(field.pattern) }
2263
2387
  : hasKey$2(field, "regex")
2264
- ? field.regex
2388
+ ? { key: "CUSTOM", pattern: String(field.regex) }
2265
2389
  : undefined }));
2266
2390
  delete field.min;
2267
2391
  delete field.max;
@@ -2271,6 +2395,29 @@ class Converter {
2271
2395
  delete field.maxLength;
2272
2396
  delete field.pattern;
2273
2397
  delete field.regex;
2398
+ switch (field.type) {
2399
+ case "text":
2400
+ delete field.validators.min;
2401
+ delete field.validators.max;
2402
+ break;
2403
+ default:
2404
+ break;
2405
+ }
2406
+ if (isEmpty$1((_a = field.validators) === null || _a === void 0 ? void 0 : _a.min)) {
2407
+ delete field.validators.min;
2408
+ }
2409
+ if (isEmpty$1((_b = field.validators) === null || _b === void 0 ? void 0 : _b.max)) {
2410
+ delete field.validators.min;
2411
+ }
2412
+ if (isEmpty$1((_c = field.validators) === null || _c === void 0 ? void 0 : _c.minLength)) {
2413
+ delete field.validators.minLength;
2414
+ }
2415
+ if (isEmpty$1((_d = field.validators) === null || _d === void 0 ? void 0 : _d.maxLength)) {
2416
+ delete field.validators.maxLength;
2417
+ }
2418
+ if (isEmpty$1((_e = field.validators) === null || _e === void 0 ? void 0 : _e.pattern)) {
2419
+ delete field.validators.pattern;
2420
+ }
2274
2421
  }
2275
2422
  return field;
2276
2423
  };
@@ -2623,6 +2770,7 @@ class KwikIDFormsRendererComponent {
2623
2770
  this.hostElement = hostElement;
2624
2771
  this.formsData = {};
2625
2772
  this.apiCallResponse = {};
2773
+ this.onClickSubmit = new EventEmitter();
2626
2774
  this.getFormData = new EventEmitter();
2627
2775
  this.onClickApiCall = new EventEmitter();
2628
2776
  this.loading = false;
@@ -2712,7 +2860,9 @@ class KwikIDFormsRendererComponent {
2712
2860
  }
2713
2861
  // forms-list listener
2714
2862
  handleOnClickSetActiveForm(selectedForm) {
2863
+ var _a;
2715
2864
  return __awaiter(this, void 0, void 0, function* () {
2865
+ this.showForm = false;
2716
2866
  const activeFormConfig = this.rendererService.formsList.find((form) => {
2717
2867
  if (form.key === selectedForm) {
2718
2868
  return form;
@@ -2720,7 +2870,8 @@ class KwikIDFormsRendererComponent {
2720
2870
  });
2721
2871
  let formConfig = yield this.rendererService.fetchFormConfig(activeFormConfig.formContent.url);
2722
2872
  formConfig = new Converter().convertFormConfig(formConfig);
2723
- this.rendererService.setActiveFormData(this.rendererService.allFormsData[formConfig.key]);
2873
+ const activeFormData = (_a = this.rendererService.allFormsData[formConfig.key]) !== null && _a !== void 0 ? _a : {};
2874
+ this.rendererService.setActiveFormData(activeFormData);
2724
2875
  this.rendererService.setActiveFormConfig(Object.assign(Object.assign({}, activeFormConfig), formConfig));
2725
2876
  if (this.hostElement.nativeElement.offsetWidth < 600) {
2726
2877
  this.showFormSections = false;
@@ -2736,6 +2887,7 @@ class KwikIDFormsRendererComponent {
2736
2887
  // forms-list listener
2737
2888
  handleOnClickSubmitForms(e) {
2738
2889
  console.log(e);
2890
+ this.onClickSubmit.emit(e);
2739
2891
  }
2740
2892
  // form-view listener
2741
2893
  handleOnClickApiCall(e) {
@@ -2749,20 +2901,20 @@ class KwikIDFormsRendererComponent {
2749
2901
  }
2750
2902
  // form-view listener
2751
2903
  handleOnClickSaveForm(e) {
2904
+ this.rendererService.setActiveFormData({});
2752
2905
  this.getFormData.emit({
2753
2906
  [this.rendererService.activeFormConfig.key]: e["data"]
2754
2907
  });
2755
2908
  }
2756
2909
  // form-view listener
2757
2910
  handleOnClickViewForms(e) {
2758
- console.log(e);
2759
2911
  this.showFormSections = true;
2760
2912
  this.showForm = false;
2761
2913
  this.showFormFields = false;
2762
2914
  }
2763
2915
  }
2764
2916
  /** @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 });
2765
- /** @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: [
2917
+ /** @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: { onClickSubmit: "onClickSubmit", getFormData: "getFormData", onClickApiCall: "onClickApiCall" }, host: { listeners: { "window:resize": "windowResizeWatcher($event)" } }, providers: [KwikIDRendererService], usesOnChanges: true, ngImport: i0, template: "<div ngClass=\"kwikid-renderer\">\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 [showFormFields]=\"this.showFormFields\"\r\n [userConfig]=\"this.userConfig\"\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-layout-container{display:flex;flex-direction:row;padding:0 1rem;height:100%;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: ["showFormFields", "userConfig", "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: [
2766
2918
  trigger("panelInOut", [
2767
2919
  transition(":enter", [
2768
2920
  style({ transform: "translateY(100%)" }),
@@ -2801,6 +2953,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
2801
2953
  type: Input
2802
2954
  }], apiCallResponse: [{
2803
2955
  type: Input
2956
+ }], onClickSubmit: [{
2957
+ type: Output
2804
2958
  }], getFormData: [{
2805
2959
  type: Output
2806
2960
  }], onClickApiCall: [{