@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
66 lines (65 loc) • 2.02 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
const _excluded = ["className", "children", "initiallyOpen"];
import * as React from 'react';
import { styled } from '@mui/system';
import { vars } from '@mui/x-data-grid-pro/internals';
import useId from '@mui/utils/useId';
import { getDataGridUtilityClass } from '@mui/x-data-grid-pro';
import composeClasses from '@mui/utils/composeClasses';
import clsx from 'clsx';
import { CollapsibleContext } from "./CollapsibleContext.js";
import { useGridRootProps } from "../../hooks/utils/useGridRootProps.js";
import { jsx as _jsx } from "react/jsx-runtime";
const useUtilityClasses = ownerState => {
const {
classes
} = ownerState;
const slots = {
root: ['collapsible']
};
return composeClasses(slots, getDataGridUtilityClass, classes);
};
const CollapsibleRoot = styled('div', {
name: 'MuiDataGrid',
slot: 'Collapsible'
})(({
ownerState
}) => ({
display: 'flex',
flexDirection: 'column',
flex: ownerState.open ? '1 0 auto' : '0 0 auto',
borderRadius: vars.radius.base
}));
function Collapsible(props) {
const {
className,
children,
initiallyOpen = true
} = props,
other = _objectWithoutPropertiesLoose(props, _excluded);
const [open, setOpen] = React.useState(initiallyOpen);
const panelId = useId();
const rootProps = useGridRootProps();
const ownerState = {
classes: rootProps.classes,
open
};
const classes = useUtilityClasses(ownerState);
const contextValue = React.useMemo(() => ({
open,
onOpenChange: setOpen,
panelId
}), [open, setOpen, panelId]);
return /*#__PURE__*/_jsx(CollapsibleContext.Provider, {
value: contextValue,
children: /*#__PURE__*/_jsx(CollapsibleRoot, _extends({
ownerState: ownerState,
className: clsx(classes.root, className)
}, other, {
children: children
}))
});
}
export { Collapsible };