fix(frontend) : fix time-tracking page scroll with fixed header and filters

Restructure time-tracking page layout so the page title and filters
stay fixed while only the calendar grid body scrolls internally.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-14 09:10:04 +01:00
parent 25aef9b2d5
commit 802659434f
2 changed files with 53 additions and 54 deletions
@@ -1,9 +1,8 @@
<template>
<div ref="calendarEl" class="relative rounded-lg border border-neutral-200 bg-white">
<div ref="calendarEl" class="relative flex h-full flex-col rounded-lg border border-neutral-200 bg-white">
<!-- Day headers -->
<div
class="sticky z-20 flex border-b border-neutral-200 bg-white"
:style="{ top: `${stickyOffset}px` }"
class="z-20 flex flex-shrink-0 border-b border-neutral-200 bg-white rounded-t-lg"
>
<div class="w-16 shrink-0 border-r border-neutral-200" />
<div
@@ -22,7 +21,7 @@
</div>
<!-- Grid body -->
<div ref="gridBodyEl" class="relative flex">
<div ref="gridBodyEl" class="relative flex min-h-0 flex-1 overflow-y-auto">
<!-- Hour labels -->
<div class="w-16 shrink-0">
<div
+6 -6
View File
@@ -1,6 +1,6 @@
<template>
<div>
<div ref="pageHeaderEl" class="sticky top-0 z-40 bg-white pb-4">
<div class="flex min-h-0 flex-1 flex-col">
<div ref="pageHeaderEl" class="flex-shrink-0 pb-4">
<div class="flex items-center justify-between">
<h1 class="text-2xl font-bold text-primary-500">Suivi des temps</h1>
<button
@@ -37,7 +37,7 @@
<MalioSelect
v-model="selectedUserId"
:options="userOptions"
min-width="!w-40"
min-width="!w-44"
text-field="text-sm"
text-value="text-sm"
label="User"
@@ -49,7 +49,7 @@
:options="projectOptions"
empty-option-label="Tous"
label="Projet"
min-width="!w-40"
min-width="!w-44"
text-field="text-sm"
text-value="text-sm"
/>
@@ -59,14 +59,14 @@
:options="tagOptions"
empty-option-label="Tous"
label="Tag"
min-width="!w-40"
min-width="!w-44"
text-field="text-sm"
text-value="text-sm"
/>
</div>
</div>
<div class="mt-4">
<div class="mt-4 -mb-24 min-h-0 flex-1">
<TimeEntryList
v-if="viewMode === 'list'"
:entries="filteredEntries"