@vtaits/form-schema
Version:
Serialization and parsing form values by schema
65 lines (64 loc) • 1.82 kB
JavaScript
import {
defaultErrorMessages
} from "./chunk-O5F4Y5EZ.js";
// src/fields/input/input.ts
function prepareValue(rawValue) {
if (typeof rawValue === "number" || typeof rawValue === "boolean") {
return String(rawValue);
}
if (typeof rawValue === "string") {
return rawValue;
}
return "";
}
var input = {
serializerSingle: ({ value, fieldSchema: { isNumber } }) => {
const strValue = prepareValue(value);
if (isNumber) {
const numericValue = Number.parseFloat(strValue);
if (Number.isNaN(numericValue)) {
return null;
}
return numericValue;
}
return strValue;
},
parserSingle: ({ value }) => prepareValue(value),
validatorBeforeSubmit: ({ setCurrentError, value, fieldSchema }) => {
const {
errorMessages: errorMessagesParam,
isNumber,
required,
regExp: regExpParam,
maxLength,
minLength
} = fieldSchema;
const errorMessages = {
...defaultErrorMessages,
...errorMessagesParam
};
const strValue = prepareValue(value);
if (isNumber && strValue && Number.isNaN(Number.parseFloat(strValue))) {
setCurrentError(errorMessages.invalidNumber);
}
if (required && !strValue) {
setCurrentError(errorMessages.required);
}
if (minLength && strValue.length < minLength) {
setCurrentError(errorMessages.minLengthStr(minLength));
}
if (maxLength && strValue.length > maxLength) {
setCurrentError(errorMessages.maxLengthStr(maxLength));
}
if (regExpParam) {
const regExp = regExpParam instanceof RegExp ? regExpParam : new RegExp(regExpParam);
if (!regExp.test(strValue)) {
setCurrentError(errorMessages.regexp(regExp.toString()));
}
}
}
};
export {
input
};
//# sourceMappingURL=fields_input.js.map