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