@mui/x-charts-pro 8.3.1 → 8.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/BarChartPro/BarChartPro.js +37 -20
  2. package/CHANGELOG.md +110 -0
  3. package/ChartContainerPro/ChartContainerPro.js +1 -0
  4. package/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
  5. package/ChartZoomSlider/index.d.ts +1 -1
  6. package/ChartZoomSlider/index.js +4 -4
  7. package/ChartZoomSlider/internals/ChartAxisZoomSlider.js +94 -60
  8. package/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.d.ts +12 -0
  9. package/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.js +92 -0
  10. package/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.d.ts +11 -0
  11. package/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.js +58 -0
  12. package/ChartZoomSlider/internals/chartAxisZoomSliderThumbClasses.d.ts +17 -0
  13. package/ChartZoomSlider/internals/{chartAxisZoomSliderHandleClasses.js → chartAxisZoomSliderThumbClasses.js} +6 -6
  14. package/FunnelChart/FunnelChart.js +4 -3
  15. package/FunnelChart/FunnelPlot.js +2 -0
  16. package/FunnelChart/FunnelSection.js +2 -1
  17. package/FunnelChart/curves/curve.types.d.ts +4 -0
  18. package/FunnelChart/curves/pyramid.d.ts +3 -1
  19. package/FunnelChart/curves/pyramid.js +37 -10
  20. package/FunnelChart/curves/step-pyramid.d.ts +10 -2
  21. package/FunnelChart/curves/step-pyramid.js +96 -20
  22. package/FunnelChart/curves/step.d.ts +5 -1
  23. package/FunnelChart/curves/step.js +20 -2
  24. package/FunnelChart/funnel.types.d.ts +7 -0
  25. package/FunnelChart/seriesConfig/seriesProcessor.js +47 -1
  26. package/Heatmap/Heatmap.d.ts +1 -1
  27. package/Heatmap/Heatmap.js +25 -21
  28. package/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.d.ts +2 -0
  29. package/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.js +27 -0
  30. package/Heatmap/HeatmapTooltip/HeatmapTooltip.d.ts +1 -10
  31. package/Heatmap/HeatmapTooltip/HeatmapTooltip.js +4 -102
  32. package/Heatmap/HeatmapTooltip/HeatmapTooltip.types.d.ts +10 -0
  33. package/Heatmap/HeatmapTooltip/HeatmapTooltip.types.js +5 -0
  34. package/Heatmap/HeatmapTooltip/HeatmapTooltipContent.d.ts +7 -0
  35. package/Heatmap/HeatmapTooltip/HeatmapTooltipContent.js +96 -0
  36. package/Heatmap/HeatmapTooltip/index.d.ts +3 -1
  37. package/Heatmap/HeatmapTooltip/index.js +11 -0
  38. package/LineChartPro/LineChartPro.js +37 -20
  39. package/ScatterChartPro/ScatterChartPro.js +38 -21
  40. package/esm/BarChartPro/BarChartPro.js +35 -18
  41. package/esm/ChartContainerPro/ChartContainerPro.js +1 -0
  42. package/esm/ChartDataProviderPro/ChartDataProviderPro.js +1 -1
  43. package/esm/ChartZoomSlider/index.d.ts +1 -1
  44. package/esm/ChartZoomSlider/index.js +1 -1
  45. package/esm/ChartZoomSlider/internals/ChartAxisZoomSlider.js +94 -60
  46. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.d.ts +12 -0
  47. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderThumb.js +85 -0
  48. package/esm/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.d.ts +11 -0
  49. package/esm/ChartZoomSlider/internals/ChartsTooltipZoomSliderValue.js +52 -0
  50. package/esm/ChartZoomSlider/internals/chartAxisZoomSliderThumbClasses.d.ts +17 -0
  51. package/esm/ChartZoomSlider/internals/{chartAxisZoomSliderHandleClasses.js → chartAxisZoomSliderThumbClasses.js} +4 -4
  52. package/esm/FunnelChart/FunnelChart.js +4 -3
  53. package/esm/FunnelChart/FunnelPlot.js +2 -0
  54. package/esm/FunnelChart/FunnelSection.js +1 -0
  55. package/esm/FunnelChart/curves/curve.types.d.ts +4 -0
  56. package/esm/FunnelChart/curves/pyramid.d.ts +3 -1
  57. package/esm/FunnelChart/curves/pyramid.js +37 -10
  58. package/esm/FunnelChart/curves/step-pyramid.d.ts +10 -2
  59. package/esm/FunnelChart/curves/step-pyramid.js +96 -20
  60. package/esm/FunnelChart/curves/step.d.ts +5 -1
  61. package/esm/FunnelChart/curves/step.js +20 -2
  62. package/esm/FunnelChart/funnel.types.d.ts +7 -0
  63. package/esm/FunnelChart/seriesConfig/seriesProcessor.js +47 -1
  64. package/esm/Heatmap/Heatmap.d.ts +1 -1
  65. package/esm/Heatmap/Heatmap.js +23 -19
  66. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.d.ts +2 -0
  67. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.classes.js +19 -0
  68. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.d.ts +1 -10
  69. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.js +5 -103
  70. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.types.d.ts +10 -0
  71. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltip.types.js +1 -0
  72. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltipContent.d.ts +7 -0
  73. package/esm/Heatmap/HeatmapTooltip/HeatmapTooltipContent.js +89 -0
  74. package/esm/Heatmap/HeatmapTooltip/index.d.ts +3 -1
  75. package/esm/Heatmap/HeatmapTooltip/index.js +3 -1
  76. package/esm/LineChartPro/LineChartPro.js +35 -18
  77. package/esm/ScatterChartPro/ScatterChartPro.js +36 -19
  78. package/esm/index.js +1 -1
  79. package/esm/internals/plugins/useChartProExport/exportImage.js +1 -1
  80. package/esm/internals/plugins/useChartProZoom/useChartProZoom.js +2 -2
  81. package/index.js +1 -1
  82. package/internals/plugins/useChartProExport/exportImage.js +1 -1
  83. package/internals/plugins/useChartProZoom/useChartProZoom.js +2 -2
  84. package/package.json +5 -5
  85. package/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.d.ts +0 -12
  86. package/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.js +0 -92
  87. package/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.d.ts +0 -17
  88. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.d.ts +0 -12
  89. package/esm/ChartZoomSlider/internals/ChartAxisZoomSliderHandle.js +0 -85
  90. package/esm/ChartZoomSlider/internals/chartAxisZoomSliderHandleClasses.d.ts +0 -17
