@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
63 lines • 2.07 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
const _excluded = ["className", "children"];
import * as React from 'react';
import clsx from 'clsx';
import { styled } from '@mui/material/styles';
import { getDataGridUtilityClass, useGridSelector } from '@mui/x-data-grid-pro';
import composeClasses from '@mui/utils/composeClasses';
import { useGridApiContext } from "../../hooks/utils/useGridApiContext.mjs";
import { ResizablePanel, ResizablePanelHandle } from "../resizablePanel/index.mjs";
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.mjs";
import { gridSidebarContentSelector } from "../../hooks/features/sidebar/index.mjs";
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
const useUtilityClasses = ownerState => {
const {
classes
} = ownerState;
const slots = {
root: ['sidebar']
};
return composeClasses(slots, getDataGridUtilityClass, classes);
};
const SidebarRoot = styled(ResizablePanel, {
name: 'MuiDataGrid',
slot: 'Sidebar'
})({
display: 'flex',
flexDirection: 'column',
width: 300,
minWidth: 260,
maxWidth: 400,
overflow: 'hidden'
});
function Sidebar(props) {
const {
className
} = props,
other = _objectWithoutPropertiesLoose(props, _excluded);
const apiRef = useGridApiContext();
const rootProps = useGridRootProps();
const classes = useUtilityClasses(rootProps);
const {
value,
sidebarId,
labelId
} = useGridSelector(apiRef, gridSidebarContentSelector);
if (!value) {
return null;
}
const sidebarContent = apiRef.current.unstable_applyPipeProcessors('sidebar', null, value);
if (!sidebarContent) {
return null;
}
return /*#__PURE__*/_jsxs(SidebarRoot, _extends({
id: sidebarId,
className: clsx(className, classes.root),
ownerState: rootProps,
"aria-labelledby": labelId
}, other, {
children: [/*#__PURE__*/_jsx(ResizablePanelHandle, {}), sidebarContent]
}));
}
export { Sidebar };