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:
@@ -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
|
||||
|
||||
@@ -186,5 +186,6 @@ defineExpose({
|
||||
triggerUpload: () => browserRef.value?.triggerUpload?.(),
|
||||
startNewFolder: () => browserRef.value?.startNewFolder?.(),
|
||||
clearSearch: () => browserRef.value?.clearSearch?.(),
|
||||
handleOsDrop: (files) => onFilesSelected({ files, autoClassify: true }),
|
||||
})
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user