47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
import * as React from 'react';
|
|
import { useGridApiMethod } from '../../utils/useGridApiMethod';
|
|
export const virtualizationStateInitializer = (state, props) => {
|
|
const virtualization = {
|
|
enabled: !props.disableVirtualization,
|
|
enabledForColumns: true
|
|
};
|
|
return _extends({}, state, {
|
|
virtualization
|
|
});
|
|
};
|
|
export function useGridVirtualization(apiRef, props) {
|
|
/*
|
|
* API METHODS
|
|
*/
|
|
|
|
const setVirtualization = enabled => {
|
|
apiRef.current.setState(state => _extends({}, state, {
|
|
virtualization: _extends({}, state.virtualization, {
|
|
enabled
|
|
})
|
|
}));
|
|
};
|
|
const setColumnVirtualization = enabled => {
|
|
apiRef.current.setState(state => _extends({}, state, {
|
|
virtualization: _extends({}, state.virtualization, {
|
|
enabledForColumns: enabled
|
|
})
|
|
}));
|
|
};
|
|
const api = {
|
|
unstable_setVirtualization: setVirtualization,
|
|
unstable_setColumnVirtualization: setColumnVirtualization
|
|
};
|
|
useGridApiMethod(apiRef, api, 'public');
|
|
|
|
/*
|
|
* EFFECTS
|
|
*/
|
|
|
|
/* eslint-disable react-hooks/exhaustive-deps */
|
|
React.useEffect(() => {
|
|
setVirtualization(!props.disableVirtualization);
|
|
}, [props.disableVirtualization]);
|
|
/* eslint-enable react-hooks/exhaustive-deps */
|
|
} |