@mui/x-charts 6.0.0-alpha.5 → 6.0.0-alpha.7

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 (163) hide show
  1. package/BarChart/BarChart.d.ts +18 -2
  2. package/BarChart/BarChart.js +74 -17
  3. package/BarChart/BarElement.d.ts +22 -0
  4. package/BarChart/BarElement.js +21 -10
  5. package/BarChart/BarPlot.d.ts +14 -1
  6. package/BarChart/BarPlot.js +23 -4
  7. package/BarChart/formatter.js +23 -12
  8. package/CHANGELOG.md +154 -0
  9. package/ChartContainer/index.js +3 -0
  10. package/ChartsAxis/ChartsAxis.d.ts +11 -1
  11. package/ChartsAxis/ChartsAxis.js +51 -6
  12. package/ChartsLegend/ChartsLegend.d.ts +25 -2
  13. package/ChartsLegend/ChartsLegend.js +49 -17
  14. package/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  15. package/ChartsTooltip/ChartsTooltipTable.d.ts +2 -9
  16. package/ChartsXAxis/ChartsXAxis.js +44 -9
  17. package/ChartsYAxis/ChartsYAxis.js +44 -9
  18. package/LineChart/AreaElement.d.ts +22 -0
  19. package/LineChart/AreaElement.js +31 -11
  20. package/LineChart/AreaPlot.d.ts +14 -1
  21. package/LineChart/AreaPlot.js +32 -5
  22. package/LineChart/LineChart.d.ts +20 -2
  23. package/LineChart/LineChart.js +76 -16
  24. package/LineChart/LineElement.d.ts +22 -0
  25. package/LineChart/LineElement.js +31 -10
  26. package/LineChart/LinePlot.d.ts +14 -1
  27. package/LineChart/LinePlot.js +38 -6
  28. package/LineChart/MarkElement.js +1 -1
  29. package/LineChart/MarkPlot.d.ts +24 -1
  30. package/LineChart/MarkPlot.js +30 -6
  31. package/LineChart/formatter.js +23 -12
  32. package/PieChart/PieArcLabel.js +0 -1
  33. package/PieChart/PieChart.d.ts +14 -2
  34. package/PieChart/PieChart.js +60 -13
  35. package/PieChart/PiePlot.d.ts +27 -1
  36. package/PieChart/PiePlot.js +29 -6
  37. package/ScatterChart/ScatterChart.d.ts +18 -2
  38. package/ScatterChart/ScatterChart.js +64 -13
  39. package/ScatterChart/ScatterPlot.d.ts +24 -1
  40. package/ScatterChart/ScatterPlot.js +28 -4
  41. package/SparkLineChart/SparkLineChart.d.ts +73 -0
  42. package/SparkLineChart/SparkLineChart.js +218 -0
  43. package/SparkLineChart/index.d.ts +1 -0
  44. package/SparkLineChart/index.js +12 -0
  45. package/SparkLineChart/package.json +6 -0
  46. package/colorPalettes/colorPalettes.js +2 -2
  47. package/context/CartesianContextProvider.d.ts +3 -1
  48. package/context/CartesianContextProvider.js +50 -14
  49. package/context/SeriesContextProvider.d.ts +3 -2
  50. package/context/SeriesContextProvider.js +5 -3
  51. package/esm/BarChart/BarChart.js +77 -17
  52. package/esm/BarChart/BarElement.js +21 -11
  53. package/esm/BarChart/BarPlot.js +23 -4
  54. package/esm/BarChart/formatter.js +23 -12
  55. package/esm/ChartContainer/index.js +3 -0
  56. package/esm/ChartsAxis/ChartsAxis.js +51 -6
  57. package/esm/ChartsLegend/ChartsLegend.js +47 -14
  58. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  59. package/esm/ChartsXAxis/ChartsXAxis.js +45 -9
  60. package/esm/ChartsYAxis/ChartsYAxis.js +45 -9
  61. package/esm/LineChart/AreaElement.js +31 -11
  62. package/esm/LineChart/AreaPlot.js +33 -5
  63. package/esm/LineChart/LineChart.js +79 -16
  64. package/esm/LineChart/LineElement.js +31 -11
  65. package/esm/LineChart/LinePlot.js +45 -9
  66. package/esm/LineChart/MarkElement.js +1 -1
  67. package/esm/LineChart/MarkPlot.js +31 -6
  68. package/esm/LineChart/formatter.js +23 -13
  69. package/esm/PieChart/PieArcLabel.js +0 -1
  70. package/esm/PieChart/PieChart.js +60 -13
  71. package/esm/PieChart/PiePlot.js +31 -6
  72. package/esm/ScatterChart/ScatterChart.js +64 -13
  73. package/esm/ScatterChart/ScatterPlot.js +29 -4
  74. package/esm/SparkLineChart/SparkLineChart.js +210 -0
  75. package/esm/SparkLineChart/index.js +1 -0
  76. package/esm/colorPalettes/colorPalettes.js +2 -2
  77. package/esm/context/CartesianContextProvider.js +50 -14
  78. package/esm/context/SeriesContextProvider.js +5 -3
  79. package/esm/hooks/useTicks.js +9 -6
  80. package/esm/index.js +1 -0
  81. package/esm/internals/components/AxisSharedComponents.js +10 -10
  82. package/esm/models/index.js +3 -1
  83. package/hooks/useTicks.d.ts +20 -5
  84. package/hooks/useTicks.js +9 -6
  85. package/index.d.ts +1 -0
  86. package/index.js +12 -1
  87. package/internals/components/AxisSharedComponents.d.ts +4 -4
  88. package/internals/components/AxisSharedComponents.js +15 -15
  89. package/internals/defaultizeColor.d.ts +4 -2
  90. package/legacy/BarChart/BarChart.js +75 -17
  91. package/legacy/BarChart/BarElement.js +20 -10
  92. package/legacy/BarChart/BarPlot.js +23 -4
  93. package/legacy/BarChart/formatter.js +23 -10
  94. package/legacy/ChartContainer/index.js +3 -0
  95. package/legacy/ChartsAxis/ChartsAxis.js +51 -6
  96. package/legacy/ChartsLegend/ChartsLegend.js +46 -15
  97. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  98. package/legacy/ChartsXAxis/ChartsXAxis.js +45 -9
  99. package/legacy/ChartsYAxis/ChartsYAxis.js +45 -9
  100. package/legacy/LineChart/AreaElement.js +30 -10
  101. package/legacy/LineChart/AreaPlot.js +31 -5
  102. package/legacy/LineChart/LineChart.js +77 -16
  103. package/legacy/LineChart/LineElement.js +30 -10
  104. package/legacy/LineChart/LinePlot.js +38 -6
  105. package/legacy/LineChart/MarkElement.js +1 -1
  106. package/legacy/LineChart/MarkPlot.js +29 -6
  107. package/legacy/LineChart/formatter.js +23 -11
  108. package/legacy/PieChart/PieArcLabel.js +0 -1
  109. package/legacy/PieChart/PieChart.js +60 -13
  110. package/legacy/PieChart/PiePlot.js +29 -6
  111. package/legacy/ScatterChart/ScatterChart.js +64 -13
  112. package/legacy/ScatterChart/ScatterPlot.js +27 -4
  113. package/legacy/SparkLineChart/SparkLineChart.js +214 -0
  114. package/legacy/SparkLineChart/index.js +1 -0
  115. package/legacy/colorPalettes/colorPalettes.js +2 -2
  116. package/legacy/context/CartesianContextProvider.js +59 -15
  117. package/legacy/context/SeriesContextProvider.js +6 -4
  118. package/legacy/hooks/useTicks.js +9 -9
  119. package/legacy/index.js +2 -1
  120. package/legacy/internals/components/AxisSharedComponents.js +10 -10
  121. package/legacy/models/index.js +3 -1
  122. package/models/axis.d.ts +34 -3
  123. package/models/index.d.ts +2 -0
  124. package/models/index.js +11 -0
  125. package/models/seriesType/bar.d.ts +8 -1
  126. package/models/seriesType/common.d.ts +2 -2
  127. package/models/seriesType/config.d.ts +4 -1
  128. package/models/seriesType/line.d.ts +8 -1
  129. package/modern/BarChart/BarChart.js +74 -17
  130. package/modern/BarChart/BarElement.js +20 -11
  131. package/modern/BarChart/BarPlot.js +23 -4
  132. package/modern/BarChart/formatter.js +23 -12
  133. package/modern/ChartContainer/index.js +3 -0
  134. package/modern/ChartsAxis/ChartsAxis.js +51 -6
  135. package/modern/ChartsLegend/ChartsLegend.js +46 -14
  136. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  137. package/modern/ChartsXAxis/ChartsXAxis.js +44 -9
  138. package/modern/ChartsYAxis/ChartsYAxis.js +44 -9
  139. package/modern/LineChart/AreaElement.js +30 -11
  140. package/modern/LineChart/AreaPlot.js +33 -5
  141. package/modern/LineChart/LineChart.js +76 -16
  142. package/modern/LineChart/LineElement.js +30 -11
  143. package/modern/LineChart/LinePlot.js +39 -6
  144. package/modern/LineChart/MarkElement.js +1 -1
  145. package/modern/LineChart/MarkPlot.js +30 -6
  146. package/modern/LineChart/formatter.js +23 -13
  147. package/modern/PieChart/PieArcLabel.js +0 -1
  148. package/modern/PieChart/PieChart.js +60 -13
  149. package/modern/PieChart/PiePlot.js +30 -6
  150. package/modern/ScatterChart/ScatterChart.js +64 -13
  151. package/modern/ScatterChart/ScatterPlot.js +28 -4
  152. package/modern/SparkLineChart/SparkLineChart.js +210 -0
  153. package/modern/SparkLineChart/index.js +1 -0
  154. package/modern/colorPalettes/colorPalettes.js +2 -2
  155. package/modern/context/CartesianContextProvider.js +50 -14
  156. package/modern/context/SeriesContextProvider.js +5 -3
  157. package/modern/hooks/useTicks.js +9 -6
  158. package/modern/index.js +2 -1
  159. package/modern/internals/components/AxisSharedComponents.js +10 -10
  160. package/modern/models/index.js +3 -1
  161. package/package.json +4 -2
  162. package/themeAugmentation/components.d.ts +0 -10
  163. package/themeAugmentation/overrides.d.ts +0 -2
