diff --git a/TODO.md b/TODO.md new file mode 100644 index 00000000..e1d5c782 --- /dev/null +++ b/TODO.md @@ -0,0 +1,40 @@ +# Tenant API Integration TODO + +- [x] Review existing tenant API and UI navigation/routes (done in analysis) +- [x] Add tenant service for API CRUD in `src/services/tenantService.js` +- [x] Add tenant route in `src/router/index.js` +- [x] Add tenant menu item in `src/_nav.js` +- [x] Create tenant page `src/views/tenants/Tenants.vue` and integrate list API +- [x] Verify integration consistency + +# Tenant CRUD UI TODO + +- [x] Upgrade `src/views/tenants/Tenants.vue` to full CRUD page +- [x] Integrate create/read/update/delete flows with `tenantService` +- [x] Add form validation for `tenant_code`, `tenant_name`, `status` +- [x] Add detail modal and delete confirmation +- [x] Final consistency review + +# BaseResponsiveDataView Header/Table Alignment TODO + +- [x] Refactor desktop table header structure to follow row list layout +- [x] Align desktop header columns with rendered desktop columns +- [x] Remove desktop action spacer and use consistent action column +- [x] Keep mobile behavior unchanged +- [x] Mark tasks complete after implementation + +# GroupMenus Responsive Style Alignment TODO + +- [x] Review `GroupMenus.vue` and map existing actions/data to `BaseResponsiveDataView` +- [x] Refactor GroupMenus list section to use `BaseResponsiveDataView` +- [x] Keep existing action flows (detail, detail menu, edit, hapus) working via action handler +- [x] Add scoped container/header styling pattern similar to `Tenants.vue` +- [x] Final consistency review + +# BaseResponsiveDataView Desktop Column Proportion TODO + +- [ ] Review desktop grid logic in `BaseResponsiveDataView.vue` and `_base-responsive-data-view.scss` +- [ ] Make desktop column count dynamic (not hardcoded 6) +- [ ] Make action column width proportional and consistent +- [ ] Ensure desktop remains balanced even with only 2 data columns +- [ ] Final consistency review for desktop/mobile behavior diff --git a/index.html b/index.html index 3f4a30a6..27d9a84e 100644 --- a/index.html +++ b/index.html @@ -1,21 +1,14 @@ - - + - ManjaPro 2 + MANJAPRO - + + + diff --git a/public/apple-icon.png b/public/apple-icon.png index ac6dec0e..aecafa2f 100644 Binary files a/public/apple-icon.png and b/public/apple-icon.png differ diff --git a/public/user-default.jpg b/public/user-default.jpg new file mode 100644 index 00000000..cb8d8108 Binary files /dev/null and b/public/user-default.jpg differ diff --git a/src/App.vue b/src/App.vue index d39529ed..9fd16aae 100644 --- a/src/App.vue +++ b/src/App.vue @@ -16,6 +16,7 @@ import { onBeforeMount } from 'vue' import { useColorModes } from '@coreui/vue' import { useThemeStore } from '@/stores/theme.js' +import GlobalImagePreview from '@/components/GlobalImagePreview.vue' // Initialize CoreUI color modes with local storage key const { isColorModeSet, setColorMode } = useColorModes( @@ -46,6 +47,7 @@ onBeforeMount(() => { diff --git a/src/views/group-menus/GroupMenus.vue b/src/views/group-menus/GroupMenus.vue new file mode 100644 index 00000000..2f0ab9ed --- /dev/null +++ b/src/views/group-menus/GroupMenus.vue @@ -0,0 +1,433 @@ + + + + + diff --git a/src/views/nas/NasResourceView.vue b/src/views/nas/NasResourceView.vue new file mode 100644 index 00000000..db0dd6bb --- /dev/null +++ b/src/views/nas/NasResourceView.vue @@ -0,0 +1,376 @@ + + + diff --git a/src/views/pages/Login.vue b/src/views/pages/Login.vue index 43386210..ee292d6f 100644 --- a/src/views/pages/Login.vue +++ b/src/views/pages/Login.vue @@ -1,3 +1,41 @@ + +