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

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/BarChart/BarChart.js +14 -6
  2. package/BarChart/formatter.js +23 -12
  3. package/CHANGELOG.md +92 -0
  4. package/ChartContainer/index.js +3 -0
  5. package/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  6. package/LineChart/AreaPlot.d.ts +1 -1
  7. package/LineChart/AreaPlot.js +4 -3
  8. package/LineChart/LineChart.js +14 -6
  9. package/LineChart/LinePlot.d.ts +1 -1
  10. package/LineChart/LinePlot.js +4 -3
  11. package/LineChart/MarkElement.js +1 -1
  12. package/LineChart/MarkPlot.d.ts +1 -1
  13. package/LineChart/MarkPlot.js +5 -3
  14. package/LineChart/formatter.js +23 -12
  15. package/PieChart/PieChart.js +9 -4
  16. package/ScatterChart/ScatterChart.js +9 -4
  17. package/SparkLineChart/SparkLineChart.d.ts +55 -0
  18. package/SparkLineChart/SparkLineChart.js +195 -0
  19. package/SparkLineChart/index.d.ts +1 -0
  20. package/SparkLineChart/index.js +12 -0
  21. package/SparkLineChart/package.json +6 -0
  22. package/context/CartesianContextProvider.d.ts +3 -1
  23. package/context/CartesianContextProvider.js +36 -6
  24. package/context/SeriesContextProvider.d.ts +3 -2
  25. package/context/SeriesContextProvider.js +5 -3
  26. package/esm/BarChart/BarChart.js +17 -6
  27. package/esm/BarChart/formatter.js +23 -12
  28. package/esm/ChartContainer/index.js +3 -0
  29. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  30. package/esm/LineChart/AreaPlot.js +4 -3
  31. package/esm/LineChart/LineChart.js +17 -6
  32. package/esm/LineChart/LinePlot.js +4 -3
  33. package/esm/LineChart/MarkElement.js +1 -1
  34. package/esm/LineChart/MarkPlot.js +4 -3
  35. package/esm/LineChart/formatter.js +23 -13
  36. package/esm/PieChart/PieChart.js +9 -4
  37. package/esm/ScatterChart/ScatterChart.js +9 -4
  38. package/esm/SparkLineChart/SparkLineChart.js +187 -0
  39. package/esm/SparkLineChart/index.js +1 -0
  40. package/esm/context/CartesianContextProvider.js +36 -6
  41. package/esm/context/SeriesContextProvider.js +5 -3
  42. package/esm/index.js +1 -0
  43. package/esm/models/index.js +3 -1
  44. package/index.d.ts +1 -0
  45. package/index.js +12 -1
  46. package/internals/defaultizeColor.d.ts +4 -2
  47. package/legacy/BarChart/BarChart.js +15 -6
  48. package/legacy/BarChart/formatter.js +23 -10
  49. package/legacy/ChartContainer/index.js +3 -0
  50. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  51. package/legacy/LineChart/AreaPlot.js +4 -3
  52. package/legacy/LineChart/LineChart.js +15 -6
  53. package/legacy/LineChart/LinePlot.js +4 -3
  54. package/legacy/LineChart/MarkElement.js +1 -1
  55. package/legacy/LineChart/MarkPlot.js +4 -3
  56. package/legacy/LineChart/formatter.js +23 -11
  57. package/legacy/PieChart/PieChart.js +9 -4
  58. package/legacy/ScatterChart/ScatterChart.js +9 -4
  59. package/legacy/SparkLineChart/SparkLineChart.js +191 -0
  60. package/legacy/SparkLineChart/index.js +1 -0
  61. package/legacy/context/CartesianContextProvider.js +45 -7
  62. package/legacy/context/SeriesContextProvider.js +6 -4
  63. package/legacy/index.js +2 -1
  64. package/legacy/models/index.js +3 -1
  65. package/models/axis.d.ts +10 -2
  66. package/models/index.d.ts +2 -0
  67. package/models/index.js +11 -0
  68. package/models/seriesType/bar.d.ts +8 -1
  69. package/models/seriesType/common.d.ts +2 -2
  70. package/models/seriesType/config.d.ts +4 -1
  71. package/models/seriesType/line.d.ts +8 -1
  72. package/modern/BarChart/BarChart.js +14 -6
  73. package/modern/BarChart/formatter.js +23 -12
  74. package/modern/ChartContainer/index.js +3 -0
  75. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +1 -1
  76. package/modern/LineChart/AreaPlot.js +4 -3
  77. package/modern/LineChart/LineChart.js +14 -6
  78. package/modern/LineChart/LinePlot.js +4 -3
  79. package/modern/LineChart/MarkElement.js +1 -1
  80. package/modern/LineChart/MarkPlot.js +4 -3
  81. package/modern/LineChart/formatter.js +23 -13
  82. package/modern/PieChart/PieChart.js +9 -4
  83. package/modern/ScatterChart/ScatterChart.js +9 -4
  84. package/modern/SparkLineChart/SparkLineChart.js +187 -0
  85. package/modern/SparkLineChart/index.js +1 -0
  86. package/modern/context/CartesianContextProvider.js +36 -6
  87. package/modern/context/SeriesContextProvider.js +5 -3
  88. package/modern/index.js +2 -1
  89. package/modern/models/index.js +3 -1
  90. package/package.json +3 -1