@@ -1,16 +1,32 @@
1
1
  import * as React from 'react';
2
+ import { BarPlotSlotComponentProps, BarPlotSlotsComponent } from './BarPlot';
2
3
  import { ResponsiveChartContainerProps } from '../ResponsiveChartContainer';
3
4
  import { ChartsAxisProps } from '../ChartsAxis';
4
5
  import { BarSeriesType } from '../models/seriesType/bar';
5
6
  import { MakeOptional } from '../models/helpers';
6
7
  import { ChartsTooltipProps } from '../ChartsTooltip';
7
- import { ChartsLegendProps } from '../ChartsLegend';
8
+ import { ChartsLegendProps, ChartsLegendSlotsComponent, ChartsLegendSlotComponentProps } from '../ChartsLegend';
8
9
  import { ChartsAxisHighlightProps } from '../ChartsAxisHighlight';
9
- export interface BarChartProps extends Omit<ResponsiveChartContainerProps, 'series'>, ChartsAxisProps {
10
+ import { ChartsAxisSlotsComponent, ChartsAxisSlotComponentProps } from '../models/axis';
11
+ export interface BarChartSlotsComponent extends ChartsAxisSlotsComponent, BarPlotSlotsComponent, ChartsLegendSlotsComponent {
12
+ }
13
+ export interface BarChartSlotComponentProps extends ChartsAxisSlotComponentProps, BarPlotSlotComponentProps, ChartsLegendSlotComponentProps {
14
+ }
15
+ export interface BarChartProps extends Omit<ResponsiveChartContainerProps, 'series'>, Omit<ChartsAxisProps, 'slots' | 'slotProps'> {
10
16
  series: MakeOptional<BarSeriesType, 'type'>[];
11
17
  tooltip?: ChartsTooltipProps;
12
18
  axisHighlight?: ChartsAxisHighlightProps;
13
19
  legend?: ChartsLegendProps;
20
+ /**
21
+ * Overridable component slots.
22
+ * @default {}
23
+ */
24
+ slots?: BarChartSlotsComponent;
25
+ /**
26
+ * The props used for each component slot.
27
+ * @default {}
28
+ */
29
+ slotProps?: BarChartSlotComponentProps;
14
30
  }
15
31
  declare const BarChart: React.ForwardRefExoticComponent<BarChartProps & React.RefAttributes<unknown>>;
16
32
  export { BarChart };
@@ -29,6 +29,7 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
29
29
  height,
30
30
  margin,
31
31
  colors,
32
+ dataset,
32
33
  sx,
33
34
  tooltip,
34
35
  axisHighlight,
@@ -37,7 +38,9 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
37
38
  leftAxis,
38
39
  rightAxis,
39
40
  bottomAxis,
40
- children
41
+ children,
42
+ slots,
43
+ slotProps
41
44
  } = props;
