diff --git a/src/components/PagesPanel.vue b/src/components/PagesPanel.vue index 6496b930d..c5baa60e3 100644 --- a/src/components/PagesPanel.vue +++ b/src/components/PagesPanel.vue @@ -11,25 +11,29 @@ const pages = computed(() => { }) const editingPageId = ref(null) -const editInput = ref(null) function startRename(pageId: string) { editingPageId.value = pageId nextTick(() => { - editInput.value?.select() + const input = document.querySelector('[data-page-edit]') + input?.focus() + input?.select() }) } -function commitRename(pageId: string) { - const value = editInput.value?.value.trim() +function commitRename(pageId: string, input: HTMLInputElement) { + if (editingPageId.value !== pageId) return + const value = input.value.trim() if (value && value !== store.graph.getNode(pageId)?.name) { store.renamePage(pageId, value) } editingPageId.value = null } -function cancelRename() { - editingPageId.value = null +function onKeydown(e: KeyboardEvent, pageId: string) { + if (e.key === 'Enter' || e.key === 'Escape') { + ;(e.target as HTMLInputElement).blur() + } } @@ -47,12 +51,11 @@ function cancelRename() {