@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,96 +0,0 @@
1
- <script setup lang="ts">
2
- import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "../../components/ui/alert-dialog";
3
- import Input from "../../components/ui/input/Input.vue";
4
- import { ref } from "vue";
5
- import LucideIcon from "../../components/helper/LucideIcon.vue";
6
- import BtnPrimary from "../button/BtnPrimary.vue";
7
- import { cn } from "../../lib/utils";
8
-
9
- export interface ConfirmDialogOptions {
10
- title: string;
11
- description: string;
12
- cancelLabel: string;
13
- actionLabel: string;
14
- negative: boolean;
15
- randomQuestion?: boolean;
16
- actionIcon?: string;
17
- contentClass?: string;
18
- }
19
-
20
- const title = ref("");
21
- const description = ref("");
22
- const cancelLabel = ref("");
23
- const actionLabel = ref("");
24
- const randA = ref(0);
25
- const randB = ref(0);
26
- const randAnswer = ref("");
27
- const randError = ref(false);
28
- const negative = ref(false);
29
- const next = ref<Function | null>(null);
30
- const confirmOpen = ref(false);
31
- const randomQuestion = ref(false);
32
- const actionIcon = ref();
33
- const loadingRestore = defineModel<boolean>("loadingRestore", { default: false });
34
- const contentClass = ref("");
35
-
36
- const open = (options: ConfirmDialogOptions, n: Function | null) => {
37
- title.value = options.title;
38
- description.value = options.description;
39
- cancelLabel.value = options.cancelLabel;
40
- actionLabel.value = options.actionLabel;
41
- negative.value = options.negative;
42
- randomQuestion.value = options.randomQuestion || false;
43
- actionIcon.value = options.actionIcon || null;
44
- contentClass.value = options.contentClass || "";
45
- randA.value = Math.floor(Math.random() * 10) + 1;
46
- randB.value = Math.floor(Math.random() * 10) + 1;
47
- randAnswer.value = "";
48
- randError.value = false;
49
- next.value = n;
50
- confirmOpen.value = true;
51
- };
52
-
53
- function close(b: boolean) {
54
- if (b && randomQuestion.value && Number(randAnswer.value) !== randA.value + randB.value) {
55
- randError.value = true;
56
- return;
57
- }
58
- confirmOpen.value = false;
59
- if (next.value) next.value(b);
60
- }
61
-
62
- defineExpose({ open });
63
- </script>
64
-
65
- <template>
66
- <AlertDialog v-model:open="confirmOpen">
67
- <AlertDialogContent :class="cn('w-106 dark:bg-dark_bg2', contentClass)">
68
- <AlertDialogHeader>
69
- <AlertDialogTitle>{{ title }}</AlertDialogTitle>
70
- <AlertDialogDescription>
71
- <div v-html="description"></div>
72
- <div class="mt-4" v-if="randomQuestion">
73
- <div class="mb-[2px] ml-1 text-sm font-semibold">Berapa {{ randA }} + {{ randB }}?</div>
74
- <Input placeholder="Jawaban..." :class="{ 'border-red-500 text-red-500': randError }" v-model="randAnswer" v-on:input="randError = false" type="number" />
75
- <div class="ml-1 mt-[2px] text-xs text-red-500" v-if="randError">Jawaban Anda salah, silahkan coba lagi</div>
76
- </div>
77
- </AlertDialogDescription>
78
- </AlertDialogHeader>
79
- <slot name="content"></slot>
80
- <AlertDialogFooter class="pt-4">
81
- <AlertDialogCancel class="border-none text-primary_main shadow-none transition hover:bg-blue-100 hover:text-blue-500">
82
- {{ cancelLabel }}
83
- </AlertDialogCancel>
84
- <BtnPrimary
85
- v-on:click.stop="close(true)"
86
- :loading="loadingRestore"
87
- :disabled="loadingRestore"
88
- class="hover:bg-primary_main_hover h-auto bg-primary_main transition 2xl:h-auto"
89
- :class="{ 'bg-red-500 hover:bg-red-600': negative, 'pl-3 pr-4': actionIcon }">
90
- <LucideIcon v-if="actionIcon" :name="actionIcon" :size="18" class="-ml-1 mr-2" />
91
- {{ actionLabel }}
92
- </BtnPrimary>
93
- </AlertDialogFooter>
94
- </AlertDialogContent>
95
- </AlertDialog>
96
- </template>
@@ -1,53 +0,0 @@
1
- <script setup lang="ts">
2
- import { Dialog, DialogContent, DialogTitle, DialogTrigger } from "../../components/ui/dialog";
3
- import DialogFooter from "../../components/ui/dialog/DialogFooter.vue";
4
- import { DialogOverlay, DialogPortal } from "radix-vue";
5
-
6
- const props = defineProps({
7
- id: {
8
- type: String,
9
- default: ""
10
- },
11
- titleClass: {
12
- type: String,
13
- default: ""
14
- },
15
- closeClass: {
16
- type: String,
17
- default: ""
18
- },
19
- hideClose: {
20
- type: Boolean,
21
- default: false
22
- },
23
- showTrigger: {
24
- type: Boolean,
25
- default: true
26
- }
27
- });
28
-
29
- const open = defineModel("open", {
30
- type: Boolean,
31
- default: false
32
- });
33
- </script>
34
-
35
- <template>
36
- <Dialog v-model:open="open">
37
- <DialogTrigger class="w-full" v-if="showTrigger">
38
- <slot name="trigger" />
39
- </DialogTrigger>
40
- <DialogContent class="z-[109] p-0 dark:bg-dark_bg2">
41
- <template #overlay>
42
- <DialogOverlay class="fixed inset-0 z-[107] bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0" />
43
- </template>
44
- <DialogTitle class="text-xl" :class="props.titleClass">
45
- <slot name="title">Modal</slot>
46
- </DialogTitle>
47
- <slot name="content">This is description for dialog content</slot>
48
- <DialogFooter>
49
- <slot name="footer"> </slot>
50
- </DialogFooter>
51
- </DialogContent>
52
- </Dialog>
53
- </template>
@@ -1,212 +0,0 @@
1
- <script setup lang="ts">
2
- import DialogBase from "./DialogBase.vue";
3
- import { LucideChevronFirst, LucideChevronLast, LucideChevronLeft, LucideChevronRight, Search } from "lucide-vue-next";
4
- import DialogClose from "../../components/ui/dialog/DialogClose.vue";
5
- import { ref, watch } from "vue";
6
- import ScrollArea from "../../components/ui/scroll-area/ScrollArea.vue";
7
- import BtnCircle from "../../components/button/BtnCircle.vue";
8
- import BtnPrimary from "../../components/button/BtnPrimary.vue";
9
- import BtnSecondary from "../../components/button/BtnSecondary.vue";
10
- import LoadingIndicator from "../../components/loadings/LoadingIndicator.vue";
11
- import CheckboxElement from "../../components/helper/CheckboxElement.vue";
12
-
13
- export interface PageMeta {
14
- total: number;
15
- page: number;
16
- limit: number;
17
- }
18
-
19
- interface Props {
20
- options: any[];
21
- optionAttribute: string;
22
- valueAttribute: string;
23
- descriptionAttribute: string;
24
- showTrigger: boolean;
25
- displaySearch: boolean;
26
- displayPagination: boolean;
27
- loading: boolean;
28
- selectAllLoading: boolean;
29
- mutiple: boolean;
30
- pageMeta: PageMeta;
31
- selectedCount: number;
32
- checkedAllStatus: boolean | "indeterminate";
33
- }
34
-
35
- const props = withDefaults(defineProps<Props>(), {
36
- options() {
37
- return [];
38
- },
39
- optionAttribute: "label",
40
- valueAttribute: "value",
41
- descriptionAttribute: "description",
42
- showTrigger: true,
43
- displaySearch: true,
44
- displayPagination: true,
45
- loading: false,
46
- selectAllLoading: false,
47
- mutiple: false,
48
- selectedCount: 0,
49
- pageMeta() {
50
- return { total: 0, page: 0, limit: 0 };
51
- },
52
- checkedAllStatus: false
53
- });
54
-
55
- const emit = defineEmits(["select", "search", "selectAll", "clearSelections", "navigate", "finishSelection"]);
56
- const q = ref("");
57
- const searchInput = ref<HTMLInputElement>();
58
- const open = defineModel("open", {
59
- type: Boolean,
60
- default: false
61
- });
62
- const searchTimeout: any = ref(null);
63
-
64
- function onSelect(option: any) {
65
- emit("select", option);
66
- if (!props.mutiple) open.value = false;
67
- }
68
-
69
- function onSearch(e: any) {
70
- if (searchTimeout.value) clearTimeout(searchTimeout.value);
71
- searchTimeout.value = setTimeout(() => {
72
- q.value = e.target.value;
73
- emit("search", e.target.value);
74
- }, 500);
75
- }
76
-
77
- // Watch for dialog open state changes
78
- watch(open, newValue => {
79
- if (newValue) {
80
- // Clear search query when dialog opens
81
- q.value = "";
82
- // Clear the input field as well
83
- setTimeout(() => {
84
- if (searchInput.value) {
85
- searchInput.value.value = "";
86
- }
87
- }, 50);
88
- }
89
- });
90
- </script>
91
-
92
- <template>
93
- <DialogBase v-model:open="open" :show-trigger="props.showTrigger">
94
- <template #trigger>
95
- <slot name="trigger"></slot>
96
- </template>
97
- <template #title>
98
- <div class="px-5 pt-4 text-base font-medium">
99
- <slot name="title">Selector</slot>
100
- </div>
101
- </template>
102
- <template #content>
103
- <div class="relative -mt-3 w-auto items-center pl-6 pt-2" v-if="props.displaySearch">
104
- <input
105
- ref="searchInput"
106
- id="search"
107
- type="text"
108
- placeholder="Pencarian..."
109
- v-on:input="onSearch"
110
- class="text-md h-auto min-h-0 w-full border-none px-0 py-0 pl-7 dark:bg-dark_bg2"
111
- style="border: none !important; box-shadow: none !important" />
112
- <span class="absolute left-2.5 top-2.5 flex items-center justify-center px-2 text-gray-400">
113
- <Search :size="20" />
114
- </span>
115
- </div>
116
- <slot name="content"></slot>
117
- <div
118
- class="-my-2 border-t px-3.5 py-2 hover:bg-slate-50 dark:hover:bg-dark_bg4"
119
- :class="{
120
- 'cursor-pointer': !props.selectAllLoading,
121
- 'cursor-wait': props.selectAllLoading
122
- }"
123
- v-if="props.mutiple"
124
- @click="!props.selectAllLoading && emit('selectAll')">
125
- <div class="flex items-center px-1">
126
- <LoadingIndicator v-if="props.selectAllLoading" class="size-5" />
127
- <CheckboxElement :checked="checkedAllStatus" :disabled="props.selectAllLoading" v-else />
128
- <span class="ml-3" :class="{ 'font-normal italic opacity-45': props.selectAllLoading }">
129
- {{ props.selectAllLoading ? "Memuat semua data..." : "Select All" }}
130
- </span>
131
- </div>
132
- </div>
133
- <div class="-mb-4 -mt-2 h-screen max-h-[56vh] border-t" v-if="loading">
134
- <div class="mx-[22px] flex items-center py-3 text-sm italic text-gray-400"><LoadingIndicator class="mr-3 size-5" /> Loading...</div>
135
- </div>
136
- <div class="-mb-4 -mt-2 h-screen max-h-[56vh] border-t" v-else-if="options.length < 1">
137
- <div class="mx-6 py-3 text-sm italic leading-snug text-gray-400">
138
- <b>Tidak ada data ditemukan</b>
139
- <p class="text-[13px]">
140
- <template v-if="q"
141
- >Tidak ada data dengan kata kunci pencarian <b>"{{ q }}"</b></template
142
- >
143
- <template v-else>Mohon kembali lagi nanti</template>
144
- </p>
145
- </div>
146
- </div>
147
- <ScrollArea class="-mb-4 -mt-2 h-screen max-h-[56vh] border-t" v-else>
148
- <div v-for="(option, i) in props.options" class="mx-1 my-1 cursor-pointer rounded-md hover:bg-slate-100 dark:hover:bg-dark_bg4" :key="i" @click="onSelect(option)">
149
- <slot name="option" :option="option">
150
- <div class="flex flex-col">
151
- <div>{{ option[optionAttribute] }}</div>
152
- <div v-if="option[descriptionAttribute]">
153
- {{ option[descriptionAttribute] }}
154
- </div>
155
- </div>
156
- </slot>
157
- </div>
158
- </ScrollArea>
159
- <div class="-mb-4 flex h-10 flex-none items-center border-t px-6 text-[13px] text-gray-400" v-if="pageMeta.total > 0">
160
- <template v-if="loading">...</template>
161
- <template v-else>
162
- Page {{ props.pageMeta.page }} of {{ Math.ceil(props.pageMeta.total / props.pageMeta.limit) }} / {{ props.pageMeta.total.toLocaleString("id") }} items
163
- <div class="ml-auto flex flex-none items-center">
164
- <template v-if="pageMeta.page > 1">
165
- <BtnCircle class="size-7" @click="emit('navigate', 'first')">
166
- <LucideChevronFirst :size="16" />
167
- </BtnCircle>
168
- <BtnCircle class="size-7" @click="emit('navigate', 'prev')">
169
- <LucideChevronLeft :size="16" />
170
- </BtnCircle>
171
- </template>
172
- <template v-else>
173
- <BtnCircle class="size-7 cursor-default !bg-transparent text-gray-300">
174
- <LucideChevronFirst :size="16" />
175
- </BtnCircle>
176
- <BtnCircle class="size-7 cursor-default !bg-transparent text-gray-300">
177
- <LucideChevronLeft :size="16" />
178
- </BtnCircle>
179
- </template>
180
- <template v-if="pageMeta.page < Math.ceil(props.pageMeta.total / props.pageMeta.limit)">
181
- <BtnCircle class="size-7" @click="emit('navigate', 'next')">
182
- <LucideChevronRight :size="16" />
183
- </BtnCircle>
184
- <BtnCircle class="size-7" @click="emit('navigate', 'last')">
185
- <LucideChevronLast :size="16" />
186
- </BtnCircle>
187
- </template>
188
- <template v-else>
189
- <BtnCircle class="size-7 cursor-default !bg-transparent text-gray-300">
190
- <LucideChevronRight :size="16" />
191
- </BtnCircle>
192
- <BtnCircle class="size-7 cursor-default !bg-transparent text-gray-300">
193
- <LucideChevronLast :size="16" />
194
- </BtnCircle>
195
- </template>
196
- </div>
197
- </template>
198
- </div>
199
- <div class="-mb-4 flex flex-none items-center border-t px-6" v-if="props.mutiple">
200
- <div class="text-sm font-semibold" v-if="selectedCount > 0">{{ selectedCount }} terpilih</div>
201
- <div class="text-sm italic text-gray-400" v-else>Pilih salah satu item</div>
202
- <BtnSecondary class="ml-2 !h-8 rounded-full px-3 text-sm" v-if="selectedCount > 0" @click="emit('clearSelections')"> Clear selection </BtnSecondary>
203
- <div class="ml-auto flex items-center py-2.5">
204
- <DialogClose as-child>
205
- <BtnSecondary class="ml-2 h-10 text-[15px]">Batal</BtnSecondary>
206
- </DialogClose>
207
- <BtnPrimary class="ml-2 h-10 px-4 text-[15px]" @click="emit('finishSelection')">Selesai Pilihan</BtnPrimary>
208
- </div>
209
- </div>
210
- </template>
211
- </DialogBase>
212
- </template>
@@ -1,63 +0,0 @@
1
- <script setup lang="ts">
2
- import { AlertDialog, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "../../components/ui/alert-dialog";
3
- import { ref, watch } from "vue";
4
-
5
- export interface ErrorDialogOptions {
6
- title: string;
7
- description: string;
8
- actionLabel?: string;
9
- }
10
-
11
- const title = ref("");
12
- const description = ref("");
13
- const actionLabel = ref("");
14
- const dialogOpen = defineModel("open", { default: false });
15
- const emits = defineEmits(["close"]);
16
- const nextFunc = ref<Function | null>(null);
17
-
18
- const open = (options: ErrorDialogOptions, next?: Function) => {
19
- title.value = options.title;
20
- description.value = options.description;
21
- actionLabel.value = options.actionLabel || "Tutup";
22
- nextFunc.value = next || null;
23
- dialogOpen.value = true;
24
- };
25
-
26
- function close(b: boolean) {
27
- dialogOpen.value = false;
28
- }
29
-
30
- watch(dialogOpen, newVal => {
31
- if (!newVal) {
32
- if (nextFunc.value) nextFunc.value(newVal);
33
- emits("close");
34
- }
35
- });
36
-
37
- defineExpose({ open, close });
38
- </script>
39
-
40
- <template>
41
- <AlertDialog v-model:open="dialogOpen" class="z-999">
42
- <AlertDialogContent class="w-96 bg-red-100 text-red-500">
43
- <AlertDialogHeader>
44
- <AlertDialogTitle>
45
- <slot name="title">{{ title }}</slot>
46
- </AlertDialogTitle>
47
- <AlertDialogDescription class="text-red-500">
48
- <slot name="description">
49
- <div v-html="description"></div>
50
- </slot>
51
- </AlertDialogDescription>
52
- </AlertDialogHeader>
53
- <slot name="content"></slot>
54
- <AlertDialogFooter class="pt-4">
55
- <AlertDialogCancel class="hover:bg-primary_main_hover border-none text-primary_main shadow-none transition">
56
- <slot name="actionLabel">
57
- {{ actionLabel }}
58
- </slot>
59
- </AlertDialogCancel>
60
- </AlertDialogFooter>
61
- </AlertDialogContent>
62
- </AlertDialog>
63
- </template>
@@ -1,141 +0,0 @@
1
- <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue";
3
- import { LucideFileText, LucideSave, LucideX } from "lucide-vue-next";
4
- import { Sheet, SheetContent, SheetFooter, SheetHeader, SheetTitle } from "../../components/ui/sheet";
5
- import {
6
- AlertDialog,
7
- AlertDialogAction,
8
- AlertDialogCancel,
9
- AlertDialogContent,
10
- AlertDialogDescription,
11
- AlertDialogFooter,
12
- AlertDialogHeader,
13
- AlertDialogTitle,
14
- AlertDialogTrigger
15
- } from "../../components/ui/alert-dialog";
16
- import BtnPrimary from "../../components/button/BtnPrimary.vue";
17
- import BtnSecondary from "../../components/button/BtnSecondary.vue";
18
- import { cn } from "../../lib/utils";
19
- import Skeleton from "../../components/ui/skeleton/Skeleton.vue";
20
- import BtnCircle from "../../components/button/BtnCircle.vue";
21
-
22
- interface Props {
23
- title?: string;
24
- saveBtnLabel?: string;
25
- cancelBtnLabel?: string;
26
- cancelConfirmTitle?: string;
27
- cancelConfirmMsg?: string;
28
- class?: HTMLAttributes["class"];
29
- loading?: boolean;
30
- hideFooter?: boolean;
31
- errorClass?: string;
32
- }
33
-
34
- const emits = defineEmits(["saveClick", "cancelClick"]);
35
-
36
- const props = withDefaults(defineProps<Props>(), {
37
- title: "Add New Data",
38
- saveBtnLabel: "Simpan",
39
- cancelBtnLabel: "Batal",
40
- cancelConfirmTitle: "Batalkan",
41
- cancelConfirmMsg: "Apakah kamu yakin ingin membatalkan perubahan? semua perubahan akan terbuang.",
42
- loading: false,
43
- hideFooter: false
44
- });
45
-
46
- const open = defineModel<boolean>("open");
47
- const saving = defineModel<boolean>("saving", { default: false });
48
- const error = defineModel<string | null>("error", { default: null });
49
-
50
- function onInteractOutside(e: any) {
51
- e.preventDefault();
52
- }
53
-
54
- function cancelClicked() {
55
- open.value = false;
56
- saving.value = false;
57
- emits("cancelClick");
58
- }
59
- </script>
60
-
61
- <template>
62
- <Sheet v-model:open="open">
63
- <SheetContent
64
- :class="cn('w-11/12 !max-w-[1240px] bg-white px-8 pt-2 dark:border-none dark:bg-dark_bg2 2xl:pt-3', props.class)"
65
- v-on:escape-key-down="onInteractOutside"
66
- v-on:pointer-down-outside="onInteractOutside">
67
- <SheetHeader class="relative gap-y-0.5 pl-6">
68
- <AlertDialog>
69
- <AlertDialogTrigger>
70
- <div
71
- class="absolute -left-4 -top-[2px] flex size-7 cursor-pointer items-center justify-center rounded-full text-gray-500 transition hover:bg-hover_main hover:text-primary_main 2xl:top-0 2xl:size-8">
72
- <LucideX class="size-5 2xl:size-6"></LucideX>
73
- </div>
74
- </AlertDialogTrigger>
75
- <AlertDialogContent class="w-96">
76
- <AlertDialogHeader>
77
- <AlertDialogTitle>{{ props.cancelConfirmTitle }}</AlertDialogTitle>
78
- <AlertDialogDescription>{{ props.cancelConfirmMsg }}</AlertDialogDescription>
79
- </AlertDialogHeader>
80
- <AlertDialogFooter class="pt-4">
81
- <AlertDialogCancel class="hover:bg-primary_main_hover border-none text-primary_main shadow-none transition">Kembali</AlertDialogCancel>
82
- <AlertDialogAction v-on:click="cancelClicked" class="bg-red-500 transition hover:bg-red-600">Batalkan</AlertDialogAction>
83
- </AlertDialogFooter>
84
- </AlertDialogContent>
85
- </AlertDialog>
86
- <SheetTitle>
87
- <h4 class="text-sm font-medium dark:text-dark_text 2xl:text-lg">
88
- {{ props.title }}
89
- </h4>
90
- </SheetTitle>
91
- </SheetHeader>
92
- <section class="absolute bottom-[56px] left-0 right-0 top-10 border-b border-t bg-slate-50 dark:bg-dark_bg2 2xl:bottom-[68px] 2xl:top-14" :class="{ '!bottom-0': hideFooter }">
93
- <div class="h-full overflow-auto">
94
- <div class="p-4 2xl:p-6" v-if="loading">
95
- <div class="mb-6" v-for="i in 2" :key="i">
96
- <Skeleton class="max-w-34 mb-2 h-5 w-1/6" />
97
- <Skeleton class="h-11 rounded-sm" :class="{ 'w-1/2': i === 2 }" />
98
- </div>
99
- </div>
100
- <div class="px-5 py-3 2xl:p-6" :class="{ '!pt-[54px]': error }" v-else>
101
- <div :class="cn('absolute left-0 right-0 top-0 z-40 border-y border-red-300 bg-red-50 px-5 py-1 text-[15px] text-red-500 2xl:px-6', props.errorClass)" v-if="error">
102
- <span>{{ error }}</span>
103
- <BtnCircle class="absolute right-4 top-1/2 !size-6 -translate-y-1/2 bg-black/10 opacity-70 transition hover:bg-black/20 hover:opacity-100" v-on:click="error = null">
104
- <LucideX :size="16"></LucideX>
105
- </BtnCircle>
106
- </div>
107
- <slot></slot>
108
- </div>
109
- </div>
110
- </section>
111
- <SheetFooter class="absolute bottom-0 left-0 right-0 bg-white px-5 pb-2.5 dark:bg-dark_bg2 2xl:px-6 2xl:pb-3" v-if="!loading && !hideFooter">
112
- <slot name="footer-container">
113
- <slot name="footer"></slot>
114
- <BtnPrimary v-on:click="emits('saveClick')" class="mr-auto bg-slate-500 px-3 pr-5 text-sm hover:bg-slate-600 2xl:text-lg" :loading="saving" v-if="1 > 2">
115
- <LucideFileText class="mr-2 size-[20px] 2xl:size-[24px]" :stroke-width="1.6" />
116
- Simpan Draft
117
- </BtnPrimary>
118
- <AlertDialog>
119
- <AlertDialogTrigger>
120
- <BtnSecondary class="text-sm 2xl:text-lg">Batal</BtnSecondary>
121
- </AlertDialogTrigger>
122
- <AlertDialogContent class="w-96">
123
- <AlertDialogHeader>
124
- <AlertDialogTitle>{{ props.cancelConfirmTitle }}</AlertDialogTitle>
125
- <AlertDialogDescription>{{ props.cancelConfirmMsg }}</AlertDialogDescription>
126
- </AlertDialogHeader>
127
- <AlertDialogFooter class="pt-4">
128
- <AlertDialogCancel class="hover:bg-primary_main_hover border-none text-primary_main shadow-none transition">Kembali</AlertDialogCancel>
129
- <AlertDialogAction v-on:click="cancelClicked" class="bg-red-500 transition hover:bg-red-600">Batalkan</AlertDialogAction>
130
- </AlertDialogFooter>
131
- </AlertDialogContent>
132
- </AlertDialog>
133
- <BtnPrimary v-on:click="emits('saveClick')" class="pl-3 pr-5 text-sm 2xl:text-lg" :loading="saving">
134
- <LucideSave class="mr-2 size-[20px] 2xl:size-[24px]" :stroke-width="1.6" />
135
- Simpan
136
- </BtnPrimary>
137
- </slot>
138
- </SheetFooter>
139
- </SheetContent>
140
- </Sheet>
141
- </template>
@@ -1,91 +0,0 @@
1
- <script setup lang="ts">
2
- import { Dialog, DialogDescription, DialogHeader, DialogTitle, DialogFooter } from "../../components/ui/dialog";
3
- import { cn } from "../../lib/utils";
4
- import BtnPrimary from "../../components/button/BtnPrimary.vue";
5
- import BtnSecondary from "../../components/button/BtnSecondary.vue";
6
- import { ref } from "vue";
7
- import { LucideX } from "lucide-vue-next";
8
- import BtnCircle from "../../components/button/BtnCircle.vue";
9
- import { DialogOverlay, DialogContent } from "radix-vue";
10
-
11
- const props = defineProps(["class", "classOverlay", "classContent", "secondaryBtnClass", "primaryBtnClass", "saveDisabled", "closeOnSubmit"]);
12
- const show = defineModel<boolean>("show", { default: false });
13
- const saving = defineModel<boolean>("saving", { default: false });
14
- const error = defineModel<string | null>("error", { default: null });
15
- const emits = defineEmits(["submit", "cancel", "change"]);
16
- const formEl = ref<any>(null);
17
- const form = defineModel<any>("form");
18
- let nextFunc: Function | null;
19
- let onChange: Function | null;
20
-
21
- function open(formSchema: any, next: Function | null, onChangeEv?: Function) {
22
- if (formSchema) form.value = formSchema;
23
- nextFunc = next;
24
- if (onChangeEv) onChange = onChangeEv;
25
- show.value = true;
26
- }
27
-
28
- function close() {
29
- show.value = false;
30
- }
31
-
32
- function cancel() {
33
- emits("cancel");
34
- close();
35
- }
36
-
37
- function submitForm(_: FormData, form$: any) {
38
- emits("submit", form$.data, form$);
39
- if (nextFunc) nextFunc(form$.data, form$);
40
- if (props.closeOnSubmit === true || props.closeOnSubmit === undefined) close();
41
- }
42
-
43
- function onFormChange(after: any, before: any) {
44
- if (onChange) onChange(after, before, formEl.value);
45
- emits("change", after, before, formEl.value);
46
- }
47
-
48
- defineExpose({ open, close });
49
- </script>
50
-
51
- <template>
52
- <Dialog v-model:open="show">
53
- <slot name="trigger"></slot>
54
- <DialogOverlay
55
- :class="cn('fixed inset-0 z-[90] bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0', props.classOverlay)" />
56
- <DialogContent
57
- :class="
58
- cn(
59
- 'fixed left-1/2 top-1/2 z-[99] grid w-full max-w-[425px] -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] dark:bg-dark_bg2 sm:rounded-lg',
60
- props.class
61
- )
62
- ">
63
- <DialogHeader>
64
- <slot name="header">
65
- <DialogTitle>Form Penagihan</DialogTitle>
66
- <DialogDescription> Silakan isi formulir di bawah ini </DialogDescription>
67
- </slot>
68
- </DialogHeader>
69
- <div :class="cn('-mx-6 max-h-[64vh] overflow-auto border-b border-t px-6 pb-6 pt-3', props.classContent)">
70
- <div class="relative mb-5 rounded-sm border-l-4 border-red-400 bg-red-50 px-4 py-2 text-[15px] text-red-500" v-if="error">
71
- <span>{{ error }}</span>
72
- <BtnCircle class="absolute right-2 top-1/2 h-6 w-6 -translate-y-1/2 bg-gray-200 opacity-70 transition hover:bg-slate-300 hover:opacity-100" v-on:click="error = null">
73
- <LucideX :size="16"></LucideX>
74
- </BtnCircle>
75
- </div>
76
- <Vueform v-if="form" ref="formEl" :schema="form" :endpoint="submitForm" @change="onFormChange" />
77
- <slot name="body" v-else> </slot>
78
- </div>
79
- <DialogFooter class="-mb-2">
80
- <slot name="footer">
81
- <BtnSecondary type="button" :class="cn('text-md h-10', props.secondaryBtnClass)" :disabled="saving" v-on:click="cancel">
82
- <slot name="secondary-button-label">Batal</slot>
83
- </BtnSecondary>
84
- <BtnPrimary type="button" :class="cn('text-md h-10', primaryBtnClass)" v-on:click="formEl.submit()" :loading="saving" :disabled="saveDisabled === true">
85
- <slot name="button-label">Simpan</slot>
86
- </BtnPrimary>
87
- </slot>
88
- </DialogFooter>
89
- </DialogContent>
90
- </Dialog>
91
- </template>