25 lines
1.3 KiB
JavaScript
25 lines
1.3 KiB
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';
|
|
export const useGridAriaAttributes = () => {
|
|
var _rootProps$experiment;
|
|
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$experiment = rootProps.experimentalFeatures) != null && _rootProps$experiment.ariaV7 && rootProps.treeData) {
|
|
role = 'treegrid';
|
|
}
|
|
return {
|
|
role,
|
|
'aria-colcount': visibleColumns.length,
|
|
'aria-rowcount': headerGroupingMaxDepth + 1 + pinnedRowsCount + totalRowCount,
|
|
'aria-multiselectable': !rootProps.disableMultipleRowSelection
|
|
};
|
|
}; |