From 7390acb97863a59419aaf13eb9f351e896467998 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Thu, 11 Jul 2019 04:40:43 +0000 Subject: [PATCH] Populate EditorLink based on highlighted items --- Editor.js | 23 +++++++++++++---------- EditorLink.js | 8 +++++--- List.js | 2 ++ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/Editor.js b/Editor.js index ba474ab..aea564f 100644 --- a/Editor.js +++ b/Editor.js @@ -84,21 +84,17 @@ class Editor extends List { } } - addLinkBefore() { - if (this.mayAdd(EditorLink)) { - EditorLink.addBefore(this.container_, this.getSelected()); - } - } - addLinkAfter() { if (this.mayAdd(EditorLink)) { - EditorLink.addAfter(this.container_, this.getSelected()); + EditorLink.addAfter(this.container_, this.getSelected(), + this.queryEntries('.highlight', EditorNode)); } } addLinkBefore() { if (this.mayAdd(EditorLink)) { - EditorLink.addBefore(this.container_, this.getSelected()); + EditorLink.addBefore(this.container_, this.getSelected(), + this.queryEntries('.highlight', EditorNode)); } } @@ -179,8 +175,15 @@ class Editor extends List { return; case 'Escape': - for (let entry of this.queryEntries('.highlight')) { - entry.getElement().classList.toggle('highlight', false); + if (!this.container_.parentElement.xArchObj) { + for (let entry of this.queryEntries('.highlight')) { + entry.getElement().classList.toggle('highlight', false); + } + // TODO: rename this to data-arch-refresh, make value noop everywhere + this.container_.setAttribute('data-arch-value', ''); + e.stopPropagation(); + e.preventDefault(); + return; } } diff --git a/EditorLink.js b/EditorLink.js index 2f97541..ea565b4 100644 --- a/EditorLink.js +++ b/EditorLink.js @@ -1,5 +1,5 @@ class EditorLink extends EditorEntryBase { - constructor() { + constructor(entries) { super(); this.elem_.innerText = '↓'; @@ -10,8 +10,10 @@ class EditorLink extends EditorEntryBase { [EditorNode, [2, 2]], [EditorLabel, [0, 1]], ]); - this.nodes_.addNodeAfter(); - this.nodes_.addNodeAfter(); + this.nodes_.addNodeAfter( + entries && entries[0] ? entries[0].getLabel() : null); + this.nodes_.addNodeAfter( + entries && entries[1] ? entries[1].getLabel() : null); this.elem_.appendChild(nodeList); } diff --git a/List.js b/List.js index bd53134..32a921a 100644 --- a/List.js +++ b/List.js @@ -128,6 +128,8 @@ class List { if (this.container_.parentElement.xArchObj) { this.container_.parentElement.focus(); } + e.stopPropagation(); + e.preventDefault(); break; case 'd':