diff options
| author | Christophe Matthieu <chm@odoo.com> | 2015-10-16 13:31:35 +0200 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2015-10-26 11:43:36 +0100 |
| commit | 0be54422c016d6f0d7581ccb28fd6a90071f1dee (patch) | |
| tree | 7239a486f708e1c40924b609dbeeabbeb3a90672 /addons/web_editor/static/src/js/summernote.js | |
| parent | a291adb31422cd4514ff0185a885c2f82cdd9e4b (diff) | |
[FIX] web_editor: use arrow up/down to switch table cell
Diffstat (limited to 'addons/web_editor/static/src/js/summernote.js')
| -rw-r--r-- | addons/web_editor/static/src/js/summernote.js | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/addons/web_editor/static/src/js/summernote.js b/addons/web_editor/static/src/js/summernote.js index 8b30ca74011..78ab7d5d946 100644 --- a/addons/web_editor/static/src/js/summernote.js +++ b/addons/web_editor/static/src/js/summernote.js @@ -918,11 +918,15 @@ options.keyMap.pc['DELETE'] = 'delete'; options.keyMap.pc['ENTER'] = 'enter'; options.keyMap.pc['ESCAPE'] = 'cancel'; options.keyMap.mac['SHIFT+TAB'] = 'untab'; +options.keyMap.pc['UP'] = 'up'; +options.keyMap.pc['DOWN'] = 'down'; options.keyMap.mac['BACKSPACE'] = 'backspace'; options.keyMap.mac['DELETE'] = 'delete'; options.keyMap.mac['ENTER'] = 'enter'; options.keyMap.mac['ESCAPE'] = 'cancel'; +options.keyMap.mac['UP'] = 'up'; +options.keyMap.mac['DOWN'] = 'down'; $.summernote.pluginEvents.insertTable = function (event, editor, layoutInfo, sDim) { var $editable = layoutInfo.editable(); @@ -998,6 +1002,40 @@ $.summernote.pluginEvents.tab = function (event, editor, layoutInfo, outdent) { $.summernote.pluginEvents.untab = function (event, editor, layoutInfo) { return $.summernote.pluginEvents.tab(event, editor, layoutInfo, true); }; +$.summernote.pluginEvents.up = function (event, editor, layoutInfo) { + var r = range.create(); + var node = dom.firstChild(r.sc.childNodes[r.so] || r.sc); + if (!r.isOnCell() || (!dom.isCell(node) && dom.hasContentBefore(node) && (!dom.isBR(dom.hasContentBefore(node)) || !dom.isText(node) || dom.isVisibleText(node) || dom.hasContentBefore(dom.hasContentBefore(node))))) { + return; + } + event.preventDefault(); + var td = dom.ancestor(r.sc, dom.isCell); + var tr = td.parentNode; + var target = tr.previousElementSibling && tr.previousElementSibling.children[_.indexOf(tr.children, td)]; + if (!target) { + target = (dom.ancestorHavePreviousSibling(tr) || tr).previousSibling; + } + if (target) { + range.create(dom.lastChild(target), dom.lastChild(target).textContent.length).select(); + } +}; +$.summernote.pluginEvents.down = function (event, editor, layoutInfo) { + var r = range.create(); + var node = dom.firstChild(r.sc.childNodes[r.so] || r.sc); + if (!r.isOnCell() || (!dom.isCell(node) && dom.hasContentAfter(node) && (!dom.isBR(dom.hasContentAfter(node)) || !dom.isText(node) || dom.isVisibleText(node) || dom.hasContentAfter(dom.hasContentAfter(node))))) { + return; + } + event.preventDefault(); + var td = dom.ancestor(r.sc, dom.isCell); + var tr = td.parentNode; + var target = tr.nextElementSibling && tr.nextElementSibling.children[_.indexOf(tr.children, td)]; + if (!target) { + target = (dom.ancestorHaveNextSibling(tr) || tr).nextSibling; + } + if (target) { + range.create(dom.firstChild(target), 0).select(); + } +}; $.summernote.pluginEvents.enter = function (event, editor, layoutInfo) { var $editable = layoutInfo.editable(); $editable.data('NoteHistory').recordUndo($editable, 'enter'); |
