@dasidev/dasi-ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +346 -0
- package/bin/dasi-cli.cjs +184 -0
- package/dist/date-selector-test-BlukYeWl.js +91 -0
- package/dist/favicon.ico +0 -0
- package/dist/html2canvas.esm-CKxSAI8P.js +4886 -0
- package/dist/img/brand/ic_pln.svg +12 -0
- package/dist/img/brand/mapp_power_logo.svg +21 -0
- package/dist/img/common/pltu_ulumbu_flores_ntt.jpeg +0 -0
- package/dist/index-BQSA2aPs.js +126556 -0
- package/dist/index.es-DQWt-PZn.js +5769 -0
- package/dist/index.es.js +11 -0
- package/dist/index.umd.js +8564 -0
- package/dist/informasi-gudang-BmoEy2RL.js +164 -0
- package/dist/informasi-gudang-DXfS46Nh.js +50 -0
- package/dist/purify.es-C-9oolON.js +546 -0
- package/dist/scripts/pdf.worker.min.js +29 -0
- package/dist/scripts/pdf.worker.min.mjs +29 -0
- package/dist/scripts/pdf.worker.mjs +57722 -0
- package/dist/scripts/pdf.worker.mjs.map +1 -0
- package/dist/style.css +1 -0
- package/dist/test-schema-JFghGc0_.js +8 -0
- package/dist/test-schema-uusFsJe4.js +438 -0
- package/dist/types-l0sNRNKZ.js +1 -0
- package/package.json +178 -0
- package/src/App.vue +18 -0
- package/src/__tests__/index.test.ts +9 -0
- package/src/api/api.ts +117 -0
- package/src/assets/app-selector.svg +3 -0
- package/src/assets/dasi.png +0 -0
- package/src/assets/foto_ss.svg +21 -0
- package/src/assets/icons/circle-blue.svg +4 -0
- package/src/assets/icons/circle-gray.svg +15 -0
- package/src/assets/icons/circle-green.svg +4 -0
- package/src/assets/icons/circle-orange.svg +4 -0
- package/src/assets/icons/circle-purple.svg +4 -0
- package/src/assets/icons/circle-red.svg +15 -0
- package/src/assets/icons/harbor.svg +12 -0
- package/src/assets/icons/ic-box-red.svg +8 -0
- package/src/assets/icons/ic-chevron-right.svg +1 -0
- package/src/assets/icons/ic-loading.svg +9 -0
- package/src/assets/icons/ic-reset.svg +16 -0
- package/src/assets/icons/ic-sailing.svg +5 -0
- package/src/assets/icons/icon-app-selector.svg +3 -0
- package/src/assets/icons/icon-browser-check.svg +4 -0
- package/src/assets/icons/icon-calendar.svg +3 -0
- package/src/assets/icons/icon-chart-bar.svg +3 -0
- package/src/assets/icons/icon-chart-doc.svg +16 -0
- package/src/assets/icons/icon-chart-line.svg +10 -0
- package/src/assets/icons/icon-chart-mix.svg +15 -0
- package/src/assets/icons/icon-chart-pie.svg +11 -0
- package/src/assets/icons/icon-continue.svg +12 -0
- package/src/assets/icons/icon-dashboard-2.svg +17 -0
- package/src/assets/icons/icon-dashboard.svg +3 -0
- package/src/assets/icons/icon-data-kelistrikan.svg +19 -0
- package/src/assets/icons/icon-data-sentral.svg +11 -0
- package/src/assets/icons/icon-database.svg +5 -0
- package/src/assets/icons/icon-desktop.svg +3 -0
- package/src/assets/icons/icon-download.svg +13 -0
- package/src/assets/icons/icon-energi-primer.svg +12 -0
- package/src/assets/icons/icon-faba-apk2.svg +11 -0
- package/src/assets/icons/icon-faba.svg +11 -0
- package/src/assets/icons/icon-factory.svg +14 -0
- package/src/assets/icons/icon-globe-doc.svg +19 -0
- package/src/assets/icons/icon-ikk.svg +10 -0
- package/src/assets/icons/icon-kbb.svg +13 -0
- package/src/assets/icons/icon-kos.svg +16 -0
- package/src/assets/icons/icon-kpi-bod.svg +15 -0
- package/src/assets/icons/icon-kss.svg +14 -0
- package/src/assets/icons/icon-map.svg +12 -0
- package/src/assets/icons/icon-monitoring-harian.svg +13 -0
- package/src/assets/icons/icon-notification.svg +4 -0
- package/src/assets/icons/icon-overview.svg +17 -0
- package/src/assets/icons/icon-pltu.svg +13 -0
- package/src/assets/icons/icon-sebaran-sentral.svg +12 -0
- package/src/assets/icons/icon-select-data-kelistrikan.svg +19 -0
- package/src/assets/icons/icon-select-data-sentral.svg +11 -0
- package/src/assets/icons/icon-select-energi-primer.svg +12 -0
- package/src/assets/icons/icon-select-faba-apk2.svg +11 -0
- package/src/assets/icons/icon-select-ikk.svg +10 -0
- package/src/assets/icons/icon-select-kbb.svg +13 -0
- package/src/assets/icons/icon-select-kos.svg +16 -0
- package/src/assets/icons/icon-select-kpi-bod.svg +15 -0
- package/src/assets/icons/icon-select-kss.svg +14 -0
- package/src/assets/icons/icon-select-monitoring-harian.svg +13 -0
- package/src/assets/icons/icon-select-overview.svg +17 -0
- package/src/assets/icons/icon-select-sebaran-sentral.svg +12 -0
- package/src/assets/icons/icon-sentral-white.svg +13 -0
- package/src/assets/icons/icon-shipping.svg +5 -0
- package/src/assets/icons/icon-sort.svg +5 -0
- package/src/assets/icons/icon-tree-box.svg +14 -0
- package/src/assets/icons/icon-warehouse.svg +12 -0
- package/src/assets/icons/pin-green.svg +3 -0
- package/src/assets/icons/pin-orange.svg +3 -0
- package/src/assets/icons/pin-purple.svg +3 -0
- package/src/assets/icons/ship.svg +3 -0
- package/src/assets/icons/shipment/icon-antri.svg +15 -0
- package/src/assets/icons/shipment/icon-bongkar.svg +4 -0
- package/src/assets/icons/shipment/icon-invoice.svg +6 -0
- package/src/assets/icons/shipment/icon-loading.svg +8 -0
- package/src/assets/icons/shipment/icon-pembayaran.svg +13 -0
- package/src/assets/icons/shipment/icon-pengiriman.svg +4 -0
- package/src/assets/icons/shipment/icon-sailing.svg +4 -0
- package/src/assets/icons/shipment/icon-shipment-completed.svg +6 -0
- package/src/assets/icons/shipment/icon-shipment-in-progress.svg +6 -0
- package/src/assets/icons/shipment/icon-shipment-over-sla.svg +6 -0
- package/src/assets/icons/shipment/icon-spt.svg +4 -0
- package/src/assets/icons/shipment/icon-total-shipment.svg +4 -0
- package/src/assets/icons/upload_doc_icon.svg +42 -0
- package/src/assets/icons/upload_icon_blue.svg +14 -0
- package/src/assets/login-bg-day-min.jpg +0 -0
- package/src/assets/login-bg-night-min.jpg +0 -0
- package/src/assets/login-bg.jpg +0 -0
- package/src/assets/login-day.png +0 -0
- package/src/assets/login-night.png +0 -0
- package/src/assets/lucide-circle-plus-blue.svg +1 -0
- package/src/assets/pdf-logo.svg +11 -0
- package/src/assets/pemasok-card-bg.svg +6 -0
- package/src/assets/success_animation.gif +0 -0
- package/src/assets/success_animation.mp4 +0 -0
- package/src/assets/success_animation.webm +0 -0
- package/src/components/button/BtnAddOutline.vue +14 -0
- package/src/components/button/BtnCircle.vue +10 -0
- package/src/components/button/BtnOutline.vue +15 -0
- package/src/components/button/BtnPrimary.vue +25 -0
- package/src/components/button/BtnSecondary.vue +26 -0
- package/src/components/detail/AccountDetailTimeline.vue +144 -0
- package/src/components/detail/ApprovalInfo.vue +288 -0
- package/src/components/detail/DCI2.vue +164 -0
- package/src/components/detail/DetailContentHeader.vue +83 -0
- package/src/components/detail/DetailContentItem.vue +186 -0
- package/src/components/detail/DetailContentItems.vue +388 -0
- package/src/components/detail/DetailContentLoading.vue +12 -0
- package/src/components/detail/DetailContentTablet.vue +10 -0
- package/src/components/detail/DetailSheet.vue +294 -0
- package/src/components/detail/DetailTimeline.vue +191 -0
- package/src/components/detail/DocApprovalDialog.vue +29 -0
- package/src/components/detail/DocViewerContent.vue +991 -0
- package/src/components/dialog/ConfirmDialog.vue +96 -0
- package/src/components/dialog/DialogBase.vue +53 -0
- package/src/components/dialog/DialogSelect.vue +212 -0
- package/src/components/dialog/ErrorDialog.vue +63 -0
- package/src/components/dialog/FormDialog.vue +141 -0
- package/src/components/dialog/FormInputerDialog.vue +91 -0
- package/src/components/dialog/InfoDialog.vue +74 -0
- package/src/components/dialog/SuccessDialog.vue +51 -0
- package/src/components/examples/TestSchemaExample.vue +288 -0
- package/src/components/forms/auth/LoginForm.vue +806 -0
- package/src/components/forms/auth/PwdScore.vue +68 -0
- package/src/components/helper/ApiTester.vue +153 -0
- package/src/components/helper/ChangePwd.vue +150 -0
- package/src/components/helper/CheckboxElement.vue +43 -0
- package/src/components/helper/ConfigSwitcher.vue +54 -0
- package/src/components/helper/Copyright.vue +10 -0
- package/src/components/helper/ErrorScreen.vue +40 -0
- package/src/components/helper/LucideIcon.vue +27 -0
- package/src/components/helper/PdfViewer.vue +103 -0
- package/src/components/helper/PinInputer.vue +205 -0
- package/src/components/helper/PrivacyPolicy.vue +122 -0
- package/src/components/layout/PageActivityHeader.vue +48 -0
- package/src/components/layout/PageHeader.vue +70 -0
- package/src/components/loadings/LoadingDialog.vue +29 -0
- package/src/components/loadings/LoadingDialogSpin.vue +25 -0
- package/src/components/loadings/LoadingIndicator.vue +38 -0
- package/src/components/loadings/LoadingScreen.vue +23 -0
- package/src/components/notif/Notif.vue +103 -0
- package/src/components/notif/NotifItem.vue +41 -0
- package/src/components/pages/Header.vue +431 -0
- package/src/components/pages/Leftbar.vue +417 -0
- package/src/components/pages/PageActivity.vue +108 -0
- package/src/components/pages/PageActivityContent.vue +597 -0
- package/src/components/pages/PageContentTable.vue +589 -0
- package/src/components/pages/PageTab.vue +84 -0
- package/src/components/selector/BaseSelector.vue +1136 -0
- package/src/components/selector/ConfigDataSelector.vue +136 -0
- package/src/components/settings/SettingsItem.vue +38 -0
- package/src/components/tab/TabView.vue +11 -0
- package/src/components/tab/TabViewItem.vue +18 -0
- package/src/components/tab/TabViewItemBar.vue +9 -0
- package/src/components/tables/CellHover.vue +65 -0
- package/src/components/tables/DashboardDataTable.vue +707 -0
- package/src/components/tables/DataStatusTag.vue +52 -0
- package/src/components/tables/DataTable.vue +156 -0
- package/src/components/tables/DataTableAccordion.vue +249 -0
- package/src/components/tables/DataTableActionRow.vue +64 -0
- package/src/components/tables/DataTableCell.vue +272 -0
- package/src/components/tables/DataTableHeader.vue +60 -0
- package/src/components/tables/DataTableRow.vue +213 -0
- package/src/components/tables/ExpandedTable.vue +259 -0
- package/src/components/tables/PageTable.vue +73 -0
- package/src/components/tables/Pagination.vue +98 -0
- package/src/components/tables/dropdown/BaseDropdownTable.vue +140 -0
- package/src/components/tables/dropdown/DropdownTableActivity.vue +33 -0
- package/src/components/tables/dropdown/DropdownTableAsset.vue +30 -0
- package/src/components/tables/dropdown/DropdownTableConfig.vue +30 -0
- package/src/components/tables/dropdown/DropdownTableDataKonektor.vue +31 -0
- package/src/components/tables/dropdown/DropdownTableDataLabel.vue +30 -0
- package/src/components/tables/dropdown/DropdownTableDataSchema.vue +31 -0
- package/src/components/tables/dropdown/DropdownTableFabaPemanfaat.vue +30 -0
- package/src/components/tables/dropdown/DropdownTableGroup.vue +36 -0
- package/src/components/tables/dropdown/DropdownTableHalaman.vue +33 -0
- package/src/components/tables/dropdown/DropdownTableLevel.vue +66 -0
- package/src/components/tables/dropdown/DropdownTableOrganization.vue +47 -0
- package/src/components/tables/dropdown/DropdownTablePengelola.vue +28 -0
- package/src/components/tables/dropdown/DropdownTableQueryLayer.vue +29 -0
- package/src/components/tables/dropdown/DropdownTableSentral.vue +33 -0
- package/src/components/tables/dropdown/DropdownTableWarehouse.vue +30 -0
- package/src/components/tables/dropdown/TableDropdown.vue +52 -0
- package/src/components/ui/accordion/Accordion.vue +19 -0
- package/src/components/ui/accordion/AccordionContent.vue +24 -0
- package/src/components/ui/accordion/AccordionItem.vue +24 -0
- package/src/components/ui/accordion/AccordionTrigger.vue +42 -0
- package/src/components/ui/accordion/index.ts +4 -0
- package/src/components/ui/alert-dialog/AlertDialog.vue +14 -0
- package/src/components/ui/alert-dialog/AlertDialogAction.vue +20 -0
- package/src/components/ui/alert-dialog/AlertDialogCancel.vue +20 -0
- package/src/components/ui/alert-dialog/AlertDialogContent.vue +42 -0
- package/src/components/ui/alert-dialog/AlertDialogDescription.vue +25 -0
- package/src/components/ui/alert-dialog/AlertDialogFooter.vue +21 -0
- package/src/components/ui/alert-dialog/AlertDialogHeader.vue +16 -0
- package/src/components/ui/alert-dialog/AlertDialogTitle.vue +22 -0
- package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +11 -0
- package/src/components/ui/alert-dialog/index.ts +9 -0
- package/src/components/ui/avatar/Avatar.vue +24 -0
- package/src/components/ui/avatar/AvatarFallback.vue +11 -0
- package/src/components/ui/avatar/AvatarImage.vue +9 -0
- package/src/components/ui/avatar/UsersAvatar.vue +28 -0
- package/src/components/ui/avatar/index.ts +24 -0
- package/src/components/ui/button/Button.vue +27 -0
- package/src/components/ui/button/index.ts +34 -0
- package/src/components/ui/calendar/Calendar.vue +325 -0
- package/src/components/ui/calendar/index.ts +22 -0
- package/src/components/ui/checkbox/Checkbox.vue +33 -0
- package/src/components/ui/checkbox/index.ts +1 -0
- package/src/components/ui/command/Command.vue +30 -0
- package/src/components/ui/command/CommandDialog.vue +21 -0
- package/src/components/ui/command/CommandEmpty.vue +20 -0
- package/src/components/ui/command/CommandGroup.vue +29 -0
- package/src/components/ui/command/CommandInput.vue +33 -0
- package/src/components/ui/command/CommandItem.vue +26 -0
- package/src/components/ui/command/CommandList.vue +27 -0
- package/src/components/ui/command/CommandSeparator.vue +23 -0
- package/src/components/ui/command/CommandShortcut.vue +14 -0
- package/src/components/ui/command/index.ts +9 -0
- package/src/components/ui/context-menu/ContextMenu.vue +15 -0
- package/src/components/ui/context-menu/ContextMenuCheckboxItem.vue +40 -0
- package/src/components/ui/context-menu/ContextMenuContent.vue +36 -0
- package/src/components/ui/context-menu/ContextMenuGroup.vue +11 -0
- package/src/components/ui/context-menu/ContextMenuItem.vue +34 -0
- package/src/components/ui/context-menu/ContextMenuLabel.vue +25 -0
- package/src/components/ui/context-menu/ContextMenuPortal.vue +11 -0
- package/src/components/ui/context-menu/ContextMenuRadioGroup.vue +19 -0
- package/src/components/ui/context-menu/ContextMenuRadioItem.vue +40 -0
- package/src/components/ui/context-menu/ContextMenuSeparator.vue +20 -0
- package/src/components/ui/context-menu/ContextMenuShortcut.vue +14 -0
- package/src/components/ui/context-menu/ContextMenuSub.vue +19 -0
- package/src/components/ui/context-menu/ContextMenuSubContent.vue +35 -0
- package/src/components/ui/context-menu/ContextMenuSubTrigger.vue +34 -0
- package/src/components/ui/context-menu/ContextMenuTrigger.vue +13 -0
- package/src/components/ui/context-menu/index.ts +14 -0
- package/src/components/ui/datetime/DatetimeRangeComponent.vue +52 -0
- package/src/components/ui/dialog/Dialog.vue +14 -0
- package/src/components/ui/dialog/DialogClose.vue +11 -0
- package/src/components/ui/dialog/DialogContent.vue +53 -0
- package/src/components/ui/dialog/DialogDescription.vue +24 -0
- package/src/components/ui/dialog/DialogFooter.vue +19 -0
- package/src/components/ui/dialog/DialogHeader.vue +16 -0
- package/src/components/ui/dialog/DialogScrollContent.vue +59 -0
- package/src/components/ui/dialog/DialogTitle.vue +29 -0
- package/src/components/ui/dialog/DialogTrigger.vue +11 -0
- package/src/components/ui/dialog/index.ts +9 -0
- package/src/components/ui/dropdown-menu/DropdownMenu.vue +14 -0
- package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +40 -0
- package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +38 -0
- package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +11 -0
- package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +28 -0
- package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +24 -0
- package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +19 -0
- package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +41 -0
- package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +22 -0
- package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +14 -0
- package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +19 -0
- package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +30 -0
- package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +33 -0
- package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +13 -0
- package/src/components/ui/dropdown-menu/index.ts +16 -0
- package/src/components/ui/form/FormControl.vue +16 -0
- package/src/components/ui/form/FormDescription.vue +20 -0
- package/src/components/ui/form/FormItem.vue +25 -0
- package/src/components/ui/form/FormLabel.vue +23 -0
- package/src/components/ui/form/FormMessage.vue +16 -0
- package/src/components/ui/form/index.ts +6 -0
- package/src/components/ui/form/useFormField.ts +30 -0
- package/src/components/ui/hover-card/HoverCard.vue +14 -0
- package/src/components/ui/hover-card/HoverCardContent.vue +41 -0
- package/src/components/ui/hover-card/HoverCardTrigger.vue +11 -0
- package/src/components/ui/hover-card/index.ts +3 -0
- package/src/components/ui/input/Input.vue +24 -0
- package/src/components/ui/input/index.ts +1 -0
- package/src/components/ui/label/Label.vue +27 -0
- package/src/components/ui/label/index.ts +1 -0
- package/src/components/ui/pagination/PaginationEllipsis.vue +22 -0
- package/src/components/ui/pagination/PaginationFirst.vue +29 -0
- package/src/components/ui/pagination/PaginationLast.vue +29 -0
- package/src/components/ui/pagination/PaginationNext.vue +29 -0
- package/src/components/ui/pagination/PaginationPrev.vue +29 -0
- package/src/components/ui/pagination/index.ts +10 -0
- package/src/components/ui/pin-input/PinInput.vue +23 -0
- package/src/components/ui/pin-input/PinInputGroup.vue +18 -0
- package/src/components/ui/pin-input/PinInputInput.vue +18 -0
- package/src/components/ui/pin-input/PinInputSeparator.vue +15 -0
- package/src/components/ui/pin-input/index.ts +4 -0
- package/src/components/ui/popover/Popover.vue +15 -0
- package/src/components/ui/popover/PopoverContent.vue +48 -0
- package/src/components/ui/popover/PopoverTrigger.vue +11 -0
- package/src/components/ui/popover/index.ts +4 -0
- package/src/components/ui/preview/PreviewPdf.vue +118 -0
- package/src/components/ui/progress/ProgressCircle.vue +27 -0
- package/src/components/ui/progress/SemiCircularProgressBar.vue +83 -0
- package/src/components/ui/progress/TotalCalories.vue +31 -0
- package/src/components/ui/radio-group/RadioGroup.vue +25 -0
- package/src/components/ui/radio-group/RadioGroupItem.vue +37 -0
- package/src/components/ui/radio-group/index.ts +2 -0
- package/src/components/ui/scroll-area/ScrollArea.vue +29 -0
- package/src/components/ui/scroll-area/ScrollBar.vue +30 -0
- package/src/components/ui/scroll-area/index.ts +2 -0
- package/src/components/ui/select/Select.vue +15 -0
- package/src/components/ui/select/SelectContent.vue +52 -0
- package/src/components/ui/select/SelectGroup.vue +19 -0
- package/src/components/ui/select/SelectInline.vue +84 -0
- package/src/components/ui/select/SelectItem.vue +44 -0
- package/src/components/ui/select/SelectItemText.vue +11 -0
- package/src/components/ui/select/SelectLabel.vue +13 -0
- package/src/components/ui/select/SelectScrollDownButton.vue +24 -0
- package/src/components/ui/select/SelectScrollUpButton.vue +24 -0
- package/src/components/ui/select/SelectSeparator.vue +17 -0
- package/src/components/ui/select/SelectTrigger.vue +31 -0
- package/src/components/ui/select/SelectTriggerCustom.vue +23 -0
- package/src/components/ui/select/SelectValue.vue +11 -0
- package/src/components/ui/select/index.ts +12 -0
- package/src/components/ui/separator/Separator.vue +20 -0
- package/src/components/ui/separator/index.ts +1 -0
- package/src/components/ui/sheet/Sheet.vue +14 -0
- package/src/components/ui/sheet/SheetClose.vue +11 -0
- package/src/components/ui/sheet/SheetContent.vue +48 -0
- package/src/components/ui/sheet/SheetDescription.vue +22 -0
- package/src/components/ui/sheet/SheetFooter.vue +19 -0
- package/src/components/ui/sheet/SheetHeader.vue +16 -0
- package/src/components/ui/sheet/SheetTitle.vue +22 -0
- package/src/components/ui/sheet/SheetTrigger.vue +11 -0
- package/src/components/ui/sheet/index.ts +31 -0
- package/src/components/ui/skeleton/Skeleton.vue +28 -0
- package/src/components/ui/skeleton/index.ts +1 -0
- package/src/components/ui/sonner/Sonner.vue +22 -0
- package/src/components/ui/sonner/index.ts +1 -0
- package/src/components/ui/star/StarRating.vue +19 -0
- package/src/components/ui/switch/Switch.vue +37 -0
- package/src/components/ui/switch/index.ts +1 -0
- package/src/components/ui/table/Table.vue +16 -0
- package/src/components/ui/table/TableBody.vue +14 -0
- package/src/components/ui/table/TableCaption.vue +14 -0
- package/src/components/ui/table/TableCell.vue +21 -0
- package/src/components/ui/table/TableEmpty.vue +37 -0
- package/src/components/ui/table/TableFooter.vue +14 -0
- package/src/components/ui/table/TableHead.vue +14 -0
- package/src/components/ui/table/TableHeader.vue +14 -0
- package/src/components/ui/table/TableRow.vue +14 -0
- package/src/components/ui/table/index.ts +8 -0
- package/src/components/ui/tabs/Tabs.vue +15 -0
- package/src/components/ui/tabs/TabsContent.vue +22 -0
- package/src/components/ui/tabs/TabsList.vue +25 -0
- package/src/components/ui/tabs/TabsTrigger.vue +27 -0
- package/src/components/ui/tabs/index.ts +4 -0
- package/src/components/ui/tags-input/TagsInput.vue +22 -0
- package/src/components/ui/tags-input/TagsInputInput.vue +19 -0
- package/src/components/ui/tags-input/TagsInputItem.vue +22 -0
- package/src/components/ui/tags-input/TagsInputItemDelete.vue +24 -0
- package/src/components/ui/tags-input/TagsInputItemText.vue +19 -0
- package/src/components/ui/tags-input/index.ts +5 -0
- package/src/components/ui/textarea/Textarea.vue +24 -0
- package/src/components/ui/textarea/index.ts +1 -0
- package/src/components/ui/tooltip/Tooltip.vue +14 -0
- package/src/components/ui/tooltip/TooltipContent.vue +31 -0
- package/src/components/ui/tooltip/TooltipProvider.vue +11 -0
- package/src/components/ui/tooltip/TooltipTrigger.vue +11 -0
- package/src/components/ui/tooltip/index.ts +4 -0
- package/src/composables/useAppConfig.ts +332 -0
- package/src/composables/useDarkMode.ts +71 -0
- package/src/config/app.config.ts +318 -0
- package/src/config/examples/ecommerce.config.ts +132 -0
- package/src/config/examples/generic.config.ts +132 -0
- package/src/config/menu.config.ts +149 -0
- package/src/config/my-app.config.ts +134 -0
- package/src/config/test-config.ts +32 -0
- package/src/config/theme.config.ts +250 -0
- package/src/docs/index.ts +21 -0
- package/src/docs.scss +403 -0
- package/src/index.d.ts +5 -0
- package/src/index.ts +20 -0
- package/src/layouts/AuthLayout.vue +68 -0
- package/src/layouts/DefaultLayout.vue +119 -0
- package/src/layouts/DocsLayout.vue +681 -0
- package/src/layouts/FormGlobal.vue +50 -0
- package/src/layouts/GlobalDialog.vue +122 -0
- package/src/layouts/RakorConfirmDialog.vue +95 -0
- package/src/layouts/SettingsLayout.vue +115 -0
- package/src/lib/constants.ts +2 -0
- package/src/lib/detail.utils.ts +213 -0
- package/src/lib/form.utils.ts +1009 -0
- package/src/lib/page.flow.utils.ts +81 -0
- package/src/lib/page.utils.ts +865 -0
- package/src/lib/performance.utils.ts +302 -0
- package/src/lib/tablerow.utils.ts +51 -0
- package/src/lib/utils.ts +643 -0
- package/src/main.scss +717 -0
- package/src/main.ts +74 -0
- package/src/menu.ts +78 -0
- package/src/nestedlist_color.scss +161 -0
- package/src/router/index.ts +92 -0
- package/src/stores/auth.ts +117 -0
- package/src/stores/counter.ts +12 -0
- package/src/stores/dialog.ts +168 -0
- package/src/stores/form.ts +103 -0
- package/src/stores/tabs.ts +52 -0
- package/src/tw.scss +419 -0
- package/src/types/form.types.ts +348 -0
- package/src/types/types.ts +7 -0
- package/src/utils/config.utils.ts +149 -0
- package/src/views/NotFound.vue +30 -0
- package/src/views/PageActivity.vue +15 -0
- package/src/views/auth/LoginView.vue +7 -0
- package/src/views/auth/OauthCallback.vue +101 -0
- package/src/views/dashboard/index.vue +16 -0
- package/src/views/settings/AccountSettingsView.vue +70 -0
- package/src/views/settings/AuditLogsSettingsView.vue +116 -0
- package/src/views/settings/DeviceSettingsView.vue +70 -0
- package/src/views/settings/MainSettingsView.vue +12 -0
- package/src/views/settings/ProfileSettingsView.vue +104 -0
- package/src/vueform/config/informasi-gudang.ts +47 -0
- package/src/vueform/config/test-schema.ts +8 -0
- package/src/vueform/config/types.ts +768 -0
- package/src/vueform/customization/classes.js +46 -0
- package/src/vueform/customization/tailwind.classes.js +2117 -0
- package/src/vueform/elements/ConfigDataSelectorElement.vue +50 -0
- package/src/vueform/elements/DateSelectorElement.vue +323 -0
- package/src/vueform/elements/SelectorElement.vue +153 -0
- package/src/vueform/schemas/date-selector-test.ts +103 -0
- package/src/vueform/schemas/informasi-gudang.ts +160 -0
- package/src/vueform/schemas/test-schema.ts +483 -0
- package/src/vueform.config.js +77 -0
- package/src/vueform.validator.ts +77 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "@/components/ui/alert-dialog";
|
|
3
|
+
import { ref, watch } from "vue";
|
|
4
|
+
import { cn } from "@/lib/utils";
|
|
5
|
+
import { AlertDialogOverlay } from "radix-vue";
|
|
6
|
+
|
|
7
|
+
export interface InfoDialogOptions {
|
|
8
|
+
title: string;
|
|
9
|
+
description: string;
|
|
10
|
+
actionLabel?: string;
|
|
11
|
+
actionIcon?: string;
|
|
12
|
+
contentClass?: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const props = defineProps(["class", "classOverlay"]);
|
|
16
|
+
|
|
17
|
+
const title = ref("");
|
|
18
|
+
const description = ref("");
|
|
19
|
+
const actionLabel = ref("");
|
|
20
|
+
const next = ref<Function | null>(null);
|
|
21
|
+
const dialogOpen = defineModel("open", { default: false });
|
|
22
|
+
const emits = defineEmits(["close"]);
|
|
23
|
+
const actionIcon = ref();
|
|
24
|
+
const contentClass = ref("");
|
|
25
|
+
|
|
26
|
+
const open = (options: InfoDialogOptions, n: Function | null) => {
|
|
27
|
+
title.value = options.title;
|
|
28
|
+
description.value = options.description;
|
|
29
|
+
actionLabel.value = options.actionLabel || "Tutup";
|
|
30
|
+
actionIcon.value = options.actionIcon || null;
|
|
31
|
+
contentClass.value = options.contentClass || "";
|
|
32
|
+
next.value = n;
|
|
33
|
+
dialogOpen.value = true;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
function close(b: boolean) {
|
|
37
|
+
dialogOpen.value = false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
watch(dialogOpen, after => {
|
|
41
|
+
if (!after) {
|
|
42
|
+
if (next.value) next.value(false);
|
|
43
|
+
emits("close");
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
defineExpose({ open, close });
|
|
48
|
+
</script>
|
|
49
|
+
|
|
50
|
+
<template>
|
|
51
|
+
<AlertDialog v-model:open="dialogOpen">
|
|
52
|
+
<AlertDialogOverlay />
|
|
53
|
+
<AlertDialogContent :class="cn('w-96', props.class || contentClass)">
|
|
54
|
+
<AlertDialogHeader>
|
|
55
|
+
<AlertDialogTitle>
|
|
56
|
+
<slot name="title">{{ title }}</slot>
|
|
57
|
+
</AlertDialogTitle>
|
|
58
|
+
<AlertDialogDescription>
|
|
59
|
+
<slot name="description">
|
|
60
|
+
<div v-html="description"></div>
|
|
61
|
+
</slot>
|
|
62
|
+
</AlertDialogDescription>
|
|
63
|
+
</AlertDialogHeader>
|
|
64
|
+
<slot name="content"></slot>
|
|
65
|
+
<AlertDialogFooter class="pt-4">
|
|
66
|
+
<AlertDialogCancel class="border-none text-primary_main shadow-none transition hover:bg-blue-100 hover:text-blue-500">
|
|
67
|
+
<slot name="actionLabel">
|
|
68
|
+
{{ actionLabel }}
|
|
69
|
+
</slot>
|
|
70
|
+
</AlertDialogCancel>
|
|
71
|
+
</AlertDialogFooter>
|
|
72
|
+
</AlertDialogContent>
|
|
73
|
+
</AlertDialog>
|
|
74
|
+
</template>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { defineModel } from 'vue'
|
|
3
|
+
import {
|
|
4
|
+
Dialog,
|
|
5
|
+
DialogContent,
|
|
6
|
+
} from '@/components/ui/dialog'
|
|
7
|
+
import BtnSecondary from '@/components/button/BtnSecondary.vue';
|
|
8
|
+
import DialogClose from '@/components/ui/dialog/DialogClose.vue';
|
|
9
|
+
import { DialogOverlay } from 'radix-vue';
|
|
10
|
+
|
|
11
|
+
const model = defineModel<boolean | undefined>('open');
|
|
12
|
+
const emits = defineEmits(['close']);
|
|
13
|
+
|
|
14
|
+
function openUpdated(b: boolean) {
|
|
15
|
+
if (!b) emits('close')
|
|
16
|
+
}
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<template>
|
|
20
|
+
<Dialog v-model:open="model" v-on:update:open="openUpdated">
|
|
21
|
+
<DialogContent class="rounded-lg w-[calc(100%-20px)] max-w-96 py-8 pb-6 z-[999]">
|
|
22
|
+
<template #overlay>
|
|
23
|
+
<DialogOverlay class="fixed inset-0 z-[997] bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"/>
|
|
24
|
+
</template>
|
|
25
|
+
<div class="-my-6">
|
|
26
|
+
<video autoplay muted playsinline class="max-w-full max-h-full h-44 mx-auto">
|
|
27
|
+
<source src="@/assets/success_animation.webm" type="video/webm">
|
|
28
|
+
<source src="@/assets/success_animation.mp4" type="video/mp4">
|
|
29
|
+
<img src="@/assets/success_animation.gif">
|
|
30
|
+
</video>
|
|
31
|
+
</div>
|
|
32
|
+
<div>
|
|
33
|
+
<slot>
|
|
34
|
+
<h1 class="text-xl font-semibold text-center m-0">
|
|
35
|
+
<slot name="title">Sukses</slot>
|
|
36
|
+
</h1>
|
|
37
|
+
<p class="text-center text-gray-500 text-sm m-0">
|
|
38
|
+
<slot name="description">Data Anda sudah sukses tersimpan</slot>
|
|
39
|
+
</p>
|
|
40
|
+
</slot>
|
|
41
|
+
<div class="text-center pt-3">
|
|
42
|
+
<DialogClose as-child>
|
|
43
|
+
<BtnSecondary>
|
|
44
|
+
<slot name="close-label">Tutup</slot>
|
|
45
|
+
</BtnSecondary>
|
|
46
|
+
</DialogClose>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</DialogContent>
|
|
50
|
+
</Dialog>
|
|
51
|
+
</template>
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="min-h-screen bg-gray-50 p-6 dark:bg-dark_bg">
|
|
3
|
+
<div class="mx-auto max-w-6xl">
|
|
4
|
+
<!-- Header -->
|
|
5
|
+
<div class="mb-8">
|
|
6
|
+
<h1 class="mb-2 text-3xl font-bold text-gray-900 dark:text-white">Test Schema Examples</h1>
|
|
7
|
+
<p class="text-gray-600 dark:text-gray-400">Comprehensive examples of all three selector elements: SelectorElement, DateSelectorElement, and ConfigDataSelectorElement</p>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<!-- Configuration Status -->
|
|
11
|
+
<div class="mb-6 rounded-lg bg-blue-50 p-4 dark:bg-blue-900/20">
|
|
12
|
+
<div class="flex items-center">
|
|
13
|
+
<div class="flex-shrink-0">
|
|
14
|
+
<svg class="h-5 w-5 text-blue-400" viewBox="0 0 20 20" fill="currentColor">
|
|
15
|
+
<path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clip-rule="evenodd" />
|
|
16
|
+
</svg>
|
|
17
|
+
</div>
|
|
18
|
+
<div class="ml-3">
|
|
19
|
+
<h3 class="text-sm font-medium text-blue-800 dark:text-blue-200">Configuration Status</h3>
|
|
20
|
+
<div class="mt-2 text-sm text-blue-700 dark:text-blue-300">
|
|
21
|
+
<p>
|
|
22
|
+
Current Configuration: <strong>{{ currentConfig }}</strong>
|
|
23
|
+
</p>
|
|
24
|
+
<p>
|
|
25
|
+
API Base URL: <code class="rounded bg-blue-100 px-1 dark:bg-blue-800">{{ apiBaseUrl }}</code>
|
|
26
|
+
</p>
|
|
27
|
+
<p>
|
|
28
|
+
Token Key: <code class="rounded bg-blue-100 px-1 dark:bg-blue-800">{{ tokenKey }}</code>
|
|
29
|
+
</p>
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<!-- Form Container -->
|
|
36
|
+
<div class="rounded-lg bg-white p-6 shadow-lg dark:bg-dark_bg2">
|
|
37
|
+
<Vueform
|
|
38
|
+
:schema="testSchema.schema as any"
|
|
39
|
+
:endpoint="handleSubmit"
|
|
40
|
+
submit-button="Test All Selectors"
|
|
41
|
+
submit-button-class="w-full bg-blue-600 hover:bg-blue-700 text-white font-medium py-3 px-4 rounded-md transition-colors" />
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<!-- Results Display -->
|
|
45
|
+
<div v-if="formData" class="mt-8 rounded-lg bg-white p-6 shadow-lg dark:bg-dark_bg2">
|
|
46
|
+
<h2 class="mb-4 text-xl font-semibold text-gray-900 dark:text-white">Form Results</h2>
|
|
47
|
+
<div class="rounded-md bg-gray-50 p-4 dark:bg-gray-800">
|
|
48
|
+
<pre class="overflow-x-auto text-sm text-gray-700 dark:text-gray-300">{{ JSON.stringify(formData, null, 2) }}</pre>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
<!-- Documentation -->
|
|
53
|
+
<div class="mt-8 rounded-lg bg-white p-6 shadow-lg dark:bg-dark_bg2">
|
|
54
|
+
<h2 class="mb-4 text-xl font-semibold text-gray-900 dark:text-white">Documentation</h2>
|
|
55
|
+
|
|
56
|
+
<div class="space-y-6">
|
|
57
|
+
<!-- Selector Element -->
|
|
58
|
+
<div>
|
|
59
|
+
<h3 class="mb-3 text-lg font-medium text-gray-900 dark:text-white">SelectorElement Features</h3>
|
|
60
|
+
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
|
|
61
|
+
<div class="space-y-2">
|
|
62
|
+
<h4 class="font-medium text-gray-700 dark:text-gray-300">Basic Features:</h4>
|
|
63
|
+
<ul class="space-y-1 text-sm text-gray-600 dark:text-gray-400">
|
|
64
|
+
<li>• Single & Multiple Selection</li>
|
|
65
|
+
<li>• Avatar Display</li>
|
|
66
|
+
<li>• Custom Field Functions</li>
|
|
67
|
+
<li>• Parameters & Conditions</li>
|
|
68
|
+
<li>• Auto Fill Organization</li>
|
|
69
|
+
<li>• Return Object Mode</li>
|
|
70
|
+
</ul>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="space-y-2">
|
|
73
|
+
<h4 class="font-medium text-gray-700 dark:text-gray-300">Advanced Features:</h4>
|
|
74
|
+
<ul class="space-y-1 text-sm text-gray-600 dark:text-gray-400">
|
|
75
|
+
<li>• Order By & Sort</li>
|
|
76
|
+
<li>• Search Columns</li>
|
|
77
|
+
<li>• Disable Auto Load</li>
|
|
78
|
+
<li>• Custom Placeholders</li>
|
|
79
|
+
<li>• Validation Rules</li>
|
|
80
|
+
<li>• Table Display</li>
|
|
81
|
+
</ul>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
<!-- Date Selector Element -->
|
|
87
|
+
<div>
|
|
88
|
+
<h3 class="mb-3 text-lg font-medium text-gray-900 dark:text-white">DateSelectorElement Features</h3>
|
|
89
|
+
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
|
|
90
|
+
<div class="space-y-2">
|
|
91
|
+
<h4 class="font-medium text-gray-700 dark:text-gray-300">Picker Types:</h4>
|
|
92
|
+
<ul class="space-y-1 text-sm text-gray-600 dark:text-gray-400">
|
|
93
|
+
<li>• Date Picker</li>
|
|
94
|
+
<li>• Date Time Picker</li>
|
|
95
|
+
<li>• Month Picker</li>
|
|
96
|
+
<li>• Year Picker</li>
|
|
97
|
+
</ul>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="space-y-2">
|
|
100
|
+
<h4 class="font-medium text-gray-700 dark:text-gray-300">Range & Constraints:</h4>
|
|
101
|
+
<ul class="space-y-1 text-sm text-gray-600 dark:text-gray-400">
|
|
102
|
+
<li>• Date Range Selection</li>
|
|
103
|
+
<li>• Min/Max Date Constraints</li>
|
|
104
|
+
<li>• Custom Year Range</li>
|
|
105
|
+
<li>• Custom Display Format</li>
|
|
106
|
+
<li>• Locale Support</li>
|
|
107
|
+
<li>• Auto Apply</li>
|
|
108
|
+
</ul>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
|
|
113
|
+
<!-- Config Data Selector Element -->
|
|
114
|
+
<div>
|
|
115
|
+
<h3 class="mb-3 text-lg font-medium text-gray-900 dark:text-white">ConfigDataSelectorElement Features</h3>
|
|
116
|
+
<div class="grid grid-cols-1 gap-4 md:grid-cols-2">
|
|
117
|
+
<div class="space-y-2">
|
|
118
|
+
<h4 class="font-medium text-gray-700 dark:text-gray-300">Basic Features:</h4>
|
|
119
|
+
<ul class="space-y-1 text-sm text-gray-600 dark:text-gray-400">
|
|
120
|
+
<li>• Parent Code Configuration</li>
|
|
121
|
+
<li>• Custom Field Mapping</li>
|
|
122
|
+
<li>• Dynamic Data Loading</li>
|
|
123
|
+
<li>• Caching Support</li>
|
|
124
|
+
</ul>
|
|
125
|
+
</div>
|
|
126
|
+
<div class="space-y-2">
|
|
127
|
+
<h4 class="font-medium text-gray-700 dark:text-gray-300">Use Cases:</h4>
|
|
128
|
+
<ul class="space-y-1 text-sm text-gray-600 dark:text-gray-400">
|
|
129
|
+
<li>• Countries & Regions</li>
|
|
130
|
+
<li>• Categories & Types</li>
|
|
131
|
+
<li>• Status & States</li>
|
|
132
|
+
<li>• Business Units</li>
|
|
133
|
+
</ul>
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
|
|
140
|
+
<!-- Code Examples -->
|
|
141
|
+
<div class="mt-8 rounded-lg bg-white p-6 shadow-lg dark:bg-dark_bg2">
|
|
142
|
+
<h2 class="mb-4 text-xl font-semibold text-gray-900 dark:text-white">Code Examples</h2>
|
|
143
|
+
|
|
144
|
+
<div class="space-y-6">
|
|
145
|
+
<!-- Selector Example -->
|
|
146
|
+
<div>
|
|
147
|
+
<h3 class="mb-2 text-lg font-medium text-gray-900 dark:text-white">SelectorElement Example</h3>
|
|
148
|
+
<div class="rounded-md bg-gray-50 p-4 dark:bg-gray-800">
|
|
149
|
+
<pre class="overflow-x-auto text-sm text-gray-700 dark:text-gray-300"><code>{
|
|
150
|
+
type: "selector",
|
|
151
|
+
endpoint: "/users",
|
|
152
|
+
label: "Select User",
|
|
153
|
+
placeholder: "Pilih user...",
|
|
154
|
+
nameField: "name",
|
|
155
|
+
descriptionField: "email",
|
|
156
|
+
showAvatar: true,
|
|
157
|
+
multiple: true,
|
|
158
|
+
params: { status: "active" },
|
|
159
|
+
condition: { levels: "user" },
|
|
160
|
+
orderBy: "name",
|
|
161
|
+
sort: "asc",
|
|
162
|
+
rules: ["required"]
|
|
163
|
+
}</code></pre>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<!-- Date Selector Example -->
|
|
168
|
+
<div>
|
|
169
|
+
<h3 class="mb-2 text-lg font-medium text-gray-900 dark:text-white">DateSelectorElement Example</h3>
|
|
170
|
+
<div class="rounded-md bg-gray-50 p-4 dark:bg-gray-800">
|
|
171
|
+
<pre class="overflow-x-auto text-sm text-gray-700 dark:text-gray-300"><code>{
|
|
172
|
+
type: "date_selector",
|
|
173
|
+
label: "Select Date Range",
|
|
174
|
+
placeholder: "Pilih rentang tanggal...",
|
|
175
|
+
pickerType: "date",
|
|
176
|
+
range: true,
|
|
177
|
+
minDate: new Date("2024-01-01"),
|
|
178
|
+
maxDate: new Date("2024-12-31"),
|
|
179
|
+
displayFormat: "DD/MM/YYYY",
|
|
180
|
+
rules: ["required"]
|
|
181
|
+
}</code></pre>
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<!-- Config Data Selector Example -->
|
|
186
|
+
<div>
|
|
187
|
+
<h3 class="mb-2 text-lg font-medium text-gray-900 dark:text-white">ConfigDataSelectorElement Example</h3>
|
|
188
|
+
<div class="rounded-md bg-gray-50 p-4 dark:bg-gray-800">
|
|
189
|
+
<pre class="overflow-x-auto text-sm text-gray-700 dark:text-gray-300"><code>{
|
|
190
|
+
type: "config_data_selector",
|
|
191
|
+
parentCode: "app//cd/countries",
|
|
192
|
+
label: "Select Country",
|
|
193
|
+
placeholder: "Pilih negara...",
|
|
194
|
+
field: "name",
|
|
195
|
+
rules: ["required"]
|
|
196
|
+
}</code></pre>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
</div>
|
|
200
|
+
</div>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</template>
|
|
204
|
+
|
|
205
|
+
<script setup lang="ts">
|
|
206
|
+
import { ref, computed } from "vue";
|
|
207
|
+
import { useAppConfig } from "@/composables/useAppConfig";
|
|
208
|
+
import testSchema from "@/vueform/schemas/test-schema";
|
|
209
|
+
|
|
210
|
+
// Configuration
|
|
211
|
+
const { appName, apiBaseUrl, tokenKey, isConfigLoaded } = useAppConfig();
|
|
212
|
+
|
|
213
|
+
// Form data
|
|
214
|
+
const formData = ref(null);
|
|
215
|
+
|
|
216
|
+
// Computed properties
|
|
217
|
+
const currentConfig = computed(() => {
|
|
218
|
+
// If config is loaded, show app name, otherwise show loading
|
|
219
|
+
// Since myAppConfig is now the default, config should always be available
|
|
220
|
+
return isConfigLoaded.value ? appName.value : (appName.value || "Loading...");
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
// Form submission handler
|
|
224
|
+
const handleSubmit = async (data: any, form$: any) => {
|
|
225
|
+
console.log("Form submitted with data:", data);
|
|
226
|
+
|
|
227
|
+
// Store form data for display
|
|
228
|
+
formData.value = data;
|
|
229
|
+
|
|
230
|
+
// Simulate API call
|
|
231
|
+
try {
|
|
232
|
+
// Here you would typically send the data to your API
|
|
233
|
+
console.log("Sending data to API...", data);
|
|
234
|
+
|
|
235
|
+
// Simulate success
|
|
236
|
+
form$.setMessage("Form submitted successfully!", "success");
|
|
237
|
+
|
|
238
|
+
// You could also redirect or show a success message
|
|
239
|
+
// router.push('/success')
|
|
240
|
+
} catch (error) {
|
|
241
|
+
console.error("Form submission error:", error);
|
|
242
|
+
form$.setMessage("Error submitting form. Please try again.", "error");
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
</script>
|
|
246
|
+
|
|
247
|
+
<style scoped>
|
|
248
|
+
/* Custom styles for the example page */
|
|
249
|
+
.vueform-divider {
|
|
250
|
+
@apply my-6 border-t border-gray-200 dark:border-gray-700;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.vueform-divider span {
|
|
254
|
+
@apply bg-white px-4 py-2 text-sm font-medium text-gray-500 dark:bg-dark_bg2 dark:text-gray-400;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/* Ensure proper spacing for form elements */
|
|
258
|
+
:deep(.vueform-element) {
|
|
259
|
+
@apply mb-4;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* Style the form container */
|
|
263
|
+
:deep(.vueform) {
|
|
264
|
+
@apply space-y-6;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/* Style form buttons */
|
|
268
|
+
:deep(.vueform-button) {
|
|
269
|
+
@apply transition-colors duration-200;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/* Style form inputs */
|
|
273
|
+
:deep(.vueform-input) {
|
|
274
|
+
@apply transition-colors duration-200;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/* Style form selects */
|
|
278
|
+
:deep(.vueform-select) {
|
|
279
|
+
@apply transition-colors duration-200;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/* Dark mode adjustments */
|
|
283
|
+
@media (prefers-color-scheme: dark) {
|
|
284
|
+
.vueform-divider span {
|
|
285
|
+
@apply bg-dark_bg2;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
</style>
|