@mui/x-data-grid-premium
Version:
The Premium plan edition of the MUI X Data Grid Components.
72 lines • 2.55 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { useGridApiMethod, useGridRegisterPipeProcessor, useGridEventPriority } from '@mui/x-data-grid-pro/internals';
import { gridSidebarStateSelector } from "./gridSidebarSelector.mjs";
export const sidebarStateInitializer = (state, props) => _extends({}, state, {
sidebar: props.initialState?.sidebar ?? {
open: false
}
});
export 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 _extends({}, state, {
sidebar: {
open: false
}
});
});
}, [apiRef]);
const showSidebar = React.useCallback((newValue, sidebarId, labelId) => {
apiRef.current.setState(state => _extends({}, state, {
sidebar: _extends({}, state.sidebar, {
open: true,
value: newValue,
sidebarId,
labelId
})
}));
apiRef.current.publishEvent('sidebarOpen', {
value: newValue
});
}, [apiRef]);
useGridApiMethod(apiRef, {
showSidebar,
hideSidebar
}, 'public');
const stateExportPreProcessing = React.useCallback((prevState, context) => {
const sidebarToExport = 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 _extends({}, 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 => _extends({}, state, {
sidebar
}));
}
return params;
}, [apiRef]);
useGridRegisterPipeProcessor(apiRef, 'exportState', stateExportPreProcessing);
useGridRegisterPipeProcessor(apiRef, 'restoreState', stateRestorePreProcessing);
useGridEventPriority(apiRef, 'sidebarClose', props.onSidebarClose);
useGridEventPriority(apiRef, 'sidebarOpen', props.onSidebarOpen);
};