@@ -37,28 +37,35 @@ const ZoomSliderActiveTrackRect = styled('rect')(({ theme }) => ({
37
37
const formatter = Intl . NumberFormat ( undefined , { maximumFractionDigits : 0 } ) ;
38
38
const zoomValueFormatter = ( value : number ) => formatter . format ( value ) ;
39
39
40
+ export interface ChartAxisZoomSliderActiveTrackProps {
41
+ axisId : AxisId ;
42
+ axisDirection : 'x' | 'y' ;
43
+ axisPosition : 'top' | 'bottom' | 'left' | 'right' ;
44
+ zoomData : ZoomData ;
45
+ reverse ?: boolean ;
46
+ valueFormatter ?: ( value : number ) => string ;
47
+ showTooltip : boolean ;
48
+ onPointerEnter ?: ( ) => void ;
49
+ onPointerLeave ?: ( ) => void ;
50
+ }
51
+
40
52
export function ChartAxisZoomSliderActiveTrack ( {
41
53
axisId,
42
54
axisDirection,
43
55
axisPosition,
44
56
zoomData,
45
57
reverse,
46
58
valueFormatter = zoomValueFormatter ,
47
- } : {
48
- axisId : AxisId ;
49
- axisDirection : 'x' | 'y' ;
50
- axisPosition : 'top' | 'bottom' | 'left' | 'right' ;
51
- zoomData : ZoomData ;
52
- reverse : boolean ;
53
- valueFormatter ?: ( value : number ) => string ;
54
- } ) {
59
+ showTooltip,
60
+ onPointerEnter,
61
+ onPointerLeave,
62
+ } : ChartAxisZoomSliderActiveTrackProps ) {
55
63
const { instance, svgRef } = useChartContext < [ UseChartProZoomSignature ] > ( ) ;
56
64
const store = useStore < [ UseChartProZoomSignature ] > ( ) ;
57
65
const drawingArea = useDrawingArea ( ) ;
58
66
const activePreviewRectRef = React . useRef < SVGRectElement > ( null ) ;
59
67
const [ startThumbEl , setStartThumbEl ] = React . useState < SVGRectElement | null > ( null ) ;
60
68
const [ endThumbEl , setEndThumbEl ] = React . useState < SVGRectElement | null > ( null ) ;
61
- const [ showTooltip , setShowTooltip ] = React . useState < null | 'start' | 'end' | 'both' > ( null ) ;
62
69
63
70
const previewThumbWidth =
64
71
axisDirection === 'x' ? ZOOM_SLIDER_THUMB_WIDTH : ZOOM_SLIDER_THUMB_HEIGHT ;
@@ -102,7 +109,6 @@ export function ChartAxisZoomSliderActiveTrack({
102
109
const onPointerUp = ( ) => {
103
110
activePreviewRect . removeEventListener ( 'pointermove' , onPointerMove ) ;
104
111
document . removeEventListener ( 'pointerup' , onPointerUp ) ;
105
- setShowTooltip ( null ) ;
106
112
} ;
107
113
108
114
const onPointerDown = ( event : PointerEvent ) => {
@@ -128,7 +134,6 @@ export function ChartAxisZoomSliderActiveTrack({
128
134
pointerZoomMin = pointerDownZoom - axisZoomData . start ;
129
135
pointerZoomMax = 100 - ( axisZoomData . end - pointerDownZoom ) ;
130
136
131
- setShowTooltip ( 'both' ) ;
132
137
document . addEventListener ( 'pointerup' , onPointerUp ) ;
133
138
activePreviewRect . addEventListener ( 'pointermove' , onPointerMove ) ;
134
139
} ;
@@ -272,8 +277,8 @@ export function ChartAxisZoomSliderActiveTrack({
272
277
y = { previewY + ( axisDirection === 'x' ? previewOffset : 0 ) }
273
278
width = { previewWidth }
274
279
height = { previewHeight }
275
- onPointerEnter = { ( ) => setShowTooltip ( 'both' ) }
276
- onPointerLeave = { ( ) => setShowTooltip ( null ) }
280
+ onPointerEnter = { onPointerEnter }
281
+ onPointerLeave = { onPointerLeave }
277
282
/>
278
283
< ChartAxisZoomSliderThumb
279
284
ref = { setStartThumbEl }
@@ -283,8 +288,8 @@ export function ChartAxisZoomSliderActiveTrack({
283
288
height = { previewThumbHeight }
284
289
orientation = { axisDirection === 'x' ? 'horizontal' : 'vertical' }
285
290
onMove = { onStartThumbMove }
286
- onPointerEnter = { ( ) => setShowTooltip ( 'start' ) }
287
- onPointerLeave = { ( ) => setShowTooltip ( null ) }
291
+ onPointerEnter = { onPointerEnter }
292
+ onPointerLeave = { onPointerLeave }
288
293
placement = "start"
289
294
/>
290
295
< ChartAxisZoomSliderThumb
@@ -295,20 +300,20 @@ export function ChartAxisZoomSliderActiveTrack({
295
300
height = { previewThumbHeight }
296
301
orientation = { axisDirection === 'x' ? 'horizontal' : 'vertical' }
297
302
onMove = { onEndThumbMove }
298
- onPointerEnter = { ( ) => setShowTooltip ( 'end' ) }
299
- onPointerLeave = { ( ) => setShowTooltip ( null ) }
303
+ onPointerEnter = { onPointerEnter }
304
+ onPointerLeave = { onPointerLeave }
300
305
placement = "end"
301
306
/>
302
307
< ChartsTooltipZoomSliderValue
303
308
anchorEl = { startThumbEl }
304
- open = { showTooltip === 'start' || showTooltip === 'both' }
309
+ open = { showTooltip }
305
310
placement = { axisPosition }
306
311
>
307
312
{ valueFormatter ( zoomData . start ) }
308
313
</ ChartsTooltipZoomSliderValue >
309
314
< ChartsTooltipZoomSliderValue
310
315
anchorEl = { endThumbEl }
311
- open = { showTooltip === 'end' || showTooltip === 'both' }
316
+ open = { showTooltip }
312
317
placement = { axisPosition }
313
318
>
314
319
{ valueFormatter ( zoomData . end ) }
0 commit comments