diff --git a/semcore/d3-chart/src/Donut.jsx b/semcore/d3-chart/src/Donut.jsx index 99a5b5bd5d..2c0f406bfd 100644 --- a/semcore/d3-chart/src/Donut.jsx +++ b/semcore/d3-chart/src/Donut.jsx @@ -84,6 +84,7 @@ function transitionRadiusPie({ } const increaseFactor = 8; +const donutThickness = 12; function getOuterRadius({ size, halfsize }) { const [width, height] = size; @@ -97,19 +98,19 @@ class DonutRoot extends Component { static enhance = [uniqueIDEnhancement()]; static defaultProps = ({ - innerRadius = 0, + innerRadius: innerRadiusProp, paddingAngle = 0, outerRadius, halfsize = false, $rootProps: { size }, }) => { - const d3Arc = arc() - .outerRadius(outerRadius || getOuterRadius({ size, halfsize, outerRadius })) - .innerRadius(innerRadius) - .padAngle(paddingAngle); + const radius = outerRadius || getOuterRadius({ size, halfsize }); + const innerRadius = innerRadiusProp ?? Math.max(radius - donutThickness, 0); + + const d3Arc = arc().outerRadius(radius).innerRadius(innerRadius).padAngle(paddingAngle); const d3ArcOut = arc() - .outerRadius((outerRadius || getOuterRadius({ size, halfsize })) + increaseFactor) + .outerRadius(radius + increaseFactor) .innerRadius(innerRadius) .padAngle(paddingAngle); @@ -180,8 +181,9 @@ class DonutRoot extends Component { }; animationActivePie = ({ data, active, selector, element }) => { - const { duration, innerRadius, d3Arc, paddingAngle } = this.asProps; + const { duration, d3Arc, paddingAngle } = this.asProps; const outerRadius = d3Arc.outerRadius()(); + const innerRadius = d3Arc.innerRadius()(); const outerRadiusStartEnd = active ? [+element.dataset['currentRadius'] || outerRadius, outerRadius + increaseFactor] : [+element.dataset['currentRadius'] || outerRadius, outerRadius]; diff --git a/semcore/d3-chart/src/component/Chart/DonutChart.tsx b/semcore/d3-chart/src/component/Chart/DonutChart.tsx index b4772608cc..b2f079c966 100644 --- a/semcore/d3-chart/src/component/Chart/DonutChart.tsx +++ b/semcore/d3-chart/src/component/Chart/DonutChart.tsx @@ -24,7 +24,6 @@ class DonutChartComponent extends AbstractChart< static defaultProps = { direction: 'row-reverse', alignItems: 'flex-start', - innerRadius: 100, marginX: 0, marginY: 0, locale: 'en', diff --git a/semcore/d3-chart/src/component/Chart/DonutChart.type.ts b/semcore/d3-chart/src/component/Chart/DonutChart.type.ts index ed914aca7d..a616edbbbd 100644 --- a/semcore/d3-chart/src/component/Chart/DonutChart.type.ts +++ b/semcore/d3-chart/src/component/Chart/DonutChart.type.ts @@ -32,7 +32,6 @@ export type DonutChartProps = Intergalactic.InternalTypings.EfficientOmit< export type DonutChartDefaultProps = { direction: 'row-reverse'; alignItems: 'flex-start'; - innerRadius: 100; marginX: 0; marginY: 0; locale: 'en'; diff --git a/semcore/d3-chart/src/types/Donut.d.ts b/semcore/d3-chart/src/types/Donut.d.ts index e12d1ce3bc..bc0b0c36d6 100644 --- a/semcore/d3-chart/src/types/Donut.d.ts +++ b/semcore/d3-chart/src/types/Donut.d.ts @@ -9,7 +9,7 @@ import type { TooltipType } from './Tooltip'; export interface IDonutProps extends DonutProps, UnknownProperties {} export type DonutProps = Context & { /** Inner radius - * @default 0 + * @default 12 * */ innerRadius?: number; /** Outer radius diff --git a/stories/components/d3-chart/docs/examples/donut-chart/donut-controlled-highlight.tsx b/stories/components/d3-chart/docs/examples/donut-chart/donut-controlled-highlight.tsx index 5dd17e603e..1e6b92c04b 100644 --- a/stories/components/d3-chart/docs/examples/donut-chart/donut-controlled-highlight.tsx +++ b/stories/components/d3-chart/docs/examples/donut-chart/donut-controlled-highlight.tsx @@ -23,7 +23,7 @@ const Demo = () => { return ( - + {Object.keys(data).map((name, index) => ( { return ( - + diff --git a/stories/components/d3-chart/docs/examples/donut-chart/edge-cases.tsx b/stories/components/d3-chart/docs/examples/donut-chart/edge-cases.tsx index 348bc38b5e..cb282a06f3 100644 --- a/stories/components/d3-chart/docs/examples/donut-chart/edge-cases.tsx +++ b/stories/components/d3-chart/docs/examples/donut-chart/edge-cases.tsx @@ -6,7 +6,7 @@ import DonutMockData from '../../../__mocks__/donut'; const Demo = () => { return ( - + diff --git a/stories/components/d3-chart/docs/examples/donut-chart/legend-and-pattern-fill.tsx b/stories/components/d3-chart/docs/examples/donut-chart/legend-and-pattern-fill.tsx index 6a4ea5cf67..af7e6a0aae 100644 --- a/stories/components/d3-chart/docs/examples/donut-chart/legend-and-pattern-fill.tsx +++ b/stories/components/d3-chart/docs/examples/donut-chart/legend-and-pattern-fill.tsx @@ -45,7 +45,7 @@ const Demo = () => { return ( - + {legendItems.filter((item) => item.checked).length === 0 && } {legendItems.map((item, index) => { return ( diff --git a/stories/components/d3-chart/docs/examples/donut-chart/semi-donut.tsx b/stories/components/d3-chart/docs/examples/donut-chart/semi-donut.tsx index 04c133a034..a7baab3048 100644 --- a/stories/components/d3-chart/docs/examples/donut-chart/semi-donut.tsx +++ b/stories/components/d3-chart/docs/examples/donut-chart/semi-donut.tsx @@ -8,7 +8,7 @@ import DonutMockData from '../../../__mocks__/donut'; const Demo = () => { return ( - +