UNPKG

@mui/x-data-grid

Version:

The Community plan edition of the Data Grid components (MUI X).

35 lines 1.4 kB
import { useGridSelector } from '../../utils'; import { useGridApiContext } from '../../utils/useGridApiContext'; import { useGridRootProps } from '../../utils/useGridRootProps'; import { gridExpandedRowCountSelector } from '../filter'; import { gridRowCountSelector, gridRowsLoadingSelector } from '../rows'; /** * Uses the grid state to determine which overlay to display. * Returns the active overlay type and the active loading overlay variant. */ export const useGridOverlays = () => { const apiRef = useGridApiContext(); const rootProps = useGridRootProps(); const totalRowCount = useGridSelector(apiRef, gridRowCountSelector); const visibleRowCount = useGridSelector(apiRef, gridExpandedRowCountSelector); const noRows = totalRowCount === 0; const loading = useGridSelector(apiRef, gridRowsLoadingSelector); const showNoRowsOverlay = !loading && noRows; const showNoResultsOverlay = !loading && totalRowCount > 0 && visibleRowCount === 0; let overlayType = null; let loadingOverlayVariant = null; if (showNoRowsOverlay) { overlayType = 'noRowsOverlay'; } if (showNoResultsOverlay) { overlayType = 'noResultsOverlay'; } if (loading) { overlayType = 'loadingOverlay'; loadingOverlayVariant = rootProps.slotProps?.loadingOverlay?.[noRows ? 'noRowsVariant' : 'variant'] || null; } return { overlayType, loadingOverlayVariant }; };