@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,768 @@
|
|
|
1
|
+
import type { DasiV2FormSchema } from "@/types/form.types";
|
|
2
|
+
|
|
3
|
+
export interface PageConfigNextOptions {
|
|
4
|
+
nextFormSchema?: any;
|
|
5
|
+
nextFormOpen?: boolean;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface IIcon {
|
|
9
|
+
name: string;
|
|
10
|
+
class?: string;
|
|
11
|
+
strokeWidth?: number;
|
|
12
|
+
size?: number;
|
|
13
|
+
fill?: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface CustomBtnConfig {
|
|
17
|
+
type?: "separator" | "action";
|
|
18
|
+
show?: boolean;
|
|
19
|
+
id?: string;
|
|
20
|
+
label?: string;
|
|
21
|
+
class?: string;
|
|
22
|
+
displayAsOption?: boolean;
|
|
23
|
+
negative?: boolean;
|
|
24
|
+
|
|
25
|
+
// Icon config
|
|
26
|
+
icon?: string;
|
|
27
|
+
iconSize?: number;
|
|
28
|
+
iconFill?: boolean;
|
|
29
|
+
iconClass?: string;
|
|
30
|
+
iconStrokeWidth?: number;
|
|
31
|
+
|
|
32
|
+
// Action
|
|
33
|
+
onClick?: (i: number, row: any, btnId?: string) => void;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface ColumnAction {
|
|
37
|
+
id?: string; // Identifier when the item are clicked
|
|
38
|
+
label?: string;
|
|
39
|
+
icon?: string;
|
|
40
|
+
iconSize?: number;
|
|
41
|
+
action?: (i: number, row: any) => void;
|
|
42
|
+
negative?: boolean;
|
|
43
|
+
type?: "separator" | "item";
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface ColumnRef {
|
|
47
|
+
/**
|
|
48
|
+
* row's field to be displayed,
|
|
49
|
+
* example:
|
|
50
|
+
* key: 'yellow'
|
|
51
|
+
* then it will render content of row.yellow
|
|
52
|
+
*
|
|
53
|
+
*/
|
|
54
|
+
key: string;
|
|
55
|
+
|
|
56
|
+
visible?: boolean;
|
|
57
|
+
headerClass?: string;
|
|
58
|
+
header?: string;
|
|
59
|
+
size?: number;
|
|
60
|
+
bold?: boolean;
|
|
61
|
+
type?: "cell" | "action" | "notifIcon";
|
|
62
|
+
showInDetail?: boolean;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Text, dasi_v2_date, dasi_v2_organization so more
|
|
66
|
+
*
|
|
67
|
+
*/
|
|
68
|
+
cellType?: string;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Key from the row to be displayed
|
|
72
|
+
* as description
|
|
73
|
+
*
|
|
74
|
+
* example:
|
|
75
|
+
* descriptonKey: code
|
|
76
|
+
* then it will render row.code ?? ''
|
|
77
|
+
*
|
|
78
|
+
*/
|
|
79
|
+
descriptonKey?: string;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* String description to be rendered after
|
|
83
|
+
* row title
|
|
84
|
+
*
|
|
85
|
+
*/
|
|
86
|
+
description?: (i: number, row: any) => string;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Data source to be rendered
|
|
90
|
+
* default to row[key]
|
|
91
|
+
*
|
|
92
|
+
*/
|
|
93
|
+
dataSource?: (i: number, row: any) => any;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* New for displaying custom button
|
|
97
|
+
* the custom button next to action button
|
|
98
|
+
*
|
|
99
|
+
*/
|
|
100
|
+
customBtnConfig?: CustomBtnConfig | ((i: number, row: any) => CustomBtnConfig);
|
|
101
|
+
onCustomBtnClick?: (i: number, row: any, btnId?: string) => void;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Display action tree dots or not
|
|
105
|
+
*
|
|
106
|
+
*/
|
|
107
|
+
showAction?: boolean | ((i: number, row: any) => boolean);
|
|
108
|
+
cellRender?: (i: number, row: any) => void;
|
|
109
|
+
actions?: (i: number, row: any) => ColumnAction[] | ColumnAction[];
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* DIsplay loading on row
|
|
113
|
+
*
|
|
114
|
+
*/
|
|
115
|
+
itemLoading?: boolean | string | ((i: number, row: any) => boolean | string);
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Display custom actions
|
|
119
|
+
* such as direct delete or edit button
|
|
120
|
+
*
|
|
121
|
+
*/
|
|
122
|
+
rowActions?: RowAction[];
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Display order by on table header
|
|
126
|
+
*
|
|
127
|
+
*/
|
|
128
|
+
sortKey?: string;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Used for rendering array value
|
|
132
|
+
*
|
|
133
|
+
*/
|
|
134
|
+
items?: any[];
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* For displaying cellType: dasi_v2_selector_single
|
|
138
|
+
*
|
|
139
|
+
*/
|
|
140
|
+
nameField?: string;
|
|
141
|
+
nameFieldFunc?: (row: any) => string;
|
|
142
|
+
descriptionField?: string;
|
|
143
|
+
descriptionFieldFunc?: (row: any) => string;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* For selector multiple
|
|
147
|
+
*
|
|
148
|
+
* if in dasi_v2_organizations default to organization
|
|
149
|
+
*
|
|
150
|
+
*/
|
|
151
|
+
objectKey?: string;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Header and cell align
|
|
155
|
+
*
|
|
156
|
+
*/
|
|
157
|
+
textAlign?: "right" | "left";
|
|
158
|
+
headAlign?: "right" | "left" | "center";
|
|
159
|
+
|
|
160
|
+
mask?: any;
|
|
161
|
+
addons?: any;
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Date Selector props
|
|
165
|
+
*/
|
|
166
|
+
pickerType?: "date" | "datetime" | "month" | "year";
|
|
167
|
+
range?: boolean;
|
|
168
|
+
displayFormat?: string;
|
|
169
|
+
yearRange?: [number, number];
|
|
170
|
+
locale?: string;
|
|
171
|
+
autoApply?: boolean;
|
|
172
|
+
textInput?: boolean;
|
|
173
|
+
startDate?: Date;
|
|
174
|
+
minDate?: Date;
|
|
175
|
+
maxDate?: Date;
|
|
176
|
+
isStokReal?: boolean;
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Selector props
|
|
180
|
+
*/
|
|
181
|
+
multiple?: boolean;
|
|
182
|
+
showAvatar?: boolean;
|
|
183
|
+
returnObject?: boolean;
|
|
184
|
+
autoFillOrg?: boolean;
|
|
185
|
+
accessLevel?: string;
|
|
186
|
+
params?: Record<string, any>;
|
|
187
|
+
condition?: Record<string, any>;
|
|
188
|
+
orderBy?: string;
|
|
189
|
+
sort?: "asc" | "desc";
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export interface RowAction {
|
|
193
|
+
label: string;
|
|
194
|
+
class?: string;
|
|
195
|
+
icon?: string;
|
|
196
|
+
iconStrokeWidth?: number;
|
|
197
|
+
iconClass?: string;
|
|
198
|
+
iconSize?: number;
|
|
199
|
+
iconFill?: boolean;
|
|
200
|
+
onClick: (i: number, row: any) => void;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export interface ActionItem {
|
|
204
|
+
label: string;
|
|
205
|
+
class?: string;
|
|
206
|
+
icon?: IIcon;
|
|
207
|
+
onClick: (i: number, row: any) => void;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export interface PageConfigInitReturn {
|
|
211
|
+
pageConfig: PageConfig;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Query param string
|
|
215
|
+
* extracted from endpooint
|
|
216
|
+
*
|
|
217
|
+
*/
|
|
218
|
+
queryParams: string;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export type FilterForm = DasiV2FormSchema & {
|
|
222
|
+
[key: string]: FilterFormSchema;
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
export interface FilterFormSchema {
|
|
226
|
+
filterType: "eq" | "custom" | "condition" | "month|year" | "id" | "asCondition" | "bool";
|
|
227
|
+
mapFilterValue?: (val: string) => any;
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Filter dislayed on pageActionMenu
|
|
231
|
+
* or on filter form dialog
|
|
232
|
+
*
|
|
233
|
+
*/
|
|
234
|
+
showOnPageActionMenu?: boolean;
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* If this set to true
|
|
238
|
+
* the data will be saved to local / session storage
|
|
239
|
+
*
|
|
240
|
+
*/
|
|
241
|
+
saveSate?: boolean;
|
|
242
|
+
stateKey?: string;
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* session: Session sotrage, only available on current tab
|
|
246
|
+
* local: Local storage, available on all tab
|
|
247
|
+
* default: session
|
|
248
|
+
*
|
|
249
|
+
*/
|
|
250
|
+
stateStorage?: "session" | "local";
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
export interface SortBy {
|
|
254
|
+
key: string;
|
|
255
|
+
by: "asc" | "desc";
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
interface StringMap {
|
|
259
|
+
[key: string]: string;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
interface TableGroupConfig {
|
|
263
|
+
by?: string;
|
|
264
|
+
labels?: StringMap;
|
|
265
|
+
setGroupLabel?: (row: any, allData?: any[]) => string;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
export interface PageDetailHooks {
|
|
269
|
+
/**
|
|
270
|
+
* Run right after the detail dialog
|
|
271
|
+
* opened, before get detail data from api
|
|
272
|
+
*
|
|
273
|
+
*/
|
|
274
|
+
onDetailOpen?: (schema: DasiV2FormSchema, row?: any) => Promise<boolean>;
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Set endpoint to get detail
|
|
278
|
+
* data from api
|
|
279
|
+
*
|
|
280
|
+
* expected full get data detail api
|
|
281
|
+
* example: /jadwal-pengiriman/f061af0b-3f08-44dc-a710-8a8d6aef6729?extras=abc&condition=def
|
|
282
|
+
*
|
|
283
|
+
*/
|
|
284
|
+
setEndpoint?: (schema: DasiV2FormSchema, row?: any) => Promise<string>;
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Run after get data from api
|
|
288
|
+
* but the detail content not rendered yet,
|
|
289
|
+
* still displaying loading
|
|
290
|
+
*
|
|
291
|
+
*/
|
|
292
|
+
onBeforeMount?: (schema: DasiV2FormSchema, detailData?: any) => Promise<boolean>;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* Coming soon
|
|
297
|
+
*
|
|
298
|
+
*/
|
|
299
|
+
export interface PageHooks {}
|
|
300
|
+
|
|
301
|
+
export interface ToggleConfig {
|
|
302
|
+
/**
|
|
303
|
+
* Show toggle on the page
|
|
304
|
+
*/
|
|
305
|
+
show: boolean;
|
|
306
|
+
|
|
307
|
+
/**
|
|
308
|
+
* Toggle options for checked and unchecked states
|
|
309
|
+
*/
|
|
310
|
+
options: {
|
|
311
|
+
checked: string;
|
|
312
|
+
unchecked: string;
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* URL suffixes to append when toggle state changes
|
|
317
|
+
* These will be appended to the current endpoint
|
|
318
|
+
*/
|
|
319
|
+
urlSuffixes?: {
|
|
320
|
+
checked: string;
|
|
321
|
+
unchecked: string;
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
/**
|
|
325
|
+
* Custom hook that runs when toggle state changes
|
|
326
|
+
* Receives the new checked state and should return the new endpoint URL
|
|
327
|
+
*/
|
|
328
|
+
onChange?: (checked: boolean, currentEndpoint?: string) => string;
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Default toggle state
|
|
332
|
+
*/
|
|
333
|
+
defaultChecked?: boolean;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
export interface PageConfig {
|
|
337
|
+
/**
|
|
338
|
+
* Unique id,
|
|
339
|
+
* if not set will use endpoint as unique id
|
|
340
|
+
*
|
|
341
|
+
*/
|
|
342
|
+
id?: string;
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Get data endpoint
|
|
346
|
+
*
|
|
347
|
+
*/
|
|
348
|
+
endpoint?: string;
|
|
349
|
+
|
|
350
|
+
/**
|
|
351
|
+
* Where url api to hit when form was saved from add and edit action
|
|
352
|
+
* add action will hit POST /save-path
|
|
353
|
+
* and edit will hit POST /save-path/:id/edit
|
|
354
|
+
*
|
|
355
|
+
*/
|
|
356
|
+
savePath?: string;
|
|
357
|
+
|
|
358
|
+
/**
|
|
359
|
+
* Where form schema to be loaded
|
|
360
|
+
*
|
|
361
|
+
*/
|
|
362
|
+
schema?: string;
|
|
363
|
+
|
|
364
|
+
/**
|
|
365
|
+
* If page use custom component,
|
|
366
|
+
* set path here, fallback to schema
|
|
367
|
+
*
|
|
368
|
+
*/
|
|
369
|
+
customComponentPath?: string;
|
|
370
|
+
|
|
371
|
+
/**
|
|
372
|
+
* Where tab page deleted show or not
|
|
373
|
+
*
|
|
374
|
+
*/
|
|
375
|
+
showDeleted?: boolean;
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* Hide approval status on table
|
|
379
|
+
*
|
|
380
|
+
*/
|
|
381
|
+
hideApprovalStatus?: boolean;
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Tmp
|
|
385
|
+
*
|
|
386
|
+
*/
|
|
387
|
+
role?: string;
|
|
388
|
+
|
|
389
|
+
/**
|
|
390
|
+
* Transform data get from api before
|
|
391
|
+
* displaying it
|
|
392
|
+
*
|
|
393
|
+
*/
|
|
394
|
+
dataTransformer?: (data: any[]) => any[];
|
|
395
|
+
dataDetailTransformer?: (data: any) => any;
|
|
396
|
+
pageHooks?: PageHooks;
|
|
397
|
+
|
|
398
|
+
/**
|
|
399
|
+
* Hook that run when user click
|
|
400
|
+
* view detail button
|
|
401
|
+
*
|
|
402
|
+
*/
|
|
403
|
+
pageDetailHooks?: PageDetailHooks;
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Table displayed columns
|
|
407
|
+
*
|
|
408
|
+
*/
|
|
409
|
+
columns?: ColumnRef[] | DasiV2FormSchema;
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Table displayed columns key for search
|
|
413
|
+
* TODO:
|
|
414
|
+
* Not imlemented yet
|
|
415
|
+
*
|
|
416
|
+
*/
|
|
417
|
+
searchColumns?: any;
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Vueform schema for filtering data
|
|
421
|
+
* You can specific filter by setting key of the object
|
|
422
|
+
* as allowed field to be filtered from API, and set vueform object
|
|
423
|
+
* for the filter form, with additional filterType:
|
|
424
|
+
* in, eq, gte, lte, month|year, like, ilike
|
|
425
|
+
*
|
|
426
|
+
* for more available filter please ready docs for each
|
|
427
|
+
* api endpoint
|
|
428
|
+
*
|
|
429
|
+
*/
|
|
430
|
+
filter?: FilterForm;
|
|
431
|
+
width?: number | 360;
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* @deprecated Use toggleConfig instead
|
|
435
|
+
*/
|
|
436
|
+
toggle?: boolean;
|
|
437
|
+
/**
|
|
438
|
+
* @deprecated Use toggleConfig instead
|
|
439
|
+
*/
|
|
440
|
+
toggleOptions?: { checked: string; unchecked: string };
|
|
441
|
+
|
|
442
|
+
/**
|
|
443
|
+
* Toggle configuration for dynamic toggle functionality
|
|
444
|
+
* Similar to filter system but for binary toggle states
|
|
445
|
+
*/
|
|
446
|
+
toggleConfig?: ToggleConfig;
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* @deprecated
|
|
450
|
+
*/
|
|
451
|
+
periodeFilter?: boolean;
|
|
452
|
+
periodeFilterName?: string; // Using for filter name
|
|
453
|
+
periodeFilterField?: string; // Using for filter key field
|
|
454
|
+
periodeFilterDefault?: { month: any; year: any } | null;
|
|
455
|
+
|
|
456
|
+
/**
|
|
457
|
+
* Add conditional filtering data
|
|
458
|
+
* some endpoint may has conditional filtering data
|
|
459
|
+
* with string format 'key:value'
|
|
460
|
+
*
|
|
461
|
+
* for more conditional filtering please read docs for
|
|
462
|
+
* each api endpoint
|
|
463
|
+
*
|
|
464
|
+
*/
|
|
465
|
+
conditions?: any[];
|
|
466
|
+
|
|
467
|
+
/**
|
|
468
|
+
* @deprecated
|
|
469
|
+
* see nextPath
|
|
470
|
+
*
|
|
471
|
+
*/
|
|
472
|
+
nextFunc?: (i: number, row: any) => any;
|
|
473
|
+
|
|
474
|
+
/**
|
|
475
|
+
* @deprecated
|
|
476
|
+
* see nextPath
|
|
477
|
+
*
|
|
478
|
+
*/
|
|
479
|
+
next?: string;
|
|
480
|
+
|
|
481
|
+
/**
|
|
482
|
+
* Next front-end path to hit when row button clicked
|
|
483
|
+
* can be string or function that return string
|
|
484
|
+
*
|
|
485
|
+
*/
|
|
486
|
+
nextPath?: string[] | ((i: number, row: any) => string[]);
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* Field from data item that are required to display
|
|
490
|
+
* open next button in row table
|
|
491
|
+
* this field of a row item is not empty
|
|
492
|
+
* the row button will show go to next and will go to
|
|
493
|
+
* nextPath, else it will show button that open add form
|
|
494
|
+
*
|
|
495
|
+
* Example:
|
|
496
|
+
* nextDataField = 'loadingInfo'
|
|
497
|
+
* if row.loadingInfo is empty -> show row button to open form to add new data
|
|
498
|
+
* else if row.loadingInfo.dibutuhkanPersetujuan -> show ro button to open form edit data
|
|
499
|
+
* else -> display button that go to
|
|
500
|
+
*
|
|
501
|
+
* Notes:
|
|
502
|
+
* Used in pageActivityFlow
|
|
503
|
+
*
|
|
504
|
+
*/
|
|
505
|
+
nextDataField?: string;
|
|
506
|
+
|
|
507
|
+
/**
|
|
508
|
+
* Sort key for the "Proses Selanjutnya" action column header
|
|
509
|
+
* When set, the action column header will be sortable just like other columns
|
|
510
|
+
* This allows sorting by the data that determines the next action state
|
|
511
|
+
*
|
|
512
|
+
* Example:
|
|
513
|
+
* nextDataSortkey = 'nextDataField.createdAt'
|
|
514
|
+
* The action column header will be sortable by the creation date of the next data
|
|
515
|
+
*
|
|
516
|
+
*/
|
|
517
|
+
nextDataSortkey?: string;
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* Used on pageActivityFlow
|
|
521
|
+
* when displaying parent child instead of original data
|
|
522
|
+
*
|
|
523
|
+
*/
|
|
524
|
+
parentField?: string;
|
|
525
|
+
|
|
526
|
+
/**
|
|
527
|
+
* Extras data or child included from base data
|
|
528
|
+
* when get all data
|
|
529
|
+
*
|
|
530
|
+
*/
|
|
531
|
+
extras?: string[];
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* Display add button that open
|
|
535
|
+
* form on front-end
|
|
536
|
+
*
|
|
537
|
+
*/
|
|
538
|
+
showAddBtn?: boolean;
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* @deprecated
|
|
542
|
+
* now add button label always show
|
|
543
|
+
*
|
|
544
|
+
*/
|
|
545
|
+
showAddBtnLabel?: boolean;
|
|
546
|
+
|
|
547
|
+
/**
|
|
548
|
+
* @deprecated
|
|
549
|
+
* see rowActions
|
|
550
|
+
*
|
|
551
|
+
*/
|
|
552
|
+
showCustomButtonFunc?: (i: number, row: any) => boolean;
|
|
553
|
+
customButtonLabelFunc?: (i: number, row: any) => any;
|
|
554
|
+
customButtonIconFunc?: (i: number, row: any) => any;
|
|
555
|
+
customButtonClassFunc?: (i: number, row: any) => any;
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* @deprecated
|
|
559
|
+
* now use moreRowActions
|
|
560
|
+
*
|
|
561
|
+
*/
|
|
562
|
+
rowActions?: RowAction[];
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Not implemented yet
|
|
566
|
+
*/
|
|
567
|
+
morePageActions?: any[];
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* Display search bar or not
|
|
571
|
+
* if search is hidden,
|
|
572
|
+
* plase add page title, so the header not blank
|
|
573
|
+
*
|
|
574
|
+
*/
|
|
575
|
+
showSearch?: boolean;
|
|
576
|
+
|
|
577
|
+
/**
|
|
578
|
+
* To save space, page title only displayed
|
|
579
|
+
* if showSearch set to false
|
|
580
|
+
*
|
|
581
|
+
*/
|
|
582
|
+
pageTitle?: string;
|
|
583
|
+
|
|
584
|
+
/**
|
|
585
|
+
* Hide delete option from action dropdown
|
|
586
|
+
*
|
|
587
|
+
*/
|
|
588
|
+
hideDeleteAction?: boolean;
|
|
589
|
+
|
|
590
|
+
/**
|
|
591
|
+
* Hide edit action from dropdown
|
|
592
|
+
*
|
|
593
|
+
*/
|
|
594
|
+
hideEditAction?: boolean;
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Display button on page, next to pagination
|
|
598
|
+
* and columns display config
|
|
599
|
+
*
|
|
600
|
+
*/
|
|
601
|
+
pageActions?: ActionItem[];
|
|
602
|
+
|
|
603
|
+
/**
|
|
604
|
+
* Default data sort by
|
|
605
|
+
*
|
|
606
|
+
*/
|
|
607
|
+
sortBy?: SortBy;
|
|
608
|
+
|
|
609
|
+
/**
|
|
610
|
+
* Set custom css class for add/edit dialog
|
|
611
|
+
* to set sizing, color etc
|
|
612
|
+
*
|
|
613
|
+
*/
|
|
614
|
+
formDialogClass?: string;
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* If approval page is true
|
|
618
|
+
* This will make row button behave different than basic CRUD page, the conditions are:
|
|
619
|
+
* if row[nextvDataField] is empty (mean not approved yet) or
|
|
620
|
+
* row[prevDataField].submitUlang (mean already approved but required re-submission and have the re-submission data)
|
|
621
|
+
* then it will show row button "Mulai Persetujuan" that will show approval dialog
|
|
622
|
+
* else if row[nextDataField].disetujui is false it will not display row button
|
|
623
|
+
* else it will show next
|
|
624
|
+
*
|
|
625
|
+
* Approval page required this option to be available
|
|
626
|
+
* - nextDataField,
|
|
627
|
+
* - prevDataField
|
|
628
|
+
*
|
|
629
|
+
* and optional
|
|
630
|
+
* - nextPath
|
|
631
|
+
*
|
|
632
|
+
*/
|
|
633
|
+
approvalPage?: boolean;
|
|
634
|
+
prevDataField?: string;
|
|
635
|
+
|
|
636
|
+
/**
|
|
637
|
+
* Show view document button when row item selected
|
|
638
|
+
*
|
|
639
|
+
*/
|
|
640
|
+
showViewDocButton?: boolean;
|
|
641
|
+
|
|
642
|
+
/**
|
|
643
|
+
* Show action export button
|
|
644
|
+
*
|
|
645
|
+
*/
|
|
646
|
+
showExportButton?: boolean;
|
|
647
|
+
|
|
648
|
+
/**
|
|
649
|
+
* View document endpoint to get the document data
|
|
650
|
+
* to display for DocViewer dialog
|
|
651
|
+
* Example:
|
|
652
|
+
* viewDocsEndpoint = 'no-loading'
|
|
653
|
+
* The DocViewer will hit /nor-loading/:id/documents
|
|
654
|
+
* and the api of that url should be returned document list array to be displayed
|
|
655
|
+
*
|
|
656
|
+
*/
|
|
657
|
+
viewDocsEndpoint?: string;
|
|
658
|
+
|
|
659
|
+
/**
|
|
660
|
+
* Checkbox on each row
|
|
661
|
+
*
|
|
662
|
+
*/
|
|
663
|
+
showCheckboxItem?: boolean;
|
|
664
|
+
checkDisabled?: (item: any, data: any[]) => boolean;
|
|
665
|
+
checkboxActionBtn?: CustomBtnConfig[];
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Table displayed as group dropdown
|
|
669
|
+
* when set this to true, you also need to set
|
|
670
|
+
* tableGroupConfig
|
|
671
|
+
*
|
|
672
|
+
*/
|
|
673
|
+
tableGrouped?: boolean;
|
|
674
|
+
tableGroupConfig?: TableGroupConfig;
|
|
675
|
+
tableGroupActionBtn?: (groupId: any, items: any[]) => CustomBtnConfig[];
|
|
676
|
+
groupApproval?: boolean;
|
|
677
|
+
groupStatus?: (groupId: any, items: any[]) => string;
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* Row action
|
|
681
|
+
*
|
|
682
|
+
*/
|
|
683
|
+
showActionRow?: boolean;
|
|
684
|
+
showActionRowOptions?: boolean | ((i: number, row: any) => boolean);
|
|
685
|
+
actionRowConfig?: ColumnRef;
|
|
686
|
+
|
|
687
|
+
/**
|
|
688
|
+
* Add additional action on row when
|
|
689
|
+
* user click 3 dots action row
|
|
690
|
+
*
|
|
691
|
+
* will be displayed after edit button
|
|
692
|
+
*
|
|
693
|
+
*/
|
|
694
|
+
moreRowActions?: ColumnAction[] | ((i: number, row: any) => ColumnAction[]);
|
|
695
|
+
|
|
696
|
+
/**
|
|
697
|
+
* Show view detail button or not
|
|
698
|
+
*
|
|
699
|
+
*/
|
|
700
|
+
showViewDetail?: boolean | ((i: number, row: any) => boolean);
|
|
701
|
+
|
|
702
|
+
/**
|
|
703
|
+
* Display pagination or not
|
|
704
|
+
*
|
|
705
|
+
*/
|
|
706
|
+
showPagination?: boolean;
|
|
707
|
+
|
|
708
|
+
/**
|
|
709
|
+
* API endpoint for view data detail,
|
|
710
|
+
* if not set will use endpoint? value fallback
|
|
711
|
+
* to endpoint get from router.path
|
|
712
|
+
*
|
|
713
|
+
*/
|
|
714
|
+
viewDetailEndpoint?: string;
|
|
715
|
+
|
|
716
|
+
/**
|
|
717
|
+
* If this set to true,
|
|
718
|
+
* you must add view detail component
|
|
719
|
+
* at @/components/page-activity/${schemaPath}/Detail.vue
|
|
720
|
+
* and expose open function that will be called when user
|
|
721
|
+
* clicked view detail button
|
|
722
|
+
*
|
|
723
|
+
* open(item: any) => Promise<boolean> // return true will reload the data
|
|
724
|
+
*
|
|
725
|
+
*/
|
|
726
|
+
useCustomViewDetail?: boolean;
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* Show action button on table row
|
|
730
|
+
* next to view detail button
|
|
731
|
+
*
|
|
732
|
+
* If actionRowConfig are set, this config
|
|
733
|
+
* will be overriden
|
|
734
|
+
*
|
|
735
|
+
*/
|
|
736
|
+
showActionRowButton?: boolean | ((i: number, row: any) => boolean);
|
|
737
|
+
actionRowBtnConfig?: CustomBtnConfig | ((i: number, row: any) => CustomBtnConfig);
|
|
738
|
+
|
|
739
|
+
/**
|
|
740
|
+
* By default all action on row will be hidden of
|
|
741
|
+
* data status is approval_reuired, draft, or waiting_approval
|
|
742
|
+
* You can force to display the action button even and ignore data status
|
|
743
|
+
*
|
|
744
|
+
*/
|
|
745
|
+
forceDisplayActionRow?: boolean;
|
|
746
|
+
|
|
747
|
+
/**
|
|
748
|
+
* If this set to true,
|
|
749
|
+
* you must add view ActionRow component
|
|
750
|
+
* at @/components/page-activity/${schemaPath}/ActionRow.vue
|
|
751
|
+
* and expose open function that will be called when user
|
|
752
|
+
* clicked view the action row button
|
|
753
|
+
*
|
|
754
|
+
* open(i: number, item: any) => Promise<boolean> // return true will reload the data
|
|
755
|
+
*
|
|
756
|
+
*/
|
|
757
|
+
useActionRowBtnComponent?: boolean;
|
|
758
|
+
|
|
759
|
+
/**
|
|
760
|
+
* Function to generate display name for data items
|
|
761
|
+
* Used throughout the application to determine how to display item names
|
|
762
|
+
* in dialogs, headers, and other UI components
|
|
763
|
+
*
|
|
764
|
+
* @param item - The data item/row
|
|
765
|
+
* @returns The display name for the item
|
|
766
|
+
*/
|
|
767
|
+
dataName?: (item: any) => string;
|
|
768
|
+
}
|