MCPcopy
hub / github.com/reactjs/react-tabs / handleKeyDown

Function handleKeyDown

src/components/UncontrolledTabs.jsx:263–333  ·  view source on GitHub ↗
(e)

Source from the content-addressed store, hash-verified

261 }
262
263 function handleKeyDown(e) {
264 const { direction, disableUpDownKeys, disableLeftRightKeys } = props;
265 if (isTabFromContainer(e.target)) {
266 let { selectedIndex: index } = props;
267 let preventDefault = false;
268 let useSelectedIndex = false;
269
270 if (
271 e.code === 'Space' ||
272 e.keyCode === 32 /* space */ ||
273 e.code === 'Enter' ||
274 e.keyCode === 13 /* enter */
275 ) {
276 preventDefault = true;
277 useSelectedIndex = false;
278 handleClick(e);
279 }
280
281 // keyCode is deprecated and only used here for IE
282
283 if (
284 (!disableLeftRightKeys &&
285 (e.keyCode === 37 || e.code === 'ArrowLeft')) /* arrow left */ ||
286 (!disableUpDownKeys &&
287 (e.keyCode === 38 || e.code === 'ArrowUp')) /* arrow up */
288 ) {
289 // Select next tab to the left, validate if up arrow is not disabled
290 if (direction === 'rtl') {
291 index = getNextTab(index);
292 } else {
293 index = getPrevTab(index);
294 }
295 preventDefault = true;
296 useSelectedIndex = true;
297 } else if (
298 (!disableLeftRightKeys &&
299 (e.keyCode === 39 || e.code === 'ArrowRight')) /* arrow right */ ||
300 (!disableUpDownKeys &&
301 (e.keyCode === 40 || e.code === 'ArrowDown')) /* arrow down */
302 ) {
303 // Select next tab to the right, validate if down arrow is not disabled
304 if (direction === 'rtl') {
305 index = getPrevTab(index);
306 } else {
307 index = getNextTab(index);
308 }
309 preventDefault = true;
310 useSelectedIndex = true;
311 } else if (e.keyCode === 35 || e.code === 'End') {
312 // Select last tab (End key)
313 index = getLastTab();
314 preventDefault = true;
315 useSelectedIndex = true;
316 } else if (e.keyCode === 36 || e.code === 'Home') {
317 // Select first tab (Home key)
318 index = getFirstTab();
319 preventDefault = true;
320 useSelectedIndex = true;

Callers

nothing calls this directly

Calls 7

isTabFromContainerFunction · 0.85
handleClickFunction · 0.85
getNextTabFunction · 0.85
getPrevTabFunction · 0.85
getLastTabFunction · 0.85
getFirstTabFunction · 0.85
setSelectedFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…