fix(10-13): admin sidebar bleed and keyboard instance resolution

- App.vue: add v-else-if branch for admin routes that renders only router-view (no AppSidebar)
- App.vue: replace routeViewRef with getFileManagerInstance() using matched.find(r => r.instances?.default)
- App.vue: remove unused ref import (Gap 3 + Gap 4)
This commit is contained in:
curo1305
2026-06-16 19:07:54 +02:00
parent f9e5a31945
commit 42ab542e25
+14 -9
View File
@@ -1,9 +1,10 @@
<template>
<AuthLayout v-if="route.meta.layout === 'auth'" />
<router-view v-else-if="route.matched.some(r => r.meta.requiresAdmin)" />
<div v-else class="flex h-screen overflow-hidden">
<AppSidebar />
<main class="flex-1 overflow-y-auto">
<router-view ref="routeViewRef" />
<router-view />
</main>
</div>
<ToastContainer />
@@ -11,8 +12,8 @@
</template>
<script setup>
import { ref, onMounted, onUnmounted } from 'vue'
import { useRoute } from 'vue-router'
import { onMounted, onUnmounted } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import AppSidebar from './components/layout/AppSidebar.vue'
import AuthLayout from './layouts/AuthLayout.vue'
import ToastContainer from './components/ui/ToastContainer.vue'
@@ -20,11 +21,15 @@ import OsDragOverlay from './components/layout/OsDragOverlay.vue'
import { useTopicsStore } from './stores/topics.js'
const route = useRoute()
const router = useRouter()
const topicsStore = useTopicsStore()
const routeViewRef = ref(null)
function getFileManagerInstance() {
return router.currentRoute.value.matched.find(r => r.instances?.default)?.instances?.default ?? null
}
function onOsFilesDropped(files) {
routeViewRef.value?.handleOsDrop?.(files)
getFileManagerInstance()?.handleOsDrop?.(files)
}
function onKeydown(e) {
@@ -34,16 +39,16 @@ function onKeydown(e) {
if (e.key === '/' && !e.ctrlKey && !e.metaKey) {
e.preventDefault()
routeViewRef.value?.focusSearch?.()
getFileManagerInstance()?.focusSearch?.()
}
if (e.key === 'Escape') {
routeViewRef.value?.clearSearch?.()
getFileManagerInstance()?.clearSearch?.()
}
if (e.key === 'u' || e.key === 'U') {
routeViewRef.value?.triggerUpload?.()
getFileManagerInstance()?.triggerUpload?.()
}
if (e.key === 'n' || e.key === 'N') {
routeViewRef.value?.startNewFolder?.()
getFileManagerInstance()?.startNewFolder?.()
}
}