diff --git a/packages/charts/react-charts/library/src/components/FunnelChart/FunnelChart.test.tsx b/packages/charts/react-charts/library/src/components/FunnelChart/FunnelChart.test.tsx
index 14d1a613dca3b..1c70bedcfec76 100644
--- a/packages/charts/react-charts/library/src/components/FunnelChart/FunnelChart.test.tsx
+++ b/packages/charts/react-charts/library/src/components/FunnelChart/FunnelChart.test.tsx
@@ -31,14 +31,14 @@ describe('FunnelChart', () => {
it('renders basic funnel chart correctly', () => {
render(
);
- expect(screen.getByRole('img')).toBeInTheDocument();
+ expect(screen.getAllByRole('img').length).toBeGreaterThan(0);
expect(screen.getByLabelText('Test Funnel Chart')).toBeInTheDocument();
});
it('renders stacked funnel chart correctly', () => {
render(
);
- expect(screen.getByRole('img')).toBeInTheDocument();
+ expect(screen.getAllByRole('img').length).toBeGreaterThan(0);
expect(screen.getByLabelText('Stacked Funnel Chart')).toBeInTheDocument();
});
@@ -52,7 +52,7 @@ describe('FunnelChart', () => {
it('renders with horizontal orientation by default', () => {
render(
);
- expect(screen.getByRole('img')).toBeInTheDocument();
+ expect(screen.getAllByRole('img').length).toBeGreaterThan(0);
});
it('renders with vertical orientation when specified', () => {
@@ -60,7 +60,7 @@ describe('FunnelChart', () => {
,
);
- expect(screen.getByRole('img')).toBeInTheDocument();
+ expect(screen.getAllByRole('img').length).toBeGreaterThan(0);
});
it('hides legend when hideLegend is true', () => {
@@ -68,13 +68,13 @@ describe('FunnelChart', () => {
,
);
- expect(screen.getByRole('img')).toBeInTheDocument();
+ expect(screen.getAllByRole('img').length).toBeGreaterThan(0);
// Legend should not be present when hideLegend is true
});
it('renders with custom culture for number formatting', () => {
render(
);
- expect(screen.getByRole('img')).toBeInTheDocument();
+ expect(screen.getAllByRole('img').length).toBeGreaterThan(0);
});
});
diff --git a/packages/charts/react-charts/library/src/components/FunnelChart/FunnelChart.tsx b/packages/charts/react-charts/library/src/components/FunnelChart/FunnelChart.tsx
index 4ea4faefcd18a..bda043be00ac8 100644
--- a/packages/charts/react-charts/library/src/components/FunnelChart/FunnelChart.tsx
+++ b/packages/charts/react-charts/library/src/components/FunnelChart/FunnelChart.tsx
@@ -135,6 +135,20 @@ export const FunnelChart: React.FunctionComponent
= React.forw
return getHighlightedLegend().length === 0;
}
+ function _getAriaLabel(
+ data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } },
+ ): string {
+ if ('subValue' in data) {
+ // Stacked funnel segment
+ const formattedValue = formatToLocaleString(data.subValue.value.toString(), props.culture);
+ return `${data.stage}, ${data.subValue.category}, ${formattedValue}.`;
+ } else {
+ // Non-stacked funnel segment
+ const formattedValue = formatToLocaleString((data.value ?? 0).toString(), props.culture);
+ return `${data.stage}, ${formattedValue}.`;
+ }
+ }
+
function _getEventHandlerProps(
data: FunnelChartDataPoint | { stage: string; subValue: { category: string; value: number; color: string } },
opacity?: number,
@@ -238,7 +252,16 @@ export const FunnelChart: React.FunctionComponent = React.forw
const textColor = getContrastTextColor(fill);
return (
-
+
{textProps && {_renderSegmentText({ ...textProps, textColor, opacity })}}
);
@@ -441,14 +464,7 @@ export const FunnelChart: React.FunctionComponent = React.forw
return !_isChartEmpty() ? (
-
@@ -3616,7 +3690,9 @@ exports[`VerticalStackedBarChart snapShot testing Should not render bar labels 1
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+