Skip to content

tobytheghost/preact-glide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Preact Glide

A simple wrapper for creating Glide JS carousels with Preact components

Contents

Installation

npm install preact-glide

Basic Example

const Carousel = require('preact-glide')

const App = () => {
  return (
    <Carousel>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

Styles

Component

Automatically include styles. Uses glideClass if set.

const App = () => {
  return <Carousel styles>{slides}</Carousel>
}

Import

Less Import

@import './node_modules/preact-glide/styles/carousel.less';

Overriding default className

In the case that you are using a non-standard className (when overriding glideClass prop) you can override the default @glideClass less variable as follows:

@import './node_modules/preact-glide/styles/carousel.less';
@glideClass: ~'.new-class';

Scss Import

@import './node_modules/preact-glide/styles/carousel.scss';

Overriding default className

In the case that you are using a non-standard className (when overriding glideClass prop) you can override the default $glideClass less variable as follows:

@import './node_modules/preact-glide/styles/carousel.scss';
$glideClass: '.new-class';

Props

glideClass

(String)

Used to override the default Glide className glide.

Example:

const App = () => {
  return (
    <Carousel glideClass={'new-class'}>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

glideOptions

(Object)

Glide JS options object: https://glidejs.com/docs/options/

glideComponents

(Object)

Glide JS Components object: https://glidejs.com/docs/extending-components/

glideEvents

(Array)

List of Glide events with callbacks. Events are passed in the following format:

{
  event: '' // Event name
  cb: () => {} // Callback function
}

Example:

const glideEvents = [
  {
    event: 'run.after'
    cb: () => alert('Hello, world!')
  }
]

arrows

(Boolean | Component)

Set true to use default component.

Example (Default):

const App = () => {
  return (
    <Carousel arrows>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

Example (Custom Component):

const CustomArrows = () => <div>Arrows</div>

const App = () => {
  return (
    <Carousel arrows={<CustomArrows />}>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

bullets

(Boolean | Component)

Set true to use default component.

Example (Default):

const App = () => {
  return (
    <Carousel bullets>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

Example (Custom Component):

const CustomBullets = () => <div>Bullets</div>

const App = () => {
  return (
    <Carousel bullets={<CustomBullets />}>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

controls

(Boolean | Component)

Set true to use default component.

Example (Default):

const App = () => {
  return (
    <Carousel controls>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

Example (Custom Component):

const CustomControls = () => <div>Controls</div>

const App = () => {
  return (
    <Carousel controls={<CustomControls />}>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

styles

(Boolean)

Set true to include default styles - uses glideClass by default.

Example:

const Carousel = require('preact-glide')

const App = () => {
  return (
    <Carousel styles>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

title

(Component)

Used to pass in a component that sits above the carousel.

Example:

const Carousel = require('preact-glide')

const Title = () => <div>Title</div>

const App = () => {
  return (
    <Carousel title={<Title />}>
      {slides.map(slide => (
        <div>Slide</div>
      ))}
    </Carousel>
  )
}

Slide Events

onView

A function that will fire when the slide comes into view.

Note: The onView prop must be on the top most element.

Example:

const Carousel = require('preact-glide')

const App = () => {
  return (
    <Carousel>
      {slides.map(slide => (
        <div onView={() => alert('Viewed')}>Slide</div>
      ))}
    </Carousel>
  )
}

onClick

Bypasses a slight bug with GlideJs where dragging the top most element would also count as a 'click'.

Overrides the default onClick property on the top most element. Fires the function only when a 'click' occurs, not on 'drag'.

Note: Only overrides the onClick for the top most element.

Example:

const Carousel = require('preact-glide')

const App = () => {
  return (
    <Carousel>
      {slides.map(slide => (
        <div onClick={() => alert('Clicked')}>Slide</div>
      ))}
    </Carousel>
  )
}

Components

Single components can be exported from preact-glide/components

const {
  Arrows,
  Bullets,
  Container,
  Controls,
  Title,
  Track
} = require('preact-glide/components')

Arrows

  • glideClass - Override default glide class
  • arrows - Override default component
const { Arrows } = require('preact-glide/components')

const App = () => {
  return <Arrows />
}

Bullets

  • glideClass - Override default glide class
  • bullets - Override default component
  • children - Array of Slides
const { Bullets } = require('preact-glide/components')

const App = () => {
  return <Bullets>{arrayOfSlides}</Bullets>
}

Container

  • glideClass - Override default glide class
const { Container } = require('preact-glide/components')

const App = () => {
  return <Container />
}

Controls

  • glideClass - Override default glide class
  • controls - Override default component
const { Controls } = require('preact-glide/components')

const App = () => {
  return <Controls />
}

Title

  • glideClass - Override default glide class
  • title - Component or string to be rendered
const { Title } = require('preact-glide/components')

const App = () => {
  return <Title />
}

Track

  • glideClass - Override default glide class
  • children - Array of Slides
const { Track } = require('preact-glide/components')

const App = () => {
  return (
    <Track>
      {arrayOfSlides}
    <Track/>
  )
}

Hooks

The hooks can be exported from preact-glide/hooks

const { useGlide } = require('preact-glide/hooks')

useGlide

Takes an object as a parameter with the following properties

const { useGlide } = require('preact-glide/hooks')

const App = () => {
  const carouselRef = useRef()

  useGlide({ carouselRef })

  return (
    <div className={`glide`} ref={carouselRef}>
      <div className={`glide__track`} data-glide-el='track'>
        <ul className={`glide__slides`}>
          <li className={`glide__slide`}>Slide</li>
        </ul>
      </div>
    </div>
  )
}

Note: HTML structure inside carouselRef will need to contain the glide structure and classes

About

Glide JS wrapper for Preact

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published