From 57ef62c76a39b39e31b81da44eeb9eb97abed51d Mon Sep 17 00:00:00 2001 From: waterWang Date: Mon, 10 Aug 2026 16:41:07 +0800 Subject: [PATCH] fix(dataZoom): keep slider handle label visible when mouse stays over handle after drag end --- src/component/dataZoom/SliderZoomView.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/component/dataZoom/SliderZoomView.ts b/src/component/dataZoom/SliderZoomView.ts index 7d71520372..cd82290849 100644 --- a/src/component/dataZoom/SliderZoomView.ts +++ b/src/component/dataZoom/SliderZoomView.ts @@ -928,7 +928,7 @@ class SliderZoomView extends DataZoomView { private _onActualMoveZoneDragEnd(event: ZRElementEvent) { (event.target as Displayable).attr('cursor', 'grab'); - this._onDragEnd(); + this._onDragEnd(event); } private _onDragMove(handleIndex: 0 | 1 | 'all', dx: number, dy: number, event: ZRElementEvent) { @@ -952,12 +952,23 @@ class SliderZoomView extends DataZoomView { changed && realtime && this._dispatchZoomAction(true); } - private _onDragEnd() { + private _onDragEnd(e?: ZRElementEvent) { this._dragging = false; if (!this._isOverDataInfoTriggerArea) { // Drag end may occur on draggable bars, where data info should be still shown. - this._showDataInfo(false); + // When the drag ends, if the mouse is still over a handle or the move zone + // (e.g. the user releases without moving the mouse away), keep the label visible. + // This prevents the label from disappearing after a drag-and-release where + // the mouse stays over the handle (mouseout may have fired during drag). + const target = e && e.target; + const displayables = this._displayables; + const isOverDraggable = target === displayables.handles[0] + || target === displayables.handles[1] + || target === displayables.moveZone; + if (!isOverDraggable) { + this._showDataInfo(false); + } } // While in realtime mode and stream mode, dispatch action when