@josercl/form-maker 1.3.0 → 1.3.1-beta2

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.
@@ -0,0 +1 @@
1
+ var FormMaker=function(e){"use strict";const E=["onSubmit"],S={key:0},T=["disabled"],j=e.defineComponent({__name:"FormMaker",props:{loading:{type:Boolean,default:!1},hasActions:{type:Boolean,default:!0},modelValue:{default:()=>({})},fields:{default:()=>[]},hideDivider:{type:Boolean,default:!1},rowClass:{default:null},columnClass:{default:null},labelClass:{default:null},inputGroupClass:{default:null},inputWrapperClass:{default:null},inputErrorClass:{default:null},inputClass:{default:null},errorClass:{default:null},helpTextClass:{default:null},submitButtonClass:{default:null},submitButtonText:{default:"Submit"}},emits:["submit","update:modelValue"],setup(s,{emit:n}){const l=s,t=()=>n("submit"),r=e.computed(()=>l.fields.length>0?l.fields.map(o=>{let f=o;return Array.isArray(o)||(f=[o]),f.map(k=>k.id?k:{...k,id:`formMaker_${new Date().getTime()}_${k.name}`})}):Object.keys(l.modelValue).map(o=>[{name:o,label:o,id:`formMaker_${o}`}]));e.provide("labelClass",l.labelClass||e.inject("form-label")),e.provide("inputGroupClass",l.inputGroupClass||e.inject("input-group")),e.provide("inputWrapperClass",l.inputWrapperClass||e.inject("input-wrapper")),e.provide("inputErrorClass",l.inputErrorClass||e.inject("input-error")),e.provide("inputClass",l.inputClass||e.inject("input")),e.provide("errorClass",l.errorClass||e.inject("error")),e.provide("helpTextClass",l.helpTextClass||e.inject("help-text"));const i=l.rowClass||e.inject("form-row"),a=l.columnClass||e.inject("form-column"),c=l.submitButtonClass||e.inject("submit-button"),p=o=>{const f=o.split(".");let k=l.modelValue;for(let C=0;C<f.length-1;C+=1){const h=k[f[C]];if(!h)break;k=h}return k},m=o=>{const f=o.split(".");return f[f.length-1]};return(o,f)=>{const k=e.resolveComponent("form-maker-input");return e.openBlock(),e.createElementBlock("form",{class:"form-maker",onSubmit:e.withModifiers(t,["prevent"])},[o.loading?e.renderSlot(o.$slots,"loading",{key:0},()=>[e.createTextVNode(" Loading... ")]):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"default",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(C,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(i)),key:`fieldRow_${h}`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,(b,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(a),b.columnClass]),key:`field_${h}_${d}`},[e.renderSlot(o.$slots,`${b.name}`,{field:b},()=>[e.createVNode(k,e.mergeProps({modelValue:p(b.name)[m(b.name)],"onUpdate:modelValue":B=>p(b.name)[m(b.name)]=B},b),null,16,["modelValue","onUpdate:modelValue"])])],2))),128))],2))),128))]),e.renderSlot(o.$slots,"extra"),e.renderSlot(o.$slots,"divider",{},()=>[o.hasActions&&!o.hideDivider?(e.openBlock(),e.createElementBlock("hr",S)):e.createCommentVNode("",!0)]),o.hasActions?e.renderSlot(o.$slots,"actions",{key:1},()=>[e.renderSlot(o.$slots,"submit-button",{},()=>[e.createElementVNode("button",{class:e.normalizeClass(e.unref(c)),disabled:o.loading,type:"submit"},e.toDisplayString(o.submitButtonText),11,T)]),e.renderSlot(o.$slots,"extra-buttons")]):e.createCommentVNode("",!0)],40,E)}}}),w=e.defineComponent({__name:"RuleEvaluator",props:{rules:{default:()=>[]},modelValue:{default:void 0}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s;return e.watch(l.modelValue,t=>{var a;let r=null;const i=((a=l.rules)==null?void 0:a.length)??0;for(let c=0;c<i;c+=1){const p=l.rules[c];if(!p.validator(t)){r=p.message;break}}n("update:modelValue",r)},{immediate:!0}),()=>{}}}),N=()=>{const s=e.inject("labelClass",null),n=e.inject("inputClass",null),l=e.inject("inputWrapperClass",null),t=e.inject("inputGroupClass",null),r=e.inject("inputErrorClass",null),i=e.inject("errorClass",null),a=e.inject("helpTextClass",null);return{labelClass:s,inputClass:n,inputWrapperClass:l,inputGroupClass:t,inputErrorClass:r,errorClass:i,helpTextClass:a}},F=(s,n)=>{const l=e.toRaw(n),t=e.ref(null);return e.watch(s,(r,i)=>{if(t.value=null,r!==i)for(let a=0;a<l.length;a+=1){const c=l[a];if(!c.validator(r)){t.value=c.message;break}}},{immediate:!0}),t};function V(s,n,l){const t=l??"modelValue";return e.computed({get:()=>s(),set:r=>n(`update:${t}`,r)})}const D=e.defineComponent({inheritAttrs:!1,__name:"FormMakerInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{default:"text"},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=V(()=>l.modelValue,n),{labelClass:r,inputClass:i,inputWrapperClass:a,inputGroupClass:c,inputErrorClass:p,errorClass:m,helpTextClass:o}=N(),f=e.computed(()=>!!l.label),k=e.computed(()=>!!l.helpText),C=F(t,l.rules),h=e.computed(()=>!!l.error||!!C.value),b=e.computed(()=>l.error?l.error:C.value);return(d,B)=>{const J=e.resolveComponent("form-maker-label"),K=e.resolveComponent("form-maker-help"),Q=e.resolveComponent("form-maker-error");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([h.value&&e.unref(p),e.unref(a)])},[d.type!=="checkbox"?e.renderSlot(d.$slots,"label",{key:0},()=>[f.value?(e.openBlock(),e.createBlock(J,{key:0,id:d.id,class:e.normalizeClass(e.unref(r))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.label),1)]),_:1},8,["id","class"])):e.createCommentVNode("",!0)]):e.createCommentVNode("",!0),e.renderSlot(d.$slots,"default",{},()=>[e.createElementVNode("div",{class:e.normalizeClass([e.unref(c),h.value&&e.unref(p)])},[e.renderSlot(d.$slots,"before"),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`form-maker-input-${d.type}`),e.mergeProps({...d.$props,...d.$attrs},{class:[d.type!=="checkbox"&&e.unref(i),h.value&&e.unref(p)],label:d.label,modelValue:e.unref(t),"onUpdate:modelValue":B[0]||(B[0]=g=>e.isRef(t)?t.value=g:null)}),null,16,["class","label","modelValue"])),e.renderSlot(d.$slots,"after")],2)]),e.renderSlot(d.$slots,"help",{},()=>[k.value?(e.openBlock(),e.createBlock(K,{key:0,class:e.normalizeClass(e.unref(o))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.helpText),1)]),_:1},8,["class"])):e.createCommentVNode("",!0)]),e.renderSlot(d.$slots,"errors",{},()=>[h.value?(e.openBlock(),e.createBlock(Q,{key:0,class:e.normalizeClass(e.unref(m))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.value),1)]),_:1},8,["class"])):e.createCommentVNode("",!0),d.rules.length?(e.openBlock(),e.createBlock(w,{key:1,rules:d.rules,value:d.modelValue,modelValue:e.unref(C),"onUpdate:modelValue":B[1]||(B[1]=g=>e.isRef(C)?C.value=g:null)},null,8,["rules","value","modelValue"])):e.createCommentVNode("",!0)])],2)}}}),M=["checked","value","onClick"],A=e.defineComponent({__name:"CheckboxInput",props:{options:{type:[Boolean,Array],default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=e.computed(()=>Array.isArray(l.options)&&l.options.length===0),r=e.computed(()=>l.modelValue),i=e.computed(()=>(Array.isArray(r.value)?r.value:[r.value]).filter(m=>!!m)),a=e.computed(()=>t.value?[{label:l.label,value:!0}]:l.options),c=p=>{let m=[...i.value];m.indexOf(p)===-1?m.push(p):m=m.filter(o=>o!==p),t.value?n("update:modelValue",m.length>0):n("update:modelValue",m)};return(p,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(o,f)=>(e.openBlock(),e.createElementBlock("div",{key:`option_${f}`},[e.createElementVNode("label",null,[e.createElementVNode("input",e.mergeProps(p.$props,{checked:i.value.indexOf(o.value)!==-1,value:o.value,type:"checkbox",onClick:()=>c(o.value)}),null,16,M),e.createTextVNode(" "+e.toDisplayString(o.label),1)])]))),128))}}),R=e.defineComponent({__name:"FileInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=t=>{const r=t.currentTarget;if(r.files&&r.files.length){const i=r.files[0];n("update:modelValue",i)}};return(t,r)=>(e.openBlock(),e.createElementBlock("input",e.mergeProps(t.$props,{type:"file",onChange:l}),null,16))}});function y(s,n){return e.h(`${s.as??"div"}`,n.attrs,n.slots)}y.props={as:{type:String,required:!1,default:"div"}};function $(s,{slots:n,attrs:l}){return e.h("label",{...l,for:s.id},n.default())}$.props={id:{type:String,default:null}};const G=$,O=["checked","value","onChange"],L=e.defineComponent({__name:"RadioInput",props:{options:{default:()=>[]},loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{}},emits:["update:modelValue"],setup(s,{emit:n}){const l=t=>{n("update:modelValue",t)};return(t,r)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,(i,a)=>(e.openBlock(),e.createElementBlock("div",{key:`option_${a}`},[e.createElementVNode("label",null,[e.createElementVNode("input",e.mergeProps(t.$props,{checked:i.value===t.modelValue,value:i.value,type:"radio",onChange:c=>l(i.value)}),null,16,O),e.createTextVNode(" "+e.toDisplayString(i.label),1)])]))),128))}}),I=["id","disabled","name","placeholder"],P=["label"],z=["value"],U=["value"],W=e.defineComponent({__name:"SelectInput",props:{options:{default:()=>[]},optionGroups:{default:()=>({})},loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=V(()=>l.modelValue,n),r=Object.keys(l.optionGroups).length>0,i=e.computed(()=>l.options.map(a=>typeof a=="object"?a:{label:a,value:a}));return(a,c)=>e.withDirectives((e.openBlock(),e.createElementBlock("select",{id:a.id,"onUpdate:modelValue":c[0]||(c[0]=p=>e.isRef(t)?t.value=p:null),disabled:a.disabled,name:a.name,placeholder:a.placeholder},[r?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.optionGroups,(p,m)=>(e.openBlock(),e.createElementBlock("optgroup",{key:`optGroup_${m}`,label:m},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p,o=>(e.openBlock(),e.createElementBlock("option",{key:`option_${o.value}`,value:o.value},e.toDisplayString(o.label),9,z))),128))],8,P))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(i.value,(p,m)=>(e.openBlock(),e.createElementBlock("option",{key:`option_${m}`,value:p.value},e.toDisplayString(p.label),9,U))),128))],8,I)),[[e.vModelSelect,e.unref(t)]])}}),x=["id"],q=e.defineComponent({__name:"TextAreaInput",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=V(()=>l.modelValue,n);return(r,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps({id:r.id,"onUpdate:modelValue":i[0]||(i[0]=a=>e.isRef(t)?t.value=a:null)},{...r.$props,...r.$attrs}),null,16,x)),[[e.vModelText,e.unref(t)]])}}),H=["type"],u=e.defineComponent({__name:"BasicInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{default:"text"},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=V(()=>l.modelValue,n);return(r,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({"onUpdate:modelValue":i[0]||(i[0]=a=>e.isRef(t)?t.value=a:null),type:r.type},{...r.$props,...r.$attrs}),null,16,H)),[[e.vModelDynamic,e.unref(t)]])}}),_={classes:{"form-row":"form-maker-row","form-column":"form-maker-column","form-label":"form-maker-label","input-group":"form-maker-input-group","input-wrapper":"form-maker-input-wrapper","input-error":"form-maker-input-error",input:"form-maker-input",error:"form-maker-error","help-text":"form-maker-help-text","submit-button":"form-maker-submit"},components:{"form-maker-input-color":u,"form-maker-input-date":u,"form-maker-input-email":u,"form-maker-input-month":u,"form-maker-input-number":u,"form-maker-input-password":u,"form-maker-input-search":u,"form-maker-input-tel":u,"form-maker-input-time":u,"form-maker-input-text":u,"form-maker-input-url":u,"form-maker-input-week":u,"form-maker-input-range":u,"form-maker-input-file":R,"form-maker-input-textarea":q,"form-maker-input-select":W,"form-maker-input-checkbox":A,"form-maker-input-radio":L,"form-maker-label":G,"form-maker-help":y,"form-maker-error":y}};return{install:(s,n)=>{const l={classes:{..._.classes,...n.classes},components:{..._.components,...n.components}};s.component("FormMaker",j),s.component("FormMakerInput",D),Object.keys(l.classes).forEach(t=>{s.provide(t,l.classes[t])}),Object.keys(l.components).forEach(t=>{s.component(t,l.components[t])})}}}(Vue);
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { defineComponent as g, computed as $, provide as E, inject as c, resolveComponent as j, openBlock as u, createElementBlock as i, withModifiers as X, renderSlot as k, createTextVNode as O, createCommentVNode as B, Fragment as M, renderList as A, normalizeClass as T, unref as f, createVNode as Y, mergeProps as F, createElementVNode as S, toDisplayString as w, watch as q, toRaw as Z, ref as x, createBlock as I, withCtx as W, resolveDynamicComponent as ee, isRef as R, h as z, withDirectives as L, vModelSelect as le, vModelText as te, vModelDynamic as ae } from "vue";
1
+ import { defineComponent as g, computed as y, provide as E, inject as c, resolveComponent as j, openBlock as n, createElementBlock as i, withModifiers as X, renderSlot as k, createTextVNode as O, createCommentVNode as B, Fragment as M, renderList as A, normalizeClass as T, unref as f, createVNode as Y, mergeProps as F, createElementVNode as S, toDisplayString as w, watch as q, toRaw as Z, ref as x, createBlock as I, withCtx as W, resolveDynamicComponent as ee, isRef as R, h as z, withDirectives as L, vModelSelect as le, vModelText as te, vModelDynamic as ae } from "vue";
2
2
  const re = ["onSubmit"], oe = { key: 0 }, se = ["disabled"], ue = /* @__PURE__ */ g({
3
3
  __name: "FormMaker",
4
4
  props: {
@@ -20,8 +20,8 @@ const re = ["onSubmit"], oe = { key: 0 }, se = ["disabled"], ue = /* @__PURE__ *
20
20
  submitButtonText: { default: "Submit" }
21
21
  },
22
22
  emits: ["submit", "update:modelValue"],
23
- setup(s, { emit: a }) {
24
- const e = s, l = () => a("submit"), r = $(() => e.fields.length > 0 ? e.fields.map((t) => {
23
+ setup(s, { emit: r }) {
24
+ const e = s, l = () => r("submit"), a = y(() => e.fields.length > 0 ? e.fields.map((t) => {
25
25
  let b = t;
26
26
  return Array.isArray(t) || (b = [t]), b.map((C) => C.id ? C : {
27
27
  ...C,
@@ -35,11 +35,11 @@ const re = ["onSubmit"], oe = { key: 0 }, se = ["disabled"], ue = /* @__PURE__ *
35
35
  }
36
36
  ]));
37
37
  E("labelClass", e.labelClass || c("form-label")), E("inputGroupClass", e.inputGroupClass || c("input-group")), E("inputWrapperClass", e.inputWrapperClass || c("input-wrapper")), E("inputErrorClass", e.inputErrorClass || c("input-error")), E("inputClass", e.inputClass || c("input")), E("errorClass", e.errorClass || c("error")), E("helpTextClass", e.helpTextClass || c("help-text"));
38
- const n = e.rowClass || c("form-row"), o = e.columnClass || c("form-column"), v = e.submitButtonClass || c("submit-button"), p = (t) => {
38
+ const u = e.rowClass || c("form-row"), o = e.columnClass || c("form-column"), v = e.submitButtonClass || c("submit-button"), p = (t) => {
39
39
  const b = t.split(".");
40
40
  let C = e.modelValue;
41
- for (let y = 0; y < b.length - 1; y += 1) {
42
- const _ = C[b[y]];
41
+ for (let $ = 0; $ < b.length - 1; $ += 1) {
42
+ const _ = C[b[$]];
43
43
  if (!_)
44
44
  break;
45
45
  C = _;
@@ -51,7 +51,7 @@ const re = ["onSubmit"], oe = { key: 0 }, se = ["disabled"], ue = /* @__PURE__ *
51
51
  };
52
52
  return (t, b) => {
53
53
  const C = j("form-maker-input");
54
- return u(), i("form", {
54
+ return n(), i("form", {
55
55
  class: "form-maker",
56
56
  onSubmit: X(l, ["prevent"])
57
57
  }, [
@@ -59,11 +59,11 @@ const re = ["onSubmit"], oe = { key: 0 }, se = ["disabled"], ue = /* @__PURE__ *
59
59
  O(" Loading... ")
60
60
  ]) : B("", !0),
61
61
  k(t.$slots, "default", {}, () => [
62
- (u(!0), i(M, null, A(r.value, (y, _) => (u(), i("div", {
63
- class: T(f(n)),
62
+ (n(!0), i(M, null, A(a.value, ($, _) => (n(), i("div", {
63
+ class: T(f(u)),
64
64
  key: `fieldRow_${_}`
65
65
  }, [
66
- (u(!0), i(M, null, A(y, (V, d) => (u(), i("div", {
66
+ (n(!0), i(M, null, A($, (V, d) => (n(), i("div", {
67
67
  class: T([f(o), V.columnClass]),
68
68
  key: `field_${_}_${d}`
69
69
  }, [
@@ -78,7 +78,7 @@ const re = ["onSubmit"], oe = { key: 0 }, se = ["disabled"], ue = /* @__PURE__ *
78
78
  ]),
79
79
  k(t.$slots, "extra"),
80
80
  k(t.$slots, "divider", {}, () => [
81
- t.hasActions && !t.hideDivider ? (u(), i("hr", oe)) : B("", !0)
81
+ t.hasActions && !t.hideDivider ? (n(), i("hr", oe)) : B("", !0)
82
82
  ]),
83
83
  t.hasActions ? k(t.$slots, "actions", { key: 1 }, () => [
84
84
  k(t.$slots, "submit-button", {}, () => [
@@ -100,47 +100,47 @@ const re = ["onSubmit"], oe = { key: 0 }, se = ["disabled"], ue = /* @__PURE__ *
100
100
  modelValue: { default: void 0 }
101
101
  },
102
102
  emits: ["update:modelValue"],
103
- setup(s, { emit: a }) {
103
+ setup(s, { emit: r }) {
104
104
  const e = s;
105
105
  return q(
106
106
  e.modelValue,
107
107
  (l) => {
108
108
  var o;
109
- let r = null;
110
- const n = ((o = e.rules) == null ? void 0 : o.length) ?? 0;
111
- for (let v = 0; v < n; v += 1) {
109
+ let a = null;
110
+ const u = ((o = e.rules) == null ? void 0 : o.length) ?? 0;
111
+ for (let v = 0; v < u; v += 1) {
112
112
  const p = e.rules[v];
113
113
  if (!p.validator(l)) {
114
- r = p.message;
114
+ a = p.message;
115
115
  break;
116
116
  }
117
117
  }
118
- a("update:modelValue", r);
118
+ r("update:modelValue", a);
119
119
  },
120
120
  { immediate: !0 }
121
121
  ), () => {
122
122
  };
123
123
  }
124
124
  }), pe = () => {
125
- const s = c("labelClass", null), a = c("inputClass", null), e = c("inputWrapperClass", null), l = c("inputGroupClass", null), r = c("inputErrorClass", null), n = c("errorClass", null), o = c("helpTextClass", null);
125
+ const s = c("labelClass", null), r = c("inputClass", null), e = c("inputWrapperClass", null), l = c("inputGroupClass", null), a = c("inputErrorClass", null), u = c("errorClass", null), o = c("helpTextClass", null);
126
126
  return {
127
127
  labelClass: s,
128
- inputClass: a,
128
+ inputClass: r,
129
129
  inputWrapperClass: e,
130
130
  inputGroupClass: l,
131
- inputErrorClass: r,
132
- errorClass: n,
131
+ inputErrorClass: a,
132
+ errorClass: u,
133
133
  helpTextClass: o
134
134
  };
135
- }, ie = (s, a) => {
136
- const e = Z(a), l = x(null);
135
+ }, ie = (s, r) => {
136
+ const e = Z(r), l = x(null);
137
137
  return q(
138
138
  s,
139
- (r, n) => {
140
- if (l.value = null, r !== n)
139
+ (a, u) => {
140
+ if (l.value = null, a !== u)
141
141
  for (let o = 0; o < e.length; o += 1) {
142
142
  const v = e[o];
143
- if (!v.validator(r)) {
143
+ if (!v.validator(a)) {
144
144
  l.value = v.message;
145
145
  break;
146
146
  }
@@ -149,11 +149,11 @@ const re = ["onSubmit"], oe = { key: 0 }, se = ["disabled"], ue = /* @__PURE__ *
149
149
  { immediate: !0 }
150
150
  ), l;
151
151
  };
152
- function D(s, a, e) {
152
+ function D(s, r, e) {
153
153
  const l = e ?? "modelValue";
154
- return $({
154
+ return y({
155
155
  get: () => s(),
156
- set: (r) => a(`update:${l}`, r)
156
+ set: (a) => r(`update:${l}`, a)
157
157
  });
158
158
  }
159
159
  const me = /* @__PURE__ */ g({
@@ -169,26 +169,26 @@ const me = /* @__PURE__ */ g({
169
169
  rules: { default: () => [] }
170
170
  },
171
171
  emits: ["update:modelValue"],
172
- setup(s, { emit: a }) {
173
- const e = s, l = D(() => e.modelValue, a), {
174
- labelClass: r,
175
- inputClass: n,
172
+ setup(s, { emit: r }) {
173
+ const e = s, l = D(() => e.modelValue, r), {
174
+ labelClass: a,
175
+ inputClass: u,
176
176
  inputWrapperClass: o,
177
177
  inputGroupClass: v,
178
178
  inputErrorClass: p,
179
179
  errorClass: m,
180
180
  helpTextClass: t
181
- } = pe(), b = $(() => !!e.label), C = $(() => !!e.helpText), y = ie(l, e.rules), _ = $(() => !!e.error || !!y.value), V = $(() => e.error ? e.error : y.value);
181
+ } = pe(), b = y(() => !!e.label), C = y(() => !!e.helpText), $ = ie(l, e.rules), _ = y(() => !!e.error || !!$.value), V = y(() => e.error ? e.error : $.value);
182
182
  return (d, G) => {
183
183
  const J = j("form-maker-label"), K = j("form-maker-help"), Q = j("form-maker-error");
184
- return u(), i("div", {
184
+ return n(), i("div", {
185
185
  class: T([_.value && f(p), f(o)])
186
186
  }, [
187
187
  d.type !== "checkbox" ? k(d.$slots, "label", { key: 0 }, () => [
188
- b.value ? (u(), I(J, {
188
+ b.value ? (n(), I(J, {
189
189
  key: 0,
190
190
  id: d.id,
191
- class: T(f(r))
191
+ class: T(f(a))
192
192
  }, {
193
193
  default: W(() => [
194
194
  O(w(d.label), 1)
@@ -201,18 +201,17 @@ const me = /* @__PURE__ */ g({
201
201
  class: T([f(v), _.value && f(p)])
202
202
  }, [
203
203
  k(d.$slots, "before"),
204
- (u(), I(ee(`form-maker-input-${d.type}`), F({
204
+ (n(), I(ee(`form-maker-input-${d.type}`), F({ ...d.$props, ...d.$attrs }, {
205
+ class: [d.type !== "checkbox" && f(u), _.value && f(p)],
206
+ label: d.label,
205
207
  modelValue: f(l),
206
208
  "onUpdate:modelValue": G[0] || (G[0] = (U) => R(l) ? l.value = U : null)
207
- }, { ...d.$props, ...d.$attrs }, {
208
- class: [d.type !== "checkbox" && f(n), _.value && f(p)],
209
- label: d.label
210
- }), null, 16, ["modelValue", "class", "label"])),
209
+ }), null, 16, ["class", "label", "modelValue"])),
211
210
  k(d.$slots, "after")
212
211
  ], 2)
213
212
  ]),
214
213
  k(d.$slots, "help", {}, () => [
215
- C.value ? (u(), I(K, {
214
+ C.value ? (n(), I(K, {
216
215
  key: 0,
217
216
  class: T(f(t))
218
217
  }, {
@@ -223,7 +222,7 @@ const me = /* @__PURE__ */ g({
223
222
  }, 8, ["class"])) : B("", !0)
224
223
  ]),
225
224
  k(d.$slots, "errors", {}, () => [
226
- _.value ? (u(), I(Q, {
225
+ _.value ? (n(), I(Q, {
227
226
  key: 0,
228
227
  class: T(f(m))
229
228
  }, {
@@ -232,12 +231,12 @@ const me = /* @__PURE__ */ g({
232
231
  ]),
233
232
  _: 1
234
233
  }, 8, ["class"])) : B("", !0),
235
- d.rules.length ? (u(), I(ne, {
234
+ d.rules.length ? (n(), I(ne, {
236
235
  key: 1,
237
236
  rules: d.rules,
238
237
  value: d.modelValue,
239
- modelValue: f(y),
240
- "onUpdate:modelValue": G[1] || (G[1] = (U) => R(y) ? y.value = U : null)
238
+ modelValue: f($),
239
+ "onUpdate:modelValue": G[1] || (G[1] = (U) => R($) ? $.value = U : null)
241
240
  }, null, 8, ["rules", "value", "modelValue"])) : B("", !0)
242
241
  ])
243
242
  ], 2);
@@ -249,22 +248,22 @@ const me = /* @__PURE__ */ g({
249
248
  options: { type: [Boolean, Array], default: () => [] }
250
249
  },
251
250
  emits: ["update:modelValue"],
252
- setup(s, { emit: a }) {
253
- const e = s, l = $(() => Array.isArray(e.options) && e.options.length === 0), r = $(() => e.modelValue), n = $(() => (Array.isArray(r.value) ? r.value : [r.value]).filter((m) => !!m)), o = $(() => l.value ? [
251
+ setup(s, { emit: r }) {
252
+ const e = s, l = y(() => Array.isArray(e.options) && e.options.length === 0), a = y(() => e.modelValue), u = y(() => (Array.isArray(a.value) ? a.value : [a.value]).filter((m) => !!m)), o = y(() => l.value ? [
254
253
  {
255
254
  label: e.label,
256
255
  value: !0
257
256
  }
258
257
  ] : e.options), v = (p) => {
259
- let m = [...n.value];
260
- m.indexOf(p) === -1 ? m.push(p) : m = m.filter((t) => t !== p), l.value ? a("update:modelValue", m.length > 0) : a("update:modelValue", m);
258
+ let m = [...u.value];
259
+ m.indexOf(p) === -1 ? m.push(p) : m = m.filter((t) => t !== p), l.value ? r("update:modelValue", m.length > 0) : r("update:modelValue", m);
261
260
  };
262
- return (p, m) => (u(!0), i(M, null, A(o.value, (t, b) => (u(), i("div", {
261
+ return (p, m) => (n(!0), i(M, null, A(o.value, (t, b) => (n(), i("div", {
263
262
  key: `option_${b}`
264
263
  }, [
265
264
  S("label", null, [
266
265
  S("input", F(p.$props, {
267
- checked: n.value.indexOf(t.value) !== -1,
266
+ checked: u.value.indexOf(t.value) !== -1,
268
267
  value: t.value,
269
268
  type: "checkbox",
270
269
  onClick: () => v(t.value)
@@ -285,21 +284,22 @@ const me = /* @__PURE__ */ g({
285
284
  rules: { default: () => [] }
286
285
  },
287
286
  emits: ["update:modelValue"],
288
- setup(s, { emit: a }) {
287
+ setup(s, { emit: r }) {
289
288
  const e = (l) => {
290
- if (l.target.files.length) {
291
- const r = l.target.files[0];
292
- a("update:modelValue", r);
289
+ const a = l.currentTarget;
290
+ if (a.files && a.files.length) {
291
+ const u = a.files[0];
292
+ r("update:modelValue", u);
293
293
  }
294
294
  };
295
- return (l, r) => (u(), i("input", F(l.$props, {
295
+ return (l, a) => (n(), i("input", F(l.$props, {
296
296
  type: "file",
297
297
  onChange: e
298
298
  }), null, 16));
299
299
  }
300
300
  });
301
- function N(s, a) {
302
- return z(s.as, a.attrs, a.slots);
301
+ function N(s, r) {
302
+ return z(`${s.as ?? "div"}`, r.attrs, r.slots);
303
303
  }
304
304
  N.props = {
305
305
  as: {
@@ -308,8 +308,8 @@ N.props = {
308
308
  default: "div"
309
309
  }
310
310
  };
311
- function H(s, { slots: a, attrs: e }) {
312
- return z("label", { ...e, for: s.id }, a.default());
311
+ function H(s, { slots: r, attrs: e }) {
312
+ return z("label", { ...e, for: s.id }, r.default());
313
313
  }
314
314
  H.props = {
315
315
  id: {
@@ -327,28 +327,28 @@ const ve = H, ke = ["checked", "value", "onChange"], be = /* @__PURE__ */ g({
327
327
  helpText: { default: void 0 },
328
328
  label: { default: void 0 },
329
329
  type: {},
330
- rules: { default: () => [] }
330
+ rules: {}
331
331
  },
332
332
  emits: ["update:modelValue"],
333
- setup(s, { emit: a }) {
333
+ setup(s, { emit: r }) {
334
334
  const e = (l) => {
335
- a("update:modelValue", l);
335
+ r("update:modelValue", l);
336
336
  };
337
- return (l, r) => (u(!0), i(M, null, A(l.options, (n, o) => (u(), i("div", {
337
+ return (l, a) => (n(!0), i(M, null, A(l.options, (u, o) => (n(), i("div", {
338
338
  key: `option_${o}`
339
339
  }, [
340
340
  S("label", null, [
341
341
  S("input", F(l.$props, {
342
- checked: n.value === l.modelValue,
343
- value: n.value,
342
+ checked: u.value === l.modelValue,
343
+ value: u.value,
344
344
  type: "radio",
345
- onChange: (v) => e(n.value)
345
+ onChange: (v) => e(u.value)
346
346
  }), null, 16, ke),
347
- O(" " + w(n.label), 1)
347
+ O(" " + w(u.label), 1)
348
348
  ])
349
349
  ]))), 128));
350
350
  }
351
- }), he = ["id", "disabled", "name", "placeholder"], Ce = ["label"], ye = ["value"], $e = ["value"], _e = /* @__PURE__ */ g({
351
+ }), he = ["id", "disabled", "name", "placeholder"], Ce = ["label"], $e = ["value"], ye = ["value"], _e = /* @__PURE__ */ g({
352
352
  __name: "SelectInput",
353
353
  props: {
354
354
  options: { default: () => [] },
@@ -362,30 +362,30 @@ const ve = H, ke = ["checked", "value", "onChange"], be = /* @__PURE__ */ g({
362
362
  rules: { default: () => [] }
363
363
  },
364
364
  emits: ["update:modelValue"],
365
- setup(s, { emit: a }) {
366
- const e = s, l = D(() => e.modelValue, a), r = Object.keys(e.optionGroups).length > 0, n = $(() => e.options.map((o) => typeof o == "object" ? o : {
365
+ setup(s, { emit: r }) {
366
+ const e = s, l = D(() => e.modelValue, r), a = Object.keys(e.optionGroups).length > 0, u = y(() => e.options.map((o) => typeof o == "object" ? o : {
367
367
  label: o,
368
368
  value: o
369
369
  }));
370
- return (o, v) => L((u(), i("select", {
370
+ return (o, v) => L((n(), i("select", {
371
371
  id: o.id,
372
372
  "onUpdate:modelValue": v[0] || (v[0] = (p) => R(l) ? l.value = p : null),
373
373
  disabled: o.disabled,
374
374
  name: o.name,
375
375
  placeholder: o.placeholder
376
376
  }, [
377
- r ? (u(!0), i(M, { key: 0 }, A(o.optionGroups, (p, m) => (u(), i("optgroup", {
377
+ a ? (n(!0), i(M, { key: 0 }, A(o.optionGroups, (p, m) => (n(), i("optgroup", {
378
378
  key: `optGroup_${m}`,
379
379
  label: m
380
380
  }, [
381
- (u(!0), i(M, null, A(p, (t) => (u(), i("option", {
381
+ (n(!0), i(M, null, A(p, (t) => (n(), i("option", {
382
382
  key: `option_${t.value}`,
383
383
  value: t.value
384
- }, w(t.label), 9, ye))), 128))
385
- ], 8, Ce))), 128)) : (u(!0), i(M, { key: 1 }, A(n.value, (p, m) => (u(), i("option", {
384
+ }, w(t.label), 9, $e))), 128))
385
+ ], 8, Ce))), 128)) : (n(!0), i(M, { key: 1 }, A(u.value, (p, m) => (n(), i("option", {
386
386
  key: `option_${m}`,
387
387
  value: p.value
388
- }, w(p.label), 9, $e))), 128))
388
+ }, w(p.label), 9, ye))), 128))
389
389
  ], 8, he)), [
390
390
  [le, f(l)]
391
391
  ]);
@@ -396,12 +396,12 @@ const ve = H, ke = ["checked", "value", "onChange"], be = /* @__PURE__ */ g({
396
396
  modelValue: {}
397
397
  },
398
398
  emits: ["update:modelValue"],
399
- setup(s, { emit: a }) {
400
- const e = s, l = D(() => e.modelValue, a);
401
- return (r, n) => L((u(), i("textarea", F({
402
- id: r.id,
403
- "onUpdate:modelValue": n[0] || (n[0] = (o) => R(l) ? l.value = o : null)
404
- }, { ...r.$props, ...r.$attrs }), null, 16, Ve)), [
399
+ setup(s, { emit: r }) {
400
+ const e = s, l = D(() => e.modelValue, r);
401
+ return (a, u) => L((n(), i("textarea", F({
402
+ id: a.id,
403
+ "onUpdate:modelValue": u[0] || (u[0] = (o) => R(l) ? l.value = o : null)
404
+ }, { ...a.$props, ...a.$attrs }), null, 16, Ve)), [
405
405
  [te, f(l)]
406
406
  ]);
407
407
  }
@@ -417,12 +417,12 @@ const ve = H, ke = ["checked", "value", "onChange"], be = /* @__PURE__ */ g({
417
417
  rules: { default: () => [] }
418
418
  },
419
419
  emits: ["update:modelValue"],
420
- setup(s, { emit: a }) {
421
- const e = s, l = D(() => e.modelValue, a);
422
- return (r, n) => L((u(), i("input", F({
423
- "onUpdate:modelValue": n[0] || (n[0] = (o) => R(l) ? l.value = o : null),
424
- type: r.type
425
- }, { ...r.$props, ...r.$attrs }), null, 16, Be)), [
420
+ setup(s, { emit: r }) {
421
+ const e = s, l = D(() => e.modelValue, r);
422
+ return (a, u) => L((n(), i("input", F({
423
+ "onUpdate:modelValue": u[0] || (u[0] = (o) => R(l) ? l.value = o : null),
424
+ type: a.type
425
+ }, { ...a.$props, ...a.$attrs }), null, 16, Be)), [
426
426
  [ae, f(l)]
427
427
  ]);
428
428
  }
@@ -463,12 +463,12 @@ const ve = H, ke = ["checked", "value", "onChange"], be = /* @__PURE__ */ g({
463
463
  "form-maker-error": N
464
464
  }
465
465
  }, we = {
466
- install: (s, a = {}) => {
466
+ install: (s, r) => {
467
467
  const e = {
468
- classes: { ...P.classes, ...a.classes },
468
+ classes: { ...P.classes, ...r.classes },
469
469
  components: {
470
470
  ...P.components,
471
- ...a.components
471
+ ...r.components
472
472
  }
473
473
  };
474
474
  s.component("FormMaker", ue), s.component("FormMakerInput", me), Object.keys(e.classes).forEach((l) => {
@@ -1 +1 @@
1
- (function(e,V){typeof exports=="object"&&typeof module<"u"?module.exports=V(require("vue")):typeof define=="function"&&define.amd?define(["vue"],V):(e=typeof globalThis<"u"?globalThis:e||self,e.FormMaker=V(e.Vue))})(this,function(e){"use strict";const V=["onSubmit"],S={key:0},T=["disabled"],j=e.defineComponent({__name:"FormMaker",props:{loading:{type:Boolean,default:!1},hasActions:{type:Boolean,default:!0},modelValue:{default:()=>({})},fields:{default:()=>[]},hideDivider:{type:Boolean,default:!1},rowClass:{default:null},columnClass:{default:null},labelClass:{default:null},inputGroupClass:{default:null},inputWrapperClass:{default:null},inputErrorClass:{default:null},inputClass:{default:null},errorClass:{default:null},helpTextClass:{default:null},submitButtonClass:{default:null},submitButtonText:{default:"Submit"}},emits:["submit","update:modelValue"],setup(s,{emit:r}){const l=s,t=()=>r("submit"),n=e.computed(()=>l.fields.length>0?l.fields.map(o=>{let f=o;return Array.isArray(o)||(f=[o]),f.map(k=>k.id?k:{...k,id:`formMaker_${new Date().getTime()}_${k.name}`})}):Object.keys(l.modelValue).map(o=>[{name:o,label:o,id:`formMaker_${o}`}]));e.provide("labelClass",l.labelClass||e.inject("form-label")),e.provide("inputGroupClass",l.inputGroupClass||e.inject("input-group")),e.provide("inputWrapperClass",l.inputWrapperClass||e.inject("input-wrapper")),e.provide("inputErrorClass",l.inputErrorClass||e.inject("input-error")),e.provide("inputClass",l.inputClass||e.inject("input")),e.provide("errorClass",l.errorClass||e.inject("error")),e.provide("helpTextClass",l.helpTextClass||e.inject("help-text"));const i=l.rowClass||e.inject("form-row"),a=l.columnClass||e.inject("form-column"),c=l.submitButtonClass||e.inject("submit-button"),p=o=>{const f=o.split(".");let k=l.modelValue;for(let C=0;C<f.length-1;C+=1){const h=k[f[C]];if(!h)break;k=h}return k},m=o=>{const f=o.split(".");return f[f.length-1]};return(o,f)=>{const k=e.resolveComponent("form-maker-input");return e.openBlock(),e.createElementBlock("form",{class:"form-maker",onSubmit:e.withModifiers(t,["prevent"])},[o.loading?e.renderSlot(o.$slots,"loading",{key:0},()=>[e.createTextVNode(" Loading... ")]):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"default",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(C,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(i)),key:`fieldRow_${h}`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,(b,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(a),b.columnClass]),key:`field_${h}_${d}`},[e.renderSlot(o.$slots,`${b.name}`,{field:b},()=>[e.createVNode(k,e.mergeProps({modelValue:p(b.name)[m(b.name)],"onUpdate:modelValue":B=>p(b.name)[m(b.name)]=B},b),null,16,["modelValue","onUpdate:modelValue"])])],2))),128))],2))),128))]),e.renderSlot(o.$slots,"extra"),e.renderSlot(o.$slots,"divider",{},()=>[o.hasActions&&!o.hideDivider?(e.openBlock(),e.createElementBlock("hr",S)):e.createCommentVNode("",!0)]),o.hasActions?e.renderSlot(o.$slots,"actions",{key:1},()=>[e.renderSlot(o.$slots,"submit-button",{},()=>[e.createElementVNode("button",{class:e.normalizeClass(e.unref(c)),disabled:o.loading,type:"submit"},e.toDisplayString(o.submitButtonText),11,T)]),e.renderSlot(o.$slots,"extra-buttons")]):e.createCommentVNode("",!0)],40,V)}}}),w=e.defineComponent({__name:"RuleEvaluator",props:{rules:{default:()=>[]},modelValue:{default:void 0}},emits:["update:modelValue"],setup(s,{emit:r}){const l=s;return e.watch(l.modelValue,t=>{var a;let n=null;const i=((a=l.rules)==null?void 0:a.length)??0;for(let c=0;c<i;c+=1){const p=l.rules[c];if(!p.validator(t)){n=p.message;break}}r("update:modelValue",n)},{immediate:!0}),()=>{}}}),N=()=>{const s=e.inject("labelClass",null),r=e.inject("inputClass",null),l=e.inject("inputWrapperClass",null),t=e.inject("inputGroupClass",null),n=e.inject("inputErrorClass",null),i=e.inject("errorClass",null),a=e.inject("helpTextClass",null);return{labelClass:s,inputClass:r,inputWrapperClass:l,inputGroupClass:t,inputErrorClass:n,errorClass:i,helpTextClass:a}},F=(s,r)=>{const l=e.toRaw(r),t=e.ref(null);return e.watch(s,(n,i)=>{if(t.value=null,n!==i)for(let a=0;a<l.length;a+=1){const c=l[a];if(!c.validator(n)){t.value=c.message;break}}},{immediate:!0}),t};function y(s,r,l){const t=l??"modelValue";return e.computed({get:()=>s(),set:n=>r(`update:${t}`,n)})}const D=e.defineComponent({inheritAttrs:!1,__name:"FormMakerInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{default:"text"},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:r}){const l=s,t=y(()=>l.modelValue,r),{labelClass:n,inputClass:i,inputWrapperClass:a,inputGroupClass:c,inputErrorClass:p,errorClass:m,helpTextClass:o}=N(),f=e.computed(()=>!!l.label),k=e.computed(()=>!!l.helpText),C=F(t,l.rules),h=e.computed(()=>!!l.error||!!C.value),b=e.computed(()=>l.error?l.error:C.value);return(d,B)=>{const J=e.resolveComponent("form-maker-label"),K=e.resolveComponent("form-maker-help"),Q=e.resolveComponent("form-maker-error");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([h.value&&e.unref(p),e.unref(a)])},[d.type!=="checkbox"?e.renderSlot(d.$slots,"label",{key:0},()=>[f.value?(e.openBlock(),e.createBlock(J,{key:0,id:d.id,class:e.normalizeClass(e.unref(n))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.label),1)]),_:1},8,["id","class"])):e.createCommentVNode("",!0)]):e.createCommentVNode("",!0),e.renderSlot(d.$slots,"default",{},()=>[e.createElementVNode("div",{class:e.normalizeClass([e.unref(c),h.value&&e.unref(p)])},[e.renderSlot(d.$slots,"before"),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`form-maker-input-${d.type}`),e.mergeProps({modelValue:e.unref(t),"onUpdate:modelValue":B[0]||(B[0]=$=>e.isRef(t)?t.value=$:null)},{...d.$props,...d.$attrs},{class:[d.type!=="checkbox"&&e.unref(i),h.value&&e.unref(p)],label:d.label}),null,16,["modelValue","class","label"])),e.renderSlot(d.$slots,"after")],2)]),e.renderSlot(d.$slots,"help",{},()=>[k.value?(e.openBlock(),e.createBlock(K,{key:0,class:e.normalizeClass(e.unref(o))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.helpText),1)]),_:1},8,["class"])):e.createCommentVNode("",!0)]),e.renderSlot(d.$slots,"errors",{},()=>[h.value?(e.openBlock(),e.createBlock(Q,{key:0,class:e.normalizeClass(e.unref(m))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.value),1)]),_:1},8,["class"])):e.createCommentVNode("",!0),d.rules.length?(e.openBlock(),e.createBlock(w,{key:1,rules:d.rules,value:d.modelValue,modelValue:e.unref(C),"onUpdate:modelValue":B[1]||(B[1]=$=>e.isRef(C)?C.value=$:null)},null,8,["rules","value","modelValue"])):e.createCommentVNode("",!0)])],2)}}}),M=["checked","value","onClick"],A=e.defineComponent({__name:"CheckboxInput",props:{options:{type:[Boolean,Array],default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:r}){const l=s,t=e.computed(()=>Array.isArray(l.options)&&l.options.length===0),n=e.computed(()=>l.modelValue),i=e.computed(()=>(Array.isArray(n.value)?n.value:[n.value]).filter(m=>!!m)),a=e.computed(()=>t.value?[{label:l.label,value:!0}]:l.options),c=p=>{let m=[...i.value];m.indexOf(p)===-1?m.push(p):m=m.filter(o=>o!==p),t.value?r("update:modelValue",m.length>0):r("update:modelValue",m)};return(p,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(o,f)=>(e.openBlock(),e.createElementBlock("div",{key:`option_${f}`},[e.createElementVNode("label",null,[e.createElementVNode("input",e.mergeProps(p.$props,{checked:i.value.indexOf(o.value)!==-1,value:o.value,type:"checkbox",onClick:()=>c(o.value)}),null,16,M),e.createTextVNode(" "+e.toDisplayString(o.label),1)])]))),128))}}),R=e.defineComponent({__name:"FileInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:r}){const l=t=>{if(t.target.files.length){const n=t.target.files[0];r("update:modelValue",n)}};return(t,n)=>(e.openBlock(),e.createElementBlock("input",e.mergeProps(t.$props,{type:"file",onChange:l}),null,16))}});function g(s,r){return e.h(s.as,r.attrs,r.slots)}g.props={as:{type:String,required:!1,default:"div"}};function _(s,{slots:r,attrs:l}){return e.h("label",{...l,for:s.id},r.default())}_.props={id:{type:String,default:null}};const G=_,O=["checked","value","onChange"],L=e.defineComponent({__name:"RadioInput",props:{options:{default:()=>[]},loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:r}){const l=t=>{r("update:modelValue",t)};return(t,n)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,(i,a)=>(e.openBlock(),e.createElementBlock("div",{key:`option_${a}`},[e.createElementVNode("label",null,[e.createElementVNode("input",e.mergeProps(t.$props,{checked:i.value===t.modelValue,value:i.value,type:"radio",onChange:c=>l(i.value)}),null,16,O),e.createTextVNode(" "+e.toDisplayString(i.label),1)])]))),128))}}),I=["id","disabled","name","placeholder"],P=["label"],z=["value"],U=["value"],x=e.defineComponent({__name:"SelectInput",props:{options:{default:()=>[]},optionGroups:{default:()=>({})},loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:r}){const l=s,t=y(()=>l.modelValue,r),n=Object.keys(l.optionGroups).length>0,i=e.computed(()=>l.options.map(a=>typeof a=="object"?a:{label:a,value:a}));return(a,c)=>e.withDirectives((e.openBlock(),e.createElementBlock("select",{id:a.id,"onUpdate:modelValue":c[0]||(c[0]=p=>e.isRef(t)?t.value=p:null),disabled:a.disabled,name:a.name,placeholder:a.placeholder},[n?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.optionGroups,(p,m)=>(e.openBlock(),e.createElementBlock("optgroup",{key:`optGroup_${m}`,label:m},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p,o=>(e.openBlock(),e.createElementBlock("option",{key:`option_${o.value}`,value:o.value},e.toDisplayString(o.label),9,z))),128))],8,P))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(i.value,(p,m)=>(e.openBlock(),e.createElementBlock("option",{key:`option_${m}`,value:p.value},e.toDisplayString(p.label),9,U))),128))],8,I)),[[e.vModelSelect,e.unref(t)]])}}),W=["id"],q=e.defineComponent({__name:"TextAreaInput",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:r}){const l=s,t=y(()=>l.modelValue,r);return(n,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps({id:n.id,"onUpdate:modelValue":i[0]||(i[0]=a=>e.isRef(t)?t.value=a:null)},{...n.$props,...n.$attrs}),null,16,W)),[[e.vModelText,e.unref(t)]])}}),H=["type"],u=e.defineComponent({__name:"BasicInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{default:"text"},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:r}){const l=s,t=y(()=>l.modelValue,r);return(n,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({"onUpdate:modelValue":i[0]||(i[0]=a=>e.isRef(t)?t.value=a:null),type:n.type},{...n.$props,...n.$attrs}),null,16,H)),[[e.vModelDynamic,e.unref(t)]])}}),E={classes:{"form-row":"form-maker-row","form-column":"form-maker-column","form-label":"form-maker-label","input-group":"form-maker-input-group","input-wrapper":"form-maker-input-wrapper","input-error":"form-maker-input-error",input:"form-maker-input",error:"form-maker-error","help-text":"form-maker-help-text","submit-button":"form-maker-submit"},components:{"form-maker-input-color":u,"form-maker-input-date":u,"form-maker-input-email":u,"form-maker-input-month":u,"form-maker-input-number":u,"form-maker-input-password":u,"form-maker-input-search":u,"form-maker-input-tel":u,"form-maker-input-time":u,"form-maker-input-text":u,"form-maker-input-url":u,"form-maker-input-week":u,"form-maker-input-range":u,"form-maker-input-file":R,"form-maker-input-textarea":q,"form-maker-input-select":x,"form-maker-input-checkbox":A,"form-maker-input-radio":L,"form-maker-label":G,"form-maker-help":g,"form-maker-error":g}};return{install:(s,r={})=>{const l={classes:{...E.classes,...r.classes},components:{...E.components,...r.components}};s.component("FormMaker",j),s.component("FormMakerInput",D),Object.keys(l.classes).forEach(t=>{s.provide(t,l.classes[t])}),Object.keys(l.components).forEach(t=>{s.component(t,l.components[t])})}}});
1
+ (function(e,V){typeof exports=="object"&&typeof module<"u"?module.exports=V(require("vue")):typeof define=="function"&&define.amd?define(["vue"],V):(e=typeof globalThis<"u"?globalThis:e||self,e.FormMaker=V(e.Vue))})(this,function(e){"use strict";const V=["onSubmit"],S={key:0},T=["disabled"],j=e.defineComponent({__name:"FormMaker",props:{loading:{type:Boolean,default:!1},hasActions:{type:Boolean,default:!0},modelValue:{default:()=>({})},fields:{default:()=>[]},hideDivider:{type:Boolean,default:!1},rowClass:{default:null},columnClass:{default:null},labelClass:{default:null},inputGroupClass:{default:null},inputWrapperClass:{default:null},inputErrorClass:{default:null},inputClass:{default:null},errorClass:{default:null},helpTextClass:{default:null},submitButtonClass:{default:null},submitButtonText:{default:"Submit"}},emits:["submit","update:modelValue"],setup(s,{emit:n}){const l=s,t=()=>n("submit"),r=e.computed(()=>l.fields.length>0?l.fields.map(o=>{let f=o;return Array.isArray(o)||(f=[o]),f.map(k=>k.id?k:{...k,id:`formMaker_${new Date().getTime()}_${k.name}`})}):Object.keys(l.modelValue).map(o=>[{name:o,label:o,id:`formMaker_${o}`}]));e.provide("labelClass",l.labelClass||e.inject("form-label")),e.provide("inputGroupClass",l.inputGroupClass||e.inject("input-group")),e.provide("inputWrapperClass",l.inputWrapperClass||e.inject("input-wrapper")),e.provide("inputErrorClass",l.inputErrorClass||e.inject("input-error")),e.provide("inputClass",l.inputClass||e.inject("input")),e.provide("errorClass",l.errorClass||e.inject("error")),e.provide("helpTextClass",l.helpTextClass||e.inject("help-text"));const i=l.rowClass||e.inject("form-row"),a=l.columnClass||e.inject("form-column"),c=l.submitButtonClass||e.inject("submit-button"),p=o=>{const f=o.split(".");let k=l.modelValue;for(let C=0;C<f.length-1;C+=1){const h=k[f[C]];if(!h)break;k=h}return k},m=o=>{const f=o.split(".");return f[f.length-1]};return(o,f)=>{const k=e.resolveComponent("form-maker-input");return e.openBlock(),e.createElementBlock("form",{class:"form-maker",onSubmit:e.withModifiers(t,["prevent"])},[o.loading?e.renderSlot(o.$slots,"loading",{key:0},()=>[e.createTextVNode(" Loading... ")]):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"default",{},()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(C,h)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(i)),key:`fieldRow_${h}`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,(b,d)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(a),b.columnClass]),key:`field_${h}_${d}`},[e.renderSlot(o.$slots,`${b.name}`,{field:b},()=>[e.createVNode(k,e.mergeProps({modelValue:p(b.name)[m(b.name)],"onUpdate:modelValue":B=>p(b.name)[m(b.name)]=B},b),null,16,["modelValue","onUpdate:modelValue"])])],2))),128))],2))),128))]),e.renderSlot(o.$slots,"extra"),e.renderSlot(o.$slots,"divider",{},()=>[o.hasActions&&!o.hideDivider?(e.openBlock(),e.createElementBlock("hr",S)):e.createCommentVNode("",!0)]),o.hasActions?e.renderSlot(o.$slots,"actions",{key:1},()=>[e.renderSlot(o.$slots,"submit-button",{},()=>[e.createElementVNode("button",{class:e.normalizeClass(e.unref(c)),disabled:o.loading,type:"submit"},e.toDisplayString(o.submitButtonText),11,T)]),e.renderSlot(o.$slots,"extra-buttons")]):e.createCommentVNode("",!0)],40,V)}}}),w=e.defineComponent({__name:"RuleEvaluator",props:{rules:{default:()=>[]},modelValue:{default:void 0}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s;return e.watch(l.modelValue,t=>{var a;let r=null;const i=((a=l.rules)==null?void 0:a.length)??0;for(let c=0;c<i;c+=1){const p=l.rules[c];if(!p.validator(t)){r=p.message;break}}n("update:modelValue",r)},{immediate:!0}),()=>{}}}),N=()=>{const s=e.inject("labelClass",null),n=e.inject("inputClass",null),l=e.inject("inputWrapperClass",null),t=e.inject("inputGroupClass",null),r=e.inject("inputErrorClass",null),i=e.inject("errorClass",null),a=e.inject("helpTextClass",null);return{labelClass:s,inputClass:n,inputWrapperClass:l,inputGroupClass:t,inputErrorClass:r,errorClass:i,helpTextClass:a}},F=(s,n)=>{const l=e.toRaw(n),t=e.ref(null);return e.watch(s,(r,i)=>{if(t.value=null,r!==i)for(let a=0;a<l.length;a+=1){const c=l[a];if(!c.validator(r)){t.value=c.message;break}}},{immediate:!0}),t};function y(s,n,l){const t=l??"modelValue";return e.computed({get:()=>s(),set:r=>n(`update:${t}`,r)})}const D=e.defineComponent({inheritAttrs:!1,__name:"FormMakerInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{default:"text"},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=y(()=>l.modelValue,n),{labelClass:r,inputClass:i,inputWrapperClass:a,inputGroupClass:c,inputErrorClass:p,errorClass:m,helpTextClass:o}=N(),f=e.computed(()=>!!l.label),k=e.computed(()=>!!l.helpText),C=F(t,l.rules),h=e.computed(()=>!!l.error||!!C.value),b=e.computed(()=>l.error?l.error:C.value);return(d,B)=>{const J=e.resolveComponent("form-maker-label"),K=e.resolveComponent("form-maker-help"),Q=e.resolveComponent("form-maker-error");return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([h.value&&e.unref(p),e.unref(a)])},[d.type!=="checkbox"?e.renderSlot(d.$slots,"label",{key:0},()=>[f.value?(e.openBlock(),e.createBlock(J,{key:0,id:d.id,class:e.normalizeClass(e.unref(r))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.label),1)]),_:1},8,["id","class"])):e.createCommentVNode("",!0)]):e.createCommentVNode("",!0),e.renderSlot(d.$slots,"default",{},()=>[e.createElementVNode("div",{class:e.normalizeClass([e.unref(c),h.value&&e.unref(p)])},[e.renderSlot(d.$slots,"before"),(e.openBlock(),e.createBlock(e.resolveDynamicComponent(`form-maker-input-${d.type}`),e.mergeProps({...d.$props,...d.$attrs},{class:[d.type!=="checkbox"&&e.unref(i),h.value&&e.unref(p)],label:d.label,modelValue:e.unref(t),"onUpdate:modelValue":B[0]||(B[0]=$=>e.isRef(t)?t.value=$:null)}),null,16,["class","label","modelValue"])),e.renderSlot(d.$slots,"after")],2)]),e.renderSlot(d.$slots,"help",{},()=>[k.value?(e.openBlock(),e.createBlock(K,{key:0,class:e.normalizeClass(e.unref(o))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(d.helpText),1)]),_:1},8,["class"])):e.createCommentVNode("",!0)]),e.renderSlot(d.$slots,"errors",{},()=>[h.value?(e.openBlock(),e.createBlock(Q,{key:0,class:e.normalizeClass(e.unref(m))},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(b.value),1)]),_:1},8,["class"])):e.createCommentVNode("",!0),d.rules.length?(e.openBlock(),e.createBlock(w,{key:1,rules:d.rules,value:d.modelValue,modelValue:e.unref(C),"onUpdate:modelValue":B[1]||(B[1]=$=>e.isRef(C)?C.value=$:null)},null,8,["rules","value","modelValue"])):e.createCommentVNode("",!0)])],2)}}}),M=["checked","value","onClick"],A=e.defineComponent({__name:"CheckboxInput",props:{options:{type:[Boolean,Array],default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=e.computed(()=>Array.isArray(l.options)&&l.options.length===0),r=e.computed(()=>l.modelValue),i=e.computed(()=>(Array.isArray(r.value)?r.value:[r.value]).filter(m=>!!m)),a=e.computed(()=>t.value?[{label:l.label,value:!0}]:l.options),c=p=>{let m=[...i.value];m.indexOf(p)===-1?m.push(p):m=m.filter(o=>o!==p),t.value?n("update:modelValue",m.length>0):n("update:modelValue",m)};return(p,m)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(o,f)=>(e.openBlock(),e.createElementBlock("div",{key:`option_${f}`},[e.createElementVNode("label",null,[e.createElementVNode("input",e.mergeProps(p.$props,{checked:i.value.indexOf(o.value)!==-1,value:o.value,type:"checkbox",onClick:()=>c(o.value)}),null,16,M),e.createTextVNode(" "+e.toDisplayString(o.label),1)])]))),128))}}),R=e.defineComponent({__name:"FileInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=t=>{const r=t.currentTarget;if(r.files&&r.files.length){const i=r.files[0];n("update:modelValue",i)}};return(t,r)=>(e.openBlock(),e.createElementBlock("input",e.mergeProps(t.$props,{type:"file",onChange:l}),null,16))}});function g(s,n){return e.h(`${s.as??"div"}`,n.attrs,n.slots)}g.props={as:{type:String,required:!1,default:"div"}};function _(s,{slots:n,attrs:l}){return e.h("label",{...l,for:s.id},n.default())}_.props={id:{type:String,default:null}};const G=_,O=["checked","value","onChange"],L=e.defineComponent({__name:"RadioInput",props:{options:{default:()=>[]},loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{}},emits:["update:modelValue"],setup(s,{emit:n}){const l=t=>{n("update:modelValue",t)};return(t,r)=>(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,(i,a)=>(e.openBlock(),e.createElementBlock("div",{key:`option_${a}`},[e.createElementVNode("label",null,[e.createElementVNode("input",e.mergeProps(t.$props,{checked:i.value===t.modelValue,value:i.value,type:"radio",onChange:c=>l(i.value)}),null,16,O),e.createTextVNode(" "+e.toDisplayString(i.label),1)])]))),128))}}),I=["id","disabled","name","placeholder"],P=["label"],z=["value"],U=["value"],x=e.defineComponent({__name:"SelectInput",props:{options:{default:()=>[]},optionGroups:{default:()=>({})},loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=y(()=>l.modelValue,n),r=Object.keys(l.optionGroups).length>0,i=e.computed(()=>l.options.map(a=>typeof a=="object"?a:{label:a,value:a}));return(a,c)=>e.withDirectives((e.openBlock(),e.createElementBlock("select",{id:a.id,"onUpdate:modelValue":c[0]||(c[0]=p=>e.isRef(t)?t.value=p:null),disabled:a.disabled,name:a.name,placeholder:a.placeholder},[r?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(a.optionGroups,(p,m)=>(e.openBlock(),e.createElementBlock("optgroup",{key:`optGroup_${m}`,label:m},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p,o=>(e.openBlock(),e.createElementBlock("option",{key:`option_${o.value}`,value:o.value},e.toDisplayString(o.label),9,z))),128))],8,P))),128)):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(i.value,(p,m)=>(e.openBlock(),e.createElementBlock("option",{key:`option_${m}`,value:p.value},e.toDisplayString(p.label),9,U))),128))],8,I)),[[e.vModelSelect,e.unref(t)]])}}),W=["id"],q=e.defineComponent({__name:"TextAreaInput",props:{modelValue:{}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=y(()=>l.modelValue,n);return(r,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("textarea",e.mergeProps({id:r.id,"onUpdate:modelValue":i[0]||(i[0]=a=>e.isRef(t)?t.value=a:null)},{...r.$props,...r.$attrs}),null,16,W)),[[e.vModelText,e.unref(t)]])}}),H=["type"],u=e.defineComponent({__name:"BasicInput",props:{loading:{type:Boolean,default:!1},modelValue:{},error:{default:void 0},helpText:{default:void 0},label:{default:void 0},type:{default:"text"},rules:{default:()=>[]}},emits:["update:modelValue"],setup(s,{emit:n}){const l=s,t=y(()=>l.modelValue,n);return(r,i)=>e.withDirectives((e.openBlock(),e.createElementBlock("input",e.mergeProps({"onUpdate:modelValue":i[0]||(i[0]=a=>e.isRef(t)?t.value=a:null),type:r.type},{...r.$props,...r.$attrs}),null,16,H)),[[e.vModelDynamic,e.unref(t)]])}}),E={classes:{"form-row":"form-maker-row","form-column":"form-maker-column","form-label":"form-maker-label","input-group":"form-maker-input-group","input-wrapper":"form-maker-input-wrapper","input-error":"form-maker-input-error",input:"form-maker-input",error:"form-maker-error","help-text":"form-maker-help-text","submit-button":"form-maker-submit"},components:{"form-maker-input-color":u,"form-maker-input-date":u,"form-maker-input-email":u,"form-maker-input-month":u,"form-maker-input-number":u,"form-maker-input-password":u,"form-maker-input-search":u,"form-maker-input-tel":u,"form-maker-input-time":u,"form-maker-input-text":u,"form-maker-input-url":u,"form-maker-input-week":u,"form-maker-input-range":u,"form-maker-input-file":R,"form-maker-input-textarea":q,"form-maker-input-select":x,"form-maker-input-checkbox":A,"form-maker-input-radio":L,"form-maker-label":G,"form-maker-help":g,"form-maker-error":g}};return{install:(s,n)=>{const l={classes:{...E.classes,...n.classes},components:{...E.components,...n.components}};s.component("FormMaker",j),s.component("FormMakerInput",D),Object.keys(l.classes).forEach(t=>{s.provide(t,l.classes[t])}),Object.keys(l.components).forEach(t=>{s.component(t,l.components[t])})}}});
@@ -21,7 +21,10 @@ const props = withDefaults(defineProps<FormMakerInputProps>(), {
21
21
  rules: () => [],
22
22
  type: 'text'
23
23
  })
24
- const emit = defineEmits([ 'update:modelValue' ]);
24
+
25
+ const emit = defineEmits<{
26
+ (event: 'update:modelValue' | string, val: any): void
27
+ }>();
25
28
 
26
29
  const value = useVModel(() => props.modelValue, emit);
27
30
 
@@ -70,10 +73,10 @@ const realError = computed(() => {
70
73
  <slot name="before" />
71
74
  <component
72
75
  :is="`form-maker-input-${type}`"
73
- v-model="value"
74
76
  v-bind="{ ...$props, ...$attrs}"
75
77
  :class="[type !== 'checkbox' && inputClass, hasErrors && inputErrorClass]"
76
78
  :label="label"
79
+ v-model="value"
77
80
  />
78
81
  <slot name="after" />
79
82
  </div>
@@ -9,7 +9,7 @@ function SimpleComponent(
9
9
  props: SimpleComponentProps,
10
10
  context: SetupContext
11
11
  ) {
12
- return h(props.as, context.attrs, context.slots);
12
+ return h(`${props.as ?? 'div'}`, context.attrs, context.slots);
13
13
  }
14
14
 
15
15
  SimpleComponent.props = {
@@ -13,7 +13,10 @@ const props = withDefaults(defineProps<FormMakerInputProps>(), {
13
13
  rules: () => [],
14
14
  type: 'text'
15
15
  });
16
- const emit = defineEmits(['update:modelValue']);
16
+
17
+ const emit = defineEmits<{
18
+ (event: 'update:modelValue' | string, val: any): void
19
+ }>();
17
20
 
18
21
  const value = useVModel(() => props.modelValue, emit);
19
22
  </script>
@@ -42,7 +42,7 @@ const fieldOptions: ComputedRef<SelectOption[]> = computed(() => {
42
42
  ];
43
43
  });
44
44
 
45
- const handleClick = clickVal => {
45
+ const handleClick = (clickVal: any) => {
46
46
  let selOptions = [ ...selectedOptions.value ];
47
47
  if (selOptions.indexOf(clickVal) === -1) {
48
48
  selOptions.push(clickVal);
@@ -12,11 +12,14 @@ withDefaults(defineProps<FormMakerInputProps>(), {
12
12
  placeholder: undefined,
13
13
  rules: () => [],
14
14
  });
15
- const emit = defineEmits(['update:modelValue'])
15
+ const emit = defineEmits<{
16
+ (event: 'update:modelValue' | string, val: any): void
17
+ }>();
16
18
 
17
- const handleFileSelect = event => {
18
- if (event.target.files.length) {
19
- const file = event.target.files[0];
19
+ const handleFileSelect = (event: Event) => {
20
+ const el = event.currentTarget as HTMLInputElement
21
+ if (el.files && el.files.length) {
22
+ const file = el.files[0];
20
23
  emit('update:modelValue', file);
21
24
  }
22
25
  };
@@ -14,7 +14,7 @@ withDefaults(defineProps<RadioInputProps>(), {
14
14
  label: undefined,
15
15
  placeholder: undefined,
16
16
  options: () => [],
17
- rules: () => [],
17
+
18
18
  });
19
19
  const emit = defineEmits(['update:modelValue'])
20
20
 
@@ -20,7 +20,9 @@ const props = withDefaults(defineProps<SelectInputProps>(), {
20
20
  optionGroups: () => ({}),
21
21
  rules: () => [],
22
22
  });
23
- const emit = defineEmits(['update:modelValue'])
23
+ const emit = defineEmits<{
24
+ (event: 'update:modelValue' | string, val: any): void
25
+ }>();
24
26
 
25
27
  const value = useVModel(() => props.modelValue, emit);
26
28
 
@@ -11,7 +11,9 @@ const props = withDefaults(defineProps<TextAreaProps>(), {
11
11
  id: undefined,
12
12
  placeholder: undefined,
13
13
  });
14
- const emit = defineEmits([ 'update:modelValue' ]);
14
+ const emit = defineEmits<{
15
+ (event: 'update:modelValue' | string, val: any): void
16
+ }>();
15
17
 
16
18
  const value = useVModel(() => props.modelValue, emit);
17
19
  </script>
@@ -9,8 +9,10 @@ import RadioInput from './components/inputs/RadioInput.vue';
9
9
  import SelectInput from './components/inputs/SelectInput.vue';
10
10
  import TextAreaInput from './components/inputs/TextAreaInput.vue';
11
11
  import BasicInput from './components/inputs/BasicInput.vue';
12
+ import type { FormMakerPluginOptions } from './model';
13
+ import type { App, Plugin } from 'vue';
12
14
 
13
- const defaultOptions = {
15
+ const defaultOptions: FormMakerPluginOptions = {
14
16
  classes: {
15
17
  'form-row': 'form-maker-row',
16
18
  'form-column': 'form-maker-column',
@@ -51,8 +53,8 @@ const defaultOptions = {
51
53
  },
52
54
  };
53
55
 
54
- const FormMaker = {
55
- install: (app, extraOptions = {}) => {
56
+ const FormMaker: Plugin = {
57
+ install: (app: App, extraOptions: FormMakerPluginOptions) => {
56
58
  const options = {
57
59
  classes: { ...defaultOptions.classes, ...extraOptions.classes },
58
60
  components: {
package/lib/model.d.ts CHANGED
@@ -1,4 +1,14 @@
1
- import type {InputHTMLAttributes} from "vue";
1
+ import type {Component, FunctionalComponent, InputHTMLAttributes} from "vue";
2
+
3
+ declare module '@josercl/form-maker' {
4
+ import FormMaker from ".";
5
+ export default FormMaker
6
+ }
7
+
8
+ export interface FormMakerPluginOptions {
9
+ classes?: Record<string, string>,
10
+ components?: Record<string, Component | FunctionalComponent | VNode>
11
+ }
2
12
 
3
13
  export interface InputType {
4
14
  id?: string | null
@@ -38,7 +48,7 @@ export interface FormMakerInputProps extends /* @vue-ignore */ InputHTMLAttribut
38
48
  }
39
49
 
40
50
  export interface SelectOption {
41
- label: string
51
+ label: string | undefined
42
52
  value: any
43
53
  }
44
54
 
@@ -0,0 +1 @@
1
+ declare module '*.vue'
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@josercl/form-maker",
3
- "version": "1.3.0",
3
+ "version": "1.3.1-beta2",
4
4
  "type": "module",
5
5
  "description": "Form generator using vue 3",
6
6
  "author": "Jose Carrero <josercl@gmail.com>",
7
7
  "main": "./dist/index.umd.cjs",
8
8
  "module": "./dist/index.js",
9
+ "types": "./lib/model.d.ts",
9
10
  "files": [
10
11
  "dist",
11
12
  "lib"