diff --git a/packages/desktop-client/package.json b/packages/desktop-client/package.json
index 9efccdb13a..612bc4389d 100644
--- a/packages/desktop-client/package.json
+++ b/packages/desktop-client/package.json
@@ -85,7 +85,7 @@
"react-spring": "10.0.0",
"react-swipeable": "^7.0.2",
"react-virtualized-auto-sizer": "^2.0.2",
- "recharts": "^3.4.1",
+ "recharts": "^3.7.0",
"rehype-external-links": "^3.0.0",
"remark-gfm": "^4.0.1",
"rollup-plugin-visualizer": "^6.0.5",
diff --git a/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx b/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx
index a362d30959..922bd0516c 100644
--- a/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx
+++ b/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx
@@ -10,13 +10,14 @@ import {
Bar,
BarChart,
CartesianGrid,
- Cell,
LabelList,
+ Rectangle,
ReferenceLine,
Tooltip,
XAxis,
YAxis,
} from 'recharts';
+import type { BarShapeProps } from 'recharts';
import type {
balanceTypeOpType,
@@ -268,9 +269,8 @@ export function BarGraph({
)}
@@ -315,6 +315,14 @@ export function BarGraph({
id: item.id,
})
}
+ shape={(props: BarShapeProps) => (
+
+ )}
>
{viewLabels && !compact && (
customLabel(e, balanceTypeOp, format)}
/>
)}
- {data.legend.map((entry, index) => (
- |
- ))}
diff --git a/packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx b/packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx
index d76dd34aa9..2a7170d29a 100644
--- a/packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx
+++ b/packages/desktop-client/src/components/reports/graphs/DonutGraph.tsx
@@ -3,7 +3,8 @@ import React, { useState } from 'react';
import type { CSSProperties } from 'react';
import { theme } from '@actual-app/components/theme';
-import { Cell, Pie, PieChart, Sector, Tooltip } from 'recharts';
+import { Pie, PieChart, Sector, Tooltip } from 'recharts';
+import type { PieSectorShapeProps } from 'recharts';
import type {
balanceTypeOpType,
@@ -281,20 +282,6 @@ export function DonutGraph({
style={{ cursor: pointer }}
>
(
-
- )
- : props => (
-
- )
- }
dataKey={val => getVal(val)}
nameKey={yAxis}
{...animationProps}
@@ -311,6 +298,20 @@ export function DonutGraph({
}
startAngle={90}
endAngle={-270}
+ shape={(props: PieSectorShapeProps, index: number) => {
+ const fill = data.legend[index]?.color ?? props.fill;
+ const showActiveShape = width >= 220 && height >= 130;
+ const isActive = props.isActive || index === activeIndex;
+ if (isActive && showActiveShape) {
+ const shapeProps = { ...props, fill, format };
+ return compact ? (
+
+ ) : (
+
+ );
+ }
+ return ;
+ }}
onMouseLeave={() => setPointer('')}
onMouseEnter={(_, index) => {
if (canDeviceHover()) {
@@ -346,11 +347,7 @@ export function DonutGraph({
});
}
}}
- >
- {data.legend.map((entry, index) => (
- |
- ))}
-
+ />
null}
defaultIndex={activeIndex}
diff --git a/upcoming-release-notes/7022.md b/upcoming-release-notes/7022.md
new file mode 100644
index 0000000000..c095696738
--- /dev/null
+++ b/upcoming-release-notes/7022.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [matt-fidd]
+---
+
+Bump recharts
diff --git a/yarn.lock b/yarn.lock
index 2480a8aa0b..edbc88ef72 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -207,7 +207,7 @@ __metadata:
react-spring: "npm:10.0.0"
react-swipeable: "npm:^7.0.2"
react-virtualized-auto-sizer: "npm:^2.0.2"
- recharts: "npm:^3.4.1"
+ recharts: "npm:^3.7.0"
rehype-external-links: "npm:^3.0.0"
remark-gfm: "npm:^4.0.1"
rollup-plugin-visualizer: "npm:^6.0.5"
@@ -24681,9 +24681,9 @@ __metadata:
languageName: node
linkType: hard
-"recharts@npm:^3.4.1":
- version: 3.4.1
- resolution: "recharts@npm:3.4.1"
+"recharts@npm:^3.7.0":
+ version: 3.7.0
+ resolution: "recharts@npm:3.7.0"
dependencies:
"@reduxjs/toolkit": "npm:1.x.x || 2.x.x"
clsx: "npm:^2.1.1"
@@ -24700,7 +24700,7 @@ __metadata:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-is: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- checksum: 10/f05d69d54c9c44ed7ee513d30a05b04708c0ccd07780e3a1cc8283a7239bddb8719e6bff7981b96a71a967ce6ba910c5fb05ffac93f49a75354230e8d04f6958
+ checksum: 10/717d8d1886980fca6c6fd79c28abd5a12e2e8979cab30aa663035c8548010a3aef63d6fdc750e4834c9df99efabe61b3f0827b88020933586f90df8d1d083f3c
languageName: node
linkType: hard