@mui/x-data-grid
Version:
The community edition of the data grid component (MUI X).
104 lines (99 loc) • 3.54 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { useThemeProps } from '@mui/material/styles';
import { DATA_GRID_DEFAULT_SLOTS_COMPONENTS, GRID_DEFAULT_LOCALE_TEXT } from '../constants';
import { GridDensityTypes, GridEditModes, GridFeatureModeConstant } from '../models';
var DATA_GRID_FORCED_PROPS = {
apiRef: undefined,
disableMultipleColumnsFiltering: true,
disableMultipleColumnsSorting: true,
disableMultipleSelection: true,
throttleRowsMs: undefined,
hideFooterRowCount: false,
pagination: true,
checkboxSelectionVisibleOnly: false,
disableColumnReorder: true,
disableColumnResize: true,
signature: 'DataGrid'
};
export var MAX_PAGE_SIZE = 100;
/**
* The default values of `DataGridPropsWithDefaultValues` to inject in the props of DataGrid.
*/
export var DATA_GRID_PROPS_DEFAULT_VALUES = {
autoHeight: false,
autoPageSize: false,
checkboxSelection: false,
checkboxSelectionVisibleOnly: false,
columnBuffer: 3,
rowBuffer: 3,
columnThreshold: 3,
rowThreshold: 3,
density: GridDensityTypes.Standard,
disableExtendRowFullWidth: false,
disableColumnFilter: false,
disableColumnMenu: false,
disableColumnSelector: false,
disableDensitySelector: false,
disableMultipleColumnsFiltering: false,
disableMultipleSelection: false,
disableMultipleColumnsSorting: false,
disableSelectionOnClick: false,
disableVirtualization: false,
disableIgnoreModificationsIfProcessingProps: false,
editMode: GridEditModes.Cell,
filterMode: GridFeatureModeConstant.client,
headerHeight: 56,
hideFooter: false,
hideFooterPagination: false,
hideFooterRowCount: false,
hideFooterSelectedRowCount: false,
logger: console,
logLevel: process.env.NODE_ENV === 'production' ? 'error' : 'warn',
pagination: false,
paginationMode: GridFeatureModeConstant.client,
rowHeight: 52,
rowsPerPageOptions: [25, 50, 100],
rowSpacingType: 'margin',
showCellRightBorder: false,
showColumnRightBorder: false,
sortingOrder: ['asc', 'desc', null],
sortingMode: GridFeatureModeConstant.client,
throttleRowsMs: 0,
disableColumnReorder: false,
disableColumnResize: false,
keepNonExistentRowsSelected: false
};
export var useDataGridProps = function useDataGridProps(inProps) {
if (inProps.pageSize > MAX_PAGE_SIZE) {
throw new Error("'props.pageSize' cannot exceed 100 in DataGrid.");
}
var themedProps = useThemeProps({
props: inProps,
name: 'MuiDataGrid'
});
var localeText = React.useMemo(function () {
return _extends({}, GRID_DEFAULT_LOCALE_TEXT, themedProps.localeText);
}, [themedProps.localeText]);
var components = React.useMemo(function () {
var overrides = themedProps.components;
if (!overrides) {
return _extends({}, DATA_GRID_DEFAULT_SLOTS_COMPONENTS);
}
var mergedComponents = {};
Object.entries(DATA_GRID_DEFAULT_SLOTS_COMPONENTS).forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
defaultComponent = _ref2[1];
mergedComponents[key] = overrides[key] === undefined ? defaultComponent : overrides[key];
});
return mergedComponents;
}, [themedProps.components]);
return React.useMemo(function () {
return _extends({}, DATA_GRID_PROPS_DEFAULT_VALUES, themedProps, {
localeText: localeText,
components: components
}, DATA_GRID_FORCED_PROPS);
}, [themedProps, localeText, components]);
};