feat(ui) : contextual back navigation in DetailHeader

This commit is contained in:
2026-04-04 16:40:40 +02:00
parent 4f13f7d301
commit 239f417a35

View File

@@ -15,9 +15,10 @@
<IconLucideEye v-else class="w-5 h-5 mr-2" aria-hidden="true" />
{{ isEditMode ? 'Voir détails' : 'Modifier' }}
</button>
<button type="button" class="btn btn-ghost btn-sm md:btn-md" @click="goBack">
Retour au catalogue
</button>
<NuxtLink :to="backDestination" class="btn btn-ghost btn-sm md:btn-md">
<IconLucideArrowLeft class="w-4 h-4 mr-1" aria-hidden="true" />
{{ backLabel }}
</NuxtLink>
</div>
</div>
</template>
@@ -25,8 +26,9 @@
<script setup lang="ts">
import IconLucideSquarePen from '~icons/lucide/square-pen'
import IconLucideEye from '~icons/lucide/eye'
import IconLucideArrowLeft from '~icons/lucide/arrow-left'
const router = useRouter()
const route = useRoute()
const props = defineProps<{
title: string
@@ -34,18 +36,24 @@ const props = defineProps<{
isEditMode: boolean
canEdit: boolean
backLink: string
backLinkLabel?: string
}>()
defineEmits<{
'toggle-edit': []
}>()
function goBack() {
if (window.history.length > 1) {
router.back()
const backDestination = computed(() => {
if (route.query.from === 'machine' && route.query.machineId) {
return `/machine/${route.query.machineId}`
}
else {
navigateTo(props.backLink)
return props.backLink
})
const backLabel = computed(() => {
if (route.query.from === 'machine') {
return '← Retour à la machine'
}
}
return props.backLinkLabel ?? 'Retour au catalogue'
})
</script>