UNPKG

v-required

Version:

Componente Vue 3 para validação reativa de formulários, facilitando a criação de formulários dinâmicos e interativos com regras de validação personalizáveis.

73 lines (72 loc) 1.95 kB
import { reactive as m, provide as c, onMounted as a, defineComponent as v, inject as u, watchEffect as q, nextTick as y, onUnmounted as E, resolveDirective as g, withDirectives as h, createElementBlock as V, openBlock as S, renderSlot as b, unref as k, useSlots as w } from "vue"; import { senderErrors as p, validForm as x } from "./utils.js"; const f = Symbol("v-required-key"), R = Symbol("vRequiredRules"), _ = Symbol("vRequiredConfig"); function A() { const o = m({}), e = m({}); c(R, o), c(_, e); const n = () => (p(o, e), x(e)); return a(() => { p(o, e); }), { rules: o, config: e, haveError: n }; } const B = ["id"], D = /* @__PURE__ */ v({ __name: "VRequired", props: { activeError: { type: Boolean, default: !0 }, name: {} }, setup(o) { const e = [], n = u(R), t = u(_), r = o; function d(s) { e.push([s.message, s.error]); } return c(f, { addRule: d }), q(() => { if (n[r.name]) { const s = n[r.name].map(([l, i]) => ({ message: l, condition: i() })); t[r.name] = s; } }), a(() => { y(() => { n[r.name] = e; }); }), E(() => { delete n[r.name], delete t[r.name]; }), (s, l) => { const i = g("required"); return h((S(), V("div", { id: "scroll_" + r.name }, [ b(s.$slots, "default") ], 8, B)), [ [i, { list: k(t)?.[r.name] || [], activeError: r.activeError }] ]); }; } }), $ = /* @__PURE__ */ v({ __name: "VRule", props: { error: {}, message: {}, name: {} }, setup(o) { const e = o, n = w(), t = u(f); if (!t) throw new Error("VRule deve ser usado dentro de um VRequired."); return a(() => { t.addRule({ error: e.error, message: e.message, bodySlot: n.body }); }), (r, d) => null; } }); export { D as VRequired, $ as VRule, A as initVrequired };