@@ -12,6 +12,7 @@ type CustomChartTooltipContentProps = Omit<
12
12
> & {
13
13
formatter ?: ( value : number , index : number ) => string ;
14
14
showTotal ?: boolean ;
15
+ chartWidth ?: number ;
15
16
} ;
16
17
export interface OpenTelemetryChartTooltipContentProps extends CustomChartTooltipContentProps { }
17
18
@@ -25,6 +26,7 @@ export const OpenTelemetryChartTooltipContent = ({
25
26
labelFormatter = ( label ) => format ( label , 'HH:mm:ss' ) ,
26
27
formatter = ( value ) => `${ value } ` ,
27
28
showTotal = false ,
29
+ chartWidth,
28
30
} : OpenTelemetryChartTooltipContentProps ) => {
29
31
const renderTooltipLabel = ( ) => {
30
32
if ( hideLabel || ! payload ?. length ) {
@@ -54,9 +56,14 @@ export const OpenTelemetryChartTooltipContent = ({
54
56
55
57
return (
56
58
active && (
57
- < div className = "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl w-max" >
59
+ < div
60
+ className = "grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl"
61
+ style = { {
62
+ maxWidth : chartWidth ? chartWidth * 0.8 : 300 ,
63
+ } }
64
+ >
58
65
{ renderTooltipLabel ( ) }
59
- < div className = "grid gap-1.5 " >
66
+ < div className = "overflow-hidden " >
60
67
{ tooltipPayload ?. map ( ( item , index ) => {
61
68
const indicatorColor = item . color ;
62
69
// const nestLabel = payload.length === 1 && indicator !== 'dot';
@@ -65,44 +72,39 @@ export const OpenTelemetryChartTooltipContent = ({
65
72
< div
66
73
key = { item . dataKey }
67
74
className = { cn (
68
- 'flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground' ,
75
+ 'flex whitespace-nowrap w-full gap-1.5 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground items-center ' ,
69
76
indicator === 'dot' && 'items-center' ,
70
77
) }
71
78
>
72
- < >
73
- < div
74
- className = { cn (
75
- 'shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]' ,
76
- {
77
- 'h-2.5 w-2.5' : indicator === 'dot' ,
78
- 'w-1' : indicator === 'line' ,
79
- 'w-0 border-[1.5px] border-dashed bg-transparent' : indicator === 'dashed' ,
80
- 'my-0.5' : indicator === 'dashed' ,
81
- } ,
82
- ) }
83
- style = {
84
- {
85
- '--color-bg' : indicatorColor ,
86
- '--color-border' : indicatorColor ,
87
- } as React . CSSProperties
88
- }
89
- />
90
- < div
91
- className = { cn (
92
- 'flex flex-1 justify-between leading-none' ,
93
- // nestLabel ? 'items-end' : 'items-center',
94
- ) }
95
- >
96
- < div className = "grid gap-1.5" >
97
- < span className = "text-muted-foreground" > { item . name } </ span >
98
- </ div >
99
- { item . value && (
100
- < span className = "font-mono font-medium tabular-nums text-foreground" >
101
- { formatter ( item . value as number , index ) }
102
- </ span >
103
- ) }
79
+ < div
80
+ className = { cn ( 'shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]' , {
81
+ 'h-2.5 w-2.5' : indicator === 'dot' ,
82
+ 'w-1 h-3' : indicator === 'line' ,
83
+ 'w-0 border-[1.5px] border-dashed bg-transparent' : indicator === 'dashed' ,
84
+ 'my-0.5' : indicator === 'dashed' ,
85
+ } ) }
86
+ style = {
87
+ {
88
+ '--color-bg' : indicatorColor ,
89
+ '--color-border' : indicatorColor ,
90
+ } as React . CSSProperties
91
+ }
92
+ />
93
+ < div
94
+ className = { cn (
95
+ 'inline-flex overflow-hidden w-full' ,
96
+ // nestLabel ? 'items-end' : 'items-center',
97
+ ) }
98
+ >
99
+ < div className = "overflow-hidden text-ellipsis mr-auto" >
100
+ < span className = "text-muted-foreground" > { item . name } </ span >
104
101
</ div >
105
- </ >
102
+ { item . value && (
103
+ < span className = "font-mono font-medium tabular-nums text-foreground" >
104
+ { formatter ( item . value as number , index ) }
105
+ </ span >
106
+ ) }
107
+ </ div >
106
108
</ div >
107
109
) ;
108
110
} ) }
0 commit comments