@macrulez/vue-form-schema 0.1.7 → 0.2.0

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.
Files changed (105) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +461 -180
  3. package/dist/MaskEngine-BEXwX4BK.js +144 -0
  4. package/dist/MaskEngine-CPr-fSPy.cjs +1 -0
  5. package/dist/ValidationEngine-BC4U1ef1.js +135 -0
  6. package/dist/ValidationEngine-Diz-qTFs.cjs +1 -0
  7. package/dist/_plugin-vue_export-helper-BHFhmbuH.cjs +1 -0
  8. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +9 -0
  9. package/dist/core/ConditionEvaluator.d.ts.map +1 -1
  10. package/dist/core/MaskEngine.d.ts.map +1 -1
  11. package/dist/core/ValidationEngine.d.ts +13 -0
  12. package/dist/core/ValidationEngine.d.ts.map +1 -1
  13. package/dist/core/formRegistry.d.ts +33 -0
  14. package/dist/core/formRegistry.d.ts.map +1 -0
  15. package/dist/core/inferTypes.d.ts.map +1 -1
  16. package/dist/core/schemaUtils.d.ts +38 -0
  17. package/dist/core/schemaUtils.d.ts.map +1 -1
  18. package/dist/core/serverErrors.d.ts +69 -0
  19. package/dist/core/serverErrors.d.ts.map +1 -0
  20. package/dist/core/types.d.ts +22 -2
  21. package/dist/core/types.d.ts.map +1 -1
  22. package/dist/core/useForm.d.ts +4 -1
  23. package/dist/core/useForm.d.ts.map +1 -1
  24. package/dist/core/useMultiStepForm.d.ts.map +1 -1
  25. package/dist/devtools/index.d.ts +26 -0
  26. package/dist/devtools/index.d.ts.map +1 -0
  27. package/dist/devtools.cjs +1 -0
  28. package/dist/devtools.d.ts +6 -0
  29. package/dist/devtools.js +93 -0
  30. package/dist/formRegistry-Bv1eaWQ-.js +31 -0
  31. package/dist/formRegistry-DaDmXyYY.cjs +1 -0
  32. package/dist/index.cjs +1 -1
  33. package/dist/index.d.ts +5 -3
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +392 -359
  36. package/dist/openapi.cjs +1 -0
  37. package/dist/openapi.d.ts +202 -0
  38. package/dist/openapi.js +118 -0
  39. package/dist/parsers/json.d.ts.map +1 -1
  40. package/dist/parsers/openapi.d.ts +139 -0
  41. package/dist/parsers/openapi.d.ts.map +1 -0
  42. package/dist/parsers/valibot.d.ts +13 -4
  43. package/dist/parsers/valibot.d.ts.map +1 -1
  44. package/dist/parsers/yup.d.ts +10 -4
  45. package/dist/parsers/yup.d.ts.map +1 -1
  46. package/dist/parsers/zod.d.ts +18 -4
  47. package/dist/parsers/zod.d.ts.map +1 -1
  48. package/dist/schemaUtils-Cc7CwGXB.cjs +1 -0
  49. package/dist/schemaUtils-Cvlsk24U.js +337 -0
  50. package/dist/style.css +1 -0
  51. package/dist/ui/index.d.ts +1 -0
  52. package/dist/ui/index.d.ts.map +1 -1
  53. package/dist/ui/naive/index.d.ts +11 -0
  54. package/dist/ui/naive/index.d.ts.map +1 -0
  55. package/dist/ui/primevue/index.d.ts +11 -0
  56. package/dist/ui/primevue/index.d.ts.map +1 -0
  57. package/dist/ui/shadcn/index.d.ts +11 -0
  58. package/dist/ui/shadcn/index.d.ts.map +1 -0
  59. package/dist/ui/tailwind/index.d.ts +11 -0
  60. package/dist/ui/tailwind/index.d.ts.map +1 -0
  61. package/dist/ui-naive.cjs +1 -0
  62. package/dist/ui-naive.d.ts +411 -0
  63. package/dist/ui-naive.js +667 -0
  64. package/dist/ui-primevue.cjs +1 -0
  65. package/dist/ui-primevue.d.ts +411 -0
  66. package/dist/ui-primevue.js +651 -0
  67. package/dist/ui-shadcn.cjs +1 -0
  68. package/dist/ui-shadcn.d.ts +411 -0
  69. package/dist/ui-shadcn.js +650 -0
  70. package/dist/ui-tailwind.cjs +1 -0
  71. package/dist/ui-tailwind.d.ts +411 -0
  72. package/dist/ui-tailwind.js +669 -0
  73. package/dist/ui.cjs +1 -1
  74. package/dist/ui.d.ts +61 -10
  75. package/dist/ui.js +434 -299
  76. package/dist/valibot.cjs +1 -1
  77. package/dist/valibot.d.ts +35 -4
  78. package/dist/valibot.js +47 -20
  79. package/dist/yup.cjs +1 -1
  80. package/dist/yup.d.ts +33 -5
  81. package/dist/yup.js +16 -15
  82. package/dist/zod.cjs +1 -1
  83. package/dist/zod.d.ts +41 -5
  84. package/dist/zod.js +58 -28
  85. package/package.json +99 -25
  86. package/dist/MaskEngine-BqJQYybS.js +0 -233
  87. package/dist/MaskEngine-BwAs2Zb0.cjs +0 -1
  88. package/dist/__tests__/ConditionEvaluator.test.d.ts +0 -2
  89. package/dist/__tests__/ConditionEvaluator.test.d.ts.map +0 -1
  90. package/dist/__tests__/MaskEngine.test.d.ts +0 -2
  91. package/dist/__tests__/MaskEngine.test.d.ts.map +0 -1
  92. package/dist/__tests__/ValidationEngine.test.d.ts +0 -2
  93. package/dist/__tests__/ValidationEngine.test.d.ts.map +0 -1
  94. package/dist/__tests__/parsers.test.d.ts +0 -2
  95. package/dist/__tests__/parsers.test.d.ts.map +0 -1
  96. package/dist/__tests__/phase3.test.d.ts +0 -2
  97. package/dist/__tests__/phase3.test.d.ts.map +0 -1
  98. package/dist/__tests__/phase4.test.d.ts +0 -2
  99. package/dist/__tests__/phase4.test.d.ts.map +0 -1
  100. package/dist/__tests__/useFieldArray.test.d.ts +0 -2
  101. package/dist/__tests__/useFieldArray.test.d.ts.map +0 -1
  102. package/dist/__tests__/useForm.test.d.ts +0 -2
  103. package/dist/__tests__/useForm.test.d.ts.map +0 -1
  104. package/dist/__tests__/useMultiStepForm.test.d.ts +0 -2
  105. package/dist/__tests__/useMultiStepForm.test.d.ts.map +0 -1
