@@ -15,7 +15,7 @@ import {
15
15
import { styled } from '@mui/material/styles' ;
16
16
import { useXAxes , useYAxes } from '@mui/x-charts/hooks' ;
17
17
import { rafThrottle } from '@mui/x-internals/rafThrottle' ;
18
- import { ZOOM_SLIDER_SIZE } from '@mui/x-charts/constants' ;
18
+ import { ZOOM_SLIDER_MARGIN } from '@mui/x-charts/constants' ;
19
19
import {
20
20
selectorChartAxisZoomData ,
21
21
UseChartProZoomSignature ,
@@ -54,8 +54,14 @@ interface ChartZoomSliderProps {
54
54
55
55
const ZOOM_SLIDER_BACKGROUND_SIZE = 8 ;
56
56
const ZOOM_SLIDER_FOREGROUND_SIZE = 10 ;
57
- const ZOOM_SLIDER_HANDLE_HEIGHT = ZOOM_SLIDER_SIZE ;
57
+ const ZOOM_SLIDER_HANDLE_HEIGHT = 20 ;
58
58
const ZOOM_SLIDER_HANDLE_WIDTH = 10 ;
59
+ const ZOOM_SLIDER_SIZE = Math . max (
60
+ ZOOM_SLIDER_BACKGROUND_SIZE ,
61
+ ZOOM_SLIDER_FOREGROUND_SIZE ,
62
+ ZOOM_SLIDER_HANDLE_HEIGHT ,
63
+ ZOOM_SLIDER_HANDLE_WIDTH ,
64
+ ) ;
59
65
60
66
/**
61
67
* Renders the zoom slider for a specific axis.
@@ -88,8 +94,8 @@ export function ChartAxisZoomSlider({ axisDirection, axisId }: ChartZoomSliderPr
88
94
x = drawingArea . left ;
89
95
y =
90
96
axis . position === 'bottom'
91
- ? drawingArea . top + drawingArea . height + axis . offset + axisSize
92
- : drawingArea . top - axis . offset - axisSize - ZOOM_SLIDER_SIZE ;
97
+ ? drawingArea . top + drawingArea . height + axis . offset + axisSize + ZOOM_SLIDER_MARGIN
98
+ : drawingArea . top - axis . offset - axisSize - ZOOM_SLIDER_SIZE - ZOOM_SLIDER_MARGIN ;
93
99
reverse = axis . reverse ?? false ;
94
100
} else {
95
101
const axis = yAxis [ axisId ] ;
@@ -102,13 +108,13 @@ export function ChartAxisZoomSlider({ axisDirection, axisId }: ChartZoomSliderPr
102
108
103
109
x =
104
110
axis . position === 'right'
105
- ? drawingArea . left + drawingArea . width + axis . offset + axisSize
106
- : drawingArea . left - axis . offset - axisSize - ZOOM_SLIDER_SIZE ;
111
+ ? drawingArea . left + drawingArea . width + axis . offset + axisSize + ZOOM_SLIDER_MARGIN
112
+ : drawingArea . left - axis . offset - axisSize - ZOOM_SLIDER_SIZE - ZOOM_SLIDER_MARGIN ;
107
113
y = drawingArea . top ;
108
114
reverse = axis . reverse ?? false ;
109
115
}
110
116
111
- const backgroundRectOffset = ( ZOOM_SLIDER_FOREGROUND_SIZE - ZOOM_SLIDER_BACKGROUND_SIZE ) / 2 ;
117
+ const backgroundRectOffset = ( ZOOM_SLIDER_SIZE - ZOOM_SLIDER_BACKGROUND_SIZE ) / 2 ;
112
118
113
119
return (
114
120
< g transform = { `translate(${ x } ${ y } )` } >
@@ -338,9 +344,9 @@ function ChartAxisZoomSliderSpan({
338
344
previewHeight = size ;
339
345
340
346
startHandleX = ( zoomData . start / 100 ) * drawingArea . width ;
341
- startHandleY = ( size - previewHandleHeight ) / 2 ;
347
+ startHandleY = 0 ;
342
348
endHandleX = ( zoomData . end / 100 ) * drawingArea . width ;
343
- endHandleY = ( size - previewHandleHeight ) / 2 ;
349
+ endHandleY = 0 ;
344
350
345
351
if ( reverse ) {
346
352
previewX = drawingArea . width - previewX - previewWidth ;
@@ -357,9 +363,9 @@ function ChartAxisZoomSliderSpan({
357
363
previewWidth = size ;
358
364
previewHeight = ( drawingArea . height * ( zoomData . end - zoomData . start ) ) / 100 ;
359
365
360
- startHandleX = ( size - previewHandleWidth ) / 2 ;
366
+ startHandleX = 0 ;
361
367
startHandleY = drawingArea . height - ( zoomData . start / 100 ) * drawingArea . height ;
362
- endHandleX = ( size - previewHandleWidth ) / 2 ;
368
+ endHandleX = 0 ;
363
369
endHandleY = drawingArea . height - ( zoomData . end / 100 ) * drawingArea . height ;
364
370
365
371
if ( reverse ) {
@@ -373,12 +379,14 @@ function ChartAxisZoomSliderSpan({
373
379
endHandleY -= previewHandleHeight / 2 ;
374
380
}
375
381
382
+ const previewOffset = ( ZOOM_SLIDER_HANDLE_HEIGHT - ZOOM_SLIDER_FOREGROUND_SIZE ) / 2 ;
383
+
376
384
return (
377
385
< React . Fragment >
378
386
< ZoomRangePreviewRect
379
387
ref = { activePreviewRectRef }
380
- x = { previewX }
381
- y = { previewY }
388
+ x = { previewX + ( axisDirection === 'x' ? 0 : previewOffset ) }
389
+ y = { previewY + ( axisDirection === 'x' ? previewOffset : 0 ) }
382
390
width = { previewWidth }
383
391
height = { previewHeight }
384
392
/>
0 commit comments