@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
46 lines • 2.19 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
const _excluded = ["children"];
import * as React from 'react';
import clsx from 'clsx';
import { styled } from '@mui/material/styles';
import composeClasses from '@mui/utils/composeClasses';
import { gridClasses, getDataGridUtilityClass, useGridSelector, gridRowsLoadingSelector, gridRowTreeSelector, GRID_ROOT_GROUP_ID } from '@mui/x-data-grid-pro';
import { useGridPrivateApiContext } from "../hooks/utils/useGridPrivateApiContext.js";
import { GridAggregationRowOverlay } from "./GridAggregationRowOverlay.js";
import { useGridRootProps } from "../typeOverloads/reexports.js";
import { gridAggregationModelSelector } from "../hooks/index.js";
import { jsx as _jsx } from "react/jsx-runtime";
const useUtilityClasses = () => {
const slots = {
root: ['bottomContainer']
};
return composeClasses(slots, getDataGridUtilityClass, {});
};
const Element = styled('div', {
slot: 'internal',
shouldForwardProp: undefined
})({
position: 'sticky',
zIndex: 40,
bottom: 'calc(var(--DataGrid-hasScrollX) * var(--DataGrid-scrollbarSize))'
});
export function GridBottomContainer(props) {
const classes = useUtilityClasses();
const rootProps = useGridRootProps();
const apiRef = useGridPrivateApiContext();
const isLoading = useGridSelector(apiRef, gridRowsLoadingSelector);
const tree = useGridSelector(apiRef, gridRowTreeSelector);
const aggregationModel = useGridSelector(apiRef, gridAggregationModelSelector);
const aggregationPosition = rootProps.getAggregationPosition(tree[GRID_ROOT_GROUP_ID]);
const hasAggregation = React.useMemo(() => Object.keys(aggregationModel).length > 0, [aggregationModel]);
const {
children
} = props,
other = _objectWithoutPropertiesLoose(props, _excluded);
return /*#__PURE__*/_jsx(Element, _extends({}, other, {
className: clsx(classes.root, gridClasses['container--bottom']),
role: "presentation",
children: hasAggregation && isLoading && aggregationPosition === 'footer' ? /*#__PURE__*/_jsx(GridAggregationRowOverlay, {}) : children
}));
}