package/dist/ui.js CHANGED
@@ -1,10 +1,11 @@
1
- import { defineComponent as x, openBlock as t, createElementBlock as d, normalizeClass as A, createTextVNode as D, toDisplayString as v, createCommentVNode as k, renderSlot as q, Fragment as S, renderList as C, ref as K, onMounted as O, onUnmounted as Q, createBlock as V, withCtx as g, createElementVNode as b, computed as U, createVNode as p, unref as w, resolveDynamicComponent as E, resolveComponent as W, createSlots as X } from "vue";
2
- import { b as Y, n as I, l as Z, g as M } from "./MaskEngine-BqJQYybS.js";
3
- const _ = ["for"], ee = {
1
+ import { defineComponent as V, computed as B, openBlock as t, createElementBlock as n, normalizeClass as T, createTextVNode as I, toDisplayString as y, createCommentVNode as k, renderSlot as A, normalizeProps as W, guardReactiveProps as X, Fragment as x, renderList as S, ref as w, onMounted as Y, onUnmounted as Z, createBlock as F, withCtx as q, createElementVNode as b, mergeProps as R, createVNode as M, unref as z, resolveDynamicComponent as U, resolveComponent as _, createSlots as ee } from "vue";
2
+ import { b as te, d as P, u as le } from "./MaskEngine-BEXwX4BK.js";
3
+ import { g as K } from "./ValidationEngine-BC4U1ef1.js";
4
+ const ae = ["for"], re = {
4
5
  key: 0,
5
6
  class: "vfs-field__required",
6
7
  "aria-hidden": "true"
7
- }, te = ["id"], F = /* @__PURE__ */ x({
8
+ }, ne = ["id"], C = /* @__PURE__ */ V({
8
9
  __name: "BaseField",
9
10
  props: {
10
11
  field: {},
@@ -12,37 +13,41 @@ const _ = ["for"], ee = {
12
13
  touched: { type: Boolean }
13
14
  },
14
15
  setup(e) {
15
- const r = e;
16
- return (a, s) => {
17
- var n, o;
18
- return t(), d("div", {
19
- class: A(["vfs-field", [`vfs-field--${r.field.type}`, { "vfs-field--error": e.touched && ((n = e.error) == null ? void 0 : n.length) }]])
16
+ const o = e, l = B(() => {
17
+ var d;
18
+ return !!(o.touched && ((d = o.error) != null && d.length));
19
+ }), s = B(() => `${o.field.name}-error`), a = B(() => ({
20
+ "aria-required": o.field.required ? "true" : void 0,
21
+ "aria-invalid": l.value ? "true" : "false",
22
+ "aria-describedby": l.value ? s.value : void 0
23
+ }));
24
+ return (d, m) => (t(), n("div", {
25
+ class: T(["vfs-field", [`vfs-field--${o.field.type}`, { "vfs-field--error": l.value }]])
26
+ }, [
27
+ o.field.label ? (t(), n("label", {
28
+ key: 0,
29
+ for: o.field.name,
30
+ class: "vfs-field__label"
20
31
  }, [
21
- r.field.label ? (t(), d("label", {
22
- key: 0,
23
- for: r.field.name,
24
- class: "vfs-field__label"
25
- }, [
26
- D(v(r.field.label) + " ", 1),
27
- r.field.required ? (t(), d("span", ee, "*")) : k("", !0)
28
- ], 8, _)) : k("", !0),
29
- q(a.$slots, "default"),
30
- e.touched && ((o = e.error) != null && o.length) ? (t(), d("ul", {
31
- key: 1,
32
- id: `${r.field.name}-error`,
33
- class: "vfs-field__errors",
34
- role: "alert",
35
- "aria-live": "polite"
36
- }, [
37
- (t(!0), d(S, null, C(e.error, (h, m) => (t(), d("li", {
38
- key: m,
39
- class: "vfs-field__error"
40
- }, v(h), 1))), 128))
41
- ], 8, te)) : k("", !0)
42
- ], 2);
43
- };
32
+ I(y(o.field.label) + " ", 1),
33
+ o.field.required ? (t(), n("span", re, "*")) : k("", !0)
34
+ ], 8, ae)) : k("", !0),
35
+ A(d.$slots, "default", W(X(a.value))),
36
+ l.value ? (t(), n("ul", {
37
+ key: 1,
38
+ id: s.value,
39
+ class: "vfs-field__errors",
40
+ role: "alert",
41
+ "aria-live": "polite"
42
+ }, [
43
+ (t(!0), n(x, null, S(e.error, (f, h) => (t(), n("li", {
44
+ key: h,
45
+ class: "vfs-field__error"
46
+ }, y(f), 1))), 128))
47
+ ], 8, ne)) : k("", !0)
48
+ ], 2));
44
49
  }
45
- }), le = ["id", "type", "name", "value", "placeholder", "disabled", "required"], N = /* @__PURE__ */ x({
50
+ }), oe = ["id", "type", "name", "value", "placeholder", "disabled", "required"], N = /* @__PURE__ */ V({
46
51
  __name: "TextField",
47
52
  props: {
48
53
  field: {},
@@ -51,40 +56,41 @@ const _ = ["for"], ee = {
51
56
  touched: { type: Boolean }
52
57
  },
53
58
  emits: ["update:modelValue", "blur"],
54
- setup(e, { emit: r }) {
55
- const a = e, s = r, n = K(null);
56
- let o = null;
57
- O(() => {
58
- n.value && a.field.mask && (o = Y(n.value, a.field.mask));
59
- }), Q(() => o == null ? void 0 : o());
60
- function h(m) {
61
- s("update:modelValue", m.target.value);
59
+ setup(e, { emit: o }) {
60
+ const l = e, s = o, a = w(null);
61
+ let d = null;
62
+ Y(() => {
63
+ a.value && l.field.mask && (d = te(a.value, l.field.mask));
64
+ }), Z(() => d == null ? void 0 : d());
65
+ function m(f) {
66
+ s("update:modelValue", f.target.value);
62
67
  }
63
- return (m, i) => (t(), V(F, {
68
+ return (f, h) => (t(), F(C, {
64
69
  field: e.field,
65
70
  error: e.error,
66
71
  touched: e.touched
67
72
  }, {
68
- default: g(() => [
69
- b("input", {
73
+ default: q((c) => [
74
+ b("input", R({
70
75
  id: e.field.name,
71
76
  ref_key: "inputRef",
72
- ref: n,
77
+ ref: a,
73
78
  type: e.field.type === "email" ? "email" : "text",
74
79
  name: e.field.name,
75
- value: e.modelValue,
80
+ value: e.modelValue ?? "",
76
81
  placeholder: e.field.placeholder,
77
82
  disabled: e.field.disabled === !0,
78
- required: e.field.required,
83
+ required: e.field.required
84
+ }, c, {
79
85
  class: "vfs-input",
80
- onInput: h,
81
- onBlur: i[0] || (i[0] = ($) => s("blur"))
82
- }, null, 40, le)
86
+ onInput: m,
87
+ onBlur: h[0] || (h[0] = (g) => s("blur"))
88
+ }), null, 16, oe)
83
89
  ]),
84
90
  _: 1
85
91
  }, 8, ["field", "error", "touched"]));
86
92
  }
87
- }), ne = ["id", "name", "value", "placeholder", "disabled", "required"], z = /* @__PURE__ */ x({
93
+ }), ie = ["id", "name", "value", "placeholder", "disabled", "required"], O = /* @__PURE__ */ V({
88
94
  __name: "NumberField",
89
95
  props: {
90
96
  field: {},
@@ -93,35 +99,36 @@ const _ = ["for"], ee = {
93
99
  touched: { type: Boolean }
94
100
  },
95
101
  emits: ["update:modelValue", "blur"],
96
- setup(e, { emit: r }) {
97
- const a = r;
98
- function s(n) {
99
- const o = n.target.value;
100
- a("update:modelValue", o === "" ? null : Number(o));
102
+ setup(e, { emit: o }) {
103
+ const l = o;
104
+ function s(a) {
105
+ const d = a.target.value;
106
+ l("update:modelValue", d === "" ? null : Number(d));
101
107
  }
102
- return (n, o) => (t(), V(F, {
108
+ return (a, d) => (t(), F(C, {
103
109
  field: e.field,
104
110
  error: e.error,
105
111
  touched: e.touched
106
112
  }, {
107
- default: g(() => [
108
- b("input", {
113
+ default: q((m) => [
114
+ b("input", R({
109
115
  id: e.field.name,
110
116
  type: "number",
111
117
  name: e.field.name,
112
118
  value: e.modelValue ?? "",
113
119
  placeholder: e.field.placeholder,
114
120
  disabled: e.field.disabled === !0,
115
- required: e.field.required,
121
+ required: e.field.required
122
+ }, m, {
116
123
  class: "vfs-input",
117
124
  onInput: s,
118
- onBlur: o[0] || (o[0] = (h) => a("blur"))
119
- }, null, 40, ne)
125
+ onBlur: d[0] || (d[0] = (f) => l("blur"))
126
+ }), null, 16, ie)
120
127
  ]),
121
128
  _: 1
122
129
  }, 8, ["field", "error", "touched"]));
123
130
  }
124
- }), ae = ["id", "name", "value", "placeholder", "disabled", "required"], P = /* @__PURE__ */ x({
131
+ }), ue = ["id", "name", "value", "placeholder", "disabled", "required"], j = /* @__PURE__ */ V({
125
132
  __name: "TextareaField",
126
133
  props: {
127
134
  field: {},
@@ -130,33 +137,34 @@ const _ = ["for"], ee = {
130
137
  touched: { type: Boolean }
131
138
  },
132
139
  emits: ["update:modelValue", "blur"],
133
- setup(e, { emit: r }) {
134
- const a = r;
135
- return (s, n) => (t(), V(F, {
140
+ setup(e, { emit: o }) {
141
+ const l = o;
142
+ return (s, a) => (t(), F(C, {
136
143
  field: e.field,
137
144
  error: e.error,
138
145
  touched: e.touched
139
146
  }, {
140
- default: g(() => [
141
- b("textarea", {
147
+ default: q((d) => [
148
+ b("textarea", R({
142
149
  id: e.field.name,
143
150
  name: e.field.name,
144
- value: e.modelValue,
151
+ value: e.modelValue ?? "",
145
152
  placeholder: e.field.placeholder,
146
153
  disabled: e.field.disabled === !0,
147
- required: e.field.required,
154
+ required: e.field.required
155
+ }, d, {
148
156
  class: "vfs-textarea",
149
- onInput: n[0] || (n[0] = (o) => a("update:modelValue", o.target.value)),
150
- onBlur: n[1] || (n[1] = (o) => a("blur"))
151
- }, null, 40, ae)
157
+ onInput: a[0] || (a[0] = (m) => l("update:modelValue", m.target.value)),
158
+ onBlur: a[1] || (a[1] = (m) => l("blur"))
159
+ }), null, 16, ue)
152
160
  ]),
153
161
  _: 1
154
162
  }, 8, ["field", "error", "touched"]));
155
163
  }
156
- }), oe = {
164
+ }), de = {
157
165
  key: 0,
158
166
  class: "vfs-select-loading"
159
- }, re = ["id", "name", "disabled", "required"], ue = ["selected"], de = ["value", "selected"], j = /* @__PURE__ */ x({
167
+ }, se = ["id", "name", "disabled", "required"], ce = ["selected"], me = ["value", "selected"], G = /* @__PURE__ */ V({
160
168
  __name: "SelectField",
161
169
  props: {
162
170
  field: {},
@@ -165,84 +173,92 @@ const _ = ["for"], ee = {
165
173
  touched: { type: Boolean }
166
174
  },
167
175
  emits: ["update:modelValue", "blur"],
168
- setup(e, { emit: r }) {
169
- const a = e, s = r, n = U(
170
- () => Array.isArray(a.field.options) ? a.field.options : []
171
- );
172
- function o(h) {
173
- const m = h.target, i = n.value.find(($) => String($.value) === m.value);
174
- s("update:modelValue", (i == null ? void 0 : i.value) ?? m.value);
176
+ setup(e, { emit: o }) {
177
+ const l = e, s = o, a = B(() => Array.isArray(l.field.options) ? l.field.options : []);
178
+ function d(m) {
179
+ const f = m.target, h = a.value.find((c) => String(c.value) === f.value);
180
+ s("update:modelValue", (h == null ? void 0 : h.value) ?? f.value);
175
181
  }
176
- return (h, m) => (t(), V(F, {
182
+ return (m, f) => (t(), F(C, {
177
183
  field: e.field,
178
184
  error: e.error,
179
185
  touched: e.touched
180
186
  }, {
181
- default: g(() => [
182
- e.field.optionsLoading ? (t(), d("div", oe, "Loading…")) : (t(), d("select", {
187
+ default: q((h) => [
188
+ e.field.optionsLoading ? (t(), n("div", de, "Loading…")) : (t(), n("select", R({
183
189
  key: 1,
184
190
  id: e.field.name,
185
191
  name: e.field.name,
186
192
  disabled: e.field.disabled === !0 || e.field.optionsLoading,
187
- required: e.field.required,
193
+ required: e.field.required
194
+ }, h, {
188
195
  class: "vfs-select",
189
- onChange: o,
190
- onBlur: m[0] || (m[0] = (i) => s("blur"))
191
- }, [
196
+ onChange: d,
197
+ onBlur: f[0] || (f[0] = (c) => s("blur"))
198
+ }), [
192
199
  b("option", {
193
200
  value: "",
194
201
  disabled: "",
195
202
  selected: e.modelValue === null || e.modelValue === void 0 || e.modelValue === ""
196
- }, v(e.field.placeholder ?? "Select an option"), 9, ue),
197
- (t(!0), d(S, null, C(n.value, (i) => (t(), d("option", {
198
- key: String(i.value),
199
- value: String(i.value),
200
- selected: e.modelValue === i.value
201
- }, v(i.label), 9, de))), 128))
202
- ], 40, re))
203
+ }, y(e.field.placeholder ?? "Select an option"), 9, ce),
204
+ (t(!0), n(x, null, S(a.value, (c) => (t(), n("option", {
205
+ key: String(c.value),
206
+ value: String(c.value),
207
+ selected: e.modelValue === c.value
208
+ }, y(c.label), 9, me))), 128))
209
+ ], 16, se))
203
210
  ]),
204
211
  _: 1
205
212
  }, 8, ["field", "error", "touched"]));
206
213
  }
207
- }), ie = { class: "vfs-checkbox-label" }, se = ["id", "name", "checked", "disabled", "required"], me = {
214
+ }), fe = { class: "vfs-checkbox-label" }, ve = ["id", "name", "checked", "disabled", "required", "aria-checked"], be = {
208
215
  key: 0,
209
216
  class: "vfs-checkbox-text"
210
- }, G = /* @__PURE__ */ x({
217
+ }, H = /* @__PURE__ */ V({
211
218
  __name: "CheckboxField",
212
219
  props: {
213
220
  field: {},
214
- modelValue: { type: Boolean },
221
+ modelValue: { type: [Boolean, null] },
215
222
  error: {},
216
223
  touched: { type: Boolean }
217
224
  },
218
225
  emits: ["update:modelValue", "blur"],
219
- setup(e, { emit: r }) {
220
- const a = r;
221
- return (s, n) => (t(), V(F, {
226
+ setup(e, { emit: o }) {
227
+ const l = o;
228
+ return (s, a) => (t(), F(C, {
222
229
  field: { ...e.field, label: void 0 },
223
230
  error: e.error,
224
231
  touched: e.touched
225
232
  }, {
226
- default: g(() => [
227
- b("label", ie, [
228
- b("input", {
233
+ default: q((d) => [
234
+ b("label", fe, [
235
+ b("input", R({
229
236
  id: e.field.name,
230
237
  type: "checkbox",
231
238
  name: e.field.name,
232
- checked: e.modelValue,
239
+ checked: !!e.modelValue,
233
240
  disabled: e.field.disabled === !0,
234
241
  required: e.field.required,
242
+ "aria-checked": e.modelValue ? "true" : "false"
243
+ }, d, {
235
244
  class: "vfs-checkbox",
236
- onChange: n[0] || (n[0] = (o) => a("update:modelValue", o.target.checked)),
237
- onBlur: n[1] || (n[1] = (o) => a("blur"))
238
- }, null, 40, se),
239
- e.field.label ? (t(), d("span", me, v(e.field.label), 1)) : k("", !0)
245
+ onChange: a[0] || (a[0] = (m) => l("update:modelValue", m.target.checked)),
246
+ onBlur: a[1] || (a[1] = (m) => l("blur"))
247
+ }), null, 16, ve),
248
+ e.field.label ? (t(), n("span", be, y(e.field.label), 1)) : k("", !0)
240
249
  ])
241
250
  ]),
242
251
  _: 1
243
252
  }, 8, ["field", "error", "touched"]));
244
253
  }
245
- }), ce = ["aria-labelledby"], fe = ["name", "value", "checked", "disabled", "onChange"], H = /* @__PURE__ */ x({
254
+ }), he = ["aria-required", "aria-invalid", "aria-describedby"], ye = {
255
+ key: 0,
256
+ class: "vfs-field__label"
257
+ }, $e = {
258
+ key: 0,
259
+ class: "vfs-field__required",
260
+ "aria-hidden": "true"
261
+ }, ke = { class: "vfs-radio-group" }, ge = ["name", "value", "checked", "disabled", "onChange"], Ve = ["id"], J = /* @__PURE__ */ V({
246
262
  __name: "RadioField",
247
263
  props: {
248
264
  field: {},
@@ -251,41 +267,54 @@ const _ = ["for"], ee = {
251
267
  touched: { type: Boolean }
252
268
  },
253
269
  emits: ["update:modelValue", "blur"],
254
- setup(e, { emit: r }) {
255
- const a = r;
256
- return (s, n) => (t(), V(F, {
257
- field: e.field,
258
- error: e.error,
259
- touched: e.touched
260
- }, {
261
- default: g(() => [
262
- b("div", {
263
- class: "vfs-radio-group",
264
- role: "radiogroup",
265
- "aria-labelledby": e.field.name + "-label"
270
+ setup(e, { emit: o }) {
271
+ const l = e, s = o, a = B(() => {
272
+ var f;
273
+ return !!(l.touched && ((f = l.error) != null && f.length));
274
+ }), d = B(() => `${l.field.name}-error`), m = B(() => Array.isArray(l.field.options) ? l.field.options : []);
275
+ return (f, h) => (t(), n("fieldset", {
276
+ class: T(["vfs-field vfs-field--radio", { "vfs-field--error": a.value }]),
277
+ "aria-required": e.field.required ? "true" : void 0,
278
+ "aria-invalid": a.value ? "true" : "false",
279
+ "aria-describedby": a.value ? d.value : void 0
280
+ }, [
281
+ e.field.label ? (t(), n("legend", ye, [
282
+ I(y(e.field.label) + " ", 1),
283
+ e.field.required ? (t(), n("span", $e, "*")) : k("", !0)
284
+ ])) : k("", !0),
285
+ b("div", ke, [
286
+ (t(!0), n(x, null, S(m.value, (c) => (t(), n("label", {
287
+ key: String(c.value),
288
+ class: "vfs-radio-label"
266
289
  }, [
267
- (t(!0), d(S, null, C(e.field.options, (o) => (t(), d("label", {
268
- key: String(o.value),
269
- class: "vfs-radio-label"
270
- }, [
271
- b("input", {
272
- type: "radio",
273
- name: e.field.name,
274
- value: String(o.value),
275
- checked: e.modelValue === o.value,
276
- disabled: e.field.disabled === !0,
277
- class: "vfs-radio",
278
- onChange: (h) => a("update:modelValue", o.value),
279
- onBlur: n[0] || (n[0] = (h) => a("blur"))
280
- }, null, 40, fe),
281
- D(" " + v(o.label), 1)
282
- ]))), 128))
283
- ], 8, ce)
290
+ b("input", {
291
+ type: "radio",
292
+ name: e.field.name,
293
+ value: String(c.value),
294
+ checked: e.modelValue === c.value,
295
+ disabled: e.field.disabled === !0,
296
+ class: "vfs-radio",
297
+ onChange: (g) => s("update:modelValue", c.value),
298
+ onBlur: h[0] || (h[0] = (g) => s("blur"))
299
+ }, null, 40, ge),
300
+ I(" " + y(c.label), 1)
301
+ ]))), 128))
284
302
  ]),
285
- _: 1
286
- }, 8, ["field", "error", "touched"]));
303
+ a.value ? (t(), n("ul", {
304
+ key: 1,
305
+ id: d.value,
306
+ class: "vfs-field__errors",
307
+ role: "alert",
308
+ "aria-live": "polite"
309
+ }, [
310
+ (t(!0), n(x, null, S(e.error, (c, g) => (t(), n("li", {
311
+ key: g,
312
+ class: "vfs-field__error"
313
+ }, y(c), 1))), 128))
314
+ ], 8, Ve)) : k("", !0)
315
+ ], 10, he));
287
316
  }
288
- }), ve = ["id", "name", "value", "disabled", "required"], J = /* @__PURE__ */ x({
317
+ }), pe = ["id", "name", "value", "disabled", "required"], Q = /* @__PURE__ */ V({
289
318
  __name: "DateField",
290
319
  props: {
291
320
  field: {},
@@ -294,33 +323,34 @@ const _ = ["for"], ee = {
294
323
  touched: { type: Boolean }
295
324
  },
296
325
  emits: ["update:modelValue", "blur"],
297
- setup(e, { emit: r }) {
298
- const a = r;
299
- return (s, n) => (t(), V(F, {
326
+ setup(e, { emit: o }) {
327
+ const l = o;
328
+ return (s, a) => (t(), F(C, {
300
329
  field: e.field,
301
330
  error: e.error,
302
331
  touched: e.touched
303
332
  }, {
304
- default: g(() => [
305
- b("input", {
333
+ default: q((d) => [
334
+ b("input", R({
306
335
  id: e.field.name,
307
336
  type: "date",
308
337
  name: e.field.name,
309
- value: e.modelValue,
338
+ value: e.modelValue ?? "",
310
339
  disabled: e.field.disabled === !0,
311
- required: e.field.required,
340
+ required: e.field.required
341
+ }, d, {
312
342
  class: "vfs-input",
313
- onInput: n[0] || (n[0] = (o) => a("update:modelValue", o.target.value)),
314
- onBlur: n[1] || (n[1] = (o) => a("blur"))
315
- }, null, 40, ve)
343
+ onInput: a[0] || (a[0] = (m) => l("update:modelValue", m.target.value)),
344
+ onBlur: a[1] || (a[1] = (m) => l("blur"))
345
+ }), null, 16, pe)
316
346
  ]),
317
347
  _: 1
318
348
  }, 8, ["field", "error", "touched"]));
319
349
  }
320
- }), be = { class: "vfs-array" }, he = {
350
+ }), xe = { class: "vfs-array" }, Fe = {
321
351
  key: 0,
322
352
  class: "vfs-field__label"
323
- }, ye = ["onClick"], $e = /* @__PURE__ */ x({
353
+ }, qe = ["onClick"], Be = /* @__PURE__ */ V({
324
354
  __name: "ArrayField",
325
355
  props: {
326
356
  field: {},
@@ -328,187 +358,291 @@ const _ = ["for"], ee = {
328
358
  components: {}
329
359
  },
330
360
  setup(e) {
331
- const r = e, a = I(), s = {
361
+ const o = e, l = P(), s = {
332
362
  text: N,
333
363
  email: N,
334
- number: z,
335
- textarea: P,
336
- select: j,
337
- checkbox: G,
338
- radio: H,
339
- date: J
364
+ number: O,
365
+ textarea: j,
366
+ select: G,
367
+ checkbox: H,
368
+ radio: J,
369
+ date: Q
340
370
  };
341
- function n(c) {
342
- var l;
343
- return c.component ? c.component : ((l = r.components) == null ? void 0 : l[c.type]) ?? a[c.type] ?? s[c.type] ?? null;
371
+ function a($) {
372
+ var r;
373
+ return $.component ? $.component : ((r = o.components) == null ? void 0 : r[$.type]) ?? l[$.type] ?? s[$.type] ?? null;
344
374
  }
345
- const { rows: o, append: h, remove: m } = Z(r.form, r.field.name);
346
- function i(c) {
347
- return M(r.form.values.value, c.name);
375
+ const { rows: d, append: m, remove: f } = le(o.form, o.field.name);
376
+ function h($) {
377
+ return K(o.form.values.value, $.name);
348
378
  }
349
- function $(c, l) {
350
- r.form.setField(c.name, l);
379
+ function c($, r) {
380
+ o.form.setField($.name, r);
351
381
  }
352
- function B(c) {
353
- var f;
354
- const l = r.form;
355
- (f = l.touchField) == null || f.call(l, c.name);
382
+ function g($) {
383
+ var i;
384
+ const r = o.form;
385
+ (i = r.touchField) == null || i.call(r, $.name);
356
386
  }
357
- function L(c) {
358
- return r.form.errors.value[c.name] ?? [];
387
+ function D($) {
388
+ return o.form.errors.value[$.name] ?? [];
359
389
  }
360
- function T(c) {
361
- return r.form.touched.value[c.name] ?? !1;
390
+ function L($) {
391
+ return o.form.touched.value[$.name] ?? !1;
362
392
  }
363
- return (c, l) => (t(), d("div", be, [
364
- p(F, {
393
+ return ($, r) => (t(), n("div", xe, [
394
+ M(C, {
365
395
  field: { ...e.field, label: void 0 },
366
396
  error: [],
367
397
  touched: !1
368
398
  }, {
369
- default: g(() => [
370
- e.field.label ? (t(), d("div", he, v(e.field.label), 1)) : k("", !0),
371
- (t(!0), d(S, null, C(w(o), (f) => (t(), d("div", {
372
- key: f.key,
399
+ default: q(() => [
400
+ e.field.label ? (t(), n("div", Fe, y(e.field.label), 1)) : k("", !0),
401
+ (t(!0), n(x, null, S(z(d), (i) => (t(), n("div", {
402
+ key: i.key,
373
403
  class: "vfs-array__row"
374
404
  }, [
375
- (t(!0), d(S, null, C(f.fields, (y) => (t(), d(S, {
376
- key: y.name
405
+ (t(!0), n(x, null, S(i.fields, (v) => (t(), n(x, {
406
+ key: v.name
377
407
  }, [
378
- n(y) ? (t(), V(E(n(y)), {
408
+ a(v) ? (t(), F(U(a(v)), {
379
409
  key: 0,
380
- field: y,
381
- "model-value": i(y),
382
- error: L(y),
383
- touched: T(y),
384
- "onUpdate:modelValue": (u) => $(y, u),
385
- onBlur: (u) => B(y)
410
+ field: v,
411
+ "model-value": h(v),
412
+ error: D(v),
413
+ touched: L(v),
414
+ "onUpdate:modelValue": (u) => c(v, u),
415
+ onBlur: (u) => g(v)
386
416
  }, null, 40, ["field", "model-value", "error", "touched", "onUpdate:modelValue", "onBlur"])) : k("", !0)
387
417
  ], 64))), 128)),
388
418
  b("button", {
389
419
  type: "button",
390
420
  class: "vfs-array__remove",
391
- onClick: (y) => w(m)(f.index)
392
- }, " Remove ", 8, ye)
421
+ onClick: (v) => z(f)(i.index)
422
+ }, "Remove", 8, qe)
393
423
  ]))), 128)),
394
424
  b("button", {
395
425
  type: "button",
396
426
  class: "vfs-array__add",
397
- onClick: l[0] || (l[0] = (f) => w(h)())
398
- }, " + Add row ")
427
+ onClick: r[0] || (r[0] = (i) => z(m)())
428
+ }, "+ Add row")
399
429
  ]),
400
430
  _: 1
401
431
  }, 8, ["field"])
402
432
  ]));
403
433
  }
404
- }), ke = {
434
+ }), Se = ["id", "name", "accept", "multiple", "disabled", "required"], Ce = ["for"], Re = {
435
+ key: 0,
436
+ class: "vfs-file-hint"
437
+ }, De = {
438
+ key: 0,
439
+ class: "vfs-file-list"
440
+ }, Le = { class: "vfs-file-name" }, Ae = { class: "vfs-file-size" }, Ne = ["aria-label", "onClick"], Te = /* @__PURE__ */ V({
441
+ __name: "FileField",
442
+ props: {
443
+ field: {},
444
+ modelValue: {},
445
+ error: {},
446
+ touched: { type: Boolean }
447
+ },
448
+ emits: ["update:modelValue", "blur"],
449
+ setup(e, { emit: o }) {
450
+ const l = e, s = o, a = w(!1), d = w(null), m = B(() => l.modelValue ? Array.isArray(l.modelValue) ? l.modelValue : [l.modelValue] : []), f = B(() => l.field.multiple ?? !1);
451
+ function h(i) {
452
+ if (!i || i.length === 0) {
453
+ s("update:modelValue", null);
454
+ return;
455
+ }
456
+ f.value ? s("update:modelValue", Array.from(i)) : s("update:modelValue", i[0]);
457
+ }
458
+ function c(i) {
459
+ h(i.target.files), s("blur");
460
+ }
461
+ function g(i) {
462
+ var v;
463
+ a.value = !1, i.preventDefault(), h(((v = i.dataTransfer) == null ? void 0 : v.files) ?? null), s("blur");
464
+ }
465
+ function D(i) {
466
+ i.preventDefault(), a.value = !0;
467
+ }
468
+ function L() {
469
+ a.value = !1;
470
+ }
471
+ function $(i) {
472
+ const v = m.value.filter((u, p) => p !== i);
473
+ v.length === 0 ? (s("update:modelValue", null), d.value && (d.value.value = "")) : f.value ? s("update:modelValue", v) : s("update:modelValue", v[0]);
474
+ }
475
+ function r(i) {
476
+ return i < 1024 ? `${i} B` : i < 1024 * 1024 ? `${(i / 1024).toFixed(1)} KB` : `${(i / (1024 * 1024)).toFixed(1)} MB`;
477
+ }
478
+ return (i, v) => (t(), F(C, {
479
+ field: e.field,
480
+ error: e.error,
481
+ touched: e.touched
482
+ }, {
483
+ default: q((u) => [
484
+ b("div", {
485
+ class: T(["vfs-file-zone", { "vfs-file-zone--dragging": a.value }]),
486
+ onDragover: D,
487
+ onDragleave: L,
488
+ onDrop: g
489
+ }, [
490
+ b("input", R({
491
+ id: e.field.name,
492
+ ref_key: "inputRef",
493
+ ref: d,
494
+ type: "file",
495
+ name: e.field.name,
496
+ accept: e.field.accept,
497
+ multiple: f.value,
498
+ disabled: e.field.disabled === !0,
499
+ required: e.field.required
500
+ }, u, {
501
+ class: "vfs-file-input",
502
+ onChange: c
503
+ }), null, 16, Se),
504
+ b("label", {
505
+ for: e.field.name,
506
+ class: "vfs-file-label"
507
+ }, [
508
+ v[0] || (v[0] = b("span", {
509
+ class: "vfs-file-icon",
510
+ "aria-hidden": "true"
511
+ }, "📁", -1)),
512
+ b("span", null, y(a.value ? "Drop files here" : "Click to upload or drag & drop"), 1),
513
+ e.field.accept ? (t(), n("span", Re, y(e.field.accept), 1)) : k("", !0)
514
+ ], 8, Ce)
515
+ ], 34),
516
+ m.value.length ? (t(), n("ul", De, [
517
+ (t(!0), n(x, null, S(m.value, (p, E) => (t(), n("li", {
518
+ key: `${p.name}-${E}`,
519
+ class: "vfs-file-item"
520
+ }, [
521
+ b("span", Le, y(p.name), 1),
522
+ b("span", Ae, y(r(p.size)), 1),
523
+ b("button", {
524
+ type: "button",
525
+ class: "vfs-file-remove",
526
+ "aria-label": `Remove ${p.name}`,
527
+ onClick: (He) => $(E)
528
+ }, " × ", 8, Ne)
529
+ ]))), 128))
530
+ ])) : k("", !0)
531
+ ]),
532
+ _: 1
533
+ }, 8, ["field", "error", "touched"]));
534
+ }
535
+ }), ze = {
405
536
  key: 1,
406
537
  class: "vfs-group"
407
- }, Ve = { key: 0 }, ge = ["disabled"], xe = /* @__PURE__ */ x({
538
+ }, Ie = { key: 0 }, we = ["disabled"], Ee = /* @__PURE__ */ V({
408
539
  __name: "FormRenderer",
409
540
  props: {
410
541
  form: {},
411
542
  components: {},
412
- submitLabel: {}
543
+ submitLabel: {},
544
+ fields: {}
413
545
  },
414
546
  emits: ["submit"],
415
- setup(e, { emit: r }) {
416
- const a = e, s = I(), n = r, o = {
547
+ setup(e, { emit: o }) {
548
+ const l = e, s = P(), a = o, d = {
417
549
  text: N,
418
550
  email: N,
419
- number: z,
420
- textarea: P,
421
- select: j,
422
- checkbox: G,
423
- radio: H,
424
- date: J
551
+ number: O,
552
+ textarea: j,
553
+ select: G,
554
+ checkbox: H,
555
+ radio: J,
556
+ date: Q,
557
+ file: Te
425
558
  };
426
- function h(l) {
427
- var f;
428
- return l.component ? l.component : ((f = a.components) == null ? void 0 : f[l.type]) ?? s[l.type] ?? o[l.type] ?? null;
559
+ function m(r) {
560
+ var i;
561
+ return r.component ? r.component : ((i = l.components) == null ? void 0 : i[r.type]) ?? s[r.type] ?? d[r.type] ?? null;
429
562
  }
430
- function m(l) {
431
- return M(a.form.values.value, l.name);
563
+ function f(r) {
564
+ return K(l.form.values.value, r.name);
432
565
  }
433
- function i(l, f) {
434
- a.form.setField(l.name, f);
566
+ function h(r, i) {
567
+ l.form.setField(r.name, i);
435
568
  }
436
- function $(l) {
437
- var y;
438
- const f = a.form;
439
- (y = f.touchField) == null || y.call(f, l.name);
569
+ function c(r) {
570
+ var v;
571
+ const i = l.form;
572
+ (v = i.touchField) == null || v.call(i, r.name);
440
573
  }
441
- function B(l) {
442
- return a.form.errors.value[l.name] ?? [];
574
+ function g(r) {
575
+ return l.form.errors.value[r.name] ?? [];
443
576
  }
444
- function L(l) {
445
- return a.form.touched.value[l.name] ?? !1;
577
+ function D(r) {
578
+ return l.form.touched.value[r.name] ?? !1;
446
579
  }
447
- const T = U(
448
- () => a.form.fields.value.filter((l) => l.visible !== !1)
580
+ const L = B(
581
+ () => (l.fields ?? l.form.fields.value).filter((r) => r.visible !== !1)
449
582
  );
450
- async function c(l) {
451
- l.preventDefault(), await a.form.submit(), n("submit");
583
+ async function $(r) {
584
+ r.preventDefault(), await l.form.submit(), a("submit");
452
585
  }
453
- return (l, f) => {
454
- const y = W("FormRenderer", !0);
455
- return t(), d("form", {
586
+ return (r, i) => {
587
+ const v = _("FormRenderer", !0);
588
+ return t(), n("form", {
456
589
  class: "vfs-form",
457
590
  novalidate: "",
458
- onSubmit: c
591
+ onSubmit: $
459
592
  }, [
460
- (t(!0), d(S, null, C(T.value, (u) => (t(), d(S, {
593
+ (t(!0), n(x, null, S(L.value, (u) => (t(), n(x, {
461
594
  key: u.name
462
595
  }, [
463
- l.$slots[`field-${u.name}`] ? q(l.$slots, `field-${u.name}`, {
596
+ r.$slots[`field-${u.name}`] ? A(r.$slots, `field-${u.name}`, {
464
597
  key: 0,
465
598
  field: u,
466
- value: m(u),
467
- error: B(u),
468
- touched: L(u),
469
- setValue: (R) => i(u, R),
470
- touch: () => $(u)
471
- }) : u.type === "group" ? (t(), d("fieldset", ke, [
472
- u.label ? (t(), d("legend", Ve, v(u.label), 1)) : k("", !0),
473
- u.fields ? (t(), V(y, {
599
+ value: f(u),
600
+ error: g(u),
601
+ touched: D(u),
602
+ setValue: (p) => h(u, p),
603
+ touch: () => c(u)
604
+ }) : u.type === "group" ? (t(), n("fieldset", ze, [
605
+ u.label ? (t(), n("legend", Ie, y(u.label), 1)) : k("", !0),
606
+ u.fields ? (t(), F(v, {
474
607
  key: 1,
475
608
  form: e.form,
609
+ fields: u.fields,
476
610
  components: e.components
477
- }, null, 8, ["form", "components"])) : k("", !0)
478
- ])) : u.type === "array" ? (t(), V($e, {
611
+ }, null, 8, ["form", "fields", "components"])) : k("", !0)
612
+ ])) : u.type === "array" ? (t(), F(Be, {
479
613
  key: 2,
480
614
  field: u,
481
615
  form: e.form,
482
616
  components: e.components
483
- }, null, 8, ["field", "form", "components"])) : h(u) ? (t(), V(E(h(u)), {
617
+ }, null, 8, ["field", "form", "components"])) : m(u) ? (t(), F(U(m(u)), {
484
618
  key: 3,
485
619
  field: u,
486
- "model-value": m(u),
487
- error: B(u),
488
- touched: L(u),
489
- "onUpdate:modelValue": (R) => i(u, R),
490
- onBlur: (R) => $(u)
491
- }, X({ _: 2 }, [
492
- l.$slots[`label-${u.name}`] ? {
620
+ "model-value": f(u),
621
+ error: g(u),
622
+ touched: D(u),
623
+ "onUpdate:modelValue": (p) => h(u, p),
624
+ onBlur: (p) => c(u)
625
+ }, ee({ _: 2 }, [
626
+ r.$slots[`label-${u.name}`] ? {
493
627
  name: "label",
494
- fn: g(() => [
495
- q(l.$slots, `label-${u.name}`, { field: u })
628
+ fn: q(() => [
629
+ A(r.$slots, `label-${u.name}`, { field: u })
496
630
  ]),
497
631
  key: "0"
498
632
  } : void 0,
499
- l.$slots[`error-${u.name}`] ? {
633
+ r.$slots[`error-${u.name}`] ? {
500
634
  name: "error",
501
- fn: g(() => [
502
- q(l.$slots, `error-${u.name}`, {
635
+ fn: q(() => [
636
+ A(r.$slots, `error-${u.name}`, {
503
637
  field: u,
504
- error: B(u)
638
+ error: g(u)
505
639
  })
506
640
  ]),
507
641
  key: "1"
508
642
  } : void 0
509
643
  ]), 1064, ["field", "model-value", "error", "touched", "onUpdate:modelValue", "onBlur"])) : k("", !0)
510
644
  ], 64))), 128)),
511
- q(l.$slots, "submit", {
645
+ A(r.$slots, "submit", {
512
646
  isSubmitting: e.form.isSubmitting.value,
513
647
  isValid: e.form.isValid.value
514
648
  }, () => [
@@ -516,15 +650,15 @@ const _ = ["for"], ee = {
516
650
  type: "submit",
517
651
  disabled: e.form.isSubmitting.value,
518
652
  class: "vfs-submit"
519
- }, v(e.submitLabel ?? "Submit"), 9, ge)
653
+ }, y(e.submitLabel ?? "Submit"), 9, we)
520
654
  ])
521
655
  ], 32);
522
656
  };
523
657
  }
524
- }), Se = { class: "vfs-multistep" }, Be = { class: "vfs-multistep__steps" }, Fe = { class: "vfs-multistep__step-number" }, Ce = {
658
+ }), Me = { class: "vfs-multistep" }, Ue = { class: "vfs-multistep__steps" }, Pe = { class: "vfs-multistep__step-number" }, Ke = {
525
659
  key: 0,
526
660
  class: "vfs-multistep__step-label"
527
- }, qe = { class: "vfs-multistep__progress" }, Le = { class: "vfs-multistep__nav" }, Re = ["disabled"], we = /* @__PURE__ */ x({
661
+ }, Oe = { class: "vfs-multistep__progress" }, je = { class: "vfs-multistep__nav" }, Ge = ["disabled"], Xe = /* @__PURE__ */ V({
528
662
  __name: "MultiStepFormRenderer",
529
663
  props: {
530
664
  form: {},
@@ -535,55 +669,55 @@ const _ = ["for"], ee = {
535
669
  stepLabels: {}
536
670
  },
537
671
  emits: ["submit"],
538
- setup(e, { emit: r }) {
539
- const a = e, s = r;
540
- async function n() {
541
- await a.form.next();
672
+ setup(e, { emit: o }) {
673
+ const l = e, s = o;
674
+ async function a() {
675
+ await l.form.next();
542
676
  }
543
- async function o() {
544
- await a.form.submit(), s("submit");
677
+ async function d() {
678
+ await l.form.submit(), s("submit");
545
679
  }
546
- return (h, m) => (t(), d("div", Se, [
547
- b("div", Be, [
548
- (t(!0), d(S, null, C(e.form.steps, (i, $) => {
549
- var B;
550
- return t(), d("div", {
551
- key: $,
552
- class: A(["vfs-multistep__step", {
553
- "vfs-multistep__step--active": $ === e.form.currentStep.value,
554
- "vfs-multistep__step--done": $ < e.form.currentStep.value
680
+ return (m, f) => (t(), n("div", Me, [
681
+ b("div", Ue, [
682
+ (t(!0), n(x, null, S(e.form.steps, (h, c) => {
683
+ var g;
684
+ return t(), n("div", {
685
+ key: c,
686
+ class: T(["vfs-multistep__step", {
687
+ "vfs-multistep__step--active": c === e.form.currentStep.value,
688
+ "vfs-multistep__step--done": c < e.form.currentStep.value
555
689
  }])
556
690
  }, [
557
- b("span", Fe, v($ + 1), 1),
558
- (B = e.stepLabels) != null && B[$] ? (t(), d("span", Ce, v(e.stepLabels[$]), 1)) : k("", !0)
691
+ b("span", Pe, y(c + 1), 1),
692
+ (g = e.stepLabels) != null && g[c] ? (t(), n("span", Ke, y(e.stepLabels[c]), 1)) : k("", !0)
559
693
  ], 2);
560
694
  }), 128))
561
695
  ]),
562
- b("div", qe, " Step " + v(e.form.currentStep.value + 1) + " of " + v(e.form.totalSteps), 1),
563
- p(xe, {
696
+ b("div", Oe, " Step " + y(e.form.currentStep.value + 1) + " of " + y(e.form.totalSteps), 1),
697
+ M(Ee, {
564
698
  form: e.form.form.value,
565
699
  components: e.components
566
700
  }, {
567
- submit: g(() => [
568
- b("div", Le, [
569
- e.form.isFirstStep.value ? k("", !0) : (t(), d("button", {
701
+ submit: q(() => [
702
+ b("div", je, [
703
+ e.form.isFirstStep.value ? k("", !0) : (t(), n("button", {
570
704
  key: 0,
571
705
  type: "button",
572
706
  class: "vfs-multistep__back",
573
- onClick: m[0] || (m[0] = (i) => e.form.back())
574
- }, v(e.backLabel ?? "← Back"), 1)),
575
- e.form.isLastStep.value ? (t(), d("button", {
707
+ onClick: f[0] || (f[0] = (h) => e.form.back())
708
+ }, y(e.backLabel ?? "← Back"), 1)),
709
+ e.form.isLastStep.value ? (t(), n("button", {
576
710
  key: 2,
577
711
  type: "button",
578
712
  class: "vfs-submit",
579
713
  disabled: e.form.isSubmitting.value,
580
- onClick: o
581
- }, v(e.submitLabel ?? "Submit"), 9, Re)) : (t(), d("button", {
714
+ onClick: d
715
+ }, y(e.submitLabel ?? "Submit"), 9, Ge)) : (t(), n("button", {
582
716
  key: 1,
583
717
  type: "button",
584
718
  class: "vfs-multistep__next",
585
- onClick: n
586
- }, v(e.nextLabel ?? "Next →"), 1))
719
+ onClick: a
720
+ }, y(e.nextLabel ?? "Next →"), 1))
587
721
  ])
588
722
  ]),
589
723
  _: 1
@@ -592,14 +726,15 @@ const _ = ["for"], ee = {
592
726
  }
593
727
  });
594
728
  export {
595
- $e as ArrayField,
596
- G as CheckboxField,
597
- J as DateField,
598
- xe as FormRenderer,
599
- we as MultiStepFormRenderer,
600
- z as NumberField,
601
- H as RadioField,
602
- j as SelectField,
729
+ Be as ArrayField,
730
+ H as CheckboxField,
731
+ Q as DateField,
732
+ Te as FileField,
733
+ Ee as FormRenderer,
734
+ Xe as MultiStepFormRenderer,
735
+ O as NumberField,
736
+ J as RadioField,
737
+ G as SelectField,
603
738
  N as TextField,
604
- P as TextareaField
739
+ j as TextareaField
605
740
  };