@mantine/form
Version:
Mantine form management library
64 lines (63 loc) • 2.22 kB
JavaScript
"use client";
const require_get_path = require("../paths/get-path.cjs");
const require_validate_values = require("./validate-values.cjs");
const require_get_rule_for_path = require("./get-rule-for-path.cjs");
//#region packages/@mantine/form/src/validate/validate-field-value.ts
const defaultResolveError = (err) => err instanceof Error ? err.message : String(err);
function fieldResultFromErrors(path, errors) {
const pathInError = Object.keys(errors).find((errorKey) => path.split(".").every((pathPart, i) => pathPart === errorKey.split(".")[i]));
return {
hasError: !!pathInError,
error: pathInError ? errors[pathInError] : null
};
}
function validateFieldValue(path, rules, values, resolveValidationError = defaultResolveError, signal = new AbortController().signal) {
if (typeof path !== "string") return {
hasError: false,
error: null
};
if (typeof rules === "function") {
const results = require_validate_values.validateValues(rules, values, resolveValidationError, signal);
if (results instanceof Promise) return results.then((r) => fieldResultFromErrors(path, r.errors));
return fieldResultFromErrors(path, results.errors);
}
const rule = require_get_rule_for_path.getRuleForPath(path, rules);
if (rule) {
const value = require_get_path.getPath(path, values);
try {
const result = rule(value, values, path, signal);
if (result instanceof Promise) return result.then((error) => {
if (error) return {
hasError: true,
error
};
return {
hasError: false,
error: null
};
}, (err) => ({
hasError: true,
error: resolveValidationError(err)
}));
if (result) return {
hasError: true,
error: result
};
return {
hasError: false,
error: null
};
} catch (err) {
return {
hasError: true,
error: resolveValidationError(err)
};
}
}
const results = require_validate_values.validateValues(rules, values, resolveValidationError, signal);
if (results instanceof Promise) return results.then((r) => fieldResultFromErrors(path, r.errors));
return fieldResultFromErrors(path, results.errors);
}
//#endregion
exports.validateFieldValue = validateFieldValue;
//# sourceMappingURL=validate-field-value.cjs.map