@volverjs/form-vue 1.1.1 → 1.1.2-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -972
- package/dist/index.es.js +838 -1057
- package/dist/index.umd.js +1 -1
- package/dist/{VvForm.d.ts → src/VvForm.d.ts} +3 -3
- package/dist/{VvFormField.d.ts → src/VvFormField.d.ts} +2 -2
- package/dist/{VvFormFieldsGroup.d.ts → src/VvFormFieldsGroup.d.ts} +2 -2
- package/dist/src/index.d.ts +972 -0
- package/package.json +31 -28
- package/src/VvFormFieldsGroup.ts +1 -1
- package/src/utils.ts +83 -24
- /package/dist/{VvFormTemplate.d.ts → src/VvFormTemplate.d.ts} +0 -0
- /package/dist/{VvFormWrapper.d.ts → src/VvFormWrapper.d.ts} +0 -0
- /package/dist/{enums.d.ts → src/enums.d.ts} +0 -0
- /package/dist/{types.d.ts → src/types.d.ts} +0 -0
- /package/dist/{utils.d.ts → src/utils.d.ts} +0 -0
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(S,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("@vueuse/core"),require("zod/v3"),require("zod/v4/core"),require("dot-prop")):typeof define=="function"&&define.amd?define(["exports","vue","@vueuse/core","zod/v3","zod/v4/core","dot-prop"],e):(S=typeof globalThis<"u"?globalThis:S||self,e(S["@volverjs/form-vue"]={},S.Vue,S.VueUseCore,S.zodV3,S.zodV4Core,S.dotProp))})(this,function(S,e,$,Q,A,Z){"use strict";var j=(t=>(t.text="text",t.number="number",t.email="email",t.password="password",t.tel="tel",t.url="url",t.search="search",t.date="date",t.time="time",t.datetimeLocal="datetime-local",t.month="month",t.week="week",t.color="color",t.select="select",t.checkbox="checkbox",t.radio="radio",t.textarea="textarea",t.radioGroup="radioGroup",t.checkboxGroup="checkboxGroup",t.combobox="combobox",t.custom="custom",t))(j||{}),I=(t=>(t.invalid="invalid",t.valid="valid",t.submitting="submitting",t.reset="reset",t.updated="updated",t.unknown="unknown",t))(I||{});const B=t=>t._def.typeName==="ZodObject",N=t=>t._zod.def.type==="object",X=t=>t._def.typeName==="ZodDefault",Y=t=>t._zod.def.type==="default",ee=t=>t._def.typeName==="ZodNullable",te=t=>t._zod.def.type==="nullable",re=t=>t._def.typeName==="ZodRecord",ae=t=>t._zod.def.type==="record",ne=t=>t._def.typeName==="ZodArray",oe=t=>t._zod.def.type==="array",le=t=>t._def.typeName==="ZodEffects",L=t=>t._def.typeName==="ZodOptional",M=t=>t._zod.def.type==="optional",ie=t=>t._zod.def.type==="pipe",se=t=>t._zod.def.type==="transform";function K(t){let r=t;for(;le(r);)r=r.innerType();return r}function q(t){let r=t;for(;ie(r);)se(r._zod.def.out)?r=r._zod.def.in:r=r._zod.def.out;return r}const G=t=>{let r=K(t);return L(r)&&(r=r._def.innerType),r},P=t=>{let r=q(t);return M(r)&&(r=r._zod.def.innerType),r},ue=t=>{const r=K(t);return!!L(r)},de=t=>{const r=q(t);return!!M(r)},U=t=>"_zod"in t;function x(t,r={}){if(U(t)){const n=P(t);return N(n)?{...n._zod.def.catchall&&n._zod.def.catchall._zod.def.type!=="never"?r:{},...Object.fromEntries(("shape"in n._zod.def?Object.entries(n._zod.def.shape):[]).map(([i,c])=>{const a=r[i],v=de(c);let l=P(c),f;if(Y(l)&&(f=l._zod.def.defaultValue,l=l._zod.def.innerType),a===null&&te(l))return[i,a];if(a==null&&v)return[i,f];if(l){const m=A.safeParse(c,a);if(m.success)return[i,m.data??f]}if(oe(l)&&Array.isArray(a)&&a.length){const m=P(l._zod.def.element);if(N(m))return[i,a.map(D=>x(m,D&&typeof D=="object"?D:void 0))]}if(ae(l)&&a){const m=P(l._zod.def.valueType);if(N(m))return[i,Object.keys(a).reduce((D,y)=>(D[y]=x(m,a[y]),D),{})]}return N(l)?[i,x(l,a&&typeof a=="object"?a:f)]:[i,f]}))}:r}const s=G(t);return B(s)?{...s._def.unknownKeys==="passthrough"?r:{},...Object.fromEntries(("shape"in s?Object.entries(s.shape):[]).map(([n,d])=>{const i=r[n],c=ue(d);let a=G(d),v;if(X(a)&&(v=a._def.defaultValue(),a=a._def.innerType),i===null&&ee(a))return[n,i];if(i==null&&c)return[n,v];if(a){const l=d.safeParse(i);if(l.success)return[n,l.data??v]}if(ne(a)&&Array.isArray(i)&&i.length){const l=G(a._def.type);if(B(l))return[n,i.map(f=>x(l,f&&typeof f=="object"?f:void 0))]}if(re(a)&&i){const l=G(a._def.valueType);if(B(l))return[n,Object.keys(i).reduce((f,m)=>(f[m]=x(l,i[m]),f),{})]}return B(a)?[n,x(a,i&&typeof i=="object"?i:v)]:[n,v]}))}:r}const fe=(t,r)=>U(t)?A.safeParseAsync(t,r):t.safeParseAsync(r),ce=(t,r)=>U(t)?A.formatError(r):r.format(),ve=(t,r)=>U(t)?A.formatError(new A.$ZodError(r)):new Q.ZodError(r).format();function me(t,r,s,g,n){const d=e.ref(),i=e.ref(),c=e.computed(()=>i.value===I.invalid),a=e.ref(),v=e.ref(!1);let l;const f=O=>{const R=x(t,O);if(s?.class){const o=s.class;return new o(R)}return R},m=async(O=a.value,R)=>{if(l=R?.fields,v.value)return!0;const o=await fe(t,O);if(!o.success){if(i.value=I.invalid,!l?.size)return d.value=ce(t,o.error),!1;const w=o.error.issues.filter(C=>l?.has(C.path.join(".")));return w.length?(d.value=ve(t,w),!1):(d.value=void 0,!0)}return d.value=void 0,i.value=I.valid,a.value=f(o.data),!0},D=()=>{d.value=void 0,i.value=void 0,l=void 0},y=()=>{a.value=f(),D(),i.value=I.reset},p=async O=>v.value||!await m(void 0,O)?!1:(i.value=I.submitting,!0),{ignoreUpdates:h,stop:V}=$.watchIgnorable(a,()=>{i.value=I.updated},{deep:!0,eventFilter:$.throttleFilter(s?.updateThrottle??500)}),z=e.readonly(d),_=e.readonly(i),E=e.defineComponent({name:"VvForm",props:{continuousValidation:{type:Boolean,default:!1},modelValue:{type:Object,default:()=>({})},readonly:{type:Boolean,default:s?.readonly},tag:{type:String,default:"form"},template:{type:[Array,Function],default:void 0},superRefine:{type:Function,default:void 0},validateFields:{type:Array,default:void 0}},emits:["invalid","submit","update:modelValue","update:readonly","valid","reset"],expose:["errors","invalid","readonly","status","submit","tag","template","valid","validate","clear","reset"],slots:Object,setup(O,{emit:R}){return a.value=f(e.toRaw(O.modelValue)),e.watch(()=>O.modelValue,o=>{if(o){const w=e.isProxy(o)?e.toRaw(o):o;if(JSON.stringify(w)===JSON.stringify(e.toRaw(a.value)))return;a.value=typeof w?.clone=="function"?w.clone():JSON.parse(JSON.stringify(w))}},{deep:!0}),e.watch(i,async o=>{if(o===I.invalid){const w=e.toRaw(d.value);R("invalid",w),s?.onInvalid?.(w);return}if(o===I.valid){const w=e.toRaw(a.value);R("valid",w),s?.onValid?.(w),R("update:modelValue",w),s?.onUpdate?.(w);return}if(o===I.submitting){const w=e.toRaw(a.value);R("submit",w),s?.onSubmit?.(w);return}if(o===I.reset){const w=e.toRaw(a.value);R("reset",w),s?.onReset?.(w);return}if(o===I.updated){if((d.value||s?.continuousValidation||O.continuousValidation)&&await m(void 0,{superRefine:O.superRefine,fields:l??new Set(O.validateFields)}),!a.value||!O.modelValue||JSON.stringify(a.value)!==JSON.stringify(O.modelValue)){const w=e.toRaw(a.value);R("update:modelValue",w),s?.onUpdate?.(w)}i.value===I.updated&&(i.value=I.unknown)}}),e.onMounted(()=>{O.readonly!==void 0&&(v.value=O.readonly)}),e.watch(()=>O.readonly,o=>{v.value=o}),e.watch(v,o=>{o!==O.readonly&&R("update:readonly",v.value)}),e.provide(r,{clear:D,errors:z,formData:a,ignoreUpdates:h,invalid:c,readonly:v,reset:y,status:_,stopUpdatesWatch:V,submit:p,validate:m,wrappers:n}),{clear:D,errors:z,formData:a,ignoreUpdates:h,invalid:c,isReadonly:v,reset:y,status:_,stopUpdatesWatch:V,submit:()=>p({superRefine:O.superRefine,fields:new Set(O.validateFields)}),validate:m,wrappers:n}},render(){const O=()=>this.$slots?.default?.({errors:z.value,formData:a.value,invalid:c.value,readonly:v.value,status:_.value,wrappers:n,clear:D,ignoreUpdates:h,reset:y,stopUpdatesWatch:V,submit:p,validate:m})??this.$slots.default;return e.h(this.tag,{onSubmit:e.withModifiers(this.submit,["prevent"]),onReset:e.withModifiers(this.reset,["prevent"])},(this.template??s?.template)&&g?[e.h(g,{schema:this.template??s?.template},{default:O})]:{default:O})}});return{clear:D,errors:d,formData:a,ignoreUpdates:h,invalid:c,readonly:v,reset:y,status:i,wrappers:n,stopUpdatesWatch:V,submit:p,validate:m,VvForm:E}}function pe(t,r,s,g){return e.defineComponent({name:"VvFormField",props:{type:{type:String,validator:n=>Object.values(j).includes(n),default:j.custom},is:{type:[Object,String],default:void 0},name:{type:[String,Number,Boolean,Symbol],required:!0},props:{type:[Object,Function],default:()=>({})},showValid:{type:Boolean,default:!1},defaultValue:{type:[String,Number,Boolean,Array,Object],default:void 0},lazyLoad:{type:Boolean,default:!1},readonly:{type:Boolean,default:void 0}},emits:["invalid","update:formData","update:modelValue","valid"],expose:["component","errors","hasProps","invalid","invalidLabel","is","type"],slots:Object,setup(n,{slots:d,emit:i}){const{props:c,name:a}=e.toRefs(n),v=e.useId(),l=e.inject(r,void 0);l&&l.fields.value.set(v,n.name);const f=e.inject(t),m=e.computed({get(){if(f?.formData)return Z.getProperty(new Object(f.formData.value),String(n.name))},set(o){f?.formData&&(Z.setProperty(new Object(f.formData.value),String(n.name),o),i("update:modelValue",{newValue:m.value,formData:f?.formData}))}});e.onMounted(()=>{m.value===void 0&&n.defaultValue!==void 0&&(m.value=n.defaultValue)}),e.onBeforeUnmount(()=>{l&&l.fields.value.delete(v)});const D=e.computed(()=>{if(f?.errors.value)return Z.getProperty(f.errors.value,String(n.name))}),y=e.computed(()=>D.value?._errors),p=e.computed(()=>D.value!==void 0),h=e.watch(p,o=>{if(o){i("invalid",D.value),l&&l.errors.value.set(String(n.name),D.value);return}i("valid",m.value),l&&l.errors.value.delete(n.name)}),V=e.watch(()=>f?.formData,()=>{i("update:formData",f?.formData)},{deep:!0});e.onBeforeUnmount(()=>{h(),V()});const z=o=>{o instanceof InputEvent&&(o=o.target.value),m.value=o},_=e.computed(()=>{let o=c.value;return typeof o=="function"&&(o=o(f?.formData)),Object.keys(o).reduce((w,C)=>(w[C]=e.unref(o[C]),w),{})}),E=e.computed(()=>f?.readonly.value||l?.readonly.value?!0:_.value.readonly??n.readonly),O=e.computed(()=>({..._.value,name:_.value.name??n.name,invalid:p.value,valid:n.showValid?!!(!p.value&&m.value):void 0,type:(o=>{if([j.color,j.date,j.datetimeLocal,j.email,j.month,j.number,j.password,j.search,j.tel,j.text,j.time,j.url,j.week].includes(o))return o})(n.type),invalidLabel:y.value,modelValue:m.value,readonly:E.value,"onUpdate:modelValue":z}));return e.provide(s,{name:e.readonly(a),errors:e.readonly(D)}),{component:e.computed(()=>{if(n.type===j.custom)return{render(){return d.default?.({errors:e.readonly(D).value,formData:f?.formData.value,formErrors:f?.errors.value,invalid:p.value,invalidLabel:y.value,modelValue:m.value,readonly:E.value,onUpdate:z,submit:f?.submit,validate:f?.validate})??d.default}};if(!(g?.lazyLoad??n.lazyLoad)){let o;switch(n.type){case j.select:o=e.resolveComponent("VvSelect");break;case j.checkbox:o=e.resolveComponent("VvCheckbox");break;case j.radio:o=e.resolveComponent("VvRadio");break;case j.textarea:o=e.resolveComponent("VvTextarea");break;case j.radioGroup:o=e.resolveComponent("VvRadioGroup");break;case j.checkboxGroup:o=e.resolveComponent("VvCheckboxGroup");break;case j.combobox:o=e.resolveComponent("VvCombobox");break;default:o=e.resolveComponent("VvInputText")}if(typeof o!="string")return o;console.warn(`[@volverjs/form-vue]: ${o} not found, the component will be loaded asynchronously. To avoid this warning, please set "lazyLoad" option.`)}return e.defineAsyncComponent(async()=>{switch(g?.sideEffects&&await Promise.resolve(g.sideEffects(n.type)),n.type){case j.textarea:return import("@volverjs/ui-vue/vv-textarea");case j.radio:return import("@volverjs/ui-vue/vv-radio");case j.radioGroup:return import("@volverjs/ui-vue/vv-radio-group");case j.checkbox:return import("@volverjs/ui-vue/vv-checkbox");case j.checkboxGroup:return import("@volverjs/ui-vue/vv-checkbox-group");case j.select:return import("@volverjs/ui-vue/vv-select");case j.combobox:return import("@volverjs/ui-vue/vv-combobox")}return import("@volverjs/ui-vue/vv-input-text")})}),hasProps:O,invalid:p}},render(){return this.is?e.h(this.is,this.hasProps,this.$slots):this.type===j.custom?e.h(this.component,null,this.$slots):e.h(this.component,this.hasProps,this.$slots)}})}function ye(t,r,s){return e.defineComponent({name:"VvFormFieldsGroup",props:{is:{type:[Object,String],default:void 0},names:{type:[Array,Object],required:!0},props:{type:[Object,Function],default:()=>({})},showValid:{type:Boolean,default:!1},defaultValues:{type:[Object],default:void 0},readonly:{type:Boolean,default:void 0}},emits:["invalid","update:formData","update:modelValue","valid"],expose:["component","errors","hasProps","invalid","invalidLabels","is"],slots:Object,setup(g,{slots:n,emit:d}){const{props:i,names:c,defaultValues:a}=e.toRefs(g),v=e.useId(),l=e.computed(()=>Array.isArray(c.value)?c.value:Object.values(c.value)),f=e.computed(()=>Array.isArray(c.value)?c.value:Object.keys(c.value)),m=e.computed(()=>Array.isArray(c.value)?c.value.reduce((u,b)=>(u[String(b)]=b,u),{}):c.value),D=e.computed(()=>Object.keys(m.value).reduce((u,b)=>(u[String(m.value[b])]=b,u),{})),y=e.inject(r,void 0);y&&l.value.forEach(u=>{y.fields.value.set(`${v}-${u}`,u)});const p=e.inject(t),h=e.computed({get(){return p?.formData?f.value.reduce((u,b)=>(u[b]=Z.getProperty(new Object(p.formData.value),m.value[b]),u),{}):{}},set(u){p?.formData&&(f.value.forEach(b=>{Z.setProperty(new Object(p.formData.value),m.value[b],u?.[b])}),d("update:modelValue",{newValue:h.value,formData:p?.formData}))}});e.onMounted(()=>{a.value&&l.value.forEach(u=>{a.value?.[u]!==void 0&&h.value[u]===void 0&&(h.value={...h.value,[u]:a.value?.[u]})})}),e.onBeforeUnmount(()=>{y&&l.value.forEach(u=>{y.fields.value.delete(`${v}-${u}`)})});const V=e.computed(()=>{if(!p?.errors.value)return;const u=l.value.reduce((b,F)=>{if(!p.errors.value)return b;const H=Z.getProperty(p.errors.value,String(F));return H===void 0||(b[String(F)]=H),b},{});if(Object.keys(u).length!==0)return u}),z=e.computed(()=>{if(!V.value)return;const u=Object.keys(V.value).reduce((b,F)=>(V.value?.[F]&&(b[D.value[F]]=V.value[F]._errors),b),{});if(Object.keys(u).length!==0)return u}),_=e.computed(()=>V.value!==void 0),E=e.computed(()=>f.value.reduce((u,b)=>(u[b]=!!V.value?.[D.value[b]],u),{})),O=e.watch(_,()=>{if(_.value){d("invalid",V.value),y&&l.value.forEach(u=>{if(!V.value?.[u]){y.errors.value.delete(u);return}y.errors.value.set(u,V.value?.[u])});return}d("valid",h.value),y&&l.value.forEach(u=>{y.errors.value.delete(u)})}),R=e.watch(()=>p?.formData,()=>{d("update:formData",p?.formData)},{deep:!0});e.onBeforeUnmount(()=>{O(),R()});const o=u=>{h.value=u},w=(u,b)=>{b instanceof InputEvent&&(b=b.target.value),f.value.includes(u)&&(h.value={...h.value,[u]:b})},C=e.computed(()=>{let u=i.value;return typeof u=="function"&&(u=u(p?.formData)),Object.keys(u).reduce((b,F)=>(b[F]=e.unref(u[F]),b),{})}),J=e.computed(()=>p?.readonly.value?!0:C.value.readonly??g.readonly),ge=e.computed(()=>f.value.reduce((u,b)=>(u[`onUpdate:${b}`]=F=>{w(b,F)},u),{"onUpdate:modelValue":o})),Oe=e.computed(()=>({...ge.value,...C.value,...h.value,modelValue:h.value,names:C.value.name??l.value,invalid:_.value,invalids:E.value,valid:g.showValid?!!(!_.value&&h.value):void 0,invalidLabels:z.value,readonly:J.value}));return e.provide(s,{names:e.readonly(c),errors:e.readonly(V)}),{component:e.computed(()=>({render(){return n.default?.({errors:V.value,formData:p?.formData.value,formErrors:p?.errors.value,invalid:_.value,invalids:E.value,invalidLabels:z.value,modelValue:h.value,onUpdate:o,onUpdateField:w,readonly:J.value,submit:p?.submit,validate:p?.validate})??n.default}})),hasProps:Oe,invalid:_}},render(){return this.is?e.h(this.is,this.hasProps,this.$slots):e.h(this.component,null,this.$slots)}})}function he(t,r){return e.defineComponent({name:"VvFormWrapper",props:{name:{type:String,required:!0},tag:{type:String,default:void 0},readonly:{type:Boolean,default:!1}},emits:["invalid","valid"],expose:["clear","errors","fields","fieldsErrors","formData","invalid","readonly","reset","submit","tag","validate","validateWrapper"],slots:Object,setup(s,{emit:g}){const n=e.inject(t),d=e.inject(r,void 0),i=e.ref(new Map),c=e.ref(new Map),{name:a}=e.toRefs(s),v=e.computed(()=>n?.invalid.value?c.value.size>0:!1);e.watch(v,y=>{if(y){g("invalid");return}g("valid")});const l=e.computed(()=>n?.readonly.value||s.readonly),f={name:e.readonly(a),errors:c,invalid:e.readonly(v),readonly:e.readonly(l),fields:i};e.provide(r,f);const m=e.computed(()=>new Map(i.value));e.watch(m,(y,p)=>{d?.fields&&(p.forEach((h,V)=>{y.has(V)||d?.fields.value.delete(V)}),y.forEach((h,V)=>{d?.fields.value.has(V)||d?.fields.value.set(V,h)}))},{deep:!0}),e.watch(c,y=>{d?.errors&&i.value.forEach(p=>{if(y.has(p)||d.errors.value.delete(p),y.has(p)){const h=y.get(p);h&&d.errors.value.set(p,h)}})},{deep:!0}),e.onMounted(()=>{if(!n?.wrappers||!a.value){console.warn("[@volverjs/form-vue]: Invalid wrapper registration state");return}if(n.wrappers.has(a.value)){console.warn(`[@volverjs/form-vue]: wrapper name "${a.value}" is already used`);return}n.wrappers.set(a.value,f)}),e.onBeforeUnmount(()=>{n?.wrappers&&a.value&&n.wrappers.delete(a.value)});const D=()=>n?.validate(void 0,{fields:new Set(i.value.values())})??Promise.resolve(!0);return{errors:n?.errors,fields:i,fieldsErrors:c,formData:n?.formData,invalid:v,readonly:l,clear:n?.clear,reset:n?.reset,submit:n?.submit,validate:n?.validate,validateWrapper:D}},render(){const s=()=>this.$slots.default?.({errors:this.errors,fieldsErrors:this.fieldsErrors,formData:this.formData,invalid:this.invalid,readonly:this.readonly,clear:this.clear,reset:this.reset,submit:this.submit,validate:this.validate,validateWrapper:this.validateWrapper});return this.tag?e.h(this.tag,null,{default:s}):s()}})}function be(t,r){const s=e.defineComponent({name:"VvFormTemplate",props:{schema:{type:[Array,Function],required:!0},scope:{type:Object,default:()=>({})}},slots:Object,setup(g,{slots:n}){const d=e.inject(t);if(d?.formData)return()=>{const i=typeof g.schema=="function"?g.schema(d,g.scope):g.schema;let c;const a=i.reduce((v,l)=>{const f=typeof l=="function"?l(d,g.scope):l,{vvIs:m,vvName:D,vvSlots:y,vvChildren:p,vvIf:h,vvElseIf:V,vvType:z,vvDefaultValue:_,vvShowValid:E,vvContent:O,...R}=f;if(h!==void 0){if(typeof h=="string"?c=!!Z.getProperty(new Object(d.formData.value),h):typeof h=="function"?c=e.unref(h(d)):c=e.unref(h),!c)return v}else if(V!==void 0&&c!==void 0){if(c||(typeof V=="string"?c=!!Z.getProperty(new Object(d.formData.value),V):typeof V=="function"?c=e.unref(V(d)):c=e.unref(V),!c))return v}else c=void 0;let o;return p&&(typeof m=="string"?o=e.h(s,{schema:p}):o={default:w=>e.h(s,{schema:p,scope:w})}),D?(v.push(e.h(r,{name:D,is:m,type:z,defaultValue:_,showValid:E,props:R},y??o??O)),v):m?(v.push(e.h(m,R,y??o??O)),v):(o&&("default"in o?v.push(o.default(g.scope)):v.push(o)),v)},[]);return a.push(n?.default?.({errors:d?.errors.value,formData:d?.formData.value,invalid:d?.invalid.value,status:d?.status.value,submit:d?.submit,validate:d?.validate,clear:d?.clear,reset:d?.reset})),a}}});return s}function k(t,r={}){const s=Symbol("formInjectionKey"),g=Symbol("formWrapperInjectionKey"),n=Symbol("formFieldInjectionKey"),d=Symbol("formFieldsGroupInjectionKey"),i=he(s,g),c=pe(s,g,n,r),a=ye(s,g,d),v=be(s,c),l=new Map,{clear:f,errors:m,formData:D,ignoreUpdates:y,invalid:p,readonly:h,reset:V,status:z,stopUpdatesWatch:_,submit:E,validate:O,VvForm:R}=me(t,s,r,v,l);return{clear:f,errors:m,formData:D,formFieldInjectionKey:n,formInjectionKey:s,formWrapperInjectionKey:g,ignoreUpdates:y,invalid:p,readonly:h,reset:V,status:z,stopUpdatesWatch:_,submit:E,validate:O,wrappers:l,VvForm:R,VvFormField:c,VvFormFieldsGroup:a,VvFormTemplate:v,VvFormWrapper:i}}const T=Symbol("pluginInjectionKey");function je(t){let r={};return t.schema&&(r=k(t.schema,t)),{...r,install(s,{global:g=!1}={}){s.provide(T,t),g&&(s.config.globalProperties.$vvForm=t,r?.VvForm&&s.component("VvForm",r.VvForm),r?.VvFormWrapper&&s.component("VvFormWrapper",r.VvFormWrapper),r?.VvFormField&&s.component("VvFormField",r.VvFormField),r?.VvFormFieldsGroup&&s.component("VvFormFieldsGroup",r.VvFormFieldsGroup),r?.VvFormTemplate&&s.component("VvFormTemplate",r.VvFormTemplate))}}}const W=new Map;function Ve(t,r={}){if(r.scope&&W.has(r.scope))return W.get(r.scope);if(!e.getCurrentInstance()){const g=k(t,r);return r.scope&&W.set(r.scope,g),g}const s=k(t,{...e.inject(T,{}),...r});return r.scope&&W.set(r.scope,s),s}function we(t,r={}){return k(t,r)}S.FormFieldType=j,S.createForm=je,S.defaultObjectBySchema=x,S.formType=we,S.pluginInjectionKey=T,S.useForm=Ve,Object.defineProperty(S,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`vue`),require(`@vueuse/core`),require(`zod/v3`),require(`zod/v4/core`),require(`dot-prop`)):typeof define==`function`&&define.amd?define([`exports`,`vue`,`@vueuse/core`,`zod/v3`,`zod/v4/core`,`dot-prop`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`@volverjs/form-vue`]={},e.Vue,e.VueUseCore,e.zodV3,e.zodV4Core,e.dotProp))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=function(e){return e.text=`text`,e.number=`number`,e.email=`email`,e.password=`password`,e.tel=`tel`,e.url=`url`,e.search=`search`,e.date=`date`,e.time=`time`,e.datetimeLocal=`datetime-local`,e.month=`month`,e.week=`week`,e.color=`color`,e.select=`select`,e.checkbox=`checkbox`,e.radio=`radio`,e.textarea=`textarea`,e.radioGroup=`radioGroup`,e.checkboxGroup=`checkboxGroup`,e.combobox=`combobox`,e.custom=`custom`,e}({}),s=function(e){return e.invalid=`invalid`,e.valid=`valid`,e.submitting=`submitting`,e.reset=`reset`,e.updated=`updated`,e.unknown=`unknown`,e}({}),c=e=>e._def.typeName===`ZodObject`,l=e=>e._zod.def.type===`object`,u=e=>e._def.typeName===`ZodDefault`,d=e=>e._zod.def.type===`default`,f=e=>e._def.typeName===`ZodNullable`,p=e=>e._zod.def.type===`nullable`,m=e=>e._def.typeName===`ZodRecord`,h=e=>e._zod.def.type===`record`,g=e=>e._def.typeName===`ZodArray`,_=e=>e._zod.def.type===`array`,v=e=>e._def.typeName===`ZodEffects`,y=e=>e._def.typeName===`ZodOptional`,b=e=>e._zod.def.type===`optional`,x=e=>e._zod.def.type===`pipe`,S=e=>e._zod.def.type===`transform`;function C(e){let t=e;for(;v(t);)t=t.innerType();return t}function w(e){let t=e;for(;x(t);)t=S(t._zod.def.out)?t._zod.def.in:t._zod.def.out;return t}var T=e=>{let t=C(e);return y(t)&&(t=t._def.innerType),t},E=e=>{let t=w(e);return b(t)&&(t=t._zod.def.innerType),t},D=e=>!!y(C(e)),O=e=>!!b(w(e)),k=e=>`_zod`in e;function A(e,t={}){if(k(e)){let n=E(e);return l(n)?{...n._zod.def.catchall&&n._zod.def.catchall._zod.def.type!==`never`?t:{},...Object.fromEntries((`shape`in n._zod.def?Object.entries(n._zod.def.shape):[]).map(([e,n])=>{let r=t[e],a=O(n),o=E(n),s;if(d(o)&&(s=o._zod.def.defaultValue,o=o._zod.def.innerType),r===null&&p(o))return[e,r];if(r==null&&a)return[e,s];if(o&&r!==void 0){let t=(0,i.safeParse)(n,r);if(t.success)return[e,t.data??s]}if(_(o)&&Array.isArray(r)){let t=E(o._zod.def.element);return l(t)?[e,r.map(e=>A(t,e&&typeof e==`object`?e:void 0))]:[e,r]}if(h(o)&&r){let t=E(o._zod.def.valueType);return l(t)?[e,Object.keys(r).reduce((e,n)=>(e[n]=A(t,r[n]),e),{})]:[e,r]}return l(o)?[e,A(o,r&&typeof r==`object`?r:s)]:[e,s]}))}:t}let n=T(e);return c(n)?{...n._def.unknownKeys===`passthrough`?t:{},...Object.fromEntries((`shape`in n?Object.entries(n.shape):[]).map(([e,n])=>{let r=t[e],i=D(n),a=T(n),o;if(u(a)&&(o=a._def.defaultValue(),a=a._def.innerType),r===null&&f(a))return[e,r];if(r==null&&i)return[e,o];if(a&&r!==void 0){let t=n.safeParse(r);if(t.success)return[e,t.data??o]}if(g(a)&&Array.isArray(r)){let t=T(a._def.type);return c(t)?[e,r.map(e=>A(t,e&&typeof e==`object`?e:void 0))]:[e,r]}if(m(a)&&r){let t=T(a._def.valueType);return c(t)?[e,Object.keys(r).reduce((e,n)=>(e[n]=A(t,r[n]),e),{})]:[e,r]}return c(a)?[e,A(a,r&&typeof r==`object`?r:o)]:[e,o]}))}:t}var j=(e,t)=>k(e)?(0,i.safeParseAsync)(e,t):e.safeParseAsync(t),M=(e,t)=>k(e)?(0,i.formatError)(t):t.format(),N=(e,t)=>k(e)?(0,i.formatError)(new i.$ZodError(t)):new r.ZodError(t).format();function P(e,r,i,a,o){let c=(0,t.ref)(),l=(0,t.ref)(),u=(0,t.computed)(()=>l.value===s.invalid),d=(0,t.ref)(),f=(0,t.ref)(!1),p,m=t=>{let n=A(e,t);if(i?.class){let e=i.class;return new e(n)}return n},h=async(t=d.value,n)=>{if(p=n?.fields,f.value)return!0;let r=await j(e,t);if(!r.success){if(l.value=s.invalid,!p?.size)return c.value=M(e,r.error),!1;let t=r.error.issues.filter(e=>p?.has(e.path.join(`.`)));return t.length?(c.value=N(e,t),!1):(c.value=void 0,!0)}return c.value=void 0,l.value=s.valid,d.value=m(r.data),!0},g=()=>{c.value=void 0,l.value=void 0,p=void 0},_=()=>{d.value=m(),g(),l.value=s.reset},v=async e=>f.value||!await h(void 0,e)?!1:(l.value=s.submitting,!0),{ignoreUpdates:y,stop:b}=(0,n.watchIgnorable)(d,()=>{l.value=s.updated},{deep:!0,eventFilter:(0,n.throttleFilter)(i?.updateThrottle??500)}),x=(0,t.readonly)(c),S=(0,t.readonly)(l);return{clear:g,errors:c,formData:d,ignoreUpdates:y,invalid:u,readonly:f,reset:_,status:l,wrappers:o,stopUpdatesWatch:b,submit:v,validate:h,VvForm:(0,t.defineComponent)({name:`VvForm`,props:{continuousValidation:{type:Boolean,default:!1},modelValue:{type:Object,default:()=>({})},readonly:{type:Boolean,default:i?.readonly},tag:{type:String,default:`form`},template:{type:[Array,Function],default:void 0},superRefine:{type:Function,default:void 0},validateFields:{type:Array,default:void 0}},emits:[`invalid`,`submit`,`update:modelValue`,`update:readonly`,`valid`,`reset`],expose:[`errors`,`invalid`,`readonly`,`status`,`submit`,`tag`,`template`,`valid`,`validate`,`clear`,`reset`],slots:Object,setup(e,{emit:n}){return d.value=m((0,t.toRaw)(e.modelValue)),(0,t.watch)(()=>e.modelValue,e=>{if(e){let n=(0,t.isProxy)(e)?(0,t.toRaw)(e):e;if(JSON.stringify(n)===JSON.stringify((0,t.toRaw)(d.value)))return;d.value=typeof n?.clone==`function`?n.clone():JSON.parse(JSON.stringify(n))}},{deep:!0}),(0,t.watch)(l,async r=>{if(r===s.invalid){let e=(0,t.toRaw)(c.value);n(`invalid`,e),i?.onInvalid?.(e);return}if(r===s.valid){let e=(0,t.toRaw)(d.value);n(`valid`,e),i?.onValid?.(e),n(`update:modelValue`,e),i?.onUpdate?.(e);return}if(r===s.submitting){let e=(0,t.toRaw)(d.value);n(`submit`,e),i?.onSubmit?.(e);return}if(r===s.reset){let e=(0,t.toRaw)(d.value);n(`reset`,e),i?.onReset?.(e);return}if(r===s.updated){if((c.value||i?.continuousValidation||e.continuousValidation)&&await h(void 0,{superRefine:e.superRefine,fields:p??new Set(e.validateFields)}),!d.value||!e.modelValue||JSON.stringify(d.value)!==JSON.stringify(e.modelValue)){let e=(0,t.toRaw)(d.value);n(`update:modelValue`,e),i?.onUpdate?.(e)}l.value===s.updated&&(l.value=s.unknown)}}),(0,t.onMounted)(()=>{e.readonly!==void 0&&(f.value=e.readonly)}),(0,t.watch)(()=>e.readonly,e=>{f.value=e}),(0,t.watch)(f,t=>{t!==e.readonly&&n(`update:readonly`,f.value)}),(0,t.provide)(r,{clear:g,errors:x,formData:d,ignoreUpdates:y,invalid:u,readonly:f,reset:_,status:S,stopUpdatesWatch:b,submit:v,validate:h,wrappers:o}),{clear:g,errors:x,formData:d,ignoreUpdates:y,invalid:u,isReadonly:f,reset:_,status:S,stopUpdatesWatch:b,submit:()=>v({superRefine:e.superRefine,fields:new Set(e.validateFields)}),validate:h,wrappers:o}},render(){let e=()=>this.$slots?.default?.({errors:x.value,formData:d.value,invalid:u.value,readonly:f.value,status:S.value,wrappers:o,clear:g,ignoreUpdates:y,reset:_,stopUpdatesWatch:b,submit:v,validate:h})??this.$slots.default;return(0,t.h)(this.tag,{onSubmit:(0,t.withModifiers)(this.submit,[`prevent`]),onReset:(0,t.withModifiers)(this.reset,[`prevent`])},(this.template??i?.template)&&a?[(0,t.h)(a,{schema:this.template??i?.template},{default:e})]:{default:e})}})}}function F(e,n,r,i){return(0,t.defineComponent)({name:`VvFormField`,props:{type:{type:String,validator:e=>Object.values(o).includes(e),default:o.custom},is:{type:[Object,String],default:void 0},name:{type:[String,Number,Boolean,Symbol],required:!0},props:{type:[Object,Function],default:()=>({})},showValid:{type:Boolean,default:!1},defaultValue:{type:[String,Number,Boolean,Array,Object],default:void 0},lazyLoad:{type:Boolean,default:!1},readonly:{type:Boolean,default:void 0}},emits:[`invalid`,`update:formData`,`update:modelValue`,`valid`],expose:[`component`,`errors`,`hasProps`,`invalid`,`invalidLabel`,`is`,`type`],slots:Object,setup(s,{slots:c,emit:l}){let{props:u,name:d}=(0,t.toRefs)(s),f=(0,t.useId)(),p=(0,t.inject)(n,void 0);p&&p.fields.value.set(f,s.name);let m=(0,t.inject)(e),h=(0,t.computed)({get(){if(m?.formData)return(0,a.getProperty)(new Object(m.formData.value),String(s.name))},set(e){m?.formData&&((0,a.setProperty)(new Object(m.formData.value),String(s.name),e),l(`update:modelValue`,{newValue:h.value,formData:m?.formData}))}});(0,t.onMounted)(()=>{h.value===void 0&&s.defaultValue!==void 0&&(h.value=s.defaultValue)}),(0,t.onBeforeUnmount)(()=>{p&&p.fields.value.delete(f)});let g=(0,t.computed)(()=>{if(m?.errors.value)return(0,a.getProperty)(m.errors.value,String(s.name))}),_=(0,t.computed)(()=>g.value?._errors),v=(0,t.computed)(()=>g.value!==void 0),y=(0,t.watch)(v,e=>{if(e){l(`invalid`,g.value),p&&p.errors.value.set(String(s.name),g.value);return}l(`valid`,h.value),p&&p.errors.value.delete(s.name)}),b=(0,t.watch)(()=>m?.formData,()=>{l(`update:formData`,m?.formData)},{deep:!0});(0,t.onBeforeUnmount)(()=>{y(),b()});let x=e=>{e instanceof InputEvent&&(e=e.target.value),h.value=e},S=(0,t.computed)(()=>{let e=u.value;return typeof e==`function`&&(e=e(m?.formData)),Object.keys(e).reduce((n,r)=>(n[r]=(0,t.unref)(e[r]),n),{})}),C=(0,t.computed)(()=>m?.readonly.value||p?.readonly.value?!0:S.value.readonly??s.readonly),w=(0,t.computed)(()=>({...S.value,name:S.value.name??s.name,invalid:v.value,valid:s.showValid?!!(!v.value&&h.value):void 0,type:(e=>{if([o.color,o.date,o.datetimeLocal,o.email,o.month,o.number,o.password,o.search,o.tel,o.text,o.time,o.url,o.week].includes(e))return e})(s.type),invalidLabel:_.value,modelValue:h.value,readonly:C.value,"onUpdate:modelValue":x}));return(0,t.provide)(r,{name:(0,t.readonly)(d),errors:(0,t.readonly)(g)}),{component:(0,t.computed)(()=>{if(s.type===o.custom)return{render(){return c.default?.({errors:(0,t.readonly)(g).value,formData:m?.formData.value,formErrors:m?.errors.value,invalid:v.value,invalidLabel:_.value,modelValue:h.value,readonly:C.value,onUpdate:x,submit:m?.submit,validate:m?.validate})??c.default}};if(!(i?.lazyLoad??s.lazyLoad)){let e;switch(s.type){case o.select:e=(0,t.resolveComponent)(`VvSelect`);break;case o.checkbox:e=(0,t.resolveComponent)(`VvCheckbox`);break;case o.radio:e=(0,t.resolveComponent)(`VvRadio`);break;case o.textarea:e=(0,t.resolveComponent)(`VvTextarea`);break;case o.radioGroup:e=(0,t.resolveComponent)(`VvRadioGroup`);break;case o.checkboxGroup:e=(0,t.resolveComponent)(`VvCheckboxGroup`);break;case o.combobox:e=(0,t.resolveComponent)(`VvCombobox`);break;default:e=(0,t.resolveComponent)(`VvInputText`)}if(typeof e!=`string`)return e;console.warn(`[@volverjs/form-vue]: ${e} not found, the component will be loaded asynchronously. To avoid this warning, please set "lazyLoad" option.`)}return(0,t.defineAsyncComponent)(async()=>{switch(i?.sideEffects&&await Promise.resolve(i.sideEffects(s.type)),s.type){case o.textarea:return import(`@volverjs/ui-vue/vv-textarea`);case o.radio:return import(`@volverjs/ui-vue/vv-radio`);case o.radioGroup:return import(`@volverjs/ui-vue/vv-radio-group`);case o.checkbox:return import(`@volverjs/ui-vue/vv-checkbox`);case o.checkboxGroup:return import(`@volverjs/ui-vue/vv-checkbox-group`);case o.select:return import(`@volverjs/ui-vue/vv-select`);case o.combobox:return import(`@volverjs/ui-vue/vv-combobox`)}return import(`@volverjs/ui-vue/vv-input-text`)})}),hasProps:w,invalid:v}},render(){return this.is?(0,t.h)(this.is,this.hasProps,this.$slots):this.type===o.custom?(0,t.h)(this.component,null,this.$slots):(0,t.h)(this.component,this.hasProps,this.$slots)}})}function I(e,n,r){return(0,t.defineComponent)({name:`VvFormFieldsGroup`,props:{is:{type:[Object,String],default:void 0},names:{type:[Array,Object],required:!0},props:{type:[Object,Function],default:()=>({})},showValid:{type:Boolean,default:!1},defaultValues:{type:[Object],default:void 0},readonly:{type:Boolean,default:void 0}},emits:[`invalid`,`update:formData`,`update:modelValue`,`valid`],expose:[`component`,`errors`,`hasProps`,`invalid`,`invalidLabels`,`is`],slots:Object,setup(i,{slots:o,emit:s}){let{props:c,names:l,defaultValues:u}=(0,t.toRefs)(i),d=(0,t.useId)(),f=(0,t.computed)(()=>Array.isArray(l.value)?l.value:Object.values(l.value)),p=(0,t.computed)(()=>Array.isArray(l.value)?l.value:Object.keys(l.value)),m=(0,t.computed)(()=>Array.isArray(l.value)?l.value.reduce((e,t)=>(e[String(t)]=t,e),{}):l.value),h=(0,t.computed)(()=>Object.keys(m.value).reduce((e,t)=>(e[String(m.value[t])]=t,e),{})),g=(0,t.inject)(n,void 0);g&&f.value.forEach(e=>{g.fields.value.set(`${d}-${e}`,e)});let _=(0,t.inject)(e),v=(0,t.computed)({get(){return _?.formData?p.value.reduce((e,t)=>(e[t]=(0,a.getProperty)(new Object(_.formData.value),m.value[t]),e),{}):{}},set(e){_?.formData&&(p.value.forEach(t=>{(0,a.setProperty)(new Object(_.formData.value),m.value[t],e?.[t])}),s(`update:modelValue`,{newValue:v.value,formData:_?.formData}))}});(0,t.onMounted)(()=>{u.value&&f.value.forEach(e=>{u.value?.[e]!==void 0&&v.value[e]===void 0&&(v.value={...v.value,[e]:u.value?.[e]})})}),(0,t.onBeforeUnmount)(()=>{g&&f.value.forEach(e=>{g.fields.value.delete(`${d}-${e}`)})});let y=(0,t.computed)(()=>{if(!_?.errors.value)return;let e=f.value.reduce((e,t)=>{if(!_.errors.value)return e;let n=(0,a.getProperty)(_.errors.value,String(t));return n===void 0||(e[String(t)]=n),e},{});if(Object.keys(e).length!==0)return e}),b=(0,t.computed)(()=>{if(!y.value)return;let e=Object.keys(y.value).reduce((e,t)=>(y.value?.[t]&&(e[h.value[t]]=y.value[t]._errors),e),{});if(Object.keys(e).length!==0)return e}),x=(0,t.computed)(()=>y.value!==void 0),S=(0,t.computed)(()=>p.value.reduce((e,t)=>(e[t]=!!y.value?.[m.value[t]],e),{})),C=(0,t.watch)(x,()=>{if(x.value){s(`invalid`,y.value),g&&f.value.forEach(e=>{if(!y.value?.[e]){g.errors.value.delete(e);return}g.errors.value.set(e,y.value?.[e])});return}s(`valid`,v.value),g&&f.value.forEach(e=>{g.errors.value.delete(e)})}),w=(0,t.watch)(()=>_?.formData,()=>{s(`update:formData`,_?.formData)},{deep:!0});(0,t.onBeforeUnmount)(()=>{C(),w()});let T=e=>{v.value=e},E=(e,t)=>{t instanceof InputEvent&&(t=t.target.value),p.value.includes(e)&&(v.value={...v.value,[e]:t})},D=(0,t.computed)(()=>{let e=c.value;return typeof e==`function`&&(e=e(_?.formData)),Object.keys(e).reduce((n,r)=>(n[r]=(0,t.unref)(e[r]),n),{})}),O=(0,t.computed)(()=>_?.readonly.value?!0:D.value.readonly??i.readonly),k=(0,t.computed)(()=>p.value.reduce((e,t)=>(e[`onUpdate:${t}`]=e=>{E(t,e)},e),{"onUpdate:modelValue":T})),A=(0,t.computed)(()=>({...k.value,...D.value,...v.value,modelValue:v.value,names:D.value.name??f.value,invalid:x.value,invalids:S.value,valid:i.showValid?!!(!x.value&&v.value):void 0,invalidLabels:b.value,readonly:O.value}));return(0,t.provide)(r,{names:(0,t.readonly)(l),errors:(0,t.readonly)(y)}),{component:(0,t.computed)(()=>({render(){return o.default?.({errors:y.value,formData:_?.formData.value,formErrors:_?.errors.value,invalid:x.value,invalids:S.value,invalidLabels:b.value,modelValue:v.value,onUpdate:T,onUpdateField:E,readonly:O.value,submit:_?.submit,validate:_?.validate})??o.default}})),hasProps:A,invalid:x}},render(){return this.is?(0,t.h)(this.is,this.hasProps,this.$slots):(0,t.h)(this.component,null,this.$slots)}})}function L(e,n){return(0,t.defineComponent)({name:`VvFormWrapper`,props:{name:{type:String,required:!0},tag:{type:String,default:void 0},readonly:{type:Boolean,default:!1}},emits:[`invalid`,`valid`],expose:[`clear`,`errors`,`fields`,`fieldsErrors`,`formData`,`invalid`,`readonly`,`reset`,`submit`,`tag`,`validate`,`validateWrapper`],slots:Object,setup(r,{emit:i}){let a=(0,t.inject)(e),o=(0,t.inject)(n,void 0),s=(0,t.ref)(new Map),c=(0,t.ref)(new Map),{name:l}=(0,t.toRefs)(r),u=(0,t.computed)(()=>a?.invalid.value?c.value.size>0:!1);(0,t.watch)(u,e=>{if(e){i(`invalid`);return}i(`valid`)});let d=(0,t.computed)(()=>a?.readonly.value||r.readonly),f={name:(0,t.readonly)(l),errors:c,invalid:(0,t.readonly)(u),readonly:(0,t.readonly)(d),fields:s};return(0,t.provide)(n,f),(0,t.watch)((0,t.computed)(()=>new Map(s.value)),(e,t)=>{o?.fields&&(t.forEach((t,n)=>{e.has(n)||o?.fields.value.delete(n)}),e.forEach((e,t)=>{o?.fields.value.has(t)||o?.fields.value.set(t,e)}))},{deep:!0}),(0,t.watch)(c,e=>{o?.errors&&s.value.forEach(t=>{if(e.has(t)||o.errors.value.delete(t),e.has(t)){let n=e.get(t);n&&o.errors.value.set(t,n)}})},{deep:!0}),(0,t.onMounted)(()=>{if(!a?.wrappers||!l.value){console.warn(`[@volverjs/form-vue]: Invalid wrapper registration state`);return}if(a.wrappers.has(l.value)){console.warn(`[@volverjs/form-vue]: wrapper name "${l.value}" is already used`);return}a.wrappers.set(l.value,f)}),(0,t.onBeforeUnmount)(()=>{a?.wrappers&&l.value&&a.wrappers.delete(l.value)}),{errors:a?.errors,fields:s,fieldsErrors:c,formData:a?.formData,invalid:u,readonly:d,clear:a?.clear,reset:a?.reset,submit:a?.submit,validate:a?.validate,validateWrapper:()=>a?.validate(void 0,{fields:new Set(s.value.values())})??Promise.resolve(!0)}},render(){let e=()=>this.$slots.default?.({errors:this.errors,fieldsErrors:this.fieldsErrors,formData:this.formData,invalid:this.invalid,readonly:this.readonly,clear:this.clear,reset:this.reset,submit:this.submit,validate:this.validate,validateWrapper:this.validateWrapper});return this.tag?(0,t.h)(this.tag,null,{default:e}):e()}})}function R(e,n){let r=(0,t.defineComponent)({name:`VvFormTemplate`,props:{schema:{type:[Array,Function],required:!0},scope:{type:Object,default:()=>({})}},slots:Object,setup(i,{slots:o}){let s=(0,t.inject)(e);if(s?.formData)return()=>{let e=typeof i.schema==`function`?i.schema(s,i.scope):i.schema,c,l=e.reduce((e,o)=>{let{vvIs:l,vvName:u,vvSlots:d,vvChildren:f,vvIf:p,vvElseIf:m,vvType:h,vvDefaultValue:g,vvShowValid:_,vvContent:v,...y}=typeof o==`function`?o(s,i.scope):o;if(p!==void 0){if(c=typeof p==`string`?!!(0,a.getProperty)(new Object(s.formData.value),p):typeof p==`function`?(0,t.unref)(p(s)):(0,t.unref)(p),!c)return e}else if(m!==void 0&&c!==void 0){if(c||(c=typeof m==`string`?!!(0,a.getProperty)(new Object(s.formData.value),m):typeof m==`function`?(0,t.unref)(m(s)):(0,t.unref)(m),!c))return e}else c=void 0;let b;return f&&(b=typeof l==`string`?(0,t.h)(r,{schema:f}):{default:e=>(0,t.h)(r,{schema:f,scope:e})}),u?(e.push((0,t.h)(n,{name:u,is:l,type:h,defaultValue:g,showValid:_,props:y},d??b??v)),e):l?(e.push((0,t.h)(l,y,d??b??v)),e):(b&&(`default`in b?e.push(b.default(i.scope)):e.push(b)),e)},[]);return l.push(o?.default?.({errors:s?.errors.value,formData:s?.formData.value,invalid:s?.invalid.value,status:s?.status.value,submit:s?.submit,validate:s?.validate,clear:s?.clear,reset:s?.reset})),l}}});return r}function z(e,t={}){let n=Symbol(`formInjectionKey`),r=Symbol(`formWrapperInjectionKey`),i=Symbol(`formFieldInjectionKey`),a=Symbol(`formFieldsGroupInjectionKey`),o=L(n,r),s=F(n,r,i,t),c=I(n,r,a),l=R(n,s),u=new Map,{clear:d,errors:f,formData:p,ignoreUpdates:m,invalid:h,readonly:g,reset:_,status:v,stopUpdatesWatch:y,submit:b,validate:x,VvForm:S}=P(e,n,t,l,u);return{clear:d,errors:f,formData:p,formFieldInjectionKey:i,formInjectionKey:n,formWrapperInjectionKey:r,ignoreUpdates:m,invalid:h,readonly:g,reset:_,status:v,stopUpdatesWatch:y,submit:b,validate:x,wrappers:u,VvForm:S,VvFormField:s,VvFormFieldsGroup:c,VvFormTemplate:l,VvFormWrapper:o}}var B=Symbol(`pluginInjectionKey`);function V(e){let t={};return e.schema&&(t=z(e.schema,e)),{...t,install(n,{global:r=!1}={}){n.provide(B,e),r&&(n.config.globalProperties.$vvForm=e,t?.VvForm&&n.component(`VvForm`,t.VvForm),t?.VvFormWrapper&&n.component(`VvFormWrapper`,t.VvFormWrapper),t?.VvFormField&&n.component(`VvFormField`,t.VvFormField),t?.VvFormFieldsGroup&&n.component(`VvFormFieldsGroup`,t.VvFormFieldsGroup),t?.VvFormTemplate&&n.component(`VvFormTemplate`,t.VvFormTemplate))}}}var H=new Map;function U(e,n={}){if(n.scope&&H.has(n.scope))return H.get(n.scope);if(!(0,t.getCurrentInstance)()){let t=z(e,n);return n.scope&&H.set(n.scope,t),t}let r=z(e,{...(0,t.inject)(B,{}),...n});return n.scope&&H.set(n.scope,r),r}function W(e,t={}){return z(e,t)}e.FormFieldType=o,e.createForm=V,e.defaultObjectBySchema=A,e.formType=W,e.pluginInjectionKey=B,e.useForm=U});
|
|
@@ -5,7 +5,7 @@ export declare function defineForm<Schema extends FormSchema, Type, FormTemplate
|
|
|
5
5
|
clear: () => void;
|
|
6
6
|
errors: import('vue').Ref<InferFormattedError<Schema> | undefined, InferFormattedError<Schema> | undefined>;
|
|
7
7
|
formData: import('vue').Ref<(undefined extends Type ? Partial<InferSchema<Schema>> : Type) | undefined, (undefined extends Type ? Partial<InferSchema<Schema>> : Type) | undefined>;
|
|
8
|
-
ignoreUpdates: import('@vueuse/
|
|
8
|
+
ignoreUpdates: import('@vueuse/core').IgnoredUpdater;
|
|
9
9
|
invalid: import('vue').ComputedRef<boolean>;
|
|
10
10
|
readonly: import('vue').Ref<boolean, boolean>;
|
|
11
11
|
reset: () => void;
|
|
@@ -53,7 +53,7 @@ export declare function defineForm<Schema extends FormSchema, Type, FormTemplate
|
|
|
53
53
|
clear: () => void;
|
|
54
54
|
errors: Readonly<import('vue').Ref<import('vue').DeepReadonly<InferFormattedError<Schema>> | undefined, import('vue').DeepReadonly<InferFormattedError<Schema>> | undefined>>;
|
|
55
55
|
formData: import('vue').Ref<(undefined extends Type ? Partial<InferSchema<Schema>> : Type) | undefined, (undefined extends Type ? Partial<InferSchema<Schema>> : Type) | undefined>;
|
|
56
|
-
ignoreUpdates: import('@vueuse/
|
|
56
|
+
ignoreUpdates: import('@vueuse/core').IgnoredUpdater;
|
|
57
57
|
invalid: import('vue').ComputedRef<boolean>;
|
|
58
58
|
isReadonly: import('vue').Ref<boolean, boolean>;
|
|
59
59
|
reset: () => void;
|
|
@@ -118,7 +118,7 @@ export declare function defineForm<Schema extends FormSchema, Type, FormTemplate
|
|
|
118
118
|
status: UnwrapRef<Readonly<import('vue').Ref<FormStatus | undefined, FormStatus | undefined>>>;
|
|
119
119
|
wrappers: typeof wrappers;
|
|
120
120
|
clear: () => void;
|
|
121
|
-
ignoreUpdates: import('@vueuse/
|
|
121
|
+
ignoreUpdates: import('@vueuse/core').IgnoredUpdater;
|
|
122
122
|
reset: () => void;
|
|
123
123
|
stopUpdatesWatch: import('vue').WatchStopHandle;
|
|
124
124
|
submit: (options?: {
|
|
@@ -46,7 +46,7 @@ export declare function defineFormField<Schema extends FormSchema, Type = undefi
|
|
|
46
46
|
name: {} | ([{
|
|
47
47
|
type: PropType<Path<InferSchema<Schema>>>;
|
|
48
48
|
required: true;
|
|
49
|
-
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('
|
|
49
|
+
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
|
|
50
50
|
type: PropType<Path<InferSchema<Schema>>>;
|
|
51
51
|
required: true;
|
|
52
52
|
});
|
|
@@ -104,7 +104,7 @@ export declare function defineFormField<Schema extends FormSchema, Type = undefi
|
|
|
104
104
|
props: [{
|
|
105
105
|
type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
|
|
106
106
|
default: () => {};
|
|
107
|
-
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('
|
|
107
|
+
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
|
|
108
108
|
type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
|
|
109
109
|
default: () => {};
|
|
110
110
|
};
|
|
@@ -76,7 +76,7 @@ export declare function defineFormFieldsGroup<Schema extends FormSchema, Type =
|
|
|
76
76
|
props: [{
|
|
77
77
|
type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
|
|
78
78
|
default: () => {};
|
|
79
|
-
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('
|
|
79
|
+
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
|
|
80
80
|
type: PropType<Partial<InferSchema<Schema> | undefined | ((formData?: Ref<ObjectConstructor>) => Partial<InferSchema<Schema>> | undefined)>>;
|
|
81
81
|
default: () => {};
|
|
82
82
|
};
|
|
@@ -85,7 +85,7 @@ export declare function defineFormFieldsGroup<Schema extends FormSchema, Type =
|
|
|
85
85
|
defaultValues: [{
|
|
86
86
|
type: PropType<Record<Path<InferSchema<Schema>>, any>>;
|
|
87
87
|
default: undefined;
|
|
88
|
-
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('
|
|
88
|
+
}] extends [import('vue').Prop<infer V, infer D>] ? unknown extends V ? keyof V extends never ? import('../node_modules/@vue/shared').IfAny<V, V, D> : V : V : {
|
|
89
89
|
type: PropType<Record<Path<InferSchema<Schema>>, any>>;
|
|
90
90
|
default: undefined;
|
|
91
91
|
};
|