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> <template>
<AuthLayout v-if="route.meta.layout === 'auth'" /> <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"> <div v-else class="flex h-screen overflow-hidden">
<AppSidebar /> <AppSidebar />
<main class="flex-1 overflow-y-auto"> <main class="flex-1 overflow-y-auto">
<router-view ref="routeViewRef" /> <router-view />
</main> </main>
</div> </div>
<ToastContainer /> <ToastContainer />
@@ -11,8 +12,8 @@
</template> </template>
<script setup> <script setup>
import { ref, onMounted, onUnmounted } from 'vue' import { onMounted, onUnmounted } from 'vue'
import { useRoute } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import AppSidebar from './components/layout/AppSidebar.vue' import AppSidebar from './components/layout/AppSidebar.vue'
import AuthLayout from './layouts/AuthLayout.vue' import AuthLayout from './layouts/AuthLayout.vue'
import ToastContainer from './components/ui/ToastContainer.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' import { useTopicsStore } from './stores/topics.js'
const route = useRoute() const route = useRoute()
const router = useRouter()
const topicsStore = useTopicsStore() 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) { function onOsFilesDropped(files) {
routeViewRef.value?.handleOsDrop?.(files) getFileManagerInstance()?.handleOsDrop?.(files)
} }
function onKeydown(e) { function onKeydown(e) {
@@ -34,16 +39,16 @@ function onKeydown(e) {
if (e.key === '/' && !e.ctrlKey && !e.metaKey) { if (e.key === '/' && !e.ctrlKey && !e.metaKey) {
e.preventDefault() e.preventDefault()
routeViewRef.value?.focusSearch?.() getFileManagerInstance()?.focusSearch?.()
} }
if (e.key === 'Escape') { if (e.key === 'Escape') {
routeViewRef.value?.clearSearch?.() getFileManagerInstance()?.clearSearch?.()
} }
if (e.key === 'u' || e.key === 'U') { if (e.key === 'u' || e.key === 'U') {
routeViewRef.value?.triggerUpload?.() getFileManagerInstance()?.triggerUpload?.()
} }
if (e.key === 'n' || e.key === 'N') { if (e.key === 'n' || e.key === 'N') {
routeViewRef.value?.startNewFolder?.() getFileManagerInstance()?.startNewFolder?.()
} }
} }