@soft-stech/bootsman-ui-shadcn 1.3.8 → 1.3.9
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/{BuiAutoForm.vue_vue_type_script_setup_true_lang-BWWNpH1I.js → BuiAutoForm.vue_vue_type_script_setup_true_lang-DyG1WRf2.js} +23 -23
- package/dist/BuiAutoFormField.vue_vue_type_script_setup_true_lang-D0xFhEmy.js +284 -0
- package/dist/BuiAutoFormFieldObject.vue_vue_type_script_setup_true_lang-C7URAPKt.js +96 -0
- package/dist/assets/main.css +1 -1
- package/dist/components/ui/auto-form/BuiAutoForm.js +1 -1
- package/dist/components/ui/auto-form/BuiAutoFormField.js +1 -1
- package/dist/components/ui/auto-form/BuiAutoFormFieldArray.js +1 -1
- package/dist/components/ui/auto-form/BuiAutoFormFieldObject.js +1 -1
- package/dist/components/ui/auto-form/BuiAutoFormFieldObjectCard.js +4 -0
- package/dist/components/ui/auto-form/constant.js +5 -3
- package/dist/components/ui/auto-form/index.js +18 -17
- package/dist/index.js +69 -68
- package/package.json +1 -1
- package/src/components/stories/BuiAutoForm.story.vue +10 -0
- package/src/components/ui/auto-form/BuiAutoForm.vue +1 -1
- package/src/components/ui/auto-form/BuiAutoFormFieldObjectCard.vue +73 -0
- package/src/components/ui/auto-form/constant.ts +2 -1
- package/dist/BuiAutoFormField.vue_vue_type_script_setup_true_lang-xmzLQDzl.js +0 -294
package/dist/index.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
/* empty css */
|
2
2
|
import { _ as i } from "./BuiAccordion.vue_vue_type_script_setup_true_lang-nxe3iIoM.js";
|
3
|
-
import { _ as
|
3
|
+
import { _ as m } from "./BuiAccordionContent.vue_vue_type_script_setup_true_lang-pCTYRg2Z.js";
|
4
4
|
import { _ as p } from "./BuiAccordionItem.vue_vue_type_script_setup_true_lang-Dp-3E0FN.js";
|
5
5
|
import { _ as B } from "./BuiAccordionTrigger.vue_vue_type_script_setup_true_lang-CtFZfwMC.js";
|
6
|
-
import { _ as
|
6
|
+
import { _ as n } from "./BuiAlertDialog.vue_vue_type_script_setup_true_lang-CKpn0FlQ.js";
|
7
7
|
import { _ as l } from "./BuiAlertDialogTrigger.vue_vue_type_script_setup_true_lang-Cz4RKkoF.js";
|
8
8
|
import { _ as g } from "./BuiAlertDialogContent.vue_vue_type_script_setup_true_lang-DFUbXcoh.js";
|
9
9
|
import { _ as T } from "./BuiAlertDialogHeader.vue_vue_type_script_setup_true_lang-7Dx74gxo.js";
|
@@ -23,10 +23,10 @@ import { _ as $ } from "./BuiCardHeader.vue_vue_type_script_setup_true_lang-D9mi
|
|
23
23
|
import { _ as ro } from "./BuiCardTitle.vue_vue_type_script_setup_true_lang-B6T0EtFW.js";
|
24
24
|
import { _ as to } from "./BuiCardDescription.vue_vue_type_script_setup_true_lang-Bf_1xgzn.js";
|
25
25
|
import { _ as io } from "./BuiCardContent.vue_vue_type_script_setup_true_lang-B6clSivQ.js";
|
26
|
-
import { _ as
|
26
|
+
import { _ as mo } from "./BuiCardFooter.vue_vue_type_script_setup_true_lang-Bxt8PufJ.js";
|
27
27
|
import { _ as po } from "./BuiCheckbox.vue_vue_type_script_setup_true_lang-B0K_SUAC.js";
|
28
28
|
import { _ as Bo } from "./BuiCommand.vue_vue_type_script_setup_true_lang-P_fz9PPV.js";
|
29
|
-
import { _ as
|
29
|
+
import { _ as no } from "./BuiCommandDialog.vue_vue_type_script_setup_true_lang-CEnlCiUo.js";
|
30
30
|
import { _ as lo } from "./BuiCommandEmpty.vue_vue_type_script_setup_true_lang--AzKirWT.js";
|
31
31
|
import { _ as Co } from "./BuiCommandGroup.vue_vue_type_script_setup_true_lang-oAo3VvXV.js";
|
32
32
|
import { _ as Fo } from "./BuiCommandInput.vue_vue_type_script_setup_true_lang-BEhdQsvD.js";
|
@@ -50,9 +50,9 @@ import { _ as or } from "./BuiContextMenuSubTrigger.vue_vue_type_script_setup_tr
|
|
50
50
|
import { _ as er } from "./BuiContextMenuSubContent.vue_vue_type_script_setup_true_lang-CvYcdr9E.js";
|
51
51
|
import { _ as ar } from "./BuiDialog.vue_vue_type_script_setup_true_lang-DGrI65dh.js";
|
52
52
|
import { _ as ur } from "./BuiDialogClose.vue_vue_type_script_setup_true_lang-D9w-FsVq.js";
|
53
|
-
import { _ as
|
53
|
+
import { _ as sr } from "./BuiDialogTrigger.vue_vue_type_script_setup_true_lang-Czib4PX-.js";
|
54
54
|
import { _ as xr } from "./BuiDialogHeader.vue_vue_type_script_setup_true_lang-2BA5kKFA.js";
|
55
|
-
import { _ as
|
55
|
+
import { _ as fr } from "./BuiDialogTitle.vue_vue_type_script_setup_true_lang-D4lcU_Gz.js";
|
56
56
|
import { _ as _r } from "./BuiDialogDescription.vue_vue_type_script_setup_true_lang-B6RlWji2.js";
|
57
57
|
import { _ as dr } from "./BuiDialogContent.vue_vue_type_script_setup_true_lang-3DBhO_IA.js";
|
58
58
|
import { _ as Cr } from "./BuiDialogFooter.vue_vue_type_script_setup_true_lang-B89so9mg.js";
|
@@ -73,9 +73,9 @@ import { _ as Wr } from "./BuiDropdownMenuSubTrigger.vue_vue_type_script_setup_t
|
|
73
73
|
import { _ as Yr } from "./BuiDropdownMenuSubContent.vue_vue_type_script_setup_true_lang-mMWlAm-h.js";
|
74
74
|
import { Form as $r, Field as oe, FieldArray as re, useField as ee, useFieldArray as te, useForm as ae } from "vee-validate";
|
75
75
|
import { _ as ue } from "./BuiFormItem.vue_vue_type_script_setup_true_lang-COw7Rwow.js";
|
76
|
-
import { _ as
|
76
|
+
import { _ as se } from "./BuiFormLabel.vue_vue_type_script_setup_true_lang-ClJ8XVcR.js";
|
77
77
|
import { _ as xe } from "./BuiFormControl.vue_vue_type_script_setup_true_lang-CCJS2wc1.js";
|
78
|
-
import { _ as
|
78
|
+
import { _ as fe } from "./BuiFormMessage.vue_vue_type_script_setup_true_lang-DTdflpS8.js";
|
79
79
|
import { _ as _e } from "./BuiFormDescription.vue_vue_type_script_setup_true_lang-CeQSv28t.js";
|
80
80
|
import { _ as de } from "./BuiHoverCard.vue_vue_type_script_setup_true_lang-UvgUvVQh.js";
|
81
81
|
import { _ as Ce } from "./BuiHoverCardTrigger.vue_vue_type_script_setup_true_lang-Cw-9ABpN.js";
|
@@ -96,9 +96,9 @@ import { BuiHealth as Ze, capHealthVariants as $e, healthVariants as ot } from "
|
|
96
96
|
import { _ as et } from "./BuiRadioGroup.vue_vue_type_script_setup_true_lang-Bzefyzga.js";
|
97
97
|
import { _ as at } from "./BuiRadioGroupItem.vue_vue_type_script_setup_true_lang-D1w59zx2.js";
|
98
98
|
import { _ as ut } from "./BuiSelect.vue_vue_type_script_setup_true_lang-YVZaZc0x.js";
|
99
|
-
import { _ as
|
99
|
+
import { _ as st } from "./BuiSelectValue.vue_vue_type_script_setup_true_lang-CseYU299.js";
|
100
100
|
import { _ as xt } from "./BuiSelectTrigger.vue_vue_type_script_setup_true_lang-Dh-1xzuh.js";
|
101
|
-
import { _ as
|
101
|
+
import { _ as ft } from "./BuiSelectContent.vue_vue_type_script_setup_true_lang-CX82dW-X.js";
|
102
102
|
import { _ as _t } from "./BuiSelectGroup.vue_vue_type_script_setup_true_lang-B7bT-kcN.js";
|
103
103
|
import { _ as dt } from "./BuiSelectItem.vue_vue_type_script_setup_true_lang-DsWD84S8.js";
|
104
104
|
import { _ as Ct } from "./BuiSelectItemText.vue_vue_type_script_setup_true_lang-CMBf17fE.js";
|
@@ -120,9 +120,9 @@ import { _ as Qt } from "./BuiDataTable.vue_vue_type_script_setup_true_lang-Bzw8
|
|
120
120
|
import { BuiTabsList as Xt, BuiTabsTrigger as Yt, tabsListVariants as Zt, tabsTriggerVariants as $t } from "./components/ui/tabs/index.js";
|
121
121
|
import { BuiTextarea as ra, textareaVariants as ea } from "./components/ui/textarea/index.js";
|
122
122
|
import { BuiToast as aa, BuiToaster as ia, toastVariants as ua } from "./components/ui/toast/index.js";
|
123
|
-
import { _ as
|
123
|
+
import { _ as sa } from "./BuiTooltip.vue_vue_type_script_setup_true_lang-CsOjyqI1.js";
|
124
124
|
import { _ as xa } from "./BuiTooltipContent.vue_vue_type_script_setup_true_lang-DeCynYsO.js";
|
125
|
-
import { _ as
|
125
|
+
import { _ as fa } from "./BuiTooltipTrigger.vue_vue_type_script_setup_true_lang-Bb8h7e0Q.js";
|
126
126
|
import { _ as _a } from "./BuiTooltipProvider.vue_vue_type_script_setup_true_lang-DE2Dcdd0.js";
|
127
127
|
import { BuiToggle as da, toggleVariants as ga } from "./components/ui/toggle/index.js";
|
128
128
|
import { _ as Ta } from "./BuiToggleGroup.vue_vue_type_script_setup_true_lang-D4bAsz99.js";
|
@@ -135,39 +135,40 @@ import { _ as va } from "./BuiCollapsible.vue_vue_type_script_setup_true_lang-Bf
|
|
135
135
|
import { _ as La } from "./BuiCollapsibleTrigger.vue_vue_type_script_setup_true_lang-DJ8YMCCp.js";
|
136
136
|
import { _ as Ga } from "./BuiCollapsibleContent.vue_vue_type_script_setup_true_lang-eieHE5yV.js";
|
137
137
|
import { getBaseSchema as Ra, getBaseType as ka, getObjectFormSchema as Ea } from "./components/ui/auto-form/utils.js";
|
138
|
-
import { _ as Na } from "./BuiAutoForm.vue_vue_type_script_setup_true_lang-
|
139
|
-
import { _ as Ua, a as qa
|
140
|
-
import { _ as
|
141
|
-
import { _ as
|
142
|
-
import { _ as
|
143
|
-
import { _ as
|
144
|
-
import { _ as
|
145
|
-
import { _ as
|
146
|
-
import { _ as
|
138
|
+
import { _ as Na } from "./BuiAutoForm.vue_vue_type_script_setup_true_lang-DyG1WRf2.js";
|
139
|
+
import { _ as Ua, a as qa } from "./BuiAutoFormField.vue_vue_type_script_setup_true_lang-D0xFhEmy.js";
|
140
|
+
import { _ as Ja } from "./BuiAutoFormLabel.vue_vue_type_script_setup_true_lang-DzpWjTLE.js";
|
141
|
+
import { _ as Qa } from "./BuiAutoFormFieldBoolean.vue_vue_type_script_setup_true_lang-tuxavlOe.js";
|
142
|
+
import { _ as Xa } from "./BuiAutoFormFieldDate.vue_vue_type_script_setup_true_lang-Bzg1m-ii.js";
|
143
|
+
import { _ as Za } from "./BuiAutoFormFieldEnum.vue_vue_type_script_setup_true_lang-Bqe8Rt85.js";
|
144
|
+
import { _ as oi } from "./BuiAutoFormFieldFile.vue_vue_type_script_setup_true_lang-DrJwn66q.js";
|
145
|
+
import { _ as ei } from "./BuiAutoFormFieldInput.vue_vue_type_script_setup_true_lang-DtBFfiOK.js";
|
146
|
+
import { _ as ai } from "./BuiAutoFormFieldNumber.vue_vue_type_script_setup_true_lang-ClLqHM1Y.js";
|
147
|
+
import { _ as ui } from "./BuiAutoFormFieldObject.vue_vue_type_script_setup_true_lang-C7URAPKt.js";
|
147
148
|
import { default as si } from "./tailwind-preset.js";
|
148
149
|
/* empty css */
|
149
|
-
import { _ as
|
150
|
-
import { _ as
|
151
|
-
import { _ as
|
152
|
-
import { _ as
|
150
|
+
import { _ as xi } from "./BuiAlertTitle.vue_vue_type_script_setup_true_lang-BvU1UhRc.js";
|
151
|
+
import { _ as fi } from "./BuiAlertDescription.vue_vue_type_script_setup_true_lang-CVBdwmJq.js";
|
152
|
+
import { _ as _i } from "./BuiAvatarImage.vue_vue_type_script_setup_true_lang-CpDtlLee.js";
|
153
|
+
import { _ as di } from "./BuiAvatarFallback.vue_vue_type_script_setup_true_lang-DM4kyiXi.js";
|
153
154
|
import "./BuiCalendar.vue_vue_type_style_index_0_lang-DK4yUiXC.js";
|
154
|
-
import { _ as
|
155
|
-
import { _ as
|
156
|
-
import { _ as
|
157
|
-
import { _ as
|
158
|
-
import { _ as
|
159
|
-
import { _ as
|
160
|
-
import { _ as
|
161
|
-
import { _ as
|
162
|
-
import { toast as
|
155
|
+
import { _ as Ci } from "./BuiTabs.vue_vue_type_script_setup_true_lang-DZavy0KI.js";
|
156
|
+
import { _ as Fi } from "./BuiTabsContent.vue_vue_type_script_setup_true_lang-BGARj0PN.js";
|
157
|
+
import { _ as bi } from "./BuiToastAction.vue_vue_type_script_setup_true_lang-BnduHxHU.js";
|
158
|
+
import { _ as Ai } from "./BuiToastViewport.vue_vue_type_script_setup_true_lang-DGcOPCBU.js";
|
159
|
+
import { _ as Mi } from "./BuiToastClose.vue_vue_type_script_setup_true_lang-D8a4DIAU.js";
|
160
|
+
import { _ as Ii } from "./BuiToastTitle.vue_vue_type_script_setup_true_lang-BTPprH2k.js";
|
161
|
+
import { _ as Vi } from "./BuiToastDescription.vue_vue_type_script_setup_true_lang-DttuuxON.js";
|
162
|
+
import { _ as hi } from "./BuiToastProvider.vue_vue_type_script_setup_true_lang-V09S1Ros.js";
|
163
|
+
import { toast as yi, useToast as Gi } from "./components/ui/toast/use-toast.js";
|
163
164
|
export {
|
164
165
|
i as BuiAccordion,
|
165
|
-
|
166
|
+
m as BuiAccordionContent,
|
166
167
|
p as BuiAccordionItem,
|
167
168
|
B as BuiAccordionTrigger,
|
168
169
|
v as BuiAlert,
|
169
|
-
|
170
|
-
|
170
|
+
fi as BuiAlertDescription,
|
171
|
+
n as BuiAlertDialog,
|
171
172
|
w as BuiAlertDialogAction,
|
172
173
|
P as BuiAlertDialogCancel,
|
173
174
|
g as BuiAlertDialogContent,
|
@@ -176,22 +177,22 @@ export {
|
|
176
177
|
T as BuiAlertDialogHeader,
|
177
178
|
c as BuiAlertDialogTitle,
|
178
179
|
l as BuiAlertDialogTrigger,
|
179
|
-
|
180
|
+
xi as BuiAlertTitle,
|
180
181
|
y as BuiAspectRatio,
|
181
182
|
Na as BuiAutoForm,
|
182
183
|
Ua as BuiAutoFormField,
|
183
184
|
qa as BuiAutoFormFieldArray,
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
185
|
+
Qa as BuiAutoFormFieldBoolean,
|
186
|
+
Xa as BuiAutoFormFieldDate,
|
187
|
+
Za as BuiAutoFormFieldEnum,
|
188
|
+
oi as BuiAutoFormFieldFile,
|
189
|
+
ei as BuiAutoFormFieldInput,
|
190
|
+
ai as BuiAutoFormFieldNumber,
|
191
|
+
ui as BuiAutoFormFieldObject,
|
192
|
+
Ja as BuiAutoFormLabel,
|
192
193
|
H as BuiAvatar,
|
193
|
-
|
194
|
-
|
194
|
+
di as BuiAvatarFallback,
|
195
|
+
_i as BuiAvatarImage,
|
195
196
|
E as BuiBadge,
|
196
197
|
be as BuiBadgedInput,
|
197
198
|
O as BuiButton,
|
@@ -199,7 +200,7 @@ export {
|
|
199
200
|
Y as BuiCard,
|
200
201
|
io as BuiCardContent,
|
201
202
|
to as BuiCardDescription,
|
202
|
-
|
203
|
+
mo as BuiCardFooter,
|
203
204
|
$ as BuiCardHeader,
|
204
205
|
ro as BuiCardTitle,
|
205
206
|
po as BuiCheckbox,
|
@@ -207,7 +208,7 @@ export {
|
|
207
208
|
Ga as BuiCollapsibleContent,
|
208
209
|
La as BuiCollapsibleTrigger,
|
209
210
|
Bo as BuiCommand,
|
210
|
-
|
211
|
+
no as BuiCommandDialog,
|
211
212
|
lo as BuiCommandEmpty,
|
212
213
|
Co as BuiCommandGroup,
|
213
214
|
Fo as BuiCommandInput,
|
@@ -236,8 +237,8 @@ export {
|
|
236
237
|
_r as BuiDialogDescription,
|
237
238
|
Cr as BuiDialogFooter,
|
238
239
|
xr as BuiDialogHeader,
|
239
|
-
|
240
|
-
|
240
|
+
fr as BuiDialogTitle,
|
241
|
+
sr as BuiDialogTrigger,
|
241
242
|
Sr as BuiDropdownMenu,
|
242
243
|
Rr as BuiDropdownMenuCheckboxItem,
|
243
244
|
Pr as BuiDropdownMenuContent,
|
@@ -259,8 +260,8 @@ export {
|
|
259
260
|
oe as BuiFormField,
|
260
261
|
re as BuiFormFieldArray,
|
261
262
|
ue as BuiFormItem,
|
262
|
-
|
263
|
-
|
263
|
+
se as BuiFormLabel,
|
264
|
+
fe as BuiFormMessage,
|
264
265
|
Ze as BuiHealth,
|
265
266
|
de as BuiHoverCard,
|
266
267
|
Fe as BuiHoverCardContent,
|
@@ -286,14 +287,14 @@ export {
|
|
286
287
|
wa as BuiScrollArea,
|
287
288
|
Pa as BuiScrollBar,
|
288
289
|
ut as BuiSelect,
|
289
|
-
|
290
|
+
ft as BuiSelectContent,
|
290
291
|
_t as BuiSelectGroup,
|
291
292
|
dt as BuiSelectItem,
|
292
293
|
Ct as BuiSelectItemText,
|
293
294
|
Ft as BuiSelectLabel,
|
294
295
|
bt as BuiSelectSeparator,
|
295
296
|
xt as BuiSelectTrigger,
|
296
|
-
|
297
|
+
st as BuiSelectValue,
|
297
298
|
At as BuiSeparator,
|
298
299
|
Da as BuiSlider,
|
299
300
|
Mt as BuiSwitch,
|
@@ -307,26 +308,26 @@ export {
|
|
307
308
|
Ht as BuiTableHeader,
|
308
309
|
kt as BuiTableRow,
|
309
310
|
jt as BuiTableRowSubrow,
|
310
|
-
|
311
|
-
|
311
|
+
Ci as BuiTabs,
|
312
|
+
Fi as BuiTabsContent,
|
312
313
|
Xt as BuiTabsList,
|
313
314
|
Yt as BuiTabsTrigger,
|
314
315
|
ra as BuiTextarea,
|
315
316
|
aa as BuiToast,
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
317
|
+
bi as BuiToastAction,
|
318
|
+
Mi as BuiToastClose,
|
319
|
+
Vi as BuiToastDescription,
|
320
|
+
hi as BuiToastProvider,
|
321
|
+
Ii as BuiToastTitle,
|
322
|
+
Ai as BuiToastViewport,
|
322
323
|
ia as BuiToaster,
|
323
324
|
da as BuiToggle,
|
324
325
|
Ta as BuiToggleGroup,
|
325
326
|
ca as BuiToggleGroupItem,
|
326
|
-
|
327
|
+
sa as BuiTooltip,
|
327
328
|
xa as BuiTooltipContent,
|
328
329
|
_a as BuiTooltipProvider,
|
329
|
-
|
330
|
+
fa as BuiTooltipTrigger,
|
330
331
|
Sa as Skeleton,
|
331
332
|
h as alertVariants,
|
332
333
|
R as avatarVariant,
|
@@ -348,12 +349,12 @@ export {
|
|
348
349
|
$t as tabsTriggerVariants,
|
349
350
|
si as tailwind,
|
350
351
|
ea as textareaVariants,
|
351
|
-
|
352
|
+
yi as toast,
|
352
353
|
ua as toastVariants,
|
353
354
|
ga as toggleVariants,
|
354
355
|
ee as useBuiField,
|
355
356
|
te as useBuiFieldArray,
|
356
357
|
ae as useBuiForm,
|
357
|
-
|
358
|
+
Gi as useToast,
|
358
359
|
J as valueUpdater
|
359
360
|
};
|
package/package.json
CHANGED
@@ -23,6 +23,16 @@ const schema = z.object({
|
|
23
23
|
})
|
24
24
|
.describe('Addon')
|
25
25
|
),
|
26
|
+
level1: z
|
27
|
+
.object({
|
28
|
+
level2: z.object({
|
29
|
+
level3: z.object({
|
30
|
+
test: z.string().min(1),
|
31
|
+
something: z.boolean()
|
32
|
+
})
|
33
|
+
})
|
34
|
+
})
|
35
|
+
.describe('Level 1'),
|
26
36
|
username: z
|
27
37
|
.string({
|
28
38
|
required_error: 'Username is required.'
|
@@ -86,7 +86,7 @@ const formComponentProps = computed(() => {
|
|
86
86
|
</script>
|
87
87
|
|
88
88
|
<template>
|
89
|
-
<component :is="formComponent" v-bind="formComponentProps">
|
89
|
+
<component :is="formComponent" v-bind="formComponentProps" class="flex flex-col gap-5">
|
90
90
|
<slot name="customAutoForm" :fields="fields">
|
91
91
|
<template v-for="(shape, key) of shapes" :key="key">
|
92
92
|
<slot
|
@@ -0,0 +1,73 @@
|
|
1
|
+
<script setup lang="ts" generic="T extends ZodRawShape">
|
2
|
+
import type { ZodAny, ZodObject, ZodRawShape } from 'zod'
|
3
|
+
import { computed, provide } from 'vue'
|
4
|
+
import { FieldContextKey, useField } from 'vee-validate'
|
5
|
+
import AutoFormField from './BuiAutoFormField.vue'
|
6
|
+
import type { Config, ConfigItem, Shape } from './interface'
|
7
|
+
import { beautifyObjectName, getBaseSchema, getBaseType, getDefaultValueInZodStack } from './utils'
|
8
|
+
import { BuiCard, BuiCardContent, BuiCardHeader, BuiCardTitle } from '@/components/ui/card'
|
9
|
+
import { BuiFormItem as FormItem } from '@/components/ui/form'
|
10
|
+
|
11
|
+
const props = defineProps<{
|
12
|
+
fieldName: string
|
13
|
+
required?: boolean
|
14
|
+
config?: Config<T>
|
15
|
+
schema?: ZodObject<T>
|
16
|
+
disabled?: boolean
|
17
|
+
}>()
|
18
|
+
|
19
|
+
const shapes = computed(() => {
|
20
|
+
// @ts-expect-error ignore {} not assignable to object
|
21
|
+
const val: { [key in keyof T]: Shape } = {}
|
22
|
+
|
23
|
+
if (!props.schema) return
|
24
|
+
const shape = getBaseSchema(props.schema)?.shape
|
25
|
+
if (!shape) return
|
26
|
+
Object.keys(shape).forEach((name) => {
|
27
|
+
const item = shape[name] as ZodAny
|
28
|
+
const baseItem = getBaseSchema(item) as ZodAny
|
29
|
+
let options =
|
30
|
+
baseItem && 'values' in baseItem._def ? (baseItem._def.values as string[]) : undefined
|
31
|
+
if (!Array.isArray(options) && typeof options === 'object') options = Object.values(options)
|
32
|
+
|
33
|
+
val[name as keyof T] = {
|
34
|
+
type: getBaseType(item),
|
35
|
+
default: getDefaultValueInZodStack(item),
|
36
|
+
options,
|
37
|
+
required: !['ZodOptional', 'ZodNullable'].includes(item._def.typeName),
|
38
|
+
schema: item
|
39
|
+
}
|
40
|
+
})
|
41
|
+
return val
|
42
|
+
})
|
43
|
+
|
44
|
+
const fieldContext = useField(props.fieldName)
|
45
|
+
// @ts-expect-error ignore missing `id`
|
46
|
+
provide(FieldContextKey, fieldContext)
|
47
|
+
</script>
|
48
|
+
|
49
|
+
<template>
|
50
|
+
<section>
|
51
|
+
<slot v-bind="props">
|
52
|
+
<BuiCard as-child class="w-full border-0 shadow-none">
|
53
|
+
<FormItem>
|
54
|
+
<BuiCardHeader class="border-b-[1px] border-b-border/[0.16] py-1">
|
55
|
+
<BuiCardTitle class="py-0 text-base">
|
56
|
+
{{ schema?.description || fieldName.split('.')[fieldName.split('.').length - 1] }}
|
57
|
+
</BuiCardTitle>
|
58
|
+
</BuiCardHeader>
|
59
|
+
<BuiCardContent class="flex flex-col gap-5 pb-0 pr-0">
|
60
|
+
<template v-for="(shape, key) in shapes" :key="key">
|
61
|
+
<AutoFormField
|
62
|
+
:config="config?.[key as keyof typeof config] as ConfigItem"
|
63
|
+
:field-name="`${fieldName}.${key.toString()}`"
|
64
|
+
:label="key.toString()"
|
65
|
+
:shape="shape"
|
66
|
+
/>
|
67
|
+
</template>
|
68
|
+
</BuiCardContent>
|
69
|
+
</FormItem>
|
70
|
+
</BuiCard>
|
71
|
+
</slot>
|
72
|
+
</section>
|
73
|
+
</template>
|
@@ -6,6 +6,7 @@ import BuiAutoFormFieldFile from './BuiAutoFormFieldFile.vue'
|
|
6
6
|
import BuiAutoFormFieldInput from './BuiAutoFormFieldInput.vue'
|
7
7
|
import BuiAutoFormFieldNumber from './BuiAutoFormFieldNumber.vue'
|
8
8
|
import BuiAutoFormFieldObject from './BuiAutoFormFieldObject.vue'
|
9
|
+
import BuiAutoFormFieldObjectCard from '@/components/ui/auto-form/BuiAutoFormFieldObjectCard.vue'
|
9
10
|
|
10
11
|
export const INPUT_COMPONENTS = {
|
11
12
|
date: BuiAutoFormFieldDate,
|
@@ -18,7 +19,7 @@ export const INPUT_COMPONENTS = {
|
|
18
19
|
string: BuiAutoFormFieldInput,
|
19
20
|
file: BuiAutoFormFieldFile,
|
20
21
|
array: BuiAutoFormFieldArray,
|
21
|
-
object:
|
22
|
+
object: BuiAutoFormFieldObjectCard
|
22
23
|
}
|
23
24
|
|
24
25
|
/**
|