From a47e1f07ebb6ea0e910f7e16e6596c552932deb7 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sun, 11 Aug 2019 18:00:39 +0530 Subject: [PATCH] fix: Move past non focusable cell while navigating --- src/cellmanager.js | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/cellmanager.js b/src/cellmanager.js index b41dcfa..9c49fc8 100644 --- a/src/cellmanager.js +++ b/src/cellmanager.js @@ -245,7 +245,7 @@ export default class CellManager { // reset header background if (this.lastHeaders) { - this.lastHeaders.forEach(header => header.classList.remove('dt-cell--highlight')); + this.lastHeaders.forEach(header => header && header.classList.remove('dt-cell--highlight')); } } @@ -260,14 +260,14 @@ export default class CellManager { const rowHeaderSelector = `.dt-cell--${srNoColIndex}-${rowIndex}`; if (this.lastHeaders) { - this.lastHeaders.forEach(header => header.classList.remove('dt-cell--highlight')); + this.lastHeaders.forEach(header => header && header.classList.remove('dt-cell--highlight')); } const colHeader = $(colHeaderSelector, this.wrapper); const rowHeader = $(rowHeaderSelector, this.wrapper); this.lastHeaders = [colHeader, rowHeader]; - this.lastHeaders.forEach(header => header.classList.add('dt-cell--highlight')); + this.lastHeaders.forEach(header => header && header.classList.add('dt-cell--highlight')); } selectAreaOnClusterChanged() { @@ -658,6 +658,26 @@ export default class CellManager { $cell = this.getBelowCell$($cell); } + if (!$cell) { + return false; + } + + const { + colIndex + } = $.data($cell); + const column = this.columnmanager.getColumn(colIndex); + + if (!column.focusable) { + let $prevFocusedCell = this.$focusedCell; + this.unfocusCell($prevFocusedCell); + this.$focusedCell = $cell; + let ret = this.focusCellInDirection(direction); + if (!ret) { + this.focusCell($prevFocusedCell); + } + return ret; + } + this.focusCell($cell); return true; }