3.4.0 • Published 5 months ago

@yoursurprise/slider v3.4.0

Weekly downloads
-
License
ISC
Repository
github
Last release
5 months ago

React slider

Also known as: Swooper

This package contains a basic modern slider (±2.5kb gzipped). The purpose of this slider is to provide a simple React component which can be controlled in a userfriendly way on mobile, tablet and desktop.

The aim is to keep the slider as basic as possible, while exposing an API that allows more advanced implementations to be realised.

Demo page: https://yoursurprisecom.github.io/slider/

This slider has the following features:

  • Free scroll on mobile with native CSS scroll snapping
  • Drag to scroll on devices with a mouse
  • Buttons to navigate on devices with a mouse
  • Support for multiple variable width slides

Todos (help appreciated):

  • Expand end-to-end test suite
  • Improve accessibility
  • Reduce amount of required tooling

All browsers with support for IntersectionObserver and scroll-snap are supported.

Installation

npm

npm install @yoursurprise/slider --save

yarn

yarn add @yoursurprise/slider

Import the CSS files

import "@yoursurprise/slider/dist/index.css";

Implement the Slider

import {Slider} from '@yoursurprise/slider';
import '@yoursurprise/slider/dist/index.css';

export default function YourComponent() {
    return (
        <Slider>
            <div>1</div>
            <div>2</div>
            <div>3</div>
            <div>4</div>
        </Slider>
    );
}

Configuration

OptionTypeRequiredDefaultDescription
hideNavigationButtonsbooleanfalsefalseAlways hides the navigation buttons
initialSlideIndexnumberfalse0Open the Slider at a specific index
onSlidefunctionfalseundefinedA callback function that is called when the user slides
directionstringfalsehorizontalDirection of the slider: 'horizontal' or 'vertical'

API

API methodTypeReturnsDescription
getFirstFullyVisibleSlideIndexfunctionnumberRetrieve the first fully visible slide index
getLastFullyVisibleSlideIndexfunctionnumberRetrieve the last fully visible slide index
scrollToSlidefunctionvoidScroll the slider to a specific slide
scrollToNextSlidefunctionvoidScroll the slider to the next slide
scrollToPreviousSlidefunctionvoidScroll the slider to the previous slide

Example on how to access the slider API:

export default function YourComponent() {
    const sliderApi = useRef();

    useEffect(() => {
        if (sliderApi.current) {
            sliderApi.current.getFirstFullyVisibleSlideIndex();
        }
    }, [sliderApi.current]);

    return (
        <Slider ref={sliderApi}>
            <div>1</div>
            <div>2</div>
            <div>3</div>
            <div>4</div>
        </Slider>
    );
}

Development

End-to-end tests

Prior to developing or running end-to-end tests, install the browsers in which the tests will run:

npx playwright install

Afterwards, the tests can be run using:

npm run e2e-tests

Or alternatively the test interface can be opened using:

npm run e2e-tests-ui

3.4.0-beta.2

5 months ago

3.4.0

5 months ago

3.4.0-beta.1

1 year ago

3.3.0

1 year ago

3.2.0

1 year ago

3.2.0-beta.4

1 year ago

3.1.2

2 years ago

2.3.0

2 years ago

2.3.4-beta.1

2 years ago

2.3.2-beta.1

2 years ago

2.3.2

2 years ago

2.3.1

2 years ago

2.3.3

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.2.0-beta.2

2 years ago

3.2.0-beta.3

2 years ago

3.2.0-beta.1

2 years ago

3.0.0

2 years ago

2.2.0-beta.1

2 years ago

2.2.0-beta.2

2 years ago

2.2.0-beta.3

2 years ago

2.2.0-beta.4

2 years ago

2.2.0

2 years ago

2.0.2-beta.2

2 years ago

2.1.0

2 years ago

2.1.0-beta.2

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

0.0.21

2 years ago

0.0.22

2 years ago

1.0.3

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

0.0.20

2 years ago

0.0.19

2 years ago

0.0.18

2 years ago

0.0.17

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.13

2 years ago

0.0.12

3 years ago

0.0.11

3 years ago

0.0.10

3 years ago

0.0.9

3 years ago

0.0.8

3 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago