@mui/x-charts 6.18.1 → 6.18.3

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 (125) hide show
  1. package/BarChart/BarElement.d.ts +5 -1
  2. package/BarChart/BarElement.js +24 -1
  3. package/BarChart/index.d.ts +3 -2
  4. package/BarChart/index.js +31 -12
  5. package/CHANGELOG.md +112 -0
  6. package/ChartsLegend/index.d.ts +1 -0
  7. package/ChartsLegend/index.js +11 -0
  8. package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +6 -3
  9. package/ChartsTooltip/ChartsAxisTooltipContent.js +93 -69
  10. package/ChartsTooltip/ChartsItemTooltipContent.d.ts +6 -3
  11. package/ChartsTooltip/ChartsItemTooltipContent.js +38 -53
  12. package/ChartsTooltip/ChartsTooltip.d.ts +1 -1
  13. package/ChartsTooltip/ChartsTooltip.js +13 -5
  14. package/ChartsTooltip/ChartsTooltipTable.js +3 -3
  15. package/ChartsTooltip/DefaultChartsAxisTooltipContent.d.ts +7 -0
  16. package/ChartsTooltip/DefaultChartsAxisTooltipContent.js +174 -0
  17. package/ChartsTooltip/DefaultChartsItemTooltipContent.d.ts +8 -0
  18. package/ChartsTooltip/DefaultChartsItemTooltipContent.js +99 -0
  19. package/ChartsTooltip/chartsTooltipClasses.d.ts +21 -0
  20. package/ChartsTooltip/chartsTooltipClasses.js +12 -0
  21. package/ChartsTooltip/index.d.ts +5 -0
  22. package/ChartsTooltip/index.js +55 -0
  23. package/ChartsTooltip/utils.d.ts +1 -1
  24. package/ChartsTooltip/utils.js +2 -2
  25. package/ChartsYAxis/ChartsYAxis.js +6 -4
  26. package/LineChart/extremums.js +25 -8
  27. package/LineChart/index.d.ts +5 -5
  28. package/LineChart/index.js +50 -41
  29. package/PieChart/PieArc.d.ts +5 -2
  30. package/PieChart/PieArc.js +17 -2
  31. package/PieChart/PieArcLabel.d.ts +1 -1
  32. package/PieChart/PieArcLabel.js +5 -10
  33. package/PieChart/PieArcLabelPlot.d.ts +5 -1
  34. package/PieChart/PieArcLabelPlot.js +91 -3
  35. package/PieChart/PieArcPlot.d.ts +5 -1
  36. package/PieChart/PieArcPlot.js +90 -3
  37. package/PieChart/index.d.ts +4 -2
  38. package/PieChart/index.js +42 -18
  39. package/ScatterChart/Scatter.js +1 -1
  40. package/ScatterChart/index.d.ts +3 -3
  41. package/ScatterChart/index.js +31 -19
  42. package/esm/BarChart/BarElement.js +26 -2
  43. package/esm/BarChart/index.js +3 -2
  44. package/esm/ChartsLegend/index.js +2 -1
  45. package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +95 -71
  46. package/esm/ChartsTooltip/ChartsItemTooltipContent.js +40 -54
  47. package/esm/ChartsTooltip/ChartsTooltip.js +15 -7
  48. package/esm/ChartsTooltip/ChartsTooltipTable.js +3 -3
  49. package/esm/ChartsTooltip/DefaultChartsAxisTooltipContent.js +168 -0
  50. package/esm/ChartsTooltip/DefaultChartsItemTooltipContent.js +92 -0
  51. package/esm/ChartsTooltip/chartsTooltipClasses.js +5 -0
  52. package/esm/ChartsTooltip/index.js +6 -1
  53. package/esm/ChartsTooltip/utils.js +1 -1
  54. package/esm/ChartsYAxis/ChartsYAxis.js +6 -4
  55. package/esm/LineChart/extremums.js +25 -8
  56. package/esm/LineChart/index.js +5 -5
  57. package/esm/PieChart/PieArc.js +18 -2
  58. package/esm/PieChart/PieArcLabel.js +7 -11
  59. package/esm/PieChart/PieArcLabelPlot.js +92 -3
  60. package/esm/PieChart/PieArcPlot.js +91 -3
  61. package/esm/PieChart/index.js +4 -2
  62. package/esm/ScatterChart/Scatter.js +1 -1
  63. package/esm/ScatterChart/index.js +3 -3
  64. package/esm/internals/defaultizeValueFormatter.js +4 -3
  65. package/index.js +1 -1
  66. package/internals/defaultizeValueFormatter.d.ts +3 -1
  67. package/internals/defaultizeValueFormatter.js +3 -3
  68. package/legacy/BarChart/BarElement.js +26 -2
  69. package/legacy/BarChart/index.js +3 -2
  70. package/legacy/ChartsLegend/index.js +2 -1
  71. package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +95 -70
  72. package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +40 -51
  73. package/legacy/ChartsTooltip/ChartsTooltip.js +20 -12
  74. package/legacy/ChartsTooltip/ChartsTooltipTable.js +3 -3
  75. package/legacy/ChartsTooltip/DefaultChartsAxisTooltipContent.js +167 -0
  76. package/legacy/ChartsTooltip/DefaultChartsItemTooltipContent.js +89 -0
  77. package/legacy/ChartsTooltip/chartsTooltipClasses.js +5 -0
  78. package/legacy/ChartsTooltip/index.js +6 -1
  79. package/legacy/ChartsTooltip/utils.js +1 -1
  80. package/legacy/ChartsYAxis/ChartsYAxis.js +6 -4
  81. package/legacy/LineChart/extremums.js +29 -14
  82. package/legacy/LineChart/index.js +5 -5
  83. package/legacy/PieChart/PieArc.js +18 -2
  84. package/legacy/PieChart/PieArcLabel.js +7 -11
  85. package/legacy/PieChart/PieArcLabelPlot.js +92 -3
  86. package/legacy/PieChart/PieArcPlot.js +91 -3
  87. package/legacy/PieChart/index.js +4 -2
  88. package/legacy/ScatterChart/Scatter.js +1 -1
  89. package/legacy/ScatterChart/index.js +3 -3
  90. package/legacy/index.js +1 -1
  91. package/legacy/internals/defaultizeValueFormatter.js +4 -3
  92. package/models/seriesType/config.d.ts +5 -1
  93. package/models/seriesType/scatter.d.ts +1 -1
  94. package/modern/BarChart/BarElement.js +26 -2
  95. package/modern/BarChart/index.js +3 -2
  96. package/modern/ChartsLegend/index.js +2 -1
  97. package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +95 -70
  98. package/modern/ChartsTooltip/ChartsItemTooltipContent.js +40 -54
  99. package/modern/ChartsTooltip/ChartsTooltip.js +15 -7
  100. package/modern/ChartsTooltip/ChartsTooltipTable.js +3 -3
  101. package/modern/ChartsTooltip/DefaultChartsAxisTooltipContent.js +167 -0
  102. package/modern/ChartsTooltip/DefaultChartsItemTooltipContent.js +92 -0
  103. package/modern/ChartsTooltip/chartsTooltipClasses.js +5 -0
  104. package/modern/ChartsTooltip/index.js +6 -1
  105. package/modern/ChartsTooltip/utils.js +1 -1
  106. package/modern/ChartsYAxis/ChartsYAxis.js +6 -4
  107. package/modern/LineChart/extremums.js +25 -8
  108. package/modern/LineChart/index.js +5 -5
  109. package/modern/PieChart/PieArc.js +18 -2
  110. package/modern/PieChart/PieArcLabel.js +7 -11
  111. package/modern/PieChart/PieArcLabelPlot.js +92 -3
  112. package/modern/PieChart/PieArcPlot.js +91 -3
  113. package/modern/PieChart/index.js +4 -2
  114. package/modern/ScatterChart/Scatter.js +1 -1
  115. package/modern/ScatterChart/index.js +3 -3
  116. package/modern/index.js +1 -1
  117. package/modern/internals/defaultizeValueFormatter.js +3 -3
  118. package/package.json +1 -1
  119. package/themeAugmentation/components.d.ts +1 -0
  120. package/themeAugmentation/overrides.d.ts +2 -0
  121. package/ChartsTooltip/tooltipClasses.d.ts +0 -13
  122. package/ChartsTooltip/tooltipClasses.js +0 -12
  123. package/esm/ChartsTooltip/tooltipClasses.js +0 -5
  124. package/legacy/ChartsTooltip/tooltipClasses.js +0 -5
  125. package/modern/ChartsTooltip/tooltipClasses.js +0 -5
