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