vue-formik
Version:
3 lines (2 loc) • 18.8 kB
JavaScript
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),I=t=>{const o=t.split(/[[\]]/g).filter(Boolean);if(!o.length)throw new Error(`Invalid path segment: ${t}`);const n=o[0],l=o.slice(1).map(d=>{const r=parseInt(d,10);if(isNaN(r))throw new Error(`Invalid array index: ${d}`);if(r<0)throw new Error(`Negative array index: ${r}`);return r});return{key:n,indices:l}};function V(t,o,n){if(t==null)return console.error("Cannot update null/undefined object"),t;if(typeof t!="object")return console.error("Target must be an object"),t;if(!o)return console.error("Path cannot be empty"),t;const l=o.split("."),d=Array.isArray(t)?[...t]:{...t};let r=d;for(let i=0;i<l.length;i++){const a=i===l.length-1,u=l[i],{key:c,indices:p}=I(u);if(!c)throw new Error(`Invalid path segment: ${u}`);let s=r,f=c;for(let y=0;y<p.length;y++){const b=p[y],v=i<l.length-1,h=y<p.length-1,E=v||h;Array.isArray(s[f])||(s[f]=[]);const k=[...s[f]];if(b>=k.length){const F=E?{}:void 0,B=Array(b-k.length+1).fill(F);k.push(...B)}k[b]===void 0&&E&&(k[b]={}),s[f]=k,s=k,f=b}if(a)s[f]=n;else{const y=l[i+1],b=I(y).indices.length>0;s[f]===void 0||s[f]===null?s[f]=b?[]:{}:typeof s[f]!="object"&&(s[f]=b?[]:{}),s[f]=Array.isArray(s[f])?[...s[f]]:{...s[f]},r=s[f]}}return Object.assign(t,d),d}function S(t,o){if(t==null||typeof t!="object")return;let n=t;const l=o.split(".");for(const d of l){let r;try{if(r=I(d),!r.key)return}catch{return}if(n=n[r.key],n==null)return;for(const i of r.indices)if(!Array.isArray(n)||i<0||i>=n.length||(n=n[i],n==null))return}return n}function q(t,o={}){if(!t||typeof t!="object")return;const{preservePrototype:n=!0,deep:l=!0,preserveEmpty:d=!1,exclude:r=new Set}=o;if(t instanceof Map||t instanceof Set||t instanceof WeakMap||t instanceof WeakSet||a(t)||u(t)){W(t);return}const i=s=>r.has(s);function a(s){return typeof window<"u"&&s&&typeof s=="object"&&"nodeType"in s}function u(s){return!!s&&("__v_isRef"in s||"__v_isReactive"in s)}function c(s){return s instanceof Map||s instanceof Set||s instanceof WeakMap||s instanceof WeakSet||a(s)||u(s)}const p=(s,f="",y=new WeakSet)=>{if(!s||typeof s!="object"||y.has(s)||(y.add(s),Object.isFrozen(s)))return;const b=Object.getPrototypeOf(s),v=[...Object.getOwnPropertyNames(s),...Object.getOwnPropertySymbols(s)];for(const h of v){const E=f?`${f}.${String(h)}`:String(h);if(i(E))continue;const k=Object.getOwnPropertyDescriptor(s,h);if(!(k!=null&&k.configurable))continue;const F=s[h];if(F&&typeof F=="object"){if(c(F)){W(F);continue}if(F===s){delete s[h];continue}if(Array.isArray(F)){d?F.length=0:delete s[h];continue}l&&(p(F,E,y),!d&&Object.keys(F).length===0&&delete s[h]);continue}try{delete s[h]}catch(B){console.warn(`Could not delete property ${String(h)}:`,B)}}n&&Object.setPrototypeOf(s,b)};try{p(t)}catch(s){console.warn("Error during object clearing:",s)}}const _={Map:t=>t.clear(),Set:t=>t.clear()};function W(t){const o=_[t.constructor.name];o==null||o(t)}const $=t=>{if(t===null||typeof t!="object")return t;if(Array.isArray(t))return t.map(n=>$(n));const o={};for(const n in t)t.hasOwnProperty(n)&&(o[n]=$(t[n]));return o},A=(t,o=!1)=>`${t}${o?" *":""}`,x=(t,o)=>{var l;const n={};try{o.validateSync(t,{abortEarly:!1})}catch(d){const r=d;(l=r==null?void 0:r.inner)!=null&&l.length&&r.inner.forEach(({path:i,message:a})=>{V(n,i,a)})}return n},ee=(t,o)=>{var d;const n={},{error:l}=o.validate(t,{abortEarly:!1});if(l){const r=l;(d=r==null?void 0:r.details)!=null&&d.length&&r.details.forEach(({context:i,message:a})=>{V(n,i.label,a)})}return n},J=t=>{let o="";return t.forEach((n,l)=>{o+=typeof n=="number"?`[${n}]`:l===0?n:`.${n}`}),o},re=(t,o)=>{const n={},l=o.safeParse(t);return l.success||l.error.errors.forEach(({path:d,message:r})=>{V(n,J(d),r)}),n},z=t=>typeof t=="function",ne=t=>typeof t=="function",H=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),te=(t,o)=>{if(ne(o))return o(t);const n={},l=(r,i,a)=>{const u=S(t,i),c=r(u,t);c!=null&&V(a,i,c)},d=(r,i,a)=>{Object.entries(r).forEach(([u,c])=>{const p=i?`${i}.${u}`:u;z(c)?l(c,p,a):H(c)&&d(c,p,a)})};return Object.entries(o).forEach(([r,i])=>{z(i)?l(i,r,n):H(i)&&d(i,r,n)}),n};class Y extends TypeError{constructor(o,n){let l;const{message:d,explanation:r,...i}=o,{path:a}=o,u=a.length===0?d:`At path: ${a.join(".")} -- ${d}`;super(r??u),r!=null&&(this.cause=u),Object.assign(this,i),this.name=this.constructor.name,this.failures=()=>l??(l=[o,...n()])}}function oe(t){return typeof t=="object"&&t!=null}function ae(t){const{done:o,value:n}=t.next();return o?void 0:n}function*Z(t,o,n={}){const{path:l=[],branch:d=[t],coerce:r=!1,mask:i=!1}=n,a={path:l,branch:d,mask:i};r&&(t=o.coercer(t,a));let u="valid";for(const c of o.validator(t,a))c.explanation=n.message,u="not_valid",yield[c,void 0];for(let[c,p,s]of o.entries(t,a)){const f=Z(p,s,{path:c===void 0?l:[...l,c],branch:c===void 0?d:[...d,p],coerce:r,mask:i,message:n.message});for(const y of f)y[0]?(u=y[0].refinement!=null?"not_refined":"not_valid",yield[y[0],void 0]):r&&(p=y[1],c===void 0?t=p:t instanceof Map?t.set(c,p):t instanceof Set?t.add(p):oe(t)&&(p!==void 0||c in t)&&(t[c]=p))}if(u!=="not_valid")for(const c of o.refiner(t,a))c.explanation=n.message,u="not_refined",yield[c,void 0];u==="valid"&&(yield[void 0,t])}function le(t,o,n){const l=ie(t,o,{message:n});if(l[0])throw l[0]}function ie(t,o,n={}){const l=Z(t,o,n),d=ae(l);return d[0]?[new Y(d[0],function*(){for(const i of l)i[0]&&(yield i[0])}),void 0]:[void 0,d[1]]}const se=(t,o)=>{const n={};try{le(t,o)}catch(l){if(l instanceof Y){const d=l.failures();console.log(d,"---");for(const r of d){const{path:i,message:a}=r;V(n,J(i),a)}}}return n},de=(t,{yupSchema:o,joiSchema:n,zodSchema:l,structSchema:d,validationSchema:r})=>{let i={};return o?i=x(t,o):n?i=ee(t,n):l?i=re(t,l):r?i=te(t,r):d&&(i=se(t,d)),i},ue=({initialValues:t,validationSchema:o,yupSchema:n,zodSchema:l,joiSchema:d,structSchema:r,onSubmit:i,validateOnMount:a=!0,preventDefault:u=!0})=>{const c=e.ref(!1),p=e.ref(!1),s=e.ref(0),f=e.reactive($(t)),y=()=>de(e.toRaw(b),{yupSchema:n,joiSchema:d,zodSchema:l,validationSchema:o,structSchema:r}),b=e.reactive({...$(t)}),v=e.reactive({}),h=e.reactive({}),E=e.computed(()=>Object.keys(v).length===0),k=e.computed(()=>JSON.stringify(b)!==JSON.stringify(f)),F=m=>{Object.assign(b,m)},B=m=>{q(v),Object.assign(v,m)},D=m=>{q(h),Object.assign(h,m)},j=({values:m,keepTouched:g=!1}={})=>{m?(F(Object.assign(f,$(m))),Object.assign(f,$(m))):F($(f)),g||q(h),s.value=0},O=(m,g)=>{V(b,m,g)},w=(m,g)=>{V(h,m,g)},N=m=>{c.value=m},G=m=>{if(typeof i=="function"){u&&m&&m.preventDefault(),s.value++,N(!0),p.value=!0;try{const g=y();B(g),Object.keys(g).length===0&&i(e.toRaw(b),{reset:j,setErrors:B,setValues:F,setSubmitting:N,setTouched:D,setFieldValue:O,setFieldTouched:w})}catch(g){console.error("Form submission error:",g)}finally{p.value=!1}}},T=m=>{const g=m.target;w(g.name,!0)},R=m=>{const g=m.target,P=g.type==="checkbox"?g.checked:g.value;O(g.name,P),w(g.name,!0)},M=()=>{p.value=!0;const m=y();q(v),Object.assign(v,m),p.value=!1};a&&M(),e.watch(()=>b,()=>{M()},{deep:!0});const L=m=>{const g=S(v,m),P=S(h,m);return!!(g&&P)},Q=m=>L(m)?S(v,m):"",U=m=>S(b,m),X=m=>S(h,m),K=e.computed(()=>({onBlur:T,onChange:R}));return{values:b,errors:v,touched:h,isValid:E,isDirty:k,isSubmitting:c,isValidating:p,submitCount:s,fieldHandlers:K,setValues:F,setErrors:B,setTouched:D,setFieldValue:O,setFieldTouched:w,setSubmitting:N,reset:j,handleSubmit:G,handleFieldBlur:T,handleFieldChange:R,hasFieldError:L,getFieldError:Q,getFieldValue:U,getFieldTouched:X}};function ce(t){return{push:(l,d,r)=>{const i=t.getFieldValue(l);if(!Array.isArray(i)){console.warn(`Field "${l}" is not an array`);return}if(!t.setFieldValue||typeof t.setFieldValue!="function"){console.warn("formik.setFieldValue is not a function or not available");return}const a=[...i];if(r===void 0)a.push(d);else{if(r<0||r>a.length){console.warn(`Index ${r} out of bounds for field "${l}"`);return}a.splice(r,0,d)}t.setFieldValue(l,a)},pop:(l,d)=>{const r=t.getFieldValue(l);if(!Array.isArray(r)){console.warn(`Field "${l}" is not an array`);return}if(r.length===0){console.warn(`Field "${l}" is an empty array`);return}const i=[...r];if(d===void 0)i.pop();else{if(d<0||d>=i.length){console.warn(`Index ${d} out of bounds for field "${l}"`);return}i.splice(d,1)}t.setFieldValue(l,i),d!==void 0&&t.setFieldTouched(`${l}[${d}]`)}}}function C(t){const o=e.inject("formik",null);return{formik:e.computed(()=>{const l=t||o;return l||(console.error("No Formik instance provided via injection or props"),null)}).value}}const fe=["for","id"],pe={class:"vf-input"},me=["id","name","placeholder","value","readonly","disabled","rows","required","aria-labelledby","aria-describedby","aria-invalid","aria-required","aria-readonly","aria-disabled"],ye=["id"],be=e.defineComponent({__name:"FormTextArea",props:{formik:{},name:{},label:{},placeholder:{},rows:{},readonly:{type:Boolean},disabled:{type:Boolean},required:{type:Boolean},inputProps:{}},setup(t){const o=t,{formik:n}=C(o.formik),l=e.computed(()=>n==null?void 0:n.getFieldValue(o.name)),d=r=>{const i=r.target.value;n==null||n.setFieldValue(o.name,i)};return(r,i)=>{var a,u,c,p,s,f;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"vf-field vf-textarea-field":!0,"vf-field--error":(a=e.unref(n))==null?void 0:a.hasFieldError(r.name)})},[r.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:r.name,id:r.name+"-label"},e.toDisplayString(e.unref(A)(r.label,r.required)),9,fe)):e.createCommentVNode("",!0),e.createElementVNode("div",pe,[e.renderSlot(r.$slots,"prepend"),e.createElementVNode("textarea",e.mergeProps({id:r.name,name:r.name,placeholder:r.placeholder,value:l.value,onInput:d,onBlur:i[0]||(i[0]=(...y)=>{var b,v;return((b=e.unref(n))==null?void 0:b.handleFieldBlur)&&((v=e.unref(n))==null?void 0:v.handleFieldBlur(...y))}),class:{"vf-input--disabled":r.disabled,"vf-input--readonly":r.readonly,"vf-input--error":(u=e.unref(n))==null?void 0:u.hasFieldError(r.name)},readonly:r.readonly,disabled:r.disabled,rows:r.rows,required:r.required},r.inputProps,{"aria-labelledby":r.label?r.name+"-label":void 0,"aria-describedby":(c=e.unref(n))!=null&&c.hasFieldError(r.name)?r.name+"-error":void 0,"aria-invalid":(p=e.unref(n))!=null&&p.hasFieldError(r.name)?"true":"false","aria-required":r.required?"true":void 0,"aria-readonly":r.readonly?"true":void 0,"aria-disabled":r.disabled?"true":void 0}),null,16,me),e.renderSlot(r.$slots,"append")]),(s=e.unref(n))!=null&&s.hasFieldError(r.name)?(e.openBlock(),e.createElementBlock("p",{key:1,class:"vf-error",id:r.name+"-error"},e.toDisplayString((f=e.unref(n))==null?void 0:f.getFieldError(r.name)),9,ye)):e.createCommentVNode("",!0),e.renderSlot(r.$slots,"default")],2)}}}),he=["for","id"],ve={class:"vf-input"},ge=["id","name","type","placeholder","value","readonly","required","disabled","aria-labelledby","aria-describedby","aria-invalid","aria-required","aria-readonly","aria-disabled"],Fe=["id"],ke=["id"],Ee=e.defineComponent({__name:"FormInput",props:{formik:{},name:{},label:{},type:{},placeholder:{},readonly:{type:Boolean},disabled:{type:Boolean},required:{type:Boolean},inputProps:{},validation:{}},setup(t){const o=t,{formik:n}=C(o.formik),l=e.computed(()=>n==null?void 0:n.getFieldValue(o.name)),d=u=>{const c=u.target.value;n==null||n.setFieldValue(o.name,c)},r=e.computed(()=>`vf-${o.type||"text"}-field`),i=e.computed(()=>n==null?void 0:n.hasFieldError(o.name)),a=e.computed(()=>n==null?void 0:n.getFieldError(o.name));return(u,c)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"vf-field":!0,[r.value]:!0,"vf-field--error":i.value})},[u.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:u.name,id:u.name+"-label"},e.toDisplayString(e.unref(A)(u.label,u.required)),9,he)):e.createCommentVNode("",!0),e.createElementVNode("div",ve,[e.renderSlot(u.$slots,"prepend"),e.createElementVNode("input",e.mergeProps({id:u.name,name:u.name,type:u.type||"text",placeholder:u.placeholder,value:l.value,readonly:u.readonly,required:u.required,disabled:u.disabled,onInput:d,onBlur:c[0]||(c[0]=(...p)=>{var s,f;return((s=e.unref(n))==null?void 0:s.handleFieldBlur)&&((f=e.unref(n))==null?void 0:f.handleFieldBlur(...p))}),class:{"vf-input--error":i.value,"vf-input--readonly":u.readonly,"vf-input--disabled":u.disabled}},u.inputProps,{"aria-labelledby":u.label?u.name+"-label":void 0,"aria-describedby":i.value?u.name+"-error":void 0,"aria-invalid":i.value?"true":"false","aria-required":u.required?"true":void 0,"aria-readonly":u.readonly?"true":void 0,"aria-disabled":u.disabled?"true":void 0}),null,16,ge),e.renderSlot(u.$slots,"append")]),i.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[typeof a.value=="string"?(e.openBlock(),e.createElementBlock("p",{key:0,class:"vf-error",id:u.name+"-error"},e.toDisplayString(a.value),9,Fe)):Array.isArray(a.value)?(e.openBlock(),e.createElementBlock("ul",{key:1,class:"vf-error",id:u.name+"-error"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(p,s)=>(e.openBlock(),e.createElementBlock("li",{key:s},e.toDisplayString(p),1))),128))],8,ke)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.renderSlot(u.$slots,"default")],2))}}),Be=["for","id"],$e={class:"vf-input"},Ve=["id","name","value","disabled","required","aria-labelledby","aria-describedby","aria-invalid","aria-required","aria-disabled"],Se={key:0,disabled:"",value:""},Ce=["value"],we=["id"],qe=e.defineComponent({__name:"FormSelectField",props:{formik:{},name:{},label:{},options:{},placeholder:{},inputProps:{},disabled:{type:Boolean},required:{type:Boolean}},setup(t){const o=t,{formik:n}=C(o.formik),l=e.computed(()=>n==null?void 0:n.getFieldValue(o.name)),d=r=>{const i=r.target.value;n==null||n.setFieldValue(o.name,i)};return(r,i)=>{var a,u,c,p,s,f;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"vf-field vf-select-field":!0,"vf-field--error":(a=e.unref(n))==null?void 0:a.hasFieldError(r.name)})},[r.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:r.name,id:r.name+"-label"},e.toDisplayString(e.unref(A)(r.label,r.required)),9,Be)):e.createCommentVNode("",!0),e.createElementVNode("div",$e,[e.renderSlot(r.$slots,"prepend"),e.createElementVNode("select",e.mergeProps({id:r.name,name:r.name,value:l.value,onChange:d,onBlur:i[0]||(i[0]=(...y)=>{var b,v;return((b=e.unref(n))==null?void 0:b.handleFieldBlur)&&((v=e.unref(n))==null?void 0:v.handleFieldBlur(...y))}),class:{"vf-input--error":(u=e.unref(n))==null?void 0:u.hasFieldError(r.name),"vf-input--disabled":r.disabled},disabled:r.disabled,required:r.required},r.inputProps,{"aria-labelledby":r.label?r.name+"-label":void 0,"aria-describedby":(c=e.unref(n))!=null&&c.hasFieldError(r.name)?r.name+"-error":void 0,"aria-invalid":(p=e.unref(n))!=null&&p.hasFieldError(r.name)?"true":"false","aria-required":r.required?"true":void 0,"aria-disabled":r.disabled?"true":void 0}),[r.placeholder?(e.openBlock(),e.createElementBlock("option",Se,e.toDisplayString(r.placeholder),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.options,y=>(e.openBlock(),e.createElementBlock("option",{key:y.value,value:y.value},e.toDisplayString(y.label),9,Ce))),128))],16,Ve),e.renderSlot(r.$slots,"append")]),(s=e.unref(n))!=null&&s.hasFieldError(r.name)?(e.openBlock(),e.createElementBlock("p",{key:1,class:"vf-error",id:r.name+"-error"},e.toDisplayString((f=e.unref(n))==null?void 0:f.getFieldError(r.name)),9,we)):e.createCommentVNode("",!0),e.renderSlot(r.$slots,"default")],2)}}}),Ae=["for","id"],Oe={class:"vf-input"},Ne=["id","aria-labelledby","aria-describedby","aria-invalid","aria-required","aria-disabled","aria-readonly","contenteditable","tabindex"],Pe={key:0},Ie=["id"],De=e.defineComponent({__name:"FormContentEditable",props:{formik:{},name:{},label:{},placeholder:{},contentProps:{},disabled:{type:Boolean},readonly:{type:Boolean},required:{type:Boolean}},setup(t){const o=t,{formik:n}=C(o.formik),l=e.computed(()=>n==null?void 0:n.getFieldValue(o.name)),d=e.computed(()=>l.value.trim().length>0),r=a=>{if(o.disabled||o.readonly)return;const u=a.target.innerText;n==null||n.setFieldValue(o.name,u)},i=a=>{o.disabled||o.readonly||d.value||(a.target.innerHTML="")};return(a,u)=>{var c,p,s,f,y,b;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass({"vf-field":!0,"vf-content-editable-field":!0,"vf-field--error":(c=e.unref(n))==null?void 0:c.hasFieldError(a.name),"vf-field--disabled":a.disabled,"vf-field--readonly":a.readonly})},[a.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:a.name,id:a.name+"-label"},e.toDisplayString(e.unref(A)(a.label,a.required)),9,Ae)):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[e.renderSlot(a.$slots,"prepend"),e.createElementVNode("div",e.mergeProps({id:a.name,role:"textbox","aria-labelledby":a.label?a.name+"-label":void 0,"aria-describedby":(p=e.unref(n))!=null&&p.hasFieldError(a.name)?a.name+"-error":void 0,"aria-invalid":(s=e.unref(n))!=null&&s.hasFieldError(a.name)?"true":"false","aria-required":a.required?"true":void 0,"aria-disabled":a.disabled?"true":void 0,"aria-readonly":a.readonly?"true":void 0,contenteditable:!a.disabled&&!a.readonly,class:{"vf-input--error":(f=e.unref(n))==null?void 0:f.hasFieldError(a.name),"vf-input--placeholder":!d.value,"vf-input--disabled":a.disabled,"vf-input--readonly":a.readonly}},a.contentProps,{onInput:r,onBlur:u[0]||(u[0]=(...v)=>{var h,E;return((h=e.unref(n))==null?void 0:h.handleFieldBlur)&&((E=e.unref(n))==null?void 0:E.handleFieldBlur(...v))}),onFocus:i,tabindex:a.disabled?-1:0}),[d.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",Pe,e.toDisplayString(a.placeholder),1)),e.createTextVNode(e.toDisplayString(l.value),1)],16,Ne),e.renderSlot(a.$slots,"append")]),(y=e.unref(n))!=null&&y.hasFieldError(a.name)?(e.openBlock(),e.createElementBlock("p",{key:1,class:"vf--error",id:a.name+"-error"},e.toDisplayString((b=e.unref(n))==null?void 0:b.getFieldError(a.name)),9,Ie)):e.createCommentVNode("",!0),e.renderSlot(a.$slots,"default")],2)}}}),je=e.defineComponent({__name:"FormikForm",props:{formik:{},resetOptions:{}},setup(t){const o=t,{formik:n}=C(o.formik);return(l,d)=>(e.openBlock(),e.createElementBlock("form",e.mergeProps({class:"vf-form",onSubmit:d[0]||(d[0]=()=>{var r;return(r=e.unref(n))==null?void 0:r.handleSubmit()}),onReset:d[1]||(d[1]=()=>{var r;return(r=e.unref(n))==null?void 0:r.reset(l.resetOptions)})},l.$attrs),[e.renderSlot(l.$slots,"default")],16))}});exports.FormContentEditable=De;exports.FormInput=Ee;exports.FormSelectField=qe;exports.FormTextArea=be;exports.FormikForm=je;exports.useFieldArray=ce;exports.useFormik=ue;
//# sourceMappingURL=vue-formik.cjs.js.map
;