Codemod scripts for MUI X.
npm install @mui/x-codemod> Codemod scripts for MUI X


This repository contains a collection of codemod scripts based for use with
jscodeshift that help update MUI X APIs.
``bash
npx @mui/x-codemod@latest
Applies a @mui/x-codemod to the specified paths
Positionals:
codemod The name of the codemod [string]
paths Paths forwarded to jscodeshift [string]
Options:
--version Show version number [boolean]
--help Show help [boolean]
--parser which parser for jscodeshift to use.
[string] [default: 'tsx']
--jscodeshift Pass options directly to jscodeshift [array]
Examples:
npx @mui/x-codemod@latest v8.0.0/preset-safe src
npx @mui/x-codemod@latest v6.0.0/component-rename-prop src --
--component=DataGrid --from=prop --to=newProp
`
To pass more options directly to jscodeshift, use --jscodeshift=.... For example:
`bashsingle option
npx @mui/x-codemod --jscodeshift=--run-in-band
$3
Options to recast's printer can be provided
through jscodeshift's
printOptions command line argument`bash
npx @mui/x-codemod --jscodeshift="--printOptions='{\"quote\":\"double\"}'"
`v8.0.0
$3
A combination of all important transformers for migrating v7 to v8.
⚠️ This codemod should be run only once.
It runs codemods for all MUI X packages (Data Grid, Date and Time Pickers, Tree View, and Charts).
To run codemods for a specific package, refer to the respective section.
`bash
npx @mui/x-codemod@latest v8.0.0/preset-safe
`The corresponding sub-sections are listed below
preset-safe-for-tree-view
- preset-safe-for-charts
- preset-safe-for-data-grid
- preset-safe-for-pickers$3
####
preset-safe for Tree View v8.0.0The
preset-safe codemods for Tree View.`bash
npx @mui/x-codemod@latest v8.0.0/tree-view/preset-safe
`The list includes these transformers
rename-tree-view-simple-tree-view
- rename-tree-item-2####
rename-tree-view-simple-tree-viewRenames the Tree View component to Simple Tree View
`diff
-import { TreeView } from '@mui/x-tree-view';
+import { SimpleTreeView } from '@mui/x-tree-view';-import { TreeView } from '@mui/x-tree-view/TreeView';
+import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView';
return (
-
+
-
+
);
`####
rename-tree-item-2Renames the
TreeItem2 component to TreeItem (same for any subcomponents or utils like useTreeItem2 or TreeItem2Icon).`diff
-import { TreeItem2 } from '@mui/x-tree-view';
+import { TreeItem } from '@mui/x-tree-view';-import { TreeItem2 } from '@mui/x-tree-view/TreeItem2';
+import { TreeItem } from '@mui/x-tree-view/TreeItem';
`$3
####
preset-safe for Charts v8.0.0The
preset-safe codemods for Charts.`bash
npx @mui/x-codemod@latest v8.0.0/charts/preset-safe
`The list includes these transformers
rename-legend-to-slots-legend
- replace-legend-direction-values
- rename-responsive-chart-container
- rename-label-and-tick-font-size####
rename-legend-to-slots-legendRenames legend props to the corresponding slotProps.
`diff
- legend={{ hiden: true}}
+ slotProps={{ legend: { hiden: true} }}
/>
`####
replace-legend-direction-valuesReplace
row and column values by horizontal and vertical respectively.`diff
slotProps={{
legend: {
- direction: "row"
+ direction: "horizontal"
}
}}
/>
`####
replace-legend-position-valuesReplace
"left" | "middle" | "right" values "start" | "center" | "end" respectively.
This is to align with the CSS values and reflect the RTL ability of the legend component.`diff
slotProps={{
legend: {
position: {
- horizontal: "left",
+ horizontal: "start",
}
}
}}
/>
`####
rename-responsive-chart-containerRenames
ResponsiveChartContainer and ResponsiveChartContainerPro by ChartContainer and ChartContainerPro which have the same behavior in v8.`diff
-import { ResponsiveChartContainer } from '@mui/x-charts/ResponsiveChartContainer';
+import { ChartContainer } from '@mui/x-charts/ChartContainer';-
+
-
+
`####
rename-legend-position-typeRenames
LegendPosition to Position.`diff
-import { LegendPosition } from '@mui/x-charts/ChartsLegend';
+import { Position } from '@mui/x-charts/models';
`> [!WARNING]
> If you imported both
ResponsiveChartContainer and ChartContainer in the same file, you might end up with duplicated import.
> Verify the git diff to remove the duplicate.
>
> `diff
> import { ChartContainer } from '@mui/x-charts/ChartContainer';
> -import { ResponsiveChartContainer } from '@mui/x-charts/ResponsiveChartContainer';
> +import { ChartContainer } from '@mui/x-charts/ChartContainer';
> `####
rename-label-and-tick-font-sizeRenames
labelFontSize and tickFontSize props to the corresponding xxxStyle prop.`diff
- labelFontSize={18}
+ labelStyle={{
+ fontSize: 18
+ }}
- tickFontSize={20}
+ tickStyle={{
+ fontSize: 20
+ }}
/>
`####
remove-on-axis-click-handlerRemove the
and move the associated onAxisClick prop to its parent.> [!WARNING]
> This codemode does not work if component got renamed or if the handler is not a direct child of the container.
`diff
+ {}}>
-
- {}} />
`####
rename-unstable-use-seriesRemove
unstable_ prefix from useSeries and use*Series hooks, as they have now become stable.`diff
import {
- unstable_useSeries,
+ useSeries,
- unstable_usePieSeries,
+ usePieSeries,
- unstable_useLineSeries,
+ useLineSeries,
- unstable_useBarSeries,
+ useBarSeries,
- unstable_useScatterSeries,
+ useScatterSeries,
} from '@mui/x-charts/hooks';
import {
- unstable_useHeatmapSeries,
+ useHeatmapSeries,
} from '@mui/x-charts-pro/hooks';
`####
rename-sparkline-colors-to-colorRenames the
colors prop of a SparkLineChart to color and accesses its first element.`diff
- colors={['red']}
+ color={'red'}
/>
`If
colors is a function, it will be wrapped in another function that returns its first element.`diff
- colors={fn}
+ color={typeof fn === 'function' ? mode => fn(mode)[0] : fn[0]}
/>
`If there are cases that the codemod cannot handle, you should see a comment with a
mui-x-codemod prefix in the code.`diff
- colors={(mode) => (mode === 'light' ? ['black'] : ['white'])}
+ / mui-x-codemod: We renamed the colors prop to color, but didn't change the value. Please ensure sure this prop receives a string or a function that returns a string. /
+ color={(mode) => (mode === 'light' ? ['black'] : ['white'])}
/>
`$3
####
preset-safe for Data Grid v8.0.0The
preset-safe codemods for Data Grid.`bash
npx @mui/x-codemod@latest v8.0.0/data-grid/preset-safe
`The list includes these transformers
remove-stabilized-v8-experimentalFeatures
- remove-props
- rename-props
- rename-imports
- reform-row-selection-model
- rename-package
- add-showToolbar-prop####
remove-stabilized-v8-experimentalFeaturesRemove feature flags for stabilized
experimentalFeatures.`diff
- experimentalFeatures={{
- ariaV8: true,
- }}
/>
``bash
npx @mui/x-codemod@latest v8.0.0/data-grid/remove-stabilized-experimentalFeatures
`####
remove-propsRemove props that are no longer supported.
The list includes these props:
-
indeterminateCheckboxAction
- rowPositionsDebounceMs
- resetPageOnSortFilter`diff
- indeterminateCheckboxAction="deselect"
- rowPositionsDebounceMs={100}
- resetPageOnSortFilter
/>
``bash
npx @mui/x-codemod@latest v8.0.0/data-grid/remove-props
`####
rename-propsRename props to the new ones.
The list includes these props:
-
unstable_rowSpanning to rowSpanning
- unstable_dataSource to dataSource
- unstable_dataSourceCache to dataSourceCache
- unstable_lazyLoading to lazyLoading
- unstable_lazyLoadingRequestThrottleMs to lazyLoadingRequestThrottleMs
- unstable_onDataSourceError to onDataSourceError
- unstable_listView to listView
- unstable_listColumn to listViewColumn`diff
- unstable_rowSpanning
- unstable_dataSource={dataSource}
- unstable_dataSourceCache={dataSourceCache}
- unstable_lazyLoading
- unstable_lazyLoadingRequestThrottleMs={100}
- unstable_onDataSourceError={() => {}}
- unstable_listView
- unstable_listColumn={{}}
+ rowSpanning
+ dataSource={dataSource}
+ dataSourceCache={dataSourceCache}
+ lazyLoading
+ lazyLoadingRequestThrottleMs={100}
+ onDataSourceError={() => {}}
+ listView
+ listViewColumn={{}}
/>
``bash
npx @mui/x-codemod@latest v8.0.0/data-grid/rename-props
`####
rename-importsThis codemod renames the imports of the Data Grid components. The list includes these imports:
-
selectedGridRowsSelector to gridRowSelectionIdsSelector
- selectedGridRowsCountSelector to gridRowSelectionCountSelector`diff
-import { selectedGridRowsSelector, selectedGridRowsCountSelector } from '@mui/x-data-grid';
+import { gridRowSelectionIdsSelector, gridRowSelectionCountSelector } from '@mui/x-data-grid';
``bash
npx @mui/x-codemod@latest v8.0.0/data-grid/rename-imports
`####
reform-row-selection-modelReforms the controlled
rowSelectionModel prop value to the new one.`diff
-const [rowSelectionModel, setRowSelectionModel] = React.useState([1, 2]);
+const [rowSelectionModel, setRowSelectionModel] = React.useState({
+ type: 'include',
+ ids: new Set([1, 2]),
+}); rowSelectionModel={rowSelectionModel}
onRowSelectionModelChange={setRowSelectionModel}
/>
``bash
npx @mui/x-codemod@latest v8.0.0/data-grid/reform-row-selection-model
`####
rename-packageReorganizes the imports moved from
@mui/x-data-grid-pro and @mui/x-data-grid-premium.`diff
-import { LicenseInfo } from '@mui/x-data-grid-pro';
+import { LicenseInfo } from '@mui/x-license';
``bash
npx @mui/x-codemod@latest v8.0.0/data-grid/rename-package
`####
add-showToolbar-propAdds the
showToolbar prop to the Data Grid components that are using slots.toolbar prop.`diff
slots={{
toolbar: GridToolbar,
}}
+ showToolbar
/>
``bash
npx @mui/x-codemod@latest v8.0.0/data-grid/add-showToolbar-prop
`$3
####
preset-safe for Pickers v8.0.0The
preset-safe codemods for Pickers.`bash
npx @mui/x-codemod@latest v8.0.0/pickers/preset-safe
`The list includes these transformers
rename-adapter-date-fns-imports
- rename-type-imports####
rename-adapter-date-fns-imports> [!WARNING]
> This codemod is not idempotent. Running it multiple times will rename the imports back and forth.
> Usage of
AdapterDateFnsV3 would be replaced by AdapterDateFns and a subsequent run would rename it to AdapterDateFnsV2.- Renames
AdapterDateFns and AdapterDateFnsJalali imports to AdapterDateFnsV2 and AdapterDateFnsJalaliV2 respectfully.
`diff
-import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
-import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalali';
+import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV2';
+import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV2';
`- Renames
AdapterDateFnsV3 and AdapterDateFnsJalaliV3 imports to AdapterDateFns and AdapterDateFnsJalali respectfully.
`diff
-import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFnsV3';
-import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalaliV3';
+import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
+import { AdapterDateFnsJalali } from '@mui/x-date-pickers/AdapterDateFnsJalali';
``bash
npx @mui/x-codemod@latest v8.0.0/pickers/rename-adapter-date-fns-imports
`####
rename-type-importsRenames:
-
usePickersTranslations to usePickerTranslations
- usePickersContext to usePickerContext
- FieldValueType to PickerValueType
- RangeFieldSection to FieldRangeSection
- PickerShortcutChangeImportance to PickerChangeImportance`diff
-import { usePickersTranslations, usePickersContext } from '@mui/x-date-pickers/hooks';
+import { usePickerTranslations, usePickerContext } from '@mui/x-date-pickers/hooks';
-import { FieldValueType } from '@mui/x-date-pickers';
+import { PickerValueType } from '@mui/x-date-pickers';
-import { RangeFieldSection } from '@mui/x-date-pickers-pro/models';
+import { FieldRangeSection } from '@mui/x-date-pickers-pro/models';
-import { PickerShortcutChangeImportance } from '@mui/x-date-pickers/PickersShortcuts';
+import { PickerChangeImportance } from '@mui/x-date-pickers/models'; interface MyComponentProps {
- valueType: FieldValueType;
+ valueType: PickerValueType;
foo: string;
bar: number;
}
``bash
npx @mui/x-codemod@latest v8.0.0/pickers/rename-type-imports
`v7.0.0
$3
A combination of all important transformers for migrating v6 to v7.
⚠️ This codemod should be run only once.
It runs codemods for both Data Grid and Date and Time Pickers packages.
To run codemods for a specific package, refer to the respective section.
`bash
npx @mui/x-codemod@latest v7.0.0/preset-safe
`The corresponding sub-sections are listed below
preset-safe-for-pickers
- preset-safe-for-data-grid
- preset-safe-for-tree-view$3
####
preset-safe for Pickers v7.0.0The
preset-safe codemods for Pickers.`bash
npx @mui/x-codemod@latest v7.0.0/pickers/preset-safe
`The list includes these transformers
rename-components-to-slots-pickers
- rename-default-calendar-month-to-reference-date
- rename-day-picker-classes
- rename-slots-types####
rename-components-to-slots-pickersRenames the
components and componentsProps props to slots and slotProps, respectively.This change only affects Date and Time Picker components.
`diff
- components={{ Toolbar: CustomToolbar }}
- componentsProps={{ actionBar: { actions: ['clear'] } }}
+ slots={{ toolbar: CustomToolbar }}
+ slotProps={{ actionBar: { actions: ['clear'] } }}
/>;
``bash
npx @mui/x-codemod@latest v7.0.0/pickers/rename-components-to-slots
`####
rename-default-calendar-month-to-reference-dateReplace the
defaultCalendarMonth prop with the referenceDate prop.`diff
- +
``bash
npx @mui/x-codemod@latest v7.0.0/pickers/rename-default-calendar-month-to-reference-date
`####
rename-day-picker-classesRename the
dayPickerClasses variable to dayCalendarClasses.`diff
-import { dayPickerClasses } from '@mui/x-date-pickers/DateCalendar';
+import { dayCalendarClasses } from '@mui/x-date-pickers/DateCalendar';
``bash
npx @mui/x-codemod@latest v7.0.0/pickers/rename-day-picker-classes
`####
rename-slots-typesReplace types suffix
SlotsComponent by Slots and SlotsComponentsProps by SlotProps.`diff
-DateCalendarSlotsComponent
-DateCalendarSlotsComponentsProps
+DateCalendarSlots
+DateCalendarSlotProps
``bash
npx @mui/x-codemod@latest v7.0.0/pickers/rename-slots-types
`$3
####
preset-safe for Data Grid v7.0.0The
preset-safe codemods for Data Grid.`bash
npx @mui/x-codemod@latest v7.0.0/data-grid/preset-safe
`The list includes these transformers
rename-components-to-slots-data-grid
- rename-cell-selection-props
- remove-stabilized-v7-experimentalFeatures####
rename-components-to-slots-data-gridRenames the
components and componentsProps props to slots and slotProps, respectively.This change only affects Data Grid components.
`diff
- components={{ Toolbar: CustomToolbar }}
- componentsProps={{ toolbar: { showQuickFilter: true }}}
+ slots={{ toolbar: CustomToolbar }}
+ slotProps={{ toolbar: { showQuickFilter: true }}}
/>;
``bash
npx @mui/x-codemod@latest v7.0.0/data-grid/rename-components-to-slots
`####
rename-cell-selection-propsRename props related to
cellSelection feature.`diff
- unstable_cellSelection
- unstable_cellSelectionModel={{ 0: { id: true, currencyPair: true, price1M: false } }}
- unstable_onCellSelectionModelChange={() => {}}
+ cellSelection
+ cellSelectionModel={{ 0: { id: true, currencyPair: true, price1M: false } }}
+ onCellSelectionModelChange={() => {}}
/>;
``bash
npx @mui/x-codemod@latest v7.0.0/data-grid/rename-cell-selection-props
`####
remove-stabilized-v7-experimentalFeaturesRemove feature flags for stabilized
experimentalFeatures.`diff
- experimentalFeatures={{
- lazyLoading: true,
- ariaV7: true,
- clipboardPaste: true,
- columnGrouping: true,
- }}
/>
``bash
npx @mui/x-codemod@latest v7.0.0/data-grid/remove-stabilized-experimentalFeatures
`$3
####
preset-safe for Tree View v7.0.0The
preset-safe codemods for Tree View.`bash
npx @mui/x-codemod@latest v7.0.0/tree-view/preset-safe
`The list includes these transformers
rename-tree-view-simple-tree-view
- rename-use-tree-item
- rename-expansion-props
- rename-selection-props
- replace-transition-props-by-slot
- rename-focus-callback
- rename-nodeid####
rename-tree-view-simple-tree-viewRenames the Tree View component to Simple Tree View
`diff
-import { TreeView } from '@mui/x-tree-view';
+import { SimpleTreeView } from '@mui/x-tree-view';-import { TreeView } from '@mui/x-tree-view/TreeView';
+import { SimpleTreeView } from '@mui/x-tree-view/SimpleTreeView';
return (
-
+
-
+
);
`####
rename-use-tree-itemRenames the
useTreeItem hook to useTreeItemState`diff
-import { TreeItem, useTreeItem } from '@mui/x-tree-view/TreeItem';
+import { TreeItem, useTreeItemState } from '@mui/x-tree-view/TreeItem'; const CustomContent = React.forwardRef((props, ref) => {
- const { disabled } = useTreeItem(props.itemId);
+ const { disabled } = useTreeItemState(props.itemId);
// Render some UI
});
function App() {
return (
)
}
`####
rename-expansion-propsRename the expansion props
`diff
- onNodeToggle={handleExpansionChange}
+ onExpandedItemsChange={handleExpansionChange}- expanded={expandedItems}
+ expandedItems={expandedItems}
- defaultExpanded={defaultExpandedItems}
+ defaultExpandedItems={defaultExpandedItems}
/>
`####
rename-selection-propsRename the selection props
`diff
- onNodeSelect={handleSelectionChange}
+ onSelectedItemsChange={handleSelectionChange}- selected={selectedItems}
+ selectedItems={selectedItems}
- defaultSelected={defaultSelectedItems}
+ defaultSelectedItems={defaultSelectedItems}
/>
`####
replace-transition-props-by-slotReplace the
TransitionComponent and TransitionProps components with the groupTransition slot:`diff
- TransitionComponent={Fade}
+ slots={{ groupTransition: Fade }}- TransitionProps={{ timeout: 600 }}
+ slotProps={{ groupTransition: { timeout: 600 } }}
/>
`####
rename-focus-callbackReplace the
onNodeFocus callback with onItemFocus:`diff
- onNodeFocus={onNodeFocus}
+ onItemFocus={onItemFocus}
/>
`####
rename-nodeidRename nodeId to itemId
`diff
- nodeId='unique-id'
+ itemId='unique-id'
`v6.0.0
$3
A combination of all important transformers for migrating v5 to v6.
⚠️ This codemod should be run only once.
It runs codemods for both Data Grid and Date and Time Pickers packages.
To run codemods for a specific package, refer to the respective section.
`bash
npx @mui/x-codemod@latest v6.0.0/preset-safe
`The corresponding sub-sections are listed below
preset-safe-for-pickers
- preset-safe-for-data-grid$3
####
preset-safe for Pickers v6.0.0The
preset-safe codemods for Pickers.`bash
npx @mui/x-codemod@latest v6.0.0/pickers/preset-safe
`The list includes these transformers
adapter-change-import
- view-components-rename
- view-components-rename-value-prop
- localization-provider-rename-locale
- text-props-to-localeText
- replace-tabs-props
- replace-toolbar-props-by-slot
- migrate-to-components-componentsProps
- replace-arrows-button-slot
- rename-should-disable-time
- rename-inputFormat-prop
- rename-default-toolbar-title-localeText####
adapter-change-importImport the adapters from
@mui/x-date-pickers instead of @date-io.`diff
-import AdapterJalaali from '@date-io/jalaali';
+import { AdapterMomentJalaali } from '@mui/x-date-pickers/AdapterMomentJalaali';
`####
view-components-renameRenames the view components.
`diff
-
+-
+
-
+
-
+
-
+
-
+
`####
view-components-rename-value-propRenames the
date prop of the view components into value.`diff
-
+-
+
-
+
-
+
`####
localization-provider-rename-localeRenames the
locale prop of the LocalizationProvider component into adapterLocale.`diff
dateAdapter={AdapterDayjs}
- locale="fr"
+ adapterLocale="fr"
>
{children}
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/localization-provider-rename-locale
`####
text-props-to-localeTextReplace props used for localization such as
cancelText to their corresponding localeText key on all the Date and Time Pickers components.`diff
- cancelText="Cancelar"
+ localeText={{
+ cancelButtonLabel: "Cancelar"
+ }}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/text-props-to-localeText
`If you were always using the same text value in all your components, consider moving those translation from the component to the
LocalizationProvider by hand.`diff
dateAdapter={AdapterDayjs}
+ localeText={{ cancelButtonLabel: "Cancelar" }}
>
- localeText={{ cancelButtonLabel: "Cancelar" }}
/>
- localeText={{ cancelButtonLabel: "Cancelar" }}
/>
`You can find more details about Date and Time breaking changes in the migration guide.
####
replace-tabs-propsReplace props used for
Tabs in DateTime pickers by componentsProps.tabs properties.`diff
- hideTabs={false}
- dateRangeIcon={ }
- timeIcon={ }
+ componentsProps={{
+ tabs: {
+ hidden: false,
+ dateIcon: ,
+ timeIcon: ,
+ }
+ }}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/replace-tabs-props
`####
replace-toolbar-props-by-slotReplace props used to customize the
Toolbar in pickers by slots properties and localeText.`diff
- ToolbarComponent={MyToolbar}
+ components={{ Toolbar: MyToolbar }}
- toolbarPlaceholder="__"
- toolbarFormat="DD / MM / YYYY"
- showToolbar
+ componentsProps={{
+ toolbar: {
+ toolbarPlaceholder: "__",
+ toolbarFormat: "DD / MM / YYYY",
+ hidden: false,
+ }
+ }}
- toolbarTitle="Title"
+ localeText={{ toolbarTitle: "Title" }}
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/replace-toolbar-props-by-slot
`####
migrate-to-components-componentsPropsReplace customization props by their equivalent
components and componentsProps properties.`diff
- PopperProps={{ onClick: handleClick }}
+ componentsProps={{ popper: { onClick: handleClick }}}
/> - TransitionComponent={Fade}
+ components={{ DesktopTransition: Fade }}
/>
- DialogProps={{ backgroundColor: 'red' }}
+ componentsProps={{ dialog: { backgroundColor: 'red' }}}
/>
- PaperProps={{ backgroundColor: 'red' }}
+ componentsProps={{ desktopPaper: { backgroundColor: 'red' }}}
/>
- TrapFocusProps={{ isEnabled: () => false }}
+ componentsProps={{ desktopTrapFocus: { isEnabled: () => false }}}
/>
- InputProps={{ color: 'primary' }}
+ componentsProps={{ textField: { InputProps: { color: 'primary' }}}}
/>
- InputAdornmentProps={{ position: 'start' }}
+ componentsProps={{ inputAdornment: { position: 'start' }}}
/>
- OpenPickerButtonProps={{ ref: buttonRef }}
+ componentsProps={{ openPickerButton: { ref: buttonRef }}}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/migrate-to-components-componentsProps
`####
replace-arrows-button-slotReplace
LeftArrowButton and RightArrowButton slots for navigation buttons by PreviousIconButton and NextIconButton.`diff
components={{
- LeftArrowButton: CustomButton,
+ PreviousIconButton: CustomButton,
- RightArrowButton: CustomButton,
+ NextIconButton: CustomButton,
}} componentsProps={{
- leftArrowButton: {},
+ previousIconButton: {},
- rightArrowButton: {},
+ nextIconButton: {},
}}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/replace-arrows-button-slot
`####
rename-should-disable-timeReplace
shouldDisableTime by shouldDisableClock.`diff
- shouldDisableTime={(timeValue, view) => view === 'hours' && timeValue < 12}
+ shouldDisableClock={(timeValue, view) => view === 'hours' && timeValue < 12}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/rename-should-disable-time
`####
rename-inputFormat-propReplace
inputFormat prop with format.`diff
- inputFormat="YYYY"
+ format="YYYY"
/>
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/rename-inputFormat-prop
`####
rename-default-toolbar-title-localeTextRename toolbar related translation keys, removing
Default part from them to better fit their usage.`diff
localeText={{
- datePickerDefaultToolbarTitle: 'Date Picker',
+ datePickerToolbarTitle: 'Date Picker',
- timePickerDefaultToolbarTitle: 'Time Picker',
+ timePickerToolbarTitle: 'Time Picker',
- dateTimePickerDefaultToolbarTitle: 'Date Time Picker',
+ dateTimePickerToolbarTitle: 'Date Time Picker',
- dateRangePickerDefaultToolbarTitle: 'Date Range Picker',
+ dateRangePickerToolbarTitle: 'Date Range Picker',
}}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/rename-default-toolbar-title-localeText
`####
rename-components-to-slots-pickersRenames the
components and componentsProps props to slots and slotProps, respectively.This change only affects Date and Time Pickers components.
`diff
- components={{ Toolbar: CustomToolbar }}
- componentsProps={{ actionBar: { actions: ['clear'] } }}
+ slots={{ toolbar: CustomToolbar }}
+ slotProps={{ actionBar: { actions: ['clear'] } }}
/>;
``bash
npx @mui/x-codemod@latest v6.0.0/pickers/rename-components-to-slots
`$3
####
preset-safe for Data Grid v6.0.0The
preset-safe codemods for Data Grid.`bash
npx @mui/x-codemod@latest v6.0.0/data-grid/preset-safe
`The list includes these transformers
column-menu-components-rename
- row-selection-props-rename
- rename-rowsPerPageOptions-prop
- remove-disableExtendRowFullWidth-prop
- rename-linkOperators-logicOperators
- rename-filter-item-props
- rename-selectors-and-events
- remove-stabilized-experimentalFeatures
- replace-onCellFocusOut-prop####
column-menu-components-renameReplace column menu items that have been renamed.
`diff
-
+
-
+
-
+
-
+
-
+
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/column-menu-components-rename
`If you are using
GridRowGroupingColumnMenuItems and GridRowGroupableColumnMenuItems for grouping, consider fixing them manually as these imports are replaced by GridColumnMenuGroupingItem and may require some extra work to port.####
row-selection-props-renameData Grid props that have been renamed.
`diff
- selectionModel={model}
+ rowSelectionModel={model}
- onSelectionModelChange={handler}
+ onRowSelectionModelChange={handler}
- disableSelectionOnClick
+ disableRowSelectionOnClick
- disableMultipleSelection
+ disableMultipleRowSelection
- showCellRightBorder
+ showCellVerticalBorder
- showColumnRightBorder
+ showColumnVerticalBorder
/>
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/row-selection-props-rename
`####
rename-rowsPerPageOptions-propRename
rowsPerPageOptions prop to pageSizeOptions.`diff
- rowsPerPageOptions={[5, 10, 20]}
+ pageSizeOptions={[5, 10, 20]}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/rename-rowsPerPageOptions-prop
`####
remove-disableExtendRowFullWidth-propRemove
disableExtendRowFullWidth prop which is no longer supported.`diff
- disableExtendRowFullWidth
/>
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/remove-disableExtendRowFullWidth-prop
`####
rename-linkOperators-logicOperatorsRename
linkOperators related props to logicOperators and rename classes.`diff
const [filterModel, setFilterModel] = React.useState({
items: [],
- linkOperator: GridLinkOperator.Or,
- quickFilterLogicOperator: GridLinkOperator.Or,
+ logicOperator: GridLogicOperator.Or,
+ quickFilterLogicOperator: GridLogicOperator.Or,
});
- apiRef.current.setFilterLinkOperator('and')
- const localeText = apiRef.current.getLocaleText('filterPanelLinkOperator')
+ apiRef.current.setFilterLogicOperator('and')
+ const localeText = apiRef.current.getLocaleText('filterPanelLogicOperator')
initialState={{
filter: {
filterModel: {
items: [],
- linkOperator: GridLinkOperator.Or,
- quickFilterLogicOperator: GridLinkOperator.Or,
+ logicOperator: GridLogicOperator.Or,
+ quickFilterLogicOperator: GridLogicOperator.Or,
},
},
}}
filterModel={filterModel}
componentsProps={{
filter: {
- linkOperators: [GridLinkOperator.And],
+ logicOperators: [GridLogicOperator.And],
filterFormProps: {
- linkOperatorInputProps: {
+ logicOperatorInputProps: {
variant: 'outlined',
size: 'small',
},
},
},
}}
sx={{
- '& .MuiDataGrid-filterFormLinkOperatorInput': { mr: 2 },
- '& .MuiDataGrid-withBorder': { borderColor: '#456' },
+ '& .MuiDataGrid-filterFormLogicOperatorInput': { mr: 2 },
+ '& .MuiDataGrid-withBorderColor': { borderColor: '#456' },
}}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/rename-linkOperators-logicOperators
`####
rename-filter-item-propsRename filter item props to the new values.
`diff
columns={columns}
rows={rows}
initialState={{
filter: {
filterModel: {
items: [
{
- columnField: 'column',
- operatorValue: 'contains',
+ field: 'column',
+ operator: 'contains',
value: 'a',
},
],
},
},
}}
filterModel={{
items: [
{
- columnField: 'column',
- operatorValue: 'contains',
+ field: 'column',
+ operator: 'contains',
value: 'a',
},
],
}}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/rename-filter-item-props
`####
rename-selectors-and-eventsRename selectors and events.
`diff
function App() {
- useGridApiEventHandler(apiRef, 'selectionChange', handleEvent);
- apiRef.current.subscribeEvent('selectionChange', handleEvent);
- const selection = useGridSelector(apiRef, gridSelectionStateSelector);
- const sortedRowIds = useGridSelector(apiRef, gridVisibleSortedRowIdsSelector);
- const sortedRowEntries = useGridSelector(apiRef, gridVisibleSortedRowEntriesSelector);
- const rowCount = useGridSelector(apiRef, gridVisibleRowCountSelector);
- const sortedTopLevelRowEntries = useGridSelector(apiRef, gridVisibleSortedTopLevelRowEntriesSelector);
- const topLevelRowCount = useGridSelector(apiRef, gridVisibleTopLevelRowCountSelector);
- const allGridColumnsFields = useGridSelector(apiRef, allGridColumnsFieldsSelector);
- const allGridColumns = useGridSelector(apiRef, allGridColumnsSelector);
- const visibleGridColumns = useGridSelector(apiRef, visibleGridColumnsSelector);
- const filterableGridColumns = useGridSelector(apiRef, filterableGridColumnsSelector);
- const getGridNumericColumn = useGridSelector(apiRef, getGridNumericColumnOperators);
+ useGridApiEventHandler(apiRef, 'rowSelectionChange', handleEvent);
+ apiRef.current.subscribeEvent('rowSelectionChange', handleEvent);
+ const selection = useGridSelector(apiRef, gridRowSelectionStateSelector);
+ const sortedRowIds = useGridSelector(apiRef, gridExpandedSortedRowIdsSelector);
+ const sortedRowEntries = useGridSelector(apiRef, gridExpandedSortedRowEntriesSelector);
+ const rowCount = useGridSelector(apiRef, gridExpandedRowCountSelector);
+ const sortedTopLevelRowEntries = useGridSelector(apiRef, gridFilteredSortedTopLevelRowEntriesSelector);
+ const topLevelRowCount = useGridSelector(apiRef, gridFilteredTopLevelRowCountSelector);
+ const allGridColumnsFields = useGridSelector(apiRef, gridColumnFieldsSelector);
+ const allGridColumns = useGridSelector(apiRef, gridColumnDefinitionsSelector);
+ const visibleGridColumns = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector);
+ const filterableGridColumns = useGridSelector(apiRef, gridFilterableColumnDefinitionsSelector);
+ const getGridNumericColumn = useGridSelector(apiRef, getGridNumericOperators);
}
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/rename-selectors-and-events
`####
remove-stabilized-experimentalFeaturesRemove feature flags for stabilized
experimentalFeatures.`diff
- experimentalFeatures={{
- newEditingApi: true,
- }}
/>
``diff
experimentalFeatures={{
- newEditingApi: true,
columnGrouping: true,
}}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/remove-stabilized-experimentalFeatures
`####
replace-onCellFocusOut-propReplace
onCellFocusOut prop with componentsProps.cell.onBlur.`diff
- onCellFocusOut={handleBlur}
+ componentsProps={{
+ cell: {
+ onBlur: handleBlur,
+ },
+ }}
/>
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/replace-onCellFocusOut-prop
`####
rename-components-to-slots-data-gridRenames the
components and componentsProps props to slots and slotProps, respectively.This change only affects Data Grid components.
`diff
- components={{ Toolbar: CustomToolbar }}
- componentsProps={{ actionBar: { actions: ['clear'] } }}
+ slots={{ toolbar: CustomToolbar }}
+ slotProps={{ actionBar: { actions: ['clear'] } }}
/>;
``bash
npx @mui/x-codemod@latest v6.0.0/data-grid/rename-components-to-slots
``You can find more details about Data Grid breaking change in the migration guide.