42
45
  const id = (0, _useId.default)();
43
46
  const clipPathId = `${id}-clip-path`;
@@ -53,24 +56,36 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
53
56
  id: _constants.DEFAULT_X_AXIS_KEY,
54
57
  scaleType: 'band',
55
58
  data: Array.from({
56
- length: Math.max(...series.map(s => s.data.length))
59
+ length: Math.max(...series.map(s => (s.data ?? dataset ?? []).length))
57
60
  }, (_, index) => index)
58
61
  }],
59
62
  yAxis: yAxis,
60
63
  colors: colors,
64
+ dataset: dataset,
61
65
  sx: sx,
62
66
  disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
63
67
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
64
68
  clipPath: `url(#${clipPathId})`,
65
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_BarPlot.BarPlot, {})
69
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_BarPlot.BarPlot, {
70
+ slots: slots,
71
+ slotProps: slotProps
72
+ })
66
73
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxis.ChartsAxis, {
67
74
  topAxis: topAxis,
68
75
  leftAxis: leftAxis,
69
76
  rightAxis: rightAxis,
70
- bottomAxis: bottomAxis
71
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsLegend.ChartsLegend, (0, _extends2.default)({}, legend)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxisHighlight.ChartsAxisHighlight, (0, _extends2.default)({
77
+ bottomAxis: bottomAxis,
78
+ slots: slots,
79
+ slotProps: slotProps
80
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsLegend.ChartsLegend, (0, _extends2.default)({}, legend, {
81
+ slots: slots,
82
+ slotProps: slotProps
83
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsAxisHighlight.ChartsAxisHighlight, (0, _extends2.default)({
72
84
  x: "band"
73
- }, axisHighlight)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltip.ChartsTooltip, (0, _extends2.default)({}, tooltip)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsClipPath.ChartsClipPath, {
85
+ }, axisHighlight)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltip.ChartsTooltip, (0, _extends2.default)({}, tooltip, {
86
+ slots: slots,
87
+ slotProps: slotProps
88
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsClipPath.ChartsClipPath, {
74
89
  id: clipPathId
75
90
  }), children]
76
91
  });
@@ -99,8 +114,13 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
99
114
  label: _propTypes.default.string,
100
115
  labelFontSize: _propTypes.default.number,
101
116
  position: _propTypes.default.oneOf(['bottom', 'top']),
117
+ slotProps: _propTypes.default.object,
118
+ slots: _propTypes.default.object,
102
119
  stroke: _propTypes.default.string,
103
120
  tickFontSize: _propTypes.default.number,
121
+ tickMaxStep: _propTypes.default.number,
122
+ tickMinStep: _propTypes.default.number,
123
+ tickNumber: _propTypes.default.number,
104
124
  tickSize: _propTypes.default.number
105
125
  }), _propTypes.default.string]),
