@mui/x-charts 6.0.0-alpha.9 → 6.18.1
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.
- package/BarChart/BarChart.d.ts +26 -5
- package/BarChart/BarChart.js +93 -17
- package/BarChart/BarElement.d.ts +1319 -4
- package/BarChart/BarElement.js +10 -10
- package/BarChart/BarPlot.d.ts +17 -1
- package/BarChart/BarPlot.js +152 -66
- package/BarChart/formatter.js +2 -3
- package/BarChart/legend.js +1 -2
- package/CHANGELOG.md +797 -59
- package/ChartContainer/index.js +7 -5
- package/ChartsAxis/ChartsAxis.d.ts +9 -0
- package/ChartsAxis/ChartsAxis.js +33 -7
- package/ChartsAxis/axisClasses.d.ts +3 -3
- package/ChartsAxis/axisClasses.js +1 -2
- package/ChartsAxisHighlight/ChartsAxisHighlight.d.ts +21 -0
- package/ChartsAxisHighlight/ChartsAxisHighlight.js +61 -22
- package/ChartsClipPath/ChartsClipPath.d.ts +5 -0
- package/ChartsClipPath/ChartsClipPath.js +7 -2
- package/ChartsLegend/ChartsLegend.d.ts +45 -24
- package/ChartsLegend/ChartsLegend.js +193 -151
- package/ChartsLegend/chartsLegendClasses.d.ts +1 -1
- package/ChartsLegend/chartsLegendClasses.js +3 -4
- package/ChartsLegend/utils.d.ts +1 -6
- package/ChartsReferenceLine/ChartsReferenceLine.d.ts +10 -0
- package/ChartsReferenceLine/ChartsReferenceLine.js +78 -0
- package/ChartsReferenceLine/ChartsXReferenceLine.d.ts +13 -0
- package/ChartsReferenceLine/ChartsXReferenceLine.js +112 -0
- package/ChartsReferenceLine/ChartsYReferenceLine.d.ts +13 -0
- package/ChartsReferenceLine/ChartsYReferenceLine.js +112 -0
- package/ChartsReferenceLine/chartsReferenceLineClasses.d.ts +15 -0
- package/ChartsReferenceLine/chartsReferenceLineClasses.js +14 -0
- package/ChartsReferenceLine/common.d.ts +41 -0
- package/ChartsReferenceLine/common.js +27 -0
- package/ChartsReferenceLine/index.d.ts +2 -0
- package/ChartsReferenceLine/index.js +27 -0
- package/ChartsReferenceLine/package.json +6 -0
- package/ChartsSurface.d.ts +12 -1
- package/ChartsSurface.js +9 -18
- package/ChartsTooltip/ChartsAxisTooltipContent.d.ts +1 -0
- package/ChartsTooltip/ChartsAxisTooltipContent.js +46 -32
- package/ChartsTooltip/ChartsItemTooltipContent.d.ts +3 -2
- package/ChartsTooltip/ChartsItemTooltipContent.js +18 -9
- package/ChartsTooltip/ChartsTooltip.d.ts +32 -0
- package/ChartsTooltip/ChartsTooltip.js +62 -18
- package/ChartsTooltip/ChartsTooltipTable.d.ts +3 -10
- package/ChartsTooltip/ChartsTooltipTable.js +22 -20
- package/ChartsTooltip/tooltipClasses.js +1 -2
- package/ChartsTooltip/utils.js +2 -2
- package/ChartsXAxis/ChartsXAxis.d.ts +9 -0
- package/ChartsXAxis/ChartsXAxis.js +170 -45
- package/ChartsYAxis/ChartsYAxis.d.ts +9 -0
- package/ChartsYAxis/ChartsYAxis.js +95 -38
- package/LineChart/AreaElement.d.ts +11 -1
- package/LineChart/AreaElement.js +14 -6
- package/LineChart/AreaPlot.d.ts +11 -0
- package/LineChart/AreaPlot.js +27 -8
- package/LineChart/LineChart.d.ts +23 -3
- package/LineChart/LineChart.js +89 -17
- package/LineChart/LineElement.d.ts +11 -1
- package/LineChart/LineElement.js +14 -6
- package/LineChart/LineHighlightElement.d.ts +10 -0
- package/LineChart/LineHighlightElement.js +13 -4
- package/LineChart/LineHighlightPlot.d.ts +10 -0
- package/LineChart/LineHighlightPlot.js +15 -4
- package/LineChart/LinePlot.d.ts +10 -0
- package/LineChart/LinePlot.js +25 -12
- package/LineChart/MarkElement.d.ts +10 -0
- package/LineChart/MarkElement.js +14 -5
- package/LineChart/MarkPlot.d.ts +10 -0
- package/LineChart/MarkPlot.js +42 -10
- package/LineChart/formatter.js +5 -5
- package/LineChart/legend.js +1 -2
- package/PieChart/PieArc.d.ts +11 -13
- package/PieChart/PieArc.js +28 -60
- package/PieChart/PieArcLabel.d.ts +8 -9
- package/PieChart/PieArcLabel.js +46 -38
- package/PieChart/PieArcLabelPlot.d.ts +28 -0
- package/PieChart/PieArcLabelPlot.js +99 -0
- package/PieChart/PieArcPlot.d.ts +35 -0
- package/PieChart/PieArcPlot.js +92 -0
- package/PieChart/PieChart.d.ts +19 -5
- package/PieChart/PieChart.js +95 -18
- package/PieChart/PiePlot.d.ts +15 -9
- package/PieChart/PiePlot.js +77 -55
- package/PieChart/dataTransform/transition.d.ts +4 -0
- package/PieChart/dataTransform/transition.js +136 -0
- package/PieChart/dataTransform/useTransformData.d.ts +15 -0
- package/PieChart/dataTransform/useTransformData.js +67 -0
- package/PieChart/formatter.js +1 -2
- package/PieChart/legend.js +1 -2
- package/README.md +8 -14
- package/ResponsiveChartContainer/index.d.ts +13 -3
- package/ResponsiveChartContainer/index.js +7 -8
- package/ScatterChart/Scatter.d.ts +10 -0
- package/ScatterChart/Scatter.js +12 -2
- package/ScatterChart/ScatterChart.d.ts +16 -3
- package/ScatterChart/ScatterChart.js +77 -16
- package/ScatterChart/ScatterPlot.d.ts +10 -0
- package/ScatterChart/ScatterPlot.js +12 -2
- package/ScatterChart/formatter.js +1 -2
- package/ScatterChart/legend.js +1 -2
- package/SparkLineChart/SparkLineChart.d.ts +12 -3
- package/SparkLineChart/SparkLineChart.js +50 -7
- package/colorPalettes/colorPalettes.js +6 -12
- package/constants.js +5 -8
- package/context/CartesianContextProvider.d.ts +26 -1
- package/context/CartesianContextProvider.js +42 -16
- package/context/DrawingProvider.d.ts +25 -0
- package/context/DrawingProvider.js +18 -6
- package/context/HighlightProvider.d.ts +17 -0
- package/context/HighlightProvider.js +3 -4
- package/context/InteractionProvider.d.ts +6 -0
- package/context/InteractionProvider.js +3 -4
- package/context/SeriesContextProvider.d.ts +5 -0
- package/context/SeriesContextProvider.js +3 -4
- package/esm/BarChart/BarChart.js +90 -13
- package/esm/BarChart/BarElement.js +7 -4
- package/esm/BarChart/BarPlot.js +152 -67
- package/esm/BarChart/formatter.js +1 -1
- package/esm/ChartContainer/index.js +3 -0
- package/esm/ChartsAxis/ChartsAxis.js +32 -5
- package/esm/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
- package/esm/ChartsClipPath/ChartsClipPath.js +5 -0
- package/esm/ChartsLegend/ChartsLegend.js +190 -144
- package/esm/ChartsLegend/chartsLegendClasses.js +1 -1
- package/esm/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
- package/esm/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
- package/esm/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
- package/esm/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
- package/esm/ChartsReferenceLine/common.js +20 -0
- package/esm/ChartsReferenceLine/index.js +2 -0
- package/esm/ChartsSurface.js +4 -12
- package/esm/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
- package/esm/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
- package/esm/ChartsTooltip/ChartsTooltip.js +59 -14
- package/esm/ChartsTooltip/ChartsTooltipTable.js +17 -10
- package/esm/ChartsXAxis/ChartsXAxis.js +168 -43
- package/esm/ChartsYAxis/ChartsYAxis.js +93 -36
- package/esm/LineChart/AreaElement.js +10 -0
- package/esm/LineChart/AreaPlot.js +26 -6
- package/esm/LineChart/LineChart.js +86 -13
- package/esm/LineChart/LineElement.js +10 -0
- package/esm/LineChart/LineHighlightElement.js +10 -0
- package/esm/LineChart/LineHighlightPlot.js +13 -2
- package/esm/LineChart/LinePlot.js +25 -14
- package/esm/LineChart/MarkElement.js +11 -1
- package/esm/LineChart/MarkPlot.js +40 -8
- package/esm/LineChart/formatter.js +7 -3
- package/esm/PieChart/PieArc.js +26 -58
- package/esm/PieChart/PieArcLabel.js +43 -34
- package/esm/PieChart/PieArcLabelPlot.js +92 -0
- package/esm/PieChart/PieArcPlot.js +84 -0
- package/esm/PieChart/PieChart.js +93 -16
- package/esm/PieChart/PiePlot.js +76 -57
- package/esm/PieChart/dataTransform/transition.js +130 -0
- package/esm/PieChart/dataTransform/useTransformData.js +59 -0
- package/esm/ResponsiveChartContainer/index.js +3 -3
- package/esm/ScatterChart/Scatter.js +10 -0
- package/esm/ScatterChart/ScatterChart.js +74 -12
- package/esm/ScatterChart/ScatterPlot.js +10 -0
- package/esm/SparkLineChart/SparkLineChart.js +47 -3
- package/esm/constants.js +1 -1
- package/esm/context/CartesianContextProvider.js +41 -14
- package/esm/context/DrawingProvider.js +14 -0
- package/esm/hooks/useChartDimensions.js +2 -0
- package/esm/hooks/useMounted.js +16 -0
- package/esm/hooks/useReducedMotion.js +27 -0
- package/esm/hooks/useTicks.js +15 -9
- package/esm/index.js +1 -0
- package/esm/internals/components/AxisSharedComponents.js +15 -70
- package/esm/internals/components/ChartsText.js +77 -0
- package/esm/internals/domUtils.js +113 -0
- package/esm/internals/geometry.js +36 -0
- package/hooks/useAxisEvents.js +2 -2
- package/hooks/useChartDimensions.d.ts +2 -0
- package/hooks/useChartDimensions.js +5 -4
- package/hooks/useDrawingArea.js +2 -2
- package/hooks/useInteractionItemProps.js +2 -2
- package/hooks/useMounted.d.ts +1 -0
- package/hooks/useMounted.js +25 -0
- package/hooks/useReducedMotion.d.ts +8 -0
- package/hooks/useReducedMotion.js +33 -0
- package/hooks/useScale.d.ts +2 -2
- package/hooks/useScale.js +2 -2
- package/hooks/useTicks.d.ts +19 -11
- package/hooks/useTicks.js +19 -14
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/internals/components/AxisSharedComponents.d.ts +0 -4
- package/internals/components/AxisSharedComponents.js +18 -78
- package/internals/components/ChartsText.d.ts +35 -0
- package/internals/components/ChartsText.js +87 -0
- package/internals/defaultizeColor.d.ts +7 -2
- package/internals/defaultizeValueFormatter.js +1 -2
- package/internals/domUtils.d.ts +13 -0
- package/internals/domUtils.js +122 -0
- package/internals/geometry.d.ts +9 -0
- package/internals/geometry.js +42 -0
- package/internals/isBandScale.d.ts +3 -1
- package/internals/stackSeries.js +2 -4
- package/internals/utils.d.ts +5 -0
- package/legacy/BarChart/BarChart.js +90 -13
- package/legacy/BarChart/BarElement.js +6 -3
- package/legacy/BarChart/BarPlot.js +151 -63
- package/legacy/BarChart/formatter.js +1 -1
- package/legacy/ChartContainer/index.js +3 -0
- package/legacy/ChartsAxis/ChartsAxis.js +32 -5
- package/legacy/ChartsAxisHighlight/ChartsAxisHighlight.js +60 -20
- package/legacy/ChartsClipPath/ChartsClipPath.js +5 -0
- package/legacy/ChartsLegend/ChartsLegend.js +205 -142
- package/legacy/ChartsLegend/chartsLegendClasses.js +1 -1
- package/legacy/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
- package/legacy/ChartsReferenceLine/ChartsXReferenceLine.js +105 -0
- package/legacy/ChartsReferenceLine/ChartsYReferenceLine.js +105 -0
- package/legacy/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
- package/legacy/ChartsReferenceLine/common.js +20 -0
- package/legacy/ChartsReferenceLine/index.js +2 -0
- package/legacy/ChartsSurface.js +3 -12
- package/legacy/ChartsTooltip/ChartsAxisTooltipContent.js +22 -10
- package/legacy/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
- package/legacy/ChartsTooltip/ChartsTooltip.js +62 -14
- package/legacy/ChartsTooltip/ChartsTooltipTable.js +34 -26
- package/legacy/ChartsXAxis/ChartsXAxis.js +176 -50
- package/legacy/ChartsYAxis/ChartsYAxis.js +97 -41
- package/legacy/LineChart/AreaElement.js +10 -0
- package/legacy/LineChart/AreaPlot.js +31 -7
- package/legacy/LineChart/LineChart.js +86 -13
- package/legacy/LineChart/LineElement.js +10 -0
- package/legacy/LineChart/LineHighlightElement.js +10 -0
- package/legacy/LineChart/LineHighlightPlot.js +13 -2
- package/legacy/LineChart/LinePlot.js +29 -12
- package/legacy/LineChart/MarkElement.js +11 -1
- package/legacy/LineChart/MarkPlot.js +39 -8
- package/legacy/LineChart/formatter.js +7 -3
- package/legacy/PieChart/PieArc.js +30 -62
- package/legacy/PieChart/PieArcLabel.js +48 -34
- package/legacy/PieChart/PieArcLabelPlot.js +93 -0
- package/legacy/PieChart/PieArcPlot.js +84 -0
- package/legacy/PieChart/PieChart.js +93 -16
- package/legacy/PieChart/PiePlot.js +76 -59
- package/legacy/PieChart/dataTransform/transition.js +142 -0
- package/legacy/PieChart/dataTransform/useTransformData.js +60 -0
- package/legacy/ResponsiveChartContainer/index.js +3 -3
- package/legacy/ScatterChart/Scatter.js +10 -0
- package/legacy/ScatterChart/ScatterChart.js +74 -12
- package/legacy/ScatterChart/ScatterPlot.js +10 -0
- package/legacy/SparkLineChart/SparkLineChart.js +47 -3
- package/legacy/constants.js +1 -1
- package/legacy/context/CartesianContextProvider.js +41 -14
- package/legacy/context/DrawingProvider.js +14 -0
- package/legacy/hooks/useChartDimensions.js +2 -0
- package/legacy/hooks/useMounted.js +21 -0
- package/legacy/hooks/useReducedMotion.js +27 -0
- package/legacy/hooks/useTicks.js +16 -9
- package/legacy/index.js +2 -1
- package/legacy/internals/components/AxisSharedComponents.js +11 -65
- package/legacy/internals/components/ChartsText.js +79 -0
- package/legacy/internals/domUtils.js +121 -0
- package/legacy/internals/geometry.js +37 -0
- package/models/axis.d.ts +58 -20
- package/models/layout.d.ts +13 -6
- package/models/seriesType/common.d.ts +16 -0
- package/models/seriesType/line.d.ts +8 -3
- package/models/seriesType/pie.d.ts +5 -1
- package/modern/BarChart/BarChart.js +90 -13
- package/modern/BarChart/BarElement.js +7 -4
- package/modern/BarChart/BarPlot.js +149 -65
- package/modern/BarChart/formatter.js +1 -1
- package/modern/ChartContainer/index.js +3 -0
- package/modern/ChartsAxis/ChartsAxis.js +31 -5
- package/modern/ChartsAxisHighlight/ChartsAxisHighlight.js +57 -20
- package/modern/ChartsClipPath/ChartsClipPath.js +5 -0
- package/modern/ChartsLegend/ChartsLegend.js +190 -144
- package/modern/ChartsLegend/chartsLegendClasses.js +1 -1
- package/modern/ChartsReferenceLine/ChartsReferenceLine.js +70 -0
- package/modern/ChartsReferenceLine/ChartsXReferenceLine.js +104 -0
- package/modern/ChartsReferenceLine/ChartsYReferenceLine.js +104 -0
- package/modern/ChartsReferenceLine/chartsReferenceLineClasses.js +6 -0
- package/modern/ChartsReferenceLine/common.js +20 -0
- package/modern/ChartsReferenceLine/index.js +2 -0
- package/modern/ChartsSurface.js +4 -12
- package/modern/ChartsTooltip/ChartsAxisTooltipContent.js +44 -30
- package/modern/ChartsTooltip/ChartsItemTooltipContent.js +15 -7
- package/modern/ChartsTooltip/ChartsTooltip.js +58 -14
- package/modern/ChartsTooltip/ChartsTooltipTable.js +17 -10
- package/modern/ChartsXAxis/ChartsXAxis.js +167 -42
- package/modern/ChartsYAxis/ChartsYAxis.js +92 -35
- package/modern/LineChart/AreaElement.js +10 -0
- package/modern/LineChart/AreaPlot.js +25 -6
- package/modern/LineChart/LineChart.js +86 -13
- package/modern/LineChart/LineElement.js +10 -0
- package/modern/LineChart/LineHighlightElement.js +10 -0
- package/modern/LineChart/LineHighlightPlot.js +13 -2
- package/modern/LineChart/LinePlot.js +23 -10
- package/modern/LineChart/MarkElement.js +11 -1
- package/modern/LineChart/MarkPlot.js +40 -8
- package/modern/LineChart/formatter.js +4 -3
- package/modern/PieChart/PieArc.js +26 -57
- package/modern/PieChart/PieArcLabel.js +43 -34
- package/modern/PieChart/PieArcLabelPlot.js +90 -0
- package/modern/PieChart/PieArcPlot.js +83 -0
- package/modern/PieChart/PieChart.js +93 -16
- package/modern/PieChart/PiePlot.js +76 -55
- package/modern/PieChart/dataTransform/transition.js +130 -0
- package/modern/PieChart/dataTransform/useTransformData.js +58 -0
- package/modern/ResponsiveChartContainer/index.js +3 -3
- package/modern/ScatterChart/Scatter.js +10 -0
- package/modern/ScatterChart/ScatterChart.js +74 -12
- package/modern/ScatterChart/ScatterPlot.js +10 -0
- package/modern/SparkLineChart/SparkLineChart.js +47 -3
- package/modern/constants.js +1 -1
- package/modern/context/CartesianContextProvider.js +40 -13
- package/modern/context/DrawingProvider.js +14 -0
- package/modern/hooks/useChartDimensions.js +2 -0
- package/modern/hooks/useMounted.js +16 -0
- package/modern/hooks/useReducedMotion.js +27 -0
- package/modern/hooks/useTicks.js +15 -9
- package/modern/index.js +2 -1
- package/modern/internals/components/AxisSharedComponents.js +15 -70
- package/modern/internals/components/ChartsText.js +77 -0
- package/modern/internals/domUtils.js +113 -0
- package/modern/internals/geometry.js +36 -0
- package/package.json +9 -6
- package/themeAugmentation/components.d.ts +1 -0
- package/themeAugmentation/overrides.d.ts +2 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DefaultizedProps } from '../helpers';
|
|
2
2
|
import { CartesianSeriesType, CommonDefaultizedProps, CommonSeriesType, StackableSeriesType } from './common';
|
|
3
3
|
export type CurveType = 'catmullRom' | 'linear' | 'monotoneX' | 'monotoneY' | 'natural' | 'step' | 'stepBefore' | 'stepAfter';
|
|
4
|
-
export interface ShowMarkParams {
|
|
4
|
+
export interface ShowMarkParams<AxisValue = number | Date> {
|
|
5
5
|
/**
|
|
6
6
|
* The item index.
|
|
7
7
|
*/
|
|
@@ -17,7 +17,7 @@ export interface ShowMarkParams {
|
|
|
17
17
|
/**
|
|
18
18
|
* The item position value. It likely comes from the axis `data` property.
|
|
19
19
|
*/
|
|
20
|
-
position:
|
|
20
|
+
position: AxisValue;
|
|
21
21
|
/**
|
|
22
22
|
* The item value. It comes from the series `data` property.
|
|
23
23
|
*/
|
|
@@ -28,7 +28,7 @@ export interface LineSeriesType extends CommonSeriesType<number>, CartesianSerie
|
|
|
28
28
|
/**
|
|
29
29
|
* Data associated to the line.
|
|
30
30
|
*/
|
|
31
|
-
data?: number[];
|
|
31
|
+
data?: (number | null)[];
|
|
32
32
|
/**
|
|
33
33
|
* The key used to retrive data from the dataset.
|
|
34
34
|
*/
|
|
@@ -48,6 +48,11 @@ export interface LineSeriesType extends CommonSeriesType<number>, CartesianSerie
|
|
|
48
48
|
* @default false
|
|
49
49
|
*/
|
|
50
50
|
disableHighlight?: boolean;
|
|
51
|
+
/**
|
|
52
|
+
* If `true`, line and area connect points separated by `null` values.
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
connectNulls?: boolean;
|
|
51
56
|
}
|
|
52
57
|
/**
|
|
53
58
|
* An object that allows to identify a single line.
|
|
@@ -7,7 +7,7 @@ export type PieValueType = {
|
|
|
7
7
|
label?: string;
|
|
8
8
|
color?: string;
|
|
9
9
|
};
|
|
10
|
-
export type DefaultizedPieValueType = PieValueType & D3PieArcDatum<any> & {
|
|
10
|
+
export type DefaultizedPieValueType = PieValueType & Omit<D3PieArcDatum<any>, 'data'> & {
|
|
11
11
|
color: string;
|
|
12
12
|
formattedValue: string;
|
|
13
13
|
};
|
|
@@ -76,6 +76,8 @@ export interface PieSeriesType<Tdata = PieValueType> extends CommonSeriesType<Td
|
|
|
76
76
|
innerRadius?: number;
|
|
77
77
|
outerRadius?: number;
|
|
78
78
|
cornerRadius?: number;
|
|
79
|
+
paddingAngle?: number;
|
|
80
|
+
color?: string;
|
|
79
81
|
};
|
|
80
82
|
/**
|
|
81
83
|
* Override the arc attibutes when it is faded.
|
|
@@ -89,6 +91,8 @@ export interface PieSeriesType<Tdata = PieValueType> extends CommonSeriesType<Td
|
|
|
89
91
|
innerRadius?: number;
|
|
90
92
|
outerRadius?: number;
|
|
91
93
|
cornerRadius?: number;
|
|
94
|
+
paddingAngle?: number;
|
|
95
|
+
color?: string;
|
|
92
96
|
};
|
|
93
97
|
}
|
|
94
98
|
/**
|
|
@@ -12,6 +12,17 @@ import { ChartsAxisHighlight } from '../ChartsAxisHighlight';
|
|
|
12
12
|
import { ChartsClipPath } from '../ChartsClipPath';
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
14
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
/**
|
|
16
|
+
* Demos:
|
|
17
|
+
*
|
|
18
|
+
* - [Bars](https://mui.com/x/react-charts/bars/)
|
|
19
|
+
* - [Bar demonstration](https://mui.com/x/react-charts/bar-demo/)
|
|
20
|
+
* - [Stacking](https://mui.com/x/react-charts/stacking/)
|
|
21
|
+
*
|
|
22
|
+
* API:
|
|
23
|
+
*
|
|
24
|
+
* - [BarChart API](https://mui.com/x/api/charts/bar-chart/)
|
|
25
|
+
*/
|
|
15
26
|
const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
|
|
16
27
|
const {
|
|
17
28
|
xAxis,
|
|
@@ -31,6 +42,7 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
|
|
|
31
42
|
leftAxis,
|
|
32
43
|
rightAxis,
|
|
33
44
|
bottomAxis,
|
|
45
|
+
skipAnimation,
|
|
34
46
|
children,
|
|
35
47
|
slots,
|
|
36
48
|
slotProps
|
|
@@ -73,7 +85,8 @@ const BarChart = /*#__PURE__*/React.forwardRef(function BarChart(props, ref) {
|
|
|
73
85
|
clipPath: `url(#${clipPathId})`,
|
|
74
86
|
children: /*#__PURE__*/_jsx(BarPlot, {
|
|
75
87
|
slots: slots,
|
|
76
|
-
slotProps: slotProps
|
|
88
|
+
slotProps: slotProps,
|
|
89
|
+
skipAnimation: skipAnimation
|
|
77
90
|
})
|
|
78
91
|
}), /*#__PURE__*/_jsx(ChartsAxis, {
|
|
79
92
|
topAxis: topAxis,
|
|
@@ -98,6 +111,13 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
98
111
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
99
112
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
100
113
|
// ----------------------------------------------------------------------
|
|
114
|
+
/**
|
|
115
|
+
* Object `{ x, y }` that defines how the charts highlight the mouse position along the x- and y-axes.
|
|
116
|
+
* The two properties accept the following values:
|
|
117
|
+
* - 'none': display nothing.
|
|
118
|
+
* - 'line': display a line at the current mouse position.
|
|
119
|
+
* - 'band': display a band at the current mouse position. Only available with band scale.
|
|
120
|
+
*/
|
|
101
121
|
axisHighlight: PropTypes.shape({
|
|
102
122
|
x: PropTypes.oneOf(['band', 'line', 'none']),
|
|
103
123
|
y: PropTypes.oneOf(['band', 'line', 'none'])
|
|
@@ -108,18 +128,22 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
108
128
|
* @default xAxisIds[0] The id of the first provided axis
|
|
109
129
|
*/
|
|
110
130
|
bottomAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
111
|
-
axisId: PropTypes.string
|
|
131
|
+
axisId: PropTypes.string,
|
|
112
132
|
classes: PropTypes.object,
|
|
113
133
|
disableLine: PropTypes.bool,
|
|
114
134
|
disableTicks: PropTypes.bool,
|
|
115
135
|
fill: PropTypes.string,
|
|
116
136
|
label: PropTypes.string,
|
|
117
137
|
labelFontSize: PropTypes.number,
|
|
138
|
+
labelStyle: PropTypes.object,
|
|
118
139
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
119
140
|
slotProps: PropTypes.object,
|
|
120
141
|
slots: PropTypes.object,
|
|
121
142
|
stroke: PropTypes.string,
|
|
122
143
|
tickFontSize: PropTypes.number,
|
|
144
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
145
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
146
|
+
tickLabelStyle: PropTypes.object,
|
|
123
147
|
tickMaxStep: PropTypes.number,
|
|
124
148
|
tickMinStep: PropTypes.number,
|
|
125
149
|
tickNumber: PropTypes.number,
|
|
@@ -131,9 +155,21 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
131
155
|
* Color palette used to colorize multiple series.
|
|
132
156
|
*/
|
|
133
157
|
colors: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
|
|
158
|
+
/**
|
|
159
|
+
* An array of objects that can be used to populate series and axes data using their `dataKey` property.
|
|
160
|
+
*/
|
|
134
161
|
dataset: PropTypes.arrayOf(PropTypes.object),
|
|
135
162
|
desc: PropTypes.string,
|
|
163
|
+
/**
|
|
164
|
+
* If `true`, the charts will not listen to the mouse move event.
|
|
165
|
+
* It might break interactive features, but will improve performance.
|
|
166
|
+
* @default false
|
|
167
|
+
*/
|
|
136
168
|
disableAxisListener: PropTypes.bool,
|
|
169
|
+
/**
|
|
170
|
+
* The height of the chart in px. If not defined, it takes the height of the parent element.
|
|
171
|
+
* @default undefined
|
|
172
|
+
*/
|
|
137
173
|
height: PropTypes.number,
|
|
138
174
|
layout: PropTypes.oneOf(['horizontal', 'vertical']),
|
|
139
175
|
/**
|
|
@@ -142,41 +178,47 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
142
178
|
* @default yAxisIds[0] The id of the first provided axis
|
|
143
179
|
*/
|
|
144
180
|
leftAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
145
|
-
axisId: PropTypes.string
|
|
181
|
+
axisId: PropTypes.string,
|
|
146
182
|
classes: PropTypes.object,
|
|
147
183
|
disableLine: PropTypes.bool,
|
|
148
184
|
disableTicks: PropTypes.bool,
|
|
149
185
|
fill: PropTypes.string,
|
|
150
186
|
label: PropTypes.string,
|
|
151
187
|
labelFontSize: PropTypes.number,
|
|
188
|
+
labelStyle: PropTypes.object,
|
|
152
189
|
position: PropTypes.oneOf(['left', 'right']),
|
|
153
190
|
slotProps: PropTypes.object,
|
|
154
191
|
slots: PropTypes.object,
|
|
155
192
|
stroke: PropTypes.string,
|
|
156
193
|
tickFontSize: PropTypes.number,
|
|
194
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
195
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
196
|
+
tickLabelStyle: PropTypes.object,
|
|
157
197
|
tickMaxStep: PropTypes.number,
|
|
158
198
|
tickMinStep: PropTypes.number,
|
|
159
199
|
tickNumber: PropTypes.number,
|
|
160
200
|
tickSize: PropTypes.number
|
|
161
201
|
}), PropTypes.string]),
|
|
202
|
+
/**
|
|
203
|
+
* @deprecated Consider using `slotProps.legend` instead.
|
|
204
|
+
*/
|
|
162
205
|
legend: PropTypes.shape({
|
|
163
206
|
classes: PropTypes.object,
|
|
164
207
|
direction: PropTypes.oneOf(['column', 'row']),
|
|
165
208
|
hidden: PropTypes.bool,
|
|
166
|
-
itemWidth: PropTypes.number,
|
|
167
|
-
markSize: PropTypes.number,
|
|
168
|
-
offset: PropTypes.shape({
|
|
169
|
-
x: PropTypes.number,
|
|
170
|
-
y: PropTypes.number
|
|
171
|
-
}),
|
|
172
209
|
position: PropTypes.shape({
|
|
173
210
|
horizontal: PropTypes.oneOf(['left', 'middle', 'right']).isRequired,
|
|
174
211
|
vertical: PropTypes.oneOf(['bottom', 'middle', 'top']).isRequired
|
|
175
212
|
}),
|
|
176
213
|
slotProps: PropTypes.object,
|
|
177
|
-
slots: PropTypes.object
|
|
178
|
-
spacing: PropTypes.number
|
|
214
|
+
slots: PropTypes.object
|
|
179
215
|
}),
|
|
216
|
+
/**
|
|
217
|
+
* The margin between the SVG and the drawing area.
|
|
218
|
+
* It's used for leaving some space for extra information such as the x- and y-axis or legend.
|
|
219
|
+
* Accepts an object with the optional properties: `top`, `bottom`, `left`, and `right`.
|
|
220
|
+
* @default object Depends on the charts type.
|
|
221
|
+
*/
|
|
180
222
|
margin: PropTypes.shape({
|
|
181
223
|
bottom: PropTypes.number,
|
|
182
224
|
left: PropTypes.number,
|
|
@@ -189,18 +231,22 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
189
231
|
* @default null
|
|
190
232
|
*/
|
|
191
233
|
rightAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
192
|
-
axisId: PropTypes.string
|
|
234
|
+
axisId: PropTypes.string,
|
|
193
235
|
classes: PropTypes.object,
|
|
194
236
|
disableLine: PropTypes.bool,
|
|
195
237
|
disableTicks: PropTypes.bool,
|
|
196
238
|
fill: PropTypes.string,
|
|
197
239
|
label: PropTypes.string,
|
|
198
240
|
labelFontSize: PropTypes.number,
|
|
241
|
+
labelStyle: PropTypes.object,
|
|
199
242
|
position: PropTypes.oneOf(['left', 'right']),
|
|
200
243
|
slotProps: PropTypes.object,
|
|
201
244
|
slots: PropTypes.object,
|
|
202
245
|
stroke: PropTypes.string,
|
|
203
246
|
tickFontSize: PropTypes.number,
|
|
247
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
248
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
249
|
+
tickLabelStyle: PropTypes.object,
|
|
204
250
|
tickMaxStep: PropTypes.number,
|
|
205
251
|
tickMinStep: PropTypes.number,
|
|
206
252
|
tickNumber: PropTypes.number,
|
|
@@ -225,6 +271,11 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
225
271
|
xAxisKey: PropTypes.string,
|
|
226
272
|
yAxisKey: PropTypes.string
|
|
227
273
|
})).isRequired,
|
|
274
|
+
/**
|
|
275
|
+
* If `true`, animations are skiped.
|
|
276
|
+
* @default false
|
|
277
|
+
*/
|
|
278
|
+
skipAnimation: PropTypes.bool,
|
|
228
279
|
/**
|
|
229
280
|
* The props used for each component slot.
|
|
230
281
|
* @default {}
|
|
@@ -241,6 +292,8 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
241
292
|
axisContent: PropTypes.elementType,
|
|
242
293
|
classes: PropTypes.object,
|
|
243
294
|
itemContent: PropTypes.elementType,
|
|
295
|
+
slotProps: PropTypes.object,
|
|
296
|
+
slots: PropTypes.object,
|
|
244
297
|
trigger: PropTypes.oneOf(['axis', 'item', 'none'])
|
|
245
298
|
}),
|
|
246
299
|
/**
|
|
@@ -249,18 +302,22 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
249
302
|
* @default null
|
|
250
303
|
*/
|
|
251
304
|
topAxis: PropTypes.oneOfType([PropTypes.shape({
|
|
252
|
-
axisId: PropTypes.string
|
|
305
|
+
axisId: PropTypes.string,
|
|
253
306
|
classes: PropTypes.object,
|
|
254
307
|
disableLine: PropTypes.bool,
|
|
255
308
|
disableTicks: PropTypes.bool,
|
|
256
309
|
fill: PropTypes.string,
|
|
257
310
|
label: PropTypes.string,
|
|
258
311
|
labelFontSize: PropTypes.number,
|
|
312
|
+
labelStyle: PropTypes.object,
|
|
259
313
|
position: PropTypes.oneOf(['bottom', 'top']),
|
|
260
314
|
slotProps: PropTypes.object,
|
|
261
315
|
slots: PropTypes.object,
|
|
262
316
|
stroke: PropTypes.string,
|
|
263
317
|
tickFontSize: PropTypes.number,
|
|
318
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
319
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
320
|
+
tickLabelStyle: PropTypes.object,
|
|
264
321
|
tickMaxStep: PropTypes.number,
|
|
265
322
|
tickMinStep: PropTypes.number,
|
|
266
323
|
tickNumber: PropTypes.number,
|
|
@@ -272,7 +329,15 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
272
329
|
x: PropTypes.number,
|
|
273
330
|
y: PropTypes.number
|
|
274
331
|
}),
|
|
332
|
+
/**
|
|
333
|
+
* The width of the chart in px. If not defined, it takes the width of the parent element.
|
|
334
|
+
* @default undefined
|
|
335
|
+
*/
|
|
275
336
|
width: PropTypes.number,
|
|
337
|
+
/**
|
|
338
|
+
* The configuration of the x-axes.
|
|
339
|
+
* If not provided, a default axis config is used with id set to `DEFAULT_X_AXIS_KEY`.
|
|
340
|
+
*/
|
|
276
341
|
xAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
277
342
|
axisId: PropTypes.string,
|
|
278
343
|
classes: PropTypes.object,
|
|
@@ -285,6 +350,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
285
350
|
id: PropTypes.string,
|
|
286
351
|
label: PropTypes.string,
|
|
287
352
|
labelFontSize: PropTypes.number,
|
|
353
|
+
labelStyle: PropTypes.object,
|
|
288
354
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
289
355
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
290
356
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -293,12 +359,19 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
293
359
|
slots: PropTypes.object,
|
|
294
360
|
stroke: PropTypes.string,
|
|
295
361
|
tickFontSize: PropTypes.number,
|
|
362
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
363
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
364
|
+
tickLabelStyle: PropTypes.object,
|
|
296
365
|
tickMaxStep: PropTypes.number,
|
|
297
366
|
tickMinStep: PropTypes.number,
|
|
298
367
|
tickNumber: PropTypes.number,
|
|
299
368
|
tickSize: PropTypes.number,
|
|
300
369
|
valueFormatter: PropTypes.func
|
|
301
370
|
})),
|
|
371
|
+
/**
|
|
372
|
+
* The configuration of the y-axes.
|
|
373
|
+
* If not provided, a default axis config is used with id set to `DEFAULT_Y_AXIS_KEY`.
|
|
374
|
+
*/
|
|
302
375
|
yAxis: PropTypes.arrayOf(PropTypes.shape({
|
|
303
376
|
axisId: PropTypes.string,
|
|
304
377
|
classes: PropTypes.object,
|
|
@@ -311,6 +384,7 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
311
384
|
id: PropTypes.string,
|
|
312
385
|
label: PropTypes.string,
|
|
313
386
|
labelFontSize: PropTypes.number,
|
|
387
|
+
labelStyle: PropTypes.object,
|
|
314
388
|
max: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
315
389
|
min: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.number]),
|
|
316
390
|
position: PropTypes.oneOf(['bottom', 'left', 'right', 'top']),
|
|
@@ -319,6 +393,9 @@ process.env.NODE_ENV !== "production" ? BarChart.propTypes = {
|
|
|
319
393
|
slots: PropTypes.object,
|
|
320
394
|
stroke: PropTypes.string,
|
|
321
395
|
tickFontSize: PropTypes.number,
|
|
396
|
+
tickInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.array, PropTypes.func]),
|
|
397
|
+
tickLabelInterval: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.func]),
|
|
398
|
+
tickLabelStyle: PropTypes.object,
|
|
322
399
|
tickMaxStep: PropTypes.number,
|
|
323
400
|
tickMinStep: PropTypes.number,
|
|
324
401
|
tickNumber: PropTypes.number,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
2
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
3
|
-
const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps"];
|
|
3
|
+
const _excluded = ["id", "dataIndex", "classes", "color", "highlightScope", "slots", "slotProps", "style"];
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import composeClasses from '@mui/utils/composeClasses';
|
|
6
6
|
import { useSlotProps } from '@mui/base/utils';
|
|
@@ -8,13 +8,14 @@ import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
|
8
8
|
import { styled } from '@mui/material/styles';
|
|
9
9
|
import { color as d3Color } from 'd3-color';
|
|
10
10
|
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
11
|
+
import { animated } from '@react-spring/web';
|
|
11
12
|
import { getIsFaded, getIsHighlighted, useInteractionItemProps } from '../hooks/useInteractionItemProps';
|
|
12
13
|
import { InteractionContext } from '../context/InteractionProvider';
|
|
13
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
15
|
export function getBarElementUtilityClass(slot) {
|
|
15
16
|
return generateUtilityClass('MuiBarElement', slot);
|
|
16
17
|
}
|
|
17
|
-
export const
|
|
18
|
+
export const barElementClasses = generateUtilityClasses('MuiBarElement', ['root']);
|
|
18
19
|
const useUtilityClasses = ownerState => {
|
|
19
20
|
const {
|
|
20
21
|
classes,
|
|
@@ -25,7 +26,7 @@ const useUtilityClasses = ownerState => {
|
|
|
25
26
|
};
|
|
26
27
|
return composeClasses(slots, getBarElementUtilityClass, classes);
|
|
27
28
|
};
|
|
28
|
-
export const BarElementPath = styled(
|
|
29
|
+
export const BarElementPath = styled(animated.rect, {
|
|
29
30
|
name: 'MuiBarElement',
|
|
30
31
|
slot: 'Root',
|
|
31
32
|
overridesResolver: (_, styles) => styles.root
|
|
@@ -46,7 +47,8 @@ export function BarElement(props) {
|
|
|
46
47
|
color,
|
|
47
48
|
highlightScope,
|
|
48
49
|
slots,
|
|
49
|
-
slotProps
|
|
50
|
+
slotProps,
|
|
51
|
+
style
|
|
50
52
|
} = props,
|
|
51
53
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
52
54
|
const getInteractionItemProps = useInteractionItemProps(highlightScope);
|
|
@@ -81,6 +83,7 @@ export function BarElement(props) {
|
|
|
81
83
|
seriesId: id,
|
|
82
84
|
dataIndex
|
|
83
85
|
}), {
|
|
86
|
+
style,
|
|
84
87
|
className: classes.root
|
|
85
88
|
}),
|
|
86
89
|
ownerState
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
1
2
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
const _excluded = ["skipAnimation"];
|
|
2
4
|
import * as React from 'react';
|
|
3
5
|
import PropTypes from 'prop-types';
|
|
6
|
+
import { useTransition } from '@react-spring/web';
|
|
4
7
|
import { SeriesContext } from '../context/SeriesContextProvider';
|
|
5
8
|
import { CartesianContext } from '../context/CartesianContextProvider';
|
|
6
9
|
import { BarElement } from './BarElement';
|
|
7
10
|
import { isBandScaleConfig } from '../models/axis';
|
|
8
|
-
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
12
|
/**
|
|
10
13
|
* Solution of the equations
|
|
11
14
|
* W = barWidth * N + offset * (N-1)
|
|
@@ -15,7 +18,6 @@ import { isBandScaleConfig } from '../models/axis';
|
|
|
15
18
|
* @param gapRatio The ratio of the gap between bars over the bar width.
|
|
16
19
|
* @returns The bar width and the offset between bars.
|
|
17
20
|
*/
|
|
18
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
21
|
function getBandSize({
|
|
20
22
|
bandWidth: W,
|
|
21
23
|
numberOfGroups: N,
|
|
@@ -34,12 +36,13 @@ function getBandSize({
|
|
|
34
36
|
offset
|
|
35
37
|
};
|
|
36
38
|
}
|
|
37
|
-
|
|
38
|
-
const seriesData = React.useContext(SeriesContext).bar
|
|
39
|
+
const useCompletedData = () => {
|
|
40
|
+
const seriesData = React.useContext(SeriesContext).bar ?? {
|
|
41
|
+
series: {},
|
|
42
|
+
stackingGroups: [],
|
|
43
|
+
seriesOrder: []
|
|
44
|
+
};
|
|
39
45
|
const axisData = React.useContext(CartesianContext);
|
|
40
|
-
if (seriesData === undefined) {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
46
|
const {
|
|
44
47
|
series,
|
|
45
48
|
stackingGroups
|
|
@@ -52,66 +55,142 @@ function BarPlot(props) {
|
|
|
52
55
|
} = axisData;
|
|
53
56
|
const defaultXAxisId = xAxisIds[0];
|
|
54
57
|
const defaultYAxisId = yAxisIds[0];
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
throw new Error(`Axis with id "${yAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
|
|
77
|
-
}
|
|
78
|
-
if (yAxis[yAxisKey].data === undefined) {
|
|
79
|
-
throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
|
|
80
|
-
}
|
|
81
|
-
baseScaleConfig = yAxisConfig;
|
|
58
|
+
const data = stackingGroups.flatMap(({
|
|
59
|
+
ids: groupIds
|
|
60
|
+
}, groupIndex) => {
|
|
61
|
+
return groupIds.flatMap(seriesId => {
|
|
62
|
+
const xAxisKey = series[seriesId].xAxisKey ?? defaultXAxisId;
|
|
63
|
+
const yAxisKey = series[seriesId].yAxisKey ?? defaultYAxisId;
|
|
64
|
+
const xAxisConfig = xAxis[xAxisKey];
|
|
65
|
+
const yAxisConfig = yAxis[yAxisKey];
|
|
66
|
+
const verticalLayout = series[seriesId].layout === 'vertical';
|
|
67
|
+
let baseScaleConfig;
|
|
68
|
+
if (verticalLayout) {
|
|
69
|
+
if (!isBandScaleConfig(xAxisConfig)) {
|
|
70
|
+
throw new Error(`Axis with id "${xAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
|
|
71
|
+
}
|
|
72
|
+
if (xAxis[xAxisKey].data === undefined) {
|
|
73
|
+
throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
|
|
74
|
+
}
|
|
75
|
+
baseScaleConfig = xAxisConfig;
|
|
76
|
+
} else {
|
|
77
|
+
if (!isBandScaleConfig(yAxisConfig)) {
|
|
78
|
+
throw new Error(`Axis with id "${yAxisKey}" shoud be of type "band" to display the bar series of id "${seriesId}"`);
|
|
82
79
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
80
|
+
if (yAxis[yAxisKey].data === undefined) {
|
|
81
|
+
throw new Error(`Axis with id "${xAxisKey}" shoud have data property`);
|
|
82
|
+
}
|
|
83
|
+
baseScaleConfig = yAxisConfig;
|
|
84
|
+
}
|
|
85
|
+
const xScale = xAxisConfig.scale;
|
|
86
|
+
const yScale = yAxisConfig.scale;
|
|
87
|
+
const bandWidth = baseScaleConfig.scale.bandwidth();
|
|
88
|
+
const {
|
|
89
|
+
barWidth,
|
|
90
|
+
offset
|
|
91
|
+
} = getBandSize({
|
|
92
|
+
bandWidth,
|
|
93
|
+
numberOfGroups: stackingGroups.length,
|
|
94
|
+
gapRatio: baseScaleConfig.barGapRatio
|
|
95
|
+
});
|
|
96
|
+
const barOffset = groupIndex * (barWidth + offset);
|
|
97
|
+
const {
|
|
98
|
+
stackedData,
|
|
99
|
+
color
|
|
100
|
+
} = series[seriesId];
|
|
101
|
+
return stackedData.map((values, dataIndex) => {
|
|
102
|
+
const bottom = Math.min(...values);
|
|
103
|
+
const top = Math.max(...values);
|
|
104
|
+
return {
|
|
105
|
+
bottom,
|
|
106
|
+
top,
|
|
107
|
+
seriesId,
|
|
108
|
+
dataIndex,
|
|
109
|
+
layout: series[seriesId].layout,
|
|
110
|
+
x: verticalLayout ? xScale(xAxis[xAxisKey].data?.[dataIndex]) + barOffset : xScale(bottom),
|
|
111
|
+
y: verticalLayout ? yScale(top) : yScale(yAxis[yAxisKey].data?.[dataIndex]) + barOffset,
|
|
112
|
+
xOrigin: xScale(0),
|
|
113
|
+
yOrigin: yScale(0),
|
|
114
|
+
height: verticalLayout ? Math.abs(yScale(bottom) - yScale(top)) : barWidth,
|
|
115
|
+
width: verticalLayout ? barWidth : Math.abs(xScale(bottom) - xScale(top)),
|
|
116
|
+
color,
|
|
117
|
+
highlightScope: series[seriesId].highlightScope
|
|
118
|
+
};
|
|
113
119
|
});
|
|
114
|
-
})
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
return data;
|
|
123
|
+
};
|
|
124
|
+
const getOutStyle = ({
|
|
125
|
+
layout,
|
|
126
|
+
yOrigin,
|
|
127
|
+
x,
|
|
128
|
+
width,
|
|
129
|
+
y,
|
|
130
|
+
xOrigin,
|
|
131
|
+
height
|
|
132
|
+
}) => _extends({}, layout === 'vertical' ? {
|
|
133
|
+
y: yOrigin,
|
|
134
|
+
x,
|
|
135
|
+
height: 0,
|
|
136
|
+
width
|
|
137
|
+
} : {
|
|
138
|
+
y,
|
|
139
|
+
x: xOrigin,
|
|
140
|
+
height,
|
|
141
|
+
width: 0
|
|
142
|
+
});
|
|
143
|
+
const getInStyle = ({
|
|
144
|
+
x,
|
|
145
|
+
width,
|
|
146
|
+
y,
|
|
147
|
+
height
|
|
148
|
+
}) => ({
|
|
149
|
+
y,
|
|
150
|
+
x,
|
|
151
|
+
height,
|
|
152
|
+
width
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Demos:
|
|
157
|
+
*
|
|
158
|
+
* - [Bars](https://mui.com/x/react-charts/bars/)
|
|
159
|
+
* - [Bar demonstration](https://mui.com/x/react-charts/bar-demo/)
|
|
160
|
+
* - [Stacking](https://mui.com/x/react-charts/stacking/)
|
|
161
|
+
*
|
|
162
|
+
* API:
|
|
163
|
+
*
|
|
164
|
+
* - [BarPlot API](https://mui.com/x/api/charts/bar-plot/)
|
|
165
|
+
*/
|
|
166
|
+
function BarPlot(props) {
|
|
167
|
+
const completedData = useCompletedData();
|
|
168
|
+
const {
|
|
169
|
+
skipAnimation
|
|
170
|
+
} = props,
|
|
171
|
+
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
172
|
+
const transition = useTransition(completedData, {
|
|
173
|
+
keys: bar => `${bar.seriesId}-${bar.dataIndex}`,
|
|
174
|
+
from: getOutStyle,
|
|
175
|
+
leave: getOutStyle,
|
|
176
|
+
enter: getInStyle,
|
|
177
|
+
update: getInStyle,
|
|
178
|
+
immediate: skipAnimation
|
|
179
|
+
});
|
|
180
|
+
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
181
|
+
children: transition((style, {
|
|
182
|
+
seriesId,
|
|
183
|
+
dataIndex,
|
|
184
|
+
color,
|
|
185
|
+
highlightScope
|
|
186
|
+
}) => /*#__PURE__*/_jsx(BarElement, _extends({
|
|
187
|
+
id: seriesId,
|
|
188
|
+
dataIndex: dataIndex,
|
|
189
|
+
highlightScope: highlightScope,
|
|
190
|
+
color: color
|
|
191
|
+
}, other, {
|
|
192
|
+
style: style
|
|
193
|
+
})))
|
|
115
194
|
});
|
|
116
195
|
}
|
|
117
196
|
process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
|
|
@@ -119,6 +198,11 @@ process.env.NODE_ENV !== "production" ? BarPlot.propTypes = {
|
|
|
119
198
|
// | These PropTypes are generated from the TypeScript type definitions |
|
|
120
199
|
// | To update them edit the TypeScript types and run "yarn proptypes" |
|
|
121
200
|
// ----------------------------------------------------------------------
|
|
201
|
+
/**
|
|
202
|
+
* If `true`, animations are skiped.
|
|
203
|
+
* @default false
|
|
204
|
+
*/
|
|
205
|
+
skipAnimation: PropTypes.bool,
|
|
122
206
|
/**
|
|
123
207
|
* The props used for each component slot.
|
|
124
208
|
* @default {}
|
|
@@ -53,7 +53,7 @@ const formatter = (params, dataset) => {
|
|
|
53
53
|
return {
|
|
54
54
|
seriesOrder,
|
|
55
55
|
stackingGroups,
|
|
56
|
-
series: defaultizeValueFormatter(completedSeries, v => v
|
|
56
|
+
series: defaultizeValueFormatter(completedSeries, v => v?.toLocaleString())
|
|
57
57
|
};
|
|
58
58
|
};
|
|
59
59
|
export default formatter;
|
|
@@ -3,6 +3,7 @@ import useForkRef from '@mui/utils/useForkRef';
|
|
|
3
3
|
import { DrawingProvider } from '../context/DrawingProvider';
|
|
4
4
|
import { SeriesContextProvider } from '../context/SeriesContextProvider';
|
|
5
5
|
import { InteractionProvider } from '../context/InteractionProvider';
|
|
6
|
+
import { useReducedMotion } from '../hooks/useReducedMotion';
|
|
6
7
|
import { ChartsSurface } from '../ChartsSurface';
|
|
7
8
|
import { CartesianContextProvider } from '../context/CartesianContextProvider';
|
|
8
9
|
import { HighlightProvider } from '../context/HighlightProvider';
|
|
@@ -25,6 +26,8 @@ export const ChartContainer = /*#__PURE__*/React.forwardRef(function ChartContai
|
|
|
25
26
|
} = props;
|
|
26
27
|
const svgRef = React.useRef(null);
|
|
27
28
|
const handleRef = useForkRef(ref, svgRef);
|
|
29
|
+
useReducedMotion(); // a11y reduce motion (see: https://react-spring.dev/docs/utilities/use-reduced-motion)
|
|
30
|
+
|
|
28
31
|
return /*#__PURE__*/_jsx(DrawingProvider, {
|
|
29
32
|
width: width,
|
|
30
33
|
height: height,
|