@soft-stech/bootsman-ui-shadcn 1.3.6 → 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/{BuiDataTable.vue_vue_type_script_setup_true_lang-CUH3nl15.js → BuiDataTable.vue_vue_type_script_setup_true_lang-Bzw8CawP.js} +74 -68
- 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/components/ui/table/BuiDataTable.js +1 -1
- package/dist/components/ui/table/BuiDataTable.vue.d.ts +3 -0
- package/dist/components/ui/table/index.js +1 -1
- package/dist/index.js +70 -69
- package/package.json +1 -1
- package/src/components/stories/BuiAutoForm.story.vue +10 -0
- package/src/components/stories/BuiDataTable.story.vue +38 -4
- 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/src/components/ui/table/BuiDataTable.vue +7 -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";
|
@@ -116,13 +116,13 @@ import { _ as jt } from "./BuiTableRowSubrow.vue_vue_type_script_setup_true_lang
|
|
116
116
|
import { _ as Ot } from "./BuiTableCaption.vue_vue_type_script_setup_true_lang-053YvtXp.js";
|
117
117
|
import { _ as qt } from "./BuiTableEmpty.vue_vue_type_script_setup_true_lang-BJDYHpRG.js";
|
118
118
|
import { _ as Jt } from "./BuiTableFooter.vue_vue_type_script_setup_true_lang-Cfxlxsbh.js";
|
119
|
-
import { _ as Qt } from "./BuiDataTable.vue_vue_type_script_setup_true_lang-
|
119
|
+
import { _ as Qt } from "./BuiDataTable.vue_vue_type_script_setup_true_lang-Bzw8CawP.js";
|
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.'
|
@@ -5,7 +5,14 @@ import { tableColumnSortCommon } from '@/lib/utils'
|
|
5
5
|
import type { ColumnDef, PaginationState, Row, RowSelectionState } from '@tanstack/vue-table'
|
6
6
|
import { sort, type ISortByObjectSorter } from 'fast-sort'
|
7
7
|
import { logEvent } from 'histoire/client'
|
8
|
-
import {
|
8
|
+
import {
|
9
|
+
AlignJustifyIcon,
|
10
|
+
ArrowUpNarrowWideIcon,
|
11
|
+
FolderIcon,
|
12
|
+
SignalHighIcon,
|
13
|
+
SignalMediumIcon,
|
14
|
+
SignalLowIcon
|
15
|
+
} from 'lucide-vue-next'
|
9
16
|
import { computed, h, ref } from 'vue'
|
10
17
|
import { z } from 'zod'
|
11
18
|
import tasks from './data/tasks.json'
|
@@ -72,10 +79,11 @@ function updateSelection(val: RowSelectionState) {
|
|
72
79
|
selection.value = val
|
73
80
|
}
|
74
81
|
|
75
|
-
type GroupBy = 'none' | 'status'
|
82
|
+
type GroupBy = 'none' | 'status' | 'priority'
|
76
83
|
const groupBy = ref<GroupBy>('none')
|
77
84
|
const groupLabels = {
|
78
|
-
status: ['Status', 'Not in any status']
|
85
|
+
status: ['Status', 'Not in any status'],
|
86
|
+
priority: ['Priority', 'Not in any priorities']
|
79
87
|
}
|
80
88
|
|
81
89
|
const sortedData = computed(() => {
|
@@ -120,6 +128,26 @@ function deleteRow() {
|
|
120
128
|
function updateRows() {
|
121
129
|
data.value.shift()
|
122
130
|
}
|
131
|
+
|
132
|
+
function groupName(group: string | number) {
|
133
|
+
if (groupBy.value === 'priority') {
|
134
|
+
if (group === 'high') {
|
135
|
+
return () => h(SignalHighIcon, { class: 'size-4 inline-block' })
|
136
|
+
}
|
137
|
+
|
138
|
+
if (group === 'medium') {
|
139
|
+
return () => h(SignalMediumIcon, { class: 'size-4 inline-block' })
|
140
|
+
}
|
141
|
+
|
142
|
+
if (group === 'low') {
|
143
|
+
return () => h(SignalLowIcon, { class: 'size-4 inline-block' })
|
144
|
+
}
|
145
|
+
|
146
|
+
return () => group
|
147
|
+
}
|
148
|
+
|
149
|
+
return () => group
|
150
|
+
}
|
123
151
|
</script>
|
124
152
|
|
125
153
|
<template>
|
@@ -147,13 +175,16 @@ function updateRows() {
|
|
147
175
|
<BuiButton variant="outline" @click="deleteRow"> Update rows </BuiButton>
|
148
176
|
|
149
177
|
<BuiTabs v-model="groupBy">
|
150
|
-
<BuiTabsList class="grid w-full grid-cols-
|
178
|
+
<BuiTabsList class="grid w-full grid-cols-3" :variant="'default'">
|
151
179
|
<BuiTabsTrigger value="none" :variant="'default'"
|
152
180
|
><AlignJustifyIcon
|
153
181
|
/></BuiTabsTrigger>
|
154
182
|
<BuiTabsTrigger value="status" :variant="'default'">
|
155
183
|
<FolderIcon />
|
156
184
|
</BuiTabsTrigger>
|
185
|
+
<BuiTabsTrigger value="priority" :variant="'default'">
|
186
|
+
<ArrowUpNarrowWideIcon />
|
187
|
+
</BuiTabsTrigger>
|
157
188
|
</BuiTabsList>
|
158
189
|
</BuiTabs>
|
159
190
|
|
@@ -165,6 +196,9 @@ function updateRows() {
|
|
165
196
|
</template>
|
166
197
|
<template #nodata>Нет данных</template>
|
167
198
|
<template #groupByRow="{ group }"> Optional slot for: `{{ group }}` </template>
|
199
|
+
<template #groupName="{ group }">
|
200
|
+
<component :is="groupName(group)"></component>
|
201
|
+
</template>
|
168
202
|
</BuiDataTable>
|
169
203
|
</Variant>
|
170
204
|
</Story>
|
@@ -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
|
/**
|
@@ -175,7 +175,13 @@ function getGroupLabel(index: number) {
|
|
175
175
|
<template v-if="key === NO_GROUP_KEY">
|
176
176
|
{{ getGroupLabel(1) }}
|
177
177
|
</template>
|
178
|
-
<template v-else>
|
178
|
+
<template v-else>
|
179
|
+
{{ getGroupLabel(0) }}:
|
180
|
+
<slot v-if="$slots.groupName" name="groupName" :group="key" />
|
181
|
+
<template v-else>
|
182
|
+
{{ key }}
|
183
|
+
</template>
|
184
|
+
</template>
|
179
185
|
</div>
|
180
186
|
<slot v-if="$slots.groupByRow" name="groupByRow" :group="key" />
|
181
187
|
</div>
|