@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,417 +0,0 @@
1
- <script setup lang="ts">
2
- import { onMounted, ref, onBeforeMount, computed } from "vue";
3
- import { useRoute, useRouter } from "vue-router";
4
- import ScrollArea from "../../components/ui/scroll-area/ScrollArea.vue";
5
- import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "../../components/ui/accordion";
6
- import { ChevronDown, LucideSearch, Search } from "lucide-vue-next";
7
- import LucideIcon from "../../components/helper/LucideIcon.vue";
8
- import menuSchema from "../../menu";
9
- import type { Menu, OrgLevel, Submenu } from "../../menu";
10
- import { Dialog, DialogContent } from "../../components/ui/dialog";
11
- import { useAppConfig } from "../../composables/useAppConfig";
12
-
13
- /**
14
- * Init variable
15
- *
16
- */
17
- const router = useRouter();
18
- const route = useRoute();
19
-
20
- const { companyName, logo, organizationLevels, isConfigLoaded } = useAppConfig();
21
-
22
- const open = ref(false);
23
- const commandOpen = ref(false);
24
- const selectedMenuUri = ref("");
25
- const menuOpen = ref("");
26
- const menu = ref<Menu[]>([]);
27
- const menuFiltered = ref<Menu[]>([]);
28
- const menuHistory = ref<Submenu[]>([]);
29
- const q = ref("");
30
- const orgLevel = ref<OrgLevel | null>(null);
31
-
32
- /**
33
- * Keys shortcut to open global search
34
- *
35
- */
36
- function initKeyShortcuts() {
37
- window.addEventListener("keydown", event => {
38
- if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === "k") {
39
- event.preventDefault();
40
- openSearch();
41
- }
42
- });
43
- }
44
-
45
- /**
46
- * Go to menu from global search
47
- *
48
- */
49
- function openMenuItem(item: Menu, submenu: Submenu) {
50
- menuOpen.value = item.id;
51
- commandOpen.value = false;
52
- if (!submenu.url) return;
53
-
54
- const history = {
55
- ...submenu,
56
- icon: item.icon,
57
- iconSize: item.iconSize,
58
- iconType: item.iconType
59
- };
60
- const historyIdx = menuHistory.value.findIndex((r: any) => r.url === submenu.url);
61
- if (historyIdx >= 0) menuHistory.value.splice(historyIdx, 1);
62
- menuHistory.value.unshift(history);
63
- if (menuHistory.value.length > 5) {
64
- menuHistory.value.pop();
65
- }
66
- const historyStr = JSON.stringify(menuHistory.value);
67
- localStorage.setItem("app.menu_history", historyStr);
68
-
69
- router.push(submenu.url);
70
- }
71
-
72
- function openSubmenu(item: Menu, submenu: Submenu) {
73
- menuOpen.value = item.id;
74
- if (!submenu.url) return;
75
- router.push(submenu.url);
76
- }
77
-
78
- function getSelectedMenu() {
79
- if (menuFiltered.value.length > 0) {
80
- for (const item of menuFiltered.value) {
81
- if (item.submenu && item.submenu.length > 0) {
82
- selectedMenuUri.value = item.submenu[0].url || "";
83
- break;
84
- }
85
- }
86
- }
87
- }
88
-
89
- function openSearch() {
90
- commandOpen.value = !commandOpen.value;
91
- getSelectedMenu();
92
- }
93
-
94
- function openSelectedMenu() {
95
- for (const item of menuFiltered.value) {
96
- for (const submenu of item.submenu) {
97
- if (submenu.url === selectedMenuUri.value) {
98
- openMenuItem(item, submenu);
99
- return;
100
- }
101
- }
102
- }
103
- }
104
- function selectPreviousMenuItem() {
105
- let i1 = 0;
106
- for (const item of menuFiltered.value) {
107
- let i2 = 0;
108
- for (const submenu of item.submenu) {
109
- if (submenu.url === selectedMenuUri.value) {
110
- if (menuFiltered.value[i1].submenu[i2 - 1]) {
111
- selectedMenuUri.value = menuFiltered.value[i1].submenu[i2 - 1].url ?? "";
112
- } else if (menuFiltered.value[i1 - 1]?.submenu[menuFiltered.value[i1 - 1].submenu.length - 1]) {
113
- selectedMenuUri.value = menuFiltered.value[i1 - 1].submenu[menuFiltered.value[i1 - 1].submenu.length - 1].url ?? "";
114
- }
115
- return;
116
- }
117
- i2 += 1;
118
- }
119
- i1 += 1;
120
- }
121
- }
122
- function selectNextMenuItem() {
123
- let i1 = 0;
124
- for (const item of menuFiltered.value) {
125
- let i2 = 0;
126
- for (const submenu of item.submenu) {
127
- if (submenu.url === selectedMenuUri.value) {
128
- if (menuFiltered.value[i1].submenu[i2 + 1]) {
129
- selectedMenuUri.value = menuFiltered.value[i1].submenu[i2 + 1].url ?? "";
130
- } else if (menuFiltered.value[i1 + 1]?.submenu[0]) {
131
- selectedMenuUri.value = menuFiltered.value[i1 + 1]?.submenu[0].url ?? "";
132
- }
133
- return;
134
- }
135
- i2 += 1;
136
- }
137
- i1 += 1;
138
- }
139
- }
140
-
141
- function searchMenu() {
142
- menuFiltered.value = [];
143
- const qlower = q.value.toLowerCase();
144
- for (const item of menu.value) {
145
- const headerFound = item.name.toLowerCase().includes(qlower) || (item.keyword || "").toLowerCase().includes(qlower);
146
- if (headerFound) {
147
- menuFiltered.value.push(item);
148
- }
149
- if (!headerFound) {
150
- const submenu: Submenu[] = [];
151
- for (const sub of item.submenu) {
152
- if (sub.name.toLowerCase().includes(qlower) || (sub.keyword || "").toLowerCase().includes(qlower)) {
153
- submenu.push(sub);
154
- }
155
- }
156
- if (submenu.length > 0) {
157
- menuFiltered.value.push({ ...item, submenu });
158
- }
159
- }
160
- }
161
- getSelectedMenu();
162
- }
163
-
164
- onBeforeMount(() => {
165
- searhMenu: for (const item of menuSchema) {
166
- for (const sub of item.submenu) {
167
- if (sub.url === route.path) {
168
- menuOpen.value = item.id;
169
- break searhMenu;
170
- }
171
- }
172
- }
173
- });
174
-
175
- onMounted(() => {
176
- initKeyShortcuts();
177
-
178
- // Use configurable key for organization level
179
- orgLevel.value = localStorage.getItem("app.user.organization.level") as any;
180
-
181
- // For development/testing - provide a fallback if no orgLevel is set
182
- if (!orgLevel.value) {
183
- console.warn('No organization level found in localStorage. Using fallback "superadmin" for development.');
184
- orgLevel.value = "superadmin";
185
- }
186
-
187
- console.log("Current orgLevel:", orgLevel.value);
188
-
189
- const historyStr = localStorage.getItem("app.menu_history");
190
- if (historyStr) {
191
- try {
192
- const history = JSON.parse(historyStr);
193
- if (Array.isArray(history)) menuHistory.value = history;
194
- } catch (_) {}
195
- }
196
-
197
- // api.get('/auth/directory').then((r) => {
198
- // for (const item of menuSchema) {
199
- // for (const sub of item.submenu) {
200
- // if (sub.url === route.path) menuOpen.value = item.id;
201
- // sub.visible = r.data.data.findIndex((row: any) => row.url === sub.url) >= 0;
202
- // }
203
- // item.submenu = item.submenu.filter(sub => sub.visible);
204
- // if (item.submenu.length > 0) menu.value.push(item);
205
- // }
206
- // })
207
-
208
- for (const item of menuSchema) {
209
- for (const sub of item.submenu) {
210
- if (sub.url === route.path) menuOpen.value = item.id;
211
- // More lenient visibility check - show if orgLevel matches or if superadmin or if no orgLevels restriction
212
- sub.visible = (orgLevel.value && sub.orgLevels.includes(orgLevel.value)) || orgLevel.value === "superadmin" || !sub.orgLevels || sub.orgLevels.length === 0;
213
-
214
- console.log(`Menu item "${sub.name}": orgLevel=${orgLevel.value}, required=${sub.orgLevels}, visible=${sub.visible}`);
215
- }
216
- item.submenu = item.submenu.filter(sub => sub.visible);
217
- if (item.submenu.length > 0) {
218
- menu.value.push(item);
219
- console.log(`Added menu group "${item.name}" with ${item.submenu.length} items`);
220
- }
221
- }
222
-
223
- console.log("Final menu structure:", menu.value);
224
- // menu.value = menuSchema;
225
-
226
- // api.get('/auth/page-activity').then((r) => {
227
- // menu.value = r.data.data;
228
- // })
229
- });
230
-
231
- defineExpose({ openSearch });
232
- </script>
233
-
234
- <template>
235
- <div
236
- class="leftbar fixed bottom-0 left-0 top-0 z-50 w-20 border-r bg-white transition-all hover:w-[380px] hover:shadow-lg dark:border-dark_border2 dark:bg-dark_bg"
237
- :class="[{ open: open }]"
238
- v-on:mouseenter="() => (open = true)"
239
- v-on:mouseleave="() => (open = false)">
240
- <ScrollArea class="h-full">
241
- <!-- Sticky header with logo and search -->
242
- <div class="sticky-header sticky top-0 z-50 bg-white dark:bg-dark_bg">
243
- <div class="overflow-hidden pt-6">
244
- <div class="w-[380px] pl-3">
245
- <RouterLink to="/" class="relative flex items-center">
246
- <div class="app-logo mr-3 h-14 w-14 bg-no-repeat transition-all" :style="{ backgroundImage: `url(${logo})` }"></div>
247
- <div class="text-4xl font-bold text-primary_main">
248
- {{ companyName }}
249
- </div>
250
- <!-- <div v-if="isConfigLoaded" class="ml-2 text-xs text-green-600 dark:text-green-400">✓ Config Loaded</div>
251
- <div v-else class="ml-2 text-xs text-red-600 dark:text-red-400">⚠ Config Loading...</div> -->
252
- </RouterLink>
253
- </div>
254
- </div>
255
- <div class="w-[380px] px-5 pt-6">
256
- <div
257
- class="relative flex h-10 cursor-pointer items-center rounded-md text-gray-500 transition dark:hover:border-dark_bg3"
258
- :class="[{ border: open, 'bg-gray-100 dark:bg-dark_bg2': open }]"
259
- v-on:click="commandOpen = true">
260
- <div class="mr-4 flex h-10 w-10 items-center justify-center rounded-md">
261
- <Search class="scale-90 2xl:scale-100" />
262
- </div>
263
- <span class="text-sm opacity-0 transition" :class="[{ 'opacity-100': open }]">Search...</span>
264
- <span class="absolute right-3 top-1/2 -translate-y-1/2 text-sm text-gray-400 opacity-0 transition" :class="[{ 'opacity-100': open }]">⌘K</span>
265
- </div>
266
- <div class="mb-3 mt-3 h-px w-10 bg-gray-200" :class="[{ 'opacity-0': open }]"></div>
267
- </div>
268
- </div>
269
-
270
- <!-- Scrollable content -->
271
- <div class="overflow-hidden pb-14">
272
- <div class="w-[380px] px-5">
273
- <Accordion collapsible type="single" :default-value="menuOpen">
274
- <AccordionItem v-for="(item, i) in menu" :key="i" :value="item.id" class="relative mb-2 border-none p-0 font-medium text-gray-500 dark:text-dark_text">
275
- <AccordionTrigger class="relative block p-0 hover:no-underline">
276
- <RouterLink to="#" class="flex items-center rounded-md transition hover:bg-hover_main hover:text-primary_main dark:hover:bg-dark_bg3 dark:hover:text-dark_text">
277
- <div
278
- class="relative mr-4 flex h-10 w-10 items-center justify-center overflow-hidden rounded-md text-gray-800 dark:text-dark_text"
279
- :class="{
280
- 'bg-active_main dark:bg-blue-500 dark:text-white': menuOpen === item.id
281
- }">
282
- <div class="relative z-3">
283
- <div v-html="item.icon" v-if="item.iconType === 'svg'"></div>
284
- <LucideIcon :name="item.icon" :size="item.iconSize || 24" :strokeWidth="1.4" class="scale-[.85] 2xl:scale-100" />
285
- </div>
286
- </div>
287
- <div class="text-[13px] opacity-0 transition 2xl:text-[13px]" :class="[{ 'opacity-100': open }]">
288
- {{ item.name }}
289
- </div>
290
- </RouterLink>
291
- <template v-slot:icon>
292
- <ChevronDown class="absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400 dark:text-active_main"></ChevronDown>
293
- </template>
294
- </AccordionTrigger>
295
- <AccordionContent v-if="item.submenu && item.submenu.length > 0">
296
- <div class="group relative py-0.5 pl-10" v-for="(sub, i) in item.submenu" :key="i">
297
- <div
298
- class="absolute bottom-0 left-5 top-0 -ml-px w-0.5 bg-gray-200 group-hover:bg-primary_main dark:bg-dark_bg2/60 dark:group-hover:bg-dark_bg4"
299
- :class="{ '!bg-blue-500': sub.url === route.path }"></div>
300
- <div class="px-4 pb-px pt-3 text-xs uppercase tracking-wider text-gray-400" v-if="sub.type === 'header'">
301
- {{ sub.name }}
302
- </div>
303
- <div
304
- class="relative block cursor-pointer rounded-md px-4 py-2 text-xs transition hover:bg-hover_main hover:text-primary_main dark:hover:bg-dark_bg3 dark:hover:text-dark_text 2xl:text-[13px]"
305
- :class="{
306
- 'bg-active_main text-primary_main dark:!bg-blue-500 dark:!text-white': sub.url === route.path,
307
- '!text-transparent dark:!text-transparent': !open
308
- }"
309
- v-on:click="openSubmenu(item, sub)"
310
- v-else>
311
- {{ sub.name }}
312
- <div
313
- class="absolute -left-4 top-3 h-2 w-2 rounded-full bg-orange-300 dark:bg-orange-700"
314
- v-if="sub.url && !sub.ok"
315
- :class="{
316
- '!bg-orange-300': sub.connectApi,
317
- '!bg-green-500': sub.finished
318
- }"></div>
319
- </div>
320
- <template v-if="sub.submenu && sub.submenu.length > 0">
321
- <div class="pl-4" v-for="(sub2, i2) in sub.submenu" :key="i2">
322
- <RouterLink :to="sub2.url || '#'" class="block rounded-md px-4 py-2 text-sm hover:bg-hover_main hover:text-primary_main">
323
- {{ sub2.name }}
324
- </RouterLink>
325
- </div>
326
- </template>
327
- </div>
328
- </AccordionContent>
329
- </AccordionItem>
330
- </Accordion>
331
- </div>
332
- </div>
333
- </ScrollArea>
334
- </div>
335
-
336
- <Dialog v-model:open="commandOpen">
337
- <DialogContent class="block w-[calc(100%-40px)] max-w-[680px] overflow-hidden p-0 dark:bg-dark_bg2">
338
- <div class="relative border-b">
339
- <input
340
- type="text"
341
- class="w-full px-12 py-3 dark:bg-dark_bg2"
342
- placeholder="Cari halaman..."
343
- v-model="q"
344
- v-on:input.prevent="searchMenu"
345
- v-on:keydown.enter.prevent="openSelectedMenu"
346
- v-on:keydown.up.prevent="selectPreviousMenuItem"
347
- v-on:keydown.down.prevent="selectNextMenuItem" />
348
- <LucideSearch class="absolute left-3 top-3 opacity-60" :size="20" />
349
- </div>
350
- <div class="h-[400px]">
351
- <ScrollArea class="h-full">
352
- <section class="py-3" v-if="!q">
353
- <div class="px-5 pt-3 text-center" v-if="menuHistory.length > 0">
354
- <div class="mb-6 px-5 text-sm opacity-60">Ketik untuk mulai pencarian halaman</div>
355
- <h4 class="mb-4 font-medium">Riwayat Halaman</h4>
356
- <div class="flex flex-wrap items-start justify-center gap-0">
357
- <button class="w-24 text-center leading-none" v-for="(item, i) in menuHistory" :key="i" v-on:click="openMenuItem(item as any, item)">
358
- <div class="mx-auto mb-2 flex size-20 items-center justify-center rounded-lg border text-slate-500 hover:border-slate-500 hover:bg-slate-100 hover:text-blue-600 hover:shadow-md">
359
- <LucideIcon :name="item.icon" :size="item.iconSize ? item.iconSize + 20 : 44" :strokeWidth="1.4" class="mx-auto flex-none" />
360
- </div>
361
- <span class="text-xs font-medium leading-none">
362
- {{ item.name }}
363
- </span>
364
- </button>
365
- </div>
366
- </div>
367
- <div class="px-5 text-sm opacity-60" v-else>Ketik untuk mulai pencarian halaman</div>
368
- </section>
369
- <section class="px-5 py-3 text-sm opacity-60" v-else-if="menuFiltered.length < 1">
370
- <i>Halaman tidak ditemukan!</i>
371
- </section>
372
- <section class="py-3" v-else>
373
- <div v-for="(item, i1) in menuFiltered" :key="item.id" class="px-2 pb-3">
374
- <h4 class="mb-1 px-3 text-[13px] font-medium opacity-85">
375
- {{ item.name }}
376
- </h4>
377
- <div v-for="(submenu, i2) in item.submenu" :key="submenu.url">
378
- <button
379
- v-on:click="openMenuItem(item, submenu)"
380
- v-if="submenu.type !== 'header'"
381
- class="flex w-full cursor-pointer items-center rounded-sm px-3 py-1.5 text-sm hover:!bg-blue-500 hover:!text-white dark:hover:!bg-blue-600"
382
- :class="{
383
- 'bg-blue-50 text-white dark:bg-dark_bg5': submenu.url === route.path,
384
- '!bg-blue-200 dark:!bg-dark_bg5': submenu.url === selectedMenuUri
385
- }">
386
- <LucideIcon :name="item.icon" :size="item.iconSize ? item.iconSize - 8 : 16" :strokeWidth="1.4" class="mr-3 flex-none" />
387
- {{ submenu.name }}
388
- </button>
389
- </div>
390
- </div>
391
- </section>
392
- </ScrollArea>
393
- </div>
394
- </DialogContent>
395
- </Dialog>
396
- </template>
397
-
398
- <style lang="scss">
399
- .leftbar {
400
- .app-logo {
401
- background-position: top center;
402
- background-size: 2.6rem auto;
403
- background-repeat: no-repeat;
404
- }
405
-
406
- &.open {
407
- .app-logo {
408
- background-size: 3.5rem auto;
409
- }
410
- }
411
-
412
- .sticky-header {
413
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
414
- border-bottom: 1px solid rgba(0, 0, 0, 0.05);
415
- }
416
- }
417
- </style>
@@ -1,108 +0,0 @@
1
- <script setup lang="ts">
2
- import PageActivityContent from "../../components/pages/PageActivityContent.vue";
3
- import type { CustomTab } from "../../components/pages/PageTab.vue";
4
- import type { DasiV2FormSchema, FormSchema, FormSchemaHooks } from "../../types/form.types";
5
- import type { ColumnRef } from "../../vueform/config/types";
6
- import { nextTick, onMounted, ref, watch } from "vue";
7
- import { useRoute } from "vue-router";
8
-
9
- const route = useRoute();
10
-
11
- /**
12
- * As default page initialization
13
- * will do automatic get from routes
14
- *
15
- * If manualInit is set to true, you have to hit
16
- * initPage manualy after setting pageCode and endpoint
17
- *
18
- */
19
- const props = defineProps(['manualInit']);
20
-
21
- /**
22
- * Base
23
- *
24
- */
25
- const pageCode = defineModel<string>('pageCode', { default: '' });
26
- const endpoint = defineModel<string>('endpoint', { default: '' });
27
-
28
- /**
29
- * Form by Vueform
30
- *
31
- */
32
- const formSchema = ref<DasiV2FormSchema>();
33
- const formHooks = ref<FormSchemaHooks>();
34
-
35
- /**
36
- * Model binding
37
- *
38
- */
39
- const data = ref<any[]>();
40
- const customTabs = ref<CustomTab[]>();
41
- const columns = ref<ColumnRef[]>();
42
- const tab = ref<string>();
43
- const loading = ref<boolean>();
44
- const dataError = ref<string | null>();
45
-
46
- /**
47
- * El
48
- *
49
- */
50
- const pac = ref<InstanceType<typeof PageActivityContent>>();
51
-
52
- /**
53
- * Init page with timeout or nextTick
54
- * to make sure the model already set
55
- *
56
- */
57
- async function initPage() {
58
- await nextTick();
59
- pac.value?.initPage();
60
- }
61
-
62
- /**
63
- * Re-init page
64
- * if route params changed
65
- *
66
- */
67
- watch(
68
- () => route.params,
69
- (newParams) => {
70
- if (props.manualInit) return;
71
-
72
- /**
73
- * Only reinitialize if the page or activity params have changed
74
- *
75
- */
76
- if (pageCode.value !== String(newParams.page) || endpoint.value !== String(newParams.activity)) {
77
- pageCode.value = String(newParams.page);
78
- endpoint.value = String(newParams.activity);
79
- initPage();
80
- }
81
- },
82
- { deep: true },
83
- );
84
-
85
- onMounted(() => {
86
- if (props.manualInit) return;
87
- pageCode.value = String(route.params.page);
88
- endpoint.value = String(route.params.activity);
89
- initPage();
90
- });
91
-
92
- defineExpose({ initPage });
93
- </script>
94
-
95
- <template>
96
- <PageActivityContent ref="pac"
97
- :page-code="pageCode"
98
- :endpoint="endpoint"
99
- v-model:schema="formSchema"
100
- v-model:hooks="formHooks"
101
- v-model:data="data"
102
- v-model:custom-tabs="customTabs"
103
- v-model:columns="columns"
104
- v-model:tab="tab"
105
- v-model:loading="loading"
106
- v-model:data-error="dataError"
107
- />
108
- </template>