@@ -26,7 +26,7 @@ var _ChartZoomSlider = require("../ChartZoomSlider");
26
26
  var _ChartsToolbarPro = require("../ChartsToolbarPro");
27
27
  var _useChartContainerProProps = require("../ChartContainerPro/useChartContainerProProps");
28
28
  var _ChartDataProviderPro = require("../ChartDataProviderPro");
29
- var _BarChartPro = require("./BarChartPro.plugins");
29
+ var _BarChartPro2 = require("./BarChartPro.plugins");
30
30
  var _jsxRuntime = require("react/jsx-runtime");
31
31
  const _excluded = ["initialZoom", "zoomData", "onZoomChange", "apiRef", "showToolbar"];
32
32
  /**
@@ -74,7 +74,7 @@ const BarChartPro = exports.BarChartPro = /*#__PURE__*/React.forwardRef(function
74
74
  zoomData,
75
75
  onZoomChange,
76
76
  apiRef,
77
- plugins: _BarChartPro.BAR_CHART_PRO_PLUGINS
77
+ plugins: _BarChartPro2.BAR_CHART_PRO_PLUGINS
78
78
  }), ref);
79
79
  const Tooltip = props.slots?.tooltip ?? _ChartsTooltip.ChartsTooltip;
80
80
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartDataProviderPro.ChartDataProviderPro, (0, _extends2.default)({}, chartDataProviderProProps, {
@@ -82,11 +82,12 @@ const BarChartPro = exports.BarChartPro = /*#__PURE__*/React.forwardRef(function
82
82
  children: [showToolbar ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsToolbarPro.ChartsToolbarPro, {}) : null, !props.hideLegend && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsLegend.ChartsLegend, (0, _extends2.default)({}, legendProps)), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ChartsSurface.ChartsSurface, (0, _extends2.default)({}, chartsSurfaceProps, {
83
83
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsGrid.ChartsGrid, (0, _extends2.default)({}, gridProps)), /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", (0, _extends2.default)({}, clipPathGroupProps, {
84
84
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_BarChart.BarPlot, (0, _extends2.default)({}, barPlotProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsOverlay.ChartsOverlay, (0, _extends2.default)({}, overlayProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxisHighlight.ChartsAxisHighlight, (0, _extends2.default)({}, axisHighlightProps))]
85
- })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxis.ChartsAxis, (0, _extends2.default)({}, chartsAxisProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartZoomSlider.ChartZoomSlider, {}), !props.loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, props.slotProps?.tooltip)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsClipPath.ChartsClipPath, (0, _extends2.default)({}, clipPathProps)), children]
86
- }))]
85
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxis.ChartsAxis, (0, _extends2.default)({}, chartsAxisProps)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartZoomSlider.ChartZoomSlider, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsClipPath.ChartsClipPath, (0, _extends2.default)({}, clipPathProps)), children]
86
+ })), !props.loading && /*#__PURE__*/(0, _jsxRuntime.jsx)(Tooltip, (0, _extends2.default)({}, props.slotProps?.tooltip))]
87
87
  }))
88
88
  }));
89
89
  });
90
+ if (process.env.NODE_ENV !== "production") BarChartPro.displayName = "BarChartPro";
90
91
  process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
91
92
  // ----------------------------- Warning --------------------------------
92
93
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -325,7 +326,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
325
326
  minStart: _propTypes.default.number,
326
327
  panning: _propTypes.default.bool,
327
328
  slider: _propTypes.default.shape({
328
- enabled: _propTypes.default.bool
329
+ enabled: _propTypes.default.bool,
330
+ size: _propTypes.default.number
329
331
  }),
330
332
  step: _propTypes.default.number
331
333
  }), _propTypes.default.bool])
@@ -388,7 +390,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
388
390
  minStart: _propTypes.default.number,
389
391
  panning: _propTypes.default.bool,
390
392
  slider: _propTypes.default.shape({
391
- enabled: _propTypes.default.bool
393
+ enabled: _propTypes.default.bool,
394
+ size: _propTypes.default.number
392
395
  }),
393
396
  step: _propTypes.default.number
394
397
  }), _propTypes.default.bool])
@@ -446,7 +449,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
446
449
  minStart: _propTypes.default.number,
447
450
  panning: _propTypes.default.bool,
448
451
  slider: _propTypes.default.shape({
449
- enabled: _propTypes.default.bool
452
+ enabled: _propTypes.default.bool,
453
+ size: _propTypes.default.number
450
454
  }),
