[Feature] Add dblclick. (#15)
diff --git a/studio/components/files/index.tsx b/studio/components/files/index.tsx
index f9ded12..9228e00 100644
--- a/studio/components/files/index.tsx
+++ b/studio/components/files/index.tsx
@@ -22,7 +22,8 @@
VNodeChild,
Ref,
ref,
- onMounted
+ onMounted,
+ onUnmounted
} from 'vue'
import { NTree, NInput, NDropdown } from 'naive-ui'
import { FILE_TYPES_SUFFIX } from '@/constants/file'
@@ -47,7 +48,7 @@
export const Files = defineComponent({
name: 'files',
props,
- emits: ['select', 'inputBlur', 'delete', 'rename'],
+ emits: ['select', 'inputBlur', 'delete', 'rename', 'doubleClick'],
setup(props, { emit, expose }) {
const keyRef = ref()
const treeRef = ref()
@@ -74,7 +75,7 @@
const renderLabel = (info: { option: TreeOption }): VNodeChild => {
const { isEditing, name, type, id } = info.option as IFileRecord
return !isEditing
- ? h('div', { 'data-id': id }, type ? getNameByType(type, name) : '')
+ ? h('div', { 'data-id': id }, type ? getNameByType(type, name) : name)
: h(
NInput,
{
@@ -107,9 +108,19 @@
const onClickoutside = () => {
showDropdownRef.value = false
}
+ const onDoubleClick = (ev: MouseEvent) => {
+ id = (ev.target as HTMLElement)?.dataset.id
+ if (id) emit('doubleClick', id)
+ }
onMounted(() => {
treeRef.value?.selfElRef.addEventListener('contextmenu', onContextMenu)
+ treeRef.value?.selfElRef.addEventListener('dblclick', onDoubleClick)
+ })
+
+ onUnmounted(() => {
+ treeRef.value?.selfElRef.removeEventListener('contextmenu', onContextMenu)
+ treeRef.value?.selfElRef.removeEventListener('dblclick', onDoubleClick)
})
return () => (
diff --git a/studio/components/studio-sider/index.tsx b/studio/components/studio-sider/index.tsx
index 1a27d14..4b4111a 100644
--- a/studio/components/studio-sider/index.tsx
+++ b/studio/components/studio-sider/index.tsx
@@ -36,7 +36,8 @@
onSelectFile,
onInputBlur,
onDelete,
- onRename
+ onRename,
+ onDoubleClick
} = useFile(inputRef, fileRef)
const onSearch = (value: string) => {
@@ -71,6 +72,7 @@
onInputBlur={onInputBlur}
onDelete={onDelete}
onRename={onRename}
+ onDoubleClick={onDoubleClick}
inputRef={inputRef}
selected-keys={[state.currentKey]}
ref={fileRef}
diff --git a/studio/components/studio-sider/use-file.ts b/studio/components/studio-sider/use-file.ts
index a585387..0a10205 100644
--- a/studio/components/studio-sider/use-file.ts
+++ b/studio/components/studio-sider/use-file.ts
@@ -200,6 +200,17 @@
refreshFiles()
}
+ const onDoubleClick = (id: number) => {
+ const currentRecord = filesCached[id]
+ if (!currentRecord.type) return
+ if (currentRecord.isEditing) return
+ fileStore.openFile({
+ id,
+ name: getNameByType(currentRecord.type, currentRecord.name),
+ content: ''
+ })
+ }
+
onMounted(() => {
pullFiles()
})
@@ -211,6 +222,7 @@
onSelectFile,
onInputBlur,
onDelete,
- onRename
+ onRename,
+ onDoubleClick
}
}