@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
102 lines (101 loc) • 4.18 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.GridPivotPanelHeader = GridPivotPanelHeader;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var React = _interopRequireWildcard(require("react"));
var _styles = require("@mui/material/styles");
var _xDataGridPro = require("@mui/x-data-grid-pro");
var _internals = require("@mui/x-data-grid-pro/internals");
var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
var _sidebar = require("../sidebar");
var _useGridApiContext = require("../../hooks/utils/useGridApiContext");
var _useGridRootProps = require("../../hooks/utils/useGridRootProps");
var _gridPivotingSelectors = require("../../hooks/features/pivoting/gridPivotingSelectors");
var _GridPivotPanelSearch = require("./GridPivotPanelSearch");
var _jsxRuntime = require("react/jsx-runtime");
const useUtilityClasses = ownerState => {
const {
classes
} = ownerState;
const slots = {
root: ['pivotPanelHeader'],
switch: ['pivotPanelSwitch'],
label: ['pivotPanelSwitchLabel']
};
return (0, _composeClasses.default)(slots, _xDataGridPro.getDataGridUtilityClass, classes);
};
const GridPivotPanelHeaderRoot = (0, _styles.styled)('div', {
name: 'MuiDataGrid',
slot: 'PivotPanelHeader'
})({
display: 'flex',
alignItems: 'center',
gap: _internals.vars.spacing(1),
padding: _internals.vars.spacing(0, 0.75, 0, 1),
boxSizing: 'border-box',
height: 52
});
const GridPivotPanelSwitch = (0, _styles.styled)(_internals.NotRendered, {
name: 'MuiDataGrid',
slot: 'PivotPanelSwitch'
})({
marginRight: 'auto'
});
const GridPivotPanelSwitchLabel = (0, _styles.styled)('span', {
name: 'MuiDataGrid',
slot: 'PivotPanelSwitchLabel'
})({
font: _internals.vars.typography.font.large,
fontWeight: _internals.vars.typography.fontWeight.medium
});
function GridPivotPanelHeader(props) {
const {
searchValue,
onSearchValueChange
} = props;
const apiRef = (0, _useGridApiContext.useGridApiContext)();
const rootProps = (0, _useGridRootProps.useGridRootProps)();
const pivotActive = (0, _xDataGridPro.useGridSelector)(apiRef, _gridPivotingSelectors.gridPivotActiveSelector);
const classes = useUtilityClasses(rootProps);
const rows = (0, _xDataGridPro.useGridSelector)(apiRef, _xDataGridPro.gridRowCountSelector);
const isEmptyPivot = pivotActive && rows === 0;
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sidebar.SidebarHeader, {
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(GridPivotPanelHeaderRoot, {
ownerState: rootProps,
className: classes.root,
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(GridPivotPanelSwitch, (0, _extends2.default)({
as: rootProps.slots.baseSwitch,
ownerState: rootProps,
className: classes.switch,
checked: pivotActive,
onChange: event => apiRef.current.setPivotActive(event.target.checked),
size: "small",
label: /*#__PURE__*/(0, _jsxRuntime.jsx)(GridPivotPanelSwitchLabel, {
ownerState: rootProps,
className: classes.label,
children: apiRef.current.getLocaleText('pivotToggleLabel')
})
}, rootProps.slotProps?.baseSwitch)), /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.baseIconButton, (0, _extends2.default)({
onClick: () => {
apiRef.current.hideSidebar();
if (isEmptyPivot) {
apiRef.current.setPivotActive(false);
}
},
"aria-label": apiRef.current.getLocaleText('pivotCloseButton')
}, rootProps.slotProps?.baseIconButton, {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(rootProps.slots.sidebarCloseIcon, {
fontSize: "small"
})
}))]
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_GridPivotPanelSearch.GridPivotPanelSearch, {
value: searchValue,
onClear: () => onSearchValueChange(''),
onChange: event => onSearchValueChange(event.target.value)
})]
});
}