451
455
  step: _propTypes.default.number
452
456
  }), _propTypes.default.bool])
@@ -504,7 +508,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
504
508
  minStart: _propTypes.default.number,
505
509
  panning: _propTypes.default.bool,
506
510
  slider: _propTypes.default.shape({
507
- enabled: _propTypes.default.bool
511
+ enabled: _propTypes.default.bool,
512
+ size: _propTypes.default.number
508
513
  }),
509
514
  step: _propTypes.default.number
510
515
  }), _propTypes.default.bool])
@@ -562,7 +567,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
562
567
  minStart: _propTypes.default.number,
563
568
  panning: _propTypes.default.bool,
564
569
  slider: _propTypes.default.shape({
565
- enabled: _propTypes.default.bool
570
+ enabled: _propTypes.default.bool,
571
+ size: _propTypes.default.number
566
572
  }),
567
573
  step: _propTypes.default.number
568
574
  }), _propTypes.default.bool])
@@ -620,7 +626,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
620
626
  minStart: _propTypes.default.number,
621
627
  panning: _propTypes.default.bool,
622
628
  slider: _propTypes.default.shape({
623
- enabled: _propTypes.default.bool
629
+ enabled: _propTypes.default.bool,
630
+ size: _propTypes.default.number
624
631
  }),
625
632
  step: _propTypes.default.number
626
633
  }), _propTypes.default.bool])
@@ -678,7 +685,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
678
685
  minStart: _propTypes.default.number,
679
686
  panning: _propTypes.default.bool,
680
687
  slider: _propTypes.default.shape({
681
- enabled: _propTypes.default.bool
688
+ enabled: _propTypes.default.bool,
689
+ size: _propTypes.default.number
682
690
  }),
683
691
  step: _propTypes.default.number
684
692
  }), _propTypes.default.bool])
@@ -736,7 +744,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
736
744
  minStart: _propTypes.default.number,
737
745
  panning: _propTypes.default.bool,
738
746
  slider: _propTypes.default.shape({
739
- enabled: _propTypes.default.bool
747
+ enabled: _propTypes.default.bool,
748
+ size: _propTypes.default.number
740
749
  }),
741
750
  step: _propTypes.default.number
742
751
  }), _propTypes.default.bool])
@@ -806,7 +815,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
806
815
  minStart: _propTypes.default.number,
807
816
  panning: _propTypes.default.bool,
808
817
  slider: _propTypes.default.shape({
809
- enabled: _propTypes.default.bool
818
+ enabled: _propTypes.default.bool,
819
+ size: _propTypes.default.number
810
820
  }),
811
821
  step: _propTypes.default.number
812
822
  }), _propTypes.default.bool])
@@ -868,7 +878,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
868
878
  minStart: _propTypes.default.number,
869
879
  panning: _propTypes.default.bool,
870
880
  slider: _propTypes.default.shape({
871
- enabled: _propTypes.default.bool
881
+ enabled: _propTypes.default.bool,
882
+ size: _propTypes.default.number
872
883
  }),
873
884
  step: _propTypes.default.number
874
885
  }), _propTypes.default.bool])
@@ -925,7 +936,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
925
936
  minStart: _propTypes.default.number,
926
937
  panning: _propTypes.default.bool,
927
938
  slider: _propTypes.default.shape({
928
- enabled: _propTypes.default.bool
939
+ enabled: _propTypes.default.bool,
940
+ size: _propTypes.default.number
929
941
  }),
930
942
  step: _propTypes.default.number
931
943
  }), _propTypes.default.bool])
@@ -982,7 +994,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
982
994
  minStart: _propTypes.default.number,
983
995
  panning: _propTypes.default.bool,
984
996
  slider: _propTypes.default.shape({
985
- enabled: _propTypes.default.bool
997
+ enabled: _propTypes.default.bool,
998
+ size: _propTypes.default.number
986
999
  }),
987
1000
  step: _propTypes.default.number
988
1001
  }), _propTypes.default.bool])
@@ -1039,7 +1052,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1039
1052
  minStart: _propTypes.default.number,
1040
1053
  panning: _propTypes.default.bool,
1041
1054
  slider: _propTypes.default.shape({
1042
- enabled: _propTypes.default.bool
1055
+ enabled: _propTypes.default.bool,
1056
+ size: _propTypes.default.number
1043
1057
  }),
1044
1058
  step: _propTypes.default.number
1045
1059
  }), _propTypes.default.bool])
@@ -1096,7 +1110,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1096
1110
  minStart: _propTypes.default.number,
1097
1111
  panning: _propTypes.default.bool,
1098
1112
  slider: _propTypes.default.shape({
1099
- enabled: _propTypes.default.bool
1113
+ enabled: _propTypes.default.bool,
1114
+ size: _propTypes.default.number
1100
1115
  }),
1101
1116
  step: _propTypes.default.number
1102
1117
  }), _propTypes.default.bool])
@@ -1153,7 +1168,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1153
1168
  minStart: _propTypes.default.number,
1154
1169
  panning: _propTypes.default.bool,
1155
1170
  slider: _propTypes.default.shape({
1156
- enabled: _propTypes.default.bool
1171
+ enabled: _propTypes.default.bool,
1172
+ size: _propTypes.default.number
1157
1173
  }),
1158
1174
  step: _propTypes.default.number
1159
1175
  }), _propTypes.default.bool])
