UNPKG

kwikid-components-react

Version:

KwikID's Component Library in React

281 lines (280 loc) 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeFormFieldMessage = exports.highlightFormFieldError = exports.getFormFieldIndexByKey = exports.getFormFieldByKey = exports.filterDuplicatesMediaFiles = exports.filterDuplicatesFiles = exports.convertFormFieldValueToStandardFormat = exports.convertFormFieldValueToKwikUIFormat = exports.convertFormFieldTypeDateToStandardFormat = exports.convertFormFieldTypeDateToKwikUIFormat = exports.convertFormFieldEmptyValueToKwikUIFormat = exports.appendFormFieldMessage = void 0; exports.showFormFieldError = showFormFieldError; var _kwikidToolkit = require("kwikid-toolkit"); var _moment = _interopRequireDefault(require("moment")); var _formViewFields = require("../definitions/form-view.fields.definition"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const getFormFieldByKey = (fields, key) => { const field = fields.find(field => { if (field.key === key) { return field; } }); return field; }; exports.getFormFieldByKey = getFormFieldByKey; const getFormFieldIndexByKey = (fields, key) => { let fieldIndex; fieldIndex = fields.findIndex(_ => { return key === _.key; }); return fieldIndex; }; exports.getFormFieldIndexByKey = getFormFieldIndexByKey; const highlightFormFieldError = (field, error) => { field.invalid = error; field.focus = error; return field; }; exports.highlightFormFieldError = highlightFormFieldError; const appendFormFieldMessage = (field, message) => { const hasDuplicateMessage = (messages, message) => { return messages.some(fieldMessage => { return fieldMessage.type === message.type && fieldMessage.message === message.message; }); }; field.messages = []; if ((0, _kwikidToolkit.checkObjectKeyExists)(field, "messages")) { if (!hasDuplicateMessage(field.messages, message)) { field.messages.push({ type: message.type, message: message.message }); } } else { field.messages = [{ type: message.type, message: message.message }]; } return field; }; exports.appendFormFieldMessage = appendFormFieldMessage; const filterDuplicatesMediaFiles = array => { const uniqueFiles = new Set(); return array.filter(mediaFile => { if (!uniqueFiles.has(mediaFile)) { uniqueFiles.add(mediaFile); return true; } return false; }); }; exports.filterDuplicatesMediaFiles = filterDuplicatesMediaFiles; const filterDuplicatesFiles = array => { const uniqueFiles = new Set(); return array.filter(file => { const fileKey = "".concat(file.name, "-").concat(file.size); if (!uniqueFiles.has(fileKey)) { uniqueFiles.add(fileKey); return true; } return false; }); }; exports.filterDuplicatesFiles = filterDuplicatesFiles; const removeFormFieldMessage = (field, message) => { field.messages = field.messages.filter(fieldMessage => { return fieldMessage.type !== message.type; }); return field; }; exports.removeFormFieldMessage = removeFormFieldMessage; function showFormFieldError(fields, errors, key, error) { const fieldIndex = fields.findIndex(field => { return field.key === key; }); const setErrorMessages = (field, errors) => { const getErrorMessage = (fieldLabel, errorType) => { let errorMessage = ""; switch (errorType) { case "required": errorMessage = "".concat(fieldLabel, " is required!"); break; case "email": errorMessage = "".concat(fieldLabel, " has wrong email format!"); break; case "min": errorMessage = "".concat(fieldLabel, " has wrong value! Minimum value: ").concat(field.validators.min); break; case "minlength": errorMessage = "".concat(fieldLabel, " has wrong length! Required minimum length: ").concat(field.validators.minLength); break; case "max": errorMessage = "".concat(fieldLabel, " has wrong value! Maximum value: ").concat(field.validators.maxLength); break; case "maxlength": errorMessage = "".concat(fieldLabel, " has wrong length! Required maximum length: ").concat(field.validators.maxLength); break; case "areEqual": errorMessage = "".concat(fieldLabel, " must be equal!"); break; case "pattern": errorMessage = "".concat(fieldLabel, " is in incorrect format!"); break; case "onlyWhitespaces": errorMessage = "".concat(fieldLabel, " can't contain only empty spaces!"); break; default: errorMessage = "".concat(fieldLabel, ": ").concat(errorType); break; } return errorMessage; }; Object.keys(errors).forEach(error => { field = appendFormFieldMessage(field, { type: "error", message: getErrorMessage(field.label, error) }); }); return field; }; if (error) { fields[fieldIndex] = setErrorMessages(fields[fieldIndex], errors); } else { fields[fieldIndex].messages = []; } fields[fieldIndex] = highlightFormFieldError(fields[fieldIndex], error); return fields; } const convertFormFieldTypeDateToKwikUIFormat = date => { if ((0, _kwikidToolkit.isEmptyValue)(date)) { return ""; } const formattedDate = (0, _moment.default)(date, "DD-MM-YYYY"); return formattedDate; }; exports.convertFormFieldTypeDateToKwikUIFormat = convertFormFieldTypeDateToKwikUIFormat; const convertFormFieldTypeDateToStandardFormat = date => { if (_moment.default.isMoment(date)) { const formattedDate = (0, _moment.default)(date).format("DD-MM-YYYY"); return formattedDate; } if (date instanceof Date) { const formattedDate = "".concat(date.getDate().toString().padStart(2, "0"), "-").concat((date.getMonth() + 1).toString().padStart(2, "0"), "-").concat(date.getFullYear()); return formattedDate; } return date; }; exports.convertFormFieldTypeDateToStandardFormat = convertFormFieldTypeDateToStandardFormat; const convertFormFieldValueToStandardFormat = (field, value) => { let convertedValue = value; if ((0, _kwikidToolkit.isNotEmptyValue)(value)) { switch (field.type) { case _formViewFields.EFieldType.DATE: convertedValue = convertFormFieldTypeDateToStandardFormat(value); break; case _formViewFields.EFieldType.RADIO: if (!(0, _kwikidToolkit.isEmptyObject)(value) && (0, _kwikidToolkit.checkObjectKeyExists)(value, "value")) { convertedValue = value.value; } break; case _formViewFields.EFieldType.SELECT: if (!(0, _kwikidToolkit.isEmptyObject)(value) && (0, _kwikidToolkit.checkObjectKeyExists)(value, "value")) { convertedValue = value.value; } break; case _formViewFields.EFieldType.MULTISELECT: if ((0, _kwikidToolkit.isNotEmptyValue)(value) && Array.isArray(value)) { const filteredMultiSelectValues = value.filter(Boolean).map(singleValue => { if (!(0, _kwikidToolkit.isEmptyObject)(singleValue) && (0, _kwikidToolkit.checkObjectKeyExists)(singleValue, "value")) { return singleValue.value; } }).filter(Boolean); if ((0, _kwikidToolkit.isNotEmptyValue)(filteredMultiSelectValues)) { convertedValue = filteredMultiSelectValues; } } break; case _formViewFields.EFieldType.PHONE: const phoneField = field; if (phoneField.properties.removeCountryCodeFromValue) { convertedValue = value.toString().replace(phoneField.properties.countryCode, ""); } break; case _formViewFields.EFieldType.CAPTURE: if (Array.isArray(value) && (0, _kwikidToolkit.isNotEmptyValue)(value[0])) { convertedValue = value[0]; } else if (typeof value !== "string" || typeof value === "string" && (0, _kwikidToolkit.isEmptyValue)(value)) { convertedValue = ""; } break; default: break; } } else { convertedValue = ""; } return convertedValue; }; exports.convertFormFieldValueToStandardFormat = convertFormFieldValueToStandardFormat; const convertFormFieldValueToKwikUIFormat = (field, value) => { let convertedValue = value; if ((0, _kwikidToolkit.isNotEmptyValue)(value)) { switch (field.type) { case _formViewFields.EFieldType.DATE: convertedValue = convertFormFieldTypeDateToKwikUIFormat(value); break; case _formViewFields.EFieldType.FILE: convertedValue = value; break; case _formViewFields.EFieldType.CAPTURE: if (typeof value === "string") { convertedValue = [value]; } else if (!Array.isArray(value)) { convertedValue = []; } else { convertedValue = value; } break; default: break; } } else { convertedValue = convertFormFieldEmptyValueToKwikUIFormat(field); } return convertedValue; }; exports.convertFormFieldValueToKwikUIFormat = convertFormFieldValueToKwikUIFormat; const convertFormFieldEmptyValueToKwikUIFormat = field => { const fieldType = field.type; let value; switch (fieldType) { case _formViewFields.EFieldType.CHECKBOX: value = false; break; case _formViewFields.EFieldType.NUMBER: value = null; break; case _formViewFields.EFieldType.DATE: value = null; break; case _formViewFields.EFieldType.FILE: value = []; break; case _formViewFields.EFieldType.CAPTURE: value = []; break; case _formViewFields.EFieldType.RADIO: value = ""; break; case _formViewFields.EFieldType.SELECT: value = ""; break; case _formViewFields.EFieldType.MULTISELECT: value = [""]; break; case _formViewFields.EFieldType.DROPDOWN_WITH_SEARCH: value = null; break; default: value = ""; break; } return value; }; exports.convertFormFieldEmptyValueToKwikUIFormat = convertFormFieldEmptyValueToKwikUIFormat;