From df378b61084139dea8908bccaf6cf2f8ed4c2e75 Mon Sep 17 00:00:00 2001 From: Nicolas Carignani <2bccarignani3@gmail.com> Date: Sat, 17 Apr 2021 18:06:40 -0300 Subject: [PATCH 1/2] tabs+enter direction --- src/component/sheet.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/component/sheet.js b/src/component/sheet.js index 0c34d2dd4..42ca1bbdb 100644 --- a/src/component/sheet.js +++ b/src/component/sheet.js @@ -86,7 +86,7 @@ function selectorSet(multiple, ri, ci, indexesUpdated = true, moving = false) { // direction: left | right | up | down | row-first | row-last | col-first | col-last function selectorMove(multiple, direction) { const { - selector, data, + selector, data, contTabsPressed } = this; const { rows, cols } = data; let [ri, ci] = selector.indexes; @@ -113,6 +113,9 @@ function selectorMove(multiple, direction) { ri = 0; } else if (direction === 'col-last') { ri = rows.len - 1; + } else if (direction === 'tabs+enter'){ + if (ri < rows.len - 1) ri += 1; + ci = Math.max(0, ci - contTabsPressed.n) } if (multiple) { selector.moveIndexes = [ri, ci]; @@ -579,6 +582,7 @@ function sheetInitEvents() { modalValidation, sortFilter, } = this; + let { contTabsPressed } = this; // overlayer overlayerEl .on('mousemove', (evt) => { @@ -812,6 +816,7 @@ function sheetInitEvents() { editor.clear(); // shift + tab => move left // tab => move right + contTabsPressed.n = !shiftKey ? contTabsPressed.n + 1 : 0, selectorMove.call(this, false, shiftKey ? 'left' : 'right'); evt.preventDefault(); break; @@ -819,8 +824,9 @@ function sheetInitEvents() { editor.clear(); // shift + enter => move up // enter => move down - selectorMove.call(this, false, shiftKey ? 'up' : 'down'); + selectorMove.call(this, false, shiftKey ? 'up' : (contTabsPressed.n > 0 ? 'tabs+enter' : 'down')); evt.preventDefault(); + contTabsPressed.n = 0; break; case 8: // backspace insertDeleteRowColumn.call(this, 'delete-cell-text'); @@ -884,6 +890,9 @@ export default class Sheet { ); this.overlayerEl = h('div', `${cssPrefix}-overlayer`) .child(this.overlayerCEl); + this.contTabsPressed = { + n: 0 + }; // sortFilter this.sortFilter = new SortFilter(); // root element From a84d1c96ff783dad3a9a897b001bbf1b0448f3cd Mon Sep 17 00:00:00 2001 From: Nicolas Carignani <2bccarignani3@gmail.com> Date: Mon, 19 Apr 2021 11:01:35 -0300 Subject: [PATCH 2/2] Tabs + Enter direction fixes Not count tab if already in last column Reset count of tabs if i moved to another cell(either by keyboard or click) --- src/component/sheet.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/component/sheet.js b/src/component/sheet.js index 42ca1bbdb..891177d98 100644 --- a/src/component/sheet.js +++ b/src/component/sheet.js @@ -695,6 +695,11 @@ function sheetInitEvents() { bind(window, 'click', (evt) => { this.focusing = overlayerEl.contains(evt.target); + const {ri, ci} = contTabsPressed.lastCurrentCell; + if(this.focusing && (ri != this.data.selector.ri || this.data.selector.ci - ci != 1)) { + contTabsPressed = {n: 0, lastCurrentCell: { ri: this.data.selector.ri, ci: this.data.selector.ci}} + this.contTabsPressed = contTabsPressed; + } }); bind(window, 'paste', (evt) => { @@ -816,7 +821,15 @@ function sheetInitEvents() { editor.clear(); // shift + tab => move left // tab => move right - contTabsPressed.n = !shiftKey ? contTabsPressed.n + 1 : 0, + if(!shiftKey){ + const {ri, ci} = contTabsPressed.lastCurrentCell; + if(contTabsPressed.n == 0 || ri != this.data.selector.ri || this.data.selector.ci - ci != 1) + contTabsPressed = {n: 1, lastCurrentCell: { ri: this.data.selector.ri, ci: this.data.selector.ci}} + else + if(this.data.selector.ci < this.data.cols.len - 1) + contTabsPressed = {n: contTabsPressed.n + 1, lastCurrentCell: { ri: this.data.selector.ri, ci: this.data.selector.ci}} + this.contTabsPressed = contTabsPressed; + } selectorMove.call(this, false, shiftKey ? 'left' : 'right'); evt.preventDefault(); break; @@ -826,7 +839,6 @@ function sheetInitEvents() { // enter => move down selectorMove.call(this, false, shiftKey ? 'up' : (contTabsPressed.n > 0 ? 'tabs+enter' : 'down')); evt.preventDefault(); - contTabsPressed.n = 0; break; case 8: // backspace insertDeleteRowColumn.call(this, 'delete-cell-text'); @@ -836,6 +848,9 @@ function sheetInitEvents() { break; } + if([32,37,38,39,40,13].includes(keyCode)) + contTabsPressed.n = 0; + if (key === 'Delete') { insertDeleteRowColumn.call(this, 'delete-cell-text'); evt.preventDefault(); @@ -891,7 +906,11 @@ export default class Sheet { this.overlayerEl = h('div', `${cssPrefix}-overlayer`) .child(this.overlayerCEl); this.contTabsPressed = { - n: 0 + n: 0, + lastCurrentCell : { + ri: null, + ci: null, + } }; // sortFilter this.sortFilter = new SortFilter();