@@ -1210,7 +1226,8 @@ process.env.NODE_ENV !== "production" ? BarChartPro.propTypes = {
1210
1226
  minStart: _propTypes.default.number,
1211
1227
  panning: _propTypes.default.bool,
1212
1228
  slider: _propTypes.default.shape({
1213
- enabled: _propTypes.default.bool
1229
+ enabled: _propTypes.default.bool,
1230
+ size: _propTypes.default.number
1214
1231
  }),
1215
1232
  step: _propTypes.default.number
1216
1233
  }), _propTypes.default.bool])
package/CHANGELOG.md CHANGED
@@ -5,6 +5,116 @@
5
5
  All notable changes to this project will be documented in this file.
6
6
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
7
7
 
8
+ ## 8.4.0
9
+
10
+ _May 21, 2025_
11
+
12
+ We'd like to offer a big thanks to the 21 contributors who made this release possible. Here are some highlights ✨:
13
+
14
+ - 🔺 Support regular [`pyramid` variation in the `<FunnelChart />` component](https://mui.com/x/react-charts/funnel/#pyramid-chart):
15
+
16
+ <img width="398" alt="Pyramid funnel chart" src="https://github.com/user-attachments/assets/90ccb221-3a48-4ffa-8878-89c6db16da86" />
17
+
18
+ - 📚 Documentation improvements
19
+ - 🌎 Improve Icelandic (is-IS) locale on the Data Grid
20
+ - 🐞 Bugfixes
21
+
22
+ Special thanks go out to the community members for their valuable contributions:
23
+ @aizerin, @arminmeh, @campmarc, @jyash97, @mapache-salvaje, @noraleonte, @nusr, @ragnarr18, @romgrk, @whereisrmsqhs.
24
+ Following are all team members who have contributed to this release:
25
+ @alexfauquette, @bernardobelchior, @flaviendelangle, @JCQuintas, @KenanYusuf, @LukasTy, @MBilalShafi, @rita-codes.
26
+
27
+ <!--/ HIGHLIGHT_ABOVE_SEPARATOR /-->
28
+
29
+ ### Data Grid
30
+
31
+ #### `@mui/x-data-grid@8.4.0`
32
+
33
+ - [DataGrid] Fix content rendering for large rows while using automatic page size (#14737) @campmarc
34
+ - [DataGrid] Fix disabled typography variants crashing grid (#17934) @KenanYusuf
35
+ - [DataGrid] Fix tree data demo crash (#17904) @MBilalShafi
36
+ - [DataGrid] Use `exclude` selection model type if quick filter does not have actual values (#17899) @arminmeh
37
+ - [DataGrid] Fix clipboard copy behavior for cell ranges with empty cells (#16797) @nusr
38
+ - [l10n] Improve Icelandic (is-IS) locale (#17915) @ragnarr18
39
+
40
+ #### `@mui/x-data-grid-pro@8.4.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
41
+
42
+ Same changes as in `@mui/x-data-grid@8.4.0`, plus:
43
+
44
+ - [DataGridPro] Add `aria-expanded` attribute to the master detail toggle button (#17122) @whereisrmsqhs
45
+ - [DataGridPro] Preserve row state during server-side lazy loading (#17743) @arminmeh
46
+ - [DataGridPro] Prevent text selection when reordering rows (#16568) @jyash97
47
+
48
+ #### `@mui/x-data-grid-premium@8.4.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link 'Premium plan')
49
+
50
+ Same changes as in `@mui/x-data-grid-pro@8.4.0`.
51
+
52
+ ### Date and Time Pickers
53
+
54
+ #### `@mui/x-date-pickers@8.4.0`
55
+
56
+ - [fields] Ensure fresh `disabled` value is used when focusing or clicking (#17914) @aizerin
57
+ - [fields] Improve the field controlled edition (#17816) @flaviendelangle
58
+ - [pickers] Fix `PickersTextField` overflow (#17942) @noraleonte
59
+
60
+ #### `@mui/x-date-pickers-pro@8.4.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
61
+
62
+ Same changes as in `@mui/x-date-pickers@8.4.0`.
63
+
64
+ ### Charts
65
+
66
+ #### `@mui/x-charts@8.4.0`
67
+
68
+ - [charts] Add grouped axes demo (#17848) @bernardobelchior
69
+ - [charts] Enable tooltip disable portal (#17871) @alexfauquette
70
+ - [charts] Improve performance in scatter chart (#17849) @bernardobelchior
71
+ - [charts] Recreate `isPointInside` less often (#17850) @bernardobelchior
72
+ - [charts] Try fix for flaky `useAnimate` test (#17777) @JCQuintas
73
+ - [charts] Add `isXInside` and `isYInside` (#17911) @bernardobelchior
74
+
75
+ #### `@mui/x-charts-pro@8.4.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
76
+
77
+ Same changes as in `@mui/x-charts@8.4.0`, plus:
78
+
79
+ - [charts-pro] Add size for zoom slider (#17736) @bernardobelchior
80
+ - [charts-pro] Add zoom slider tooltip (#17733) @bernardobelchior
81
+ - [charts-pro] Clean and document Heatmap Tooltip (#17933) @alexfauquette
82
+ - [charts-pro] Introduce `Pyramid` chart (#17783) @JCQuintas
83
+ - [charts-pro] Update zoom slider nomenclature (#17938) @bernardobelchior
84
+ - [charts-pro] Fix error when importing rasterizehtml (#17897) @bernardobelchior
85
+
86
+ ### Tree View
87
+
88
+ #### `@mui/x-tree-view@8.4.0`
89
+
90
+ - [TreeView] Add `getItemChildren` prop in `RichTreeView` (#17894) @rita-codes
91
+ - [TreeView] Add a method in the `apiRef` to toggle the editing status of an item (#17768) @rita-codes
92
+ - [TreeView] Add missing sx prop on the Tree Item component (#17930) @flaviendelangle
93
+
94
+ #### `@mui/x-tree-view-pro@8.4.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link 'Pro plan')
95
+
96
+ Same changes as in `@mui/x-tree-view@8.4.0`.
97
+
98
+ ### Docs
99
+
100
+ - [docs] Add a recipe for drag and drop row grouping (#17638) @KenanYusuf
101
+ - [docs] Add introductory text to Data Grid component pages (#17902) @KenanYusuf
102
+ - [docs] Refactor embedded CodeSandbox on Data Grid—Quickstart page (#17749) @rita-codes
103
+ - [docs] Remove double border on Data Grid—Quickstart demo (#17932) @rita-codes
104
+ - [docs] Standardize `apiRef` copy (#17776) @mapache-salvaje
105
+ - [docs][DataGrid] Revise server-side data docs (#17007) @mapache-salvaje
106
+ - [docs][DataGrid] Audit and revise the tree data doc (#17650) @mapache-salvaje
107
+ - [docs][pickers] Fix migration guide references to range fields (#17861) @LukasTy
108
+ - [docs][charts] Reorganize the Tooltip documentation (#17917) @alexfauquette
109
+
110
+ ### Core
111
+
112
+ - [core] refactor: remove manual `displayName` (#17845) @romgrk
113
+ - [code-infra] Document how to use `vitest` cli (#17847) @JCQuintas
114
+ - [code-infra] Increase charts export test timeout (#17909) @JCQuintas
115
+ - [code-infra] Set `isolatedModules=true` in tsconfig (#17781) @JCQuintas
116
+ - [infra] Ensure proper docs preview path resolution (#17863) @LukasTy
117
+
8
118
  ## 8.3.1
9
119
 
10
120
  _May 14, 2025_
@@ -52,6 +52,7 @@ const ChartContainerPro = exports.ChartContainerPro = /*#__PURE__*/React.forward
52
52
  });
53
53
 
54
54
  // @ts-expect-error the type coercion breaks the prop types
55
+ if (process.env.NODE_ENV !== "production") ChartContainerPro.displayName = "ChartContainerPro";
55
56
  process.env.NODE_ENV !== "production" ? ChartContainerPro.propTypes = {
56
57
  // ----------------------------- Warning --------------------------------
57
58
  // | These PropTypes are generated from the TypeScript type definitions |
@@ -17,7 +17,7 @@ var _useLicenseVerifier = require("@mui/x-license/useLicenseVerifier");
17
17
  var _allPlugins = require("../internals/plugins/allPlugins");
18
18
  var _useChartDataProviderProProps = require("./useChartDataProviderProProps");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
- const releaseInfo = "MTc0NzE3MzYwMDAwMA==";
20
+ const releaseInfo = "MTc0Nzc3ODQwMDAwMA==";
21
21
  const packageIdentifier = 'x-charts-pro';
22
22
  /**
23
23
  * Orchestrates the data providers for the chart components and hooks.
@@ -1,2 +1,2 @@
1
1
  export * from "./ChartZoomSlider.js";
2
- export { type ChartAxisZoomSliderHandleClasses, type ChartAxisZoomSliderHandleClassKey, chartAxisZoomSliderHandleClasses } from "./internals/chartAxisZoomSliderHandleClasses.js";
2
+ export { type ChartAxisZoomSliderThumbClasses, type ChartAxisZoomSliderThumbClassKey, chartAxisZoomSliderThumbClasses } from "./internals/chartAxisZoomSliderThumbClasses.js";
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  var _exportNames = {
7
- chartAxisZoomSliderHandleClasses: true
7
+ chartAxisZoomSliderThumbClasses: true
8
8
  };
9
- Object.defineProperty(exports, "chartAxisZoomSliderHandleClasses", {
9
+ Object.defineProperty(exports, "chartAxisZoomSliderThumbClasses", {
10
10
  enumerable: true,
11
11
  get: function () {
12
- return _chartAxisZoomSliderHandleClasses.chartAxisZoomSliderHandleClasses;
12
+ return _chartAxisZoomSliderThumbClasses.chartAxisZoomSliderThumbClasses;
13
13
  }
14
14
  });
15
15
  var _ChartZoomSlider = require("./ChartZoomSlider");
@@ -24,4 +24,4 @@ Object.keys(_ChartZoomSlider).forEach(function (key) {
24
24
  }
25
25
  });
26
26
  });
27
- var _chartAxisZoomSliderHandleClasses = require("./internals/chartAxisZoomSliderHandleClasses");
27
+ var _chartAxisZoomSliderThumbClasses = require("./internals/chartAxisZoomSliderThumbClasses");
@@ -15,17 +15,18 @@ var _internals = require("@mui/x-charts/internals");
15
15
  var _styles = require("@mui/material/styles");
16
16
  var _hooks = require("@mui/x-charts/hooks");
17
17
  var _rafThrottle = require("@mui/x-internals/rafThrottle");
18
+ var _ChartsTooltipZoomSliderValue = require("./ChartsTooltipZoomSliderValue");
18
19
  var _useChartProZoom = require("../../internals/plugins/useChartProZoom");
19
- var _ChartAxisZoomSliderHandle = require("./ChartAxisZoomSliderHandle");
20
+ var _ChartAxisZoomSliderThumb = require("./ChartAxisZoomSliderThumb");
20
21
  var _jsxRuntime = require("react/jsx-runtime");
21
- const BackgroundRect = (0, _styles.styled)('rect')(({
22
+ const ZoomSliderTrack = (0, _styles.styled)('rect')(({
22
23
  theme
23
24
  }) => ({
24
25
  '&': {
25
26
  fill: theme.palette.mode === 'dark' ? (theme.vars || theme).palette.grey[800] : (theme.vars || theme).palette.grey[300]
26
27
  }
27
28
  }));
28
- const ZoomRangePreviewRect = (0, _styles.styled)('rect')(({
29
+ const ZoomSliderActiveTrackRect = (0, _styles.styled)('rect')(({
29
30
  theme
30
31
  }) => ({
31
32
  '&': {
@@ -33,11 +34,11 @@ const ZoomRangePreviewRect = (0, _styles.styled)('rect')(({
33
34
  cursor: 'grab'
34
35
  }
35
36
  }));
36
- const ZOOM_SLIDER_BACKGROUND_SIZE = 8;
37
- const ZOOM_SLIDER_FOREGROUND_SIZE = 10;
38
- const ZOOM_SLIDER_HANDLE_HEIGHT = 20;
39
- const ZOOM_SLIDER_HANDLE_WIDTH = 10;
40
- const ZOOM_SLIDER_SIZE = Math.max(ZOOM_SLIDER_BACKGROUND_SIZE, ZOOM_SLIDER_FOREGROUND_SIZE, ZOOM_SLIDER_HANDLE_HEIGHT, ZOOM_SLIDER_HANDLE_WIDTH);
37
+ const ZOOM_SLIDER_TRACK_SIZE = 8;
38
+ const ZOOM_SLIDER_ACTIVE_TRACK_SIZE = 10;
39
+ const ZOOM_SLIDER_THUMB_HEIGHT = 20;
40
+ const ZOOM_SLIDER_THUMB_WIDTH = 10;
41
+ const ZOOM_SLIDER_SIZE = Math.max(ZOOM_SLIDER_TRACK_SIZE, ZOOM_SLIDER_ACTIVE_TRACK_SIZE, ZOOM_SLIDER_THUMB_HEIGHT, ZOOM_SLIDER_THUMB_WIDTH);
41
42
 
42
43
  /**
43
44
  * Renders the zoom slider for a specific axis.
@@ -62,48 +63,58 @@ function ChartAxisZoomSlider({
62
63
  let x;
63
64
  let y;
64
65
  let reverse;
66
+ let axisPosition;
65
67
  if (axisDirection === 'x') {
66
68
  const axis = xAxis[axisId];
67
- if (!axis) {
69
+ if (!axis || axis.position === 'none') {
68
70
  return null;
69
71
  }
70
72
  const axisSize = axis.height;
71
73
  x = drawingArea.left;
72
74
  y = axis.position === 'bottom' ? drawingArea.top + drawingArea.height + axis.offset + axisSize + _internals.ZOOM_SLIDER_MARGIN : drawingArea.top - axis.offset - axisSize - ZOOM_SLIDER_SIZE - _internals.ZOOM_SLIDER_MARGIN;
73
75
  reverse = axis.reverse ?? false;
76
+ axisPosition = axis.position ?? 'bottom';
74
77
  } else {
75
78
  const axis = yAxis[axisId];
76
- if (!axis) {
79
+ if (!axis || axis.position === 'none') {
77
80
  return null;
78
81
  }
79
82
  const axisSize = axis.width;
80
83
  x = axis.position === 'right' ? drawingArea.left + drawingArea.width + axis.offset + axisSize + _internals.ZOOM_SLIDER_MARGIN : drawingArea.left - axis.offset - axisSize - ZOOM_SLIDER_SIZE - _internals.ZOOM_SLIDER_MARGIN;
81
84
  y = drawingArea.top;
82
85
  reverse = axis.reverse ?? false;
86
+ axisPosition = axis.position ?? 'left';
83
87
  }
84
- const backgroundRectOffset = (ZOOM_SLIDER_SIZE - ZOOM_SLIDER_BACKGROUND_SIZE) / 2;
88
+ const backgroundRectOffset = (ZOOM_SLIDER_SIZE - ZOOM_SLIDER_TRACK_SIZE) / 2;
85
89
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
86
90
  transform: `translate(${x} ${y})`,
87
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(BackgroundRect, {
91
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomSliderTrack, {
88
92
  x: axisDirection === 'x' ? 0 : backgroundRectOffset,
89
93
  y: axisDirection === 'x' ? backgroundRectOffset : 0,
90
- height: axisDirection === 'x' ? ZOOM_SLIDER_BACKGROUND_SIZE : drawingArea.height,
91
- width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_BACKGROUND_SIZE,
92
- rx: ZOOM_SLIDER_BACKGROUND_SIZE / 2,
93
- ry: ZOOM_SLIDER_BACKGROUND_SIZE / 2
94
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartAxisZoomSliderSpan, {
94
+ height: axisDirection === 'x' ? ZOOM_SLIDER_TRACK_SIZE : drawingArea.height,
95
+ width: axisDirection === 'x' ? drawingArea.width : ZOOM_SLIDER_TRACK_SIZE,
96
+ rx: ZOOM_SLIDER_TRACK_SIZE / 2,
97
+ ry: ZOOM_SLIDER_TRACK_SIZE / 2
98
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(ChartAxisZoomSliderActiveTrack, {
95
99
  zoomData: zoomData,
96
100
  axisId: axisId,
101
+ axisPosition: axisPosition,
97
102
  axisDirection: axisDirection,
98
103
  reverse: reverse
99
104
  })]
100
105
  });
101
106
  }
102
- function ChartAxisZoomSliderSpan({
107
+ const formatter = Intl.NumberFormat(undefined, {
108
+ maximumFractionDigits: 0
109
+ });
110
+ const zoomValueFormatter = value => formatter.format(value);
111
+ function ChartAxisZoomSliderActiveTrack({
103
112
  axisId,
104
113
  axisDirection,
114
+ axisPosition,
105
115
  zoomData,
106
- reverse
116
+ reverse,
117
+ valueFormatter = zoomValueFormatter
107
118
  }) {
108
119
  const {
109
120
  instance,
@@ -112,8 +123,11 @@ function ChartAxisZoomSliderSpan({
112
123
  const store = (0, _internals.useStore)();
113
124
  const drawingArea = (0, _internals.useDrawingArea)();
114
125
  const activePreviewRectRef = React.useRef(null);
115
- const previewHandleWidth = axisDirection === 'x' ? ZOOM_SLIDER_HANDLE_WIDTH : ZOOM_SLIDER_HANDLE_HEIGHT;
116
- const previewHandleHeight = axisDirection === 'x' ? ZOOM_SLIDER_HANDLE_HEIGHT : ZOOM_SLIDER_HANDLE_WIDTH;
126
+ const [startThumbEl, setStartThumbEl] = React.useState(null);
127
+ const [endThumbEl, setEndThumbEl] = React.useState(null);
128
+ const [showTooltip, setShowTooltip] = React.useState(null);
129
+ const previewThumbWidth = axisDirection === 'x' ? ZOOM_SLIDER_THUMB_WIDTH : ZOOM_SLIDER_THUMB_HEIGHT;
130
+ const previewThumbHeight = axisDirection === 'x' ? ZOOM_SLIDER_THUMB_HEIGHT : ZOOM_SLIDER_THUMB_WIDTH;
117
131
  React.useEffect(() => {
118
132
  const activePreviewRect = activePreviewRectRef.current;
119
133
  if (!activePreviewRect) {
@@ -154,6 +168,7 @@ function ChartAxisZoomSliderSpan({
154
168
  const onPointerUp = () => {
155
169
  activePreviewRect.removeEventListener('pointermove', onPointerMove);
156
170
  activePreviewRect.removeEventListener('pointerup', onPointerUp);
171
+ setShowTooltip(null);
157
172
  };
158
173
  const onPointerDown = event => {
159
174
  // Prevent text selection when dragging
@@ -185,6 +200,7 @@ function ChartAxisZoomSliderSpan({
185
200
  prevPointerZoom = pointerDownZoom;
186
201
  pointerZoomMin = pointerDownZoom - axisZoomData.start;
187
202
  pointerZoomMax = 100 - (axisZoomData.end - pointerDownZoom);
203
+ setShowTooltip('both');
188
204
  activePreviewRect.addEventListener('pointerup', onPointerUp);
189
205
  activePreviewRect.addEventListener('pointermove', onPointerMove);
190
206
  };
@@ -196,7 +212,7 @@ function ChartAxisZoomSliderSpan({
196
212
  onPointerMove.clear();
197
213
  };
198
214
  }, [axisDirection, axisId, instance, reverse, store, svgRef]);
199
- const onResizeStart = event => {
215
+ const onStartThumbMove = event => {
200
216
  const element = svgRef.current;
201
217
  if (!element) {
202
218
  return;
@@ -229,7 +245,7 @@ function ChartAxisZoomSliderSpan({
229
245
  });
230
246
  });
231
247
  };
232
- const onResizeEnd = event => {
248
+ const onEndThumbMove = event => {
233
249
  const element = svgRef.current;
234
250
  if (!element) {
235
251
  return;
@@ -266,67 +282,85 @@ function ChartAxisZoomSliderSpan({
266
282
  let previewY;
267
283
  let previewWidth;
268
284
  let previewHeight;
269
- let startHandleX;
270
- let startHandleY;
271
- let endHandleX;
272
- let endHandleY;
285
+ let startThumbX;
286
+ let startThumbY;
287
+ let endThumbX;
288
+ let endThumbY;
273
289
  if (axisDirection === 'x') {
274
290
  previewX = zoomData.start / 100 * drawingArea.width;
275
291
  previewY = 0;
276
292
  previewWidth = drawingArea.width * (zoomData.end - zoomData.start) / 100;
277
- previewHeight = ZOOM_SLIDER_FOREGROUND_SIZE;
278
- startHandleX = zoomData.start / 100 * drawingArea.width;
279
- startHandleY = 0;
280
- endHandleX = zoomData.end / 100 * drawingArea.width;
281
- endHandleY = 0;
293
+ previewHeight = ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
294
+ startThumbX = zoomData.start / 100 * drawingArea.width;
295
+ startThumbY = 0;
296
+ endThumbX = zoomData.end / 100 * drawingArea.width;
297
+ endThumbY = 0;
282
298
  if (reverse) {
283
299
  previewX = drawingArea.width - previewX - previewWidth;
284
- startHandleX = drawingArea.width - startHandleX;
285
- endHandleX = drawingArea.width - endHandleX;
300
+ startThumbX = drawingArea.width - startThumbX;
301
+ endThumbX = drawingArea.width - endThumbX;
286
302
  }
287
- startHandleX -= previewHandleWidth / 2;
288
- endHandleX -= previewHandleWidth / 2;
303
+ startThumbX -= previewThumbWidth / 2;
304
+ endThumbX -= previewThumbWidth / 2;
289
305
  } else {
290
306
  previewX = 0;
291
307
  previewY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
292
- previewWidth = ZOOM_SLIDER_FOREGROUND_SIZE;
308
+ previewWidth = ZOOM_SLIDER_ACTIVE_TRACK_SIZE;
293
309
  previewHeight = drawingArea.height * (zoomData.end - zoomData.start) / 100;
294
- startHandleX = 0;
295
- startHandleY = drawingArea.height - zoomData.start / 100 * drawingArea.height;
296
- endHandleX = 0;
297
- endHandleY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
310
+ startThumbX = 0;
311
+ startThumbY = drawingArea.height - zoomData.start / 100 * drawingArea.height;
312
+ endThumbX = 0;
313
+ endThumbY = drawingArea.height - zoomData.end / 100 * drawingArea.height;
298
314
  if (reverse) {
299
315
  previewY = drawingArea.height - previewY - previewHeight;
300
- startHandleY = drawingArea.height - startHandleY;
301
- endHandleY = drawingArea.height - endHandleY;
316
+ startThumbY = drawingArea.height - startThumbY;
317
+ endThumbY = drawingArea.height - endThumbY;
302
318
  }
303
- startHandleY -= previewHandleHeight / 2;
304
- endHandleY -= previewHandleHeight / 2;
319
+ startThumbY -= previewThumbHeight / 2;
320
+ endThumbY -= previewThumbHeight / 2;
305
321
  }
306
- const previewOffset = (ZOOM_SLIDER_HANDLE_HEIGHT - ZOOM_SLIDER_FOREGROUND_SIZE) / 2;
322
+ const previewOffset = (ZOOM_SLIDER_THUMB_HEIGHT - ZOOM_SLIDER_ACTIVE_TRACK_SIZE) / 2;
307
323
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
308
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomRangePreviewRect, {
324
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ZoomSliderActiveTrackRect, {
309
325
  ref: activePreviewRectRef,
310
326
  x: previewX + (axisDirection === 'x' ? 0 : previewOffset),
311
327
  y: previewY + (axisDirection === 'x' ? previewOffset : 0),
312
328
  width: previewWidth,
313
- height: previewHeight
314
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderHandle.ChartAxisZoomSliderHandle, {
315
- x: startHandleX,
316
- y: startHandleY,
317
- width: previewHandleWidth,
318
- height: previewHandleHeight,
329
+ height: previewHeight,
330
+ onPointerEnter: () => setShowTooltip('both'),
331
+ onPointerLeave: () => setShowTooltip(null)
332
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderThumb.ChartAxisZoomSliderThumb, {
333
+ ref: setStartThumbEl,
334
+ x: startThumbX,
335
+ y: startThumbY,
336
+ width: previewThumbWidth,
337
+ height: previewThumbHeight,
319
338
  orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
320
- onResize: onResizeStart,
339
+ onMove: onStartThumbMove,
340
+ onPointerEnter: () => setShowTooltip('start'),
341
+ onPointerLeave: () => setShowTooltip(null),
321
342
  placement: "start"
322
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderHandle.ChartAxisZoomSliderHandle, {
323
- x: endHandleX,
324
- y: endHandleY,
325
- width: previewHandleWidth,
326
- height: previewHandleHeight,
343
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartAxisZoomSliderThumb.ChartAxisZoomSliderThumb, {
344
+ ref: setEndThumbEl,
345
+ x: endThumbX,
346
+ y: endThumbY,
347
+ width: previewThumbWidth,
348
+ height: previewThumbHeight,
327
349
  orientation: axisDirection === 'x' ? 'horizontal' : 'vertical',
328
- onResize: onResizeEnd,
350
+ onMove: onEndThumbMove,
351
+ onPointerEnter: () => setShowTooltip('end'),
352
+ onPointerLeave: () => setShowTooltip(null),
329
353
  placement: "end"
354
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipZoomSliderValue.ChartsTooltipZoomSliderValue, {
355
+ anchorEl: startThumbEl,
356
+ open: showTooltip === 'start' || showTooltip === 'both',
357
+ placement: axisPosition,
358
+ children: valueFormatter(zoomData.start)
359
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipZoomSliderValue.ChartsTooltipZoomSliderValue, {
360
+ anchorEl: endThumbEl,
361
+ open: showTooltip === 'end' || showTooltip === 'both',
362
+ placement: axisPosition,
363
+ children: valueFormatter(zoomData.end)
330
364
  })]
331
365
  });
332
366
  }
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ export interface ChartZoomSliderThumbOwnerState {
3
+ onMove: (event: PointerEvent) => void;
4
+ orientation: 'horizontal' | 'vertical';
5
+ placement: 'start' | 'end';
6
+ }
7
+ export interface ChartZoomSliderThumbProps extends Omit<React.ComponentProps<'rect'>, 'orientation'>, ChartZoomSliderThumbOwnerState {}
8
+ /**
9
+ * Renders the zoom slider thumb, which is responsible for resizing the zoom range.
10
+ * @internal
11
+ */
12
+ export declare const ChartAxisZoomSliderThumb: React.ForwardRefExoticComponent<Omit<ChartZoomSliderThumbProps, "ref"> & React.RefAttributes<SVGRectElement>>;