Skip to content

Commit

Permalink
Merge pull request #2186 from zzc6332/fix-slider
Browse files Browse the repository at this point in the history
fix: Slider bug (#2171)
  • Loading branch information
DaiQiangReal committed May 15, 2024
2 parents 3a9d10a + 37715c8 commit 00e322d
Showing 1 changed file with 7 additions and 14 deletions.
21 changes: 7 additions & 14 deletions packages/semi-ui/slider/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ export default class Slider extends BaseComponent<SliderProps, SliderState> {
private maxHanleEl: React.RefObject<HTMLSpanElement>;
private dragging: boolean[];
private eventListenerSet: Set<() => void>;
private handleDownEventListenerSet: Set<() => void>;
foundation: SliderFoundation;

constructor(props: SliderProps) {
Expand Down Expand Up @@ -124,6 +125,7 @@ export default class Slider extends BaseComponent<SliderProps, SliderState> {
this.dragging = [false, false];
this.foundation = new SliderFoundation(this.adapter);
this.eventListenerSet = new Set();
this.handleDownEventListenerSet = new Set()
}

get adapter(): SliderAdapter {
Expand Down Expand Up @@ -208,9 +210,9 @@ export default class Slider extends BaseComponent<SliderProps, SliderState> {
getMinHandleEl: () => this.minHanleEl.current,
getMaxHandleEl: () => this.maxHanleEl.current,
onHandleDown: (e: React.MouseEvent) => {
this._addEventListener(document.body, 'mousemove', this.foundation.onHandleMove, false);
this._addEventListener(window, 'mouseup', this.foundation.onHandleUp, false);
this._addEventListener(document.body, 'touchmove', this.foundation.onHandleTouchMove, false);
this.handleDownEventListenerSet.add(this._addEventListener(document.body, 'mousemove', this.foundation.onHandleMove, false));
this.handleDownEventListenerSet.add(this._addEventListener(window, 'mouseup', this.foundation.onHandleUp, false));
this.handleDownEventListenerSet.add(this._addEventListener(document.body, 'touchmove', this.foundation.onHandleTouchMove, false));
},
onHandleMove: (mousePos: number, isMin: boolean, stateChangeCallback = noop, clickTrack = false, outPutValue): boolean | void => {

Expand Down Expand Up @@ -266,8 +268,8 @@ export default class Slider extends BaseComponent<SliderProps, SliderState> {
this.props.onMouseUp?.(e);
e.stopPropagation();
e.preventDefault();
document.body.removeEventListener('mousemove', this.foundation.onHandleMove, false);
document.body.removeEventListener('mouseup', this.foundation.onHandleUp, false);
Array.from(this.handleDownEventListenerSet).forEach((clear) => clear())
this.handleDownEventListenerSet.clear()
},
onHandleUpAfter: () => {
const { currentValue } = this.state;
Expand Down Expand Up @@ -362,9 +364,6 @@ export default class Slider extends BaseComponent<SliderProps, SliderState> {
onMouseLeave={() => {
this.foundation.onHandleLeave();
}}
onMouseUp={e => {
this.foundation.onHandleUp(e);
}}
onKeyUp={e => {
this.foundation.onHandleUp(e);
}}
Expand Down Expand Up @@ -423,9 +422,6 @@ export default class Slider extends BaseComponent<SliderProps, SliderState> {
onMouseLeave={() => {
this.foundation.onHandleLeave();
}}
onMouseUp={e => {
this.foundation.onHandleUp(e);
}}
onKeyUp={e => {
this.foundation.onHandleUp(e);
}}
Expand Down Expand Up @@ -479,9 +475,6 @@ export default class Slider extends BaseComponent<SliderProps, SliderState> {
onMouseLeave={() => {
this.foundation.onHandleLeave();
}}
onMouseUp={e => {
this.foundation.onHandleUp(e);
}}
onKeyUp={e => {
this.foundation.onHandleUp(e);
}}
Expand Down

0 comments on commit 00e322d

Please sign in to comment.