diff --git a/CHANGELOG.md b/CHANGELOG.md index eeee378b0778..94b199a3aedb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,133 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 8.0.0-alpha.4 + +_Dec 13, 2024_ + +We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights āœØ: + +- šŸŒ Improve Romanian locale on the Data Grid and Pickers +- šŸ“š Documentation improvements +- šŸž Bugfixes + +Special thanks go out to the community contributors who have helped make this release possible: +@k-rajat19, @nusr, @rares985, @zivl. +Following are all team members who have contributed to this release: +@alexfauquette, @arminmeh, @flaviendelangle, @JCQuintas, @KenanYusuf, @LukasTy, @MBilalShafi. + + + +### Data Grid + +#### Breaking changes + +- The selectors signature has been updated due to the support of arguments in the selectors. Pass `undefined` as `arguments` if the selector doesn't use any arguments. + + ```diff + -mySelector(state, instanceId) + +mySelector(state, arguments, instanceId) + ``` + +- The `useGridSelector` signature has been updated due to the introduction of arguments parameter in the selectors. Pass `undefined` as `arguments` if the selector doesn't use any arguments. + + ```diff + -const output = useGridSelector(apiRef, selector, equals) + +const output = useGridSelector(apiRef, selector, arguments, equals) + ``` +- The default variant for text fields and selects in the filter panel has been changed to `outlined`. +- The "row spanning" feature is now stable. + ```diff + + ``` +- Selected row is now deselected when clicked again. + +#### `@mui/x-data-grid@8.0.0-alpha.4` + +- [DataGrid] Deselect selected row on click (#15509) @k-rajat19 +- [DataGrid] Fix "No rows" displaying when all rows are pinned (#15335) @nusr +- [DataGrid] Make row spanning feature stable (#15742) @MBilalShafi +- [DataGrid] Round dimensions to avoid subpixel rendering error (#15850) @KenanYusuf +- [DataGrid] Toggle menu on click in `` (#15867) @k-rajat19 +- [DataGrid] Trigger row spanning computation on rows update (#15858) @MBilalShafi +- [DataGrid] Update filter panel input variant (#15807) @KenanYusuf +- [DataGrid] Use `columnsManagement` slot (#15817) @k-rajat19 +- [DataGrid] Use new selector signature (#15200) @MBilalShafi +- [l10n] Improve Romanian (ro-RO) locale (#15745) @rares985 + +#### `@mui/x-data-grid-pro@8.0.0-alpha.4` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@8.0.0-alpha.4`, plus: + +- [DataGridPro] Make row reordering work with pagination (#15355) @k-rajat19 + +#### `@mui/x-data-grid-premium@8.0.0-alpha.4` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@8.0.0-alpha.4`, plus: + +- [DataGridPremium] Fix group column ignoring `valueOptions` for `singleSelect` column type (#15739) @arminmeh + +### Date and Time Pickers + +#### `@mui/x-date-pickers@8.0.0-alpha.4` + +- [l10n] Improve Romanian (ro-RO) locale (#15745) @rares985 +- [pickers] Clean `usePicker` logic (#15763) @flaviendelangle +- [pickers] Rename layout `ownerState` property from `isRtl` to `layoutDirection` (#15803) @flaviendelangle +- [pickers] Use the new `ownerState` in `useClearableField` (#15776) @flaviendelangle +- [pickers] Use the new `ownerState` in the toolbar components (#15777) @flaviendelangle +- [pickers] Use the new `ownerState` object for the clock components and the desktop / mobile wrappers (#15669) @flaviendelangle + +#### `@mui/x-date-pickers-pro@8.0.0-alpha.4` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@8.0.0-alpha.4`. + +### Charts + +#### Breaking changes + +- The default styling of the charts tooltip has been updated. + +#### `@mui/x-charts@8.0.0-alpha.4` + +- [charts] Fix hydration missmatch (#15647) @alexfauquette +- [charts] Fix internal spelling typo (#15805) @zivl +- [charts] Fix scatter dataset with missing data (#15802) @alexfauquette +- [charts] HTML Labels (#15813) @JCQuintas +- [charts] Only access store values by using hooks (#15764) @alexfauquette +- [charts] Update Tooltip style (#15630) @alexfauquette + +#### `@mui/x-charts-pro@8.0.0-alpha.4` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-charts@8.0.0-alpha.4`. + +### Tree View + +#### `@mui/x-tree-view@8.0.0-alpha.4` + +No changes, releasing to keep the versions in sync. + +#### `@mui/x-tree-view-pro@8.0.0-alpha.4` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Releasing to benefit from license package fix (#15814). + +### Docs + +- [docs] Clean Joy and Browser custom field demos (#15707) @flaviendelangle +- [docs] Fix outdated link to handbook (#15855) @oliviertassinari +- [docs] Improve Pickers accessible DOM migration section description (#15596) @LukasTy +- [docs] Use `updateRows` method for list view demos (#15732) @KenanYusuf +- [docs] Use date library version from package dev dependencies for sandboxes (#15762) @LukasTy + +### Core + +- [code-infra] Add Charts sandbox generation (#15830) @JCQuintas +- [code-infra] Remove redundant `@type/react-test-renderer` dep (#15766) @LukasTy +- [license] Use `console.log` for the error message on Codesandbox to avoid rendering error (#15814) @arminmeh + ## 8.0.0-alpha.3 _Dec 5, 2024_ @@ -567,6 +694,153 @@ Same changes as in `@mui/x-charts@8.0.0-alpha.0`. - [release] v8 preparation (#15054) @michelengelen - [test] Fix advanced list view regression test snapshot (#15260) @KenanYusuf +## 7.23.2 + +_Dec 12, 2024_ + +We'd like to offer a big thanks to the 11 contributors who made this release possible. Here are some highlights āœØ: + +- šŸŒ Improve Romanian and Turkish locales on the Data Grid +- šŸŒ Improve Romanian locale on the Pickers +- šŸ“š Documentation improvements +- šŸž Bugfixes + +Special thanks go out to the community contributors who have helped make this release possible: +@ihsanberkozcan, @k-rajat19, @lhilgert9, @nusr, @rares985. + +Following are all team members who have contributed to this release: +@alexfauquette, @arminmeh, @flaviendelangle, @JCQuintas, @KenanYusuf, @LukasTy. + + + +### Data Grid + +#### `@mui/x-data-grid@7.23.2` + +- [DataGrid] Fix "No rows" displaying when all rows are pinned (#15851) @nusr +- [DataGrid] Use `columnsManagement` slot (#15821) @k-rajat19 +- [l10n] Improve Romanian (ro-RO) locale (#15751) @rares985 +- [l10n] Improve Turkish (tr-TR) locale (#15748) @ihsanberkozcan + +#### `@mui/x-data-grid-pro@7.23.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.23.2`, plus: + +- [DataGridPro] Make Row reordering work with pagination (#15782) @k-rajat19 + +#### `@mui/x-data-grid-premium@7.23.2` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.23.2`, plus: + +- [DataGridPremium] Fix group column ignoring `valueOptions` for `singleSelect` column type (#15754) @arminmeh + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.23.2` + +- [l10n] Improve Romanian (ro-RO) locale (#15751) @rares985 + +#### `@mui/x-date-pickers-pro@7.23.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.23.2`. + +### Charts + +#### `@mui/x-charts@7.23.2` + +- [charts] Fix key generation for the ChartsGrid (#15864) @alexfauquette +- [charts] Fix scatter dataset with missing data (#15804) @alexfauquette + +#### `@mui/x-charts-pro@7.23.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-charts@7.23.2`. + +#### `@mui/x-tree-view@v7.23.2` + +No changes, releasing to keep the versions in sync. + +#### `@mui/x-tree-view-pro@7.23.2` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Releasing to benefit from license package fix (#15818). + +### Docs + +- [docs] Fix typo in charts axis documentation (#15746) @JCQuintas +- [docs] Improve Pickers accessible DOM structure description (#15752) @LukasTy +- [docs] Use `updateRows` method for list view demos (#15824) @KenanYusuf +- [docs] Use date library version from package dev dependencies for sandboxes (#15767) @LukasTy + +### Core + +- [core] Add `@mui/x-tree-view-pro` to `releaseChangelog` (#15747) @flaviendelangle +- [license] Use `console.log` for the error message on Codesandbox to avoid rendering error (#15818) @arminmeh + +## 7.23.1 + +_Dec 5, 2024_ + +We'd like to offer a big thanks to the 7 contributors who made this release possible. Here are some highlights āœØ: + +- šŸŒ Improve German locale on the Data Grid component +- šŸž Bugfixes + +Special thanks go out to the community contributors who have helped make this release possible: +@lhilgert9. + +Following are all team members who have contributed to this release: +@arthurbalduini, @cherniavskii, @flaviendelangle, @JCQuintas, @LukasTy and @MBilalShafi. + + + +### Data Grid + +#### `@mui/x-data-grid@7.23.1` + +- [DataGrid] Make column autosizing work with flex columns (#15712) @cherniavskii +- [l10n] Improve German (de-DE) locale (#15641) @lhilgert9 + +#### `@mui/x-data-grid-pro@7.23.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-data-grid@7.23.1`, plus: + +- [DataGridPro] Cleanup pinned rows on removal (#15702) @cherniavskii + +#### `@mui/x-data-grid-premium@7.23.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan') + +Same changes as in `@mui/x-data-grid-pro@7.23.1`. + +### Date and Time Pickers + +#### `@mui/x-date-pickers@7.23.1` + +- [TimePicker] Prevent mouse events after `touchend` event (#15430) @arthurbalduini + +#### `@mui/x-date-pickers-pro@7.23.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-date-pickers@7.23.1`. + +### Charts + +#### `@mui/x-charts@7.23.1` + +- [charts] Improve SVG `pattern` and `gradient` support (#15724) @JCQuintas + +#### `@mui/x-charts-pro@7.23.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan') + +Same changes as in `@mui/x-charts@7.23.1`. + +### Docs + +- [docs] Fix Pickers theme augmentation example (#15675) @LukasTy +- [docs] Remove duplicated warning (#15715) @cherniavskii +- [test] Force hover in headless Chrome (#15711) @cherniavskii +- [docs-infra] Bump `@mui/internal-markdown` to support nested demo imports (#15738) @alexfauquette +- [docs] Improve SEO titles for the Data Grid (#15695) @MBilalShafi + +### Core + +- [core] Add `@mui/x-tree-view-pro` to `releaseChangelog` (#15747) @flaviendelangle + ## 7.23.0 _Nov 29, 2024_ diff --git a/docs/data/data-grid/export/export.md b/docs/data/data-grid/export/export.md index e1aec3b19ba0..b2b6b3445391 100644 --- a/docs/data/data-grid/export/export.md +++ b/docs/data/data-grid/export/export.md @@ -326,7 +326,7 @@ In the following demo, both methods are used to set a custom header and a custom :::warning This feature only works with `@mui/styled-engine` v5.11.8 or newer. -Make sure that the MUIĀ Core version you are using is also installing the correct version for this dependency. +Make sure that the MaterialĀ UI version you are using is also installing the correct version for this dependency. ::: Instead of generating the Excel file in the main thread, you can delegate the task to a web worker. diff --git a/docs/data/data-grid/getting-started/getting-started.md b/docs/data/data-grid/getting-started/getting-started.md index a7e2494e3083..7ff5d7d84a8f 100644 --- a/docs/data/data-grid/getting-started/getting-started.md +++ b/docs/data/data-grid/getting-started/getting-started.md @@ -158,7 +158,7 @@ const theme = createTheme({ ## Licenses -While MUIĀ Core is entirely licensed under MIT, MUIĀ X serves a part of its components under a commercial license. +While our Core libraries are entirely licensed under MIT, MUIĀ X serves a part of its components under a commercial license. Please pay attention to the license. ### Plans diff --git a/docs/data/introduction/overview/overview.md b/docs/data/introduction/overview/overview.md index 6bfe81762750..fd90712ee849 100644 --- a/docs/data/introduction/overview/overview.md +++ b/docs/data/introduction/overview/overview.md @@ -15,7 +15,7 @@ MUIĀ X is a collection of advanced UI components, including: - [Charts](/x/react-charts/) - [Tree View](/x/react-tree-view/) -These components are significantly more complex than the ones found in the MUIĀ Core libraries. +These components are significantly more complex than the ones found in our Core libraries. They feature advanced functionality for data-rich applications and a wide range of other use cases. :::info @@ -28,23 +28,23 @@ Throughout the documentation, Pro- and Premium-only features are denoted with th ## Advantages of MUIĀ X - **Ship faster:** Our team has invested thousands of hours into these components so you don't have to. Get up and running in a fraction of the time it would take to build from scratch. -- **Expand on the power of MUIĀ Core**: MUIĀ X components work seamlessly with MUIĀ Core libraries like MaterialĀ UI, delivering more advanced functionality, but can also be used standalone. +- **Expand on the power ofĀ Core**: MUIĀ X components work seamlessly with Core libraries like MaterialĀ UI, delivering more advanced functionality, but can also be used standalone. - **Grow with us:** You can start for free with the MIT-licensed packages, and upgrade to Pro or Premium when you need more advanced features or technical support. - **Dedicated maintenance:** MUIĀ X is maintained by a full-time staff of engineers, so you can rest assured that any issues will be addressed in a timely manner. - **Technical support:** Pro and Premium users get access to technical support from our team as well as priority for bug fixes and feature requests. -## MUIĀ X vs. MUIĀ Core +## MUIĀ X vs. Core MUIĀ X is a collection of advanced UI components for complex use cases. Most of MUIĀ X's components are available for free, but more advanced features require a Pro or Premium commercial license. -MUIĀ Core focuses on empowering the creation of great design systems with React. +Core focuses on empowering the creation of great design systems with React. It comes with two themes (Material Design and an in-house one). It's about solving design problems. It contains foundational UI component libraries like MaterialĀ UI and BaseĀ UI. These libraries are open source, MIT-licensed, and free forever. -MUIĀ X components are fully compatible with MUIĀ Core. +MUIĀ X components are fully compatible with Core. MUIĀ X can extend the functionality of UIs built with MaterialĀ UI or BaseĀ UI, but its components can also stand on their own, they can be used with third-parties React component libraries that implement different designs. -You can find [more details](https://mui-org.notion.site/MUI-s-products-a-brief-overview-9c5e8e11eb1247c3a124b446be7451cb) about the difference in our handbook. +You can find [more details](https://mui-org.notion.site/X-FAQ-c33e9a7eabba4da1ad7f8c04f99044cc#11751b16538c489ba23c5133db1e67b8) about the difference in our handbook. diff --git a/package.json b/package.json index fd6e12da98d1..9c3bec49ecd0 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "private": true, "scripts": { "preinstall": "npx only-allow pnpm", diff --git a/packages/x-charts-pro/README.md b/packages/x-charts-pro/README.md index 05616ba80e2b..f949a0b30773 100644 --- a/packages/x-charts-pro/README.md +++ b/packages/x-charts-pro/README.md @@ -1,7 +1,7 @@ # MUIĀ X Pro This package is the Pro plan edition of the chart components. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-charts-pro/package.json b/packages/x-charts-pro/package.json index b582a8d12027..d34246f3abc9 100644 --- a/packages/x-charts-pro/package.json +++ b/packages/x-charts-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-pro", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "The Pro plan edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-charts-vendor/package.json b/packages/x-charts-vendor/package.json index 5a8298bb7110..4d53bbe89b9f 100644 --- a/packages/x-charts-vendor/package.json +++ b/packages/x-charts-vendor/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts-vendor", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "Vendored dependencies for MUI X Charts", "author": "MUI Team", "keywords": [ diff --git a/packages/x-charts/README.md b/packages/x-charts/README.md index 7eafec7d9e44..a70eb9e8527e 100644 --- a/packages/x-charts/README.md +++ b/packages/x-charts/README.md @@ -1,7 +1,7 @@ # MUIĀ X Charts This package is the community edition of the chart components. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-charts/package.json b/packages/x-charts/package.json index f73f30953811..9c037234636c 100644 --- a/packages/x-charts/package.json +++ b/packages/x-charts/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-charts", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "The community edition of the Charts components (MUI X).", "author": "MUI Team", "main": "src/index.js", diff --git a/packages/x-codemod/package.json b/packages/x-codemod/package.json index 1f5bbd2668bd..af7effbdab20 100644 --- a/packages/x-codemod/package.json +++ b/packages/x-codemod/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-codemod", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "bin": "./codemod.js", "private": false, "author": "MUI Team", diff --git a/packages/x-data-grid-generator/package.json b/packages/x-data-grid-generator/package.json index fb84ce2dc4e2..4b4b1c169c8e 100644 --- a/packages/x-data-grid-generator/package.json +++ b/packages/x-data-grid-generator/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-generator", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "Generate fake data for demo purposes only.", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-premium/README.md b/packages/x-data-grid-premium/README.md index 21ba5482e3c4..38af71588e56 100644 --- a/packages/x-data-grid-premium/README.md +++ b/packages/x-data-grid-premium/README.md @@ -1,7 +1,7 @@ # MUIĀ X Data Grid Premium This package is the Premium plan edition of the Data Grid components. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-data-grid-premium/package.json b/packages/x-data-grid-premium/package.json index 6bf146e7ce0e..3d12b001e21f 100644 --- a/packages/x-data-grid-premium/package.json +++ b/packages/x-data-grid-premium/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-premium", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "The Premium plan edition of the Data Grid Components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid-pro/README.md b/packages/x-data-grid-pro/README.md index 4a63af61c3ae..bc68d073cfbf 100644 --- a/packages/x-data-grid-pro/README.md +++ b/packages/x-data-grid-pro/README.md @@ -1,7 +1,7 @@ # MUIĀ X Data Grid Pro This package is the Pro plan edition of the Data Grid component. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-data-grid-pro/package.json b/packages/x-data-grid-pro/package.json index afb5f31f1c65..64f95fc7c168 100644 --- a/packages/x-data-grid-pro/package.json +++ b/packages/x-data-grid-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid-pro", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "The Pro plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/README.md b/packages/x-data-grid/README.md index fab185d4804f..fd7de5c9439e 100644 --- a/packages/x-data-grid/README.md +++ b/packages/x-data-grid/README.md @@ -1,7 +1,7 @@ # MUIĀ X Data Grid This package is the Community plan edition of the Data Grid components. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-data-grid/package.json b/packages/x-data-grid/package.json index 8e1de4c44dcb..dc7327e1b6ea 100644 --- a/packages/x-data-grid/package.json +++ b/packages/x-data-grid/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-data-grid", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "The Community plan edition of the Data Grid components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-data-grid/src/components/cell/GridActionsCell.tsx b/packages/x-data-grid/src/components/cell/GridActionsCell.tsx index 5707b3939a5c..1f3d2cdca42d 100644 --- a/packages/x-data-grid/src/components/cell/GridActionsCell.tsx +++ b/packages/x-data-grid/src/components/cell/GridActionsCell.tsx @@ -120,6 +120,13 @@ function GridActionsCell(props: GridActionsCellProps) { const hideMenu = () => { setOpen(false); }; + const toggleMenu = () => { + if (open) { + hideMenu(); + } else { + showMenu(); + } + }; const handleTouchRippleRef = (index: string | number) => (instance: TouchRippleActions | null) => { @@ -212,7 +219,7 @@ function GridActionsCell(props: GridActionsCellProps) { aria-controls={open ? menuId : undefined} role="menuitem" size="small" - onClick={showMenu} + onClick={toggleMenu} touchRippleRef={handleTouchRippleRef(buttonId)} tabIndex={focusedButtonIndex === iconButtons.length ? tabIndex : -1} {...rootProps.slotProps?.baseIconButton} diff --git a/packages/x-data-grid/src/hooks/features/rows/useGridRowSpanning.ts b/packages/x-data-grid/src/hooks/features/rows/useGridRowSpanning.ts index 1c29902b6e79..8ee70db58ad2 100644 --- a/packages/x-data-grid/src/hooks/features/rows/useGridRowSpanning.ts +++ b/packages/x-data-grid/src/hooks/features/rows/useGridRowSpanning.ts @@ -5,6 +5,7 @@ import { gridVisibleColumnDefinitionsSelector } from '../columns/gridColumnsSele import { useGridVisibleRows } from '../../utils/useGridVisibleRows'; import { gridRenderContextSelector } from '../virtualization/gridVirtualizationSelectors'; import { useGridSelector } from '../../utils/useGridSelector'; +import { gridRowTreeSelector } from './gridRowsSelector'; import type { GridColDef } from '../../../models/colDef'; import type { GridRowId, GridValidRowModel, GridRowEntry } from '../../../models/gridRows'; import type { DataGridProcessedProps } from '../../../models/props/DataGridProps'; @@ -71,7 +72,7 @@ const computeRowSpanningState = ( for ( let index = rangeToProcess.firstRowIndex; - index <= rangeToProcess.lastRowIndex; + index < rangeToProcess.lastRowIndex; index += 1 ) { const row = visibleRows[index]; @@ -187,7 +188,7 @@ export const rowSpanningStateInitializer: GridStateInitializer = (state, props, } const rangeToProcess = { firstRowIndex: 0, - lastRowIndex: Math.min(DEFAULT_ROWS_TO_PROCESS - 1, Math.max(rowIds.length - 1, 0)), + lastRowIndex: Math.min(DEFAULT_ROWS_TO_PROCESS, Math.max(rowIds.length, 0)), }; const rows = rowIds.map((id) => ({ id, @@ -226,13 +227,14 @@ export const useGridRowSpanning = ( const { range, rows: visibleRows } = useGridVisibleRows(apiRef, props); const renderContext = useGridSelector(apiRef, gridRenderContextSelector); const colDefs = useGridSelector(apiRef, gridVisibleColumnDefinitionsSelector); + const tree = useGridSelector(apiRef, gridRowTreeSelector); const processedRange = useLazyRef(() => { return Object.keys(apiRef.current.state.rowSpanning.spannedCells).length > 0 ? { firstRowIndex: 0, lastRowIndex: Math.min( - DEFAULT_ROWS_TO_PROCESS - 1, - Math.max(apiRef.current.state.rows.dataRowIds.length - 1, 0), + DEFAULT_ROWS_TO_PROCESS, + Math.max(apiRef.current.state.rows.dataRowIds.length, 0), ), } : EMPTY_RANGE; @@ -265,7 +267,7 @@ export const useGridRowSpanning = ( const rangeToProcess = getUnprocessedRange( { firstRowIndex: renderContext.firstRowIndex, - lastRowIndex: Math.min(renderContext.lastRowIndex - 1, range.lastRowIndex), + lastRowIndex: Math.min(renderContext.lastRowIndex, range.lastRowIndex + 1), }, processedRange.current, ); @@ -326,11 +328,17 @@ export const useGridRowSpanning = ( const prevRenderContext = React.useRef(renderContext); const isFirstRender = React.useRef(true); const shouldResetState = React.useRef(false); + const previousTree = React.useRef(tree); React.useEffect(() => { const firstRender = isFirstRender.current; if (isFirstRender.current) { isFirstRender.current = false; } + if (tree !== previousTree.current) { + previousTree.current = tree; + updateRowSpanningState(true); + return; + } if (range && lastRange.current && isRowRangeUpdated(range, lastRange.current)) { lastRange.current = range; shouldResetState.current = true; @@ -344,5 +352,5 @@ export const useGridRowSpanning = ( return; } updateRowSpanningState(); - }, [updateRowSpanningState, renderContext, range, lastRange]); + }, [updateRowSpanningState, renderContext, range, lastRange, tree]); }; diff --git a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx index 1502dfbf4ec6..948450691a82 100644 --- a/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx +++ b/packages/x-data-grid/src/hooks/features/virtualization/useGridVirtualScroller.tsx @@ -145,10 +145,8 @@ export const useGridVirtualScroller = () => { } const initialRect = node.getBoundingClientRect(); - let lastSize = { - width: initialRect.width, - height: initialRect.height, - }; + + let lastSize = roundDimensions(initialRect); apiRef.current.publishEvent('resize', lastSize); @@ -162,10 +160,7 @@ export const useGridVirtualScroller = () => { return; } - const newSize = { - width: entry.contentRect.width, - height: entry.contentRect.height, - }; + const newSize = roundDimensions(entry.contentRect); if (newSize.width === lastSize.width && newSize.height === lastSize.height) { return; @@ -1109,3 +1104,12 @@ function bufferForDirection( throw new Error('unreachable'); } } + +// Round to avoid issues with subpixel rendering +// https://github.com/mui/mui-x/issues/15721 +function roundDimensions(dimensions: { width: number; height: number }) { + return { + width: Math.round(dimensions.width * 10) / 10, + height: Math.round(dimensions.height * 10) / 10, + }; +} diff --git a/packages/x-data-grid/src/tests/layout.DataGrid.test.tsx b/packages/x-data-grid/src/tests/layout.DataGrid.test.tsx index cd4d6d324bb5..c07c07fd3791 100644 --- a/packages/x-data-grid/src/tests/layout.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/layout.DataGrid.test.tsx @@ -1318,4 +1318,24 @@ describe(' - Layout & warnings', () => { , ); }); + + // See https://github.com/mui/mui-x/issues/15721 + it('should not exceed maximum call stack size caused by subpixel rendering', function test() { + if (/jsdom/.test(window.navigator.userAgent)) { + // Need layouting + this.skip(); + } + + render( +
+ +
, + ); + }); }); diff --git a/packages/x-data-grid/src/tests/rowSpanning.DataGrid.test.tsx b/packages/x-data-grid/src/tests/rowSpanning.DataGrid.test.tsx index ef0b006133d1..f89153e6c0b4 100644 --- a/packages/x-data-grid/src/tests/rowSpanning.DataGrid.test.tsx +++ b/packages/x-data-grid/src/tests/rowSpanning.DataGrid.test.tsx @@ -1,6 +1,7 @@ import * as React from 'react'; import { createRenderer, fireEvent, act } from '@mui/internal-test-utils'; import { expect } from 'chai'; +import { spy } from 'sinon'; import { DataGrid, useGridApiRef, DataGridProps, GridApi } from '@mui/x-data-grid'; import { getCell, getActiveCell } from 'test/utils/helperFn'; @@ -247,5 +248,36 @@ describe(' - Row spanning', () => { }); }); + describe('rows update', () => { + it('should update the row spanning state when the rows are updated', () => { + const rowSpanValueGetter = spy(); + let rowSpanningStateUpdates = 0; + let spannedCells = {}; + render( + { + const newSpannedCells = newState.rowSpanning.spannedCells; + if (newSpannedCells !== spannedCells) { + rowSpanningStateUpdates += 1; + spannedCells = newSpannedCells; + } + }} + />, + ); + + // First update by initializer + expect(rowSpanningStateUpdates).to.equal(1); + + act(() => { + apiRef.current.setRows([{ id: 1, code: 'A101' }]); + }); + + // Second update on row update + expect(rowSpanningStateUpdates).to.equal(2); + }); + }); + // TODO: Add tests for row reordering }); diff --git a/packages/x-date-pickers-pro/README.md b/packages/x-date-pickers-pro/README.md index 7530c5793036..dbbb054eb5b1 100644 --- a/packages/x-date-pickers-pro/README.md +++ b/packages/x-date-pickers-pro/README.md @@ -1,7 +1,7 @@ # MUIĀ X Date Pickers Pro This package is the Pro plan edition of the Date and Time Picker Components. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-date-pickers-pro/package.json b/packages/x-date-pickers-pro/package.json index 28a2b17b1eea..d08f7cf7d406 100644 --- a/packages/x-date-pickers-pro/package.json +++ b/packages/x-date-pickers-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers-pro", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "The Pro plan edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-date-pickers/README.md b/packages/x-date-pickers/README.md index db8b1180d889..74bb859f1a67 100644 --- a/packages/x-date-pickers/README.md +++ b/packages/x-date-pickers/README.md @@ -1,7 +1,7 @@ # MUIĀ X Date Pickers This package is the Community plan edition of the Date and Time Picker components. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-date-pickers/package.json b/packages/x-date-pickers/package.json index 781289be2a72..066916bbea24 100644 --- a/packages/x-date-pickers/package.json +++ b/packages/x-date-pickers/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-date-pickers", - "version": "8.0.0-alpha.3", + "version": "8.0.0-alpha.4", "description": "The community edition of the Date and Time Picker components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-license/package.json b/packages/x-license/package.json index 548e705bccc8..1d8a8fda7b37 100644 --- a/packages/x-license/package.json +++ b/packages/x-license/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-license", - "version": "8.0.0-alpha.2", + "version": "8.0.0-alpha.4", "description": "MUI X License verification", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view-pro/README.md b/packages/x-tree-view-pro/README.md index 3a7069bf7545..774ab669624d 100644 --- a/packages/x-tree-view-pro/README.md +++ b/packages/x-tree-view-pro/README.md @@ -1,7 +1,7 @@ # MUIĀ X Tree View This package is the Pro plan edition of the Tree View components. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-tree-view-pro/package.json b/packages/x-tree-view-pro/package.json index 8efd242872f9..1b0317ee46de 100644 --- a/packages/x-tree-view-pro/package.json +++ b/packages/x-tree-view-pro/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view-pro", - "version": "8.0.0-alpha.2", + "version": "8.0.0-alpha.4", "description": "The Pro plan edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/packages/x-tree-view/README.md b/packages/x-tree-view/README.md index 54023a0abf6e..f2cb62f256f2 100644 --- a/packages/x-tree-view/README.md +++ b/packages/x-tree-view/README.md @@ -1,7 +1,7 @@ # MUIĀ X Tree View This package is the Community plan edition of the Tree View components. -It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of MUIĀ Core, with advanced components. +It's part of [MUIĀ X](https://mui.com/x/), an open-core extension of our Core libraries, with advanced components. ## Installation diff --git a/packages/x-tree-view/package.json b/packages/x-tree-view/package.json index 11a0ca2d1e99..2d71cc3200b2 100644 --- a/packages/x-tree-view/package.json +++ b/packages/x-tree-view/package.json @@ -1,6 +1,6 @@ { "name": "@mui/x-tree-view", - "version": "8.0.0-alpha.2", + "version": "8.0.0-alpha.4", "description": "The community edition of the Tree View components (MUI X).", "author": "MUI Team", "main": "src/index.ts", diff --git a/renovate.json b/renovate.json index 6e01cb4e0933..eb56e266d6d0 100644 --- a/renovate.json +++ b/renovate.json @@ -82,7 +82,7 @@ "enabled": false }, { - "groupName": "MUI Core", + "groupName": "MaterialĀ UI", "matchPackageNames": [ "@mui/icons-material", "@mui/joy", diff --git a/scripts/l10n.ts b/scripts/l10n.ts index 9c584b69229a..319c0fa1c436 100644 --- a/scripts/l10n.ts +++ b/scripts/l10n.ts @@ -144,7 +144,7 @@ function extractTranslations(translationsPath: string): [TranslationsByGroup, Tr (property.key as babelTypes.Identifier).name || `'${(property.key as babelTypes.StringLiteral).value}'`; - // Ignore translations for MUI Core components, for example MuiTablePagination + // Ignore translations for Core components, for example MuiTablePagination if (key.startsWith('Mui')) { return; } diff --git a/scripts/releaseChangelog.mjs b/scripts/releaseChangelog.mjs index 35cbcbb70e05..9e078cf19cad 100644 --- a/scripts/releaseChangelog.mjs +++ b/scripts/releaseChangelog.mjs @@ -53,6 +53,12 @@ function resolvePackagesByLabels(labels) { case 'component: pickers': resolvedPackages.push('pickers'); break; + case 'component: charts': + resolvedPackages.push('charts'); + break; + case 'component: tree view': + resolvedPackages.push('TreeView'); + break; default: break; } @@ -106,7 +112,7 @@ async function main(argv) { // Fetch all the pull Request and check if there is a section named changelog - const changeLogMessages = []; + const changeLogMessages = {}; const prsLabelsMap = {}; const community = { firstTimers: new Set(), @@ -124,6 +130,7 @@ async function main(argv) { data: { body: bodyMessage, labels, + // eslint-disable-next-line @typescript-eslint/naming-convention author_association, user: { login }, }, @@ -152,14 +159,23 @@ async function main(argv) { return; } - const changelogMotif = '# changelog'; - const changelogIndex = bodyMessage.toLowerCase().indexOf(changelogMotif); - if (changelogIndex >= 0) { - changeLogMessages.push( - `From https://github.com/${GIT_ORGANIZATION}/${GIT_REPO}/pull/${ - searchPullRequestId[1] - }\n${bodyMessage.slice(changelogIndex + changelogMotif.length)}`, - ); + const changelogMotif = '## changelog'; + const lowercaseBody = bodyMessage.toLowerCase(); + // Check if the body contains a line starting with '## changelog' + const matchedChangelog = lowercaseBody.matchAll(new RegExp(`^${changelogMotif}`, 'gim')); + const changelogMatches = Array.from(matchedChangelog); + if (changelogMatches.length > 0) { + const prLabels = prsLabelsMap[commitsItem.sha]; + const resolvedPackage = resolvePackagesByLabels(prLabels)[0]; + const changelogIndex = changelogMatches[0].index; + const message = `From https://github.com/${GIT_ORGANIZATION}/${GIT_REPO}/pull/${ + searchPullRequestId[1] + }\n${bodyMessage.slice(changelogIndex + changelogMotif.length)}`; + if (changeLogMessages[resolvedPackage || 'general']) { + changeLogMessages[resolvedPackage || 'general'].push(message); + } else { + changeLogMessages[resolvedPackage || 'general'] = [message]; + } } }), ); @@ -288,6 +304,13 @@ async function main(argv) { .join('\n')}`; }; + const logChangelogMessages = (product) => { + if (!changeLogMessages[product]?.length) { + return ''; + } + return `${changeLogMessages[product].length > 0 ? '\n' : ''}${changeLogMessages[product].join('\n\n')}`; + }; + const nowFormatted = new Date().toLocaleDateString('en-US', { month: 'short', day: 'numeric', @@ -325,14 +348,14 @@ We'd like to offer a big thanks to the ${ } contributors who made this release possible. Here are some highlights āœØ: TODO INSERT HIGHLIGHTS -${changeLogMessages.length > 0 ? '\n\n' : ''}${changeLogMessages.join('\n')} +${logChangelogMessages('general')} ${logCommunitySection()} ${logTeamSection()} ### Data Grid - +${logChangelogMessages('DataGrid')} #### \`@mui/x-data-grid@__VERSION__\` ${logChangelogSection(dataGridCommits) || `No changes since \`@mui/x-data-grid@${lastRelease}\`.`} @@ -350,7 +373,7 @@ Same changes as in \`@mui/x-data-grid-pro@__VERSION__\`${ } ${logChangelogSection(dataGridPremiumCommits)}${dataGridPremiumCommits.length > 0 ? '\n' : ''} ### Date and Time Pickers - +${logChangelogMessages('pickers')} #### \`@mui/x-date-pickers@__VERSION__\` ${logChangelogSection(pickersCommits) || `No changes since \`@mui/x-date-pickers@${lastRelease}\`.`} @@ -362,7 +385,7 @@ Same changes as in \`@mui/x-date-pickers@__VERSION__\`${ } ${logChangelogSection(pickersProCommits)}${pickersProCommits.length > 0 ? '\n' : ''} ### Charts - +${logChangelogMessages('charts')} #### \`@mui/x-charts@__VERSION__\` ${logChangelogSection(chartsCommits) || `No changes since \`@mui/x-charts@${lastRelease}\`.`} @@ -372,7 +395,7 @@ ${logChangelogSection(chartsCommits) || `No changes since \`@mui/x-charts@${last Same changes as in \`@mui/x-charts@__VERSION__\`${chartsProCommits.length > 0 ? ', plus:\n' : '.'} ${logChangelogSection(chartsProCommits)}${chartsProCommits.length > 0 ? '\n' : ''} ### Tree View - +${logChangelogMessages('TreeView')} #### \`@mui/x-tree-view@__VERSION__\` ${logChangelogSection(treeViewProCommits) || `No changes since \`@mui/x-tree-view-pro@${lastRelease}\`.`}