UNPKG

kwikid-components-react

Version:

KwikID's Component Library in React

635 lines (634 loc) 27.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Converter = void 0; var _kwikidToolkit = require("kwikid-toolkit"); var _formViewFields = require("../definitions/form-view.fields.definition"); var _configConverter = require("./config-converter.constants"); var _configConverter2 = require("./config-converter.helper"); class Converter { updateFormConfigMiscellaneous(formConfig, args) { if ((0, _kwikidToolkit.checkObjectKeyExists)(args, "formsListLength")) { formConfig = (0, _kwikidToolkit.setValueToObjectPath)(formConfig, "formsListLength", args.formsListLength); } return formConfig; } updateFormConfigFromUserConfig(formConfig, userConfig) { if ((0, _kwikidToolkit.isNotEmptyValue)(userConfig)) { if ((0, _kwikidToolkit.checkObjectKeyExists)(userConfig, "theme")) { if ((0, _kwikidToolkit.checkObjectKeyExists)(userConfig.theme, "clientLogo")) { (0, _kwikidToolkit.setValueToObjectPath)(formConfig, "properties.header.logo.src", userConfig.theme.clientLogo); } } } return formConfig; } updateFormConfigProperties(formConfig) { var _ref, _formConfig$title; const formViewProperties = { header: { logo: { src: "", alt: "Logo", hidden: false, styles: "" }, backButton: { mode: "TABBED", bypassConfirmation: false, hidden: true }, title: { hidden: false, label: (_ref = (_formConfig$title = formConfig === null || formConfig === void 0 ? void 0 : formConfig.title) !== null && _formConfig$title !== void 0 ? _formConfig$title : formConfig === null || formConfig === void 0 ? void 0 : formConfig.props.title) !== null && _ref !== void 0 ? _ref : "Form", styles: "" }, steps: { hidden: false, styles: "" } }, main: { styles: "" }, footer: { viewFormsButton: { bypassConfirmation: false, hidden: false, label: "View Forms" }, saveButton: { hidden: false, label: "Save" } }, isUnsavedDataAlertEnabled: false }; if ((0, _kwikidToolkit.checkObjectKeyExists)(formConfig, "properties")) { formConfig.properties = (0, _kwikidToolkit.getObjectDeepCopy)((0, _kwikidToolkit.mergeObjects)(formViewProperties, formConfig.properties)); } else { formConfig.properties = formViewProperties; } return formConfig; } convertFormConfig(formConfig) { const formatOnFieldType = field => { const updateFormFieldProperties = field => { if ((0, _kwikidToolkit.checkObjectKeyExists)(_configConverter.FIELD_PROPERTIES, field.type)) { field.properties = (0, _kwikidToolkit.mergeObjects)((0, _kwikidToolkit.getObjectDeepCopy)(_configConverter.FIELD_PROPERTIES[field.type]), field.properties); } return field; }; const updateFormFieldStyles = field => { if ((0, _kwikidToolkit.checkObjectKeyExists)(_configConverter.FIELD_STYLES, field.type)) { field.styles = (0, _kwikidToolkit.mergeObjects)((0, _kwikidToolkit.getObjectDeepCopy)(_configConverter.FIELD_STYLES[field.type]), field.styles); } return field; }; const formatFieldTypeHtml = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, false); return field; }; const formatFieldTypeTitle = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, false); return field; }; const formatFieldTypeButton = field => { field = (0, _configConverter2.setMissingFieldKeyValue)(field, "hidden", false); field = (0, _configConverter2.setFieldAsFormElement)(field, false); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeText = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); if ((0, _kwikidToolkit.checkObjectKeyExists)(field.properties, "case")) { field.properties.textCase = field.properties.case; } return field; }; const formatFieldTypePassword = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeEmail = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeStarRating = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeTextarea = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); if ((0, _kwikidToolkit.checkObjectKeyExists)(field.properties, "case")) { field.properties.textCase = field.properties.case; } return field; }; const formatFieldTypeCheckbox = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeNumber = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); if ((0, _kwikidToolkit.checkObjectKeyExists)(field, "key")) { if (field.key === "aadhaar_number") { field = (0, _configConverter2.setFieldKeyValue)(field, "type", "aadhaar_number"); } if (field.key === "contact_number") { field = (0, _configConverter2.setFieldKeyValue)(field, "type", "phone"); } if (field.type === "phone" || field.type === "number") { field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); } } return field; }; const formatFieldTypeImage = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeDateTime = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field.properties = (0, _kwikidToolkit.getObjectDeepCopy)((0, _kwikidToolkit.mergeObjects)((0, _kwikidToolkit.getObjectDeepCopy)(_configConverter.FIELD_PROPERTIES[field.type]), { max: (0, _configConverter2.getMaxDate)(field), min: (0, _configConverter2.getMinDate)(field) }, field.properties)); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeDate = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field.properties = (0, _kwikidToolkit.getObjectDeepCopy)((0, _kwikidToolkit.mergeObjects)((0, _kwikidToolkit.getObjectDeepCopy)(_configConverter.FIELD_PROPERTIES[field.type]), { max: (0, _configConverter2.getMaxDate)(field), min: (0, _configConverter2.getMinDate)(field) }, field.properties)); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeTime = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field.properties = (0, _kwikidToolkit.getObjectDeepCopy)((0, _kwikidToolkit.mergeObjects)((0, _kwikidToolkit.getObjectDeepCopy)(_configConverter.FIELD_PROPERTIES[field.type]), { max: (0, _configConverter2.getMaxDate)(field), min: (0, _configConverter2.getMinDate)(field) }, field.properties)); field = updateFormFieldStyles(field); return field; }; const formatFieldTypePhone = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeRadio = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); field.options = field.options.map(x => { if (typeof x === "string" || typeof x === "number") { return { label: x, disabled: false, description: "" }; } if ((0, _kwikidToolkit.checkObjectKeyExists)(x, "label") && (0, _kwikidToolkit.checkObjectKeyExists)(x, "disabled") && (0, _kwikidToolkit.checkObjectKeyExists)(x, "description")) { return x; } if (!(0, _kwikidToolkit.checkObjectKeyExists)(x, "disabled")) { x = { ...x, disabled: false }; } if (!(0, _kwikidToolkit.checkObjectKeyExists)(x, "description")) { x = { ...x, description: false }; } return x; }); return field; }; const formatFieldTypeSlider = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeSelect = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); if ((0, _kwikidToolkit.checkObjectKeyExists)(field.properties, "searchable")) { field.properties.isSearchable = field.properties.searchable; } return field; }; const formatFieldTypeMultiSelect = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); if ((0, _kwikidToolkit.checkObjectKeyExists)(field.properties, "searchable")) { field.properties.isSearchable = field.properties.searchable; } return field; }; const formatFieldTypeApi = field => { field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); if (!(0, _kwikidToolkit.checkObjectKeyExists)(field, "showLoader")) { field = (0, _configConverter2.setFieldKeyValue)(field, "showLoader", false); } if (!(0, _kwikidToolkit.checkObjectKeyExists)(field, "api")) { const fieldApiDefaults = { url: "", request: {}, response: {}, status: { value: "default", labels: { default: "Call API", loading: "Call API", retry: "Retry API", success: "API Success", failed: "API Failed" } } }; field.api = (0, _kwikidToolkit.getObjectDeepCopy)((0, _kwikidToolkit.mergeObjects)(fieldApiDefaults, fieldApiDefaults)); } if (!(0, _kwikidToolkit.checkObjectKeyExists)(field.api, "request") && !(0, _kwikidToolkit.checkObjectKeyExists)(field.api, "entrypoint")) { const apiEntrypoint = { triggers: ["ON_API_CALL"], rules: [], actions: [{ id: "1", key: "API_CALL", condition: "true", props: { fieldKey: field.key, apiKey: field.api.endpoints[0].apiKey } }] }; field.entrypoint = (0, _kwikidToolkit.getObjectDeepCopy)((0, _kwikidToolkit.mergeObjects)(apiEntrypoint, field.api)); } return field; }; const formatFieldTypeOtp = field => { var _field$properties$otp, _field, _field$properties; field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldStyles(field); field.properties = (0, _kwikidToolkit.getObjectDeepCopy)((0, _kwikidToolkit.mergeObjects)((0, _kwikidToolkit.getObjectDeepCopy)(_configConverter.FIELD_PROPERTIES[field.type]), { mask: new Array((_field$properties$otp = (_field = field) === null || _field === void 0 ? void 0 : (_field$properties = _field.properties) === null || _field$properties === void 0 ? void 0 : _field$properties.otpLength) !== null && _field$properties$otp !== void 0 ? _field$properties$otp : 4).fill("#").join(" ") }, field.properties)); return field; }; const formatFieldTypeAadhaarNumber = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeFile = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; const formatFieldTypeCapture = field => { field = (0, _configConverter2.setFieldKeyHidden)(field); field = (0, _configConverter2.setFieldAsFormElement)(field, true); field = updateFormFieldProperties(field); field = updateFormFieldStyles(field); return field; }; switch (field.type) { case _formViewFields.EFieldType.HTML: field = formatFieldTypeHtml(field); break; case _formViewFields.EFieldType.TITLE: field = formatFieldTypeTitle(field); break; case _formViewFields.EFieldType.BUTTON: field = formatFieldTypeButton(field); break; case _formViewFields.EFieldType.TEXT: field = formatFieldTypeText(field); break; case _formViewFields.EFieldType.PASSWORD: field = formatFieldTypePassword(field); break; case _formViewFields.EFieldType.EMAIL: field = formatFieldTypeEmail(field); break; case _formViewFields.EFieldType.TEXTAREA: field = formatFieldTypeTextarea(field); break; case _formViewFields.EFieldType.CHECKBOX: field = formatFieldTypeCheckbox(field); break; case _formViewFields.EFieldType.NUMBER: field = formatFieldTypeNumber(field); break; case _formViewFields.EFieldType.PREVIEW_IMAGE: field = (0, _configConverter2.setFieldKeyValue)(field, "type", "image"); field = formatFieldTypeImage(field); break; case _formViewFields.EFieldType.IMAGE: field = formatFieldTypeImage(field); break; case _formViewFields.EFieldType.DATETIME: field = formatFieldTypeDateTime(field); break; case _formViewFields.EFieldType.DATE: field = formatFieldTypeDate(field); break; case _formViewFields.EFieldType.TIME: field = formatFieldTypeTime(field); break; case _formViewFields.EFieldType.PHONE: field = formatFieldTypePhone(field); break; case _formViewFields.EFieldType.RADIO: field = formatFieldTypeRadio(field); break; case _formViewFields.EFieldType.SLIDER: field = formatFieldTypeSlider(field); break; case "search-text": field = (0, _configConverter2.setFieldKeyValue)(field, "type", "select"); field = formatFieldTypeSelect(field); break; case _formViewFields.EFieldType.DROPDOWN_WITH_SEARCH: field = (0, _configConverter2.setFieldKeyValue)(field, "type", "select"); field = formatFieldTypeSelect(field); break; case _formViewFields.EFieldType.SELECT: field = formatFieldTypeSelect(field); break; case _formViewFields.EFieldType.MULTISELECT: field = formatFieldTypeMultiSelect(field); break; case _formViewFields.EFieldType.API_CALL: field = (0, _configConverter2.setFieldKeyValue)(field, "type", "api"); field = formatFieldTypeApi(field); break; case _formViewFields.EFieldType.API: field = formatFieldTypeApi(field); break; case _formViewFields.EFieldType.OTP: field = formatFieldTypeOtp(field); break; case _formViewFields.EFieldType.AADHAAR_NUMBER: field = formatFieldTypeAadhaarNumber(field); break; case _formViewFields.EFieldType.FILE: field = formatFieldTypeFile(field); break; case _formViewFields.EFieldType.CAPTURE: field = formatFieldTypeCapture(field); break; case _formViewFields.EFieldType.STAR_RATING: field = formatFieldTypeStarRating(field); break; default: break; } return field; }; const updateFieldValidators = field => { if (field.isFormElement) { var _field$validators, _field$validators2, _field$validators3, _field$validators4, _field$validators5; const validators = (0, _kwikidToolkit.checkObjectKeyExists)(field, "validators") ? field.validators : {}; field = (0, _configConverter2.setMissingFieldKeyValue)(field, "validators", {}); field = (0, _configConverter2.setFieldKeyValue)(field, "validators", { ...field.validators, min: (0, _kwikidToolkit.checkObjectKeyExists)(validators, "min") ? (0, _kwikidToolkit.isNotEmptyValue)(validators.min) ? Number(validators.min) : null : (0, _kwikidToolkit.checkObjectKeyExists)(field, "min") ? Number(field.min) : null, max: (0, _kwikidToolkit.checkObjectKeyExists)(validators, "max") ? (0, _kwikidToolkit.isNotEmptyValue)(validators.max) ? Number(validators.max) : null : (0, _kwikidToolkit.checkObjectKeyExists)(field, "max") ? Number(field.max) : null, required: (0, _kwikidToolkit.checkObjectKeyExists)(validators, "required") ? Boolean(validators.required) : (0, _kwikidToolkit.checkObjectKeyExists)(field, "required") ? Boolean(field.required) : false, minLength: (0, _kwikidToolkit.checkObjectKeyExists)(validators, "minLength") ? (0, _kwikidToolkit.isNotEmptyValue)(validators.minLength) ? Number(validators.minLength) : null : (0, _kwikidToolkit.checkObjectKeyExists)(field, "minLength") ? Number(field.minLength) : null, maxLength: (0, _kwikidToolkit.checkObjectKeyExists)(validators, "maxLength") ? (0, _kwikidToolkit.isNotEmptyValue)(validators.maxLength) ? Number(validators.maxLength) : null : (0, _kwikidToolkit.checkObjectKeyExists)(field, "length") ? Number(field.length) : (0, _kwikidToolkit.checkObjectKeyExists)(field, "maxLength") ? Number(field.maxLength) : null, pattern: (0, _kwikidToolkit.checkObjectKeyExists)(validators, "pattern") ? (0, _kwikidToolkit.isNotEmptyValue)(validators.pattern) ? validators.pattern : undefined : (0, _kwikidToolkit.checkObjectKeyExists)(field, "pattern") ? { key: "CUSTOM", pattern: String(field.pattern) } : (0, _kwikidToolkit.checkObjectKeyExists)(field, "regex") ? { key: "CUSTOM", pattern: String(field.regex) } : undefined }); delete field.min; delete field.max; delete field.required; delete field.minLength; delete field.length; delete field.maxLength; delete field.pattern; delete field.regex; switch (field.type) { case _formViewFields.EFieldType.TEXT: delete field.validators.min; delete field.validators.max; break; case _formViewFields.EFieldType.CHECKBOX: delete field.validators.min; delete field.validators.max; break; case _formViewFields.EFieldType.PREVIEW_IMAGE: delete field.validators.min; delete field.validators.max; delete field.validators.minLength; delete field.validators.maxLength; break; case _formViewFields.EFieldType.FILE: delete field.validators.min; delete field.validators.max; delete field.validators.minLength; delete field.validators.maxLength; delete field.validators.pattern; break; case _formViewFields.EFieldType.CAPTURE: delete field.validators.min; delete field.validators.max; delete field.validators.minLength; delete field.validators.maxLength; delete field.validators.pattern; break; default: break; } if ((0, _kwikidToolkit.isEmptyValue)((_field$validators = field.validators) === null || _field$validators === void 0 ? void 0 : _field$validators.min)) { delete field.validators.min; } if ((0, _kwikidToolkit.isEmptyValue)((_field$validators2 = field.validators) === null || _field$validators2 === void 0 ? void 0 : _field$validators2.max)) { delete field.validators.min; } if ((0, _kwikidToolkit.isEmptyValue)((_field$validators3 = field.validators) === null || _field$validators3 === void 0 ? void 0 : _field$validators3.minLength)) { delete field.validators.minLength; } if ((0, _kwikidToolkit.isEmptyValue)((_field$validators4 = field.validators) === null || _field$validators4 === void 0 ? void 0 : _field$validators4.maxLength)) { delete field.validators.maxLength; } if ((0, _kwikidToolkit.isEmptyValue)((_field$validators5 = field.validators) === null || _field$validators5 === void 0 ? void 0 : _field$validators5.pattern)) { delete field.validators.pattern; } field.focus = false; field.invalid = false; } return field; }; const updateFieldDefaultValue = field => { if (field.isFormElement) { if ((0, _kwikidToolkit.checkObjectKeyExists)(field, "defaultValue")) { return field; } if ((0, _kwikidToolkit.checkObjectPathExists)(field, "default.value.sources")) { return field; } if (!(0, _kwikidToolkit.checkObjectPathExists)(field, "default.value.sources")) { const defaultValue = { is_found: false, value: "", sources: [{ key: "OBJECT", props: { object: { key: "FORM_DATA", path: `$.${field.key}` } }, value: "", validation: { is_valid: false, triggers: ["ON_INIT"], rules: [], actions: [{ id: "1", key: "SET_FIELD_DEFAULT_VALUE", condition: "1", props: { value: { source: { key: "OBJECT", props: { object: { key: "FORM_DATA", path: `$.${field.key}` } } } } } }] } }] }; field = (0, _kwikidToolkit.setValueToObjectPath)(field, "default.value", defaultValue); return field; } delete field.defaultVal; delete field.defaultValue; } return field; }; const updateFieldDisability = field => { field = (0, _kwikidToolkit.setMissingKeyValue)(field, "disabled", false); return field; }; const updateFieldMessages = field => { if (field.isFormElement) { field = (0, _configConverter2.setMissingFieldKeyValue)(field, "messages", []); } return field; }; const updateFieldResetButton = field => { if (field.isFormElement) { if ((0, _kwikidToolkit.checkObjectKeyExists)(field, "action") && field.action === "reset" && (0, _kwikidToolkit.checkObjectKeyExists)(field, "fields")) { field = (0, _configConverter2.setFieldKeyValue)(field, "reset", { fields: field.fields }); } } return field; }; const setFormFields = (formConfig, fields) => { if ((0, _kwikidToolkit.checkObjectKeyExists)(formConfig, "multiForm")) { formConfig.multiForm.fields = fields; } else { formConfig.fields = fields; } return formConfig; }; const setFormFieldGroups = (formConfig, groups) => { formConfig.fieldGroups = groups; return formConfig; }; const updateFormFieldGroups = (fieldGroups, field) => { if ((0, _kwikidToolkit.checkObjectKeyExists)(field, "groupKey")) { if ((0, _kwikidToolkit.checkObjectKeyExists)(fieldGroups, field.groupKey)) { fieldGroups[field.groupKey].push(field.key); } else { fieldGroups[field.groupKey] = [field.key]; } } return fieldGroups; }; const fields = (0, _configConverter2.getFormFields)(formConfig); let fieldGroups = {}; for (let field of fields) { field = formatOnFieldType(field); field = updateFieldDisability(field); fieldGroups = updateFormFieldGroups(fieldGroups, field); field = updateFieldDefaultValue(field); field = updateFieldValidators(field); field = updateFieldResetButton(field); field = updateFieldMessages(field); } formConfig = setFormFieldGroups(formConfig, fieldGroups); formConfig = setFormFields(formConfig, fields); return formConfig; } } exports.Converter = Converter;