@@ -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,
@@ -53,11 +54,12 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
53
54
  id: _constants.DEFAULT_X_AXIS_KEY,
54
55
  scaleType: 'band',
55
56
  data: Array.from({
56
- length: Math.max(...series.map(s => s.data.length))
57
+ length: Math.max(...series.map(s => (s.data ?? dataset ?? []).length))
57
58
  }, (_, index) => index)
58
59
  }],
59
60
  yAxis: yAxis,
60
61
  colors: colors,
62
+ dataset: dataset,
61
63
  sx: sx,
62
64
  disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
63
65
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
@@ -109,6 +111,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
109
111
  * Color palette used to colorize multiple series.
110
112
  */
111
113
  colors: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.func]),
114
+ dataset: _propTypes.default.arrayOf(_propTypes.default.object),
112
115
  desc: _propTypes.default.string,
113
116
  disableAxisListener: _propTypes.default.bool,
114
117
  height: _propTypes.default.number,
@@ -172,7 +175,8 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
172
175
  }), _propTypes.default.string]),
173
176
  series: _propTypes.default.arrayOf(_propTypes.default.shape({
174
177
  color: _propTypes.default.string,
175
- data: _propTypes.default.arrayOf(_propTypes.default.number).isRequired,
178
+ data: _propTypes.default.arrayOf(_propTypes.default.number),
179
+ dataKey: _propTypes.default.string,
176
180
  highlightScope: _propTypes.default.shape({
177
181
  faded: _propTypes.default.oneOf(['global', 'none', 'series']),
178
182
  highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
@@ -224,15 +228,17 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
224
228
  axisId: _propTypes.default.string,
225
229
  classes: _propTypes.default.object,
226
230
  data: _propTypes.default.array,
231
+ dataKey: _propTypes.default.string,
227
232
  disableLine: _propTypes.default.bool,
228
233
  disableTicks: _propTypes.default.bool,
229
234
  fill: _propTypes.default.string,
235
+ hideTooltip: _propTypes.default.bool,
230
236
  id: _propTypes.default.string,
231
237
  label: _propTypes.default.string,
232
238
  labelFontSize: _propTypes.default.number,
233
- max: _propTypes.default.number,
239
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
234
240
  maxTicks: _propTypes.default.number,
235
- min: _propTypes.default.number,
241
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
236
242
  minTicks: _propTypes.default.number,
237
243
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
238
244
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
@@ -246,15 +252,17 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
246
252
  axisId: _propTypes.default.string,
247
253
  classes: _propTypes.default.object,
248
254
  data: _propTypes.default.array,
255
+ dataKey: _propTypes.default.string,
249
256
  disableLine: _propTypes.default.bool,
250
257
  disableTicks: _propTypes.default.bool,
251
258
  fill: _propTypes.default.string,
259
+ hideTooltip: _propTypes.default.bool,
252
260
  id: _propTypes.default.string,
253
261
  label: _propTypes.default.string,
254
262
  labelFontSize: _propTypes.default.number,
255
- max: _propTypes.default.number,
263
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
256
264
  maxTicks: _propTypes.default.number,
257
- min: _propTypes.default.number,
265
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
258
266
  minTicks: _propTypes.default.number,
259
267
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
260
268
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
@@ -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,98 @@
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.0
7
+
8
+ _Aug 4, 2023_
9
+
10
+ We'd like to offer a big thanks to the 12 contributors who made this release possible. Here are some highlights ✨:
11
+
12
+ - ⌚️ Move the tree view component from `@mui/lab` package
13
+
14
+ The `<TreeView />` component has been moved to the MUI X repository.
15
+ It is now accessible from its own package: `@mui/x-tree-view`.
16
+
17
+ - 🌍 Improve Hebrew (he-IL), Finnish (fi-FI), and Italian (it-IT) locales on the data grid
18
+ - 🐞 Bugfixes
19
+ - 📚 Documentation improvements
20
+
21
+ ### Data Grid
22
+
23
+ #### `@mui/x-data-grid@v6.11.0`
24
+
25
+ - [DataGrid] Add `ariaV7` experimental flag (#9496) @cherniavskii
26
+ - [DataGrid] Fix cell size when column width is set to `undefined` (#9871) @gitstart
27
+ - [l10n] Improve Hebrew (he-IL) locale (#9820) @itayG98
28
+ - [l10n] Improve Finnish (fi-FI) locale (#9848) @sambbaahh
29
+ - [l10n] Improve Italian (it-IT) locale (#9627) @fabio-rizzello-omnia
30
+
31
+ #### `@mui/x-data-grid-pro@v6.11.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link)
32
+
33
+ Same changes as in `@mui/x-data-grid@v6.11.0`.
34
+
35
+ #### `@mui/x-data-grid-premium@v6.11.0` [![premium](https://mui.com/r/x-premium-svg)](https://mui.com/r/x-premium-svg-link)
36
+
37
+ Same changes as in `@mui/x-data-grid-pro@v6.11.0`.
38
+
39
+ ### Date Pickers
40
+
41
+ #### `@mui/x-date-pickers@v6.11.0`
42
+
43
+ - [fields] Correctly handle events with a complete value insertion (#9896) @LukasTy
44
+ - [fields] Fix hours editing on dayjs with timezone and DST (#9901) @flaviendelangle
45
+ - [fields] Fix section clearing with timezone (#9819) @flaviendelangle
46
+ - [pickers] Add `CalendarHeader` slot (#7784) @flaviendelangle
47
+ - [pickers] Allow to override the `InputProps` of the `TextField` using the `slotProps` (#9849) @flaviendelangle
48
+ - [pickers] Allow to override the opening aria text using the `localeText` prop on the pickers (#9870) @flaviendelangle
49
+ - [pickers] Fix `sx` and `className` props on `MobileDateRangePicker` (#9853) @flaviendelangle
50
+ - [pickers] Fix default descriptions (#9887) @LukasTy
51
+ - [pickers] Fix offset management on dayjs adapter (#9884) @flaviendelangle
52
+ - [pickers] Use device motion reduction preference (#9823) @LukasTy
53
+
54
+ #### `@mui/x-date-pickers-pro@v6.11.0` [![pro](https://mui.com/r/x-pro-svg)](https://mui.com/r/x-pro-svg-link)
55
+
56
+ Same changes as in `@mui/x-date-pickers@v6.11.0`.
57
+
58
+ ### Charts / `@mui/x-charts@v6.0.0-alpha.6`
59
+
60
+ - [charts] Add TS definition to the exported elements (#9885) @alexfauquette
61
+ - [charts] Add sparkline (#9662) @alexfauquette
62
+ - [charts] Fix missing configuration types (#9886) @alexfauquette
63
+ - [charts] Introduce dataset to simplify plot of data from API (#9774) @alexfauquette
64
+
65
+ ### Tree View / `@mui/x-tree-view@v6.0.0-alpha.0`
66
+
67
+ - [TreeView] Add missing exported types (#9862) @flaviendelangle
68
+ - [TreeView] Add tree view to changelog generator script (#9903) @MBilalShafi
69
+ - [TreeView] Create the package on the X repository (#9798) @flaviendelangle
70
+ - [TreeView] Improve props typing (#9855) @flaviendelangle
71
+
72
+ ### Docs
73
+
74
+ - [docs] Add Tree View doc (#9825) @flaviendelangle
75
+ - [docs] Add charts nav item (#9821) @LukasTy
76
+ - [docs] Add charts to MUI X introduction pages (#9704) @joserodolfofreitas
77
+ - [docs] Add example for avoiding picker views layout shift (#9781) @noraleonte
78
+ - [docs] Consistency of Next.js App Router @oliviertassinari
79
+ - [docs] Fix API page regression: bring back slots section (#9866) @alexfauquette
80
+ - [docs] Fix demo using Pro while it's MIT (#9842) @oliviertassinari
81
+ - [docs] Get ready for next docs-infra change @oliviertassinari
82
+ - [docs] Improve the slots documentation `Recommended usage` section (#9892) @flaviendelangle
83
+
84
+ ### Core
85
+
86
+ - [core] Fix font loading issue dev-mode (#9843) @oliviertassinari
87
+ - [core] Fix pipeline (#9894) @LukasTy
88
+ - [core] Fix the link-check script on Windows (#9888) @alexfauquette
89
+ - [core] Fix v7 capitalization (#9878) @oliviertassinari
90
+ - [core] Regen doc (#9902) @flaviendelangle
91
+ - [core] Remove benchmark package (#9413) @LukasTy
92
+ - [core] Stop using the deprecated `JSX` global namespace (#9854) @flaviendelangle
93
+ - [core] Update monorepo (#9846) @flaviendelangle
94
+ - [core] Update tree data API docs (#9827) @cherniavskii
95
+ - [test] Add pickers e2e tests (#9747) @LukasTy
96
+ - [test] Data grid e2e tests follow-up (#9822) @cherniavskii
97
+
6
98
  ## 6.10.2
7
99
 
8
100
  _Jul 27, 2023_
@@ -25,6 +25,7 @@ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(pro
25
25
  xAxis,
26
26
  yAxis,
27
27
  colors,
28
+ dataset,
28
29
  sx,
29
30
  title,
30
31
  desc,
@@ -41,9 +42,11 @@ const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContainer(pro
41
42
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_SeriesContextProvider.SeriesContextProvider, {
42
43
  series: series,
43
44
  colors: colors,
45
+ dataset: dataset,
44
46
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CartesianContextProvider.CartesianContextProvider, {
45
47
  xAxis: xAxis,
46
48
  yAxis: yAxis,
49
+ dataset: dataset,
47
50
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_InteractionProvider.InteractionProvider, {
48
51
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_HighlightProvider.HighlightProvider, {
49
52
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsSurface.ChartsSurface, {
@@ -32,7 +32,7 @@ function DefaultChartsAxisContent(props) {
32
32
  variant: "outlined",
33
33
  className: classes.root,
34
34
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ChartsTooltipTable.ChartsTooltipTable, {
35
- children: [axisValue != null && /*#__PURE__*/(0, _jsxRuntime.jsx)("thead", {
35
+ children: [axisValue != null && !axis.hideTooltip && /*#__PURE__*/(0, _jsxRuntime.jsx)("thead", {
36
36
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipTable.ChartsTooltipRow, {
37
37
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ChartsTooltipTable.ChartsTooltipCell, {
38
38
  colSpan: 3,
@@ -1,2 +1,2 @@
1
1
  import * as React from 'react';
2
- export declare function AreaPlot(): React.JSX.Element | null;
2
+ export declare function AreaPlot(props: React.SVGAttributes<SVGSVGElement>): React.JSX.Element | null;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.AreaPlot = AreaPlot;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
9
  var React = _interopRequireWildcard(require("react"));
9
10
  var _d3Shape = require("d3-shape");
10
11
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
@@ -15,7 +16,7 @@ var _getCurve = _interopRequireDefault(require("../internals/getCurve"));
15
16
  var _jsxRuntime = require("react/jsx-runtime");
16
17
  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); }
17
18
  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; }
18
- function AreaPlot() {
19
+ function AreaPlot(props) {
19
20
  const seriesData = React.useContext(_SeriesContextProvider.SeriesContext).line;
20
21
  const axisData = React.useContext(_CartesianContextProvider.CartesianContext);
21
22
  if (seriesData === undefined) {
@@ -33,7 +34,7 @@ function AreaPlot() {
33
34
  } = axisData;
34
35
  const defaultXAxisId = xAxisIds[0];
35
36
  const defaultYAxisId = yAxisIds[0];
36
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
37
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", (0, _extends2.default)({}, props, {
37
38
  children: stackingGroups.flatMap(({
38
39
  ids: groupIds
39
40
  }) => {
@@ -63,5 +64,5 @@ function AreaPlot() {
63
64
  }, seriesId);
64
65
  });
65
66
  })
66
- });
67
+ }));
67
68
  }
@@ -31,6 +31,7 @@ const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
31
31
  height,
32
32
  margin,
33
33
  colors,
34
+ dataset,
34
35
  sx,
35
36
  tooltip,
36
37
  axisHighlight = {
@@ -57,11 +58,12 @@ const LineChart = /*#__PURE__*/React.forwardRef(function LineChart(props, ref) {
57
58
  id: _constants.DEFAULT_X_AXIS_KEY,
58
59
  scaleType: 'point',
59
60
  data: Array.from({
60
- length: Math.max(...series.map(s => s.data.length))
61
+ length: Math.max(...series.map(s => (s.data ?? dataset ?? []).length))
61
62
  }, (_, index) => index)
62
63
  }],
63
64
  yAxis: yAxis,
64
65
  colors: colors,
66
+ dataset: dataset,
65
67
  sx: sx,
66
68
  disableAxisListener: tooltip?.trigger !== 'axis' && axisHighlight?.x === 'none' && axisHighlight?.y === 'none',
67
69
  children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("g", {
@@ -111,6 +113,7 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
111
113
  * Color palette used to colorize multiple series.
112
114
  */
113
115
  colors: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.func]),
116
+ dataset: _propTypes.default.arrayOf(_propTypes.default.object),
114
117
  desc: _propTypes.default.string,
115
118
  disableAxisListener: _propTypes.default.bool,
116
119
  height: _propTypes.default.number,
@@ -176,7 +179,8 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
176
179
  area: _propTypes.default.bool,
177
180
  color: _propTypes.default.string,
178
181
  curve: _propTypes.default.oneOf(['catmullRom', 'linear', 'monotoneX', 'monotoneY', 'natural', 'step', 'stepAfter', 'stepBefore']),
179
- data: _propTypes.default.arrayOf(_propTypes.default.number).isRequired,
182
+ data: _propTypes.default.arrayOf(_propTypes.default.number),
183
+ dataKey: _propTypes.default.string,
180
184
  highlightScope: _propTypes.default.shape({
181
185
  faded: _propTypes.default.oneOf(['global', 'none', 'series']),
182
186
  highlighted: _propTypes.default.oneOf(['item', 'none', 'series'])
@@ -228,15 +232,17 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
228
232
  axisId: _propTypes.default.string,
229
233
  classes: _propTypes.default.object,
230
234
  data: _propTypes.default.array,
235
+ dataKey: _propTypes.default.string,
231
236
  disableLine: _propTypes.default.bool,
232
237
  disableTicks: _propTypes.default.bool,
233
238
  fill: _propTypes.default.string,
239
+ hideTooltip: _propTypes.default.bool,
234
240
  id: _propTypes.default.string,
235
241
  label: _propTypes.default.string,
236
242
  labelFontSize: _propTypes.default.number,
237
- max: _propTypes.default.number,
243
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
238
244
  maxTicks: _propTypes.default.number,
239
- min: _propTypes.default.number,
245
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
240
246
  minTicks: _propTypes.default.number,
241
247
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
242
248
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
@@ -250,15 +256,17 @@ process.env.NODE_ENV !== "production" ? LineChart.propTypes = {
250
256
  axisId: _propTypes.default.string,
251
257
  classes: _propTypes.default.object,
252
258
  data: _propTypes.default.array,
259
+ dataKey: _propTypes.default.string,
253
260
  disableLine: _propTypes.default.bool,
254
261
  disableTicks: _propTypes.default.bool,
255
262
  fill: _propTypes.default.string,
263
+ hideTooltip: _propTypes.default.bool,
256
264
  id: _propTypes.default.string,
257
265
  label: _propTypes.default.string,
258
266
  labelFontSize: _propTypes.default.number,
259
- max: _propTypes.default.number,
267
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
260
268
  maxTicks: _propTypes.default.number,
261
- min: _propTypes.default.number,
269
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
262
270
  minTicks: _propTypes.default.number,
263
271
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
264
272
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
@@ -1,2 +1,2 @@
1
1
  import * as React from 'react';
2
- export declare function LinePlot(): React.JSX.Element | null;
2
+ export declare function LinePlot(props: React.SVGAttributes<SVGSVGElement>): React.JSX.Element | null;
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.LinePlot = LinePlot;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
9
  var React = _interopRequireWildcard(require("react"));
9
10
  var _d3Shape = require("d3-shape");
10
11
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
@@ -15,7 +16,7 @@ var _getCurve = _interopRequireDefault(require("../internals/getCurve"));
15
16
  var _jsxRuntime = require("react/jsx-runtime");
16
17
  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); }
17
18
  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; }
18
- function LinePlot() {
19
+ function LinePlot(props) {
19
20
  const seriesData = React.useContext(_SeriesContextProvider.SeriesContext).line;
20
21
  const axisData = React.useContext(_CartesianContextProvider.CartesianContext);
21
22
  if (seriesData === undefined) {
@@ -33,7 +34,7 @@ function LinePlot() {
33
34
  } = axisData;
34
35
  const defaultXAxisId = xAxisIds[0];
35
36
  const defaultYAxisId = yAxisIds[0];
36
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
37
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", (0, _extends2.default)({}, props, {
37
38
  children: stackingGroups.flatMap(({
38
39
  ids: groupIds
39
40
  }) => {
@@ -63,5 +64,5 @@ function LinePlot() {
63
64
  }, seriesId);
64
65
  });
65
66
  })
66
- });
67
+ }));
67
68
  }
@@ -50,7 +50,7 @@ const MarkElementPath = (0, _styles.styled)('path', {
50
50
  }) => ({
51
51
  transform: `translate(${ownerState.x}px, ${ownerState.y}px)`,
52
52
  transformOrigin: `${ownerState.x}px ${ownerState.y}px`,
53
- fill: (theme.vars || theme).palette.background.paper,
53
+ fill: theme.palette.background.paper,
54
54
  stroke: ownerState.color,
55
55
  strokeWidth: 2,
56
56
  '&.MuiMarkElement-highlighted': {
@@ -1,2 +1,2 @@
1
1
  import * as React from 'react';
2
- export declare function MarkPlot(): React.JSX.Element | null;
2
+ export declare function MarkPlot(props: React.SVGAttributes<SVGSVGElement>): React.JSX.Element | null;
@@ -1,9 +1,11 @@
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.MarkPlot = MarkPlot;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
9
  var React = _interopRequireWildcard(require("react"));
8
10
  var _SeriesContextProvider = require("../context/SeriesContextProvider");
9
11
  var _CartesianContextProvider = require("../context/CartesianContextProvider");
@@ -12,7 +14,7 @@ var _useScale = require("../hooks/useScale");
12
14
  var _jsxRuntime = require("react/jsx-runtime");
13
15
  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); }
14
16
  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; }
15
- function MarkPlot() {
17
+ function MarkPlot(props) {
16
18
  const seriesData = React.useContext(_SeriesContextProvider.SeriesContext).line;
17
19
  const axisData = React.useContext(_CartesianContextProvider.CartesianContext);
18
20
  if (seriesData === undefined) {
@@ -30,7 +32,7 @@ function MarkPlot() {
30
32
  } = axisData;
31
33
  const defaultXAxisId = xAxisIds[0];
32
34
  const defaultYAxisId = yAxisIds[0];
33
- return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", {
35
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("g", (0, _extends2.default)({}, props, {
34
36
  children: stackingGroups.flatMap(({
35
37
  ids: groupIds
36
38
  }) => {
@@ -82,5 +84,5 @@ function MarkPlot() {
82
84
  }, `${seriesId}-${index}`));
83
85
  });
84
86
  })
85
- });
87
+ }));
86
88
  }
@@ -10,7 +10,7 @@ var _d3Shape = require("d3-shape");
10
10
  var _stackSeries = require("../internals/stackSeries");
11
11
  var _defaultizeValueFormatter = _interopRequireDefault(require("../internals/defaultizeValueFormatter"));
12
12
  // For now it's a copy past of bar charts formatter, but maybe will diverge later
13
- const formatter = params => {
13
+ const formatter = (params, dataset) => {
14
14
  const {
15
15
  seriesOrder,
16
16
  series
@@ -18,17 +18,22 @@ const formatter = params => {
18
18
  const stackingGroups = (0, _stackSeries.getStackingGroups)(params);
19
19
 
20
20
  // Create a data set with format adapted to d3
21
- const d3Dataset = [];
21
+ const d3Dataset = dataset ?? [];
22
22
  seriesOrder.forEach(id => {
23
- series[id].data.forEach((value, index) => {
24
- if (d3Dataset.length <= index) {
25
- d3Dataset.push({
26
- [id]: value
27
- });
28
- } else {
29
- d3Dataset[index][id] = value;
30
- }
31
- });
23
+ const data = series[id].data;
24
+ if (data !== undefined) {
25
+ data.forEach((value, index) => {
26
+ if (d3Dataset.length <= index) {
27
+ d3Dataset.push({
28
+ [id]: value
29
+ });
30
+ } else {
31
+ d3Dataset[index][id] = value;
32
+ }
33
+ });
34
+ } else if (dataset === undefined) {
35
+ throw new Error([`MUI: line series with id='${id}' has no data.`, 'Either provide a data property to the series or use the dataset prop.'].join('\n'));
36
+ }
32
37
  });
33
38
  const completedSeries = {};
34
39
  stackingGroups.forEach(stackingGroup => {
@@ -38,9 +43,15 @@ const formatter = params => {
38
43
  stackingOrder,
39
44
  stackingOffset
40
45
  } = stackingGroup;
41
- const stackedSeries = (0, _d3Shape.stack)().keys(ids).order(stackingOrder).offset(stackingOffset)(d3Dataset);
46
+ const stackedSeries = (0, _d3Shape.stack)().keys(ids.map(id => {
47
+ // Use dataKey if needed and available
48
+ const dataKey = series[id].dataKey;
49
+ return series[id].data === undefined && dataKey !== undefined ? dataKey : id;
50
+ })).order(stackingOrder).offset(stackingOffset)(d3Dataset);
42
51
  ids.forEach((id, index) => {
52
+ const dataKey = series[id].dataKey;
43
53
  completedSeries[id] = (0, _extends2.default)({}, series[id], {
54
+ data: dataKey ? dataset.map(d => d[dataKey]) : series[id].data,
44
55
  stackedData: stackedSeries[index].map(([a, b]) => [a, b])
45
56
  });
46
57
  });
@@ -112,6 +112,7 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
112
112
  * Color palette used to colorize multiple series.
113
113
  */
114
114
  colors: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.func]),
115
+ dataset: _propTypes.default.arrayOf(_propTypes.default.object),
115
116
  desc: _propTypes.default.string,
116
117
  disableAxisListener: _propTypes.default.bool,
117
118
  height: _propTypes.default.number,
@@ -249,15 +250,17 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
249
250
  axisId: _propTypes.default.string,
250
251
  classes: _propTypes.default.object,
251
252
  data: _propTypes.default.array,
253
+ dataKey: _propTypes.default.string,
252
254
  disableLine: _propTypes.default.bool,
253
255
  disableTicks: _propTypes.default.bool,
254
256
  fill: _propTypes.default.string,
257
+ hideTooltip: _propTypes.default.bool,
255
258
  id: _propTypes.default.string,
256
259
  label: _propTypes.default.string,
257
260
  labelFontSize: _propTypes.default.number,
258
- max: _propTypes.default.number,
261
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
259
262
  maxTicks: _propTypes.default.number,
260
- min: _propTypes.default.number,
263
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
261
264
  minTicks: _propTypes.default.number,
262
265
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
263
266
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
@@ -271,15 +274,17 @@ process.env.NODE_ENV !== "production" ? PieChart.propTypes = {
271
274
  axisId: _propTypes.default.string,
272
275
  classes: _propTypes.default.object,
273
276
  data: _propTypes.default.array,
277
+ dataKey: _propTypes.default.string,
274
278
  disableLine: _propTypes.default.bool,
275
279
  disableTicks: _propTypes.default.bool,
276
280
  fill: _propTypes.default.string,
281
+ hideTooltip: _propTypes.default.bool,
277
282
  id: _propTypes.default.string,
278
283
  label: _propTypes.default.string,
279
284
  labelFontSize: _propTypes.default.number,
280
- max: _propTypes.default.number,
285
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
281
286
  maxTicks: _propTypes.default.number,
282
- min: _propTypes.default.number,
287
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
283
288
  minTicks: _propTypes.default.number,
284
289
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
285
290
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
@@ -95,6 +95,7 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
95
95
  * Color palette used to colorize multiple series.
96
96
  */
97
97
  colors: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.string), _propTypes.default.func]),
98
+ dataset: _propTypes.default.arrayOf(_propTypes.default.object),
98
99
  desc: _propTypes.default.string,
99
100
  disableAxisListener: _propTypes.default.bool,
100
101
  height: _propTypes.default.number,
@@ -212,15 +213,17 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
212
213
  axisId: _propTypes.default.string,
213
214
  classes: _propTypes.default.object,
214
215
  data: _propTypes.default.array,
216
+ dataKey: _propTypes.default.string,
215
217
  disableLine: _propTypes.default.bool,
216
218
  disableTicks: _propTypes.default.bool,
217
219
  fill: _propTypes.default.string,
220
+ hideTooltip: _propTypes.default.bool,
218
221
  id: _propTypes.default.string,
219
222
  label: _propTypes.default.string,
220
223
  labelFontSize: _propTypes.default.number,
221
- max: _propTypes.default.number,
224
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
222
225
  maxTicks: _propTypes.default.number,
223
- min: _propTypes.default.number,
226
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
224
227
  minTicks: _propTypes.default.number,
225
228
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
226
229
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),
@@ -234,15 +237,17 @@ process.env.NODE_ENV !== "production" ? ScatterChart.propTypes = {
234
237
  axisId: _propTypes.default.string,
235
238
  classes: _propTypes.default.object,
236
239
  data: _propTypes.default.array,
240
+ dataKey: _propTypes.default.string,
237
241
  disableLine: _propTypes.default.bool,
238
242
  disableTicks: _propTypes.default.bool,
239
243
  fill: _propTypes.default.string,
244
+ hideTooltip: _propTypes.default.bool,
240
245
  id: _propTypes.default.string,
241
246
  label: _propTypes.default.string,
242
247
  labelFontSize: _propTypes.default.number,
243
- max: _propTypes.default.number,
248
+ max: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
244
249
  maxTicks: _propTypes.default.number,
245
- min: _propTypes.default.number,
250
+ min: _propTypes.default.oneOfType([_propTypes.default.instanceOf(Date), _propTypes.default.number]),
246
251
  minTicks: _propTypes.default.number,
247
252
  position: _propTypes.default.oneOf(['bottom', 'left', 'right', 'top']),
248
253
  scaleType: _propTypes.default.oneOf(['band', 'linear', 'log', 'point', 'pow', 'sqrt', 'time', 'utc']),