106
126
  children: _propTypes.default.node,
@@ -109,6 +129,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
109
129
  * Color palette used to colorize multiple series.
110
130
  */
111
131
  colors: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.func]),
132
+ dataset: _propTypes.default.arrayOf(_propTypes.default.object),
112
133
  desc: _propTypes.default.string,
113
134
  disableAxisListener: _propTypes.default.bool,
114
135
  height: _propTypes.default.number,
@@ -126,8 +147,13 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
126
147
  label: _propTypes.default.string,
127
148
  labelFontSize: _propTypes.default.number,
128
149
  position: _propTypes.default.oneOf(['left', 'right']),
150
+ slotProps: _propTypes.default.object,
151
+ slots: _propTypes.default.object,
129
152
  stroke: _propTypes.default.string,
130
153
  tickFontSize: _propTypes.default.number,
154
+ tickMaxStep: _propTypes.default.number,
155
+ tickMinStep: _propTypes.default.number,
156
+ tickNumber: _propTypes.default.number,
131
157
  tickSize: _propTypes.default.number
132
158
  }), _propTypes.default.string]),
133
159
  legend: _propTypes.default.shape({
@@ -144,6 +170,8 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
144
170
  horizontal: _propTypes.default.oneOf(['left', 'middle', 'right']).isRequired,
145
171
  vertical: _propTypes.default.oneOf(['bottom', 'middle', 'top']).isRequired
146
172
  }),
173
+ slotProps: _propTypes.default.object,
174
+ slots: _propTypes.default.object,
147
175
  spacing: _propTypes.default.number
148
176
  }),
149
177
  margin: _propTypes.default.shape({
@@ -166,13 +194,19 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
166
194
  label: _propTypes.default.string,
167
195
  labelFontSize: _propTypes.default.number,
168
196
  position: _propTypes.default.oneOf(['left', 'right']),
197
+ slotProps: _propTypes.default.object,
198
+ slots: _propTypes.default.object,
169
199
  stroke: _propTypes.default.string,
170
200
  tickFontSize: _propTypes.default.number,
201
+ tickMaxStep: _propTypes.default.number,
202
+ tickMinStep: _propTypes.default.number,
203
+ tickNumber: _propTypes.default.number,
171
204
  tickSize: _propTypes.default.number
172
205
  }), _propTypes.default.string]),
173
206
  series: _propTypes.default.arrayOf(_propTypes.default.shape({
174
207
  color: _propTypes.default.string,
175
- data: _propTypes.default.arrayOf(_propTypes.default.number).isRequired,
208
+ data: _propTypes.default.arrayOf(_propTypes.default.number),
209
+ dataKey: _propTypes.default.string,
176
210
  highlightScope: _propTypes.default.shape({
177
211
  faded: _propTypes.default.oneOf(['global', 'none', 'series']),
178
212
  highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
@@ -187,6 +221,16 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
187
221
  xAxisKey: _propTypes.default.string,
188
222
  yAxisKey: _propTypes.default.string
189
223
  })).isRequired,
224
+ /**
225
+ * The props used for each component slot.
226
+ * @default {}
227
+ */
228
+ slotProps: _propTypes.default.object,
229
+ /**
230
+ * Overridable component slots.
231
+ * @default {}
232
+ */
233
+ slots: _propTypes.default.object,
190
234
  sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
191
235
  title: _propTypes.default.string,
192
236
  tooltip: _propTypes.default.shape({
@@ -209,8 +253,13 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
209
253
  label: _propTypes.default.string,
210
254
  labelFontSize: _propTypes.default.number,
211
255
  position: _propTypes.default.oneOf(['bottom', 'top']),
256
+ slotProps: _propTypes.default.object,
257
+ slots: _propTypes.default.object,
212
258
  stroke: _propTypes.default.string,
213
259
  tickFontSize: _propTypes.default.number,
260
+ tickMaxStep: _propTypes.default.number,
261
+ tickMinStep: _propTypes.default.number,
262
+ tickNumber: _propTypes.default.number,
214
263
  tickSize: _propTypes.default.number
215
264
  }), _propTypes.default.string]),
