瀏覽代碼

Bug Fix: Need to shift the carousel when it crosses bounds.

Naotoshi Fujita 3 年之前
父節點
當前提交
bac10d9580
共有 7 個文件被更改,包括 13 次插入9 次删除
  1. 3 2
      dist/js/splide.cjs.js
  2. 3 2
      dist/js/splide.esm.js
  3. 3 2
      dist/js/splide.js
  4. 0 0
      dist/js/splide.min.js
  5. 二進制
      dist/js/splide.min.js.gz
  6. 0 0
      dist/js/splide.min.js.map
  7. 4 3
      src/js/components/Move/Move.ts

+ 3 - 2
dist/js/splide.cjs.js

@@ -1427,10 +1427,11 @@ function Move(Splide2, Components2, options) {
 
   function move(dest, index, prev, callback) {
     var position = getPosition();
+    var crossing = sign(dest - prev) * orient(toPosition(dest) - position) < 0;
 
-    if (dest !== index && canShift(dest > index)) {
+    if ((dest !== index || crossing) && canShift(dest > prev)) {
       cancel();
-      translate(shift(position, dest > index), true);
+      translate(shift(position, dest > prev), true);
     }
 
     set(MOVING);

+ 3 - 2
dist/js/splide.esm.js

@@ -1422,10 +1422,11 @@ function Move(Splide2, Components2, options) {
 
   function move(dest, index, prev, callback) {
     var position = getPosition();
+    var crossing = sign(dest - prev) * orient(toPosition(dest) - position) < 0;
 
-    if (dest !== index && canShift(dest > index)) {
+    if ((dest !== index || crossing) && canShift(dest > prev)) {
       cancel();
-      translate(shift(position, dest > index), true);
+      translate(shift(position, dest > prev), true);
     }
 
     set(MOVING);

+ 3 - 2
dist/js/splide.js

@@ -1420,10 +1420,11 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
 
     function move(dest, index, prev, callback) {
       var position = getPosition();
+      var crossing = sign(dest - prev) * orient(toPosition(dest) - position) < 0;
 
-      if (dest !== index && canShift(dest > index)) {
+      if ((dest !== index || crossing) && canShift(dest > prev)) {
         cancel();
-        translate(shift(position, dest > index), true);
+        translate(shift(position, dest > prev), true);
       }
 
       set(MOVING);

文件差異過大導致無法顯示
+ 0 - 0
dist/js/splide.min.js


二進制
dist/js/splide.min.js.gz


文件差異過大導致無法顯示
+ 0 - 0
dist/js/splide.min.js.map


+ 4 - 3
src/js/components/Move/Move.ts

@@ -12,7 +12,7 @@ import { FADE, LOOP, SLIDE } from '../../constants/types';
 import { EventInterface } from '../../constructors';
 import { Splide } from '../../core/Splide/Splide';
 import { AnyFunction, BaseComponent, Components, Options, TransitionComponent } from '../../types';
-import { abs, ceil, clamp, isUndefined, rect, style } from '../../utils';
+import { abs, ceil, clamp, isUndefined, rect, sign, style } from '../../utils';
 
 
 /**
@@ -91,10 +91,11 @@ export function Move( Splide: Splide, Components: Components, options: Options )
    */
   function move( dest: number, index: number, prev: number, callback?: AnyFunction ): void {
     const position = getPosition();
+    const crossing = sign( dest - prev ) * orient( toPosition( dest ) - position ) < 0;
 
-    if ( dest !== index && canShift( dest > index ) ) {
+    if ( ( dest !== index || crossing ) && canShift( dest > prev ) ) {
       cancel();
-      translate( shift( position, dest > index ), true );
+      translate( shift( position, dest > prev ), true );
     }
 
     set( MOVING );

部分文件因文件數量過多而無法顯示