UNPKG

@salesforce/design-system-react

Version:

Salesforce Lightning Design System for React

32 lines (30 loc) 1.54 kB
/* Copyright (c) 2015-present, salesforce.com, inc. All rights reserved */ /* Licensed under BSD 3-Clause - see LICENSE.txt or git.io/sfdc-license */ import { useCallback } from 'react'; /** * Calculates data table keyboard navigation state based on currently selected cell */ export default function useTableContextHelper(tableContext, cellContext, fixedLayout) { var isActive = tableContext.activeCell.rowIndex === cellContext.rowIndex && tableContext.activeCell.columnIndex === cellContext.columnIndex; var hasFocus = fixedLayout && tableContext.tableHasFocus && isActive; var changeActiveCell = tableContext.changeActiveCell, handleTableKeyDown = tableContext.handleKeyDown; var handleFocus = useCallback(function () { if (fixedLayout && tableContext.allowKeyboardNavigation) { changeActiveCell(cellContext.rowIndex, cellContext.columnIndex); } }, [fixedLayout, tableContext.allowKeyboardNavigation, changeActiveCell, cellContext.rowIndex, cellContext.columnIndex]); var handleKeyDown = useCallback(function (event) { if (fixedLayout && tableContext.allowKeyboardNavigation) { handleTableKeyDown(event); } }, [fixedLayout, tableContext.allowKeyboardNavigation, handleTableKeyDown]); var tabIndex = fixedLayout && isActive && !tableContext.activeElement && tableContext.allowKeyboardNavigation ? '0' : undefined; return { tabIndex: tabIndex, hasFocus: hasFocus, handleFocus: handleFocus, handleKeyDown: handleKeyDown }; } //# sourceMappingURL=context-helper.js.map