@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
82 lines (81 loc) • 3.14 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.useGridSidebar = exports.sidebarStateInitializer = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var React = _interopRequireWildcard(require("react"));
var _internals = require("@mui/x-data-grid-pro/internals");
var _gridSidebarSelector = require("./gridSidebarSelector");
const sidebarStateInitializer = (state, props) => (0, _extends2.default)({}, state, {
sidebar: props.initialState?.sidebar ?? {
open: false
}
});
exports.sidebarStateInitializer = sidebarStateInitializer;
const useGridSidebar = (apiRef, props) => {
const hideSidebar = React.useCallback(() => {
apiRef.current.setState(state => {
if (!state.sidebar.open || !state.sidebar.value) {
return state;
}
apiRef.current.publishEvent('sidebarClose', {
value: state.sidebar.value
});
return (0, _extends2.default)({}, state, {
sidebar: {
open: false
}
});
});
}, [apiRef]);
const showSidebar = React.useCallback((newValue, sidebarId, labelId) => {
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
sidebar: (0, _extends2.default)({}, state.sidebar, {
open: true,
value: newValue,
sidebarId,
labelId
})
}));
apiRef.current.publishEvent('sidebarOpen', {
value: newValue
});
}, [apiRef]);
(0, _internals.useGridApiMethod)(apiRef, {
showSidebar,
hideSidebar
}, 'public');
const stateExportPreProcessing = React.useCallback((prevState, context) => {
const sidebarToExport = (0, _gridSidebarSelector.gridSidebarStateSelector)(apiRef);
const shouldExportSidebar =
// Always export if the `exportOnlyDirtyModels` property is not activated
!context.exportOnlyDirtyModels ||
// Always export if the sidebar was initialized
props.initialState?.sidebar != null ||
// Always export if the sidebar is opened
sidebarToExport.open;
if (!shouldExportSidebar) {
return prevState;
}
return (0, _extends2.default)({}, prevState, {
sidebar: sidebarToExport
});
}, [apiRef, props.initialState?.sidebar]);
const stateRestorePreProcessing = React.useCallback((params, context) => {
const sidebar = context.stateToRestore.sidebar;
if (sidebar != null) {
apiRef.current.setState(state => (0, _extends2.default)({}, state, {
sidebar
}));
}
return params;
}, [apiRef]);
(0, _internals.useGridRegisterPipeProcessor)(apiRef, 'exportState', stateExportPreProcessing);
(0, _internals.useGridRegisterPipeProcessor)(apiRef, 'restoreState', stateRestorePreProcessing);
(0, _internals.useGridEventPriority)(apiRef, 'sidebarClose', props.onSidebarClose);
(0, _internals.useGridEventPriority)(apiRef, 'sidebarOpen', props.onSidebarOpen);
};
exports.useGridSidebar = useGridSidebar;