From 2d26edb679ddf990f6b330c7c9840d8fd9117e4b Mon Sep 17 00:00:00 2001 From: Mike Hartington Date: Thu, 12 Jan 2017 12:59:33 -0500 Subject: [PATCH] feat(slides): expose more options (#9992) * feat(slides): expose more options Closes #9988 Exposes slidesPerView and spaceBetween. Also documents how to change unexposed options * docs(slides): update advanced usage --- src/components/slides/slides.ts | 55 ++++++++++++++++--- .../slides/test/options/app-module.ts | 46 ++++++++++++++++ src/components/slides/test/options/main.html | 36 ++++++++++++ 3 files changed, 129 insertions(+), 8 deletions(-) create mode 100644 src/components/slides/test/options/app-module.ts create mode 100644 src/components/slides/test/options/main.html diff --git a/src/components/slides/slides.ts b/src/components/slides/slides.ts index c87cad787a..12ec6ce699 100644 --- a/src/components/slides/slides.ts +++ b/src/components/slides/slides.ts @@ -96,6 +96,27 @@ import { ViewController } from '../../navigation/view-controller'; * } * ``` * + * @advanced + * + * There are several options available to create customized slides. Ionic exposes + * the most commonly used options as [inputs](http://learnangular2.com/inputs/). + * In order to use an option that isn't exposed as an input the following code + * should be used, where `freeMode` is the option to change: + * + * ```ts + * class MyPage { + * @ViewChild(Slides) slides: Slides; + * + * ngAfterViewInit() { + * this.slides.freeMode = true; + * } + * } + * + * ``` + * + * To see all of the available options, take a look at the + * [source for slides](https://github.com/driftyco/ionic/blob/master/src/components/slides/slides.ts). + * * @demo /docs/v2/demos/src/slides/ * @see {@link /docs/v2/components#slides Slides Component Docs} * @@ -291,14 +312,25 @@ export class Slides extends Ion { roundLengths = false; // Slides grid - /** - * @private - */ - spaceBetween = 0; - /** - * @private - */ - slidesPerView: number|string = 1; + + @Input() + get spaceBetween() { + return this._spaceBetween; + } + set spaceBetween(val: any) { + this._spaceBetween = parseInt(val, 10); + } + private _spaceBetween = 0; + + @Input() + get slidesPerView() { + return this._slidesPerView; + } + set slidesPerView(val: any) { + this._slidesPerView = parseInt(val, 10); + } + private _slidesPerView = 1; + /** * @private */ @@ -470,11 +502,15 @@ export class Slides extends Ion { paginationHide = false; // Resistance + /** @private */ resistance = true; + /** @private */ resistanceRatio = 0.85; // Progress + /** @private */ watchSlidesProgress = false; + /** @private */ watchSlidesVisibility = false; // Clicks @@ -512,6 +548,7 @@ export class Slides extends Ion { noSwiping = true; // Callbacks + /** @private */ runCallbacksOnInit = true; // Keyboard @@ -810,7 +847,9 @@ export class Slides extends Ion { /** @internal */ _zoom: SlideZoom; + /** @private */ nextButton: HTMLElement; + /** @private */ prevButton: HTMLElement; diff --git a/src/components/slides/test/options/app-module.ts b/src/components/slides/test/options/app-module.ts new file mode 100644 index 0000000000..affa8b0bc9 --- /dev/null +++ b/src/components/slides/test/options/app-module.ts @@ -0,0 +1,46 @@ +import { Component, ViewChild, NgModule } from '@angular/core'; +import { IonicApp, IonicModule, Slides } from '../../../..'; + + +@Component({ + templateUrl: 'main.html' +}) +export class E2EPage { + @ViewChild(Slides) slider: Slides; + + onSlideWillChange(s: Slides) { + console.log(`onSlideWillChange: ${s}`); + } + + onSlideDidChange(s: Slides) { + console.log(`onSlideDidChange: ${s}`); + } + + onSlideDrag(s: Slides) { + console.log(`onSlideDrag: ${s}`); + } + +} + +@Component({ + template: '' +}) +export class E2EApp { + root = E2EPage; +} + +@NgModule({ + declarations: [ + E2EApp, + E2EPage + ], + imports: [ + IonicModule.forRoot(E2EApp) + ], + bootstrap: [IonicApp], + entryComponents: [ + E2EApp, + E2EPage + ] +}) +export class AppModule {} diff --git a/src/components/slides/test/options/main.html b/src/components/slides/test/options/main.html new file mode 100644 index 0000000000..3dc6a2240f --- /dev/null +++ b/src/components/slides/test/options/main.html @@ -0,0 +1,36 @@ + + + + +

Slide 1

+
+ + +

Slide 2

+
+ + +

Slide 3

+
+ + +

Slide 4

+
+ + +

Slide 5

+
+ + +

Slide 6

+
+ +