216
265
  viewBox: _propTypes.default.shape({
@@ -224,44 +273,52 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
224
273
  axisId: _propTypes.default.string,
225
274
  classes: _propTypes.default.object,
226
275
  data: _propTypes.default.array,
276
+ dataKey: _propTypes.default.string,
227
277
  disableLine: _propTypes.default.bool,
228
278
  disableTicks: _propTypes.default.bool,
229
279
  fill: _propTypes.default.string,
280
+ hideTooltip: _propTypes.default.bool,
230
281
  id: _propTypes.default.string,
231
282
  label: _propTypes.default.string,
232
283
  labelFontSize: _propTypes.default.number,
233
- max: _propTypes.default.number,
234
- maxTicks: _propTypes.default.number,
235
- min: _propTypes.default.number,
236
- minTicks: _propTypes.default.number,
284
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
285
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
237
286
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
238
287
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
288
+ slotProps: _propTypes.default.object,
289
+ slots: _propTypes.default.object,
239
290
  stroke: _propTypes.default.string,
240
291
  tickFontSize: _propTypes.default.number,
292
+ tickMaxStep: _propTypes.default.number,
293
+ tickMinStep: _propTypes.default.number,
294
+ tickNumber: _propTypes.default.number,
241
295
  tickSize: _propTypes.default.number,
242
- tickSpacing: _propTypes.default.number,
243
296
  valueFormatter: _propTypes.default.func
244
297
  })),
245
298
  yAxis: _propTypes.default.arrayOf(_propTypes.default.shape({
246
299
  axisId: _propTypes.default.string,
247
300
  classes: _propTypes.default.object,
248
301
  data: _propTypes.default.array,
302
+ dataKey: _propTypes.default.string,
249
303
  disableLine: _propTypes.default.bool,
250
304
  disableTicks: _propTypes.default.bool,
251
305
  fill: _propTypes.default.string,
306
+ hideTooltip: _propTypes.default.bool,
252
307
  id: _propTypes.default.string,
253
308
  label: _propTypes.default.string,
254
309
  labelFontSize: _propTypes.default.number,
255
- max: _propTypes.default.number,
256
- maxTicks: _propTypes.default.number,
257
- min: _propTypes.default.number,
258
- minTicks: _propTypes.default.number,
310
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
311
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
259
312
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
260
313
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
314
+ slotProps: _propTypes.default.object,
315
+ slots: _propTypes.default.object,
261
316
  stroke: _propTypes.default.string,
262
317
  tickFontSize: _propTypes.default.number,
318
+ tickMaxStep: _propTypes.default.number,
319
+ tickMinStep: _propTypes.default.number,
320
+ tickNumber: _propTypes.default.number,
263
321
  tickSize: _propTypes.default.number,
264
- tickSpacing: _propTypes.default.number,
265
322
  valueFormatter: _propTypes.default.func
266
323
  }))
267
324
  } : void 0;
@@ -1,4 +1,5 @@
1
1
  import * as React from 'react';
2
+ import { SlotComponentProps } from '@mui/base';
2
3
  import { HighlightScope } from '../context/HighlightProvider';
3
4
  export interface BarElementClasses {
4
5
  /** Styles applied to the root element. */
@@ -15,7 +16,28 @@ export interface BarElementOwnerState {
15
16
  }
16
17
  export declare function getBarElementUtilityClass(slot: string): string;
17
18
  export declare const lineElementClasses: BarElementClasses;
19
+ export declare const BarElementPath: import("@emotion/styled").StyledComponent<import("@mui/system").MUIStyledCommonProps<import("@mui/material/styles").Theme> & {
20
+ ownerState: BarElementOwnerState;
21
+ }, Pick<React.SVGProps<SVGRectElement>, keyof React.SVGProps<SVGRectElement>>, {}>;
18
22
  export type BarElementProps = Omit<BarElementOwnerState, 'isFaded' | 'isHighlighted'> & React.ComponentPropsWithoutRef<'path'> & {
19
23
  highlightScope?: Partial<HighlightScope>;
24
+ /**
25
+ * The props used for each component slot.
26
+ * @default {}
27
+ */
28
+ slotProps?: {
29
+ bar?: SlotComponentProps<'path', {}, BarElementOwnerState>;
30
+ };
31
+ /**
32
+ * Overridable component slots.
33
+ * @default {}
34
+ */
35
+ slots?: {
36
+ /**
37
+ * The component that renders the root.
38
+ * @default BarElementPath
39
+ */
40
+ bar?: React.ElementType;
41
+ };
20
42
  };
21
43
  export declare function BarElement(props: BarElementProps): React.JSX.Element;
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.BarElement = BarElement;
8
+ exports.BarElementPath = void 0;
8
9
  exports.getBarElementUtilityClass = getBarElementUtilityClass;
9
10
  exports.lineElementClasses = void 0;
10
11
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
12
13
  var React = _interopRequireWildcard(require("react"));
13
14
  var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
15
+ var _utils = require("@mui/base/utils");
14
16
  var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
15
17
  var _styles = require("@mui/material/styles");
16
18
  var _d3Color = require("d3-color");
@@ -18,7 +20,7 @@ var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generat
18
20
  var _useInteractionItemProps = require("../hooks/useInteractionItemProps");
19
21
  var _InteractionProvider = require("../context/InteractionProvider");
20
22
  var _jsxRuntime = require("react/jsx-runtime");
21
- const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope"];
23
+ const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps"];
22
24
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
25
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
26
  function getBarElementUtilityClass(slot) {
@@ -49,13 +51,16 @@ const BarElementPath = (0, _styles.styled)('rect', {
49
51
  transition: 'opacity 0.2s ease-in, fill 0.2s ease-in',
50
52
  opacity: ownerState.isFaded && 0.3 || 1
51
53
  }));
54
+ exports.BarElementPath = BarElementPath;
52
55
  function BarElement(props) {
53
56
  const {
54
57
  id,
55
58
  dataIndex,
56
59
  classes: innerClasses,
57
60
  color,
58
- highlightScope
61
+ highlightScope,
62
+ slots,
63
+ slotProps
59
64
  } = props,
60
65
  other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
61
66
  const getInteractionItemProps = (0, _useInteractionItemProps.useInteractionItemProps)(highlightScope);
@@ -81,12 +86,18 @@ function BarElement(props) {
81
86
  isHighlighted
82
87
  };
83
88
  const classes = useUtilityClasses(ownerState);
84
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(BarElementPath, (0, _extends2.default)({}, other, {
85
- ownerState: ownerState,
86
- className: classes.root
87
- }, getInteractionItemProps({
88
- type: 'bar',
89
- seriesId: id,
90
- dataIndex
91
- })));
89
+ const Bar = slots?.bar ?? BarElementPath;
90
+ const barProps = (0, _utils.useSlotProps)({
91
+ elementType: Bar,
92
+ externalSlotProps: slotProps?.bar,
93
+ additionalProps: (0, _extends2.default)({}, other, getInteractionItemProps({
94
+ type: 'bar',
95
+ seriesId: id,
96
+ dataIndex
97
+ }), {
98
+ className: classes.root
99
+ }),
100
+ ownerState
101
+ });
102
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(Bar, (0, _extends2.default)({}, barProps));
92
103
  }
@@ -1,2 +1,15 @@
1
1
  import * as React from 'react';
2
- export declare function BarPlot(): React.JSX.Element | null;
2
+ import { BarElementProps } from './BarElement';
3
+ export interface BarPlotSlotsComponent {
4
+ bar?: React.JSXElementConstructor<BarElementProps>;
5
+ }
6
+ export interface BarPlotSlotComponentProps {
7
+ bar?: Partial<BarElementProps>;
8
+ }
9
+ export interface BarPlotProps extends Pick<BarElementProps, 'slots' | 'slotProps'> {
10
+ }
11
+ declare function BarPlot(props: BarPlotProps): React.JSX.Element | null;
12
+ declare namespace BarPlot {
13
+ var propTypes: any;
14
+ }
15
+ export { BarPlot };
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.BarPlot = BarPlot;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
9
  var React = _interopRequireWildcard(require("react"));
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
11
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
9
12
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
10
13
  var _BarElement = require("./BarElement");
@@ -38,7 +41,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
38
41
  offset
39
42
  };
