From d8a1a87e981b4415e2d834e1934a5ef1d2dc7833 Mon Sep 17 00:00:00 2001 From: Nicolas Drolet Date: Tue, 2 Dec 2025 13:38:03 -0500 Subject: [PATCH] refactor(management): replace standard form with carousel to separate info and access into two panels --- src/i18n/en-ca/index.ts | 37 ++-- src/i18n/fr-ca/index.ts | 36 ++-- .../employee/add-modify-dialog-access.vue | 123 +++++++++++++ .../employee/add-modify-dialog-form.vue | 170 +++++------------- .../components/employee/add-modify-dialog.vue | 74 +++++++- src/stores/employee-store.ts | 7 +- 6 files changed, 289 insertions(+), 158 deletions(-) create mode 100644 src/modules/employee-list/components/employee/add-modify-dialog-access.vue diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts index f9d38f0..7699e3d 100644 --- a/src/i18n/en-ca/index.ts +++ b/src/i18n/en-ca/index.ts @@ -12,6 +12,29 @@ export default { }, }, + employee_management: { + module_access: { + dashboard: "Dashboard", + employee_list: "employee list", + employee_management: "employee management", + personal_profile: "profile", + timesheets: "timesheets", + timesheets_approval: "timesheet approval", + user_access: "module access", + presets: "access presets", + preset_admin: "administrator", + preset_employee: "employee", + uncheck_all: "remove all", + admin_description: "Check all modules", + employee_description: "Only check modules that are relevant to standard employees with no management access", + none_description: "Uncheck all modules", + }, + add_employee: "Add employee", + modify_employee: "Modify employee", + access_label: "access", + details_label: "details", + }, + login: { page_header: "account login", email: "e-mail", @@ -59,20 +82,6 @@ export default { supervisor: "supervisor", hired_date: "hiring date", bankroll_id: "payroll ID", - module_access: { - dashboard: "Dashboard", - employee_list: "employee list", - employee_management: "employee management", - personal_profile: "profile", - timesheets: "timesheets", - timesheets_approval: "timesheet approval", - user_access: "module access", - presets: "access presets", - preset_admin: "admin", - preset_employee: "employee", - uncheck_all: "remove all", - - }, }, preferences: { tab_title: "preferences", diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts index 4b25d4c..c68bae8 100644 --- a/src/i18n/fr-ca/index.ts +++ b/src/i18n/fr-ca/index.ts @@ -12,6 +12,29 @@ export default { }, }, + employee_management: { + module_access: { + dashboard: "Dashboard", + employee_list: "employee list", + employee_management: "employee management", + personal_profile: "profile", + timesheets: "timesheets", + timesheets_approval: "timesheet approval", + user_access: "module access", + presets: "access presets", + preset_admin: "administrateur", + preset_employee: "employé", + uncheck_all: "Tout enlever", + admin_description: "Selectionner tous les modules", + employee_description: "Selectionner seulement les modules qui sont pertinents aux employés sans accès spéciaux", + none_description: "Enlever tous les accès", + }, + add_employee: "Ajouter employé", + modify_employee: "Modifier employé", + access_label: "accès", + details_label: "détails", + }, + login: { page_header: "connexion au compte", email: "courriel", @@ -59,19 +82,6 @@ export default { supervisor: "nom du superviseur", hired_date: "date d'embauche", bankroll_id: "identifiant de paie", - module_access: { - dashboard: "accueil", - employee_list: "liste employés", - employee_management: "gestion employés", - personal_profile: "profil", - timesheets: "feuilles de temps", - timesheets_approval: "valider feuilles de temps", - user_access: "accès aux modules", - presets: "accès prédéfinis", - preset_admin: "administrateur", - preset_employee: "employé", - uncheck_all: "aucun accès", - }, }, preferences: { tab_title: "préférences", diff --git a/src/modules/employee-list/components/employee/add-modify-dialog-access.vue b/src/modules/employee-list/components/employee/add-modify-dialog-access.vue new file mode 100644 index 0000000..362280f --- /dev/null +++ b/src/modules/employee-list/components/employee/add-modify-dialog-access.vue @@ -0,0 +1,123 @@ + + + \ No newline at end of file diff --git a/src/modules/employee-list/components/employee/add-modify-dialog-form.vue b/src/modules/employee-list/components/employee/add-modify-dialog-form.vue index 92aec5c..ebd51c9 100644 --- a/src/modules/employee-list/components/employee/add-modify-dialog-form.vue +++ b/src/modules/employee-list/components/employee/add-modify-dialog-form.vue @@ -3,20 +3,8 @@ lang="ts" > import { useEmployeeStore } from 'src/stores/employee-store'; - import { employee_access_options, type ModuleAccessPreset, type ModuleAccessName, employee_access_presets } from 'src/modules/employee-list/models/employee-profile.models'; -import { unwrapAndClone } from 'src/utils/unwrap-and-clone'; const employee_store = useEmployeeStore(); - - const toggleInSelected = (value: ModuleAccessName) => { - const i = employee_store.employee.user_module_access.indexOf(value); - if (i === -1) employee_store.employee.user_module_access.push(value); - else employee_store.employee.user_module_access.splice(i, 1); - } - - const applyAccessPreset = (preset: ModuleAccessPreset) => { - employee_store.employee.user_module_access = unwrapAndClone(employee_access_presets[preset]); - } \ No newline at end of file diff --git a/src/modules/employee-list/components/employee/add-modify-dialog.vue b/src/modules/employee-list/components/employee/add-modify-dialog.vue index 29fa55c..e3bae9f 100644 --- a/src/modules/employee-list/components/employee/add-modify-dialog.vue +++ b/src/modules/employee-list/components/employee/add-modify-dialog.vue @@ -1,22 +1,82 @@