feat(absence) : extract Absence front into Nuxt module layer

LST-66 (2.3) front. Companion to the backend module migration.

- Move pages (absences, team-absences), 8 components, the absences service +
  DTO and the useAbsenceHelpers composable into frontend/modules/absence/
  (auto-detected layer; composable now auto-imported).
- Rewrite consumers: AdminAbsencePolicyTab and the time-tracking calendar
  (getPublicHolidays) point to ~/modules/absence/...
- Middlewares (employee/admin) and shared services (clients, users,
  user-data DTO) stay at the root. i18n stays global.
- Routes /absences and /team-absences preserved.

nuxt build passes; routes confirmed.
This commit is contained in:
Matthieu
2026-06-20 18:36:48 +02:00
parent 306cfd34cd
commit 163bf0891a
16 changed files with 21 additions and 27 deletions
@@ -51,8 +51,8 @@
</template>
<script setup lang="ts">
import type { AbsencePolicy } from '~/services/dto/absence'
import { useAbsenceService } from '~/services/absences'
import type { AbsencePolicy } from '~/modules/absence/services/dto/absence'
import { useAbsenceService } from '~/modules/absence/services/absences'
const service = useAbsenceService()
const rows = ref<AbsencePolicy[]>([])
@@ -19,8 +19,8 @@
</template>
<script setup lang="ts">
import type { AbsenceBalance } from '~/services/dto/absence'
import { useAbsenceService } from '~/services/absences'
import type { AbsenceBalance } from '~/modules/absence/services/dto/absence'
import { useAbsenceService } from '~/modules/absence/services/absences'
const props = defineProps<{
modelValue: boolean
@@ -73,8 +73,7 @@
</template>
<script setup lang="ts">
import type { AbsenceBalance } from '~/services/dto/absence'
import { useAbsenceHelpers } from '~/composables/useAbsenceHelpers'
import type { AbsenceBalance } from '~/modules/absence/services/dto/absence'
const props = defineProps<{
balances: AbsenceBalance[]
@@ -52,9 +52,8 @@
</template>
<script setup lang="ts">
import type { AbsenceRequest } from '~/services/dto/absence'
import { useAbsenceService } from '~/services/absences'
import { useAbsenceHelpers } from '~/composables/useAbsenceHelpers'
import type { AbsenceRequest } from '~/modules/absence/services/dto/absence'
import { useAbsenceService } from '~/modules/absence/services/absences'
const props = defineProps<{
absences: AbsenceRequest[]
@@ -29,7 +29,7 @@
</template>
<script setup lang="ts">
import type { HalfDay } from '~/services/dto/absence'
import type { HalfDay } from '~/modules/absence/services/dto/absence'
const props = withDefaults(defineProps<{
/** ISO date string "YYYY-MM-DD" or null. */
@@ -135,9 +135,8 @@
</template>
<script setup lang="ts">
import type { AbsenceRequest } from '~/services/dto/absence'
import { useAbsenceService } from '~/services/absences'
import { useAbsenceHelpers } from '~/composables/useAbsenceHelpers'
import type { AbsenceRequest } from '~/modules/absence/services/dto/absence'
import { useAbsenceService } from '~/modules/absence/services/absences'
const props = defineProps<{
modelValue: boolean
@@ -26,9 +26,8 @@
</template>
<script setup lang="ts">
import type { AbsenceRequest } from '~/services/dto/absence'
import { useAbsenceService } from '~/services/absences'
import { useAbsenceHelpers } from '~/composables/useAbsenceHelpers'
import type { AbsenceRequest } from '~/modules/absence/services/dto/absence'
import { useAbsenceService } from '~/modules/absence/services/absences'
const props = defineProps<{
modelValue: boolean
@@ -105,9 +105,8 @@
</template>
<script setup lang="ts">
import type { AbsencePolicy, AbsencePreviewResult, AbsenceType, HalfDay } from '~/services/dto/absence'
import { useAbsenceService } from '~/services/absences'
import { useAbsenceHelpers } from '~/composables/useAbsenceHelpers'
import type { AbsencePolicy, AbsencePreviewResult, AbsenceType, HalfDay } from '~/modules/absence/services/dto/absence'
import { useAbsenceService } from '~/modules/absence/services/absences'
const props = defineProps<{
modelValue: boolean
@@ -1,4 +1,4 @@
import type { AbsenceRequest, AbsenceStatus, AbsenceType, HalfDay } from '~/services/dto/absence'
import type { AbsenceRequest, AbsenceStatus, AbsenceType, HalfDay } from '~/modules/absence/services/dto/absence'
export type BadgeVariant = 'neutral' | 'info' | 'success' | 'warning' | 'danger'
+1
View File
@@ -0,0 +1 @@
export default defineNuxtConfig({})
@@ -69,9 +69,8 @@
</template>
<script setup lang="ts">
import type { AbsenceBalance, AbsencePolicy, AbsenceRequest, AbsenceStatus, AbsenceType } from '~/services/dto/absence'
import { useAbsenceService, type AbsenceRequestFilters } from '~/services/absences'
import { useAbsenceHelpers } from '~/composables/useAbsenceHelpers'
import type { AbsenceBalance, AbsencePolicy, AbsenceRequest, AbsenceStatus, AbsenceType } from '~/modules/absence/services/dto/absence'
import { useAbsenceService, type AbsenceRequestFilters } from '~/modules/absence/services/absences'
type Row = AbsenceRequest & { typeLabelText: string; periodText: string; daysText: string; createdAtText: string }
@@ -198,12 +198,11 @@ import type {
AbsenceRequest,
AbsenceStatus,
AbsenceType,
} from "~/services/dto/absence";
} from "~/modules/absence/services/dto/absence";
import {
useAbsenceService,
type AbsenceRequestFilters,
} from "~/services/absences";
import { useAbsenceHelpers } from "~/composables/useAbsenceHelpers";
} from "~/modules/absence/services/absences";
import { useUserService } from "~/services/users";
import type { UserData } from "~/services/dto/user-data";
@@ -151,7 +151,7 @@
<script setup lang="ts">
import type { TimeEntry } from '~/modules/time-tracking/services/dto/time-entry'
import { useAbsenceService } from '~/services/absences'
import { useAbsenceService } from '~/modules/absence/services/absences'
const { t } = useI18n()
const absenceService = useAbsenceService()