From 1e0b0c28f96cbe751a6ca94981168249c9c5af83 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Sat, 25 Jul 2026 13:11:42 +0700 Subject: [PATCH] feat: implement user management module with CRUD functionality, including user list, create, and edit pages; update sidebar with user menu --- app/components/AppSidebar.vue | 4 +- app/components/ui/phone-input/PhoneInput.vue | 46 ++++ app/components/ui/phone-input/index.ts | 1 + app/pages/admin/users/[id]/edit.vue | 232 ++++++++++++++++++ app/pages/admin/users/columns.ts | 125 ++++++++++ app/pages/admin/users/create.vue | 214 ++++++++++++++++ app/pages/admin/users/index.vue | 176 +++++++++++++ .../history/2026-07-25-modul-user-pengguna.md | 48 ++++ ...26-07-25-perbaikan-user-form-dan-filter.md | 70 ++++++ 9 files changed, 915 insertions(+), 1 deletion(-) create mode 100644 app/components/ui/phone-input/PhoneInput.vue create mode 100644 app/components/ui/phone-input/index.ts create mode 100644 app/pages/admin/users/[id]/edit.vue create mode 100644 app/pages/admin/users/columns.ts create mode 100644 app/pages/admin/users/create.vue create mode 100644 app/pages/admin/users/index.vue create mode 100644 docs/history/2026-07-25-modul-user-pengguna.md create mode 100644 docs/history/2026-07-25-perbaikan-user-form-dan-filter.md diff --git a/app/components/AppSidebar.vue b/app/components/AppSidebar.vue index e1a3f56..47bc5f7 100644 --- a/app/components/AppSidebar.vue +++ b/app/components/AppSidebar.vue @@ -4,7 +4,8 @@ import { CreditCard, Database, FolderKanban, - LayoutDashboard + LayoutDashboard, + Users } from "@lucide/vue" import { computed, ref, watch } from 'vue' @@ -35,6 +36,7 @@ const groups = [ { title: 'Dashboard', url: '/admin/dashboard', icon: LayoutDashboard }, { title: 'Jenis Bisnis', url: '/admin/business-types', icon: BriefcaseBusiness }, { title: 'Paket', url: '/admin/plans', icon: CreditCard }, + { title: 'Pengguna', url: '/admin/users', icon: Users }, ], }, ] diff --git a/app/components/ui/phone-input/PhoneInput.vue b/app/components/ui/phone-input/PhoneInput.vue new file mode 100644 index 0000000..faaf18b --- /dev/null +++ b/app/components/ui/phone-input/PhoneInput.vue @@ -0,0 +1,46 @@ + + + diff --git a/app/components/ui/phone-input/index.ts b/app/components/ui/phone-input/index.ts new file mode 100644 index 0000000..21323be --- /dev/null +++ b/app/components/ui/phone-input/index.ts @@ -0,0 +1 @@ +export { default as PhoneInput } from "./PhoneInput.vue" diff --git a/app/pages/admin/users/[id]/edit.vue b/app/pages/admin/users/[id]/edit.vue new file mode 100644 index 0000000..f48f569 --- /dev/null +++ b/app/pages/admin/users/[id]/edit.vue @@ -0,0 +1,232 @@ + + +