40
43
  }
41
- function BarPlot() {
44
+ function BarPlot(props) {
42
45
  const seriesData = React.useContext(_SeriesContextProvider.SeriesContext).bar;
43
46
  const axisData = React.useContext(_CartesianContextProvider.CartesianContext);
44
47
  if (seriesData === undefined) {
@@ -93,7 +96,7 @@ function BarPlot() {
93
96
  return stackedData.map((values, dataIndex) => {
94
97
  const baseline = Math.min(...values);
95
98
  const value = Math.max(...values);
96
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BarElement.BarElement, {
99
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_BarElement.BarElement, (0, _extends2.default)({
97
100
  id: seriesId,
98
101
  dataIndex: dataIndex,
99
102
  x: xScale(xAxis[xAxisKey].data?.[dataIndex]) + groupIndex * (barWidth + offset),
@@ -102,9 +105,25 @@ function BarPlot() {
102
105
  width: barWidth,
103
106
  color: color,
104
107
  highlightScope: series[seriesId].highlightScope
105
- }, `${seriesId}-${dataIndex}`);
108
+ }, props), `${seriesId}-${dataIndex}`);
106
109
  });
107
110
  });
108
111
  })
109
112
  });
110
- }
113
+ }
114
+ process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
115
+ // ----------------------------- Warning --------------------------------
116
+ // | These PropTypes are generated from the TypeScript type definitions |
117
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
118
+ // ----------------------------------------------------------------------
119
+ /**
120
+ * The props used for each component slot.
121
+ * @default {}
122
+ */
123
+ slotProps: _propTypes.default.object,
124
+ /**
125
+ * Overridable component slots.
126
+ * @default {}
127
+ */
128
+ slots: _propTypes.default.object
129
+ } : void 0;
@@ -9,7 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
  var _d3Shape = require("d3-shape");
10
10
  var _stackSeries = require("../internals/stackSeries");
11
11
  var _defaultizeValueFormatter = _interopRequireDefault(require("../internals/defaultizeValueFormatter"));
