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:
+14
-9
@@ -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?.()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user