vuux
Version:
Vue3 Nuxt3 Nuxt4 组件库
44 lines (43 loc) • 1.15 kB
JavaScript
import { toRefs as x, reactive as d, provide as F } from "vue";
import { Utils as h } from "@vuux/utils";
const N = (e, i) => {
const { rules: m } = x(e), s = d({
errors: {},
requiredFields: {}
}), v = async () => {
const o = Object.keys(e.model);
e.model;
const n = [];
for (const t in e.rules)
if (o.includes(t)) {
const b = e.rules[t];
for (const q of b) {
const { required: u, message: a, validator: f, pattern: c } = q;
let r = !0;
if (f) {
const l = f(e.model[t], e.model);
l instanceof Promise ? r = await l : r = l;
} else c ? r = c.test(e.model[t]) : u && (r = h.isNoNull(String(e.model[t]).trim()));
if (r)
s.errors[t] = "";
else {
s.errors[t] = a, s.requiredFields[t] = !!u, n.push(a);
break;
}
}
}
n.length === 0 ? i("ok", !0) : i("ok", !1);
}, g = (o) => {
o.preventDefault();
}, k = d({
state: s,
rules: m.value
});
return F("formContext", k), {
validate: v,
onSubmit: g
};
};
export {
N as useForm
};