@salesforce/design-system-react
Version:
Salesforce Lightning Design System for React
32 lines (30 loc) • 1.54 kB
JavaScript
/* 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