mantine-form-zod-resolver
Version:
Zod resolver for @mantine/form validation
43 lines (40 loc) • 1.02 kB
JavaScript
import { parse, $ZodError } from 'zod/v4/core';
function zodResolver(schema, options) {
return (values) => {
const parsed = schema.safeParse(values);
if (parsed.success) {
return {};
}
const results = {};
if ("error" in parsed) {
if (options?.errorPriority === "first") {
parsed.error.errors.reverse();
}
parsed.error.errors.forEach((error) => {
results[error.path.join(".")] = error.message;
});
}
return results;
};
}
function zod4Resolver(schema, options) {
return (values) => {
try {
parse(schema, values);
return {};
} catch (error) {
if (error instanceof $ZodError) {
const results = {};
if (options?.errorPriority === "first") {
error.issues.reverse();
}
error.issues.forEach((issue) => {
results[issue.path.join(".")] = issue.message;
});
return results;
}
throw error;
}
};
}
export { zod4Resolver, zodResolver };