diff --git a/experiments/outline-editor/editor.css b/experiments/outline-editor/editor.css index be08e27..28b6349 100755 --- a/experiments/outline-editor/editor.css +++ b/experiments/outline-editor/editor.css @@ -51,6 +51,11 @@ display: none; } +/* XXX are we selecting subtrees or blocks??? */ +.editor [selected] { + background: silver; +} + .editor div:focus { /*outline: solid 0.2em silver;*/ outline: none; diff --git a/experiments/outline-editor/editor.js b/experiments/outline-editor/editor.js index 0fe8401..b3cf538 100755 --- a/experiments/outline-editor/editor.js +++ b/experiments/outline-editor/editor.js @@ -101,7 +101,7 @@ var Outline = { : node == 'editable' ? [...this.dom.querySelectorAll('[tabindex]>textarea')] : node == 'selected' ? - [...this.dom.querySelectorAll('[tabindex].selected')] + [...this.dom.querySelectorAll('[tabindex][selected]')] : node == 'top' ? [...this.dom.children] .filter(function(elem){ @@ -349,6 +349,16 @@ var Outline = { var next = this.get('next') this.get()?.remove() next?.focus() }, + + // select... + ' ': function(evt){ + if(this.get('edited') != null){ + return } + evt.preventDefault() + var focused = this.get() + focused.getAttribute('selected') != null ? + focused.removeAttribute('selected') + : focused.setAttribute('selected', '') }, }, setup: function(dom){ diff --git a/experiments/outline-editor/index.html b/experiments/outline-editor/index.html index 475aa7b..5ad782e 100755 --- a/experiments/outline-editor/index.html +++ b/experiments/outline-editor/index.html @@ -9,12 +9,13 @@ @@ -58,7 +59,10 @@ TODO: - shift subtree up/down - create node - edit node -- undo delete node +- undo + - delete node + - indent/deindent + - edit node - copy/paste nodes/trees - shifting nodes up/down - multiple node selection