kwikid-components-react
Version:
KwikID's Component Library in React
281 lines (280 loc) • 10.1 kB
JavaScript
"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;