diff --git a/architype.js b/architype.js index 5f22f6b..2ae2b30 100644 --- a/architype.js +++ b/architype.js @@ -115,55 +115,62 @@ class List { onKeyDown(e) { switch (e.key) { + case 'Escape': + case 'ArrowLeft': + if (this.container_.parentElement.xArchObj) { + this.container_.parentElement.focus(); + } + break; + case 'd': this.deleteSelected(); e.stopPropagation(); e.preventDefault(); - return; + break; case 'D': this.deleteSelectedAndAfter(); e.stopPropagation(); e.preventDefault(); - return; + break; case 'j': case 'ArrowDown': this.selectNext(); e.stopPropagation(); e.preventDefault(); - return; + break; case 'k': case 'ArrowUp': this.selectPrev(); e.stopPropagation(); e.preventDefault(); - return; + break; case 'PageUp': this.selectPrevPage(); e.stopPropagation(); e.preventDefault(); - return; + break; case 'PageDown': this.selectNextPage(); e.stopPropagation(); e.preventDefault(); - return; + break; case 'Home': this.selectFirst(); e.stopPropagation(); e.preventDefault(); - return; + break; case 'End': this.selectLast(); e.stopPropagation(); e.preventDefault(); - return; + break; } } } @@ -344,6 +351,14 @@ class Node extends EditorEntryBase { this.stopEdit(); break; + case 'ArrowLeft': + e.stopPropagation(); + if (this.input_.selectionEnd == 0) { + e.preventDefault(); + this.stopEdit(); + } + break; + default: e.stopPropagation(); break; @@ -359,6 +374,13 @@ class Node extends EditorEntryBase { e.stopPropagation(); e.preventDefault(); break; + + case 'ArrowRight': + this.startEdit(); + this.input_.selectionEnd = 0; + e.stopPropagation(); + e.preventDefault(); + break; } } @@ -449,6 +471,10 @@ class Group extends EditorEntryBase { e.stopPropagation(); e.preventDefault(); break; + + case 'ArrowRight': + this.nodes_.selectNext(); + break; } }