@@ -1,2 +1,3 @@
1
- export { BarPlot } from './BarPlot';
2
- export { BarChart } from './BarChart';
1
+ export * from './BarChart';
2
+ export * from './BarPlot';
3
+ export * from './BarElement';
@@ -1,2 +1,3 @@
1
1
  export * from './ChartsLegend';
2
- export * from './chartsLegendClasses';
2
+ export * from './chartsLegendClasses';
3
+ export * from './utils';
@@ -1,78 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
- import Typography from '@mui/material/Typography';
3
+ import PropTypes from 'prop-types';
4
4
  import { useSlotProps } from '@mui/base/utils';
5
5
  import { SeriesContext } from '../context/SeriesContextProvider';
6
6
  import { CartesianContext } from '../context/CartesianContextProvider';
7
- import { ChartsTooltipCell, ChartsTooltipPaper, ChartsTooltipTable, ChartsTooltipMark, ChartsTooltipRow } from './ChartsTooltipTable';
7
+ import { DefaultChartsAxisTooltipContent } from './DefaultChartsAxisTooltipContent';
8
8
  import { jsx as _jsx } from "react/jsx-runtime";
9
- import { jsxs as _jsxs } from "react/jsx-runtime";
10
- export function DefaultChartsAxisContent(props) {
11
- var _axis$valueFormatter;
12
- const {
13
- series,
14
- axis,
15
- dataIndex,
16
- axisValue,
17
- sx,
18
- classes
19
- } = props;
20
- if (dataIndex == null) {
21
- return null;
22
- }
23
- const axisFormatter = (_axis$valueFormatter = axis.valueFormatter) != null ? _axis$valueFormatter : v => v.toLocaleString();
24
- return /*#__PURE__*/_jsx(ChartsTooltipPaper, {
25
- sx: sx,
26
- className: classes.root,
27
- children: /*#__PURE__*/_jsxs(ChartsTooltipTable, {
28
- children: [axisValue != null && !axis.hideTooltip && /*#__PURE__*/_jsx("thead", {
29
- children: /*#__PURE__*/_jsx(ChartsTooltipRow, {
30
- children: /*#__PURE__*/_jsx(ChartsTooltipCell, {
31
- colSpan: 3,
32
- children: /*#__PURE__*/_jsx(Typography, {
33
- children: axisFormatter(axisValue)
34
- })
35
- })
36
- })
37
- }), /*#__PURE__*/_jsx("tbody", {
38
- children: series.map(({
39
- color,
40
- id,
41
- label,
42
- valueFormatter,
43
- data
44
- }) => {
45
- const formattedValue = valueFormatter(data[dataIndex]);
46
- if (formattedValue == null) {
47
- return null;
48
- }
49
- return /*#__PURE__*/_jsxs(ChartsTooltipRow, {
50
- children: [/*#__PURE__*/_jsx(ChartsTooltipCell, {
51
- className: classes.markCell,
52
- children: /*#__PURE__*/_jsx(ChartsTooltipMark, {
53
- ownerState: {
54
- color
55
- },
56
- boxShadow: 1
57
- })
58
- }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
59
- className: classes.labelCell,
60
- children: label ? /*#__PURE__*/_jsx(Typography, {
61
- children: label
62
- }) : null
63
- }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
64
- className: classes.valueCell,
65
- children: /*#__PURE__*/_jsx(Typography, {
66
- children: formattedValue
67
- })
68
- })]
69
- }, id);
70
- })
71
- })]
72
- })
73
- });
74
- }
75
- export function ChartsAxisTooltipContent(props) {
9
+ function ChartsAxisTooltipContent(props) {
76
10
  const {
77
11
  content,
78
12
  contentProps,
@@ -107,7 +41,7 @@ export function ChartsAxisTooltipContent(props) {
107
41
  const relevantAxis = React.useMemo(() => {
108
42
  return isXaxis ? xAxis[USED_AXIS_ID] : yAxis[USED_AXIS_ID];
109
43
  }, [USED_AXIS_ID, isXaxis, xAxis, yAxis]);
110
- const Content = content != null ? content : DefaultChartsAxisContent;
44
+ const Content = content != null ? content : DefaultChartsAxisTooltipContent;
111
45
  const chartTooltipContentProps = useSlotProps({
112
46
  elementType: Content,
113
47
  externalSlotProps: contentProps,
@@ -123,4 +57,94 @@ export function ChartsAxisTooltipContent(props) {
123
57
  ownerState: {}
124
58
  });
125
59
  return /*#__PURE__*/_jsx(Content, _extends({}, chartTooltipContentProps));
126
- }
60
+ }
61
+ process.env.NODE_ENV !== "production" ? ChartsAxisTooltipContent.propTypes = {
62
+ // ----------------------------- Warning --------------------------------
63
+ // | These PropTypes are generated from the TypeScript type definitions |
64
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
65
+ // ----------------------------------------------------------------------
66
+ axisData: PropTypes.shape({
67
+ x: PropTypes.shape({
68
+ index: PropTypes.number,
69
+ value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired
70
+ }),
71
+ y: PropTypes.shape({
72
+ index: PropTypes.number,
73
+ value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired
74
+ })
75
+ }).isRequired,
76
+ classes: PropTypes.object.isRequired,
77
+ content: PropTypes.elementType,
78
+ contentProps: PropTypes.shape({
79
+ axis: PropTypes.shape({
80
+ axisId: PropTypes.string,
81
+ classes: PropTypes.object,
82
+ data: PropTypes.array,
83
+ dataKey: PropTypes.string,
84
+ disableLine: PropTypes.bool,
85
+ disableTicks: PropTypes.bool,
86
+ fill: PropTypes.string,
87
+ hideTooltip: PropTypes.bool,
88
+ id: PropTypes.string.isRequired,
89
+ label: PropTypes.string,
90
+ labelFontSize: PropTypes.number,
91
+ labelStyle: PropTypes.object,
92
+ max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
93
+ min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
94
+ position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
95
+ scale: PropTypes.func.isRequired,
96
+ scaleType: PropTypes.oneOf(['time']).isRequired,
97
+ slotProps: PropTypes.object,
98
+ slots: PropTypes.object,
99
+ stroke: PropTypes.string,
100
+ tickFontSize: PropTypes.number,
101
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
102
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
103
+ tickLabelStyle: PropTypes.object,
104
+ tickMaxStep: PropTypes.number,
105
+ tickMinStep: PropTypes.number,
106
+ tickNumber: PropTypes.number.isRequired,
107
+ tickSize: PropTypes.number,
108
+ valueFormatter: PropTypes.func
109
+ }),
110
+ axisData: PropTypes.shape({
111
+ x: PropTypes.shape({
112
+ index: PropTypes.number,
113
+ value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired
114
+ }),
115
+ y: PropTypes.shape({
116
+ index: PropTypes.number,
117
+ value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired
118
+ })
119
+ }),
120
+ axisValue: PropTypes.any,
121
+ classes: PropTypes.object,
122
+ dataIndex: PropTypes.number,
123
+ series: PropTypes.arrayOf(PropTypes.shape({
124
+ area: PropTypes.bool,
125
+ color: PropTypes.string.isRequired,
126
+ connectNulls: PropTypes.bool,
127
+ curve: PropTypes.oneOf(['catmullRom', 'linear', 'monotoneX', 'monotoneY', 'natural', 'step', 'stepAfter', 'stepBefore']),
128
+ data: PropTypes.arrayOf(PropTypes.number).isRequired,
129
+ dataKey: PropTypes.string,
130
+ disableHighlight: PropTypes.bool,
131
+ highlightScope: PropTypes.shape({
132
+ faded: PropTypes.oneOf(['global', 'none', 'series']),
133
+ highlighted: PropTypes.oneOf(['item', 'none', 'series'])
134
+ }),
135
+ id: PropTypes.string.isRequired,
136
+ label: PropTypes.string,
137
+ showMark: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),
138
+ stack: PropTypes.string,
139
+ stackOffset: PropTypes.oneOf(['diverging', 'expand', 'none', 'silhouette', 'wiggle']),
140
+ stackOrder: PropTypes.oneOf(['appearance', 'ascending', 'descending', 'insideOut', 'none', 'reverse']),
141
+ type: PropTypes.oneOf(['line']).isRequired,
142
+ valueFormatter: PropTypes.func.isRequired,
143
+ xAxisKey: PropTypes.string,
144
+ yAxisKey: PropTypes.string
145
+ })),
146
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
147
+ }),
148
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
149
+ } : void 0;
150
+ export { ChartsAxisTooltipContent };
@@ -1,60 +1,11 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import PropTypes from 'prop-types';
3
4
  import { useSlotProps } from '@mui/base/utils';
4
5
  import { SeriesContext } from '../context/SeriesContextProvider';
5
- import { ChartsTooltipTable, ChartsTooltipCell, ChartsTooltipMark, ChartsTooltipPaper, ChartsTooltipRow } from './ChartsTooltipTable';
6
+ import { DefaultChartsItemTooltipContent } from './DefaultChartsItemTooltipContent';
6
7
  import { jsx as _jsx } from "react/jsx-runtime";
7
- import { jsxs as _jsxs } from "react/jsx-runtime";
8
- export function DefaultChartsItemContent(props) {
9
- const {
10
- series,
11
- itemData,
12
- sx,
13
- classes
14
- } = props;
15
- if (itemData.dataIndex === undefined) {
16
- return null;
17
- }
18
- const {
19
- displayedLabel,
20
- color
21
- } = series.type === 'pie' ? {
22
- color: series.data[itemData.dataIndex].color,
23
- displayedLabel: series.data[itemData.dataIndex].label
24
- } : {
25
- color: series.color,
26
- displayedLabel: series.label
27
- };
28
-
29
- // TODO: Manage to let TS understand series.data and series.valueFormatter are coherent
30
- // @ts-ignore
31
- const formattedValue = series.valueFormatter(series.data[itemData.dataIndex]);
32
- return /*#__PURE__*/_jsx(ChartsTooltipPaper, {
33
- sx: sx,
34
- className: classes.root,
35
- children: /*#__PURE__*/_jsx(ChartsTooltipTable, {
36
- children: /*#__PURE__*/_jsx("tbody", {
37
- children: /*#__PURE__*/_jsxs(ChartsTooltipRow, {
38
- children: [/*#__PURE__*/_jsx(ChartsTooltipCell, {
39
- className: classes.markCell,
40
- children: /*#__PURE__*/_jsx(ChartsTooltipMark, {
41
- ownerState: {
42
- color
43
- }
44
- })
45
- }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
46
- className: classes.labelCell,
47
- children: displayedLabel
48
- }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
49
- className: classes.valueCell,
50
- children: formattedValue
51
- })]
52
- })
53
- })
54
- })
55
- });
56
- }
57
- export function ChartsItemTooltipContent(props) {
8
+ function ChartsItemTooltipContent(props) {
58
9
  const {
59
10
  content,
60
11
  itemData,
@@ -63,7 +14,7 @@ export function ChartsItemTooltipContent(props) {
63
14
  contentProps
64
15
  } = props;
65
16
  const series = React.useContext(SeriesContext)[itemData.type].series[itemData.seriesId];
66
- const Content = content != null ? content : DefaultChartsItemContent;
17
+ const Content = content != null ? content : DefaultChartsItemTooltipContent;
67
18
  const chartTooltipContentProps = useSlotProps({
68
19
  elementType: Content,
69
20
  externalSlotProps: contentProps,
@@ -76,4 +27,39 @@ export function ChartsItemTooltipContent(props) {
76
27
  ownerState: {}
77
28
  });
78
29
  return /*#__PURE__*/_jsx(Content, _extends({}, chartTooltipContentProps));
79
- }
30
+ }
31
+ process.env.NODE_ENV !== "production" ? ChartsItemTooltipContent.propTypes = {
32
+ // ----------------------------- Warning --------------------------------
33
+ // | These PropTypes are generated from the TypeScript type definitions |
34
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
35
+ // ----------------------------------------------------------------------
36
+ classes: PropTypes.object.isRequired,
37
+ content: PropTypes.elementType,
38
+ contentProps: PropTypes.shape({
39
+ classes: PropTypes.object,
40
+ itemData: PropTypes.shape({
41
+ dataIndex: PropTypes.number,
42
+ seriesId: PropTypes.string.isRequired,
43
+ type: PropTypes.oneOf(['bar', 'line', 'pie', 'scatter']).isRequired
44
+ }),
45
+ series: PropTypes.shape({
46
+ color: PropTypes.string,
47
+ data: PropTypes.arrayOf(PropTypes.number).isRequired,
48
+ highlightScope: PropTypes.shape({
49
+ faded: PropTypes.oneOf(['global', 'none', 'series']),
50
+ highlighted: PropTypes.oneOf(['item', 'none', 'series'])
51
+ }),
52
+ id: PropTypes.string.isRequired,
53
+ type: PropTypes.oneOf(['bar', 'line', 'pie', 'scatter']).isRequired,
54
+ valueFormatter: PropTypes.func.isRequired
55
+ }),
56
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
57
+ }),
58
+ itemData: PropTypes.shape({
59
+ dataIndex: PropTypes.number,
60
+ seriesId: PropTypes.string.isRequired,
61
+ type: PropTypes.oneOf(['bar', 'line', 'pie', 'scatter']).isRequired
62
+ }).isRequired,
63
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
64
+ } : void 0;
65
+ export { ChartsItemTooltipContent };
@@ -2,15 +2,15 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import composeClasses from '@mui/utils/composeClasses';
5
- import { styled } from '@mui/material/styles';
5
+ import { styled, useThemeProps } from '@mui/material/styles';
6
6
  import { Popper } from '@mui/base/Popper';
7
7
  import { NoSsr } from '@mui/base/NoSsr';
8
8
  import { useSlotProps } from '@mui/base/utils';
9
9
  import { InteractionContext } from '../context/InteractionProvider';
10
- import { generateVirtualElement, useMouseTracker, getTootipHasData } from './utils';
10
+ import { generateVirtualElement, useMouseTracker, getTooltipHasData } from './utils';
11
11
  import { ChartsItemTooltipContent } from './ChartsItemTooltipContent';
12
12
  import { ChartsAxisTooltipContent } from './ChartsAxisTooltipContent';
13
- import { getTooltipUtilityClass } from './tooltipClasses';
13
+ import { getChartsTooltipUtilityClass } from './chartsTooltipClasses';
14
14
  import { jsx as _jsx } from "react/jsx-runtime";
15
15
  const useUtilityClasses = ownerState => {
16
16
  const {
@@ -18,11 +18,15 @@ const useUtilityClasses = ownerState => {
18
18
  } = ownerState;
19
19
  const slots = {
20
20
  root: ['root'],
21
+ table: ['table'],
22
+ row: ['row'],
23
+ cell: ['cell'],
24
+ mark: ['mark'],
21
25
  markCell: ['markCell'],
22
26
  labelCell: ['labelCell'],
23
27
  valueCell: ['valueCell']
24
28
  };
25
- return composeClasses(slots, getTooltipUtilityClass, classes);
29
+ return composeClasses(slots, getChartsTooltipUtilityClass, classes);
26
30
  };
27
31
  const ChartsTooltipRoot = styled(Popper, {
28
32
  name: 'MuiChartsTooltip',
@@ -46,23 +50,27 @@ const ChartsTooltipRoot = styled(Popper, {
46
50
  */
47
51
  function ChartsTooltip(props) {
48
52
  var _slots$popper, _slots$itemContent, _slots$axisContent;
53
+ const themeProps = useThemeProps({
54
+ props,
55
+ name: 'MuiChartsTooltip'
56
+ });
49
57
  const {
50
58
  trigger = 'axis',
51
59
  itemContent,
52
60
  axisContent,
53
61
  slots,
54
62
  slotProps
55
- } = props;
63
+ } = themeProps;
56
64
  const mousePosition = useMouseTracker();
57
65
  const {
58
66
  item,
59
67
  axis
60
68
  } = React.useContext(InteractionContext);
61
69
  const displayedData = trigger === 'item' ? item : axis;
62
- const tooltipHasData = getTootipHasData(trigger, displayedData);
70
+ const tooltipHasData = getTooltipHasData(trigger, displayedData);
63
71
  const popperOpen = mousePosition !== null && tooltipHasData;
64
72
  const classes = useUtilityClasses({
65
- classes: props.classes
73
+ classes: themeProps.classes
66
74
  });
67
75
  const PopperComponent = (_slots$popper = slots == null ? void 0 : slots.popper) != null ? _slots$popper : ChartsTooltipRoot;
68
76
  const popperProps = useSlotProps({
@@ -1,6 +1,6 @@
1
1
  import Box from '@mui/system/Box';
2
2
  import { styled } from '@mui/material/styles';
3
- import { tooltipClasses } from './tooltipClasses';
3
+ import { chartsTooltipClasses } from './chartsTooltipClasses';
4
4
  export const ChartsTooltipPaper = styled('div', {
5
5
  name: 'MuiChartsTooltip',
6
6
  slot: 'Container'
@@ -45,10 +45,10 @@ export const ChartsTooltipCell = styled('td', {
45
45
  }) => ({
46
46
  verticalAlign: 'middle',
47
47
  color: (theme.vars || theme).palette.text.secondary,
48
- [`&.${tooltipClasses.labelCell}`]: {
48
+ [`&.${chartsTooltipClasses.labelCell}`]: {
49
49
  paddingLeft: theme.spacing(1)
50
50
  },
51
- [`&.${tooltipClasses.valueCell}`]: {
51
+ [`&.${chartsTooltipClasses.valueCell}`]: {
52
52
  paddingLeft: theme.spacing(4),
53
53
  color: (theme.vars || theme).palette.text.primary
54
54
  },
@@ -0,0 +1,168 @@
1
+ import * as React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import clsx from 'clsx';
4
+ import Typography from '@mui/material/Typography';
5
+ import { ChartsTooltipCell, ChartsTooltipPaper, ChartsTooltipTable, ChartsTooltipMark, ChartsTooltipRow } from './ChartsTooltipTable';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ import { jsxs as _jsxs } from "react/jsx-runtime";
8
+ function DefaultChartsAxisTooltipContent(props) {
9
+ var _axis$valueFormatter;
10
+ const {
11
+ series,
12
+ axis,
13
+ dataIndex,
14
+ axisValue,
15
+ sx,
16
+ classes
17
+ } = props;
18
+ if (dataIndex == null) {
19
+ return null;
20
+ }
21
+ const axisFormatter = (_axis$valueFormatter = axis.valueFormatter) != null ? _axis$valueFormatter : v => v.toLocaleString();
22
+ return /*#__PURE__*/_jsx(ChartsTooltipPaper, {
23
+ sx: sx,
24
+ className: classes.root,
25
+ children: /*#__PURE__*/_jsxs(ChartsTooltipTable, {
26
+ className: classes.table,
27
+ children: [axisValue != null && !axis.hideTooltip && /*#__PURE__*/_jsx("thead", {
28
+ children: /*#__PURE__*/_jsx(ChartsTooltipRow, {
29
+ children: /*#__PURE__*/_jsx(ChartsTooltipCell, {
30
+ colSpan: 3,
31
+ children: /*#__PURE__*/_jsx(Typography, {
32
+ children: axisFormatter(axisValue)
33
+ })
34
+ })
35
+ })
36
+ }), /*#__PURE__*/_jsx("tbody", {
37
+ children: series.map(({
38
+ color,
39
+ id,
40
+ label,
41
+ valueFormatter,
42
+ data
43
+ }) => {
44
+ const formattedValue = valueFormatter(data[dataIndex]);
45
+ if (formattedValue == null) {
46
+ return null;
47
+ }
48
+ return /*#__PURE__*/_jsxs(ChartsTooltipRow, {
49
+ className: classes.row,
50
+ children: [/*#__PURE__*/_jsx(ChartsTooltipCell, {
51
+ className: clsx(classes.markCell, classes.cell),
52
+ children: /*#__PURE__*/_jsx(ChartsTooltipMark, {
53
+ ownerState: {
54
+ color
55
+ },
56
+ boxShadow: 1,
57
+ className: classes.mark
58
+ })
59
+ }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
60
+ className: clsx(classes.labelCell, classes.cell),
61
+ children: label ? /*#__PURE__*/_jsx(Typography, {
62
+ children: label
63
+ }) : null
64
+ }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
65
+ className: clsx(classes.valueCell, classes.cell),
66
+ children: /*#__PURE__*/_jsx(Typography, {
67
+ children: formattedValue
68
+ })
69
+ })]
70
+ }, id);
71
+ })
72
+ })]
73
+ })
74
+ });
75
+ }
76
+ process.env.NODE_ENV !== "production" ? DefaultChartsAxisTooltipContent.propTypes = {
77
+ // ----------------------------- Warning --------------------------------
78
+ // | These PropTypes are generated from the TypeScript type definitions |
79
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
80
+ // ----------------------------------------------------------------------
81
+ /**
82
+ * The properties of the triggered axis.
83
+ */
84
+ axis: PropTypes.shape({
85
+ axisId: PropTypes.string,
86
+ classes: PropTypes.object,
87
+ data: PropTypes.array,
88
+ dataKey: PropTypes.string,
89
+ disableLine: PropTypes.bool,
90
+ disableTicks: PropTypes.bool,
91
+ fill: PropTypes.string,
92
+ hideTooltip: PropTypes.bool,
93
+ id: PropTypes.string.isRequired,
94
+ label: PropTypes.string,
95
+ labelFontSize: PropTypes.number,
96
+ labelStyle: PropTypes.object,
97
+ max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
98
+ min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
99
+ position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
100
+ scale: PropTypes.func.isRequired,
101
+ scaleType: PropTypes.oneOf(['time']).isRequired,
102
+ slotProps: PropTypes.object,
103
+ slots: PropTypes.object,
104
+ stroke: PropTypes.string,
105
+ tickFontSize: PropTypes.number,
106
+ tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
107
+ tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
108
+ tickLabelStyle: PropTypes.object,
109
+ tickMaxStep: PropTypes.number,
110
+ tickMinStep: PropTypes.number,
111
+ tickNumber: PropTypes.number.isRequired,
112
+ tickSize: PropTypes.number,
113
+ valueFormatter: PropTypes.func
114
+ }).isRequired,
115
+ /**
116
+ * Data identifying the triggered axis.
117
+ */
118
+ axisData: PropTypes.shape({
119
+ x: PropTypes.shape({
120
+ index: PropTypes.number,
121
+ value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired
122
+ }),
123
+ y: PropTypes.shape({
124
+ index: PropTypes.number,
125
+ value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]).isRequired
126
+ })
127
+ }).isRequired,
128
+ /**
129
+ * The value associated to the current mouse position.
130
+ */
131
+ axisValue: PropTypes.any.isRequired,
132
+ /**
133
+ * Override or extend the styles applied to the component.
134
+ */
135
+ classes: PropTypes.object.isRequired,
136
+ /**
137
+ * The index of the data item triggered.
138
+ */
139
+ dataIndex: PropTypes.number,
140
+ /**
141
+ * The series linked to the triggered axis.
142
+ */
143
+ series: PropTypes.arrayOf(PropTypes.shape({
144
+ area: PropTypes.bool,
145
+ color: PropTypes.string.isRequired,
146
+ connectNulls: PropTypes.bool,
147
+ curve: PropTypes.oneOf(['catmullRom', 'linear', 'monotoneX', 'monotoneY', 'natural', 'step', 'stepAfter', 'stepBefore']),
148
+ data: PropTypes.arrayOf(PropTypes.number).isRequired,
149
+ dataKey: PropTypes.string,
150
+ disableHighlight: PropTypes.bool,
151
+ highlightScope: PropTypes.shape({
152
+ faded: PropTypes.oneOf(['global', 'none', 'series']),
153
+ highlighted: PropTypes.oneOf(['item', 'none', 'series'])
154
+ }),
155
+ id: PropTypes.string.isRequired,
156
+ label: PropTypes.string,
157
+ showMark: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),
158
+ stack: PropTypes.string,
159
+ stackOffset: PropTypes.oneOf(['diverging', 'expand', 'none', 'silhouette', 'wiggle']),
160
+ stackOrder: PropTypes.oneOf(['appearance', 'ascending', 'descending', 'insideOut', 'none', 'reverse']),
161
+ type: PropTypes.oneOf(['line']).isRequired,
162
+ valueFormatter: PropTypes.func.isRequired,
163
+ xAxisKey: PropTypes.string,
164
+ yAxisKey: PropTypes.string
165
+ })).isRequired,
166
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
167
+ } : void 0;
168
+ export { DefaultChartsAxisTooltipContent };
@@ -0,0 +1,92 @@
1
+ import * as React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import clsx from 'clsx';
4
+ import { ChartsTooltipTable, ChartsTooltipCell, ChartsTooltipMark, ChartsTooltipPaper, ChartsTooltipRow } from './ChartsTooltipTable';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { jsxs as _jsxs } from "react/jsx-runtime";
7
+ function DefaultChartsItemTooltipContent(props) {
8
+ const {
9
+ series,
10
+ itemData,
11
+ sx,
12
+ classes
13
+ } = props;
14
+ if (itemData.dataIndex === undefined) {
15
+ return null;
16
+ }
17
+ const {
18
+ displayedLabel,
19
+ color
20
+ } = series.type === 'pie' ? {
21
+ color: series.data[itemData.dataIndex].color,
22
+ displayedLabel: series.data[itemData.dataIndex].label
23
+ } : {
24
+ color: series.color,
25
+ displayedLabel: series.label
26
+ };
27
+
28
+ // TODO: Manage to let TS understand series.data and series.valueFormatter are coherent
29
+ // @ts-ignore
30
+ const formattedValue = series.valueFormatter(series.data[itemData.dataIndex]);
31
+ return /*#__PURE__*/_jsx(ChartsTooltipPaper, {
32
+ sx: sx,
33
+ className: classes.root,
34
+ children: /*#__PURE__*/_jsx(ChartsTooltipTable, {
35
+ className: classes.table,
36
+ children: /*#__PURE__*/_jsx("tbody", {
37
+ children: /*#__PURE__*/_jsxs(ChartsTooltipRow, {
38
+ className: classes.row,
39
+ children: [/*#__PURE__*/_jsx(ChartsTooltipCell, {
40
+ className: clsx(classes.markCell, classes.cell),
41
+ children: /*#__PURE__*/_jsx(ChartsTooltipMark, {
42
+ ownerState: {
43
+ color
44
+ },
45
+ className: classes.mark
46
+ })
47
+ }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
48
+ className: clsx(classes.labelCell, classes.cell),
49
+ children: displayedLabel
50
+ }), /*#__PURE__*/_jsx(ChartsTooltipCell, {
51
+ className: clsx(classes.valueCell, classes.cell),
52
+ children: formattedValue
53
+ })]
54
+ })
55
+ })
56
+ })
57
+ });
58
+ }
59
+ process.env.NODE_ENV !== "production" ? DefaultChartsItemTooltipContent.propTypes = {
60
+ // ----------------------------- Warning --------------------------------
61
+ // | These PropTypes are generated from the TypeScript type definitions |
62
+ // | To update them edit the TypeScript types and run "yarn proptypes" |
63
+ // ----------------------------------------------------------------------
64
+ /**
65
+ * Override or extend the styles applied to the component.
66
+ */
67
+ classes: PropTypes.object.isRequired,
68
+ /**
69
+ * The data used to identify the triggered item.
70
+ */
71
+ itemData: PropTypes.shape({
72
+ dataIndex: PropTypes.number,
73
+ seriesId: PropTypes.string.isRequired,
74
+ type: PropTypes.oneOf(['bar', 'line', 'pie', 'scatter']).isRequired
75
+ }).isRequired,
76
+ /**
77
+ * The series linked to the triggered axis.
78
+ */
79
+ series: PropTypes.shape({
80
+ color: PropTypes.string,
81
+ data: PropTypes.arrayOf(PropTypes.number).isRequired,
82
+ highlightScope: PropTypes.shape({
83
+ faded: PropTypes.oneOf(['global', 'none', 'series']),
84
+ highlighted: PropTypes.oneOf(['item', 'none', 'series'])
85
+ }),
86
+ id: PropTypes.string.isRequired,
87
+ type: PropTypes.oneOf(['bar', 'line', 'pie', 'scatter']).isRequired,
88
+ valueFormatter: PropTypes.func.isRequired
89
+ }).isRequired,
90
+ sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])
91
+ } : void 0;
92
+ export { DefaultChartsItemTooltipContent };
@@ -0,0 +1,5 @@
1
+ import { unstable_generateUtilityClass as generateUtilityClass, unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';
2
+ export function getChartsTooltipUtilityClass(slot) {
3
+ return generateUtilityClass('MuiChartsTooltip', slot);
4
+ }
5
+ export const chartsTooltipClasses = generateUtilityClasses('MuiChartsTooltip', ['root', 'table', 'row', 'cell', 'mark', 'markCell', 'labelCell', 'valueCell']);
@@ -1 +1,6 @@
1
- export * from './ChartsTooltip';
1
+ export * from './ChartsTooltip';
2
+ export * from './chartsTooltipClasses';
3
+ export * from './ChartsAxisTooltipContent';
4
+ export * from './ChartsItemTooltipContent';
5
+ export * from './DefaultChartsAxisTooltipContent';
6
+ export * from './DefaultChartsItemTooltipContent';