@dasidev/dasi-ui 1.0.19 → 1.0.21

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.
Files changed (447) hide show
  1. package/README.md +6 -6
  2. package/dist/index.js +1 -1
  3. package/dist/types.js +1766 -1764
  4. package/package.json +2 -3
  5. package/template/index.html +0 -18
  6. package/template/package.json.template +0 -100
  7. package/template/postcss.config.js +0 -0
  8. package/template/public/favicon.ico +0 -0
  9. package/template/public/img/brand/ic_pln.svg +0 -12
  10. package/template/public/img/brand/mapp_power_logo.svg +0 -21
  11. package/template/public/img/common/pltu_ulumbu_flores_ntt.jpeg +0 -0
  12. package/template/public/scripts/pdf.worker.min.js +0 -29
  13. package/template/public/scripts/pdf.worker.min.mjs +0 -29
  14. package/template/public/scripts/pdf.worker.mjs +0 -57722
  15. package/template/public/scripts/pdf.worker.mjs.map +0 -1
  16. package/template/src/App.vue +0 -17
  17. package/template/src/__tests__/index.test.ts +0 -9
  18. package/template/src/api/api.ts +0 -117
  19. package/template/src/assets/app-selector.svg +0 -3
  20. package/template/src/assets/dasi.png +0 -0
  21. package/template/src/assets/foto_ss.svg +0 -21
  22. package/template/src/assets/icons/circle-blue.svg +0 -4
  23. package/template/src/assets/icons/circle-gray.svg +0 -15
  24. package/template/src/assets/icons/circle-green.svg +0 -4
  25. package/template/src/assets/icons/circle-orange.svg +0 -4
  26. package/template/src/assets/icons/circle-purple.svg +0 -4
  27. package/template/src/assets/icons/circle-red.svg +0 -15
  28. package/template/src/assets/icons/harbor.svg +0 -12
  29. package/template/src/assets/icons/ic-box-red.svg +0 -8
  30. package/template/src/assets/icons/ic-chevron-right.svg +0 -1
  31. package/template/src/assets/icons/ic-loading.svg +0 -9
  32. package/template/src/assets/icons/ic-reset.svg +0 -16
  33. package/template/src/assets/icons/ic-sailing.svg +0 -5
  34. package/template/src/assets/icons/icon-app-selector.svg +0 -3
  35. package/template/src/assets/icons/icon-browser-check.svg +0 -4
  36. package/template/src/assets/icons/icon-calendar.svg +0 -3
  37. package/template/src/assets/icons/icon-chart-bar.svg +0 -3
  38. package/template/src/assets/icons/icon-chart-doc.svg +0 -16
  39. package/template/src/assets/icons/icon-chart-line.svg +0 -10
  40. package/template/src/assets/icons/icon-chart-mix.svg +0 -15
  41. package/template/src/assets/icons/icon-chart-pie.svg +0 -11
  42. package/template/src/assets/icons/icon-continue.svg +0 -12
  43. package/template/src/assets/icons/icon-dashboard-2.svg +0 -17
  44. package/template/src/assets/icons/icon-dashboard.svg +0 -3
  45. package/template/src/assets/icons/icon-data-kelistrikan.svg +0 -19
  46. package/template/src/assets/icons/icon-data-sentral.svg +0 -11
  47. package/template/src/assets/icons/icon-database.svg +0 -5
  48. package/template/src/assets/icons/icon-desktop.svg +0 -3
  49. package/template/src/assets/icons/icon-download.svg +0 -13
  50. package/template/src/assets/icons/icon-energi-primer.svg +0 -12
  51. package/template/src/assets/icons/icon-faba-apk2.svg +0 -11
  52. package/template/src/assets/icons/icon-faba.svg +0 -11
  53. package/template/src/assets/icons/icon-factory.svg +0 -14
  54. package/template/src/assets/icons/icon-globe-doc.svg +0 -19
  55. package/template/src/assets/icons/icon-ikk.svg +0 -10
  56. package/template/src/assets/icons/icon-kbb.svg +0 -13
  57. package/template/src/assets/icons/icon-kos.svg +0 -16
  58. package/template/src/assets/icons/icon-kpi-bod.svg +0 -15
  59. package/template/src/assets/icons/icon-kss.svg +0 -14
  60. package/template/src/assets/icons/icon-map.svg +0 -12
  61. package/template/src/assets/icons/icon-monitoring-harian.svg +0 -13
  62. package/template/src/assets/icons/icon-notification.svg +0 -4
  63. package/template/src/assets/icons/icon-overview.svg +0 -17
  64. package/template/src/assets/icons/icon-pltu.svg +0 -13
  65. package/template/src/assets/icons/icon-sebaran-sentral.svg +0 -12
  66. package/template/src/assets/icons/icon-select-data-kelistrikan.svg +0 -19
  67. package/template/src/assets/icons/icon-select-data-sentral.svg +0 -11
  68. package/template/src/assets/icons/icon-select-energi-primer.svg +0 -12
  69. package/template/src/assets/icons/icon-select-faba-apk2.svg +0 -11
  70. package/template/src/assets/icons/icon-select-ikk.svg +0 -10
  71. package/template/src/assets/icons/icon-select-kbb.svg +0 -13
  72. package/template/src/assets/icons/icon-select-kos.svg +0 -16
  73. package/template/src/assets/icons/icon-select-kpi-bod.svg +0 -15
  74. package/template/src/assets/icons/icon-select-kss.svg +0 -14
  75. package/template/src/assets/icons/icon-select-monitoring-harian.svg +0 -13
  76. package/template/src/assets/icons/icon-select-overview.svg +0 -17
  77. package/template/src/assets/icons/icon-select-sebaran-sentral.svg +0 -12
  78. package/template/src/assets/icons/icon-sentral-white.svg +0 -13
  79. package/template/src/assets/icons/icon-shipping.svg +0 -5
  80. package/template/src/assets/icons/icon-sort.svg +0 -5
  81. package/template/src/assets/icons/icon-tree-box.svg +0 -14
  82. package/template/src/assets/icons/icon-warehouse.svg +0 -12
  83. package/template/src/assets/icons/pin-green.svg +0 -3
  84. package/template/src/assets/icons/pin-orange.svg +0 -3
  85. package/template/src/assets/icons/pin-purple.svg +0 -3
  86. package/template/src/assets/icons/ship.svg +0 -3
  87. package/template/src/assets/icons/shipment/icon-antri.svg +0 -15
  88. package/template/src/assets/icons/shipment/icon-bongkar.svg +0 -4
  89. package/template/src/assets/icons/shipment/icon-invoice.svg +0 -6
  90. package/template/src/assets/icons/shipment/icon-loading.svg +0 -8
  91. package/template/src/assets/icons/shipment/icon-pembayaran.svg +0 -13
  92. package/template/src/assets/icons/shipment/icon-pengiriman.svg +0 -4
  93. package/template/src/assets/icons/shipment/icon-sailing.svg +0 -4
  94. package/template/src/assets/icons/shipment/icon-shipment-completed.svg +0 -6
  95. package/template/src/assets/icons/shipment/icon-shipment-in-progress.svg +0 -6
  96. package/template/src/assets/icons/shipment/icon-shipment-over-sla.svg +0 -6
  97. package/template/src/assets/icons/shipment/icon-spt.svg +0 -4
  98. package/template/src/assets/icons/shipment/icon-total-shipment.svg +0 -4
  99. package/template/src/assets/icons/upload_doc_icon.svg +0 -42
  100. package/template/src/assets/icons/upload_icon_blue.svg +0 -14
  101. package/template/src/assets/login-bg-day-min.jpg +0 -0
  102. package/template/src/assets/login-bg-night-min.jpg +0 -0
  103. package/template/src/assets/login-bg.jpg +0 -0
  104. package/template/src/assets/login-day.png +0 -0
  105. package/template/src/assets/login-night.png +0 -0
  106. package/template/src/assets/lucide-circle-plus-blue.svg +0 -1
  107. package/template/src/assets/pdf-logo.svg +0 -11
  108. package/template/src/assets/pemasok-card-bg.svg +0 -6
  109. package/template/src/assets/success_animation.gif +0 -0
  110. package/template/src/assets/success_animation.mp4 +0 -0
  111. package/template/src/assets/success_animation.webm +0 -0
  112. package/template/src/components/button/BtnAddOutline.vue +0 -14
  113. package/template/src/components/button/BtnCircle.vue +0 -10
  114. package/template/src/components/button/BtnOutline.vue +0 -15
  115. package/template/src/components/button/BtnPrimary.vue +0 -25
  116. package/template/src/components/button/BtnSecondary.vue +0 -26
  117. package/template/src/components/detail/AccountDetailTimeline.vue +0 -144
  118. package/template/src/components/detail/ApprovalInfo.vue +0 -288
  119. package/template/src/components/detail/DCI2.vue +0 -164
  120. package/template/src/components/detail/DetailContentHeader.vue +0 -83
  121. package/template/src/components/detail/DetailContentItem.vue +0 -186
  122. package/template/src/components/detail/DetailContentItems.vue +0 -387
  123. package/template/src/components/detail/DetailContentLoading.vue +0 -12
  124. package/template/src/components/detail/DetailContentTablet.vue +0 -10
  125. package/template/src/components/detail/DetailSheet.vue +0 -294
  126. package/template/src/components/detail/DetailTimeline.vue +0 -191
  127. package/template/src/components/detail/DocApprovalDialog.vue +0 -29
  128. package/template/src/components/detail/DocViewerContent.vue +0 -991
  129. package/template/src/components/dialog/ConfirmDialog.vue +0 -96
  130. package/template/src/components/dialog/DialogBase.vue +0 -53
  131. package/template/src/components/dialog/DialogSelect.vue +0 -212
  132. package/template/src/components/dialog/ErrorDialog.vue +0 -63
  133. package/template/src/components/dialog/FormDialog.vue +0 -141
  134. package/template/src/components/dialog/FormInputerDialog.vue +0 -91
  135. package/template/src/components/dialog/InfoDialog.vue +0 -74
  136. package/template/src/components/dialog/SuccessDialog.vue +0 -50
  137. package/template/src/components/examples/TestSchemaExample.vue +0 -288
  138. package/template/src/components/forms/auth/LoginForm.vue +0 -806
  139. package/template/src/components/forms/auth/PwdScore.vue +0 -68
  140. package/template/src/components/helper/ApiTester.vue +0 -153
  141. package/template/src/components/helper/ChangePwd.vue +0 -149
  142. package/template/src/components/helper/CheckboxElement.vue +0 -43
  143. package/template/src/components/helper/ConfigSwitcher.vue +0 -54
  144. package/template/src/components/helper/Copyright.vue +0 -10
  145. package/template/src/components/helper/ErrorScreen.vue +0 -40
  146. package/template/src/components/helper/LucideIcon.vue +0 -27
  147. package/template/src/components/helper/PdfViewer.vue +0 -103
  148. package/template/src/components/helper/PinInputer.vue +0 -205
  149. package/template/src/components/helper/PrivacyPolicy.vue +0 -122
  150. package/template/src/components/layout/PageActivityHeader.vue +0 -48
  151. package/template/src/components/layout/PageHeader.vue +0 -69
  152. package/template/src/components/loadings/LoadingDialog.vue +0 -29
  153. package/template/src/components/loadings/LoadingDialogSpin.vue +0 -25
  154. package/template/src/components/loadings/LoadingIndicator.vue +0 -38
  155. package/template/src/components/loadings/LoadingScreen.vue +0 -23
  156. package/template/src/components/notif/Notif.vue +0 -102
  157. package/template/src/components/notif/NotifItem.vue +0 -40
  158. package/template/src/components/pages/Header.vue +0 -431
  159. package/template/src/components/pages/Leftbar.vue +0 -417
  160. package/template/src/components/pages/PageActivity.vue +0 -108
  161. package/template/src/components/pages/PageActivityContent.vue +0 -597
  162. package/template/src/components/pages/PageContentTable.vue +0 -589
  163. package/template/src/components/pages/PageTab.vue +0 -84
  164. package/template/src/components/selector/BaseSelector.vue +0 -1136
  165. package/template/src/components/selector/ConfigDataSelector.vue +0 -136
  166. package/template/src/components/settings/SettingsItem.vue +0 -38
  167. package/template/src/components/tab/TabView.vue +0 -11
  168. package/template/src/components/tab/TabViewItem.vue +0 -18
  169. package/template/src/components/tab/TabViewItemBar.vue +0 -9
  170. package/template/src/components/tables/CellHover.vue +0 -65
  171. package/template/src/components/tables/DashboardDataTable.vue +0 -707
  172. package/template/src/components/tables/DataStatusTag.vue +0 -52
  173. package/template/src/components/tables/DataTable.vue +0 -156
  174. package/template/src/components/tables/DataTableAccordion.vue +0 -249
  175. package/template/src/components/tables/DataTableActionRow.vue +0 -64
  176. package/template/src/components/tables/DataTableCell.vue +0 -271
  177. package/template/src/components/tables/DataTableHeader.vue +0 -60
  178. package/template/src/components/tables/DataTableRow.vue +0 -213
  179. package/template/src/components/tables/ExpandedTable.vue +0 -259
  180. package/template/src/components/tables/PageTable.vue +0 -73
  181. package/template/src/components/tables/Pagination.vue +0 -98
  182. package/template/src/components/tables/dropdown/BaseDropdownTable.vue +0 -140
  183. package/template/src/components/tables/dropdown/DropdownTableActivity.vue +0 -33
  184. package/template/src/components/tables/dropdown/DropdownTableAsset.vue +0 -30
  185. package/template/src/components/tables/dropdown/DropdownTableConfig.vue +0 -30
  186. package/template/src/components/tables/dropdown/DropdownTableDataKonektor.vue +0 -31
  187. package/template/src/components/tables/dropdown/DropdownTableDataLabel.vue +0 -30
  188. package/template/src/components/tables/dropdown/DropdownTableDataSchema.vue +0 -31
  189. package/template/src/components/tables/dropdown/DropdownTableFabaPemanfaat.vue +0 -30
  190. package/template/src/components/tables/dropdown/DropdownTableGroup.vue +0 -36
  191. package/template/src/components/tables/dropdown/DropdownTableHalaman.vue +0 -33
  192. package/template/src/components/tables/dropdown/DropdownTableLevel.vue +0 -66
  193. package/template/src/components/tables/dropdown/DropdownTableOrganization.vue +0 -47
  194. package/template/src/components/tables/dropdown/DropdownTablePengelola.vue +0 -28
  195. package/template/src/components/tables/dropdown/DropdownTableQueryLayer.vue +0 -29
  196. package/template/src/components/tables/dropdown/DropdownTableSentral.vue +0 -33
  197. package/template/src/components/tables/dropdown/DropdownTableWarehouse.vue +0 -30
  198. package/template/src/components/tables/dropdown/TableDropdown.vue +0 -52
  199. package/template/src/components/ui/accordion/Accordion.vue +0 -19
  200. package/template/src/components/ui/accordion/AccordionContent.vue +0 -24
  201. package/template/src/components/ui/accordion/AccordionItem.vue +0 -24
  202. package/template/src/components/ui/accordion/AccordionTrigger.vue +0 -41
  203. package/template/src/components/ui/accordion/index.ts +0 -4
  204. package/template/src/components/ui/alert-dialog/AlertDialog.vue +0 -14
  205. package/template/src/components/ui/alert-dialog/AlertDialogAction.vue +0 -20
  206. package/template/src/components/ui/alert-dialog/AlertDialogCancel.vue +0 -20
  207. package/template/src/components/ui/alert-dialog/AlertDialogContent.vue +0 -42
  208. package/template/src/components/ui/alert-dialog/AlertDialogDescription.vue +0 -25
  209. package/template/src/components/ui/alert-dialog/AlertDialogFooter.vue +0 -21
  210. package/template/src/components/ui/alert-dialog/AlertDialogHeader.vue +0 -16
  211. package/template/src/components/ui/alert-dialog/AlertDialogTitle.vue +0 -22
  212. package/template/src/components/ui/alert-dialog/AlertDialogTrigger.vue +0 -11
  213. package/template/src/components/ui/alert-dialog/index.ts +0 -9
  214. package/template/src/components/ui/avatar/Avatar.vue +0 -24
  215. package/template/src/components/ui/avatar/AvatarFallback.vue +0 -11
  216. package/template/src/components/ui/avatar/AvatarImage.vue +0 -9
  217. package/template/src/components/ui/avatar/UsersAvatar.vue +0 -27
  218. package/template/src/components/ui/avatar/index.ts +0 -24
  219. package/template/src/components/ui/button/Button.vue +0 -27
  220. package/template/src/components/ui/button/index.ts +0 -34
  221. package/template/src/components/ui/calendar/Calendar.vue +0 -325
  222. package/template/src/components/ui/calendar/index.ts +0 -22
  223. package/template/src/components/ui/checkbox/Checkbox.vue +0 -33
  224. package/template/src/components/ui/checkbox/index.ts +0 -1
  225. package/template/src/components/ui/command/Command.vue +0 -30
  226. package/template/src/components/ui/command/CommandDialog.vue +0 -21
  227. package/template/src/components/ui/command/CommandEmpty.vue +0 -20
  228. package/template/src/components/ui/command/CommandGroup.vue +0 -29
  229. package/template/src/components/ui/command/CommandInput.vue +0 -33
  230. package/template/src/components/ui/command/CommandItem.vue +0 -26
  231. package/template/src/components/ui/command/CommandList.vue +0 -27
  232. package/template/src/components/ui/command/CommandSeparator.vue +0 -23
  233. package/template/src/components/ui/command/CommandShortcut.vue +0 -14
  234. package/template/src/components/ui/command/index.ts +0 -9
  235. package/template/src/components/ui/context-menu/ContextMenu.vue +0 -15
  236. package/template/src/components/ui/context-menu/ContextMenuCheckboxItem.vue +0 -40
  237. package/template/src/components/ui/context-menu/ContextMenuContent.vue +0 -36
  238. package/template/src/components/ui/context-menu/ContextMenuGroup.vue +0 -11
  239. package/template/src/components/ui/context-menu/ContextMenuItem.vue +0 -34
  240. package/template/src/components/ui/context-menu/ContextMenuLabel.vue +0 -25
  241. package/template/src/components/ui/context-menu/ContextMenuPortal.vue +0 -11
  242. package/template/src/components/ui/context-menu/ContextMenuRadioGroup.vue +0 -19
  243. package/template/src/components/ui/context-menu/ContextMenuRadioItem.vue +0 -40
  244. package/template/src/components/ui/context-menu/ContextMenuSeparator.vue +0 -20
  245. package/template/src/components/ui/context-menu/ContextMenuShortcut.vue +0 -14
  246. package/template/src/components/ui/context-menu/ContextMenuSub.vue +0 -19
  247. package/template/src/components/ui/context-menu/ContextMenuSubContent.vue +0 -35
  248. package/template/src/components/ui/context-menu/ContextMenuSubTrigger.vue +0 -34
  249. package/template/src/components/ui/context-menu/ContextMenuTrigger.vue +0 -13
  250. package/template/src/components/ui/context-menu/index.ts +0 -14
  251. package/template/src/components/ui/datetime/DatetimeRangeComponent.vue +0 -52
  252. package/template/src/components/ui/dialog/Dialog.vue +0 -14
  253. package/template/src/components/ui/dialog/DialogClose.vue +0 -11
  254. package/template/src/components/ui/dialog/DialogContent.vue +0 -53
  255. package/template/src/components/ui/dialog/DialogDescription.vue +0 -24
  256. package/template/src/components/ui/dialog/DialogFooter.vue +0 -19
  257. package/template/src/components/ui/dialog/DialogHeader.vue +0 -16
  258. package/template/src/components/ui/dialog/DialogScrollContent.vue +0 -59
  259. package/template/src/components/ui/dialog/DialogTitle.vue +0 -29
  260. package/template/src/components/ui/dialog/DialogTrigger.vue +0 -11
  261. package/template/src/components/ui/dialog/index.ts +0 -9
  262. package/template/src/components/ui/dropdown-menu/DropdownMenu.vue +0 -14
  263. package/template/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +0 -40
  264. package/template/src/components/ui/dropdown-menu/DropdownMenuContent.vue +0 -38
  265. package/template/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +0 -11
  266. package/template/src/components/ui/dropdown-menu/DropdownMenuItem.vue +0 -28
  267. package/template/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +0 -24
  268. package/template/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +0 -19
  269. package/template/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +0 -41
  270. package/template/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +0 -22
  271. package/template/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +0 -14
  272. package/template/src/components/ui/dropdown-menu/DropdownMenuSub.vue +0 -19
  273. package/template/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +0 -30
  274. package/template/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +0 -33
  275. package/template/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +0 -13
  276. package/template/src/components/ui/dropdown-menu/index.ts +0 -16
  277. package/template/src/components/ui/form/FormControl.vue +0 -16
  278. package/template/src/components/ui/form/FormDescription.vue +0 -20
  279. package/template/src/components/ui/form/FormItem.vue +0 -25
  280. package/template/src/components/ui/form/FormLabel.vue +0 -23
  281. package/template/src/components/ui/form/FormMessage.vue +0 -16
  282. package/template/src/components/ui/form/index.ts +0 -6
  283. package/template/src/components/ui/form/useFormField.ts +0 -30
  284. package/template/src/components/ui/hover-card/HoverCard.vue +0 -14
  285. package/template/src/components/ui/hover-card/HoverCardContent.vue +0 -41
  286. package/template/src/components/ui/hover-card/HoverCardTrigger.vue +0 -11
  287. package/template/src/components/ui/hover-card/index.ts +0 -3
  288. package/template/src/components/ui/input/Input.vue +0 -24
  289. package/template/src/components/ui/input/index.ts +0 -1
  290. package/template/src/components/ui/label/Label.vue +0 -27
  291. package/template/src/components/ui/label/index.ts +0 -1
  292. package/template/src/components/ui/pagination/PaginationEllipsis.vue +0 -22
  293. package/template/src/components/ui/pagination/PaginationFirst.vue +0 -29
  294. package/template/src/components/ui/pagination/PaginationLast.vue +0 -29
  295. package/template/src/components/ui/pagination/PaginationNext.vue +0 -29
  296. package/template/src/components/ui/pagination/PaginationPrev.vue +0 -29
  297. package/template/src/components/ui/pagination/index.ts +0 -10
  298. package/template/src/components/ui/pin-input/PinInput.vue +0 -23
  299. package/template/src/components/ui/pin-input/PinInputGroup.vue +0 -18
  300. package/template/src/components/ui/pin-input/PinInputInput.vue +0 -18
  301. package/template/src/components/ui/pin-input/PinInputSeparator.vue +0 -15
  302. package/template/src/components/ui/pin-input/index.ts +0 -4
  303. package/template/src/components/ui/popover/Popover.vue +0 -15
  304. package/template/src/components/ui/popover/PopoverContent.vue +0 -48
  305. package/template/src/components/ui/popover/PopoverTrigger.vue +0 -11
  306. package/template/src/components/ui/popover/index.ts +0 -4
  307. package/template/src/components/ui/preview/PreviewPdf.vue +0 -118
  308. package/template/src/components/ui/progress/ProgressCircle.vue +0 -27
  309. package/template/src/components/ui/progress/SemiCircularProgressBar.vue +0 -83
  310. package/template/src/components/ui/progress/TotalCalories.vue +0 -31
  311. package/template/src/components/ui/radio-group/RadioGroup.vue +0 -25
  312. package/template/src/components/ui/radio-group/RadioGroupItem.vue +0 -37
  313. package/template/src/components/ui/radio-group/index.ts +0 -2
  314. package/template/src/components/ui/scroll-area/ScrollArea.vue +0 -29
  315. package/template/src/components/ui/scroll-area/ScrollBar.vue +0 -30
  316. package/template/src/components/ui/scroll-area/index.ts +0 -2
  317. package/template/src/components/ui/select/Select.vue +0 -15
  318. package/template/src/components/ui/select/SelectContent.vue +0 -52
  319. package/template/src/components/ui/select/SelectGroup.vue +0 -19
  320. package/template/src/components/ui/select/SelectInline.vue +0 -84
  321. package/template/src/components/ui/select/SelectItem.vue +0 -44
  322. package/template/src/components/ui/select/SelectItemText.vue +0 -11
  323. package/template/src/components/ui/select/SelectLabel.vue +0 -13
  324. package/template/src/components/ui/select/SelectScrollDownButton.vue +0 -24
  325. package/template/src/components/ui/select/SelectScrollUpButton.vue +0 -24
  326. package/template/src/components/ui/select/SelectSeparator.vue +0 -17
  327. package/template/src/components/ui/select/SelectTrigger.vue +0 -31
  328. package/template/src/components/ui/select/SelectTriggerCustom.vue +0 -23
  329. package/template/src/components/ui/select/SelectValue.vue +0 -11
  330. package/template/src/components/ui/select/index.ts +0 -12
  331. package/template/src/components/ui/separator/Separator.vue +0 -20
  332. package/template/src/components/ui/separator/index.ts +0 -1
  333. package/template/src/components/ui/sheet/Sheet.vue +0 -14
  334. package/template/src/components/ui/sheet/SheetClose.vue +0 -11
  335. package/template/src/components/ui/sheet/SheetContent.vue +0 -48
  336. package/template/src/components/ui/sheet/SheetDescription.vue +0 -22
  337. package/template/src/components/ui/sheet/SheetFooter.vue +0 -19
  338. package/template/src/components/ui/sheet/SheetHeader.vue +0 -16
  339. package/template/src/components/ui/sheet/SheetTitle.vue +0 -22
  340. package/template/src/components/ui/sheet/SheetTrigger.vue +0 -11
  341. package/template/src/components/ui/sheet/index.ts +0 -31
  342. package/template/src/components/ui/skeleton/Skeleton.vue +0 -28
  343. package/template/src/components/ui/skeleton/index.ts +0 -1
  344. package/template/src/components/ui/sonner/Sonner.vue +0 -22
  345. package/template/src/components/ui/sonner/index.ts +0 -1
  346. package/template/src/components/ui/star/StarRating.vue +0 -19
  347. package/template/src/components/ui/switch/Switch.vue +0 -37
  348. package/template/src/components/ui/switch/index.ts +0 -1
  349. package/template/src/components/ui/table/Table.vue +0 -16
  350. package/template/src/components/ui/table/TableBody.vue +0 -14
  351. package/template/src/components/ui/table/TableCaption.vue +0 -14
  352. package/template/src/components/ui/table/TableCell.vue +0 -21
  353. package/template/src/components/ui/table/TableEmpty.vue +0 -37
  354. package/template/src/components/ui/table/TableFooter.vue +0 -14
  355. package/template/src/components/ui/table/TableHead.vue +0 -14
  356. package/template/src/components/ui/table/TableHeader.vue +0 -14
  357. package/template/src/components/ui/table/TableRow.vue +0 -14
  358. package/template/src/components/ui/table/index.ts +0 -8
  359. package/template/src/components/ui/tabs/Tabs.vue +0 -15
  360. package/template/src/components/ui/tabs/TabsContent.vue +0 -22
  361. package/template/src/components/ui/tabs/TabsList.vue +0 -25
  362. package/template/src/components/ui/tabs/TabsTrigger.vue +0 -27
  363. package/template/src/components/ui/tabs/index.ts +0 -4
  364. package/template/src/components/ui/tags-input/TagsInput.vue +0 -22
  365. package/template/src/components/ui/tags-input/TagsInputInput.vue +0 -19
  366. package/template/src/components/ui/tags-input/TagsInputItem.vue +0 -22
  367. package/template/src/components/ui/tags-input/TagsInputItemDelete.vue +0 -24
  368. package/template/src/components/ui/tags-input/TagsInputItemText.vue +0 -19
  369. package/template/src/components/ui/tags-input/index.ts +0 -5
  370. package/template/src/components/ui/textarea/Textarea.vue +0 -24
  371. package/template/src/components/ui/textarea/index.ts +0 -1
  372. package/template/src/components/ui/tooltip/Tooltip.vue +0 -14
  373. package/template/src/components/ui/tooltip/TooltipContent.vue +0 -31
  374. package/template/src/components/ui/tooltip/TooltipProvider.vue +0 -11
  375. package/template/src/components/ui/tooltip/TooltipTrigger.vue +0 -11
  376. package/template/src/components/ui/tooltip/index.ts +0 -4
  377. package/template/src/composables/useAppConfig.ts +0 -332
  378. package/template/src/composables/useDarkMode.ts +0 -71
  379. package/template/src/config/app.config.ts +0 -318
  380. package/template/src/config/examples/ecommerce.config.ts +0 -132
  381. package/template/src/config/examples/generic.config.ts +0 -132
  382. package/template/src/config/menu.config.ts +0 -149
  383. package/template/src/config/my-app.config.ts +0 -134
  384. package/template/src/config/test-config.ts +0 -31
  385. package/template/src/config/theme.config.ts +0 -250
  386. package/template/src/docs/index.ts +0 -21
  387. package/template/src/docs.scss +0 -403
  388. package/template/src/index.d.ts +0 -5
  389. package/template/src/index.ts +0 -20
  390. package/template/src/layouts/AuthLayout.vue +0 -68
  391. package/template/src/layouts/DefaultLayout.vue +0 -119
  392. package/template/src/layouts/DocsLayout.vue +0 -681
  393. package/template/src/layouts/FormGlobal.vue +0 -50
  394. package/template/src/layouts/GlobalDialog.vue +0 -122
  395. package/template/src/layouts/RakorConfirmDialog.vue +0 -95
  396. package/template/src/layouts/SettingsLayout.vue +0 -115
  397. package/template/src/lib/constants.ts +0 -2
  398. package/template/src/lib/detail.utils.ts +0 -213
  399. package/template/src/lib/form.utils.ts +0 -1009
  400. package/template/src/lib/page.flow.utils.ts +0 -81
  401. package/template/src/lib/page.utils.ts +0 -864
  402. package/template/src/lib/performance.utils.ts +0 -302
  403. package/template/src/lib/tablerow.utils.ts +0 -51
  404. package/template/src/lib/utils.ts +0 -643
  405. package/template/src/main.scss +0 -717
  406. package/template/src/main.ts +0 -74
  407. package/template/src/menu.ts +0 -78
  408. package/template/src/nestedlist_color.scss +0 -161
  409. package/template/src/router/index.ts +0 -91
  410. package/template/src/stores/auth.ts +0 -117
  411. package/template/src/stores/counter.ts +0 -12
  412. package/template/src/stores/dialog.ts +0 -168
  413. package/template/src/stores/form.ts +0 -103
  414. package/template/src/stores/tabs.ts +0 -52
  415. package/template/src/tw.scss +0 -419
  416. package/template/src/types/form.types.ts +0 -348
  417. package/template/src/types/types.ts +0 -7
  418. package/template/src/utils/config.utils.ts +0 -149
  419. package/template/src/views/NotFound.vue +0 -30
  420. package/template/src/views/PageActivity.vue +0 -15
  421. package/template/src/views/auth/LoginView.vue +0 -8
  422. package/template/src/views/auth/OauthCallback.vue +0 -101
  423. package/template/src/views/dashboard/index.vue +0 -16
  424. package/template/src/views/settings/AccountSettingsView.vue +0 -58
  425. package/template/src/views/settings/AuditLogsSettingsView.vue +0 -116
  426. package/template/src/views/settings/DeviceSettingsView.vue +0 -70
  427. package/template/src/views/settings/MainSettingsView.vue +0 -12
  428. package/template/src/views/settings/ProfileSettingsView.vue +0 -104
  429. package/template/src/vueform/config/informasi-gudang.ts +0 -46
  430. package/template/src/vueform/config/test-schema.ts +0 -7
  431. package/template/src/vueform/config/types.ts +0 -768
  432. package/template/src/vueform/customization/classes.js +0 -46
  433. package/template/src/vueform/customization/tailwind.classes.js +0 -2117
  434. package/template/src/vueform/elements/ConfigDataSelectorElement.vue +0 -50
  435. package/template/src/vueform/elements/DateSelectorElement.vue +0 -323
  436. package/template/src/vueform/elements/SelectorElement.vue +0 -153
  437. package/template/src/vueform/schemas/date-selector-test.ts +0 -103
  438. package/template/src/vueform/schemas/informasi-gudang.ts +0 -158
  439. package/template/src/vueform/schemas/test-schema.ts +0 -483
  440. package/template/src/vueform.config.js +0 -77
  441. package/template/src/vueform.validator.ts +0 -77
  442. package/template/tailwind.config.js +0 -137
  443. package/template/tsconfig.app.json +0 -28
  444. package/template/tsconfig.json +0 -14
  445. package/template/tsconfig.node.json +0 -19
  446. package/template/tsconfig.vitest.json +0 -11
  447. package/template/vite.config.ts +0 -33
