in src/components/UncontrolledTabs.js [262:321]
function handleKeyDown(e) {
const { direction, disableUpDownKeys } = props;
if (isTabFromContainer(e.target)) {
let { selectedIndex: index } = props;
let preventDefault = false;
let useSelectedIndex = false;
if (e.keyCode === 32 /* space */ || e.keyCode === 13 /* enter */) {
preventDefault = true;
useSelectedIndex = false;
handleClick(e);
}
if (
e.keyCode === 37 /* arrow left */ ||
(!disableUpDownKeys && e.keyCode === 38) /* arrow up */
) {
// Select next tab to the left, validate if up arrow is not disabled
if (direction === 'rtl') {
index = getNextTab(index);
} else {
index = getPrevTab(index);
}
preventDefault = true;
useSelectedIndex = true;
} else if (
e.keyCode === 39 /* arrow right */ ||
(!disableUpDownKeys && e.keyCode === 40) /* arrow down */
) {
// Select next tab to the right, validate if down arrow is not disabled
if (direction === 'rtl') {
index = getPrevTab(index);
} else {
index = getNextTab(index);
}
preventDefault = true;
useSelectedIndex = true;
} else if (e.keyCode === 35) {
// Select last tab (End key)
index = getLastTab();
preventDefault = true;
useSelectedIndex = true;
} else if (e.keyCode === 36) {
// Select first tab (Home key)
index = getFirstTab();
preventDefault = true;
useSelectedIndex = true;
}
// This prevents scrollbars from moving around
if (preventDefault) {
e.preventDefault();
}
// Only use the selected index in the state if we're not using the tabbed index
if (useSelectedIndex) {
setSelected(index, e);
}
}
}