[Fix] Fix the context menu not avaiable after adding.
diff --git a/studio/components/files/index.tsx b/studio/components/files/index.tsx
index 9228e00..c038cd9 100644
--- a/studio/components/files/index.tsx
+++ b/studio/components/files/index.tsx
@@ -23,7 +23,8 @@
Ref,
ref,
onMounted,
- onUnmounted
+ onUnmounted,
+ nextTick
} from 'vue'
import { NTree, NInput, NDropdown } from 'naive-ui'
import { FILE_TYPES_SUFFIX } from '@/constants/file'
@@ -66,12 +67,6 @@
emit('inputBlur', (ev.target as HTMLInputElement)?.value)
}
- const refresh = () => {
- keyRef.value = Date.now()
- }
-
- expose({ refresh })
-
const renderLabel = (info: { option: TreeOption }): VNodeChild => {
const { isEditing, name, type, id } = info.option as IFileRecord
return !isEditing
@@ -113,14 +108,30 @@
if (id) emit('doubleClick', id)
}
- onMounted(() => {
+ const bindEvents = () => {
treeRef.value?.selfElRef.addEventListener('contextmenu', onContextMenu)
treeRef.value?.selfElRef.addEventListener('dblclick', onDoubleClick)
+ }
+
+ const unbindEvents = () => {
+ treeRef.value?.selfElRef.removeEventListener('contextmenu', onContextMenu)
+ treeRef.value?.selfElRef.removeEventListener('dblclick', onDoubleClick)
+ }
+
+ const refresh = async () => {
+ keyRef.value = Date.now()
+ await nextTick()
+ bindEvents()
+ }
+
+ expose({ refresh })
+
+ onMounted(() => {
+ bindEvents()
})
onUnmounted(() => {
- treeRef.value?.selfElRef.removeEventListener('contextmenu', onContextMenu)
- treeRef.value?.selfElRef.removeEventListener('dblclick', onDoubleClick)
+ unbindEvents()
})
return () => (
diff --git a/studio/components/studio-sider/use-file.ts b/studio/components/studio-sider/use-file.ts
index 0a10205..935d5d2 100644
--- a/studio/components/studio-sider/use-file.ts
+++ b/studio/components/studio-sider/use-file.ts
@@ -191,6 +191,7 @@
remove(children, (record) => record.id === id)
delete filesCached[id]
+ fileStore.closeFile(id)
}
const onRename = (id: number) => {