@soft-stech/bootsman-ui-shadcn 1.1.36 → 1.1.37
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/{BuiAccordion.vue_vue_type_script_setup_true_lang-BfKSXvSH.js → BuiAccordion.vue_vue_type_script_setup_true_lang-D6NZ2Glm.js} +1 -1
- package/dist/{BuiAccordionContent.vue_vue_type_script_setup_true_lang-DMO-5Kol.js → BuiAccordionContent.vue_vue_type_script_setup_true_lang-DWgwTZC3.js} +2 -2
- package/dist/{BuiAccordionItem.vue_vue_type_script_setup_true_lang-COB23Lf9.js → BuiAccordionItem.vue_vue_type_script_setup_true_lang-VmckedPQ.js} +2 -2
- package/dist/{BuiAccordionTrigger.vue_vue_type_script_setup_true_lang-ZzF3Fz_Y.js → BuiAccordionTrigger.vue_vue_type_script_setup_true_lang-CvrPKvEn.js} +3 -3
- package/dist/{BuiAlertDescription.vue_vue_type_script_setup_true_lang-5ZuWb3pn.js → BuiAlertDescription.vue_vue_type_script_setup_true_lang-JGl4jOiY.js} +1 -1
- package/dist/{BuiAlertDialog.vue_vue_type_script_setup_true_lang-D8w0vAwB.js → BuiAlertDialog.vue_vue_type_script_setup_true_lang-CYOmW_Y5.js} +1 -1
- package/dist/{BuiAlertDialogAction.vue_vue_type_script_setup_true_lang-C6QDiZ5j.js → BuiAlertDialogAction.vue_vue_type_script_setup_true_lang-B68AKQif.js} +2 -2
- package/dist/{BuiAlertDialogCancel.vue_vue_type_script_setup_true_lang-DOaeRJsL.js → BuiAlertDialogCancel.vue_vue_type_script_setup_true_lang-Dwqlf8oj.js} +2 -2
- package/dist/{BuiAlertDialogContent.vue_vue_type_script_setup_true_lang-CaJ0vDGp.js → BuiAlertDialogContent.vue_vue_type_script_setup_true_lang-DQ3MO21t.js} +2 -2
- package/dist/{BuiAlertDialogDescription.vue_vue_type_script_setup_true_lang-BG0LYOWF.js → BuiAlertDialogDescription.vue_vue_type_script_setup_true_lang-C0nmsUbU.js} +2 -2
- package/dist/{BuiAlertDialogFooter.vue_vue_type_script_setup_true_lang-rfa4iT4K.js → BuiAlertDialogFooter.vue_vue_type_script_setup_true_lang-Bwp16uCV.js} +1 -1
- package/dist/{BuiAlertDialogHeader.vue_vue_type_script_setup_true_lang-B9dagYsk.js → BuiAlertDialogHeader.vue_vue_type_script_setup_true_lang-C9SdCMGG.js} +1 -1
- package/dist/{BuiAlertDialogTitle.vue_vue_type_script_setup_true_lang-J4_PZbZx.js → BuiAlertDialogTitle.vue_vue_type_script_setup_true_lang-Dnbl9EtZ.js} +2 -2
- package/dist/{BuiAlertDialogTrigger.vue_vue_type_script_setup_true_lang-C3jyJvAh.js → BuiAlertDialogTrigger.vue_vue_type_script_setup_true_lang-DALyN6MC.js} +1 -1
- package/dist/{BuiAlertTitle.vue_vue_type_script_setup_true_lang-2BvNd5H8.js → BuiAlertTitle.vue_vue_type_script_setup_true_lang-CgpdlY3s.js} +1 -1
- package/dist/{BuiAspectRatio.vue_vue_type_script_setup_true_lang-Dtn1AIPx.js → BuiAspectRatio.vue_vue_type_script_setup_true_lang-DfbboEQK.js} +1 -1
- package/dist/BuiAutoForm.vue_vue_type_script_setup_true_lang-CKS23plt.js +206 -0
- package/dist/BuiAutoFormField.vue_vue_type_script_setup_true_lang-DwgVv_fo.js +3062 -0
- package/dist/BuiAutoFormFieldBoolean.vue_vue_type_script_setup_true_lang-BKT85fgx.js +66 -0
- package/dist/BuiAutoFormFieldDate.vue_vue_type_script_setup_true_lang-DWyKdzS5.js +223 -0
- package/dist/BuiAutoFormFieldEnum.vue_vue_type_script_setup_true_lang-BECJ52JQ.js +120 -0
- package/dist/BuiAutoFormFieldFile.vue_vue_type_script_setup_true_lang-BFuZvVOr.js +114 -0
- package/dist/BuiAutoFormFieldInput.vue_vue_type_script_setup_true_lang-DGI0ZobZ.js +60 -0
- package/dist/BuiAutoFormFieldNumber.vue_vue_type_script_setup_true_lang-DmjImgRr.js +59 -0
- package/dist/BuiAutoFormLabel.vue_vue_type_script_setup_true_lang-Cnb5VI3E.js +23 -0
- package/dist/{BuiAvatarFallback.vue_vue_type_script_setup_true_lang-BZTk1ZO8.js → BuiAvatarFallback.vue_vue_type_script_setup_true_lang-jsKtoJ8h.js} +1 -1
- package/dist/{BuiAvatarImage.vue_vue_type_script_setup_true_lang-TPs2An4d.js → BuiAvatarImage.vue_vue_type_script_setup_true_lang-ZeFLLZLS.js} +1 -1
- package/dist/{BuiCalendar.vue_vue_type_style_index_0_lang-BWeH1wsj.js → BuiCalendar.vue_vue_type_style_index_0_lang-D428Q6Nh.js} +1 -1
- package/dist/{BuiCard.vue_vue_type_script_setup_true_lang-xR2SJxt7.js → BuiCard.vue_vue_type_script_setup_true_lang-BdNbxFvi.js} +1 -1
- package/dist/{BuiCardContent.vue_vue_type_script_setup_true_lang-DXKdGtTu.js → BuiCardContent.vue_vue_type_script_setup_true_lang--U7YuaQv.js} +1 -1
- package/dist/{BuiCardDescription.vue_vue_type_script_setup_true_lang-Bhv_Kd_Y.js → BuiCardDescription.vue_vue_type_script_setup_true_lang-CWcDrner.js} +1 -1
- package/dist/{BuiCardFooter.vue_vue_type_script_setup_true_lang-CFZpzuqE.js → BuiCardFooter.vue_vue_type_script_setup_true_lang-DTYkTHzY.js} +1 -1
- package/dist/{BuiCardHeader.vue_vue_type_script_setup_true_lang-BzGMly20.js → BuiCardHeader.vue_vue_type_script_setup_true_lang-7H4mP92e.js} +1 -1
- package/dist/{BuiCardTitle.vue_vue_type_script_setup_true_lang-SbpHUnWp.js → BuiCardTitle.vue_vue_type_script_setup_true_lang-DR6fWGz9.js} +1 -1
- package/dist/{BuiCheckbox.vue_vue_type_script_setup_true_lang-DQm4aqAa.js → BuiCheckbox.vue_vue_type_script_setup_true_lang-CyxEbO5t.js} +3 -3
- package/dist/{BuiCollapsible.vue_vue_type_script_setup_true_lang-mS4zvM_P.js → BuiCollapsible.vue_vue_type_script_setup_true_lang-x_Glw-gh.js} +1 -1
- package/dist/{BuiCollapsibleContent.vue_vue_type_script_setup_true_lang-DbI-Bsc-.js → BuiCollapsibleContent.vue_vue_type_script_setup_true_lang-B72_xwvG.js} +1 -1
- package/dist/{BuiCollapsibleTrigger.vue_vue_type_script_setup_true_lang-r01DxQ2Q.js → BuiCollapsibleTrigger.vue_vue_type_script_setup_true_lang-ByrCdFCy.js} +1 -1
- package/dist/{BuiCommand.vue_vue_type_script_setup_true_lang-DDXzgSh8.js → BuiCommand.vue_vue_type_script_setup_true_lang-C1O7IDvd.js} +2 -2
- package/dist/{BuiCommandDialog.vue_vue_type_script_setup_true_lang-DC9TuOzX.js → BuiCommandDialog.vue_vue_type_script_setup_true_lang-BYYdrUJm.js} +4 -4
- package/dist/{BuiCommandEmpty.vue_vue_type_script_setup_true_lang-CvGPEIBT.js → BuiCommandEmpty.vue_vue_type_script_setup_true_lang-dM0MIDwK.js} +2 -2
- package/dist/{BuiCommandGroup.vue_vue_type_script_setup_true_lang-B5S1bQZG.js → BuiCommandGroup.vue_vue_type_script_setup_true_lang--JVL30Bq.js} +2 -2
- package/dist/{BuiCommandInput.vue_vue_type_script_setup_true_lang-CTtY2BxB.js → BuiCommandInput.vue_vue_type_script_setup_true_lang-td41Iq0J.js} +2 -2
- package/dist/{BuiCommandItem.vue_vue_type_script_setup_true_lang-Bf4ys9fX.js → BuiCommandItem.vue_vue_type_script_setup_true_lang-Co-lQQqw.js} +2 -2
- package/dist/{BuiCommandList.vue_vue_type_script_setup_true_lang-D7Ivd74a.js → BuiCommandList.vue_vue_type_script_setup_true_lang-Bp0LuoaV.js} +2 -2
- package/dist/{BuiCommandSeparator.vue_vue_type_script_setup_true_lang-BpqFifP2.js → BuiCommandSeparator.vue_vue_type_script_setup_true_lang-ClosG8me.js} +2 -2
- package/dist/{BuiCommandShortcut.vue_vue_type_script_setup_true_lang-DZpCdJkB.js → BuiCommandShortcut.vue_vue_type_script_setup_true_lang-DGMEA91e.js} +1 -1
- package/dist/{BuiContextMenu.vue_vue_type_script_setup_true_lang-PrqR-Z4o.js → BuiContextMenu.vue_vue_type_script_setup_true_lang-Bh8oJUyh.js} +1 -1
- package/dist/{BuiContextMenuCheckboxItem.vue_vue_type_script_setup_true_lang-C_1xuj35.js → BuiContextMenuCheckboxItem.vue_vue_type_script_setup_true_lang-BL5Zlqy2.js} +3 -3
- package/dist/{BuiContextMenuContent.vue_vue_type_script_setup_true_lang-B25so3b2.js → BuiContextMenuContent.vue_vue_type_script_setup_true_lang-DtIN0awe.js} +2 -2
- package/dist/{BuiContextMenuGroup.vue_vue_type_script_setup_true_lang-fvcZ-f6-.js → BuiContextMenuGroup.vue_vue_type_script_setup_true_lang-BUlkesJX.js} +1 -1
- package/dist/{BuiContextMenuItem.vue_vue_type_script_setup_true_lang-CAIBesS-.js → BuiContextMenuItem.vue_vue_type_script_setup_true_lang-BbuySkF5.js} +2 -2
- package/dist/{BuiContextMenuLabel.vue_vue_type_script_setup_true_lang-BVUmeTOV.js → BuiContextMenuLabel.vue_vue_type_script_setup_true_lang-DQ3a_SwA.js} +2 -2
- package/dist/{BuiContextMenuRadioGroup.vue_vue_type_script_setup_true_lang-D3CJCQDQ.js → BuiContextMenuRadioGroup.vue_vue_type_script_setup_true_lang-CucdMx7c.js} +1 -1
- package/dist/{BuiContextMenuRadioItem.vue_vue_type_script_setup_true_lang-D7TYGSZc.js → BuiContextMenuRadioItem.vue_vue_type_script_setup_true_lang-aA32tkEA.js} +3 -3
- package/dist/{BuiContextMenuSeparator.vue_vue_type_script_setup_true_lang-Bcl97oHG.js → BuiContextMenuSeparator.vue_vue_type_script_setup_true_lang-DNb1vb3q.js} +2 -2
- package/dist/{BuiContextMenuShortcut.vue_vue_type_script_setup_true_lang-QrzLdLee.js → BuiContextMenuShortcut.vue_vue_type_script_setup_true_lang-ExJmRXvx.js} +1 -1
- package/dist/{BuiContextMenuSub.vue_vue_type_script_setup_true_lang-DJK6Y2q7.js → BuiContextMenuSub.vue_vue_type_script_setup_true_lang-CfEN3NAs.js} +1 -1
- package/dist/{BuiContextMenuSubContent.vue_vue_type_script_setup_true_lang-CetJwAAb.js → BuiContextMenuSubContent.vue_vue_type_script_setup_true_lang-BZxR0wIO.js} +2 -2
- package/dist/{BuiContextMenuSubTrigger.vue_vue_type_script_setup_true_lang-Ce-TcwZI.js → BuiContextMenuSubTrigger.vue_vue_type_script_setup_true_lang-CFcwqUKs.js} +3 -3
- package/dist/{BuiContextMenuTrigger.vue_vue_type_script_setup_true_lang-eoWRCIPI.js → BuiContextMenuTrigger.vue_vue_type_script_setup_true_lang-Bc2IaG-4.js} +1 -1
- package/dist/{BuiDataTable.vue_vue_type_script_setup_true_lang-CNVY0FNa.js → BuiDataTable.vue_vue_type_script_setup_true_lang-BWEYe7eA.js} +15 -15
- package/dist/{BuiDialog.vue_vue_type_script_setup_true_lang-BWW5P0oc.js → BuiDialog.vue_vue_type_script_setup_true_lang-BCbOviQn.js} +1 -1
- package/dist/{BuiDialogClose.vue_vue_type_script_setup_true_lang-Ci6G4VA5.js → BuiDialogClose.vue_vue_type_script_setup_true_lang-Fdp24YHC.js} +1 -1
- package/dist/{BuiDialogContent.vue_vue_type_script_setup_true_lang-4XmpNdxa.js → BuiDialogContent.vue_vue_type_script_setup_true_lang-DTS5OB86.js} +3 -3
- package/dist/{BuiDialogDescription.vue_vue_type_script_setup_true_lang-CeqcIbfX.js → BuiDialogDescription.vue_vue_type_script_setup_true_lang-CPGwGG27.js} +2 -2
- package/dist/{BuiDialogFooter.vue_vue_type_script_setup_true_lang-0x8bjoq2.js → BuiDialogFooter.vue_vue_type_script_setup_true_lang-Blm8xAsp.js} +1 -1
- package/dist/{BuiDialogHeader.vue_vue_type_script_setup_true_lang-B-pI07Bn.js → BuiDialogHeader.vue_vue_type_script_setup_true_lang-DIxMSIbx.js} +1 -1
- package/dist/{BuiDialogTitle.vue_vue_type_script_setup_true_lang-Czyf05pg.js → BuiDialogTitle.vue_vue_type_script_setup_true_lang-Dw4OSpt_.js} +2 -2
- package/dist/{BuiDialogTrigger.vue_vue_type_script_setup_true_lang-CTPbIWJP.js → BuiDialogTrigger.vue_vue_type_script_setup_true_lang-C58hpmhT.js} +1 -1
- package/dist/{BuiDropdownMenu.vue_vue_type_script_setup_true_lang-DezLXrmo.js → BuiDropdownMenu.vue_vue_type_script_setup_true_lang-BV70HeIN.js} +1 -1
- package/dist/{BuiDropdownMenuCheckboxItem.vue_vue_type_script_setup_true_lang-YcK2gaFu.js → BuiDropdownMenuCheckboxItem.vue_vue_type_script_setup_true_lang-yS6gA48j.js} +3 -3
- package/dist/{BuiDropdownMenuContent.vue_vue_type_script_setup_true_lang-B9Fnd8-y.js → BuiDropdownMenuContent.vue_vue_type_script_setup_true_lang-Bb4Q6tSz.js} +2 -2
- package/dist/{BuiDropdownMenuGroup.vue_vue_type_script_setup_true_lang-CZDidzDB.js → BuiDropdownMenuGroup.vue_vue_type_script_setup_true_lang-DfNb5nUo.js} +1 -1
- package/dist/{BuiDropdownMenuItem.vue_vue_type_script_setup_true_lang-N0KSEtzq.js → BuiDropdownMenuItem.vue_vue_type_script_setup_true_lang--QP6Nby4.js} +2 -2
- package/dist/{BuiDropdownMenuLabel.vue_vue_type_script_setup_true_lang-Bu3nte9L.js → BuiDropdownMenuLabel.vue_vue_type_script_setup_true_lang-Dh1TMw9d.js} +2 -2
- package/dist/{BuiDropdownMenuRadioGroup.vue_vue_type_script_setup_true_lang-CAWGTQp0.js → BuiDropdownMenuRadioGroup.vue_vue_type_script_setup_true_lang-DTcNorlM.js} +1 -1
- package/dist/{BuiDropdownMenuRadioItem.vue_vue_type_script_setup_true_lang-Dm3Q-X5e.js → BuiDropdownMenuRadioItem.vue_vue_type_script_setup_true_lang-ToMKHcEm.js} +3 -3
- package/dist/{BuiDropdownMenuSeparator.vue_vue_type_script_setup_true_lang-BQkOcCsm.js → BuiDropdownMenuSeparator.vue_vue_type_script_setup_true_lang-BbepqtDL.js} +1 -1
- package/dist/{BuiDropdownMenuShortcut.vue_vue_type_script_setup_true_lang-BTtPHRtE.js → BuiDropdownMenuShortcut.vue_vue_type_script_setup_true_lang-BWgELWFx.js} +1 -1
- package/dist/{BuiDropdownMenuSub.vue_vue_type_script_setup_true_lang-C0dWO8aw.js → BuiDropdownMenuSub.vue_vue_type_script_setup_true_lang-Dnqs62GK.js} +1 -1
- package/dist/{BuiDropdownMenuSubContent.vue_vue_type_script_setup_true_lang-DM9DrTVw.js → BuiDropdownMenuSubContent.vue_vue_type_script_setup_true_lang-DlTXSDu5.js} +2 -2
- package/dist/{BuiDropdownMenuSubTrigger.vue_vue_type_script_setup_true_lang-CMhD2-up.js → BuiDropdownMenuSubTrigger.vue_vue_type_script_setup_true_lang-B_LMNZ3o.js} +3 -3
- package/dist/{BuiDropdownMenuTrigger.vue_vue_type_script_setup_true_lang-BS0cV8wr.js → BuiDropdownMenuTrigger.vue_vue_type_script_setup_true_lang-CCSql0mq.js} +1 -1
- package/dist/{BuiFormControl.vue_vue_type_script_setup_true_lang-CKUWSJ-E.js → BuiFormControl.vue_vue_type_script_setup_true_lang-DVx9ZDv-.js} +5 -5
- package/dist/BuiFormDescription.vue_vue_type_script_setup_true_lang-BPSgWb0t.js +19 -0
- package/dist/{BuiFormItem.vue_vue_type_script_setup_true_lang-Wd-UEmxW.js → BuiFormItem.vue_vue_type_script_setup_true_lang-CP1K61n9.js} +2 -2
- package/dist/{BuiFormLabel.vue_vue_type_script_setup_true_lang-COCj7thS.js → BuiFormLabel.vue_vue_type_script_setup_true_lang-BpCjAbUu.js} +10 -10
- package/dist/BuiFormMessage.vue_vue_type_script_setup_true_lang-CD9in3nQ.js +18 -0
- package/dist/{BuiHoverCard.vue_vue_type_script_setup_true_lang-DpR4myB6.js → BuiHoverCard.vue_vue_type_script_setup_true_lang-B4EJAZ1v.js} +1 -1
- package/dist/{BuiHoverCardContent.vue_vue_type_script_setup_true_lang-DDVBXn-R.js → BuiHoverCardContent.vue_vue_type_script_setup_true_lang-RFeTYn_w.js} +2 -2
- package/dist/{BuiHoverCardTrigger.vue_vue_type_script_setup_true_lang-BQQYYkqh.js → BuiHoverCardTrigger.vue_vue_type_script_setup_true_lang-DRHctQMn.js} +1 -1
- package/dist/{BuiLabel.vue_vue_type_script_setup_true_lang-882PczU_.js → BuiLabel.vue_vue_type_script_setup_true_lang-DIgQTfIk.js} +2 -2
- package/dist/{BuiPaginationCommon.vue_vue_type_script_setup_true_lang-pftdH49Y.js → BuiPaginationCommon.vue_vue_type_script_setup_true_lang-VNCFXArM.js} +11 -11
- package/dist/{BuiPaginationEllipsis.vue_vue_type_script_setup_true_lang-mhq3AoSW.js → BuiPaginationEllipsis.vue_vue_type_script_setup_true_lang-sLLjg6Lo.js} +7 -7
- package/dist/{BuiPaginationFirst.vue_vue_type_script_setup_true_lang-Bz0BFegr.js → BuiPaginationFirst.vue_vue_type_script_setup_true_lang-C1v4DiC-.js} +4 -4
- package/dist/{BuiPaginationLast.vue_vue_type_script_setup_true_lang-DUMJOl-b.js → BuiPaginationLast.vue_vue_type_script_setup_true_lang-DU5XYLV2.js} +5 -5
- package/dist/{BuiPaginationNext.vue_vue_type_script_setup_true_lang-B18CyqDm.js → BuiPaginationNext.vue_vue_type_script_setup_true_lang-vH3Cu1pW.js} +3 -3
- package/dist/{BuiPaginationPrev.vue_vue_type_script_setup_true_lang-osilZHq8.js → BuiPaginationPrev.vue_vue_type_script_setup_true_lang-CTNwqcX0.js} +3 -3
- package/dist/{BuiPopover.vue_vue_type_script_setup_true_lang-UcSh_GiH.js → BuiPopover.vue_vue_type_script_setup_true_lang-zW4DPswi.js} +1 -1
- package/dist/{BuiPopoverContent.vue_vue_type_script_setup_true_lang-BVMemXcV.js → BuiPopoverContent.vue_vue_type_script_setup_true_lang-DmZlmmde.js} +2 -2
- package/dist/{BuiPopoverTrigger.vue_vue_type_script_setup_true_lang-Dw8pc308.js → BuiPopoverTrigger.vue_vue_type_script_setup_true_lang-BzLHQJIv.js} +1 -1
- package/dist/{BuiRadioGroup.vue_vue_type_script_setup_true_lang-DFNEq9BE.js → BuiRadioGroup.vue_vue_type_script_setup_true_lang-Dyyf8FoV.js} +2 -2
- package/dist/{BuiRadioGroupItem.vue_vue_type_script_setup_true_lang-CRmGGyIT.js → BuiRadioGroupItem.vue_vue_type_script_setup_true_lang-CeYEovBc.js} +3 -3
- package/dist/{BuiScrollArea.vue_vue_type_script_setup_true_lang-BxFFW-6B.js → BuiScrollArea.vue_vue_type_script_setup_true_lang-C6sBLycG.js} +3 -3
- package/dist/{BuiScrollBar.vue_vue_type_script_setup_true_lang-C9Cqj458.js → BuiScrollBar.vue_vue_type_script_setup_true_lang-D2FLjGPC.js} +2 -2
- package/dist/{BuiSelect.vue_vue_type_script_setup_true_lang-BRQVqTNO.js → BuiSelect.vue_vue_type_script_setup_true_lang-m2Wvc7wn.js} +1 -1
- package/dist/{BuiSelectContent.vue_vue_type_script_setup_true_lang-B1vjFIab.js → BuiSelectContent.vue_vue_type_script_setup_true_lang-D10Iiz4m.js} +2 -2
- package/dist/{BuiSelectGroup.vue_vue_type_script_setup_true_lang-Bph0LmsI.js → BuiSelectGroup.vue_vue_type_script_setup_true_lang-D_fNFsNW.js} +2 -2
- package/dist/{BuiSelectItem.vue_vue_type_script_setup_true_lang-QatY9QR8.js → BuiSelectItem.vue_vue_type_script_setup_true_lang-DtVOu1-z.js} +3 -3
- package/dist/{BuiSelectItemText.vue_vue_type_script_setup_true_lang-D0U9ILtf.js → BuiSelectItemText.vue_vue_type_script_setup_true_lang-DnGPz6Zk.js} +1 -1
- package/dist/{BuiSelectLabel.vue_vue_type_script_setup_true_lang-MUM65bvR.js → BuiSelectLabel.vue_vue_type_script_setup_true_lang-DScZZcu2.js} +2 -2
- package/dist/{BuiSelectSeparator.vue_vue_type_script_setup_true_lang-DjLn_lp1.js → BuiSelectSeparator.vue_vue_type_script_setup_true_lang-BdOmkbIv.js} +2 -2
- package/dist/{BuiSelectTrigger.vue_vue_type_script_setup_true_lang-BJkBJEle.js → BuiSelectTrigger.vue_vue_type_script_setup_true_lang-B3jcBhnj.js} +3 -3
- package/dist/{BuiSelectValue.vue_vue_type_script_setup_true_lang-Do2Xen84.js → BuiSelectValue.vue_vue_type_script_setup_true_lang-Dj1zDTaG.js} +1 -1
- package/dist/{BuiSeparator.vue_vue_type_script_setup_true_lang-F5dTfJpF.js → BuiSeparator.vue_vue_type_script_setup_true_lang-DdQNHu4h.js} +2 -2
- package/dist/{BuiSlider.vue_vue_type_script_setup_true_lang-CjS-drv8.js → BuiSlider.vue_vue_type_script_setup_true_lang-pzAiX1XP.js} +2 -2
- package/dist/{BuiSwitch.vue_vue_type_script_setup_true_lang-B-j-MmqM.js → BuiSwitch.vue_vue_type_script_setup_true_lang-C9ShckgE.js} +2 -2
- package/dist/{BuiTable.vue_vue_type_script_setup_true_lang-ydsJTL2_.js → BuiTable.vue_vue_type_script_setup_true_lang-DtvBDBVo.js} +3 -3
- package/dist/{BuiTableBody.vue_vue_type_script_setup_true_lang-CqSABM4V.js → BuiTableBody.vue_vue_type_script_setup_true_lang-C8xJ4jmB.js} +1 -1
- package/dist/{BuiTableCaption.vue_vue_type_script_setup_true_lang-2RgypQsL.js → BuiTableCaption.vue_vue_type_script_setup_true_lang-akgSakue.js} +1 -1
- package/dist/{BuiTableCell.vue_vue_type_script_setup_true_lang-CqV-LZXk.js → BuiTableCell.vue_vue_type_script_setup_true_lang-Bg3H27w9.js} +1 -1
- package/dist/{BuiTableEmpty.vue_vue_type_script_setup_true_lang-FRYlAJCo.js → BuiTableEmpty.vue_vue_type_script_setup_true_lang-DdNjsCQp.js} +3 -3
- package/dist/{BuiTableFooter.vue_vue_type_script_setup_true_lang-CTX5ExjQ.js → BuiTableFooter.vue_vue_type_script_setup_true_lang-BBpzOKn2.js} +1 -1
- package/dist/{BuiTableHead.vue_vue_type_script_setup_true_lang-CPErGzH1.js → BuiTableHead.vue_vue_type_script_setup_true_lang-fjU0tzXQ.js} +1 -1
- package/dist/{BuiTableHeader.vue_vue_type_script_setup_true_lang-DTmWyQCZ.js → BuiTableHeader.vue_vue_type_script_setup_true_lang-DPm0jnLo.js} +1 -1
- package/dist/{BuiTableRow.vue_vue_type_script_setup_true_lang-C1OnvnIn.js → BuiTableRow.vue_vue_type_script_setup_true_lang-BtsefcWm.js} +1 -1
- package/dist/{BuiTableRowSubrow.vue_vue_type_script_setup_true_lang-jbdiM4PH.js → BuiTableRowSubrow.vue_vue_type_script_setup_true_lang-o7uq1Evp.js} +4 -4
- package/dist/{BuiTabs.vue_vue_type_script_setup_true_lang-DG5EZdGM.js → BuiTabs.vue_vue_type_script_setup_true_lang-Bx9h7mN7.js} +1 -1
- package/dist/{BuiTabsContent.vue_vue_type_script_setup_true_lang-BwE1MJdJ.js → BuiTabsContent.vue_vue_type_script_setup_true_lang-fhGgOsCb.js} +2 -2
- package/dist/{BuiToastAction.vue_vue_type_script_setup_true_lang-DebhSOF9.js → BuiToastAction.vue_vue_type_script_setup_true_lang-CQdfsCpV.js} +2 -2
- package/dist/{BuiToastClose.vue_vue_type_script_setup_true_lang-D3QZI45z.js → BuiToastClose.vue_vue_type_script_setup_true_lang-DKcinPYL.js} +3 -3
- package/dist/{BuiToastDescription.vue_vue_type_script_setup_true_lang-DqqLkMh6.js → BuiToastDescription.vue_vue_type_script_setup_true_lang-DilPK4c7.js} +2 -2
- package/dist/{BuiToastProvider.vue_vue_type_script_setup_true_lang-CYbeWPdz.js → BuiToastProvider.vue_vue_type_script_setup_true_lang-D6BsFeKl.js} +1 -1
- package/dist/{BuiToastTitle.vue_vue_type_script_setup_true_lang-g0n07wF_.js → BuiToastTitle.vue_vue_type_script_setup_true_lang-DKYb0KDP.js} +2 -2
- package/dist/{BuiToastViewport.vue_vue_type_script_setup_true_lang-B6cN8Zos.js → BuiToastViewport.vue_vue_type_script_setup_true_lang-CNJXlkVy.js} +2 -2
- package/dist/{BuiToggleGroup.vue_vue_type_script_setup_true_lang-BnysnhBH.js → BuiToggleGroup.vue_vue_type_script_setup_true_lang-BVLWma8L.js} +2 -2
- package/dist/{BuiToggleGroupItem.vue_vue_type_script_setup_true_lang-BAJFK0sn.js → BuiToggleGroupItem.vue_vue_type_script_setup_true_lang-CxIsZIZP.js} +2 -2
- package/dist/{BuiTooltip.vue_vue_type_script_setup_true_lang-C22CLrvM.js → BuiTooltip.vue_vue_type_script_setup_true_lang-BUpZD1YF.js} +1 -1
- package/dist/{BuiTooltipContent.vue_vue_type_script_setup_true_lang-DvMKbddv.js → BuiTooltipContent.vue_vue_type_script_setup_true_lang-BlJipdor.js} +2 -2
- package/dist/{BuiTooltipProvider.vue_vue_type_script_setup_true_lang-C_LH0pQ_.js → BuiTooltipProvider.vue_vue_type_script_setup_true_lang-BPhsWP8Y.js} +1 -1
- package/dist/{BuiTooltipTrigger.vue_vue_type_script_setup_true_lang-C6uB9b0L.js → BuiTooltipTrigger.vue_vue_type_script_setup_true_lang-BQG5Ssoc.js} +1 -1
- package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-DHhyJcHN.js → Skeleton.vue_vue_type_script_setup_true_lang-D5EVQxHg.js} +1 -1
- package/dist/assets/main.css +1 -1
- package/dist/{check-BJyCCkUR.js → check-DKcXJk1r.js} +1 -1
- package/dist/{chevron-down-6pQMKeyZ.js → chevron-down-C5w5Vj70.js} +1 -1
- package/dist/{chevron-left-BWfYLWcI.js → chevron-left-BqvZOD-Y.js} +1 -1
- package/dist/{chevron-right-D1IucVwg.js → chevron-right-ZmwmaSAu.js} +1 -1
- package/dist/{circle-DpKO9sPs.js → circle-Da-wgB2G.js} +1 -1
- package/dist/components/ui/accordion/BuiAccordion.js +1 -1
- package/dist/components/ui/accordion/BuiAccordionContent.js +1 -1
- package/dist/components/ui/accordion/BuiAccordionItem.js +1 -1
- package/dist/components/ui/accordion/BuiAccordionTrigger.js +1 -1
- package/dist/components/ui/accordion/index.js +4 -4
- package/dist/components/ui/alert/BuiAlertDescription.js +1 -1
- package/dist/components/ui/alert/BuiAlertTitle.js +1 -1
- package/dist/components/ui/alert/index.js +3 -3
- package/dist/components/ui/alert-dialog/BuiAlertDialog.js +1 -1
- package/dist/components/ui/alert-dialog/BuiAlertDialogAction.js +1 -1
- package/dist/components/ui/alert-dialog/BuiAlertDialogCancel.js +1 -1
- package/dist/components/ui/alert-dialog/BuiAlertDialogContent.js +1 -1
- package/dist/components/ui/alert-dialog/BuiAlertDialogDescription.js +1 -1
- package/dist/components/ui/alert-dialog/BuiAlertDialogFooter.js +1 -1
- package/dist/components/ui/alert-dialog/BuiAlertDialogHeader.js +1 -1
- package/dist/components/ui/alert-dialog/BuiAlertDialogTitle.js +1 -1
- package/dist/components/ui/alert-dialog/BuiAlertDialogTrigger.js +1 -1
- package/dist/components/ui/alert-dialog/index.js +9 -9
- package/dist/components/ui/aspect-ratio/BuiAspectRatio.js +1 -1
- package/dist/components/ui/aspect-ratio/index.js +1 -1
- package/dist/components/ui/auto-form/BuiAutoForm.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoForm.vue.d.ts +90 -0
- package/dist/components/ui/auto-form/BuiAutoFormField.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormField.vue.d.ts +43 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldArray.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldBoolean.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldBoolean.vue.d.ts +36 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldDate.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldDate.vue.d.ts +36 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldEnum.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldEnum.vue.d.ts +40 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldFile.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldFile.vue.d.ts +36 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldInput.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldInput.vue.d.ts +36 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldNumber.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldNumber.vue.d.ts +36 -0
- package/dist/components/ui/auto-form/BuiAutoFormFieldObject.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormLabel.js +4 -0
- package/dist/components/ui/auto-form/BuiAutoFormLabel.vue.d.ts +22 -0
- package/dist/components/ui/auto-form/constant.js +11 -0
- package/dist/components/ui/auto-form/dependencies.d.ts +22 -0
- package/dist/components/ui/auto-form/dependencies.js +60 -0
- package/dist/components/ui/auto-form/index.d.ts +13 -0
- package/dist/components/ui/auto-form/index.js +26 -0
- package/dist/components/ui/auto-form/interface.d.ts +55 -0
- package/dist/components/ui/auto-form/interface.js +4 -0
- package/dist/components/ui/auto-form/utils.d.ts +46 -0
- package/dist/components/ui/auto-form/utils.js +74 -0
- package/dist/components/ui/avatar/BuiAvatarFallback.js +1 -1
- package/dist/components/ui/avatar/BuiAvatarImage.js +1 -1
- package/dist/components/ui/avatar/index.js +4 -4
- package/dist/components/ui/badge/index.js +2 -2
- package/dist/components/ui/button/BuiButton.js +1 -1
- package/dist/components/ui/button/index.js +1 -1
- package/dist/components/ui/calendar/BuiCalendar.js +1 -1
- package/dist/components/ui/calendar/index.js +5 -5
- package/dist/components/ui/card/BuiCard.js +1 -1
- package/dist/components/ui/card/BuiCardContent.js +1 -1
- package/dist/components/ui/card/BuiCardDescription.js +1 -1
- package/dist/components/ui/card/BuiCardFooter.js +1 -1
- package/dist/components/ui/card/BuiCardHeader.js +1 -1
- package/dist/components/ui/card/BuiCardTitle.js +1 -1
- package/dist/components/ui/card/index.js +6 -6
- package/dist/components/ui/checkbox/BuiCheckbox.js +1 -1
- package/dist/components/ui/checkbox/index.js +1 -1
- package/dist/components/ui/collapsible/BuiCollapsible.js +1 -1
- package/dist/components/ui/collapsible/BuiCollapsibleContent.js +1 -1
- package/dist/components/ui/collapsible/BuiCollapsibleTrigger.js +1 -1
- package/dist/components/ui/collapsible/index.js +3 -3
- package/dist/components/ui/command/BuiCommand.js +1 -1
- package/dist/components/ui/command/BuiCommandDialog.js +1 -1
- package/dist/components/ui/command/BuiCommandEmpty.js +1 -1
- package/dist/components/ui/command/BuiCommandGroup.js +1 -1
- package/dist/components/ui/command/BuiCommandInput.js +1 -1
- package/dist/components/ui/command/BuiCommandItem.js +1 -1
- package/dist/components/ui/command/BuiCommandList.js +1 -1
- package/dist/components/ui/command/BuiCommandSeparator.js +1 -1
- package/dist/components/ui/command/BuiCommandShortcut.js +1 -1
- package/dist/components/ui/command/index.js +9 -9
- package/dist/components/ui/context-menu/BuiContextMenu.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuCheckboxItem.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuContent.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuGroup.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuItem.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuLabel.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuPortal.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuRadioGroup.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuRadioItem.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuSeparator.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuShortcut.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuSub.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuSubContent.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuSubTrigger.js +1 -1
- package/dist/components/ui/context-menu/BuiContextMenuTrigger.js +1 -1
- package/dist/components/ui/context-menu/index.js +14 -14
- package/dist/components/ui/dialog/BuiDialog.js +1 -1
- package/dist/components/ui/dialog/BuiDialogClose.js +1 -1
- package/dist/components/ui/dialog/BuiDialogContent.js +1 -1
- package/dist/components/ui/dialog/BuiDialogDescription.js +1 -1
- package/dist/components/ui/dialog/BuiDialogFooter.js +1 -1
- package/dist/components/ui/dialog/BuiDialogHeader.js +1 -1
- package/dist/components/ui/dialog/BuiDialogTitle.js +1 -1
- package/dist/components/ui/dialog/BuiDialogTrigger.js +1 -1
- package/dist/components/ui/dialog/index.js +8 -8
- package/dist/components/ui/dropdown-menu/BuiDropdownMenu.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuCheckboxItem.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuContent.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuGroup.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuItem.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuLabel.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuRadioGroup.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuRadioItem.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuSeparator.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuShortcut.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuSub.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuSubContent.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuSubTrigger.js +1 -1
- package/dist/components/ui/dropdown-menu/BuiDropdownMenuTrigger.js +1 -1
- package/dist/components/ui/dropdown-menu/index.js +15 -15
- package/dist/components/ui/form/BuiFormControl.js +1 -1
- package/dist/components/ui/form/BuiFormDescription.js +1 -1
- package/dist/components/ui/form/BuiFormItem.js +2 -2
- package/dist/components/ui/form/BuiFormLabel.js +1 -1
- package/dist/components/ui/form/BuiFormMessage.js +1 -1
- package/dist/components/ui/form/index.js +6 -6
- package/dist/components/ui/form/useFormField.js +23 -4
- package/dist/components/ui/health/index.js +1 -1
- package/dist/components/ui/hover-card/BuiHoverCard.js +1 -1
- package/dist/components/ui/hover-card/BuiHoverCardContent.js +1 -1
- package/dist/components/ui/hover-card/BuiHoverCardTrigger.js +1 -1
- package/dist/components/ui/hover-card/index.js +3 -3
- package/dist/components/ui/input/index.js +2 -2
- package/dist/components/ui/label/BuiLabel.js +1 -1
- package/dist/components/ui/label/index.js +1 -1
- package/dist/components/ui/pagination/BuiPaginationCommon.js +1 -1
- package/dist/components/ui/pagination/BuiPaginationEllipsis.js +1 -1
- package/dist/components/ui/pagination/BuiPaginationFirst.js +1 -1
- package/dist/components/ui/pagination/BuiPaginationLast.js +1 -1
- package/dist/components/ui/pagination/BuiPaginationNext.js +1 -1
- package/dist/components/ui/pagination/BuiPaginationPrev.js +1 -1
- package/dist/components/ui/pagination/index.js +7 -7
- package/dist/components/ui/popover/BuiPopover.js +1 -1
- package/dist/components/ui/popover/BuiPopoverContent.js +1 -1
- package/dist/components/ui/popover/BuiPopoverTrigger.js +1 -1
- package/dist/components/ui/popover/index.js +3 -3
- package/dist/components/ui/progress/index.js +2 -2
- package/dist/components/ui/radio-group/BuiRadioGroup.js +1 -1
- package/dist/components/ui/radio-group/BuiRadioGroupItem.js +1 -1
- package/dist/components/ui/radio-group/index.js +2 -2
- package/dist/components/ui/scroll-area/BuiScrollArea.js +1 -1
- package/dist/components/ui/scroll-area/BuiScrollBar.js +1 -1
- package/dist/components/ui/scroll-area/index.js +2 -2
- package/dist/components/ui/select/Bui.js +2 -2
- package/dist/components/ui/select/Bui.vue.d.ts +1 -1
- package/dist/components/ui/select/BuiSelect.js +1 -1
- package/dist/components/ui/select/BuiSelectContent.js +1 -1
- package/dist/components/ui/select/BuiSelectContent.vue.d.ts +1 -1
- package/dist/components/ui/select/BuiSelectGroup.js +1 -1
- package/dist/components/ui/select/BuiSelectItem.js +1 -1
- package/dist/components/ui/select/BuiSelectItemText.js +1 -1
- package/dist/components/ui/select/BuiSelectLabel.js +1 -1
- package/dist/components/ui/select/BuiSelectSeparator.js +1 -1
- package/dist/components/ui/select/BuiSelectTrigger.js +1 -1
- package/dist/components/ui/select/BuiSelectValue.js +1 -1
- package/dist/components/ui/select/index.js +9 -9
- package/dist/components/ui/separator/BuiSeparator.js +1 -1
- package/dist/components/ui/separator/index.js +1 -1
- package/dist/components/ui/skeleton/Skeleton.js +1 -1
- package/dist/components/ui/skeleton/index.js +1 -1
- package/dist/components/ui/slider/BuiSlider.js +1 -1
- package/dist/components/ui/slider/index.js +1 -1
- package/dist/components/ui/switch/BuiSwitch.js +1 -1
- package/dist/components/ui/switch/index.js +1 -1
- package/dist/components/ui/table/BuiDataTable.js +1 -1
- package/dist/components/ui/table/BuiTable.js +1 -1
- package/dist/components/ui/table/BuiTableBody.js +1 -1
- package/dist/components/ui/table/BuiTableCaption.js +1 -1
- package/dist/components/ui/table/BuiTableCell.js +1 -1
- package/dist/components/ui/table/BuiTableEmpty.js +1 -1
- package/dist/components/ui/table/BuiTableFooter.js +1 -1
- package/dist/components/ui/table/BuiTableHead.js +1 -1
- package/dist/components/ui/table/BuiTableHeader.js +1 -1
- package/dist/components/ui/table/BuiTableRow.js +1 -1
- package/dist/components/ui/table/BuiTableRowSubrow.js +1 -1
- package/dist/components/ui/table/index.js +11 -11
- package/dist/components/ui/tabs/BuiTabs.js +1 -1
- package/dist/components/ui/tabs/BuiTabsContent.js +1 -1
- package/dist/components/ui/tabs/index.js +10 -10
- package/dist/components/ui/textarea/index.js +2 -2
- package/dist/components/ui/toast/BuiToastAction.js +1 -1
- package/dist/components/ui/toast/BuiToastClose.js +1 -1
- package/dist/components/ui/toast/BuiToastDescription.js +1 -1
- package/dist/components/ui/toast/BuiToastProvider.js +1 -1
- package/dist/components/ui/toast/BuiToastTitle.js +1 -1
- package/dist/components/ui/toast/BuiToastViewport.js +1 -1
- package/dist/components/ui/toast/index.js +12 -12
- package/dist/components/ui/toggle/index.js +2 -2
- package/dist/components/ui/toggle-group/BuiToggleGroup.js +1 -1
- package/dist/components/ui/toggle-group/BuiToggleGroupItem.js +1 -1
- package/dist/components/ui/toggle-group/index.js +2 -2
- package/dist/components/ui/tooltip/BuiTooltip.js +1 -1
- package/dist/components/ui/tooltip/BuiTooltipContent.js +1 -1
- package/dist/components/ui/tooltip/BuiTooltipProvider.js +1 -1
- package/dist/components/ui/tooltip/BuiTooltipTrigger.js +1 -1
- package/dist/components/ui/tooltip/index.js +4 -4
- package/dist/{index-D3xpR8yT.js → index-BX_xuhSi.js} +1928 -1910
- package/dist/{index-DlKyQJKc.js → index-DBFwX7-c.js} +41 -41
- package/dist/index.js +137 -137
- package/dist/lib/utils.js +1 -1
- package/dist/{utils-DsnHoeYK.js → utils-BNc3Bzhq.js} +1 -1
- package/dist/{useFormField-BSPc2uBO.js → vee-validate.esm-BSPEJ8Vl.js} +440 -442
- package/dist/{x-CQ03t7ul.js → x-qxSNtB0B.js} +1 -1
- package/package.json +4 -3
- package/src/components/stories/BuiAutoForm.story.vue +98 -0
- package/src/components/ui/auto-form/BuiAutoForm.vue +109 -0
- package/src/components/ui/auto-form/BuiAutoFormField.vue +45 -0
- package/src/components/ui/auto-form/BuiAutoFormFieldArray.vue +105 -0
- package/src/components/ui/auto-form/BuiAutoFormFieldBoolean.vue +47 -0
- package/src/components/ui/auto-form/BuiAutoFormFieldDate.vue +73 -0
- package/src/components/ui/auto-form/BuiAutoFormFieldEnum.vue +75 -0
- package/src/components/ui/auto-form/BuiAutoFormFieldFile.vue +87 -0
- package/src/components/ui/auto-form/BuiAutoFormFieldInput.vue +42 -0
- package/src/components/ui/auto-form/BuiAutoFormFieldNumber.vue +42 -0
- package/src/components/ui/auto-form/BuiAutoFormFieldObject.vue +81 -0
- package/src/components/ui/auto-form/BuiAutoFormLabel.vue +14 -0
- package/src/components/ui/auto-form/constant.ts +39 -0
- package/src/components/ui/auto-form/dependencies.ts +95 -0
- package/src/components/ui/auto-form/index.ts +15 -0
- package/src/components/ui/auto-form/interface.ts +81 -0
- package/src/components/ui/auto-form/utils.ts +171 -0
- package/dist/BuiFormDescription.vue_vue_type_script_setup_true_lang-C8R2LDkW.js +0 -19
- package/dist/BuiFormMessage.vue_vue_type_script_setup_true_lang-B3zF0X2U.js +0 -17
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@soft-stech/bootsman-ui-shadcn",
|
3
|
-
"version": "1.1.
|
3
|
+
"version": "1.1.37",
|
4
4
|
"type": "module",
|
5
5
|
"files": [
|
6
6
|
"dist",
|
@@ -15,6 +15,7 @@
|
|
15
15
|
"url": "https://github.com/soft-stech/bootsman-ui-shadcn"
|
16
16
|
},
|
17
17
|
"dependencies": {
|
18
|
+
"@internationalized/date": "^3.5.5",
|
18
19
|
"@tanstack/vue-table": "8.16.0",
|
19
20
|
"@vee-validate/zod": "4.13.1",
|
20
21
|
"@vueuse/core": "10.9.0",
|
@@ -50,6 +51,7 @@
|
|
50
51
|
"glob": "10.3.12",
|
51
52
|
"histoire": "0.17.17",
|
52
53
|
"jsdom": "23.2.0",
|
54
|
+
"mlly": "1.4.2",
|
53
55
|
"npm-run-all2": "6.1.2",
|
54
56
|
"postcss": "8.4.38",
|
55
57
|
"prettier": "3.2.5",
|
@@ -59,8 +61,7 @@
|
|
59
61
|
"vite": "5.2.11",
|
60
62
|
"vite-plugin-dts": "3.9.0",
|
61
63
|
"vitest": "1.5.3",
|
62
|
-
"vue-tsc": "2.0.16"
|
63
|
-
"mlly": "1.4.2"
|
64
|
+
"vue-tsc": "2.0.16"
|
64
65
|
},
|
65
66
|
"scripts": {
|
66
67
|
"build": "run-p type-check \"build-only {@}\" --",
|
@@ -0,0 +1,98 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import { BuiAutoForm } from '@/components/ui/auto-form'
|
3
|
+
import { z } from 'zod'
|
4
|
+
import { ref } from 'vue'
|
5
|
+
import { useBuiForm } from '@/components/ui/form'
|
6
|
+
import { toTypedSchema } from '@vee-validate/zod'
|
7
|
+
|
8
|
+
enum Sports {
|
9
|
+
Football = 'Football/Soccer',
|
10
|
+
Basketball = 'Basketball',
|
11
|
+
Baseball = 'Baseball',
|
12
|
+
Hockey = 'Hockey (Ice)',
|
13
|
+
None = "I don't like sports"
|
14
|
+
}
|
15
|
+
|
16
|
+
const schema = z.object({
|
17
|
+
addons: z.array(
|
18
|
+
z
|
19
|
+
.object({
|
20
|
+
type: z.nativeEnum(Sports),
|
21
|
+
name: z.string().min(1),
|
22
|
+
email: z.string().email()
|
23
|
+
})
|
24
|
+
.describe('Addon')
|
25
|
+
),
|
26
|
+
username: z
|
27
|
+
.string({
|
28
|
+
required_error: 'Username is required.'
|
29
|
+
})
|
30
|
+
.min(2, {
|
31
|
+
message: 'Username must be at least 2 characters.'
|
32
|
+
}),
|
33
|
+
|
34
|
+
password: z
|
35
|
+
.string({
|
36
|
+
required_error: 'Password is required.'
|
37
|
+
})
|
38
|
+
.min(8, {
|
39
|
+
message: 'Password must be at least 8 characters.'
|
40
|
+
}),
|
41
|
+
|
42
|
+
favouriteNumber: z.coerce
|
43
|
+
.number({
|
44
|
+
invalid_type_error: 'Favourite number must be a number.'
|
45
|
+
})
|
46
|
+
.min(1, {
|
47
|
+
message: 'Favourite number must be at least 1.'
|
48
|
+
})
|
49
|
+
.max(10, {
|
50
|
+
message: 'Favourite number must be at most 10.'
|
51
|
+
})
|
52
|
+
.default(1)
|
53
|
+
.optional(),
|
54
|
+
|
55
|
+
acceptTerms: z.boolean().refine((value) => value, {
|
56
|
+
message: 'You must accept the terms and conditions.',
|
57
|
+
path: ['acceptTerms']
|
58
|
+
}),
|
59
|
+
|
60
|
+
sendMeMails: z.boolean().optional(),
|
61
|
+
|
62
|
+
birthday: z.coerce.date().optional(),
|
63
|
+
|
64
|
+
color: z.enum(['red', 'green', 'blue']).optional(),
|
65
|
+
|
66
|
+
// Another enum example
|
67
|
+
marshmallows: z.enum(['not many', 'a few', 'a lot', 'too many']),
|
68
|
+
|
69
|
+
// Native enum example
|
70
|
+
sports: z.nativeEnum(Sports).describe('What is your favourite sport?'),
|
71
|
+
|
72
|
+
bio: z
|
73
|
+
.string()
|
74
|
+
.min(10, {
|
75
|
+
message: 'Bio must be at least 10 characters.'
|
76
|
+
})
|
77
|
+
.max(160, {
|
78
|
+
message: 'Bio must not be longer than 30 characters.'
|
79
|
+
})
|
80
|
+
.optional(),
|
81
|
+
|
82
|
+
customParent: z.string().optional(),
|
83
|
+
|
84
|
+
file: z.string().optional()
|
85
|
+
})
|
86
|
+
|
87
|
+
const form = useBuiForm({
|
88
|
+
validationSchema: toTypedSchema(schema)
|
89
|
+
})
|
90
|
+
</script>
|
91
|
+
|
92
|
+
<template>
|
93
|
+
<Story title="BuiAutoForm" autoPropsDisabled :layout="{ type: 'grid', width: '100%' }">
|
94
|
+
<Variant title="Default">
|
95
|
+
<BuiAutoForm :schema="schema" :form="form" class="m-4" />
|
96
|
+
</Variant>
|
97
|
+
</Story>
|
98
|
+
</template>
|
@@ -0,0 +1,109 @@
|
|
1
|
+
<script setup lang="ts" generic="T extends ZodObjectOrWrapped">
|
2
|
+
import { computed, toRefs } from 'vue'
|
3
|
+
import type { ZodAny, z } from 'zod'
|
4
|
+
import { toTypedSchema } from '@vee-validate/zod'
|
5
|
+
import type { FormContext, GenericObject } from 'vee-validate'
|
6
|
+
import {
|
7
|
+
type ZodObjectOrWrapped,
|
8
|
+
getBaseSchema,
|
9
|
+
getBaseType,
|
10
|
+
getDefaultValueInZodStack,
|
11
|
+
getObjectFormSchema
|
12
|
+
} from './utils'
|
13
|
+
import type { Config, ConfigItem, Dependency, Shape } from './interface'
|
14
|
+
import AutoFormField from './BuiAutoFormField.vue'
|
15
|
+
import { provideDependencies } from './dependencies'
|
16
|
+
import { BuiForm as Form } from '@/components/ui/form'
|
17
|
+
|
18
|
+
const props = defineProps<{
|
19
|
+
schema: T
|
20
|
+
form?: FormContext<GenericObject>
|
21
|
+
fieldConfig?: Config<z.infer<T>>
|
22
|
+
dependencies?: Dependency<z.infer<T>>[]
|
23
|
+
}>()
|
24
|
+
|
25
|
+
const emits = defineEmits<{
|
26
|
+
submit: [event: z.infer<T>]
|
27
|
+
}>()
|
28
|
+
|
29
|
+
const { dependencies } = toRefs(props)
|
30
|
+
provideDependencies(dependencies)
|
31
|
+
|
32
|
+
const shapes = computed(() => {
|
33
|
+
// @ts-expect-error ignore {} not assignable to object
|
34
|
+
const val: { [key in keyof T]: Shape } = {}
|
35
|
+
const baseSchema = getObjectFormSchema(props.schema)
|
36
|
+
const shape = baseSchema.shape
|
37
|
+
Object.keys(shape).forEach((name) => {
|
38
|
+
const item = shape[name] as ZodAny
|
39
|
+
const baseItem = getBaseSchema(item) as ZodAny
|
40
|
+
let options =
|
41
|
+
baseItem && 'values' in baseItem._def ? (baseItem._def.values as string[]) : undefined
|
42
|
+
if (!Array.isArray(options) && typeof options === 'object') options = Object.values(options)
|
43
|
+
|
44
|
+
val[name as keyof T] = {
|
45
|
+
type: getBaseType(item),
|
46
|
+
default: getDefaultValueInZodStack(item),
|
47
|
+
options,
|
48
|
+
required: !['ZodOptional', 'ZodNullable'].includes(item._def.typeName),
|
49
|
+
schema: baseItem
|
50
|
+
}
|
51
|
+
})
|
52
|
+
return val
|
53
|
+
})
|
54
|
+
|
55
|
+
const fields = computed(() => {
|
56
|
+
// @ts-expect-error ignore {} not assignable to object
|
57
|
+
const val: {
|
58
|
+
[key in keyof z.infer<T>]: { shape: Shape; fieldName: string; config: ConfigItem }
|
59
|
+
} = {}
|
60
|
+
for (const key in shapes.value) {
|
61
|
+
const shape = shapes.value[key]
|
62
|
+
val[key as keyof z.infer<T>] = {
|
63
|
+
shape,
|
64
|
+
config: props.fieldConfig?.[key] as ConfigItem,
|
65
|
+
fieldName: key
|
66
|
+
}
|
67
|
+
}
|
68
|
+
return val
|
69
|
+
})
|
70
|
+
|
71
|
+
const formComponent = computed(() => (props.form ? 'form' : Form))
|
72
|
+
const formComponentProps = computed(() => {
|
73
|
+
if (props.form) {
|
74
|
+
return {
|
75
|
+
onSubmit: props.form.handleSubmit((val) => emits('submit', val))
|
76
|
+
}
|
77
|
+
} else {
|
78
|
+
const formSchema = toTypedSchema(props.schema)
|
79
|
+
return {
|
80
|
+
keepValues: true,
|
81
|
+
validationSchema: formSchema,
|
82
|
+
onSubmit: (val: GenericObject) => emits('submit', val)
|
83
|
+
}
|
84
|
+
}
|
85
|
+
})
|
86
|
+
</script>
|
87
|
+
|
88
|
+
<template>
|
89
|
+
<component :is="formComponent" v-bind="formComponentProps">
|
90
|
+
<slot name="customAutoForm" :fields="fields">
|
91
|
+
<template v-for="(shape, key) of shapes" :key="key">
|
92
|
+
<slot
|
93
|
+
:shape="shape"
|
94
|
+
:name="key.toString() as keyof z.infer<T>"
|
95
|
+
:field-name="key.toString()"
|
96
|
+
:config="fieldConfig?.[key as keyof typeof fieldConfig] as ConfigItem"
|
97
|
+
>
|
98
|
+
<AutoFormField
|
99
|
+
:config="fieldConfig?.[key as keyof typeof fieldConfig] as ConfigItem"
|
100
|
+
:field-name="key.toString()"
|
101
|
+
:shape="shape"
|
102
|
+
/>
|
103
|
+
</slot>
|
104
|
+
</template>
|
105
|
+
</slot>
|
106
|
+
|
107
|
+
<slot :shapes="shapes" />
|
108
|
+
</component>
|
109
|
+
</template>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<script setup lang="ts" generic="U extends ZodAny">
|
2
|
+
import type { ZodAny } from 'zod'
|
3
|
+
import { computed } from 'vue'
|
4
|
+
import type { Config, ConfigItem, Shape } from './interface'
|
5
|
+
import { DEFAULT_ZOD_HANDLERS, INPUT_COMPONENTS } from './constant'
|
6
|
+
import useDependencies from './dependencies'
|
7
|
+
|
8
|
+
const props = defineProps<{
|
9
|
+
fieldName: string
|
10
|
+
shape: Shape
|
11
|
+
config?: ConfigItem | Config<U>
|
12
|
+
}>()
|
13
|
+
|
14
|
+
function isValidConfig(config: any): config is ConfigItem {
|
15
|
+
return !!config?.component
|
16
|
+
}
|
17
|
+
|
18
|
+
const delegatedProps = computed(() => {
|
19
|
+
if (['ZodObject', 'ZodArray'].includes(props.shape?.type))
|
20
|
+
return { schema: props.shape?.schema }
|
21
|
+
return undefined
|
22
|
+
})
|
23
|
+
|
24
|
+
const { isDisabled, isHidden, isRequired, overrideOptions } = useDependencies(props.fieldName)
|
25
|
+
</script>
|
26
|
+
|
27
|
+
<template>
|
28
|
+
<component
|
29
|
+
:is="isValidConfig(config)
|
30
|
+
? typeof config.component === 'string'
|
31
|
+
? INPUT_COMPONENTS[config.component!]
|
32
|
+
: config.component
|
33
|
+
: INPUT_COMPONENTS[DEFAULT_ZOD_HANDLERS[shape.type]] "
|
34
|
+
v-if="!isHidden"
|
35
|
+
:field-name="fieldName"
|
36
|
+
:label="shape.schema?.description"
|
37
|
+
:required="isRequired || shape.required"
|
38
|
+
:options="overrideOptions || shape.options"
|
39
|
+
:disabled="isDisabled"
|
40
|
+
:config="config"
|
41
|
+
v-bind="delegatedProps"
|
42
|
+
>
|
43
|
+
<slot />
|
44
|
+
</component>
|
45
|
+
</template>
|
@@ -0,0 +1,105 @@
|
|
1
|
+
<script setup lang="ts" generic="T extends z.ZodAny">
|
2
|
+
import * as z from 'zod'
|
3
|
+
import { computed, provide } from 'vue'
|
4
|
+
import { PlusIcon, TrashIcon } from 'lucide-vue-next'
|
5
|
+
import { FieldArray, FieldContextKey, useField } from 'vee-validate'
|
6
|
+
import type { Config, ConfigItem } from './interface'
|
7
|
+
import { beautifyObjectName, getBaseType } from './utils'
|
8
|
+
import AutoFormField from './BuiAutoFormField.vue'
|
9
|
+
import AutoFormLabel from './BuiAutoFormLabel.vue'
|
10
|
+
import {
|
11
|
+
BuiAccordion as Accordion,
|
12
|
+
BuiAccordionContent as AccordionContent,
|
13
|
+
BuiAccordionItem as AccordionItem,
|
14
|
+
BuiAccordionTrigger as AccordionTrigger
|
15
|
+
} from '@/components/ui/accordion'
|
16
|
+
import { BuiButton as Button } from '@/components/ui/button'
|
17
|
+
import { BuiSeparator as Separator } from '@/components/ui/separator'
|
18
|
+
import { BuiFormItem as FormItem, BuiFormMessage as FormMessage } from '@/components/ui/form'
|
19
|
+
|
20
|
+
const props = defineProps<{
|
21
|
+
fieldName: string
|
22
|
+
required?: boolean
|
23
|
+
config?: Config<T>
|
24
|
+
schema?: z.ZodArray<T>
|
25
|
+
disabled?: boolean
|
26
|
+
}>()
|
27
|
+
|
28
|
+
function isZodArray(item: z.ZodArray<any> | z.ZodDefault<any>): item is z.ZodArray<any> {
|
29
|
+
return item instanceof z.ZodArray
|
30
|
+
}
|
31
|
+
|
32
|
+
function isZodDefault(item: z.ZodArray<any> | z.ZodDefault<any>): item is z.ZodDefault<any> {
|
33
|
+
return item instanceof z.ZodDefault
|
34
|
+
}
|
35
|
+
|
36
|
+
const itemShape = computed(() => {
|
37
|
+
if (!props.schema) return
|
38
|
+
|
39
|
+
const schema: z.ZodAny = isZodArray(props.schema)
|
40
|
+
? props.schema._def.type
|
41
|
+
: isZodDefault(props.schema)
|
42
|
+
? // @ts-expect-error missing schema
|
43
|
+
props.schema._def.innerType._def.type
|
44
|
+
: null
|
45
|
+
|
46
|
+
return {
|
47
|
+
type: getBaseType(schema),
|
48
|
+
schema
|
49
|
+
}
|
50
|
+
})
|
51
|
+
|
52
|
+
const fieldContext = useField(props.fieldName)
|
53
|
+
// @ts-expect-error ignore missing `id`
|
54
|
+
provide(FieldContextKey, fieldContext)
|
55
|
+
</script>
|
56
|
+
|
57
|
+
<template>
|
58
|
+
<FieldArray v-slot="{ fields, remove, push }" as="section" :name="fieldName">
|
59
|
+
<slot v-bind="props">
|
60
|
+
<Accordion type="multiple" class="w-full" collapsible :disabled="disabled" as-child>
|
61
|
+
<FormItem>
|
62
|
+
<AccordionItem :value="fieldName" class="border-none">
|
63
|
+
<AccordionTrigger>
|
64
|
+
<AutoFormLabel class="text-base" :required="required">
|
65
|
+
{{ schema?.description || beautifyObjectName(fieldName) }}
|
66
|
+
</AutoFormLabel>
|
67
|
+
</AccordionTrigger>
|
68
|
+
|
69
|
+
<AccordionContent>
|
70
|
+
<template v-for="(field, index) of fields" :key="field.key">
|
71
|
+
<div class="mb-4 p-1">
|
72
|
+
<AutoFormField
|
73
|
+
:field-name="`${fieldName}[${index}]`"
|
74
|
+
:label="fieldName"
|
75
|
+
:shape="itemShape!"
|
76
|
+
:config="config as ConfigItem"
|
77
|
+
/>
|
78
|
+
|
79
|
+
<div class="!my-4 flex justify-end">
|
80
|
+
<Button type="button" size="icon" variant="secondary" @click="remove(index)">
|
81
|
+
<TrashIcon :size="16" />
|
82
|
+
</Button>
|
83
|
+
</div>
|
84
|
+
<Separator v-if="!field.isLast" />
|
85
|
+
</div>
|
86
|
+
</template>
|
87
|
+
|
88
|
+
<Button
|
89
|
+
type="button"
|
90
|
+
variant="secondary"
|
91
|
+
class="mt-4 flex items-center"
|
92
|
+
@click="push(null)"
|
93
|
+
>
|
94
|
+
<PlusIcon class="mr-2" :size="16" />
|
95
|
+
Add
|
96
|
+
</Button>
|
97
|
+
</AccordionContent>
|
98
|
+
|
99
|
+
<FormMessage />
|
100
|
+
</AccordionItem>
|
101
|
+
</FormItem>
|
102
|
+
</Accordion>
|
103
|
+
</slot>
|
104
|
+
</FieldArray>
|
105
|
+
</template>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import { computed } from 'vue'
|
3
|
+
import { beautifyObjectName } from './utils'
|
4
|
+
import type { FieldProps } from './interface'
|
5
|
+
import AutoFormLabel from './BuiAutoFormLabel.vue'
|
6
|
+
import {
|
7
|
+
BuiFormControl as FormControl,
|
8
|
+
BuiFormDescription as FormDescription,
|
9
|
+
BuiFormField as FormField,
|
10
|
+
BuiFormItem as FormItem,
|
11
|
+
BuiFormMessage as FormMessage
|
12
|
+
} from '@/components/ui/form'
|
13
|
+
import { BuiSwitch as Switch } from '@/components/ui/switch'
|
14
|
+
import { BuiCheckbox as Checkbox } from '@/components/ui/checkbox'
|
15
|
+
|
16
|
+
const props = defineProps<FieldProps>()
|
17
|
+
|
18
|
+
const booleanComponent = computed(() => (props.config?.component === 'switch' ? Switch : Checkbox))
|
19
|
+
</script>
|
20
|
+
|
21
|
+
<template>
|
22
|
+
<FormField v-slot="slotProps" :name="fieldName">
|
23
|
+
<FormItem>
|
24
|
+
<div class="mb-3 flex items-center gap-3 space-y-0">
|
25
|
+
<FormControl>
|
26
|
+
<slot v-bind="slotProps">
|
27
|
+
<component
|
28
|
+
:is="booleanComponent"
|
29
|
+
v-bind="{ ...slotProps.componentField }"
|
30
|
+
:disabled="disabled"
|
31
|
+
:checked="slotProps.componentField.modelValue"
|
32
|
+
@update:checked="slotProps.componentField['onUpdate:modelValue']"
|
33
|
+
/>
|
34
|
+
</slot>
|
35
|
+
</FormControl>
|
36
|
+
<AutoFormLabel v-if="!config?.hideLabel" :required="required">
|
37
|
+
{{ config?.label || beautifyObjectName(label ?? fieldName) }}
|
38
|
+
</AutoFormLabel>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<FormDescription v-if="config?.description">
|
42
|
+
{{ config.description }}
|
43
|
+
</FormDescription>
|
44
|
+
<FormMessage />
|
45
|
+
</FormItem>
|
46
|
+
</FormField>
|
47
|
+
</template>
|
@@ -0,0 +1,73 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import { DateFormatter, getLocalTimeZone } from '@internationalized/date'
|
3
|
+
import { CalendarIcon } from 'lucide-vue-next'
|
4
|
+
import { beautifyObjectName } from './utils'
|
5
|
+
import AutoFormLabel from './BuiAutoFormLabel.vue'
|
6
|
+
import type { FieldProps } from './interface'
|
7
|
+
import {
|
8
|
+
BuiFormControl as FormControl,
|
9
|
+
BuiFormDescription as FormDescription,
|
10
|
+
BuiFormField as FormField,
|
11
|
+
BuiFormItem as FormItem,
|
12
|
+
BuiFormMessage as FormMessage
|
13
|
+
} from '@/components/ui/form'
|
14
|
+
|
15
|
+
import { BuiCalendar as Calendar } from '@/components/ui/calendar'
|
16
|
+
import { BuiButton as Button } from '@/components/ui/button'
|
17
|
+
import {
|
18
|
+
BuiPopover as Popover,
|
19
|
+
BuiPopoverContent as PopoverContent,
|
20
|
+
BuiPopoverTrigger as PopoverTrigger
|
21
|
+
} from '@/components/ui/popover'
|
22
|
+
import { cn } from '@/lib/utils'
|
23
|
+
|
24
|
+
defineProps<FieldProps>()
|
25
|
+
|
26
|
+
const df = new DateFormatter('en-US', {
|
27
|
+
dateStyle: 'long'
|
28
|
+
})
|
29
|
+
</script>
|
30
|
+
|
31
|
+
<template>
|
32
|
+
<FormField v-slot="slotProps" :name="fieldName">
|
33
|
+
<FormItem>
|
34
|
+
<AutoFormLabel v-if="!config?.hideLabel" :required="required">
|
35
|
+
{{ config?.label || beautifyObjectName(label ?? fieldName) }}
|
36
|
+
</AutoFormLabel>
|
37
|
+
<FormControl>
|
38
|
+
<slot v-bind="slotProps">
|
39
|
+
<div>
|
40
|
+
<Popover>
|
41
|
+
<PopoverTrigger as-child :disabled="disabled">
|
42
|
+
<Button
|
43
|
+
variant="outline"
|
44
|
+
:class="
|
45
|
+
cn(
|
46
|
+
'w-full justify-start text-left font-normal',
|
47
|
+
!slotProps.componentField.modelValue && 'text-muted-foreground'
|
48
|
+
)
|
49
|
+
"
|
50
|
+
>
|
51
|
+
<CalendarIcon class="mr-2 h-4 w-4" :size="16" />
|
52
|
+
{{
|
53
|
+
slotProps.componentField.modelValue
|
54
|
+
? df.format(slotProps.componentField.modelValue.toDate(getLocalTimeZone()))
|
55
|
+
: 'Pick a date'
|
56
|
+
}}
|
57
|
+
</Button>
|
58
|
+
</PopoverTrigger>
|
59
|
+
<PopoverContent class="w-auto p-0">
|
60
|
+
<Calendar initial-focus v-bind="slotProps.componentField" />
|
61
|
+
</PopoverContent>
|
62
|
+
</Popover>
|
63
|
+
</div>
|
64
|
+
</slot>
|
65
|
+
</FormControl>
|
66
|
+
|
67
|
+
<FormDescription v-if="config?.description">
|
68
|
+
{{ config.description }}
|
69
|
+
</FormDescription>
|
70
|
+
<FormMessage />
|
71
|
+
</FormItem>
|
72
|
+
</FormField>
|
73
|
+
</template>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import AutoFormLabel from './BuiAutoFormLabel.vue'
|
3
|
+
import { beautifyObjectName } from './utils'
|
4
|
+
import type { FieldProps } from './interface'
|
5
|
+
import {
|
6
|
+
BuiFormControl as FormControl,
|
7
|
+
BuiFormDescription as FormDescription,
|
8
|
+
BuiFormField as FormField,
|
9
|
+
BuiFormItem as FormItem,
|
10
|
+
BuiFormMessage as FormMessage
|
11
|
+
} from '@/components/ui/form'
|
12
|
+
import {
|
13
|
+
BuiSelect as Select,
|
14
|
+
BuiSelectContent as SelectContent,
|
15
|
+
BuiSelectItem as SelectItem,
|
16
|
+
BuiSelectTrigger as SelectTrigger,
|
17
|
+
BuiSelectValue as SelectValue
|
18
|
+
} from '@/components/ui/select'
|
19
|
+
import { BuiLabel as Label } from '@/components/ui/label'
|
20
|
+
import {
|
21
|
+
BuiRadioGroup as RadioGroup,
|
22
|
+
BuiRadioGroupItem as RadioGroupItem
|
23
|
+
} from '@/components/ui/radio-group'
|
24
|
+
|
25
|
+
defineProps<
|
26
|
+
FieldProps & {
|
27
|
+
options?: string[]
|
28
|
+
}
|
29
|
+
>()
|
30
|
+
</script>
|
31
|
+
|
32
|
+
<template>
|
33
|
+
<FormField v-slot="slotProps" :name="fieldName">
|
34
|
+
<FormItem>
|
35
|
+
<AutoFormLabel v-if="!config?.hideLabel" :required="required">
|
36
|
+
{{ config?.label || beautifyObjectName(label ?? fieldName) }}
|
37
|
+
</AutoFormLabel>
|
38
|
+
<FormControl>
|
39
|
+
<slot v-bind="slotProps">
|
40
|
+
<RadioGroup
|
41
|
+
v-if="config?.component === 'radio'"
|
42
|
+
:disabled="disabled"
|
43
|
+
:orientation="'vertical'"
|
44
|
+
v-bind="{ ...slotProps.componentField }"
|
45
|
+
>
|
46
|
+
<div
|
47
|
+
v-for="(option, index) in options"
|
48
|
+
:key="option"
|
49
|
+
class="mb-2 flex items-center gap-3 space-y-0"
|
50
|
+
>
|
51
|
+
<RadioGroupItem :id="`${option}-${index}`" :value="option" />
|
52
|
+
<Label :for="`${option}-${index}`">{{ beautifyObjectName(option) }}</Label>
|
53
|
+
</div>
|
54
|
+
</RadioGroup>
|
55
|
+
|
56
|
+
<Select v-else :disabled="disabled" v-bind="{ ...slotProps.componentField }">
|
57
|
+
<SelectTrigger class="w-full">
|
58
|
+
<SelectValue :placeholder="config?.inputProps?.placeholder" />
|
59
|
+
</SelectTrigger>
|
60
|
+
<SelectContent>
|
61
|
+
<SelectItem v-for="option in options" :key="option" :value="option">
|
62
|
+
{{ beautifyObjectName(option) }}
|
63
|
+
</SelectItem>
|
64
|
+
</SelectContent>
|
65
|
+
</Select>
|
66
|
+
</slot>
|
67
|
+
</FormControl>
|
68
|
+
|
69
|
+
<FormDescription v-if="config?.description">
|
70
|
+
{{ config.description }}
|
71
|
+
</FormDescription>
|
72
|
+
<FormMessage />
|
73
|
+
</FormItem>
|
74
|
+
</FormField>
|
75
|
+
</template>
|
@@ -0,0 +1,87 @@
|
|
1
|
+
<script setup lang="ts">
|
2
|
+
import { ref } from 'vue'
|
3
|
+
import { TrashIcon } from 'lucide-vue-next'
|
4
|
+
import AutoFormLabel from './BuiAutoFormLabel.vue'
|
5
|
+
import { beautifyObjectName } from './utils'
|
6
|
+
import type { FieldProps } from './interface'
|
7
|
+
import {
|
8
|
+
BuiFormControl as FormControl,
|
9
|
+
BuiFormDescription as FormDescription,
|
10
|
+
BuiFormField as FormField,
|
11
|
+
BuiFormItem as FormItem,
|
12
|
+
BuiFormMessage as FormMessage
|
13
|
+
} from '@/components/ui/form'
|
14
|
+
import { BuiInput as Input } from '@/components/ui/input'
|
15
|
+
import { BuiButton as Button } from '@/components/ui/button'
|
16
|
+
|
17
|
+
defineProps<FieldProps>()
|
18
|
+
|
19
|
+
const inputFile = ref<File>()
|
20
|
+
async function parseFileAsString(file: File | undefined): Promise<string> {
|
21
|
+
return new Promise((resolve, reject) => {
|
22
|
+
if (file) {
|
23
|
+
const reader = new FileReader()
|
24
|
+
reader.onloadend = () => {
|
25
|
+
resolve(reader.result as string)
|
26
|
+
}
|
27
|
+
reader.onerror = (err) => {
|
28
|
+
reject(err)
|
29
|
+
}
|
30
|
+
reader.readAsDataURL(file)
|
31
|
+
}
|
32
|
+
})
|
33
|
+
}
|
34
|
+
</script>
|
35
|
+
|
36
|
+
<template>
|
37
|
+
<FormField v-slot="slotProps" :name="fieldName">
|
38
|
+
<FormItem v-bind="$attrs">
|
39
|
+
<AutoFormLabel v-if="!config?.hideLabel" :required="required">
|
40
|
+
{{ config?.label || beautifyObjectName(label ?? fieldName) }}
|
41
|
+
</AutoFormLabel>
|
42
|
+
<FormControl>
|
43
|
+
<slot v-bind="slotProps">
|
44
|
+
<Input
|
45
|
+
v-if="!inputFile"
|
46
|
+
type="file"
|
47
|
+
v-bind="{ ...config?.inputProps }"
|
48
|
+
:disabled="disabled"
|
49
|
+
@change="
|
50
|
+
async (ev: InputEvent) => {
|
51
|
+
const file = (ev.target as HTMLInputElement).files?.[0]
|
52
|
+
inputFile = file
|
53
|
+
const parsed = await parseFileAsString(file)
|
54
|
+
slotProps.componentField.onInput(parsed)
|
55
|
+
}
|
56
|
+
"
|
57
|
+
/>
|
58
|
+
<div
|
59
|
+
v-else
|
60
|
+
class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-transparent py-1 pl-3 pr-1 text-sm shadow-sm transition-colors"
|
61
|
+
>
|
62
|
+
<p>{{ inputFile?.name }}</p>
|
63
|
+
<Button
|
64
|
+
:size="'icon'"
|
65
|
+
:variant="'ghost'"
|
66
|
+
class="h-[26px] w-[26px]"
|
67
|
+
aria-label="Remove file"
|
68
|
+
type="button"
|
69
|
+
@click="
|
70
|
+
() => {
|
71
|
+
inputFile = undefined
|
72
|
+
slotProps.componentField.onInput(undefined)
|
73
|
+
}
|
74
|
+
"
|
75
|
+
>
|
76
|
+
<TrashIcon :size="16" />
|
77
|
+
</Button>
|
78
|
+
</div>
|
79
|
+
</slot>
|
80
|
+
</FormControl>
|
81
|
+
<FormDescription v-if="config?.description">
|
82
|
+
{{ config.description }}
|
83
|
+
</FormDescription>
|
84
|
+
<FormMessage />
|
85
|
+
</FormItem>
|
86
|
+
</FormField>
|
87
|
+
</template>
|