@uniquedj95/vform 3.1.3 → 3.1.4
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/README.md +1 -1
- package/dist/components/vForm.vue.d.ts +1 -1
- package/dist/composables/useDataTransformation.d.ts +1 -1
- package/dist/composables/useDataTransformation.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +154 -154
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
A dynamic form builder for Vue.js with Ionic components
|
8
8
|
|
9
|
-
[](https://github.com/uniquedj95/vform/releases)
|
10
10
|
[](https://opensource.org/licenses/MIT)
|
11
11
|
[](https://vuejs.org/)
|
12
12
|
[](https://www.typescriptlang.org/)
|
@@ -16,7 +16,7 @@ declare const _default: import('vue').DefineComponent<FormProps, {
|
|
16
16
|
isFormValid: () => Promise<boolean>;
|
17
17
|
resolveData: () => {
|
18
18
|
formData: FormData;
|
19
|
-
computedData:
|
19
|
+
computedData: ComputedData;
|
20
20
|
};
|
21
21
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
22
22
|
clear: () => any;
|
@@ -6,6 +6,6 @@ import { FormData, FormSchema, ComputedData } from 'types';
|
|
6
6
|
*/
|
7
7
|
export declare function useDataTransformation(activeSchema: Ref<FormSchema>): {
|
8
8
|
formData: import('vue').ComputedRef<FormData>;
|
9
|
-
computedData: ComputedData
|
9
|
+
computedData: Ref<ComputedData, ComputedData>;
|
10
10
|
};
|
11
11
|
//# sourceMappingURL=useDataTransformation.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useDataTransformation.d.ts","sourceRoot":"","sources":["../../src/composables/useDataTransformation.ts"],"names":[],"mappings":"AAAA,OAAO,
|
1
|
+
{"version":3,"file":"useDataTransformation.d.ts","sourceRoot":"","sources":["../../src/composables/useDataTransformation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,GAAG,EAAS,MAAM,KAAK,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAU,MAAM,OAAO,CAAC;AAGnE;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,GAAG,CAAC,UAAU,CAAC;;;EA8IlE"}
|
package/dist/index.cjs.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),h=require("@ionic/vue"),T=require("ionicons/icons"),H=require("@maskito/vue");function J(l){return new Promise(r=>{requestAnimationFrame(async()=>{const a=await l.getInputElement();r(a)})})}const Q={d:/\d/,a:/[A-Za-z]/,"*":/[A-Za-z0-9]/},X={d:["1","2","3","4","5","6","7","8","9","0"],a:["A","B","C","x","y","z","D","f"],"*":["A","3","b","8","z","4","D","0"]};function Y(l,r){const a=X[l];return a[r%a.length]}function ee(l){const r=[];let a="",t=0,o=0;for(;t<l.length;){const n=l[t];if(["d","a","*"].includes(n)){let s=1;if(l[t+1]==="{"){const u=l.indexOf("}",t+2);if(u!==-1){const p=l.slice(t+2,u);if(p.includes(",")){const[,i]=p.split(",").map(f=>parseInt(f.trim()));s=i||parseInt(p.split(",")[0])}else s=parseInt(p);t=u}}else{let u=t+1;for(;l[u]===n;)s++,u++;t=u-1}for(let u=0;u<s;u++)r.push(Q[n]),a+=Y(n,o++)}else r.push(n),a+=n;t++}return{mask:r,placeholder:a,elementPredicate:J}}function U(l){return l==null||Array.isArray(l)&&!l.length||typeof l=="object"&&!Object.keys(l).length||!l}function L(l,r,a){return typeof l.condition=="function"?l.condition(r,a):!0}function z(l){if(typeof l!="object"||l===null)return l;if(Array.isArray(l))return l.map(a=>z(a));const r={};return Object.entries(l).forEach(([a,t])=>{typeof t=="function"?r[a]=t.bind(r):r[a]=z(t)}),r}function $(l,r){return r.findIndex(a=>a.value===l.value||a.label===l.label||a.value===l.label||a.label===l.value)}function _(l,r){const a=$(l,r);a>=0?r[a].isChecked=!0:r.push({...l,isChecked:!0})}function q(l,r){const a=$(l,r);a>=0&&(r[a].isChecked=!1)}function te(l,r){return r?l.filter(a=>JSON.stringify(a).toLowerCase().includes(r.toLowerCase())):l}function P(l){const r=l.label||"",a=l.required?" *":"";return r+a}function A(l,r){if(l===r)return!0;if(l==null||r==null||typeof l!=typeof r)return!1;if(typeof l!="object")return l===r;if(Array.isArray(l)&&Array.isArray(r))return l.length!==r.length?!1:l.every((o,n)=>A(o,r[n]));if(Array.isArray(l)!==Array.isArray(r))return!1;const a=Object.keys(l),t=Object.keys(r);return a.length!==t.length?!1:a.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&A(l[o],r[o]))}function j(){const l=e.ref([]);async function r(){console.debug("Validating form inputs");const n=[];for(const s of l.value)if(typeof(s==null?void 0:s.onValueUpdate)=="function"&&await s.onValueUpdate(),typeof(s==null?void 0:s.getErrors)=="function")try{const u=s.getErrors();Array.isArray(u)?n.push(...u):console.warn("getErrors() returned non-array value:",u)}catch(u){console.error("Error calling getErrors on component:",u,s)}else console.warn("Component does not have getErrors function:",s);return n.every(U)}function a(){l.value.forEach(n=>{typeof(n==null?void 0:n.onReset)=="function"&&n.onReset()})}function t(){const n=[];for(const s of l.value)if(typeof(s==null?void 0:s.getErrors)=="function")try{const u=s.getErrors();Array.isArray(u)?n.push(...u):n.push(String(u))}catch(u){console.error("Error calling getErrors on component:",u,s)}return n}async function o(){for(const n of l.value)typeof(n==null?void 0:n.onValueUpdate)=="function"&&await n.onValueUpdate()}return{dynamicRefs:l,isFormValid:r,resetForm:a,getFormErrors:t,updateFormValues:o}}function le(l){const r=e.computed(()=>Object.entries(l.value).reduce((i,[f,m])=>(m.value!==void 0&&(typeof m.onChange=="function"?i[f]=m.onChange(m.value):i[f]=m.value),i),{})),a=e.reactive({}),t=(i,f,m)=>{var c;return typeof((c=l.value[i].children[f])==null?void 0:c.computedValue)=="function"?l.value[i].children[f].computedValue(m,l.value):m},o=(i,f,m,c)=>{a[i][c]||(a[i][c]={}),Object.entries(f.other??{}).forEach(([k,v])=>{var d;!A(v,(d=m.other)==null?void 0:d[k])&&(a[i][c][k]=t(i,k,v))})},n=(i,f,m)=>{f.forEach((c,k)=>{const v=m[k]??{other:{}};o(i,c,v,k)})},s=(i,{other:f})=>Object.entries(f??{}).reduce((m,[c,k])=>(m[c]=t(i,c,k),m),{}),u=(i,f,m)=>{a[i]||(a[i]=[]);const c=f;Array.isArray(m[i])?n(i,c,m[i]):a[i]=c.map(k=>s(i,k))},p=(i,f,m)=>{if(!f){delete a[i];return}const c=l.value[i];c.children!==void 0?u(i,f,m):typeof c.computedValue=="function"&&(a[i]=c.computedValue(f,l.value))};return e.watch(r,(i,f={})=>{Object.keys(i).forEach(m=>{A(i[m],f[m])||p(m,i[m],f)})},{immediate:!0,deep:!0}),{formData:r,computedData:a}}const oe=e.defineComponent({__name:"vForm",props:{schema:{},showLabels:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},showCancelButton:{type:Boolean,default:!0},buttonPlacement:{default:"start"},submitButtonText:{default:"Submit"},clearButtonText:{default:"Reset"},cancelButtonText:{default:"Cancel"},hideButtons:{type:Boolean,default:!1},customButtons:{}},emits:["submit","clear","cancel"],setup(l,{expose:r,emit:a}){const t=l,o=a,n=e.ref(t.schema),{dynamicRefs:s,isFormValid:u,resetForm:p}=j(),{formData:i,computedData:f}=le(n);async function m(){await u()&&o("submit",i.value,f.value)}function c(){p(),o("clear")}function k(){p(),o("cancel")}return e.watch(i,async()=>{for(const[v,C]of Object.entries(n.value))L(C,i.value,f.value)||(C.value=t.schema[v].value)},{deep:!0,immediate:!0}),e.watch(()=>t.schema,v=>{for(const[C,d]of Object.entries(v))d.value!==void 0&&(n.value[C].value=d.value)},{deep:!0,immediate:!0}),r({resetForm:p,isFormValid:u,resolveData:()=>({formData:i.value,computedData:f.value})}),(v,C)=>(e.openBlock(),e.createBlock(e.unref(h.IonGrid),null,{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonRow),null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Object.keys(n.value),d=>{var x,B,w,I,E;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(L)(n.value[d],e.unref(i),e.unref(f))?(e.openBlock(),e.createBlock(e.unref(h.IonCol),{key:d,size:((x=n.value[d].grid)==null?void 0:x.xs)??"12","size-sm":(B=n.value[d].grid)==null?void 0:B.sm,"size-md":(w=n.value[d].grid)==null?void 0:w.md,"size-lg":(I=n.value[d].grid)==null?void 0:I.lg,"size-xl":(E=n.value[d].grid)==null?void 0:E.xl,class:"ion-margin-vertical"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.value[d].type),{modelValue:n.value[d],"onUpdate:modelValue":F=>n.value[d]=F,schema:n.value,ref_for:!0,ref_key:"dynamicRefs",ref:s,"ref-key":d},null,8,["modelValue","onUpdate:modelValue","schema","ref-key"]))]),_:2},1032,["size","size-sm","size-md","size-lg","size-xl"])):e.createCommentVNode("",!0)],64)}),256))]),_:1}),v.hideButtons?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(h.IonRow),{key:0},{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonCol),{size:"12",style:e.normalizeStyle([{display:"flex"},{justifyContent:v.buttonPlacement}])},{default:e.withCtx(()=>[v.showCancelButton?(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:0,onClick:k},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.cancelButtonText??"Cancel"),1)]),_:1})):e.createCommentVNode("",!0),v.showClearButton?(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:1,onClick:c},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.clearButtonText??"Reset"),1)]),_:1})):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.customButtons,d=>(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:d.label,onClick:d.action,color:d.color??"primary"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.label),1)]),_:2},1032,["onClick","color"]))),128)),e.createVNode(e.unref(h.IonButton),{onClick:m},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.submitButtonText??"Submit"),1)]),_:1})]),_:1},8,["style"])]),_:1}))]),_:1}))}});function ne(l){return{applyValidationState:async t=>{var o,n,s,u,p;(o=l.value)==null||o.$el.classList.remove("ion-invalid"),(n=l.value)==null||n.$el.classList.remove("ion-valid"),t?(s=l.value)==null||s.$el.classList.add("ion-valid"):(u=l.value)==null||u.$el.classList.add("ion-invalid"),(p=l.value)==null||p.$el.classList.add("ion-touched")},resetValidationState:()=>{var t,o;(t=l.value)==null||t.$el.classList.remove("ion-touched"),(o=l.value)==null||o.$el.classList.remove("ion-invalid")}}}function S(l,r,a,t,o){const{applyValidationState:n,resetValidationState:s}=ne(l);async function u(){if(r.value.required&&!a.value)return r.value.error="This field is required",!1;if(o){const c=await o(a.value);if(typeof c=="string")return r.value.error=c,!1;if(c===!1)return!1}if(r.value.validation){const c=await r.value.validation(a.value,t==null?void 0:t.value);if(c&&c.length)return r.value.error=c.join(),!1}return!0}async function p(){const c=await u();c&&(r.value.error="",r.value.value=a.value),await n(c)}function i(){s(),r.value.error=""}function f(c=""){a.value=c,r.value.error="",r.value.value=c}function m(){return r.value.error?[r.value.error]:[]}return{isValid:u,onValueUpdate:p,onFocus:i,onReset:f,getErrors:m,applyValidationState:n,resetValidationState:s}}function ae(l){const r=e.computed(()=>!!l.value.label),a=e.computed(()=>!!l.value.required),t=e.computed(()=>l.value.label||"");return{showLabel:r,showRequired:a,labelText:t}}const D=e.defineComponent({__name:"InputLabel",props:{model:{}},setup(l){const r=l,{showLabel:a,showRequired:t,labelText:o}=ae(e.toRef(r,"model"));return(n,s)=>e.unref(a)?(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:0,slot:"label",class:"input-label"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(o))+" ",1),e.unref(t)?(e.openBlock(),e.createBlock(e.unref(h.IonText),{key:0,color:"danger"},{default:e.withCtx(()=>s[0]||(s[0]=[e.createTextVNode("*")])),_:1,__:[0]})):e.createCommentVNode("",!0)]),_:1})):e.createCommentVNode("",!0)}}),O=e.defineComponent({__name:"BaseInput",props:e.mergeModels({schema:{},type:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(t.value.value),s=e.computed(()=>a.schema),{isValid:u,onValueUpdate:p,onFocus:i,onReset:f,getErrors:m}=S(o,t,n,s),c=e.computed(()=>{if(t.value.pattern)return ee(t.value.pattern)});return e.watch(()=>t.value.value,k=>n.value=k),r({onValueUpdate:p,onReset:f,getErrors:m,isValid:u}),(k,v)=>{var d;const C=e.resolveDirective("maskito");return e.withDirectives((e.openBlock(),e.createBlock(e.unref(h.IonInput),{ref_key:"inputRef",ref:o,modelValue:n.value,"onUpdate:modelValue":v[0]||(v[0]=x=>n.value=x),"clear-input":!0,fill:t.value.fill??"solid","label-placement":t.value.labelPlacement??"stacked",type:k.type??"text",required:t.value.required,"error-text":t.value.error,autofocus:t.value.autoFocus,placeholder:((d=c.value)==null?void 0:d.placeholder)??t.value.placeholder,disabled:t.value.disabled,counter:t.value.counter,min:t.value.min,max:t.value.max,"max-length":t.value.maxLength,"min-length":t.value.minLength,pattern:t.value.pattern,onIonFocus:e.unref(i),onIonChange:e.unref(p),onIonBlur:e.unref(p)},{default:e.withCtx(()=>[e.createVNode(D,{model:t.value},null,8,["model"]),t.value.prefix?(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:0,slot:"start"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.value.prefix),1)]),_:1})):e.createCommentVNode("",!0),t.value.suffix?(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:1,slot:"end"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.value.suffix),1)]),_:1})):e.createCommentVNode("",!0),k.type==="password"?(e.openBlock(),e.createBlock(e.unref(h.IonInputPasswordToggle),{key:2,slot:"end"})):e.createCommentVNode("",!0)]),_:1},8,["modelValue","fill","label-placement","type","required","error-text","autofocus","placeholder","disabled","counter","min","max","max-length","min-length","pattern","onIonFocus","onIonChange","onIonBlur"])),[[C,c.value]])}}}),re=e.defineComponent({__name:"TextInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:"text",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","schema"]))}}),ue=e.defineComponent({__name:"DateInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:a.value.enableTime?"datetime-local":"date",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","type","schema"]))}}),se=e.defineComponent({__name:"NumberInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:"number",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","schema"]))}}),ce=e.defineComponent({__name:"EmailInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:"email",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","schema"]))}}),ie=e.defineComponent({__name:"PasswordInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:"password",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","schema"]))}}),de=e.defineComponent({__name:"SelectInput",props:e.mergeModels({schema:{},type:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(null),s=e.ref(!1),u=e.ref([]),p=e.ref(""),i=e.ref(1),f=e.computed(()=>t.value.interface??"popover"),m=e.computed(()=>t.value.optionsPlacement==="top"?"top":"bottom"),c=e.computed(()=>u.value.filter(y=>!!y.isChecked)),k=e.computed(()=>!p.value&&U(c.value)&&!s.value?t.value.placeholder??"Select an option":"");e.watch([p,()=>t.value.options],N,{immediate:!0,deep:!0}),e.watch(()=>t.value.value,W,{immediate:!0,deep:!0});function v(){u.value.forEach(y=>q(y,u.value)),t.value.error="",p.value="",i.value=1,t.value.value=t.value.multiple?[]:""}function C(y){if(y.isChecked)return q(y,u.value);t.value.multiple?_(y,u.value):(v(),_(y,u.value),R()),p.value=""}function d(){switch(f.value){case"action-sheet":x();break;case"alert":B();break;case"popover":default:s.value=!0;break}}async function x(){if(await N(),t.value.multiple){s.value=!0;return}await(await h.actionSheetController.create({header:t.value.label||"Select an option",buttons:[...u.value.map(g=>({text:g.label,cssClass:g.isChecked?"selected-option":"",handler:()=>(C(g),!1)})),{text:"Cancel",role:"cancel"}]})).present()}async function B(){await N();const y=u.value.map(V=>({label:V.label,type:t.value.multiple?"checkbox":"radio",value:V,checked:V.isChecked}));await(await h.alertController.create({header:t.value.label||"Select an option",inputs:y,buttons:[{text:"Cancel",role:"cancel"},{text:"OK",handler:V=>{if(t.value.multiple)u.value.forEach(b=>q(b,u.value)),V.forEach(b=>{const M=u.value.find(Z=>Z.value===b.value);M&&_(M,u.value)});else{v();const b=u.value.find(M=>M.value===V.value);b&&_(b,u.value)}R()}}]})).present()}async function w(){if(t.value.required&&U(c.value))return"This field is required";if(t.value.validation){const y=await t.value.validation(c.value,a==null?void 0:a.schema);if(y&&y.length)return y.join()}return!0}const{onFocus:I,applyValidationState:E}=S(o,t,e.computed(()=>t.value.multiple?c.value:c.value[0]),e.computed(()=>a==null?void 0:a.schema),w);function F(y){var g;y.target===((g=o.value)==null?void 0:g.$el)&&(I(),f.value==="popover"&&(s.value=!0))}async function R(y){var V;if((V=y==null?void 0:y.relatedTarget)!=null&&V.closest(".suggestions-list"))return;s.value=!1;const g=await w();g===!0?(t.value.error="",t.value.value=t.value.multiple?c.value:c.value[0]):t.value.error=typeof g=="string"?g:"Validation failed",await E(g===!0)}async function N(){const y=[];if(typeof t.value.options=="function"){const g=await t.value.options(p.value);y.push(...g.filter(V=>!!V.label))}else y.push(...te(t.value.options??[],p.value));c.value.forEach(g=>_(g,y)),u.value=y}function W(){const y=t.value.value;y&&(Array.isArray(y)?y.forEach(g=>_(g,u.value)):_(typeof y=="object"?y:{value:y,label:y},u.value))}return r({onValueUpdate:R,onReset:v,getErrors:()=>t.value.error?[t.value.error]:[]}),(y,g)=>(e.openBlock(),e.createElementBlock("div",{class:"autocomplete-container",onFocusout:R,ref_key:"containerRef",ref:n},[e.createVNode(e.unref(h.IonInput),{ref_key:"inputRef",ref:o,modelValue:p.value,"onUpdate:modelValue":g[0]||(g[0]=V=>p.value=V),fill:t.value.fill??"solid","label-placement":t.value.labelPlacement??"stacked",type:y.type??"text",required:t.value.required,"error-text":t.value.error,autofocus:t.value.autoFocus,placeholder:k.value,disabled:t.value.disabled,counter:t.value.counter,onIonFocus:F,debounce:300,onClick:d},{default:e.withCtx(()=>[e.createVNode(D,{model:t.value},null,8,["model"]),t.value.multiple?(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:0,style:{width:"fit-content"},slot:"start"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(V,b)=>(e.openBlock(),e.createBlock(e.unref(h.IonChip),{key:b},{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonLabel),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(V.label),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:1,slot:"start",class:"ion-no-wrap"},{default:e.withCtx(()=>{var V;return[e.createTextVNode(e.toDisplayString(((V=c.value[0])==null?void 0:V.label)??""),1)]}),_:1})),e.createVNode(e.unref(h.IonIcon),{slot:"end",icon:e.unref(T.chevronDown)},null,8,["icon"]),c.value.length>0||p.value?(e.openBlock(),e.createBlock(e.unref(h.IonIcon),{key:2,slot:"end",icon:e.unref(T.close),onClick:v,style:{"z-index":"999999"}},null,8,["icon"])):e.createCommentVNode("",!0)]),_:1},8,["modelValue","fill","label-placement","type","required","error-text","autofocus","placeholder","disabled","counter"]),s.value&&u.value.length>0&&f.value==="popover"?(e.openBlock(),e.createBlock(e.unref(h.IonList),{key:0,class:e.normalizeClass(["suggestions-list",m.value])},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,V=>(e.openBlock(),e.createBlock(e.unref(h.IonItem),{button:"",key:V.label,onClick:b=>C(V)},{default:e.withCtx(()=>[t.value.multiple?(e.openBlock(),e.createBlock(e.unref(h.IonCheckbox),{key:0,slot:"start",checked:V.isChecked},null,8,["checked"])):e.createCommentVNode("",!0),e.createVNode(e.unref(h.IonLabel),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(V.label),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1},8,["class"])):e.createCommentVNode("",!0)],544))}}),G=(l,r)=>{const a=l.__vccOpts||l;for(const[t,o]of r)a[t]=o;return a},fe=G(de,[["__scopeId","data-v-e2c4eed6"]]),me=e.defineComponent({__name:"TextAreaInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(t.value.value),s=e.computed(()=>a.schema),{onValueUpdate:u,onFocus:p,onReset:i,getErrors:f}=S(o,t,n,s);return e.watch(()=>t.value.value,m=>n.value=m),r({onReset:i,onValueUpdate:u,getErrors:f}),(m,c)=>(e.openBlock(),e.createBlock(e.unref(h.IonTextarea),{ref_key:"inputRef",ref:o,modelValue:n.value,"onUpdate:modelValue":c[0]||(c[0]=k=>n.value=k),"clear-input":!0,fill:t.value.fill??"solid","label-placement":t.value.labelPlacement??"stacked",required:t.value.required,"error-text":t.value.error,autofocus:t.value.autoFocus,placeholder:t.value.placeholder,disabled:t.value.disabled,counter:t.value.counter,min:t.value.min,max:t.value.max,rows:t.value.rows,cols:t.value.cols,"auto-grow":t.value.autoGrow,"max-length":t.value.maxLength,"min-length":t.value.minLength,pattern:t.value.pattern,onIonFocus:e.unref(p),onIonChange:e.unref(u),onIonBlur:e.unref(u)},{default:e.withCtx(()=>[e.createVNode(D,{model:t.value},null,8,["model"])]),_:1},8,["modelValue","fill","label-placement","required","error-text","autofocus","placeholder","disabled","counter","min","max","rows","cols","auto-grow","max-length","min-length","pattern","onIonFocus","onIonChange","onIonBlur"]))}}),pe={class:"ion-margin-end",style:{"flex-grow":"1"}},ve={style:{display:"flex","justify-content":"flex-end"}},he=e.defineComponent({__name:"RepeatInput",props:e.mergeModels({schema:{},data:{},computedData:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref([]),{dynamicRefs:o,resetForm:n,getFormErrors:s,updateFormValues:u}=j(),p=e.computed(()=>t.value.map((v,C)=>({label:`Set ${C+1}`,value:C,other:Object.entries(v).reduce((d,[x,B])=>(d[x]=B.value,d),{})})));e.watch(p,v=>{a.value.value=v},{deep:!0,immediate:!0}),e.onMounted(i);function i(){a.value.children&&t.value.push(z(a.value.children))}function f(v){t.value.splice(v,1)}function m(){n()}function c(){return s()}async function k(){await u()}return r({onValueUpdate:k,onReset:m,getErrors:c}),(v,C)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,(d,x)=>(e.openBlock(),e.createElementBlock("div",{class:"repeat-input-wrapper",key:x},[e.createElementVNode("div",pe,[e.createVNode(e.unref(h.IonRow),null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Object.keys(d),B=>{var w,I,E,F,R;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(L)(d[B],v.data,v.computedData)?(e.openBlock(),e.createBlock(e.unref(h.IonCol),{key:`${x}-${B}`,size:((w=d[B].grid)==null?void 0:w.xs)??"12","size-sm":(I=d[B].grid)==null?void 0:I.sm,"size-md":(E=d[B].grid)==null?void 0:E.md,"size-lg":(F=d[B].grid)==null?void 0:F.lg,"size-xl":(R=d[B].grid)==null?void 0:R.xl,class:"ion-margin-bottom"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d[B].type),{modelValue:d[B],"onUpdate:modelValue":N=>d[B]=N,schema:d,"ref-key":`${x}-${B}`,ref_for:!0,ref_key:"dynamicRefs",ref:o},null,8,["modelValue","onUpdate:modelValue","schema","ref-key"]))]),_:2},1032,["size","size-sm","size-md","size-lg","size-xl"])):e.createCommentVNode("",!0)],64)}),256))]),_:2},1024)]),e.createElementVNode("div",ve,[x===t.value.length-1?(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:0,onClick:i,color:"primary"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonIcon),{slot:"icon-only",icon:e.unref(T.add)},null,8,["icon"])]),_:1})):e.createCommentVNode("",!0),t.value.length>1?(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:1,onClick:B=>f(x),color:"warning"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonIcon),{slot:"icon-only",icon:e.unref(T.remove)},null,8,["icon"])]),_:2},1032,["onClick"])):e.createCommentVNode("",!0)])]))),128))}}),ye=G(he,[["__scopeId","data-v-402695fe"]]),ke=e.defineComponent({__name:"CheckboxInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(t.value.value),s=e.computed(()=>a.schema),u=e.computed(()=>P(t.value)),{onValueUpdate:p,onFocus:i,getErrors:f}=S(o,t,n,s);function m(){n.value=!1,t.value.error="",t.value.value=!1}return e.watch(()=>t.value.value,c=>n.value=c),r({onValueUpdate:p,onReset:m,getErrors:f}),(c,k)=>(e.openBlock(),e.createBlock(e.unref(h.IonCheckbox),{modelValue:n.value,"onUpdate:modelValue":k[0]||(k[0]=v=>n.value=v),ref_key:"inputRef",ref:o,required:t.value.required,"error-text":t.value.error,disabled:t.value.disabled,onIonFocus:e.unref(i),onIonChange:e.unref(p),onIonBlur:e.unref(p)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.value),1)]),_:1},8,["modelValue","required","error-text","disabled","onIonFocus","onIonChange","onIonBlur"]))}}),Ve=e.defineComponent({__name:"RadioInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(t.value.value),s=e.computed(()=>a.schema),u=e.ref([]),p=e.computed(()=>P(t.value)),{onValueUpdate:i,onFocus:f,getErrors:m}=S(o,t,n,s);function c(){t.value.error="",n.value=void 0,t.value.value=void 0}function k(C,d){return C.value===d.value}async function v(){typeof t.value.options=="function"?u.value=await t.value.options():u.value=t.value.options}return e.watch(()=>t.value.value,C=>n.value=C),r({onValueUpdate:i,onReset:c,getErrors:m}),e.onMounted(v),(C,d)=>(e.openBlock(),e.createBlock(e.unref(h.IonRadioGroup),{modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=x=>n.value=x),ref_key:"inputRef",ref:o,required:t.value.required,"helper-text":p.value,"error-text":t.value.error,disabled:t.value.disabled,compareWith:k,"allow-empty-selection":!t.value.required,onIonFocus:e.unref(f),onIonChange:e.unref(i),onIonBlur:e.unref(i)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,x=>(e.openBlock(),e.createBlock(e.unref(h.IonRadio),{key:x.value,value:x,disabled:t.value.disabled,"label-placement":"end",justify:"start"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","required","helper-text","error-text","disabled","allow-empty-selection","onIonFocus","onIonChange","onIonBlur"]))}}),K={install(l){l.component("VForm",oe),l.component("TextInput",re),l.component("DateInput",ue),l.component("NumberInput",se),l.component("EmailInput",ce),l.component("PasswordInput",ie),l.component("SelectInput",fe),l.component("TextAreaInput",me),l.component("RepeatInput",ye),l.component("CheckboxInput",ke),l.component("RadioInput",Ve),l.directive("maskito",H.maskito)}};exports.VForm=K;exports.default=K;
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),h=require("@ionic/vue"),T=require("ionicons/icons"),H=require("@maskito/vue");function J(l){return new Promise(r=>{requestAnimationFrame(async()=>{const a=await l.getInputElement();r(a)})})}const Q={d:/\d/,a:/[A-Za-z]/,"*":/[A-Za-z0-9]/},X={d:["1","2","3","4","5","6","7","8","9","0"],a:["A","B","C","x","y","z","D","f"],"*":["A","3","b","8","z","4","D","0"]};function Y(l,r){const a=X[l];return a[r%a.length]}function ee(l){const r=[];let a="",t=0,o=0;for(;t<l.length;){const n=l[t];if(["d","a","*"].includes(n)){let s=1;if(l[t+1]==="{"){const u=l.indexOf("}",t+2);if(u!==-1){const p=l.slice(t+2,u);if(p.includes(",")){const[,i]=p.split(",").map(f=>parseInt(f.trim()));s=i||parseInt(p.split(",")[0])}else s=parseInt(p);t=u}}else{let u=t+1;for(;l[u]===n;)s++,u++;t=u-1}for(let u=0;u<s;u++)r.push(Q[n]),a+=Y(n,o++)}else r.push(n),a+=n;t++}return{mask:r,placeholder:a,elementPredicate:J}}function U(l){return l==null||Array.isArray(l)&&!l.length||typeof l=="object"&&!Object.keys(l).length||!l}function L(l,r,a){return typeof l.condition=="function"?l.condition(r,a):!0}function z(l){if(typeof l!="object"||l===null)return l;if(Array.isArray(l))return l.map(a=>z(a));const r={};return Object.entries(l).forEach(([a,t])=>{typeof t=="function"?r[a]=t.bind(r):r[a]=z(t)}),r}function $(l,r){return r.findIndex(a=>a.value===l.value||a.label===l.label||a.value===l.label||a.label===l.value)}function _(l,r){const a=$(l,r);a>=0?r[a].isChecked=!0:r.push({...l,isChecked:!0})}function q(l,r){const a=$(l,r);a>=0&&(r[a].isChecked=!1)}function te(l,r){return r?l.filter(a=>JSON.stringify(a).toLowerCase().includes(r.toLowerCase())):l}function P(l){const r=l.label||"",a=l.required?" *":"";return r+a}function A(l,r){if(l===r)return!0;if(l==null||r==null||typeof l!=typeof r)return!1;if(typeof l!="object")return l===r;if(Array.isArray(l)&&Array.isArray(r))return l.length!==r.length?!1:l.every((o,n)=>A(o,r[n]));if(Array.isArray(l)!==Array.isArray(r))return!1;const a=Object.keys(l),t=Object.keys(r);return a.length!==t.length?!1:a.every(o=>Object.prototype.hasOwnProperty.call(r,o)&&A(l[o],r[o]))}function j(){const l=e.ref([]);async function r(){console.debug("Validating form inputs");const n=[];for(const s of l.value)if(typeof(s==null?void 0:s.onValueUpdate)=="function"&&await s.onValueUpdate(),typeof(s==null?void 0:s.getErrors)=="function")try{const u=s.getErrors();Array.isArray(u)?n.push(...u):console.warn("getErrors() returned non-array value:",u)}catch(u){console.error("Error calling getErrors on component:",u,s)}else console.warn("Component does not have getErrors function:",s);return n.every(U)}function a(){l.value.forEach(n=>{typeof(n==null?void 0:n.onReset)=="function"&&n.onReset()})}function t(){const n=[];for(const s of l.value)if(typeof(s==null?void 0:s.getErrors)=="function")try{const u=s.getErrors();Array.isArray(u)?n.push(...u):n.push(String(u))}catch(u){console.error("Error calling getErrors on component:",u,s)}return n}async function o(){for(const n of l.value)typeof(n==null?void 0:n.onValueUpdate)=="function"&&await n.onValueUpdate()}return{dynamicRefs:l,isFormValid:r,resetForm:a,getFormErrors:t,updateFormValues:o}}function le(l){const r=e.computed(()=>Object.entries(l.value).reduce((i,[f,m])=>(m.value!==void 0&&(typeof m.onChange=="function"?i[f]=m.onChange(m.value):i[f]=m.value),i),{})),a=e.ref({}),t=(i,f,m)=>{var c;return typeof((c=l.value[i].children[f])==null?void 0:c.computedValue)=="function"?l.value[i].children[f].computedValue(m,l.value):m},o=(i,f,m,c)=>{a.value[i][c]||(a.value[i][c]={}),Object.entries(f.other??{}).forEach(([k,v])=>{var d;!A(v,(d=m.other)==null?void 0:d[k])&&(a.value[i][c][k]=t(i,k,v))})},n=(i,f,m)=>{f.forEach((c,k)=>{const v=m[k]??{other:{}};o(i,c,v,k)})},s=(i,{other:f})=>Object.entries(f??{}).reduce((m,[c,k])=>(m[c]=t(i,c,k),m),{}),u=(i,f,m)=>{a.value[i]||(a.value[i]=[]);const c=f;Array.isArray(m[i])?n(i,c,m[i]):a.value[i]=c.map(k=>s(i,k))},p=(i,f,m)=>{if(!f){delete a.value[i];return}const c=l.value[i];c.children!==void 0?u(i,f,m):typeof c.computedValue=="function"&&(a.value[i]=c.computedValue(f,l.value))};return e.watch(r,(i,f={})=>{Object.keys(i).forEach(m=>{A(i[m],f[m])||p(m,i[m],f)})},{immediate:!0,deep:!0}),{formData:r,computedData:a}}const oe=e.defineComponent({__name:"vForm",props:{schema:{},showLabels:{type:Boolean,default:!0},showClearButton:{type:Boolean,default:!0},showCancelButton:{type:Boolean,default:!0},buttonPlacement:{default:"start"},submitButtonText:{default:"Submit"},clearButtonText:{default:"Reset"},cancelButtonText:{default:"Cancel"},hideButtons:{type:Boolean,default:!1},customButtons:{}},emits:["submit","clear","cancel"],setup(l,{expose:r,emit:a}){const t=l,o=a,n=e.ref(t.schema),{dynamicRefs:s,isFormValid:u,resetForm:p}=j(),{formData:i,computedData:f}=le(n);async function m(){await u()&&o("submit",i.value,f.value)}function c(){p(),o("clear")}function k(){p(),o("cancel")}return e.watch(i,async()=>{for(const[v,C]of Object.entries(n.value))L(C,i.value,f.value)||(C.value=t.schema[v].value)},{deep:!0,immediate:!0}),e.watch(()=>t.schema,v=>{for(const[C,d]of Object.entries(v))d.value!==void 0&&(n.value[C].value=d.value)},{deep:!0,immediate:!0}),r({resetForm:p,isFormValid:u,resolveData:()=>({formData:i.value,computedData:f.value})}),(v,C)=>(e.openBlock(),e.createBlock(e.unref(h.IonGrid),null,{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonRow),null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Object.keys(n.value),d=>{var x,B,w,I,E;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(L)(n.value[d],e.unref(i),e.unref(f))?(e.openBlock(),e.createBlock(e.unref(h.IonCol),{key:d,size:((x=n.value[d].grid)==null?void 0:x.xs)??"12","size-sm":(B=n.value[d].grid)==null?void 0:B.sm,"size-md":(w=n.value[d].grid)==null?void 0:w.md,"size-lg":(I=n.value[d].grid)==null?void 0:I.lg,"size-xl":(E=n.value[d].grid)==null?void 0:E.xl,class:"ion-margin-vertical"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.value[d].type),{modelValue:n.value[d],"onUpdate:modelValue":F=>n.value[d]=F,schema:n.value,ref_for:!0,ref_key:"dynamicRefs",ref:s,"ref-key":d},null,8,["modelValue","onUpdate:modelValue","schema","ref-key"]))]),_:2},1032,["size","size-sm","size-md","size-lg","size-xl"])):e.createCommentVNode("",!0)],64)}),256))]),_:1}),v.hideButtons?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(h.IonRow),{key:0},{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonCol),{size:"12",style:e.normalizeStyle([{display:"flex"},{justifyContent:v.buttonPlacement}])},{default:e.withCtx(()=>[v.showCancelButton?(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:0,onClick:k},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.cancelButtonText??"Cancel"),1)]),_:1})):e.createCommentVNode("",!0),v.showClearButton?(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:1,onClick:c},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.clearButtonText??"Reset"),1)]),_:1})):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.customButtons,d=>(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:d.label,onClick:d.action,color:d.color??"primary"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.label),1)]),_:2},1032,["onClick","color"]))),128)),e.createVNode(e.unref(h.IonButton),{onClick:m},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(v.submitButtonText??"Submit"),1)]),_:1})]),_:1},8,["style"])]),_:1}))]),_:1}))}});function ne(l){return{applyValidationState:async t=>{var o,n,s,u,p;(o=l.value)==null||o.$el.classList.remove("ion-invalid"),(n=l.value)==null||n.$el.classList.remove("ion-valid"),t?(s=l.value)==null||s.$el.classList.add("ion-valid"):(u=l.value)==null||u.$el.classList.add("ion-invalid"),(p=l.value)==null||p.$el.classList.add("ion-touched")},resetValidationState:()=>{var t,o;(t=l.value)==null||t.$el.classList.remove("ion-touched"),(o=l.value)==null||o.$el.classList.remove("ion-invalid")}}}function S(l,r,a,t,o){const{applyValidationState:n,resetValidationState:s}=ne(l);async function u(){if(r.value.required&&!a.value)return r.value.error="This field is required",!1;if(o){const c=await o(a.value);if(typeof c=="string")return r.value.error=c,!1;if(c===!1)return!1}if(r.value.validation){const c=await r.value.validation(a.value,t==null?void 0:t.value);if(c&&c.length)return r.value.error=c.join(),!1}return!0}async function p(){const c=await u();c&&(r.value.error="",r.value.value=a.value),await n(c)}function i(){s(),r.value.error=""}function f(c=""){a.value=c,r.value.error="",r.value.value=c}function m(){return r.value.error?[r.value.error]:[]}return{isValid:u,onValueUpdate:p,onFocus:i,onReset:f,getErrors:m,applyValidationState:n,resetValidationState:s}}function ae(l){const r=e.computed(()=>!!l.value.label),a=e.computed(()=>!!l.value.required),t=e.computed(()=>l.value.label||"");return{showLabel:r,showRequired:a,labelText:t}}const D=e.defineComponent({__name:"InputLabel",props:{model:{}},setup(l){const r=l,{showLabel:a,showRequired:t,labelText:o}=ae(e.toRef(r,"model"));return(n,s)=>e.unref(a)?(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:0,slot:"label",class:"input-label"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(o))+" ",1),e.unref(t)?(e.openBlock(),e.createBlock(e.unref(h.IonText),{key:0,color:"danger"},{default:e.withCtx(()=>s[0]||(s[0]=[e.createTextVNode("*")])),_:1,__:[0]})):e.createCommentVNode("",!0)]),_:1})):e.createCommentVNode("",!0)}}),O=e.defineComponent({__name:"BaseInput",props:e.mergeModels({schema:{},type:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(t.value.value),s=e.computed(()=>a.schema),{isValid:u,onValueUpdate:p,onFocus:i,onReset:f,getErrors:m}=S(o,t,n,s),c=e.computed(()=>{if(t.value.pattern)return ee(t.value.pattern)});return e.watch(()=>t.value.value,k=>n.value=k),r({onValueUpdate:p,onReset:f,getErrors:m,isValid:u}),(k,v)=>{var d;const C=e.resolveDirective("maskito");return e.withDirectives((e.openBlock(),e.createBlock(e.unref(h.IonInput),{ref_key:"inputRef",ref:o,modelValue:n.value,"onUpdate:modelValue":v[0]||(v[0]=x=>n.value=x),"clear-input":!0,fill:t.value.fill??"solid","label-placement":t.value.labelPlacement??"stacked",type:k.type??"text",required:t.value.required,"error-text":t.value.error,autofocus:t.value.autoFocus,placeholder:((d=c.value)==null?void 0:d.placeholder)??t.value.placeholder,disabled:t.value.disabled,counter:t.value.counter,min:t.value.min,max:t.value.max,"max-length":t.value.maxLength,"min-length":t.value.minLength,pattern:t.value.pattern,onIonFocus:e.unref(i),onIonChange:e.unref(p),onIonBlur:e.unref(p)},{default:e.withCtx(()=>[e.createVNode(D,{model:t.value},null,8,["model"]),t.value.prefix?(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:0,slot:"start"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.value.prefix),1)]),_:1})):e.createCommentVNode("",!0),t.value.suffix?(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:1,slot:"end"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.value.suffix),1)]),_:1})):e.createCommentVNode("",!0),k.type==="password"?(e.openBlock(),e.createBlock(e.unref(h.IonInputPasswordToggle),{key:2,slot:"end"})):e.createCommentVNode("",!0)]),_:1},8,["modelValue","fill","label-placement","type","required","error-text","autofocus","placeholder","disabled","counter","min","max","max-length","min-length","pattern","onIonFocus","onIonChange","onIonBlur"])),[[C,c.value]])}}}),re=e.defineComponent({__name:"TextInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:"text",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","schema"]))}}),ue=e.defineComponent({__name:"DateInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:a.value.enableTime?"datetime-local":"date",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","type","schema"]))}}),se=e.defineComponent({__name:"NumberInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:"number",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","schema"]))}}),ce=e.defineComponent({__name:"EmailInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:"email",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","schema"]))}}),ie=e.defineComponent({__name:"PasswordInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref(null);return r({onReset:()=>{var o;return(o=t.value)==null?void 0:o.onReset()},onValueUpdate:()=>{var o;return(o=t.value)==null?void 0:o.onValueUpdate()},getErrors:()=>{var o,n;return((n=(o=t.value)==null?void 0:o.getErrors)==null?void 0:n.call(o))??[]}}),(o,n)=>(e.openBlock(),e.createBlock(O,{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=s=>a.value=s),type:"password",schema:o.schema,ref_key:"inputRef",ref:t},null,8,["modelValue","schema"]))}}),de=e.defineComponent({__name:"SelectInput",props:e.mergeModels({schema:{},type:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(null),s=e.ref(!1),u=e.ref([]),p=e.ref(""),i=e.ref(1),f=e.computed(()=>t.value.interface??"popover"),m=e.computed(()=>t.value.optionsPlacement==="top"?"top":"bottom"),c=e.computed(()=>u.value.filter(y=>!!y.isChecked)),k=e.computed(()=>!p.value&&U(c.value)&&!s.value?t.value.placeholder??"Select an option":"");e.watch([p,()=>t.value.options],N,{immediate:!0,deep:!0}),e.watch(()=>t.value.value,W,{immediate:!0,deep:!0});function v(){u.value.forEach(y=>q(y,u.value)),t.value.error="",p.value="",i.value=1,t.value.value=t.value.multiple?[]:""}function C(y){if(y.isChecked)return q(y,u.value);t.value.multiple?_(y,u.value):(v(),_(y,u.value),R()),p.value=""}function d(){switch(f.value){case"action-sheet":x();break;case"alert":B();break;case"popover":default:s.value=!0;break}}async function x(){if(await N(),t.value.multiple){s.value=!0;return}await(await h.actionSheetController.create({header:t.value.label||"Select an option",buttons:[...u.value.map(g=>({text:g.label,cssClass:g.isChecked?"selected-option":"",handler:()=>(C(g),!1)})),{text:"Cancel",role:"cancel"}]})).present()}async function B(){await N();const y=u.value.map(V=>({label:V.label,type:t.value.multiple?"checkbox":"radio",value:V,checked:V.isChecked}));await(await h.alertController.create({header:t.value.label||"Select an option",inputs:y,buttons:[{text:"Cancel",role:"cancel"},{text:"OK",handler:V=>{if(t.value.multiple)u.value.forEach(b=>q(b,u.value)),V.forEach(b=>{const M=u.value.find(Z=>Z.value===b.value);M&&_(M,u.value)});else{v();const b=u.value.find(M=>M.value===V.value);b&&_(b,u.value)}R()}}]})).present()}async function w(){if(t.value.required&&U(c.value))return"This field is required";if(t.value.validation){const y=await t.value.validation(c.value,a==null?void 0:a.schema);if(y&&y.length)return y.join()}return!0}const{onFocus:I,applyValidationState:E}=S(o,t,e.computed(()=>t.value.multiple?c.value:c.value[0]),e.computed(()=>a==null?void 0:a.schema),w);function F(y){var g;y.target===((g=o.value)==null?void 0:g.$el)&&(I(),f.value==="popover"&&(s.value=!0))}async function R(y){var V;if((V=y==null?void 0:y.relatedTarget)!=null&&V.closest(".suggestions-list"))return;s.value=!1;const g=await w();g===!0?(t.value.error="",t.value.value=t.value.multiple?c.value:c.value[0]):t.value.error=typeof g=="string"?g:"Validation failed",await E(g===!0)}async function N(){const y=[];if(typeof t.value.options=="function"){const g=await t.value.options(p.value);y.push(...g.filter(V=>!!V.label))}else y.push(...te(t.value.options??[],p.value));c.value.forEach(g=>_(g,y)),u.value=y}function W(){const y=t.value.value;y&&(Array.isArray(y)?y.forEach(g=>_(g,u.value)):_(typeof y=="object"?y:{value:y,label:y},u.value))}return r({onValueUpdate:R,onReset:v,getErrors:()=>t.value.error?[t.value.error]:[]}),(y,g)=>(e.openBlock(),e.createElementBlock("div",{class:"autocomplete-container",onFocusout:R,ref_key:"containerRef",ref:n},[e.createVNode(e.unref(h.IonInput),{ref_key:"inputRef",ref:o,modelValue:p.value,"onUpdate:modelValue":g[0]||(g[0]=V=>p.value=V),fill:t.value.fill??"solid","label-placement":t.value.labelPlacement??"stacked",type:y.type??"text",required:t.value.required,"error-text":t.value.error,autofocus:t.value.autoFocus,placeholder:k.value,disabled:t.value.disabled,counter:t.value.counter,onIonFocus:F,debounce:300,onClick:d},{default:e.withCtx(()=>[e.createVNode(D,{model:t.value},null,8,["model"]),t.value.multiple?(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:0,style:{width:"fit-content"},slot:"start"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(V,b)=>(e.openBlock(),e.createBlock(e.unref(h.IonChip),{key:b},{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonLabel),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(V.label),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(e.openBlock(),e.createBlock(e.unref(h.IonLabel),{key:1,slot:"start",class:"ion-no-wrap"},{default:e.withCtx(()=>{var V;return[e.createTextVNode(e.toDisplayString(((V=c.value[0])==null?void 0:V.label)??""),1)]}),_:1})),e.createVNode(e.unref(h.IonIcon),{slot:"end",icon:e.unref(T.chevronDown)},null,8,["icon"]),c.value.length>0||p.value?(e.openBlock(),e.createBlock(e.unref(h.IonIcon),{key:2,slot:"end",icon:e.unref(T.close),onClick:v,style:{"z-index":"999999"}},null,8,["icon"])):e.createCommentVNode("",!0)]),_:1},8,["modelValue","fill","label-placement","type","required","error-text","autofocus","placeholder","disabled","counter"]),s.value&&u.value.length>0&&f.value==="popover"?(e.openBlock(),e.createBlock(e.unref(h.IonList),{key:0,class:e.normalizeClass(["suggestions-list",m.value])},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,V=>(e.openBlock(),e.createBlock(e.unref(h.IonItem),{button:"",key:V.label,onClick:b=>C(V)},{default:e.withCtx(()=>[t.value.multiple?(e.openBlock(),e.createBlock(e.unref(h.IonCheckbox),{key:0,slot:"start",checked:V.isChecked},null,8,["checked"])):e.createCommentVNode("",!0),e.createVNode(e.unref(h.IonLabel),null,{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(V.label),1)]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1},8,["class"])):e.createCommentVNode("",!0)],544))}}),G=(l,r)=>{const a=l.__vccOpts||l;for(const[t,o]of r)a[t]=o;return a},fe=G(de,[["__scopeId","data-v-e2c4eed6"]]),me=e.defineComponent({__name:"TextAreaInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(t.value.value),s=e.computed(()=>a.schema),{onValueUpdate:u,onFocus:p,onReset:i,getErrors:f}=S(o,t,n,s);return e.watch(()=>t.value.value,m=>n.value=m),r({onReset:i,onValueUpdate:u,getErrors:f}),(m,c)=>(e.openBlock(),e.createBlock(e.unref(h.IonTextarea),{ref_key:"inputRef",ref:o,modelValue:n.value,"onUpdate:modelValue":c[0]||(c[0]=k=>n.value=k),"clear-input":!0,fill:t.value.fill??"solid","label-placement":t.value.labelPlacement??"stacked",required:t.value.required,"error-text":t.value.error,autofocus:t.value.autoFocus,placeholder:t.value.placeholder,disabled:t.value.disabled,counter:t.value.counter,min:t.value.min,max:t.value.max,rows:t.value.rows,cols:t.value.cols,"auto-grow":t.value.autoGrow,"max-length":t.value.maxLength,"min-length":t.value.minLength,pattern:t.value.pattern,onIonFocus:e.unref(p),onIonChange:e.unref(u),onIonBlur:e.unref(u)},{default:e.withCtx(()=>[e.createVNode(D,{model:t.value},null,8,["model"])]),_:1},8,["modelValue","fill","label-placement","required","error-text","autofocus","placeholder","disabled","counter","min","max","rows","cols","auto-grow","max-length","min-length","pattern","onIonFocus","onIonChange","onIonBlur"]))}}),pe={class:"ion-margin-end",style:{"flex-grow":"1"}},ve={style:{display:"flex","justify-content":"flex-end"}},he=e.defineComponent({__name:"RepeatInput",props:e.mergeModels({schema:{},data:{},computedData:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=e.useModel(l,"modelValue"),t=e.ref([]),{dynamicRefs:o,resetForm:n,getFormErrors:s,updateFormValues:u}=j(),p=e.computed(()=>t.value.map((v,C)=>({label:`Set ${C+1}`,value:C,other:Object.entries(v).reduce((d,[x,B])=>(d[x]=B.value,d),{})})));e.watch(p,v=>{a.value.value=v},{deep:!0,immediate:!0}),e.onMounted(i);function i(){a.value.children&&t.value.push(z(a.value.children))}function f(v){t.value.splice(v,1)}function m(){n()}function c(){return s()}async function k(){await u()}return r({onValueUpdate:k,onReset:m,getErrors:c}),(v,C)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.value,(d,x)=>(e.openBlock(),e.createElementBlock("div",{class:"repeat-input-wrapper",key:x},[e.createElementVNode("div",pe,[e.createVNode(e.unref(h.IonRow),null,{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Object.keys(d),B=>{var w,I,E,F,R;return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.unref(L)(d[B],v.data,v.computedData)?(e.openBlock(),e.createBlock(e.unref(h.IonCol),{key:`${x}-${B}`,size:((w=d[B].grid)==null?void 0:w.xs)??"12","size-sm":(I=d[B].grid)==null?void 0:I.sm,"size-md":(E=d[B].grid)==null?void 0:E.md,"size-lg":(F=d[B].grid)==null?void 0:F.lg,"size-xl":(R=d[B].grid)==null?void 0:R.xl,class:"ion-margin-bottom"},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(d[B].type),{modelValue:d[B],"onUpdate:modelValue":N=>d[B]=N,schema:d,"ref-key":`${x}-${B}`,ref_for:!0,ref_key:"dynamicRefs",ref:o},null,8,["modelValue","onUpdate:modelValue","schema","ref-key"]))]),_:2},1032,["size","size-sm","size-md","size-lg","size-xl"])):e.createCommentVNode("",!0)],64)}),256))]),_:2},1024)]),e.createElementVNode("div",ve,[x===t.value.length-1?(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:0,onClick:i,color:"primary"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonIcon),{slot:"icon-only",icon:e.unref(T.add)},null,8,["icon"])]),_:1})):e.createCommentVNode("",!0),t.value.length>1?(e.openBlock(),e.createBlock(e.unref(h.IonButton),{key:1,onClick:B=>f(x),color:"warning"},{default:e.withCtx(()=>[e.createVNode(e.unref(h.IonIcon),{slot:"icon-only",icon:e.unref(T.remove)},null,8,["icon"])]),_:2},1032,["onClick"])):e.createCommentVNode("",!0)])]))),128))}}),ye=G(he,[["__scopeId","data-v-402695fe"]]),ke=e.defineComponent({__name:"CheckboxInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(t.value.value),s=e.computed(()=>a.schema),u=e.computed(()=>P(t.value)),{onValueUpdate:p,onFocus:i,getErrors:f}=S(o,t,n,s);function m(){n.value=!1,t.value.error="",t.value.value=!1}return e.watch(()=>t.value.value,c=>n.value=c),r({onValueUpdate:p,onReset:m,getErrors:f}),(c,k)=>(e.openBlock(),e.createBlock(e.unref(h.IonCheckbox),{modelValue:n.value,"onUpdate:modelValue":k[0]||(k[0]=v=>n.value=v),ref_key:"inputRef",ref:o,required:t.value.required,"error-text":t.value.error,disabled:t.value.disabled,onIonFocus:e.unref(i),onIonChange:e.unref(p),onIonBlur:e.unref(p)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(u.value),1)]),_:1},8,["modelValue","required","error-text","disabled","onIonFocus","onIonChange","onIonBlur"]))}}),Ve=e.defineComponent({__name:"RadioInput",props:e.mergeModels({schema:{}},{modelValue:{type:Object,default:{}},modelModifiers:{}}),emits:["update:modelValue"],setup(l,{expose:r}){const a=l,t=e.useModel(l,"modelValue"),o=e.ref(null),n=e.ref(t.value.value),s=e.computed(()=>a.schema),u=e.ref([]),p=e.computed(()=>P(t.value)),{onValueUpdate:i,onFocus:f,getErrors:m}=S(o,t,n,s);function c(){t.value.error="",n.value=void 0,t.value.value=void 0}function k(C,d){return C.value===d.value}async function v(){typeof t.value.options=="function"?u.value=await t.value.options():u.value=t.value.options}return e.watch(()=>t.value.value,C=>n.value=C),r({onValueUpdate:i,onReset:c,getErrors:m}),e.onMounted(v),(C,d)=>(e.openBlock(),e.createBlock(e.unref(h.IonRadioGroup),{modelValue:n.value,"onUpdate:modelValue":d[0]||(d[0]=x=>n.value=x),ref_key:"inputRef",ref:o,required:t.value.required,"helper-text":p.value,"error-text":t.value.error,disabled:t.value.disabled,compareWith:k,"allow-empty-selection":!t.value.required,onIonFocus:e.unref(f),onIonChange:e.unref(i),onIonBlur:e.unref(i)},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(u.value,x=>(e.openBlock(),e.createBlock(e.unref(h.IonRadio),{key:x.value,value:x,disabled:t.value.disabled,"label-placement":"end",justify:"start"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(x.label),1)]),_:2},1032,["value","disabled"]))),128))]),_:1},8,["modelValue","required","helper-text","error-text","disabled","allow-empty-selection","onIonFocus","onIonChange","onIonBlur"]))}}),K={install(l){l.component("VForm",oe),l.component("TextInput",re),l.component("DateInput",ue),l.component("NumberInput",se),l.component("EmailInput",ce),l.component("PasswordInput",ie),l.component("SelectInput",fe),l.component("TextAreaInput",me),l.component("RepeatInput",ye),l.component("CheckboxInput",ke),l.component("RadioInput",Ve),l.directive("maskito",H.maskito)}};exports.VForm=K;exports.default=K;
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|