From d0e64bdffc539a2859d15d7b7c4b986b16325d0e Mon Sep 17 00:00:00 2001 From: Nicolas Drolet Date: Thu, 21 Aug 2025 17:06:57 -0400 Subject: [PATCH] refactor(approvals): move functionalities for separation of concern, page formatting, i18n refactoring, consideration for mobile appearance. --- src/boot/i18n.ts | 13 ++--- src/i18n/en-ca/index.ts | 19 +++---- src/i18n/fr-ca/index.ts | 19 +++---- src/i18n/index.ts | 4 +- .../pages/supervisor-crew-page.vue | 4 +- .../shared/components/language-switch.vue | 24 +++++++-- .../navigation/header-bar-avatar.vue | 10 ++-- .../components/navigation/right-drawer.vue | 12 ++--- ...esheet-approval-employee-overview-list.vue | 9 ++-- .../timesheet-approval-period-picker.vue | 51 ++++++++++++++++--- .../composables/use-timesheet-approval-api.ts | 16 +++--- .../pages/timesheet-approval.vue | 33 ++++++++++-- src/stores/timesheet-store.ts | 11 +++- 13 files changed, 153 insertions(+), 72 deletions(-) diff --git a/src/boot/i18n.ts b/src/boot/i18n.ts index 996594c..bdbcc67 100644 --- a/src/boot/i18n.ts +++ b/src/boot/i18n.ts @@ -4,26 +4,19 @@ import { createI18n } from 'vue-i18n'; import messages from 'src/i18n'; export type MessageLanguages = keyof typeof messages; -// Type-define 'en-US' as the master schema for the resource -export type MessageSchema = typeof messages['en']; +export type MessageSchema = typeof messages['en-CA']; -// See https://vue-i18n.intlify.dev/guide/advanced/typescript.html#global-resource-schema-type-definition /* eslint-disable @typescript-eslint/no-empty-object-type */ declare module 'vue-i18n' { - // define the locale messages schema export interface DefineLocaleMessage extends MessageSchema {} - - // define the datetime format schema export interface DefineDateTimeFormat {} - - // define the number format schema export interface DefineNumberFormat {} } -/* eslint-enable @typescript-eslint/no-empty-object-type */ +/* eslint-enable @typescript-eslint/no-empty-object-type */ export default defineBoot(({ app }) => { const i18n = createI18n<{ message: MessageSchema }, MessageLanguages>({ - locale: 'fr', + locale: 'fr-FR', legacy: false, messages, }); diff --git a/src/i18n/en-ca/index.ts b/src/i18n/en-ca/index.ts index 5ac2cfd..94335df 100644 --- a/src/i18n/en-ca/index.ts +++ b/src/i18n/en-ca/index.ts @@ -24,7 +24,7 @@ export default { }, navBar: { userMenuHome: 'Homepage', - userMenuEmployeeList: 'Employee list', + userMenuEmployeeList: 'Employee Directory', userMenuShiftValidation: 'Timesheet Approval', userMenuProfile: 'Profile', userMenuHelp: 'Help', @@ -140,7 +140,7 @@ export default { card_4: 'Customers', }, usersListPage: { - tableHeader: 'Employee list', + tableHeader: 'Employee Directory', searchInput: 'Search', userListFirstName: 'First name', userListLastName: 'Last name', @@ -162,6 +162,7 @@ export default { loading: 'Obtaining data...', failedToLoad: 'No data to show', failedToSearch: 'No data matching search', + languageLabel: 'Language', }, editUserPage: { title: 'Edit Account', @@ -240,11 +241,12 @@ export default { passwordValidation: 'Password must meet all criteria.', confirmPasswordValidation: 'Password must match new Password.', }, - pagesTitles: { - newUserPageTitle: 'New user', - updateUserPageTitle: 'Update user', - timeSheetPageTitle: 'Time sheet', - timeSheetValidationsIdPageTitle: 'Time sheet', + pageTitles: { + employeeDirectory: 'Employee Directory', + newUsers: 'New user', + updateUsers: 'Update user', + timeSheets: 'Time sheet', + timeSheetValidations: 'Time sheet', }, timeSheet: { timeSheetTab_1: 'Shifts', @@ -265,7 +267,7 @@ export default { sickDay: 'Sick working day', vacancyDay: 'vacation', holiday: 'Holiday', - dateRangesWeek: 'Week from', + dateRangesFrom: 'from', dateRangesTo: 'to', shiftBankedHours: 'Total hours to bank', bankedHoursHint_1: ' on', @@ -294,7 +296,6 @@ export default { mileage: 'Mileage', }, timeSheetValidations: { - tableHeader: 'List of employees', tableColumnLabelFullname: 'Full name', tableColumnLabelRegularHours: 'regular hours', tableColumnLabelEveningHours: 'evening', diff --git a/src/i18n/fr-ca/index.ts b/src/i18n/fr-ca/index.ts index e710a53..8c5005a 100644 --- a/src/i18n/fr-ca/index.ts +++ b/src/i18n/fr-ca/index.ts @@ -163,7 +163,7 @@ export default { }, navBar: { userMenuHome: 'Accueil', - userMenuEmployeeList: 'Liste employés', + userMenuEmployeeList: 'Répertoire employés', userMenuShiftValidation: 'Valider les heures', userMenuProfile: 'Profil', userMenuHelp: 'Aide', @@ -181,11 +181,12 @@ export default { deleteAll: 'Supprimer tout', close: 'Fermer', }, - pagesTitles: { - newUserPageTitle: 'Nouvel utilisateur', - updateUserPageTitle: 'Mettre à jour l’utilisateur', - timeSheetPageTitle: 'Carte de temps', - timeSheetValidationsIdPageTitle: 'Carte de temps', + pageTitles: { + employeeDirectory: 'Répertoire des Employés', + newUsers: 'Nouvel utilisateur', + updateUsers: 'Mettre à jour l’utilisateur', + timeSheets: 'Carte de temps', + timeSheetValidations: 'Validation cartes de temps', }, profilePage: { title: 'Profil', @@ -231,6 +232,7 @@ export default { loading: 'Téléchargement des données en cours...', failedToLoad: 'Aucune donnée à afficher', failedToSearch: 'Aucun résultat de recherche obtenu', + languageLabel: 'Langue', }, shiftColumns: { title: 'Quarts de travail', @@ -315,7 +317,7 @@ export default { sickDay: 'Maladie', vacancyDay: 'Vacances', holiday: 'Férié', - dateRangesWeek: 'Semaine du', + dateRangesFrom: 'du', dateRangesTo: 'au', shiftBankedHours: 'Totale d’heures à banquer', bankedHoursHint_1: ' sur', @@ -344,7 +346,6 @@ export default { mileage: 'Kilometrage', }, timeSheetValidations: { - tableHeader: 'Liste des employés', tableColumnLabelFullname: 'nom complet', tableColumnLabelRegularHours: 'heures régulières', tableColumnLabelEveningHours: 'soir', @@ -378,7 +379,7 @@ export default { unlockToolTip: 'Déverrouiller la semaine', }, usersListPage: { - tableHeader: 'Liste d’employées', + tableHeader: 'Répertoire du personnel', searchInput: 'rechercher', userListFirstName: 'prénom', userListLastName: 'nom de famille', diff --git a/src/i18n/index.ts b/src/i18n/index.ts index 86d6924..13153ce 100644 --- a/src/i18n/index.ts +++ b/src/i18n/index.ts @@ -2,6 +2,6 @@ import enCA from './en-ca'; import frCA from './fr-ca'; export default { - 'en': enCA, - 'fr': frCA, + 'en-CA': enCA, + 'fr-FR': frCA, }; diff --git a/src/modules/employee-list/pages/supervisor-crew-page.vue b/src/modules/employee-list/pages/supervisor-crew-page.vue index 70471a2..9c349b9 100644 --- a/src/modules/employee-list/pages/supervisor-crew-page.vue +++ b/src/modules/employee-list/pages/supervisor-crew-page.vue @@ -6,8 +6,8 @@