UNPKG

@vtaits/form-schema

Version:

Serialization and parsing form values by schema

235 lines (234 loc) 4.45 kB
import { parse, serialize, setFieldErrors, setValues, validateBeforeSubmit } from "./chunk-3DE3JEEE.js"; // src/fields/set/set.ts import { isPromise } from "es-toolkit"; var set = { createGetFieldSchema: ({ fieldSchema }) => { const { schemas } = fieldSchema; return (name) => schemas[name]; }, serializer: async ({ name, value, values, fieldSchema, getFieldSchema, getFieldType, parents }) => { const { schemas, nested } = fieldSchema; const names = Object.keys(schemas); if (nested) { const currentValues = value || {}; const nextParents = [ ...parents, { name, values: currentValues } ]; const result = await serialize({ values: currentValues, names, getFieldSchema, getFieldType, parents: nextParents }); return { [name]: result }; } return serialize({ values, names, getFieldSchema, getFieldType, parents }); }, parser: ({ name, value, values, fieldSchema, getFieldSchema, getFieldType, parents }) => { const { schemas, nested } = fieldSchema; const names = Object.keys(schemas); if (nested) { const currentValues = value || {}; const nextParents = [ ...parents, { name, values: currentValues } ]; const parseResult = parse({ values: currentValues, names, getFieldSchema, getFieldType, parents: nextParents }); if (!parseResult) { return { [name]: {} }; } if (isPromise(parseResult)) { return parseResult.then((promiseResult) => ({ [name]: promiseResult })); } return { [name]: parseResult }; } return parse({ values, names, getFieldSchema, getFieldType, parents }) || {}; }, validatorBeforeSubmit: ({ name, setError, value, values, fieldSchema, getFieldSchema, getFieldType, parents }) => { const { nested, schemas } = fieldSchema; const names = Object.keys(schemas); if (nested) { const currentValues = value || {}; const nextParents = [ ...parents, { name, values: currentValues } ]; validateBeforeSubmit({ setError, values: currentValues, names, getFieldSchema, getFieldType, parents: nextParents }); return; } validateBeforeSubmit({ setError, values, names, getFieldSchema, getFieldType, parents }); }, errorsSetter: ({ name, setError, errors, fieldSchema, getFieldSchema, getFieldType, value, values, rawValue, rawValues, parents }) => { const { nested, schemas } = fieldSchema; const names = Object.keys(schemas); if (nested) { const currentValues = value || {}; const nextParents = [ ...parents, { name, values: currentValues } ]; setFieldErrors({ setError, errors: errors[name] || {}, names, getFieldSchema, getFieldType, values: currentValues, rawValues: rawValue || {}, parents: nextParents }); return; } setFieldErrors({ setError, errors, names, getFieldSchema, getFieldType, values, rawValues, parents }); }, valueSetter: ({ name, setValue, fieldSchema, getFieldSchema, getFieldType, value, values, parents }) => { const { nested, schemas } = fieldSchema; const names = Object.keys(schemas); if (nested) { const currentValues = value || {}; const nextParents = [ ...parents, { name, values: currentValues } ]; setValues({ setValue, names, getFieldSchema, getFieldType, values: currentValues, parents: nextParents }); return; } setValues({ setValue, names, getFieldSchema, getFieldType, values, parents }); } }; export { set }; //# sourceMappingURL=fields_set.js.map