@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
106 lines (105 loc) • 3.77 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CollapsibleTrigger = CollapsibleTrigger;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var React = _interopRequireWildcard(require("react"));
var _system = require("@mui/system");
var _internals = require("@mui/x-data-grid-pro/internals");
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
var _xDataGridPro = require("@mui/x-data-grid-pro");
var _clsx = _interopRequireDefault(require("clsx"));
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
var _CollapsibleContext = require("./CollapsibleContext");
var _jsxRuntime = require("react/jsx-runtime");
const _excluded = ["children", "className"];
const useUtilityClasses = ownerState => {
const {
classes
} = ownerState;
const slots = {
root: ['collapsibleTrigger'],
icon: ['collapsibleIcon']
};
return (0, _composeClasses.default)(slots, _xDataGridPro.getDataGridUtilityClass, classes);
};
const CollapsibleTriggerRoot = (0, _system.styled)('button', {
name: 'MuiDataGrid',
slot: 'CollapsibleTrigger'
})(({
ownerState
}) => ({
position: 'relative',
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
height: 40,
padding: _internals.vars.spacing(0, 1.5),
border: `1px solid ${_internals.vars.colors.border.base}`,
background: 'none',
outline: 'none',
borderTopLeftRadius: _internals.vars.radius.base,
borderTopRightRadius: _internals.vars.radius.base,
borderBottomLeftRadius: ownerState.open ? 0 : _internals.vars.radius.base,
borderBottomRightRadius: ownerState.open ? 0 : _internals.vars.radius.base,
'&:hover': {
backgroundColor: _internals.vars.colors.interactive.hover,
cursor: 'pointer'
},
'&:focus-visible': {
outline: `2px solid ${_internals.vars.colors.interactive.selected}`,
outlineOffset: -2
}
}));
const CollapsibleIcon = (0, _system.styled)('div', {
name: 'MuiDataGrid',
slot: 'CollapsibleIcon'
})(({
ownerState
}) => ({
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
color: _internals.vars.colors.foreground.muted,
transform: ownerState.open ? 'none' : 'rotate(180deg)',
transition: _internals.vars.transition(['transform'], {
duration: _internals.vars.transitions.duration.short,
easing: _internals.vars.transitions.easing.easeInOut
})
}));
function CollapsibleTrigger(props) {
const {
children,
className
} = props,
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
const rootProps = (0, _useGridRootProps.useGridRootProps)();
const {
open,
onOpenChange,
panelId
} = (0, _CollapsibleContext.useCollapsibleContext)();
const ownerState = {
classes: rootProps.classes,
open
};
const classes = useUtilityClasses(ownerState);
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(CollapsibleTriggerRoot, (0, _extends2.default)({
ownerState: ownerState,
className: (0, _clsx.default)(classes.root, className),
tabIndex: 0,
"aria-controls": open ? panelId : undefined,
"aria-expanded": !open,
onClick: () => onOpenChange(!open)
}, other, {
children: [children, /*#__PURE__*/(0, _jsxRuntime.jsx)(CollapsibleIcon, {
ownerState: ownerState,
className: classes.icon,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.collapsibleIcon, {})
})]
}));
}