@@ -1,864 +0,0 @@
1
- import type { ColumnAction, ColumnRef, CustomBtnConfig, FilterForm, PageConfig, SortBy, ToggleConfig } from "../vueform/config/types";
2
- import { convertToUtf8, formatMonthYear, formatNumberIntl, getMenuItemByUrl, isValidValue } from "./utils";
3
- import type { DasiV2FormSchema, FormSchema, FormSchemaHooks } from "../types/form.types";
4
- import type { Submenu } from "../menu";
5
- import api from "../api/api";
6
- import type { AxiosResponse } from "axios";
7
- import moment from "moment";
8
- import { useErrorDialog } from "../stores/dialog";
9
- import { InternalServerError } from "./constants";
10
-
11
- /**
12
- * Dialog
13
- *
14
- */
15
- const errorDialog = useErrorDialog();
16
-
17
- // Helper function to process mapped filter values
18
- function processMappedValue(mappedValue: any, filterItem: any) {
19
- if (!mappedValue || typeof mappedValue !== "object") return;
20
-
21
- Object.entries(mappedValue).forEach(([fieldKey, fieldValue]) => {
22
- if (typeof fieldValue === "object" && fieldValue !== null) {
23
- // Nested object: { field: { gte: "value", lte: "value" } }
24
- Object.entries(fieldValue).forEach(([op, val]) => {
25
- filterItem[`filters[${fieldKey}][${op}]`] = { type: op, value: String(val) };
26
- });
27
- } else {
28
- // Simple value: { field: "value" }
29
- filterItem[`filters[${fieldKey}][eq]`] = { type: "eq", value: String(fieldValue) };
30
- }
31
- });
32
- }
33
-
34
- /**
35
- * ----------------------------------
36
- * Filter & Toggle
37
- * ----------------------------------
38
- *
39
- */
40
- export interface FilterItem {
41
- [key: string]: { type: string; value: string };
42
- }
43
-
44
- export interface ToggleState {
45
- checked: boolean;
46
- endpoint: string;
47
- }
48
-
49
- interface FilterQueryWithCondition {
50
- filterQueryyString: string;
51
- conditions: string[];
52
- }
53
-
54
- /**
55
- * Returns two FilterForm objects:
56
- * - The first contains filters to display on the page action menu (showOnPageActionMenu === true)
57
- * - The second contains filters to display on the filter form dialog (showOnPageActionMenu !== true)
58
- *
59
- */
60
- export function getFilterSeparated(filter: FilterForm): [FilterForm, FilterForm] {
61
- const pageActionMenuFilter: FilterForm = {};
62
- const formDialogFilter: FilterForm = {};
63
-
64
- for (const [key, value] of Object.entries(filter)) {
65
- /**
66
- * If filter state saved, then get from storage
67
- *
68
- */
69
- if (value.saveSate) {
70
- const saveSate = value.stateStorage ?? "session";
71
- const storage = saveSate === "local" ? localStorage : sessionStorage;
72
- const valueStr = storage.getItem(`dasiv2.filter.${value.stateKey ?? key}`);
73
- if (valueStr) {
74
- try {
75
- const savedValue = JSON.parse(valueStr);
76
- if (savedValue) {
77
- if (value.filterType === "month|year" && typeof savedValue === "string") {
78
- value.nullValue = new Date(savedValue);
79
- } else {
80
- value.nullValue = savedValue;
81
- }
82
- }
83
- } catch (err) {
84
- console.error("Failed get filter state", err);
85
- }
86
- }
87
- }
88
-
89
- if (value.showOnPageActionMenu) pageActionMenuFilter[key] = value;
90
- else formDialogFilter[key] = value;
91
- }
92
-
93
- return [pageActionMenuFilter, formDialogFilter];
94
- }
95
-
96
- export function genFilterQuery(filterSchema: FilterForm, formData?: any): FilterItem {
97
- const filterItem: FilterItem = {};
98
- for (const [key, item] of Object.entries(filterSchema || {}) as any[]) {
99
- /**
100
- * Set the filter item value to default
101
- * it not yet set
102
- *
103
- */
104
- const itemValue = formData?.[key] ?? item.default;
105
- if (itemValue === undefined || itemValue === null) continue;
106
-
107
- /**
108
- * Save state
109
- *
110
- */
111
- if (item.saveSate) {
112
- const saveSate = item.stateStorage ?? "session";
113
- const valueStr = JSON.stringify(itemValue);
114
- if (valueStr) {
115
- try {
116
- const storage = saveSate === "local" ? localStorage : sessionStorage;
117
- storage.setItem(`dasiv2.filter.${item.stateKey ?? key}`, valueStr);
118
- } catch (err) {
119
- console.error("Failed get filter state", err);
120
- }
121
- }
122
- }
123
-
124
- /**
125
- * Set default so when filter dialog opened again
126
- * it will set to prev data
127
- *
128
- */
129
- item.default = itemValue;
130
-
131
- if (item.filterType === "month|year") {
132
- const d = new Date(String(itemValue));
133
- if (item.isStokReal) {
134
- filterItem[`month`] = { type: "eq", value: String(d.getMonth() + 1) };
135
- filterItem[`year`] = { type: "eq", value: String(d.getFullYear()) };
136
- } else {
137
- filterItem[`filters[${key}][month]`] = { type: "eq", value: String(d.getMonth() + 1) };
138
- filterItem[`filters[${key}][year]`] = { type: "eq", value: String(d.getFullYear()) };
139
- }
140
- } else if (item.filterType === "custom" && item.mapFilterValue) {
141
- const mappedValue = item.mapFilterValue(String(itemValue));
142
- processMappedValue(mappedValue, filterItem);
143
-
144
- // Fallback for non-object values
145
- if (!mappedValue || typeof mappedValue !== "object") {
146
- filterItem[`filters[${key}][custom]`] = { type: "custom", value: String(mappedValue) };
147
- }
148
- } else {
149
- if (item.isRaw) {
150
- filterItem[`${key}`] = { type: item.filterType, value: String(itemValue) };
151
- } else {
152
- filterItem[`filters[${key}][${item.filterType}]`] = { type: item.filterType, value: String(itemValue) };
153
- }
154
- }
155
- }
156
- return filterItem;
157
- }
158
-
159
- export function genFilterQueryString(filterItem: FilterItem): FilterQueryWithCondition {
160
- const regexForKeyCondition = /\[([^\]]+)\]/;
161
- const searchParams = new URLSearchParams();
162
- const conditions = [];
163
- for (const [key, value] of Object.entries(filterItem)) {
164
- const conditionKey = key.match(regexForKeyCondition);
165
- if (value.type === "condition") conditions.push(`${key}:${value.value}`);
166
- else if (value.type === "asCondition" && conditionKey && conditionKey[1]) {
167
- conditions.push(`${conditionKey[1]}:${value.value}`);
168
- } else searchParams.append(key, value.value);
169
- }
170
- return { filterQueryyString: searchParams.toString(), conditions };
171
- }
172
-
173
- export function filterQueryString(filterItem: FilterItem): string {
174
- return "";
175
- // const searchParams = new URLSearchParams();
176
- // Object.entries(filterItem).forEach(([key, value]) => {
177
- // searchParams.append(key, value);
178
- // });
179
- // return searchParams.toString();
180
- }
181
-
182
- /**
183
- * Initialize toggle state based on pageConfig
184
- * Returns the initial toggle state and modified endpoint
185
- */
186
- export function initToggleState(pageConfig: PageConfig, baseEndpoint: string): ToggleState {
187
- if (!pageConfig.toggleConfig?.show) {
188
- return { checked: true, endpoint: baseEndpoint };
189
- }
190
-
191
- const toggleConfig = pageConfig.toggleConfig;
192
- const defaultChecked = toggleConfig.defaultChecked ?? true;
193
-
194
- let modifiedEndpoint = baseEndpoint;
195
-
196
- if (toggleConfig.onChange) {
197
- modifiedEndpoint = toggleConfig.onChange(defaultChecked, baseEndpoint);
198
- } else if (toggleConfig.urlSuffixes) {
199
- const suffix = defaultChecked ? toggleConfig.urlSuffixes.checked : toggleConfig.urlSuffixes.unchecked;
200
- modifiedEndpoint = baseEndpoint + suffix;
201
- }
202
-
203
- return {
204
- checked: defaultChecked,
205
- endpoint: modifiedEndpoint
206
- };
207
- }
208
-
209
- /**
210
- * Apply toggle change and return new endpoint
211
- */
212
- export function applyToggleChange(toggleConfig: ToggleConfig, checked: boolean, currentEndpoint: string): string {
213
- if (!toggleConfig.show) return currentEndpoint;
214
-
215
- // Get base endpoint by removing existing toggle suffixes
216
- let baseEndpoint = currentEndpoint;
217
- if (toggleConfig.urlSuffixes) {
218
- if (toggleConfig.urlSuffixes.checked && baseEndpoint.endsWith(toggleConfig.urlSuffixes.checked)) {
219
- baseEndpoint = baseEndpoint.slice(0, -toggleConfig.urlSuffixes.checked.length);
220
- } else if (toggleConfig.urlSuffixes.unchecked && baseEndpoint.endsWith(toggleConfig.urlSuffixes.unchecked)) {
221
- baseEndpoint = baseEndpoint.slice(0, -toggleConfig.urlSuffixes.unchecked.length);
222
- }
223
- }
224
-
225
- // Apply new toggle state
226
- if (toggleConfig.onChange) {
227
- return toggleConfig.onChange(checked, baseEndpoint);
228
- } else if (toggleConfig.urlSuffixes) {
229
- const suffix = checked ? toggleConfig.urlSuffixes.checked : toggleConfig.urlSuffixes.unchecked;
230
- return baseEndpoint + suffix;
231
- }
232
-
233
- return currentEndpoint;
234
- }
235
-
236
- /**
237
- * ----------------------------------
238
- * Row renderer
239
- * ----------------------------------
240
- *
241
- */
242
-
243
- /**
244
- * Generic render function for nested object with code/name pattern
245
- * Example: renderObjectWithCode(item, 'contract', 'contractCode')
246
- */
247
- export function renderObjectWithCode(item: any, objectKey: string, codeKey?: string) {
248
- if (!item) return "";
249
- const obj = item[objectKey];
250
- if (!obj) return "";
251
- const code = codeKey ? obj[codeKey] : obj.code || obj.no || obj.number || "";
252
- const amendment = obj.amendment || obj.amandemen;
253
- return `${code}${amendment ? ` / ${amendment.code || amendment.no || amendment.number || ""}` : ""}`;
254
- }
255
-
256
- /**
257
- * Generic render function for nested object from child field
258
- */
259
- export function renderObjectFromChild(jp: any, childField: string, objectKey: string, codeKey?: string) {
260
- if (!isValidValue(jp?.[childField])) return "";
261
- return renderObjectWithCode(jp?.[childField]?.[0], objectKey, codeKey);
262
- }
263
-
264
- /**
265
- * Generic render function for date from nested object
266
- */
267
- export function renderDateFromChild(jp: any, childField: string, dateField: string, format = "DD/MM/YYYY") {
268
- if (!isValidValue(jp?.[childField]) || !jp?.[childField]?.[0]?.[dateField]) return "";
269
- return moment(jp?.[childField]?.[0]?.[dateField]).format(format);
270
- }
271
-
272
- /**
273
- * Generic render function for approval status
274
- */
275
- export function renderApprovalStatus(jp: any, prevField: string, nextField: string) {
276
- if (!jp) return "";
277
- if (!isValidValue(jp[prevField])) return "<b>Belum Disubmit</b>";
278
- if (!isValidValue(jp[nextField]) || (isValidValue(jp[prevField]) && jp[prevField][0]?.submitUlang)) {
279
- return '<b class="text-orange-500">Menunggu Persetujuan</b>';
280
- }
281
- return jp[nextField][0]?.disetujui ? '<b class="text-green-500">Disetujui</b>' : `<b class="text-red-500">Tidak Disetujui</b>`;
282
- }
283
-
284
- /**
285
- * ----------------------------------
286
- * Page initialization
287
- * ----------------------------------
288
- *
289
- */
290
- interface BaseInitOptions {
291
- tabReactive: any;
292
- onRestore: (i: number, item: any) => void;
293
- onDelete: (i: number, item: any) => void;
294
- onEdit: (i: number, item: any) => void;
295
- onCustomBtnClick?: (i: number, item: any, btnId?: string) => void;
296
- }
297
-
298
- interface PageInitOptions extends BaseInitOptions {
299
- pageCode: string;
300
- endpoint: string;
301
- fullPath: string;
302
- }
303
-
304
- interface InitPageReturn {
305
- pageConfig: PageConfig;
306
- queryString: string;
307
- endpoint: string;
308
- formSchema: DasiV2FormSchema;
309
- formHooks: FormSchemaHooks;
310
- menuItem?: Submenu;
311
- title: string;
312
- columns: ColumnRef[];
313
- }
314
-
315
- interface InitColumnsOptions extends BaseInitOptions {
316
- pageInfo: any;
317
- pageConfig: PageConfig;
318
- formSchema: DasiV2FormSchema;
319
- title: string;
320
- }
321
-
322
- export async function initPageConfig(endpoint: string): Promise<PageConfig> {
323
- let pageConfig: PageConfig;
324
-
325
- /**
326
- * Dynamically import the page config
327
- * for the current endpoint,
328
- * if not found, use dault page config
329
- *
330
- */
331
- try {
332
- const configModule = await import(`../vueform/config/${endpoint}.ts`);
333
- pageConfig = configModule.default;
334
- } catch (err) {
335
- console.log(`No specific config found for ${endpoint}, using defaults`);
336
- pageConfig = {};
337
- }
338
-
339
- return pageConfig;
340
- }
341
-
342
- export async function initPageSchema(pageCode: string, schemaPath: string): Promise<FormSchema> {
343
- let schema: DasiV2FormSchema = {};
344
- let hooks: FormSchemaHooks = {};
345
-
346
- /**
347
- * Init form schema and table column
348
- * from the same schema file
349
- *
350
- */
351
- try {
352
- const schemaImported = (await import(`../vueform/schemas/${pageCode}/${schemaPath}.ts`)).default;
353
- schema = schemaImported.schema ?? schemaImported;
354
- hooks = schemaImported.hooks ?? schemaImported;
355
- } catch (err) {
356
- /**
357
- * @deprecated
358
- * all schema should be foldered
359
- *
360
- */
361
- try {
362
- const schemaImported = (await import(`../vueform/schemas/${schemaPath}.ts`)).default;
363
- schema = schemaImported.schema ?? schemaImported;
364
- hooks = schemaImported.hooks ?? schemaImported;
365
- } catch (err) {
366
- /**
367
- * Now page activity can run without schema
368
- * for some page that use custom form
369
- * or display read only pages
370
- *
371
- */
372
- console.log("Schema not found, read only or custom form page");
373
- // throw new Error('Schema not found')
374
- }
375
- }
376
-
377
- return { schema, hooks };
378
- }
379
-
380
- export function genColumnFromSchema(formSchema: DasiV2FormSchema): ColumnRef[] {
381
- const columns: ColumnRef[] = [];
382
- let i = 0;
383
- for (const [key, item] of Object.entries(formSchema)) {
384
- /**
385
- * Skip static content
386
- *
387
- */
388
- if ((item as any).showField === false || ["static", "container", "group"].includes((item as any).type)) continue;
389
-
390
- /**
391
- * Format {field}Id {field}Ids {field}Code
392
- * Used on selector and config data relation
393
- *
394
- */
395
- let newKey = key;
396
- if (key.substring(key.length - 2) === "Id") newKey = key.substring(0, key.length - 2);
397
- else if (key.substring(key.length - 3) === "Ids") newKey = key.substring(0, key.length - 3);
398
- else if (key.substring(key.length - 4) === "Code" && key !== "unitCode") newKey = key.substring(0, key.length - 4);
399
- const itemAny = item as any;
400
-
401
- /**
402
- * Set item visible or not
403
- *
404
- */
405
- itemAny.showInTable = itemAny.showInTable ?? i < 5;
406
-
407
- columns.push({
408
- key: item.key ?? newKey,
409
- type: "cell",
410
- sortKey: itemAny.sortKey,
411
- header: itemAny.cellHeader ?? itemAny.label ?? itemAny.text,
412
- description: itemAny.cellDescripton,
413
- visible: itemAny.showInTable,
414
- cellType: itemAny.cellType ?? itemAny.type,
415
- items: itemAny.items,
416
- dataSource: itemAny.cellDataSource,
417
-
418
- /**
419
- * Number formatting
420
- *
421
- */
422
- mask: itemAny.mask,
423
- addons: itemAny.addons,
424
-
425
- /**
426
- * Selector props (from BaseSelector.vue)
427
- *
428
- */
429
- showAvatar: itemAny.showAvatar,
430
- returnObject: itemAny.returnObject,
431
- autoFillOrg: itemAny.autoFillOrg,
432
- multiple: itemAny.multiple,
433
- params: itemAny.params,
434
- condition: itemAny.condition,
435
- orderBy: itemAny.orderBy,
436
- sort: itemAny.sort,
437
- objectKey: itemAny.objectKey,
438
- nameField: itemAny.nameField,
439
- nameFieldFunc: itemAny.nameFieldFunc,
440
- descriptionField: itemAny.descriptionField,
441
- descriptionFieldFunc: itemAny.descriptionFieldFunc,
442
-
443
- /**
444
- * Date Selector props (from DateSelectorElement.vue)
445
- *
446
- */
447
- pickerType: itemAny.pickerType,
448
- range: itemAny.range,
449
- displayFormat: itemAny.displayFormat,
450
- yearRange: itemAny.yearRange,
451
- autoApply: itemAny.autoApply,
452
- textInput: itemAny.textInput,
453
- startDate: itemAny.startDate,
454
- minDate: itemAny.minDate,
455
- maxDate: itemAny.maxDate,
456
-
457
- /**
458
- * Custom render html
459
- *
460
- */
461
- cellRender: itemAny.cellRender,
462
-
463
- /**
464
- * Header and cell align
465
- *
466
- */
467
- textAlign: itemAny.textAlign,
468
- headAlign: itemAny.headAlign
469
- });
470
- i += 1;
471
- }
472
- return columns;
473
- }
474
-
475
- export function initPageColumns(pageInfo: any, pageConfig: PageConfig, formSchema: DasiV2FormSchema): ColumnRef[] {
476
- /**
477
- * Columns are auto generated from pageConfig
478
- * and fallback to schema
479
- *
480
- */
481
- const columnSchema = pageConfig.columns ?? formSchema ?? {};
482
-
483
- /**
484
- * Auto generate columns
485
- * columns are auto generated from pageConfig
486
- * and fallback to schema
487
- *
488
- */
489
- const columns: ColumnRef[] = [{ key: "id", header: "ID", visible: false, cellType: "text" }];
490
- if (Array.isArray(columnSchema)) {
491
- columns.push(...columnSchema);
492
- } else {
493
- columns.push(...genColumnFromSchema(columnSchema));
494
- }
495
-
496
- if (pageInfo.isApprovalRequired && !pageConfig.hideApprovalStatus) {
497
- columns.push({ key: "status", cellType: "approval_status", header: "Status Approval", sortKey: "status", visible: true });
498
- }
499
-
500
- columns.push({ key: "createdAt", cellType: "dasi_v2_datetime", header: "Tanggal Dibuat", sortKey: "created_at" });
501
- return columns;
502
- }
503
-
504
- function initColumns(options: InitColumnsOptions) {
505
- /**
506
- * Auto generate columns
507
- *
508
- */
509
- const columns = initPageColumns(options.pageInfo, options.pageConfig, options.formSchema);
510
-
511
- /**
512
- * Add column for row action
513
- *
514
- */
515
- if (options.pageConfig.showActionRow !== false) {
516
- let actionRow: ColumnRef = { key: "action" };
517
- if (options.pageConfig.actionRowConfig) {
518
- actionRow = { ...options.pageConfig.actionRowConfig };
519
- }
520
-
521
- actionRow.type = "action";
522
- if (typeof actionRow.visible !== "boolean") actionRow.visible = true;
523
- if (typeof actionRow.showAction !== "boolean") {
524
- actionRow.showAction = options.pageConfig.showActionRowOptions;
525
- }
526
-
527
- /**
528
- * Row action button
529
- *
530
- */
531
- let customBtnConfig = options.pageConfig.actionRowBtnConfig ? options.pageConfig.actionRowBtnConfig : { show: !!options.pageConfig.showActionRowButton };
532
- if (!actionRow.customBtnConfig) actionRow.customBtnConfig = customBtnConfig;
533
- if (!actionRow.onCustomBtnClick) actionRow.onCustomBtnClick = options.onCustomBtnClick;
534
- if (!actionRow.actions) {
535
- actionRow.actions = (i, row) => {
536
- const moreActions: ColumnAction[] = [];
537
- const pcMoreActions: ColumnAction[] = [];
538
- if (options.pageConfig.moreRowActions) {
539
- if (typeof options.pageConfig.moreRowActions === "function") {
540
- pcMoreActions.push(...options.pageConfig.moreRowActions(i, row));
541
- } else {
542
- pcMoreActions.push(...options.pageConfig.moreRowActions);
543
- }
544
- }
545
- for (const moreAction of pcMoreActions) {
546
- const actionItem = { ...moreAction };
547
- if (!actionItem.action) actionItem.action = options.onCustomBtnClick;
548
- moreActions.push(actionItem);
549
- }
550
-
551
- return options.tabReactive.value === "deleted"
552
- ? [
553
- {
554
- id: "restore",
555
- label: `Restore ${options.title}`,
556
- icon: "LucideUndo2",
557
- action: options.onRestore
558
- }
559
- ]
560
- : (() => {
561
- const base = options.pageConfig.hideEditAction
562
- ? [...moreActions]
563
- : [
564
- {
565
- id: "edit",
566
- label: `Edit ${options.title}`,
567
- icon: "LucideEdit",
568
- action: options.onEdit
569
- },
570
- ...moreActions
571
- ];
572
- if (options.pageConfig.hideDeleteAction) return base;
573
- return [
574
- ...base,
575
- {
576
- type: "separator",
577
- action: () => {}
578
- },
579
- {
580
- id: "delete",
581
- label: `Hapus ${options.title}`,
582
- icon: "LucideTrash2",
583
- action: options.onDelete,
584
- negative: true
585
- }
586
- ];
587
- })();
588
- };
589
- }
590
- columns.push(actionRow);
591
- }
592
-
593
- return columns;
594
- }
595
-
596
- export async function initPageActivity(options: PageInitOptions): Promise<InitPageReturn> {
597
- /**
598
- * Prepare variables
599
- * set endpoint without /
600
- *
601
- */
602
- let newEndpoint = options.endpoint.replace(/^\/+/, "");
603
- let queryString = "";
604
-
605
- /**
606
- * Init page config
607
- *
608
- */
609
- const pageConfig = await initPageConfig(newEndpoint);
610
-
611
- /**
612
- * If there is parentField, that mean
613
- * this is page for flow, we update status
614
- * from child
615
- *
616
- */
617
- if (pageConfig.parentField && pageConfig.nextDataField) {
618
- if (!pageConfig.dataTransformer) {
619
- pageConfig.dataTransformer = data => {
620
- for (const item of data) {
621
- item.status = item?.[pageConfig.nextDataField ?? "_"]?.[0]?.status;
622
- }
623
- return data;
624
- };
625
- }
626
- }
627
-
628
- /**
629
- * Retrieve endpoint from pageConfig
630
- * and format if endpoint conaints query params
631
- *
632
- */
633
- if (pageConfig.endpoint) {
634
- const endpointSplited = pageConfig.endpoint.split("?");
635
- newEndpoint = endpointSplited[0].replace(/^\/+/, "");
636
- queryString = endpointSplited.length > 1 ? endpointSplited[1] : "";
637
- }
638
-
639
- /**
640
- * Apply toggle configuration to endpoint if present
641
- * This modifies the endpoint based on the default toggle state
642
- */
643
- const toggleState = initToggleState(pageConfig, `/${newEndpoint}`);
644
- newEndpoint = toggleState.endpoint.replace(/^\/+/, "");
645
-
646
- /**
647
- * Get page info,
648
- * if user allowed to do certain things
649
- *
650
- */
651
- const pageInfoUrl = pageConfig.savePath ?? newEndpoint;
652
- const r = await api.get(`${pageInfoUrl}/init`);
653
- const pageInfo = r.data.data ?? {};
654
-
655
- /**
656
- * Load form schema, default to endpoint
657
- * unless specified on page config
658
- *
659
- */
660
- const schemaPath = pageConfig.schema ?? newEndpoint;
661
- const schema = await initPageSchema(options.pageCode, schemaPath);
662
- const formSchema = schema.schema ?? schema;
663
- const formHooks = schema.hooks ?? schema;
664
-
665
- /**
666
- * Get menu item from url
667
- * and set for title
668
- *
669
- */
670
- const menuItem = getMenuItemByUrl(options.fullPath);
671
- let title = String(menuItem?.name ?? "");
672
-
673
- // Fallback title based on endpoint if menu item not found
674
- if (!title) {
675
- title = "Data";
676
- }
677
-
678
- /**
679
- * Init table columns
680
- *
681
- */
682
- const columns = initColumns({
683
- pageInfo,
684
- pageConfig,
685
- formSchema,
686
- tabReactive: options.tabReactive,
687
- title,
688
- onRestore: options.onRestore,
689
- onDelete: options.onDelete,
690
- onEdit: options.onEdit,
691
- onCustomBtnClick: options.onCustomBtnClick
692
- });
693
-
694
- return {
695
- pageConfig,
696
- queryString,
697
- endpoint: `/${newEndpoint}`,
698
- formSchema,
699
- formHooks: formHooks as any,
700
- menuItem,
701
- title,
702
- columns
703
- };
704
- }
705
-
706
- /**
707
- * ----------------------------------
708
- * Get data
709
- * ----------------------------------
710
- *
711
- */
712
- interface GetPageDataOptions {
713
- endpoint: string;
714
- tabActive: string;
715
- queryParams: string;
716
- searchQuery: string;
717
- columns: ColumnRef[];
718
- sortBy?: SortBy;
719
- filterQueryForm: FilterItem;
720
- filterQueryPageMenu: FilterItem;
721
- pageConfig: PageConfig;
722
- pagination: DataPagination;
723
- }
724
-
725
- interface GetPageDataDetailOptions {
726
- item: any;
727
- endpoint: string;
728
- formSchema: DasiV2FormSchema;
729
- pageConfig?: PageConfig;
730
- includeExtras?: boolean;
731
- }
732
-
733
- interface DataPagination {
734
- page: number;
735
- limit: number;
736
- }
737
-
738
- export function addStringToUri(uri: string, newStr: string) {
739
- if (!newStr) return uri;
740
- return `${uri.includes("?") ? "&" : "?"}${newStr}`;
741
- }
742
-
743
- export async function getPageDataDetail(options: GetPageDataDetailOptions): Promise<AxiosResponse<any, any> | null> {
744
- if (options.pageConfig?.pageDetailHooks?.onDetailOpen) {
745
- try {
746
- if (!(await options.pageConfig?.pageDetailHooks?.onDetailOpen(options.formSchema, options.item))) return Promise.resolve(null);
747
- } catch (err: any) {
748
- errorDialog.open({ title: "Gagal Menampilkan Data Detail", description: err.message ?? InternalServerError });
749
- }
750
- }
751
-
752
- let detailUri;
753
- if (options.pageConfig?.pageDetailHooks?.setEndpoint) {
754
- detailUri = await options.pageConfig?.pageDetailHooks?.setEndpoint(options.formSchema, options.item);
755
- } else {
756
- detailUri = `${options.endpoint}/${options.item.id}`;
757
- const queryParams: string[] = [];
758
- if (options.pageConfig?.extras && options.includeExtras !== false) {
759
- queryParams.push(`extras=${(options.pageConfig.extras ?? []).join(",")}`);
760
- }
761
- if (options.pageConfig?.conditions) {
762
- queryParams.push(`condition=${(options.pageConfig.conditions ?? []).join(",")}`);
763
- }
764
- detailUri += `?${queryParams.join("&")}`;
765
- }
766
- const r = await api.get(detailUri);
767
- if (options.pageConfig?.dataDetailTransformer) {
768
- r.data.data = options.pageConfig?.dataDetailTransformer(r.data.data);
769
- }
770
-
771
- if (options.pageConfig?.pageDetailHooks?.onBeforeMount) {
772
- try {
773
- if (!(await options.pageConfig?.pageDetailHooks?.onBeforeMount(options.formSchema, r.data.data))) return Promise.resolve(null);
774
- } catch (err: any) {
775
- errorDialog.open({ title: "Gagal Menampilkan Data Detail", description: err.message ?? InternalServerError });
776
- }
777
- }
778
-
779
- return r;
780
- }
781
-
782
- export async function getPageData(options: GetPageDataOptions): Promise<AxiosResponse<any, any>> {
783
- /**
784
- * Standard endpoint handling
785
- *
786
- */
787
- const uriArr = options.endpoint.split("?");
788
- let baseUri = uriArr[0];
789
- if (options.tabActive === "deleted") baseUri += "/deleted";
790
-
791
- /**
792
- * Add query params if any
793
- *
794
- */
795
- if (options.queryParams) baseUri += addStringToUri(baseUri, options.queryParams);
796
- if (baseUri.endsWith("?") || baseUri.endsWith("&")) baseUri.substring(0, baseUri.length - 1);
797
-
798
- /**
799
- * Add search query
800
- *
801
- */
802
- if (options.searchQuery) {
803
- baseUri += addStringToUri(baseUri, `search=${options.searchQuery}`);
804
- const searchColumns = ["id"];
805
- for (const [_, item] of Object.entries(options.columns)) {
806
- if (!item.sortKey || !item.visible) continue;
807
- searchColumns.push(item.sortKey);
808
- }
809
- if (searchColumns.length > 0) baseUri += addStringToUri(baseUri, `searchColumns=${searchColumns.join(",")}${options.pageConfig?.searchColumns ? `,${options.pageConfig.searchColumns}` : ""}`);
810
- }
811
-
812
- /**
813
- * Add pagination
814
- *
815
- */
816
- const pg = options.pagination;
817
- baseUri += addStringToUri(baseUri, `limit=${pg.limit}&page=${pg.page}`);
818
-
819
- /**
820
- * Add sort by
821
- *
822
- */
823
- if (options.sortBy) baseUri += addStringToUri(baseUri, `orderBy=${options.sortBy.key}&sort=${options.sortBy.by}`);
824
-
825
- /**
826
- * Set filter and conditions
827
- *
828
- */
829
- const fcForm = genFilterQueryString(options.filterQueryForm);
830
- const fcPage = genFilterQueryString(options.filterQueryPageMenu);
831
- if (fcForm.filterQueryyString) baseUri += addStringToUri(baseUri, fcForm.filterQueryyString);
832
- if (fcPage.filterQueryyString) baseUri += addStringToUri(baseUri, fcPage.filterQueryyString);
833
-
834
- const cdArr = [];
835
- if (fcForm.conditions) cdArr.push(...fcForm.conditions);
836
- if (fcPage.conditions) cdArr.push(...fcPage.conditions);
837
- if (options.pageConfig.conditions) cdArr.push(...options.pageConfig.conditions);
838
- let conditions = [...cdArr];
839
- const { searchQuery } = options;
840
-
841
- if (typeof searchQuery === "string" && /^\W$/.test(searchQuery) && convertToUtf8(searchQuery)) {
842
- conditions.push(`satuan:${convertToUtf8(searchQuery)}`);
843
- }
844
-
845
- if (conditions.length > 0) baseUri += addStringToUri(baseUri, `condition=${conditions.join(",")}`);
846
-
847
- /**
848
- * Add extras data relation
849
- *
850
- */
851
- const extrasStr = (options.pageConfig.extras ?? []).join(",");
852
- if (extrasStr) baseUri += addStringToUri(baseUri, `extras=${extrasStr}`);
853
-
854
- /**
855
- * Get the data from api
856
- *
857
- */
858
- const r = await api.get(baseUri);
859
- if (options.pageConfig.dataTransformer) {
860
- r.data.data = options.pageConfig.dataTransformer(r.data.data);
861
- }
862
-
863
- return r;
864
- }