12
- const formatter = params => {
12
+ const formatter = (params, dataset) => {
13
13
  const {
14
14
  seriesOrder,
15
15
  series
@@ -17,17 +17,22 @@ const formatter = params => {
17
17
  const stackingGroups = (0, _stackSeries.getStackingGroups)(params);
18
18
 
19
19
  // Create a data set with format adapted to d3
20
- const d3Dataset = [];
20
+ const d3Dataset = dataset ?? [];
21
21
  seriesOrder.forEach(id => {
22
- series[id].data.forEach((value, index) => {
23
- if (d3Dataset.length <= index) {
24
- d3Dataset.push({
25
- [id]: value
26
- });
27
- } else {
28
- d3Dataset[index][id] = value;
29
- }
30
- });
22
+ const data = series[id].data;
23
+ if (data !== undefined) {
24
+ data.forEach((value, index) => {
25
+ if (d3Dataset.length <= index) {
26
+ d3Dataset.push({
27
+ [id]: value
28
+ });
29
+ } else {
30
+ d3Dataset[index][id] = value;
31
+ }
32
+ });
33
+ } else if (dataset === undefined) {
34
+ throw new Error([`MUI: bar series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\n'));
35
+ }
31
36
  });
32
37
  const completedSeries = {};
33
38
  stackingGroups.forEach(stackingGroup => {
@@ -37,9 +42,15 @@ const formatter = params => {
37
42
  stackingOrder
38
43
  } = stackingGroup;
39
44
  // Get stacked values, and derive the domain
40
- const stackedSeries = (0, _d3Shape.stack)().keys(ids).order(stackingOrder).offset(stackingOffset)(d3Dataset);
45
+ const stackedSeries = (0, _d3Shape.stack)().keys(ids.map(id => {
46
+ // Use dataKey if needed and available
47
+ const dataKey = series[id].dataKey;
48
+ return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
49
+ })).order(stackingOrder).offset(stackingOffset)(d3Dataset);
41
50
  ids.forEach((id, index) => {
51
+ const dataKey = series[id].dataKey;
42
52
  completedSeries[id] = (0, _extends2.default)({}, series[id], {
53
+ data: dataKey ? dataset.map(d => d[dataKey]) : series[id].data,
43
54
  stackedData: stackedSeries[index].map(([a, b]) => [a, b])
44
55
  });
45
56
  });
package/CHANGELOG.md CHANGED
@@ -3,6 +3,160 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 6.11.1
7
+
8
+ _Aug 11, 2023_
9
+
10
+ We'd like to offer a big thanks to the 8 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - 💫 Add theme augmentation to `@mui/x-tree-view`
13
+ - 📈 Enable charts customization using `slot` and `slotProps` props
14
+ - 🌍 Improve Finnish (fi-FI) and Icelandic (is-IS) locales on the pickers
15
+ - 🐞 Bugfixes
16
+ - 📚 Documentation improvements
17
+
18
+ ### Data Grid
19
+
20
+ #### `@mui/x-data-grid@6.11.1`
21
+
22
+ - [DataGrid] `getCellAggregationResult`: Handle `null` `rowNode` case (#9915) @romgrk
23
+
24
+ #### `@mui/x-data-grid-pro@6.11.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link)
25
+
26
+ Same changes as in `@mui/x-data-grid@6.11.1`.
27
+
28
+ #### `@mui/x-data-grid-premium@6.11.1` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link)
29
+
30
+ Same changes as in `@mui/x-data-grid-pro@6.11.1`.
31
+
32
+ ### Date Pickers
33
+
34
+ #### `@mui/x-date-pickers@6.11.1`
35
+
36
+ - [fields] Use `numeric` `inputmode` instead of `tel` (#9918) @LukasTy
37
+ - [pickers] Always respect locale when formatting meridiem (#9979) @flaviendelangle
38
+ - [pickers] Call `onChange` when selecting a shortcut with `changeImportance="set"` (#9974) @flaviendelangle
39
+ - [pickers] Refactor `themeAugmentation` `styleOverrides` (#9978) @LukasTy
40
+ - [l10n] Improve Finnish (fi-FI) locale (#9795) @kurkle
41
+ - [l10n] Improve Icelandic (is-IS) locale (#9639) @magnimarels
42
+
43
+ #### `@mui/x-date-pickers-pro@6.11.1` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link)
44
+
45
+ Same changes as in `@mui/x-date-pickers@6.11.1`.
46
+
47
+ ### Charts / `@mui/x-charts@v6.0.0-alpha.7`
48
+
49
+ - [charts] Fix label and tick alignment (#9952) @LukasTy
50
+ - [charts] Remove not functional component `styleOverrides` (#9996) @LukasTy
51
+ - [charts] Set custom ticks number (#9922) @alexfauquette
52
+ - [charts] Use `slot`/`slotProps` for customization (#9744) @alexfauquette
53
+ - [charts] Extend cheerful fiesta palette (#9980) @noraleonte
54
+
55
+ ### Tree View / `@mui/x-tree-view@v6.0.0-alpha.1`
56
+
57
+ - [TreeView] Add theme augmentation (#9967) @flaviendelangle
58
+
59
+ ### Docs
60
+
61
+ - [docs] Clarify the `shouldDisableClock` migration code options (#9920) @LukasTy
62
+
63
+ ### Core
64
+
65
+ - [core] Port GitHub workflow for ensuring triage label is present (#9924) @DanailH
66
+ - [docs-infra] Fix the import samples in Api pages (#9898) @alexfauquette
67
+
68
+ ## 6.11.0
69
+
70
+ _Aug 4, 2023_
71
+
72
+ We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨:
73
+
74
+ - ⌚️ Move the tree view component from `@mui/lab` package
75
+
76
+ The `<TreeView />` component has been moved to the MUI X repository.
77
+ It is now accessible from its own package: `@mui/x-tree-view`.
78
+
79
+ - 🌍 Improve Hebrew (he-IL), Finnish (fi-FI), and Italian (it-IT) locales on the data grid
80
+ - 🐞 Bugfixes
81
+ - 📚 Documentation improvements
82
+
83
+ ### Data Grid
84
+
85
+ #### `@mui/x-data-grid@v6.11.0`
86
+
87
+ - [DataGrid] Add `ariaV7` experimental flag (#9496) @cherniavskii
88
+ - [DataGrid] Fix cell size when column width is set to `undefined` (#9871) @gitstart
89
+ - [l10n] Improve Hebrew (he-IL) locale (#9820) @itayG98
90
+ - [l10n] Improve Finnish (fi-FI) locale (#9848) @sambbaahh
91
+ - [l10n] Improve Italian (it-IT) locale (#9627) @fabio-rizzello-omnia
92
+
93
+ #### `@mui/x-data-grid-pro@v6.11.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link)
94
+
95
+ Same changes as in `@mui/x-data-grid@v6.11.0`.
96
+
97
+ #### `@mui/x-data-grid-premium@v6.11.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link)
98
+
99
+ Same changes as in `@mui/x-data-grid-pro@v6.11.0`.
100
+
101
+ ### Date Pickers
102
+
103
+ #### `@mui/x-date-pickers@v6.11.0`
104
+
105
+ - [fields] Correctly handle events with a complete value insertion (#9896) @LukasTy
106
+ - [fields] Fix hours editing on dayjs with timezone and DST (#9901) @flaviendelangle
107
+ - [fields] Fix section clearing with timezone (#9819) @flaviendelangle
108
+ - [pickers] Add `CalendarHeader` slot (#7784) @flaviendelangle
109
+ - [pickers] Allow to override the `InputProps` of the `TextField` using the `slotProps` (#9849) @flaviendelangle
110
+ - [pickers] Allow to override the opening aria text using the `localeText` prop on the pickers (#9870) @flaviendelangle
111
+ - [pickers] Fix `sx` and `className` props on `MobileDateRangePicker` (#9853) @flaviendelangle
112
+ - [pickers] Fix default descriptions (#9887) @LukasTy
113
+ - [pickers] Fix offset management on dayjs adapter (#9884) @flaviendelangle
114
+ - [pickers] Use device motion reduction preference (#9823) @LukasTy
115
+
116
+ #### `@mui/x-date-pickers-pro@v6.11.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link)
117
+
118
+ Same changes as in `@mui/x-date-pickers@v6.11.0`.
119
+
120
+ ### Charts / `@mui/x-charts@v6.0.0-alpha.6`
121
+
122
+ - [charts] Add TS definition to the exported elements (#9885) @alexfauquette
123
+ - [charts] Add sparkline (#9662) @alexfauquette
124
+ - [charts] Fix missing configuration types (#9886) @alexfauquette
125
+ - [charts] Introduce dataset to simplify plot of data from API (#9774) @alexfauquette
126
+
127
+ ### Tree View / `@mui/x-tree-view@v6.0.0-alpha.0`
128
+
129
+ - [TreeView] Add missing exported types (#9862) @flaviendelangle
130
+ - [TreeView] Add tree view to changelog generator script (#9903) @MBilalShafi
131
+ - [TreeView] Create the package on the X repository (#9798) @flaviendelangle
132
+ - [TreeView] Improve props typing (#9855) @flaviendelangle
133
+
134
+ ### Docs
135
+
136
+ - [docs] Add Tree View doc (#9825) @flaviendelangle
137
+ - [docs] Add charts nav item (#9821) @LukasTy
138
+ - [docs] Add charts to MUI X introduction pages (#9704) @joserodolfofreitas
139
+ - [docs] Add example for avoiding picker views layout shift (#9781) @noraleonte
140
+ - [docs] Consistency of Next.js App Router @oliviertassinari
141
+ - [docs] Fix API page regression: bring back slots section (#9866) @alexfauquette
142
+ - [docs] Fix demo using Pro while it's MIT (#9842) @oliviertassinari
143
+ - [docs] Get ready for next docs-infra change @oliviertassinari
144
+ - [docs] Improve the slots documentation `Recommended usage` section (#9892) @flaviendelangle
145
+
146
+ ### Core
147
+
148
+ - [core] Fix font loading issue dev-mode (#9843) @oliviertassinari
149
+ - [core] Fix pipeline (#9894) @LukasTy
150
+ - [core] Fix the link-check script on Windows (#9888) @alexfauquette
151
+ - [core] Fix v7 capitalization (#9878) @oliviertassinari
152
+ - [core] Regen doc (#9902) @flaviendelangle
153
+ - [core] Remove benchmark package (#9413) @LukasTy
154
+ - [core] Stop using the deprecated `JSX` global namespace (#9854) @flaviendelangle
155
+ - [core] Update monorepo (#9846) @flaviendelangle
156
+ - [core] Update tree data API docs (#9827) @cherniavskii
157
+ - [test] Add pickers e2e tests (#9747) @LukasTy
158
+ - [test] Data grid e2e tests follow-up (#9822) @cherniavskii
159
+
6
160
  ## 6.10.2
7
161
 
8
162
  _Jul 27, 2023_