diff --git a/core/src/components/slides/slides.tsx b/core/src/components/slides/slides.tsx
index c7d90072d2..4c1092675e 100644
--- a/core/src/components/slides/slides.tsx
+++ b/core/src/components/slides/slides.tsx
@@ -102,20 +102,17 @@ export class Slides {
*/
@Prop() pager = true;
- render() {
- return (
-
- );
+ componentDidLoad() {
+ let timer: number;
+ clearTimeout(timer);
+ timer = setTimeout(this.initSlides.bind(this), 10);
+ }
+
+ componentDidUnload() {
+ this.init = false;
+
+ this.enableKeyboardControl(false);
+ this.swiper.destroy(true, true);
}
private initSlides() {
@@ -136,133 +133,6 @@ export class Slides {
}
}
- normalizeOptions() {
- // Base options, can be changed
- const swiperOptions = {
- effect: 'slide',
- autoplay: 0,
- direction: 'horizontal',
- initialSlide: 0,
- loop: false,
- pager: false,
- pagination: '.swiper-pagination',
- paginationType: 'bullets',
- parallax: false,
- slidesPerView: 1,
- spaceBetween: 0,
- speed: 300,
- zoom: false,
- slidesPerColumn: 1,
- slidesPerColumnFill: 'column',
- slidesPerGroup: 1,
- centeredSlides: false,
- slidesOffsetBefore: 0,
- slidesOffsetAfter: 0,
- touchEventsTarget: 'container',
- autoplayDisableOnInteraction: true,
- autoplayStopOnLast: false,
- freeMode: false,
- freeModeMomentum: true,
- freeModeMomentumRatio: 1,
- freeModeMomentumBounce: true,
- freeModeMomentumBounceRatio: 1,
- freeModeMomentumVelocityRatio: 1,
- freeModeSticky: false,
- freeModeMinimumVelocity: 0.02,
- autoHeight: false,
- setWrapperSize: false,
- zoomMax: 3,
- zoomMin: 1,
- zoomToggle: true,
- touchRatio: 1,
- touchAngle: 45,
- simulateTouch: true,
- shortSwipes: true,
- longSwipes: true,
- longSwipesRatio: 0.5,
- longSwipesMs: 300,
- followFinger: true,
- onlyExternal: false,
- threshold: 0,
- touchMoveStopPropagation: true,
- touchReleaseOnEdges: false,
- iOSEdgeSwipeDetection: false,
- iOSEdgeSwipeThreshold: 20,
- paginationClickable: false,
- paginationHide: false,
- resistance: true,
- resistanceRatio: 0.85,
- watchSlidesProgress: false,
- watchSlidesVisibility: false,
- preventClicks: true,
- preventClicksPropagation: true,
- slideToClickedSlide: false,
- loopAdditionalSlides: 0,
- noSwiping: true,
- runCallbacksOnInit: true,
- controlBy: 'slide',
- controlInverse: false,
- keyboardControl: true,
- coverflow: {
- rotate: 50,
- stretch: 0,
- depth: 100,
- modifier: 1,
- slideShadows: true
- },
- flip: {
- slideShadows: true,
- limitRotation: true
- },
- cube: {
- slideShadows: true,
- shadow: true,
- shadowOffset: 20,
- shadowScale: 0.94
- },
- fade: {
- crossFade: false
- },
- prevSlideMessage: 'Previous slide',
- nextSlideMessage: 'Next slide',
- firstSlideMessage: 'This is the first slide',
- lastSlideMessage: 'This is the last slide'
- };
-
- // Keep the event options separate, we dont want users
- // overwriting these
- const eventOptions = {
- onSlideChangeStart: this.ionSlideWillChange.emit,
- onSlideChangeEnd: this.ionSlideDidChange.emit,
- onSlideNextStart: this.ionSlideNextStart.emit,
- onSlidePrevStart: this.ionSlidePrevStart.emit,
- onSlideNextEnd: this.ionSlideNextEnd.emit,
- onSlidePrevEnd: this.ionSlidePrevEnd.emit,
- onTransitionStart: this.ionSlideTransitionStart.emit,
- onTransitionEnd: this.ionSlideTransitionEnd.emit,
- onSliderMove: this.ionSlideDrag.emit,
- onReachBeginning: this.ionSlideReachStart.emit,
- onReachEnd: this.ionSlideReachEnd.emit,
- onTouchStart: this.ionSlideTouchStart.emit,
- onTouchEnd: this.ionSlideTouchEnd.emit
- };
-
- // Merge the base, user options, and events together then pas to swiper
- return Object.assign(
- {},
- swiperOptions,
- this.options,
- eventOptions
- );
-
- }
-
- componentDidLoad() {
- let timer: number;
- clearTimeout(timer);
- timer = setTimeout(this.initSlides.bind(this), 10);
- }
-
/**
* Update the underlying slider implementation. Call this if you've added or removed
* child slides.
@@ -389,17 +259,147 @@ export class Slides {
/**
* Enable or disable keyboard control.
*/
- enableKeyboardControl(shouldEnableKeyboard: boolean) {
+ private enableKeyboardControl(shouldEnableKeyboard: boolean) {
if (shouldEnableKeyboard) {
return this.swiper.enableKeyboardControl();
}
this.swiper.disableKeyboardControl();
}
- componentDidUnload() {
- this.init = false;
+ private normalizeOptions() {
+ // Base options, can be changed
+ const swiperOptions = {
+ effect: 'slide',
+ autoplay: 0,
+ direction: 'horizontal',
+ initialSlide: 0,
+ loop: false,
+ pager: false,
+ pagination: '.swiper-pagination',
+ paginationType: 'bullets',
+ parallax: false,
+ slidesPerView: 1,
+ spaceBetween: 0,
+ speed: 300,
+ zoom: false,
+ slidesPerColumn: 1,
+ slidesPerColumnFill: 'column',
+ slidesPerGroup: 1,
+ centeredSlides: false,
+ slidesOffsetBefore: 0,
+ slidesOffsetAfter: 0,
+ touchEventsTarget: 'container',
+ autoplayDisableOnInteraction: true,
+ autoplayStopOnLast: false,
+ freeMode: false,
+ freeModeMomentum: true,
+ freeModeMomentumRatio: 1,
+ freeModeMomentumBounce: true,
+ freeModeMomentumBounceRatio: 1,
+ freeModeMomentumVelocityRatio: 1,
+ freeModeSticky: false,
+ freeModeMinimumVelocity: 0.02,
+ autoHeight: false,
+ setWrapperSize: false,
+ zoomMax: 3,
+ zoomMin: 1,
+ zoomToggle: true,
+ touchRatio: 1,
+ touchAngle: 45,
+ simulateTouch: true,
+ shortSwipes: true,
+ longSwipes: true,
+ longSwipesRatio: 0.5,
+ longSwipesMs: 300,
+ followFinger: true,
+ onlyExternal: false,
+ threshold: 0,
+ touchMoveStopPropagation: true,
+ touchReleaseOnEdges: false,
+ iOSEdgeSwipeDetection: false,
+ iOSEdgeSwipeThreshold: 20,
+ paginationClickable: false,
+ paginationHide: false,
+ resistance: true,
+ resistanceRatio: 0.85,
+ watchSlidesProgress: false,
+ watchSlidesVisibility: false,
+ preventClicks: true,
+ preventClicksPropagation: true,
+ slideToClickedSlide: false,
+ loopAdditionalSlides: 0,
+ noSwiping: true,
+ runCallbacksOnInit: true,
+ controlBy: 'slide',
+ controlInverse: false,
+ keyboardControl: true,
+ coverflow: {
+ rotate: 50,
+ stretch: 0,
+ depth: 100,
+ modifier: 1,
+ slideShadows: true
+ },
+ flip: {
+ slideShadows: true,
+ limitRotation: true
+ },
+ cube: {
+ slideShadows: true,
+ shadow: true,
+ shadowOffset: 20,
+ shadowScale: 0.94
+ },
+ fade: {
+ crossFade: false
+ },
+ prevSlideMessage: 'Previous slide',
+ nextSlideMessage: 'Next slide',
+ firstSlideMessage: 'This is the first slide',
+ lastSlideMessage: 'This is the last slide'
+ };
- this.swiper.destroy(true, true);
- this.enableKeyboardControl(false);
+ // Keep the event options separate, we dont want users
+ // overwriting these
+ const eventOptions = {
+ onSlideChangeStart: this.ionSlideWillChange.emit,
+ onSlideChangeEnd: this.ionSlideDidChange.emit,
+ onSlideNextStart: this.ionSlideNextStart.emit,
+ onSlidePrevStart: this.ionSlidePrevStart.emit,
+ onSlideNextEnd: this.ionSlideNextEnd.emit,
+ onSlidePrevEnd: this.ionSlidePrevEnd.emit,
+ onTransitionStart: this.ionSlideTransitionStart.emit,
+ onTransitionEnd: this.ionSlideTransitionEnd.emit,
+ onSliderMove: this.ionSlideDrag.emit,
+ onReachBeginning: this.ionSlideReachStart.emit,
+ onReachEnd: this.ionSlideReachEnd.emit,
+ onTouchStart: this.ionSlideTouchStart.emit,
+ onTouchEnd: this.ionSlideTouchEnd.emit
+ };
+
+ // Merge the base, user options, and events together then pas to swiper
+ return Object.assign(
+ {},
+ swiperOptions,
+ this.options,
+ eventOptions
+ );
+
+}
+
+ render() {
+ return (
+
+ );
}
}