fix(slider): keep pointer position after pointerleave (#807)

This commit is contained in:
rahim
2026-03-09 22:20:52 -07:00
committed by GitHub
parent 747d15910b
commit cd019cbbf2
2 changed files with 6 additions and 6 deletions
+3 -3
View File
@@ -112,10 +112,10 @@ export function createSlider(options: SliderOptions): SliderApi {
function endDrag(): void {
if (!isDragging) {
input.patch({ pointing: false, pointerPercent: 0 });
input.patch({ pointing: false });
} else {
isDragging = false;
input.patch({ dragging: false, pointing: false, pointerPercent: 0 });
input.patch({ dragging: false, pointing: false });
options.onDragEnd?.();
}
@@ -211,7 +211,7 @@ export function createSlider(options: SliderOptions): SliderApi {
onPointerLeave() {
if (!isNull(capturedPointerId)) return;
input.patch({ pointing: false, pointerPercent: 0 });
input.patch({ pointing: false });
},
onLostPointerCapture() {
@@ -348,7 +348,7 @@ describe('createSlider', () => {
flush();
expect(slider.input.current.pointing).toBe(false);
expect(slider.input.current.pointerPercent).toBe(0);
expect(slider.input.current.pointerPercent).toBe(25);
slider.destroy();
});
@@ -413,7 +413,7 @@ describe('createSlider', () => {
slider.destroy();
});
it('resets on pointerleave', () => {
it('clears pointing on pointerleave and keeps last pointerPercent', () => {
const el = createMockElement({ left: 0, width: 200 });
const slider = createSlider(createOptions({ getElement: () => el }));
@@ -422,7 +422,7 @@ describe('createSlider', () => {
flush();
expect(slider.input.current.pointing).toBe(false);
expect(slider.input.current.pointerPercent).toBe(0);
expect(slider.input.current.pointerPercent).toBe(30);
slider.destroy();
});