@vtaits/form-schema
Version:
Serialization and parsing form values by schema
79 lines (78 loc) • 1.74 kB
JavaScript
import {
defaultErrorMessages
} from "./chunk-O5F4Y5EZ.js";
// src/fields/file/file.ts
function prepareValue(rawValue) {
if (!rawValue) {
return null;
}
const fileValue = rawValue;
if (fileValue.file) {
return fileValue.file;
}
if (fileValue.hasPreviousFile) {
return void 0;
}
return null;
}
var file = {
serializerSingle: ({ value }) => {
return prepareValue(value);
},
parserSingle: ({ value }) => {
if (!value) {
return {
file: null,
hasPreviousFile: false
};
}
if (value instanceof Blob) {
return {
file: value,
hasPreviousFile: true
};
}
if (typeof value === "string") {
return {
file: null,
name: value,
hasPreviousFile: true
};
}
if (typeof value === "object") {
return {
file: null,
hasPreviousFile: true,
...value
};
}
},
validatorBeforeSubmit: ({ setCurrentError, value, fieldSchema }) => {
const {
errorMessages: errorMessagesParam,
required,
maxSize,
minSize
} = fieldSchema;
const errorMessages = {
...defaultErrorMessages,
...errorMessagesParam
};
const fileValue = prepareValue(value);
if (required && (fileValue === void 0 && !value?.hasPreviousFile || fileValue === null)) {
setCurrentError(errorMessages.required);
}
if (fileValue) {
if (minSize && fileValue.size < minSize) {
setCurrentError(errorMessages.minLengthFile(minSize));
}
if (maxSize && fileValue.size > maxSize) {
setCurrentError(errorMessages.maxLengthFile(maxSize));
}
}
}
};
export {
file
};
//# sourceMappingURL=fields_file.js.map