fix : sélecteur d'exercice vide par défaut sur l'onglet Congés

Le watch sur le changement de phase (useEmployeeLeave/useEmployeeRtt)
remettait selectedYear à null pendant l'await du chargement eager du
récap congés, à la résolution initiale de la phase (undefined → phase
courante). Comme le chargement eager marquait ensuite leaveDataLoaded=true
et que le watch de useEmployeeDetailPage ignore la résolution initiale
(oldId === undefined), l'année restait à null et le <select> s'affichait
vide. L'onglet RTT y échappait car chargé en lazy.

Ajoute le garde oldId === undefined dans les watchs des deux composables,
même convention que useEmployeeDetailPage : la résolution initiale est
ignorée, seul un vrai changement de phase réinitialise l'année.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-26 10:05:25 +02:00
parent 25083f00c8
commit cb2db678ba
2 changed files with 14 additions and 4 deletions
+8 -2
View File
@@ -124,8 +124,14 @@ export const useEmployeeLeave = (
selectedLeaveYear.value = null
}
watch(() => selectedPhase.value?.id, () => {
// Reset l'année car la plage a peut-être changé.
watch(() => selectedPhase.value?.id, (newId, oldId) => {
// Ignore la résolution initiale (undefined → phase courante au montage) :
// le chargement eager du récap initialise déjà l'année sélectionnée. Sans ce
// garde, ce watch (asynchrone) s'exécute PENDANT l'await du chargement eager et
// remet selectedLeaveYear à null, ce qui laisse le sélecteur d'exercice vide.
// Même convention que le watch de useEmployeeDetailPage.
if (oldId === undefined || newId === oldId) return
// Changement de phase réel : reset l'année car la plage a peut-être changé.
selectedLeaveYear.value = null
leaveDataLoaded.value = false
// Le rechargement effectif est piloté par useEmployeeDetailPage.
+6 -2
View File
@@ -95,8 +95,12 @@ export const useEmployeeRtt = (
selectedRttYear.value = null
}
watch(() => selectedPhase.value?.id, () => {
// Reset l'année car la plage a peut-être changé.
watch(() => selectedPhase.value?.id, (newId, oldId) => {
// Ignore la résolution initiale (undefined → phase courante au montage) :
// l'initialisation de l'année est pilotée par loadRttData. Même convention que
// le watch de useEmployeeDetailPage (évite un reset concurrent du sélecteur).
if (oldId === undefined || newId === oldId) return
// Changement de phase réel : reset l'année car la plage a peut-être changé.
selectedRttYear.value = null
rttDataLoaded.value = false
// Le rechargement effectif est piloté par useEmployeeDetailPage.