@soft-stech/bootsman-ui-shadcn 1.3.8 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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
|
/**
|