Skip to content

Commit da03d85

Browse files
authored
Merge pull request #1863 from akiran/final-aug11
fix to swipe issues
2 parents 7260ff7 + 1b45e4b commit da03d85

File tree

3 files changed

+21
-10
lines changed

3 files changed

+21
-10
lines changed

package.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
"scripts": {
1111
"start": "gulp server",
1212
"demo": "SINGLE_DEMO=true gulp server",
13-
"build": "gulp clean && gulp sass && gulp copy && webpack",
14-
"prepublish": "babel ./src --out-dir ./lib && gulp dist",
13+
"build-dev": "gulp clean && gulp sass && gulp copy && webpack",
14+
"lib": "babel ./src --out-dir ./lib",
15+
"build": "npm run lib && gulp dist",
16+
"prepublish": "npm run build",
1517
"test": "npm run lint && jest",
1618
"test:watch": "jest --watch",
1719
"lint": "eslint src",

src/inner-slider.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,11 @@ export class InnerSlider extends React.Component {
387387
clearTimeout(this.animationEndCallback);
388388
}
389389
this.setState(state, () => {
390-
asNavFor && asNavFor.innerSlider.slideHandler(index);
390+
// asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode
391+
if (asNavFor && this.asNavForIndex !== index) {
392+
this.asNavForIndex = index;
393+
asNavFor.innerSlider.slideHandler(index);
394+
}
391395
if (!nextState) return;
392396
this.animationEndCallback = setTimeout(() => {
393397
const { animating, ...firstBatch } = nextState;
@@ -472,6 +476,7 @@ export class InnerSlider extends React.Component {
472476
this.setState(state);
473477
if (triggerSlideHandler === undefined) return;
474478
this.slideHandler(triggerSlideHandler);
479+
this.clickable = true;
475480
if (this.props.verticalSwiping) {
476481
this.enableBodyScroll();
477482
}
@@ -618,7 +623,8 @@ export class InnerSlider extends React.Component {
618623
onMouseEnter: pauseOnHover ? this.onTrackOver : null,
619624
onMouseLeave: pauseOnHover ? this.onTrackLeave : null,
620625
onMouseOver: pauseOnHover ? this.onTrackOver : null,
621-
focusOnSelect: this.props.focusOnSelect ? this.selectHandler : null
626+
focusOnSelect:
627+
this.props.focusOnSelect && this.clickable ? this.selectHandler : null
622628
};
623629

624630
var dots;

src/utils/innerSliderUtils.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ export const slideHandler = spec => {
176176
finalLeft;
177177
let state = {},
178178
nextState = {};
179-
const targetSlide = infinite ? index : clamp(index, 0, slideCount);
179+
const targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);
180180
if (fade) {
181181
if (!infinite && (index < 0 || index >= slideCount)) return {};
182182
if (index < 0) {
@@ -426,10 +426,12 @@ export const swipeEnd = (e, spec) => {
426426
touchThreshold,
427427
verticalSwiping,
428428
listHeight,
429-
currentSlide,
430429
swipeToSlide,
431430
scrolling,
432-
onSwipe
431+
onSwipe,
432+
targetSlide,
433+
currentSlide,
434+
infinite
433435
} = spec;
434436
if (!dragging) {
435437
if (swipe) e.preventDefault();
@@ -461,21 +463,22 @@ export const swipeEnd = (e, spec) => {
461463
onSwipe(swipeDirection);
462464
}
463465
let slideCount, newSlide;
466+
let activeSlide = infinite ? currentSlide : targetSlide;
464467
switch (swipeDirection) {
465468
case "left":
466469
case "up":
467-
newSlide = currentSlide + getSlideCount(spec);
470+
newSlide = activeSlide + getSlideCount(spec);
468471
slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;
469472
state["currentDirection"] = 0;
470473
break;
471474
case "right":
472475
case "down":
473-
newSlide = currentSlide - getSlideCount(spec);
476+
newSlide = activeSlide - getSlideCount(spec);
474477
slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;
475478
state["currentDirection"] = 1;
476479
break;
477480
default:
478-
slideCount = currentSlide;
481+
slideCount = activeSlide;
479482
}
480483
state["triggerSlideHandler"] = slideCount;
481484
} else {

0 commit comments

Comments
 (0)