@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,50 +0,0 @@
1
- <script setup lang="ts">
2
- import FormDialog from '../components/dialog/FormDialog.vue';
3
- import { useFormSheet } from '../stores/form';
4
- import type { Vueform } from '@vueform/vueform';
5
- import { ref, watch } from 'vue';
6
-
7
- const formSheet = useFormSheet();
8
-
9
- /**
10
- * El
11
- *
12
- */
13
- const formSheetEl = ref<Vueform>();
14
-
15
- function sheetFormChanged(after: any, before: any) {
16
- formSheet.onChange(after, before);
17
- }
18
-
19
- function formEditCanceled() {
20
- formSheetEl.value?.reset();
21
- formSheet.close();
22
- }
23
-
24
- watch(() => formSheetEl.value, (el$) => {
25
- formSheet.el$ = el$;
26
- if (el$) {
27
- setTimeout(() => {
28
- formSheet.onMounted();
29
- })
30
- }
31
- })
32
- </script>
33
-
34
- <template>
35
- <FormDialog
36
- v-model:open="formSheet.show"
37
- :title="formSheet.title"
38
- v-on:save-click="formSheetEl?.submit()"
39
- v-on:cancel-click="formEditCanceled"
40
- :loading="formSheet.loading"
41
- v-model:saving="formSheet.saving"
42
- v-model:error="formSheet.formError"
43
- :class="formSheet.className">
44
- <Vueform
45
- :schema="(formSheet.formSchema as any)"
46
- :endpoint="formSheet.submitForm"
47
- ref="formSheetEl"
48
- v-on:change="sheetFormChanged"/>
49
- </FormDialog>
50
- </template>
@@ -1,122 +0,0 @@
1
- <script setup lang="ts">
2
- import BtnPrimary from '../components/button/BtnPrimary.vue';
3
- import BtnSecondary from '../components/button/BtnSecondary.vue';
4
- import ErrorDialog from '../components/dialog/ErrorDialog.vue';
5
- import FormInputerDialog from '../components/dialog/FormInputerDialog.vue';
6
- import InfoDialog from '../components/dialog/InfoDialog.vue';
7
- import SuccessDialog from '../components/dialog/SuccessDialog.vue';
8
- import LoadingDialog from '../components/loadings/LoadingDialog.vue';
9
- import LucideIcon from '../components/helper/LucideIcon.vue';
10
- import { AlertDialog, AlertDialogContent, AlertDialogDescription, AlertDialogFooter,
11
- AlertDialogHeader, AlertDialogTitle } from '../components/ui/alert-dialog';
12
- import DialogDescription from '../components/ui/dialog/DialogDescription.vue';
13
- import DialogTitle from '../components/ui/dialog/DialogTitle.vue';
14
- import { useConfirmDialog, useErrorDialog, useFormInputerDialog, useInfoDialog, useLoadingDialog, useSuccessDialog } from '../stores/dialog';
15
-
16
- /**
17
- * Dialog
18
- *
19
- */
20
- const infoDialog = useInfoDialog();
21
- const errorDialog = useErrorDialog();
22
- const loadingDialog = useLoadingDialog();
23
- const confirmDialog = useConfirmDialog();
24
- const successDialog = useSuccessDialog();
25
- const formInputerDialog = useFormInputerDialog();
26
-
27
- function formInputerChanged(after: any, before: any, el$: any) {
28
- if (formInputerDialog.options?.onChange) {
29
- formInputerDialog.options?.onChange(after, before, el$);
30
- }
31
- }
32
- </script>
33
-
34
- <template>
35
- <LoadingDialog v-model:show="loadingDialog.show"/>
36
- <InfoDialog v-model:open="infoDialog.show">
37
- <template #title>
38
- {{ infoDialog.options?.title }}
39
- </template>
40
- <template #description>
41
- {{ infoDialog.options?.description }}
42
- </template>
43
- <template #actionLabel>
44
- {{ infoDialog.options?.actionLabel || 'Tutup' }}
45
- </template>
46
- </InfoDialog>
47
- <ErrorDialog v-model:open="errorDialog.show" v-on:close="errorDialog.close">
48
- <template #title>
49
- {{ errorDialog.options?.title }}
50
- </template>
51
- <template #description>
52
- {{ errorDialog.options?.description }}
53
- </template>
54
- <template #actionLabel>
55
- {{ errorDialog.options?.actionLabel || 'Tutup' }}
56
- </template>
57
- </ErrorDialog>
58
- <SuccessDialog v-model:open="successDialog.show" v-on:close="successDialog.close">
59
- <template #title v-if="successDialog.options?.title">
60
- {{ successDialog.options?.title }}
61
- </template>
62
- <template #description v-if="successDialog.options?.description">
63
- {{ successDialog.options?.description }}
64
- </template>
65
- <template #close-label v-if="successDialog.options?.closeLabel">
66
- {{ successDialog.options?.closeLabel }}
67
- </template>
68
- </SuccessDialog>
69
-
70
- <AlertDialog v-model:open="confirmDialog.show">
71
- <AlertDialogContent>
72
- <AlertDialogHeader>
73
- <AlertDialogTitle>{{ confirmDialog.options?.title }}</AlertDialogTitle>
74
- <AlertDialogDescription>
75
- <div v-html="confirmDialog.options?.description"></div>
76
- </AlertDialogDescription>
77
- </AlertDialogHeader>
78
- <slot name="content"></slot>
79
- <AlertDialogFooter class="pt-4">
80
- <BtnSecondary class="h-auto 2xl:h-auto"
81
- v-on:click="confirmDialog.close(false)">
82
- {{ confirmDialog.options?.cancelLabel || 'Batal' }}
83
- </BtnSecondary>
84
- <BtnPrimary v-on:click.stop="confirmDialog.close(true)"
85
- :loading="confirmDialog.options?.loading"
86
- :disabled="confirmDialog.options?.loading"
87
- class="h-auto 2xl:h-auto"
88
- :class="{
89
- 'bg-red-500 hover:bg-red-600': confirmDialog.options?.negative,
90
- 'pl-3 pr-4': confirmDialog.options?.actionIcon,
91
- }">
92
- <LucideIcon v-if="confirmDialog.options?.actionIcon"
93
- :name="confirmDialog.options?.actionIcon"
94
- :size="18" class="mr-2 -ml-1" />
95
- {{ confirmDialog.options?.actionLabel || 'Simpan' }}
96
- </BtnPrimary>
97
- </AlertDialogFooter>
98
- </AlertDialogContent>
99
- </AlertDialog>
100
-
101
- <FormInputerDialog
102
- :class="formInputerDialog.options?.class"
103
- :class-content="formInputerDialog.options?.classContent"
104
- :class-overlay="formInputerDialog.options?.classOverlay"
105
- :close-on-submit="false"
106
- v-model:show="formInputerDialog.show"
107
- v-model:error="formInputerDialog.formError"
108
- v-model:saving="formInputerDialog.saving"
109
- v-model:form="formInputerDialog.formSchema"
110
- @submit="formInputerDialog.submit"
111
- @change="formInputerChanged"
112
- >
113
- <template #header>
114
- <DialogTitle>{{ formInputerDialog.options?.title }}</DialogTitle>
115
- <DialogDescription v-if="formInputerDialog.options?.description">
116
- {{ formInputerDialog.options?.description }}
117
- </DialogDescription>
118
- </template>
119
- <template #button-label>{{ formInputerDialog.options?.actionLabel ?? 'Simpan' }}</template>
120
- <template #secondary-button-label>{{ formInputerDialog.options?.cancelLabel ?? 'Batal' }}</template>
121
- </FormInputerDialog>
122
- </template>
@@ -1,95 +0,0 @@
1
- <script setup lang="ts">
2
- import api from '../api/api';
3
- import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../components/ui/dialog';
4
- import { LucideCheckCheck } from 'lucide-vue-next';
5
- import { onMounted, ref } from 'vue';
6
-
7
- const konfirmasiTutupRakorOpen = ref(false);
8
- const konfirmasiData = ref<any>(null);
9
- const tutupRakorCountdown = ref(0);
10
- let tutupRakorInterval: any = null;
11
-
12
- function konfirmasiTutupRakor() {
13
- konfirmasiTutupRakorOpen.value = false;
14
- dialogOpenChanged(false);
15
- api.post(`jadwal-rakor/${konfirmasiData.value.id}/konfirmasi-tutup-rakor`);
16
- }
17
-
18
- function setIntervalCloseKonfirmasiTutupRakor() {
19
- tutupRakorCountdown.value = 30;
20
- if (tutupRakorInterval) clearInterval(tutupRakorInterval);
21
- setInterval(() => {
22
- if (tutupRakorCountdown.value <= 0) {
23
- if (tutupRakorInterval) clearInterval(tutupRakorInterval);
24
- konfirmasiTutupRakorOpen.value = false;
25
- setTimeout(() => {
26
- dialogOpenChanged(false);
27
- }, 3000);
28
- return;
29
- }
30
- tutupRakorCountdown.value -= 1;
31
- }, 1000);
32
- }
33
-
34
- /**
35
- * Next change this to get from websocket
36
- * when back-end ws ready
37
- *
38
- */
39
- function checkKonfirmasiTutupRakor() {
40
- if (konfirmasiTutupRakorOpen.value) return;
41
- // api.get('/jadwal-rakor/konfirmasi-tutup-rakor').then((r) => {
42
- // konfirmasiTutupRakorOpen.value = true;
43
- // konfirmasiData.value = r.data.data;
44
- // setIntervalCloseKonfirmasiTutupRakor();
45
- // }).finally(() => {
46
- // setTimeout(() => {
47
- // checkKonfirmasiTutupRakor();
48
- // }, 3000);
49
- // })
50
- }
51
-
52
- function dialogOpenChanged(b: boolean) {
53
- if (b) return;
54
- setTimeout(() => {
55
- checkKonfirmasiTutupRakor();
56
- }, 5000);
57
- }
58
-
59
- onMounted(() => {
60
- // checkKonfirmasiTutupRakor();
61
- })
62
- </script>
63
-
64
- <template>
65
- <Dialog v-model:open="konfirmasiTutupRakorOpen" v-on:update:open="dialogOpenChanged">
66
- <DialogContent class="max-w-[520px] w-full">
67
- <DialogHeader>
68
- <DialogTitle>Rakor <b>{{ konfirmasiData.jadwalRakor.judul }}</b> Telah Ditutup</DialogTitle>
69
- <DialogDescription class="mt-2">
70
- Rakor 1 telah ditutup oleh
71
- <b>{{ konfirmasiData.jadwalRakor && konfirmasiData.jadwalRakor.rakorDitutupOleh
72
- ? konfirmasiData.jadwalRakor.rakorDitutupOleh.name : '' }}</b>
73
- dari <b>{{ konfirmasiData.jadwalRakor && konfirmasiData.jadwalRakor.rakorDitutupOleh
74
- && konfirmasiData.jadwalRakor.rakorDitutupOleh.organization
75
- ? konfirmasiData.jadwalRakor.rakorDitutupOleh.organization.name : '' }}</b>,
76
- silahkan konfrimasi penutupan Rakor dengan klik tombol Konfirmasi di bawah.
77
- <br /><br />
78
- Notulen rakor akan dikirimkan melalui email setelah semua peserta melakukan konfirmasi.
79
- <br /><br />
80
- Akan otomatis terkonfirmasi jika tidak ada konfirmasi selama 30 detik.
81
- </DialogDescription>
82
- </DialogHeader>
83
- <div class="text-sm">
84
- <div class="flex items-center pt-4 -mb-1">
85
- <div class="ml-auto pr-5" v-if="tutupRakorCountdown">{{ tutupRakorCountdown }}</div>
86
- <button class="bg-green-500 text-white hover:bg-green-600 transition px-4 py-2 rounded-md font-medium text-base min-w-[120px] flex items-center"
87
- v-on:click="konfirmasiTutupRakor">
88
- <LucideCheckCheck class="mr-2"/>
89
- Konfirmasi
90
- </button>
91
- </div>
92
- </div>
93
- </DialogContent>
94
- </Dialog>
95
- </template>
@@ -1,115 +0,0 @@
1
- <script setup lang="ts">
2
- import ScrollArea from "../components/ui/scroll-area/ScrollArea.vue";
3
- import LucideIcon from "../components/helper/LucideIcon.vue";
4
- import { ref, onMounted, watch } from "vue";
5
- import { useRoute } from "vue-router";
6
-
7
- interface Menu {
8
- id: string;
9
- name: string;
10
- uri?: string;
11
- icon?: string;
12
- iconSize?: number;
13
- iconType?: "svg" | "lucide";
14
- hasData?: boolean;
15
- connectApi?: boolean;
16
- finished?: boolean;
17
- submenu?: Menu[];
18
- }
19
-
20
- const menu: Menu[] = [
21
- {
22
- id: "personal",
23
- name: "Personal Settings",
24
- submenu: [
25
- {
26
- id: "profile",
27
- name: "Profile Settings",
28
- icon: "CircleUser",
29
- uri: "/settings/profile"
30
- },
31
- {
32
- id: "account",
33
- name: "Account Settings",
34
- icon: "UserCog",
35
- uri: "/settings/account"
36
- },
37
- {
38
- id: "device",
39
- name: "Devices",
40
- icon: "Smartphone",
41
- uri: "/settings/device"
42
- }
43
- ]
44
- },
45
- {
46
- id: "security",
47
- name: "Security",
48
- submenu: [
49
- {
50
- id: "logs",
51
- name: "Audit Logs",
52
- icon: "ScrollText",
53
- uri: "/settings/audit-logs"
54
- }
55
- // {
56
- // name: 'API Access',
57
- // icon: 'FileKey2',
58
- // },
59
- ]
60
- }
61
- ];
62
-
63
- const route = useRoute();
64
-
65
- const menuOpen = ref("");
66
-
67
- watch(route, to => {
68
- findMenuOpen(to.path);
69
- });
70
-
71
- function findMenuOpen(path: string) {
72
- searhMenu: for (const item of menu) {
73
- if (!item.submenu) continue;
74
- for (const sub of item.submenu) {
75
- if (sub.uri === path) {
76
- menuOpen.value = sub.id;
77
- break searhMenu;
78
- }
79
- }
80
- }
81
- }
82
-
83
- onMounted(() => {
84
- findMenuOpen(route.path);
85
- });
86
- </script>
87
-
88
- <template>
89
- <section class="dark:bg-dark_bg3 fixed bottom-0 left-20 top-14 z-9 w-80 border-r bg-white">
90
- <ScrollArea class="h-full px-2 pb-5">
91
- <div v-for="(item, i) in menu" :key="i" class="pt-5">
92
- <div class="my-1 flex items-center px-3 text-[13px] font-semibold uppercase text-gray-400">
93
- {{ item.name }}
94
- </div>
95
- <div v-for="(sub, i) in item.submenu" :key="i">
96
- <RouterLink
97
- :to="sub.uri || '#'"
98
- class="hover:bg-dasi_hover hover:text-dasi_primary relative my-2 block rounded-md py-2.5 pl-11 pr-4 text-sm font-[500]"
99
- :class="{ '!bg-dasi_primary !text-white': menuOpen && menuOpen === sub.id }">
100
- <div class="absolute left-3 top-1/2 flex h-8 w-8 -translate-y-1/2 items-center">
101
- <div v-html="sub.icon" v-if="sub.iconType === 'svg'"></div>
102
- <LucideIcon :name="sub.icon" :size="sub.iconSize || 19" :strokeWidth="1.4"></LucideIcon>
103
- </div>
104
- {{ sub.name }}
105
- </RouterLink>
106
- </div>
107
- </div>
108
- </ScrollArea>
109
- </section>
110
- <section class="pl-80">
111
- <div class="p-5 text-sm">
112
- <RouterView />
113
- </div>
114
- </section>
115
- </template>
@@ -1,2 +0,0 @@
1
- export const InternalServerError = 'Internal server error, mohon coba beberapa saat lagi';
2
- export const DibutuhkanPerbaikanLabel = '<p class="text-red-500 font-medium text-[12px]">Dibutuhkan perbaikan</p>';
@@ -1,213 +0,0 @@
1
- import type { DasiV2FormSchema } from "../types/form.types";
2
-
3
- /**
4
- * Generic schema mapping utility
5
- * Maps data from API response to form schema defaults
6
- */
7
- export async function schemaMaping(schema: DasiV2FormSchema, items: any) {
8
- // Process each field in schema
9
- for (const [key, item] of Object.entries(schema)) {
10
- processSchemaField(key, item, items);
11
- }
12
- }
13
-
14
- function processSchemaField(key: string, item: any, items: any) {
15
- // Generate search key variations (removes Id, Ids, Code suffixes)
16
- const searchKey = generateSearchKey(key);
17
-
18
- // Try direct mapping from main data
19
- setDirectMapping(key, searchKey, item, items);
20
-
21
- // Fallback: try mapping from parent object if present
22
- // Generic pattern: look for parent[searchKey] or parent[key]
23
- const parentKeys = ['parent', 'parentData', 'related'];
24
- for (const parentKey of parentKeys) {
25
- if ((item.default === undefined || item.default === null || item.default === "") && items?.[parentKey]) {
26
- const parent = items[parentKey];
27
- // Direct key mapping
28
- if (parent[searchKey] !== undefined && parent[searchKey] !== null) {
29
- item.default = parent[searchKey];
30
- break;
31
- } else if (parent[key] !== undefined && parent[key] !== null) {
32
- item.default = parent[key];
33
- break;
34
- } else {
35
- // Selector/organization style keys
36
- if (["dasi_v2_selector_single", "dasi_v2_config_data_selector", "dasi_v2_organization"].includes(item.type)) {
37
- const theKey = key.endsWith("Id")
38
- ? key.substring(0, key.length - 2)
39
- : key.endsWith("Code") && key !== "unitCode"
40
- ? key.substring(0, key.length - 4)
41
- : key.endsWith("Ids")
42
- ? key.substring(0, key.length - 3)
43
- : key;
44
- if (parent[theKey] !== undefined && parent[theKey] !== null) {
45
- item.default = parent[theKey];
46
- break;
47
- }
48
- }
49
- }
50
- }
51
- }
52
-
53
- // Fallback: try mapping from array of related items (first item)
54
- const relatedArrayKeys = ['relatedItems', 'items', 'children'];
55
- for (const arrayKey of relatedArrayKeys) {
56
- if ((item.default === undefined || item.default === null || item.default === "") && Array.isArray(items?.[arrayKey]) && items[arrayKey].length > 0) {
57
- const firstItem = items[arrayKey][0];
58
- // Try direct key mapping
59
- if (firstItem[searchKey] !== undefined && firstItem[searchKey] !== null) {
60
- item.default = firstItem[searchKey];
61
- break;
62
- } else if (firstItem[key] !== undefined && firstItem[key] !== null) {
63
- item.default = firstItem[key];
64
- break;
65
- }
66
- }
67
- }
68
-
69
- // Handle organization mapping
70
- if (key === "organizationId" && items.organization) {
71
- item.default = items.organization;
72
- }
73
-
74
- // Handle accessLevelId mapping
75
- if (key === "accessLevelId") {
76
- item.default = items.accessLevel || null;
77
- }
78
-
79
- // Handle Selector types
80
- if (["dasi_v2_selector_single", "dasi_v2_config_data_selector", "dasi_v2_organization", "file"].includes(item.type)) {
81
- const theKey =
82
- key.substring(key.length - 2, key.length) === "Id"
83
- ? key.substring(0, key.length - 2)
84
- : key.substring(key.length - 4, key.length) === "Code" && key !== "unitCode"
85
- ? key.substring(0, key.length - 4)
86
- : key.substring(key.length - 3, key.length) === "Ids"
87
- ? key.substring(0, key.length - 3)
88
- : key;
89
-
90
- item.default = items[theKey] || null;
91
- }
92
-
93
- // Handle file type
94
- if (item.type === "file") {
95
- const theKey = key.endsWith("Id") ? key.substring(0, key.length - 2) : key;
96
- item.default = items[theKey] || null;
97
- }
98
-
99
- // Handle date range mapping
100
- if (key.endsWith("Range") && item.type === "dasi_v2_date_range") {
101
- // For date range fields, virtual fields will be handled separately
102
- // The template will look for {key}Awal and {key}Akhir fields
103
- }
104
-
105
- // Fallback for createdAt
106
- if (key === "createdAt" && !item.default && items.createdAt) {
107
- item.default = items.createdAt;
108
- }
109
- }
110
-
111
- function getNestedValue(obj: any, path: string): any {
112
- return path.split(".").reduce((current, key) => {
113
- if (current === null || current === undefined) {
114
- return null;
115
- }
116
-
117
- // Handle array notation like "items.0.field"
118
- if (!isNaN(Number(key))) {
119
- const index = Number(key);
120
- return Array.isArray(current) && current[index] ? current[index] : null;
121
- }
122
-
123
- return current[key];
124
- }, obj);
125
- }
126
-
127
- function generateSearchKey(key: string): string {
128
- const suffixes = [
129
- { suffix: "Id", length: 2 },
130
- { suffix: "Ids", length: 3 },
131
- { suffix: "Code", length: 4 }
132
- ];
133
-
134
- for (const { suffix, length } of suffixes) {
135
- if (key.endsWith(suffix) && key !== "unitCode") {
136
- return key.substring(0, key.length - length);
137
- }
138
- }
139
-
140
- return key;
141
- }
142
-
143
- function setDirectMapping(key: string, searchKey: string, item: any, items: any) {
144
- for (const [itemKey, value] of Object.entries(items)) {
145
- if (searchKey === itemKey || key === itemKey) {
146
- // Don't override if value is null/undefined for organization fields
147
- if ((value === null || value === undefined) && key.endsWith("Id")) {
148
- break;
149
- }
150
- item.default = value;
151
- break;
152
- }
153
- }
154
- }
155
-
156
- /**
157
- * Add virtual fields for date range types to support template rendering
158
- */
159
- function addVirtualDateRangeFields(schema: DasiV2FormSchema, items: any) {
160
- // Find all date range fields
161
- for (const [key, item] of Object.entries(schema)) {
162
- if (item.type === "dasi_v2_date_range") {
163
- // Add virtual Start field
164
- const startKey = `${key}Start`;
165
- if (!schema[startKey] && items[startKey]) {
166
- schema[startKey] = {
167
- type: "hidden",
168
- default: items[startKey],
169
- showInDetail: false
170
- };
171
- }
172
-
173
- // Add virtual End field
174
- const endKey = `${key}End`;
175
- if (!schema[endKey] && items[endKey]) {
176
- schema[endKey] = {
177
- type: "hidden",
178
- default: items[endKey],
179
- showInDetail: false
180
- };
181
- }
182
-
183
- // Also try Awal/Akhir pattern as fallback (Indonesian naming)
184
- const awalKey = `${key}Awal`;
185
- if (!schema[awalKey] && items[awalKey]) {
186
- schema[awalKey] = {
187
- type: "hidden",
188
- default: items[awalKey],
189
- showInDetail: false
190
- };
191
- }
192
-
193
- const akhirKey = `${key}Akhir`;
194
- if (!schema[akhirKey] && items[akhirKey]) {
195
- schema[akhirKey] = {
196
- type: "hidden",
197
- default: items[akhirKey],
198
- showInDetail: false
199
- };
200
- }
201
-
202
- // Also try Mulai pattern as fallback
203
- const mulaiKey = `${key}Mulai`;
204
- if (!schema[mulaiKey] && items[mulaiKey]) {
205
- schema[mulaiKey] = {
206
- type: "hidden",
207
- default: items[mulaiKey],
208
- showInDetail: false
209
- };
210
- }
211
- }
212
- }
213
- }