@mui/x-data-grid
Version:
The Community plan edition of the Data Grid components (MUI X).
25 lines • 1.33 kB
JavaScript
import { gridVisibleColumnDefinitionsSelector } from '../features/columns/gridColumnsSelector';
import { useGridSelector } from './useGridSelector';
import { useGridRootProps } from './useGridRootProps';
import { gridColumnGroupsHeaderMaxDepthSelector } from '../features/columnGrouping/gridColumnGroupsSelector';
import { gridPinnedRowsCountSelector, gridRowCountSelector } from '../features/rows/gridRowsSelector';
import { useGridPrivateApiContext } from './useGridPrivateApiContext';
import { isMultipleRowSelectionEnabled } from '../features/rowSelection/utils';
export const useGridAriaAttributes = () => {
const apiRef = useGridPrivateApiContext();
const rootProps = useGridRootProps();
const visibleColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
const totalRowCount = useGridSelector(apiRef, gridRowCountSelector);
const headerGroupingMaxDepth = useGridSelector(apiRef, gridColumnGroupsHeaderMaxDepthSelector);
const pinnedRowsCount = useGridSelector(apiRef, gridPinnedRowsCountSelector);
let role = 'grid';
if (rootProps.treeData) {
role = 'treegrid';
}
return {
role,
'aria-colcount': visibleColumns.length,
'aria-rowcount': headerGroupingMaxDepth + 1 + pinnedRowsCount + totalRowCount,
'aria-multiselectable': isMultipleRowSelectionEnabled(rootProps)
};
};