JoshDSommer / nativescript-slides

A NativeScript plugin that is for Intro Tutorials, Image Carousels or any other slide functionality
Other
70 stars 32 forks source link
image-carousel nativescript nativescript-plugin nativescript-slides slide slide-plugin

NativeScript Slides for iOS and Android

npm npm

The plugin formally known as nativescript-intro-slides

Intro slides example:

Nativescript Slides. Click to Play

Image carousel example:

Nativescript Slides. Click to Play

videos by Brad Martin

Example Usage:

XML


    <Slides:SlideContainer id="slides" pageIndicators="true">
            <Slides:Slide class="slide-1">
                <Label text="This is Panel 1"  />
            </Slides:Slide>
            <Slides:Slide class="slide-2">
                <Label text="This is Panel 2"  />
            </Slides:Slide>
            <Slides:Slide class="slide-3">
                <Label text="This is Panel 3"  />
            </Slides:Slide>
            <Slides:Slide class="slide-4">
                <Label text="This is Panel 4"  />
            </Slides:Slide>
            <Slides:Slide class="slide-5">
                <Label text="This is Panel 5"  />
            </Slides:Slide>
    </Slides:SlideContainer>

CSS

.slide-1 {
  background-color: darkslateblue;
}

.slide-2 {
  background-color: darkcyan;
}
.slide-3 {
  background-color: darkgreen;
}

.slide-4 {
  background-color: darkgoldenrod;
}
.slide-5 {
  background-color: darkslategray;
}
label {
  text-align: center;
  width: 100%;
  font-size: 35;
  margin-top: 35;
}

Great for Intros/Tutorials to Image Carousels.

To use the intro slide plugin you need to first import it into your xml layout with xmlns:Slides="nativescript-slides"

when using the intro slide plugin you need at least two <Slides:Slide> views inside of the <Slides:SlideContainer>.

add as many <Slides:Slide> as you want.

Methods for SlideContainer

Attributes for SlideContainer

Indicators

If the property pageIndicators is true you won't see the page indicators anymore as of 2.0.0 right away. there are two css classes exposed that you can setup however you like for active and inactive indicators. below is an example for semi translucent dots.

.slide-indicator-inactive {
  background-color: #fff;
  opacity: 0.4;
  width: 10;
  height: 10;
  margin-left: 2.5;
  margin-right: 2.5;
  margin-top: 0;
  border-radius: 5;
}

.slide-indicator-active {
  background-color: #fff;
  opacity: 0.9;
  width: 10;
  height: 10;
  margin-left: 2.5;
  margin-right: 2.5;
  margin-top: 0;
  border-radius: 5;
}

Events

Angular 2 compatibility

I've started working on a Angular 2 version they can be checked out here: Angular 2 version of slides

If you want to use this plugin with Angular 2 the registerElement from nativescript-angular you will want to set the SlideContainer's property of angular to true. Then in your angular component in the ngAfterViewInit. you will want to have an instance of your slide container to call the function constructView(). Follow the example

Plugin Development Work Flow:

Known issues

How To: Load slides dynamically

You want to hook into the loaded event of the view and then create your view elements.

Demo Code

<Slides:SlideContainer loaded="onSlideContainerLoaded"
import * as slides from 'nativescript-slides/nativescript-slides';

export function onSlideContainerLoaded(args) {
  let slideContainer = <slides.SlideContainer>args.object;

  //Construct the slides
  slideContainer.addChild(getSlide('Page 1', 'slide-1'));
  slideContainer.addChild(getSlide('Page 2', 'slide-2'));
  slideContainer.addChild(getSlide('Page 3', 'slide-3'));
  slideContainer.addChild(getSlide('Page 4', 'slide-4'));
  slideContainer.addChild(getSlide('Page 5', 'slide-5'));
}

function getSlide(labelText: string, className: string) {
  let slide = new slides.Slide();
  slide.className = className;
  let label = new labelModule.Label();
  label.text = labelText;
  slide.addChild(label);

  return slide;
}

Thanks to these awesome contributors!

Brad Martin

Obsessive Inc/Abhijith Reddy

Victor Nascimento

Steve McNiven-Scott

Leo Caseiro

Todd Anglin

Andrew Lo

Raúl Uranga

And thanks to Nathan Walker for setting up the {N} plugin seed that was used to help get this plugin up and running. More info can be found about it here: https://github.com/NathanWalker/nativescript-plugin-seed

Contributing guidelines

Contributing guidelines

License

MIT

for {N} version 2.0.0+