Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// there should always be an active_cell if we got here...
// but if for some reason there isn't, bail out rather than
// doing something unexpected
Logger.warning('Trying to change cell, but no cell is active.');
return;
}
// If we are moving yank focus away from whatever input may still have
// focus.
// TODO There is a better way to handle native focus being out of sync
// with the "is_focused" prop. We should find the better way.
this.$el.focus();
const hasSelection = selected_cells.length > 1;
const isEnterOrTab =
e.keyCode === KEY_CODES.ENTER || e.keyCode === KEY_CODES.TAB;
// If we have a multi-cell selection and are using ENTER or TAB
// move active cell within the selection context.
if (hasSelection && isEnterOrTab) {
const nextCell = this.getNextCell(e, {
currentCell: active_cell,
restrictToSelection: true
});
setProps({
is_focused: false,
active_cell: nextCell
});
return;
} else if (!e.shiftKey) {
// If we are not extending selection with shift and are
// moving with navigation keys cancel selection and move.
setProps({
is_focused: false,
selected_cells: [nextCell],
active_cell: nextCell,
start_cell: nextCell,
end_cell: nextCell
});
return;
}
// else we are navigating with arrow keys and extending selection
// with shift.
let { minRow, minCol, maxRow, maxCol } = selectionBounds(selected_cells);
const selectingDown =
e.keyCode === KEY_CODES.ARROW_DOWN || e.keyCode === KEY_CODES.ENTER;
const selectingUp = e.keyCode === KEY_CODES.ARROW_UP;
const selectingRight =
e.keyCode === KEY_CODES.ARROW_RIGHT || e.keyCode === KEY_CODES.TAB;
const selectingLeft = e.keyCode === KEY_CODES.ARROW_LEFT;
let startRow = start_cell && start_cell.row;
let startCol = start_cell && start_cell.column;
let endRow = end_cell && end_cell.row;
let endCol = end_cell && end_cell.column;
if (selectingDown) {
if (active_cell.row > minRow) {
minRow++;
endRow = minRow;
} else if (maxRow < viewport.data.length - 1) {
maxRow++;
endRow = maxRow;
handleKeyDown = (e: React.KeyboardEvent) => {
const {
stopPropagation,
updateOnEnter
} = this.propsWithDefaults;
if (stopPropagation) {
e.stopPropagation();
}
if (updateOnEnter && e.keyCode === KEY_CODES.ENTER) {
this.submit();
}
}
handleKeyDown = (e: KeyboardEvent) => {
const is_focused = this.props.focused;
if (is_focused &&
(e.keyCode !== KEY_CODES.TAB && e.keyCode !== KEY_CODES.ENTER)
) {
return;
}
if (!is_focused && !isNavKey(e.keyCode)) {
return;
}
this.propagateChange();
}
onKeyDown={event => { if (event.keyCode === KEY_CODES.ENTER) { event.currentTarget.blur(); } }}
placeholder={(page_current + 1).toString()}