Переглянути джерело

Bug Fix: The next/prev index was incorrect when the perMove option was available.

NaotoshiFujita 3 роки тому
батько
коміт
595dd6f3b4

+ 1 - 1
dist/js/splide.js

@@ -1691,7 +1691,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
           }
         } else {
           if (!isLoop && !incremental && dest !== from) {
-            dest = toIndex(toPage(from) + (dest < from ? -1 : 1));
+            dest = perMove ? dest : toIndex(toPage(from) + (dest < from ? -1 : 1));
           }
         }
       } else {

Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/js/splide.js.map


Різницю між файлами не показано, бо вона завелика
+ 0 - 0
dist/js/splide.min.js


BIN
dist/js/splide.min.js.gz


+ 1 - 1
src/js/components/Controller/Controller.ts

@@ -227,7 +227,7 @@ export function Controller( Splide: Splide, Components: Components, options: Opt
         }
       } else {
         if ( ! isLoop && ! incremental && dest !== from ) {
-          dest = toIndex( toPage( from ) + ( dest < from ? -1 : 1 ) );
+          dest = perMove ? dest : toIndex( toPage( from ) + ( dest < from ? -1 : 1 ) );
         }
       }
     } else {

+ 26 - 0
src/js/components/Controller/test/getAdjacent.test.ts

@@ -17,6 +17,32 @@ describe( 'Controller#getAdjacent()', () => {
     expect( Controller.getPrev() ).toBe( 2 );
   } );
 
+  test( 'can return the index of the next/previous page.', () => {
+    const splide = init( { speed: 0, perPage: 3 } );
+    const { Controller } = splide.Components;
+
+    expect( Controller.getNext() ).toBe( 3 );
+    expect( Controller.getPrev() ).toBe( -1 );
+
+    splide.go( 3 );
+
+    expect( Controller.getNext() ).toBe( 6 );
+    expect( Controller.getPrev() ).toBe( 0 );
+  } );
+
+  test( 'can return the next/previous index with respecting the perMove option.', () => {
+    const splide = init( { speed: 0, perPage: 3, perMove: 1 } );
+    const { Controller } = splide.Components;
+
+    expect( Controller.getNext() ).toBe( 1 );
+    expect( Controller.getPrev() ).toBe( -1 );
+
+    splide.go( 3 );
+
+    expect( Controller.getNext() ).toBe( 4 );
+    expect( Controller.getPrev() ).toBe( 2 );
+  } );
+
   test( 'can return -1 if there is no adjacent slide.', () => {
     const splide = init( { speed: 0 } );
     const { Controller } = splide.Components;

+ 3 - 2
src/js/test/php/examples/default.php

@@ -19,8 +19,9 @@ $settings = get_settings();
   <script>
     document.addEventListener( 'DOMContentLoaded', function () {
       var splide = new Splide( '#splide01', {
-        type   : 'loop',
-        perPage: 2,
+        // type   : 'loop',
+        perPage: 3,
+        // perMove: 1,
         gap    : '1.5rem',
         drag   : 'free',
         height : 200,

Деякі файли не було показано, через те що забагато файлів було змінено