|
@@ -1,7 +1,14 @@
|
|
import { CLASS_ACTIVE, CLASS_NEXT, CLASS_PREV, CLASS_VISIBLE } from '../../../constants/classes';
|
|
import { CLASS_ACTIVE, CLASS_NEXT, CLASS_PREV, CLASS_VISIBLE } from '../../../constants/classes';
|
|
-import { EVENT_CLICK, EVENT_SLIDE_KEYDOWN } from '../../../constants/events';
|
|
|
|
|
|
+import {
|
|
|
|
+ EVENT_ACTIVE,
|
|
|
|
+ EVENT_CLICK, EVENT_HIDDEN,
|
|
|
|
+ EVENT_INACTIVE,
|
|
|
|
+ EVENT_SLIDE_KEYDOWN,
|
|
|
|
+ EVENT_VISIBLE,
|
|
|
|
+} from '../../../constants/events';
|
|
import { fire, init, keydown } from '../../../test';
|
|
import { fire, init, keydown } from '../../../test';
|
|
import { format } from '../../../utils/string';
|
|
import { format } from '../../../utils/string';
|
|
|
|
+import { SlideComponent } from '../Slide';
|
|
|
|
|
|
|
|
|
|
describe( 'Slide', () => {
|
|
describe( 'Slide', () => {
|
|
@@ -27,6 +34,43 @@ describe( 'Slide', () => {
|
|
expect( Slide1.slide.classList.contains( CLASS_ACTIVE ) ).toBe( true );
|
|
expect( Slide1.slide.classList.contains( CLASS_ACTIVE ) ).toBe( true );
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
+ test( 'can emit an event when the slide becomes active.', () => {
|
|
|
|
+ const splide = init( { speed: 0 } );
|
|
|
|
+ const { Slides } = splide.Components;
|
|
|
|
+ const Slide1 = Slides.getAt( 1 );
|
|
|
|
+ const Slide2 = Slides.getAt( 2 );
|
|
|
|
+ const callback = jest.fn();
|
|
|
|
+
|
|
|
|
+ splide.on( EVENT_ACTIVE, callback );
|
|
|
|
+
|
|
|
|
+ splide.go( 1 );
|
|
|
|
+ expect( callback ).toHaveBeenCalledWith( Slide1 );
|
|
|
|
+
|
|
|
|
+ splide.go( 2 );
|
|
|
|
+ expect( callback ).toHaveBeenCalledWith( Slide2 );
|
|
|
|
+ } );
|
|
|
|
+
|
|
|
|
+ test( 'can emit an event when the slide becomes inactive.', () => {
|
|
|
|
+ const splide = init( { speed: 0 } );
|
|
|
|
+ const { Slides } = splide.Components;
|
|
|
|
+ const Slide0 = Slides.getAt( 0 );
|
|
|
|
+ const Slide1 = Slides.getAt( 1 );
|
|
|
|
+ const Slide2 = Slides.getAt( 2 );
|
|
|
|
+ const callback = jest.fn();
|
|
|
|
+
|
|
|
|
+ splide.on( EVENT_INACTIVE, callback );
|
|
|
|
+ splide.on( EVENT_INACTIVE, callback );
|
|
|
|
+
|
|
|
|
+ splide.go( 1 );
|
|
|
|
+ expect( callback ).toHaveBeenCalledWith( Slide0 );
|
|
|
|
+
|
|
|
|
+ splide.go( 2 );
|
|
|
|
+ expect( callback ).toHaveBeenCalledWith( Slide1 );
|
|
|
|
+
|
|
|
|
+ splide.go( 1 );
|
|
|
|
+ expect( callback ).toHaveBeenCalledWith( Slide2 );
|
|
|
|
+ } );
|
|
|
|
+
|
|
test( 'can toggle the `is-visible` class and the aria-hidden attribute.', () => {
|
|
test( 'can toggle the `is-visible` class and the aria-hidden attribute.', () => {
|
|
const splide = init( { speed: 0, perPage: 2 } );
|
|
const splide = init( { speed: 0, perPage: 2 } );
|
|
const { Slides } = splide.Components;
|
|
const { Slides } = splide.Components;
|
|
@@ -54,6 +98,52 @@ describe( 'Slide', () => {
|
|
expect( Slide2.slide.getAttribute( 'aria-hidden' ) ).toBeNull();
|
|
expect( Slide2.slide.getAttribute( 'aria-hidden' ) ).toBeNull();
|
|
} );
|
|
} );
|
|
|
|
|
|
|
|
+ test( 'can emit an event when the slide becomes visible.', () => {
|
|
|
|
+ const splide = init( { speed: 0, perPage: 2 } );
|
|
|
|
+ const { Slides } = splide.Components;
|
|
|
|
+ const Slide0 = Slides.getAt( 0 );
|
|
|
|
+ const Slide1 = Slides.getAt( 1 );
|
|
|
|
+ const Slide2 = Slides.getAt( 2 );
|
|
|
|
+ const Slide3 = Slides.getAt( 3 );
|
|
|
|
+ const callback = jest.fn();
|
|
|
|
+ const visibleSlides = [] as SlideComponent[];
|
|
|
|
+
|
|
|
|
+ splide.on( EVENT_VISIBLE, Slide => {
|
|
|
|
+ callback();
|
|
|
|
+ visibleSlides.push( Slide );
|
|
|
|
+ } );
|
|
|
|
+
|
|
|
|
+ splide.go( '>' );
|
|
|
|
+ expect( visibleSlides ).toEqual( [ Slide2, Slide3 ] );
|
|
|
|
+ visibleSlides.length = 0;
|
|
|
|
+
|
|
|
|
+ splide.go( '<' );
|
|
|
|
+ expect( visibleSlides ).toEqual( [ Slide0, Slide1 ] );
|
|
|
|
+ } );
|
|
|
|
+
|
|
|
|
+ test( 'can emit an event when the slide gets hidden.', () => {
|
|
|
|
+ const splide = init( { speed: 0, perPage: 2 } );
|
|
|
|
+ const { Slides } = splide.Components;
|
|
|
|
+ const Slide0 = Slides.getAt( 0 );
|
|
|
|
+ const Slide1 = Slides.getAt( 1 );
|
|
|
|
+ const Slide2 = Slides.getAt( 2 );
|
|
|
|
+ const Slide3 = Slides.getAt( 3 );
|
|
|
|
+ const callback = jest.fn();
|
|
|
|
+ const hiddenSlides = [] as SlideComponent[];
|
|
|
|
+
|
|
|
|
+ splide.on( EVENT_HIDDEN, Slide => {
|
|
|
|
+ callback();
|
|
|
|
+ hiddenSlides.push( Slide );
|
|
|
|
+ } );
|
|
|
|
+
|
|
|
|
+ splide.go( '>' );
|
|
|
|
+ expect( hiddenSlides ).toEqual( [ Slide0, Slide1 ] );
|
|
|
|
+ hiddenSlides.length = 0;
|
|
|
|
+
|
|
|
|
+ splide.go( '<' );
|
|
|
|
+ expect( hiddenSlides ).toEqual( [ Slide2, Slide3 ] );
|
|
|
|
+ } );
|
|
|
|
+
|
|
test( 'can toggle the `is-prev` and `is-next` classes.', () => {
|
|
test( 'can toggle the `is-prev` and `is-next` classes.', () => {
|
|
const splide = init( { type: 'loop', speed: 0 } );
|
|
const splide = init( { type: 'loop', speed: 0 } );
|
|
const { Slides } = splide.Components;
|
|
const { Slides } = splide.Components;
|