feat(10-10): wire OsDragOverlay into App.vue; expose handleOsDrop on FileManagerView

- App.vue: import + mount <OsDragOverlay @files-dropped="onOsFilesDropped" />
  after <ToastContainer /> (overlay z-[9998] stays below toast z-[9999])
- App.vue: add onOsFilesDropped handler -> routeViewRef.value?.handleOsDrop?.(files)
- FileManagerView: extend defineExpose to include handleOsDrop delegating to
  existing onFilesSelected({ files, autoClassify: true }) — no duplicate upload logic
- Full test suite: 198 passed, 0 failures
This commit is contained in:
curo1305
2026-06-15 20:46:05 +02:00
parent 20eceb8983
commit 69bf40af32
2 changed files with 7 additions and 0 deletions
+6
View File
@@ -7,6 +7,7 @@
</main>
</div>
<ToastContainer />
<OsDragOverlay @files-dropped="onOsFilesDropped" />
</template>
<script setup>
@@ -15,12 +16,17 @@ import { useRoute } from 'vue-router'
import AppSidebar from './components/layout/AppSidebar.vue'
import AuthLayout from './layouts/AuthLayout.vue'
import ToastContainer from './components/ui/ToastContainer.vue'
import OsDragOverlay from './components/layout/OsDragOverlay.vue'
import { useTopicsStore } from './stores/topics.js'
const route = useRoute()
const topicsStore = useTopicsStore()
const routeViewRef = ref(null)
function onOsFilesDropped(files) {
routeViewRef.value?.handleOsDrop?.(files)
}
function onKeydown(e) {
const tag = document.activeElement?.tagName
if (['INPUT', 'TEXTAREA', 'SELECT'].includes(tag) || document.activeElement?.isContentEditable) return
+1
View File
@@ -186,5 +186,6 @@ defineExpose({
triggerUpload: () => browserRef.value?.triggerUpload?.(),
startNewFolder: () => browserRef.value?.startNewFolder?.(),
clearSearch: () => browserRef.value?.clearSearch?.(),
handleOsDrop: (files) => onFilesSelected({ files, autoClassify: true }),
})
</script>