@@ -10,12 +10,13 @@ import type {
1010 ChartXAxis ,
1111 ChartYAxis ,
1212 TooltipDataChunk ,
13+ TooltipDataChunkSankey ,
1314 TreemapSeriesData ,
1415 WaterfallSeriesData ,
1516} from '../../types' ;
1617import { block , getDataCategoryValue , getWaterfallPointSubtotal } from '../../utils' ;
1718
18- const b = block ( 'd3- tooltip' ) ;
19+ const b = block ( 'tooltip' ) ;
1920
2021type Props = {
2122 hovered : TooltipDataChunk [ ] ;
@@ -55,7 +56,9 @@ const getXRowData = (data: ChartSeriesData, xAxis?: ChartXAxis) => getRowData('x
5556const getYRowData = ( data : ChartSeriesData , yAxis ?: ChartYAxis ) => getRowData ( 'y' , data , yAxis ) ;
5657
5758const getMeasureValue = ( data : TooltipDataChunk [ ] , xAxis ?: ChartXAxis , yAxis ?: ChartYAxis ) => {
58- if ( data . every ( ( item ) => [ 'pie' , 'treemap' , 'waterfall' ] . includes ( item . series . type ) ) ) {
59+ if (
60+ data . every ( ( item ) => [ 'pie' , 'treemap' , 'waterfall' , 'sankey' ] . includes ( item . series . type ) )
61+ ) {
5962 return null ;
6063 }
6164
@@ -72,7 +75,8 @@ export const DefaultContent = ({hovered, xAxis, yAxis}: Props) => {
7275 return (
7376 < React . Fragment >
7477 { measureValue && < div > { measureValue } </ div > }
75- { hovered . map ( ( { data, series, closest} , i ) => {
78+ { hovered . map ( ( seriesItem , i ) => {
79+ const { data, series, closest} = seriesItem ;
7680 const id = `${ get ( series , 'id' ) } _${ i } ` ;
7781 const color = get ( series , 'color' ) ;
7882
@@ -144,6 +148,22 @@ export const DefaultContent = ({hovered, xAxis, yAxis}: Props) => {
144148 </ div >
145149 ) ;
146150 }
151+ case 'sankey' : {
152+ const { target, data : source } = seriesItem as TooltipDataChunkSankey ;
153+ const value = source . links . find ( ( d ) => d . name === target ?. name ) ?. value ;
154+
155+ return (
156+ < div key = { id } className = { b ( 'content-row' ) } >
157+ < div
158+ className = { b ( 'color' ) }
159+ style = { { backgroundColor : source . color } }
160+ />
161+ < div style = { { display : 'flex' , gap : 8 , verticalAlign : 'center' } } >
162+ { source . name } < span > →</ span > { target ?. name } : { value }
163+ </ div >
164+ </ div >
165+ ) ;
166+ }
147167 default : {
148168 return null ;
149169 }
0 commit comments