UNPKG

vuux

Version:

Vue3 Nuxt3 Nuxt4 组件库

44 lines (43 loc) 1.15 kB
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 };