npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

simple-js-carousel

v0.0.2

Published

A JS carousel that supports keyboard navigation and cleaning up registered event listeners

Downloads

2

Readme

Simple JS Carousel

Before you reach out to a carousel, first consider if you really need it. There are plenty of compeling cases to not use a carousel.

Download the script simple-js-carousel.min.js in dist folder and include it in your html file.

The script expects certain classes to be available by default. For the html,

<div class="sj-carousel-container">
  <div class="sj-carousel-content">
    <div class="sj-carousel-slide">
    ...
    </div>
    ...
    <div class="sj-carousel-indicators"></div>
    <div class="sj-carousel-indicators"></div>
    ...
    <div class="sj-carousel-next"></div>
    <div class="sj-carousel-prev"></div>
  </div>
</div>

add the following script

carousel = new SJCarousel()

and the following styles

.sj-carousel-container {
  overflow: hidden;
}
.sj-carousel-content {
  display: flex;
  /* Update this property to change animation duration */
  transition: transform 1s ease;
}
.sj-carousel-slide {
  flex: 0 0 100%;
}

Arguments

The carousel accepts two arguments:

Container element selector

Optional. The container element for the carousel. It defaults to .sj-carousel-container. You can pass a custom selector or even a dom node.

Options

  • autoScroll - Boolean to automatically scroll the carousel as soon as it is rendered. Dafaults to false
  • visibleCount - The total number of slides that are visible at a time. Defaults to 1
  • keyboardListenerOnDoc - Boolean indicating if the keyboard event listeners should be registered on the document object. Defaults to false

Keyboard navigation

The keyboard listeners are registered on the parent carousel container. To trigger these, the parent container should be in focus. To make a div focussable, add attribute tabindex=0 to the container.

<div class="sj-carousel-container" tabindex=0>

For cases, where it might make sense to simply attach the event listener to the document instead of the container, set keyboardListenerOnDoc to true

Remove all event listeners

You can use any method to hide the carousel html from the web page. A simple way is to set display: none on the sj-carousel-container element. To remove all the attached event listeners, call removeEventListeners on the carousel object returned from new SJCarousel()

carousel.removeEventListeners();

Why another carousel?

Carousels are usually used once on a web page. However, there may be cases where a carousel would have to be removed based on user interactions. It is common to set display: none on the container element and call it a day. But, depending on your use case, this might lead to a bunch of event listeners which are never removed and start leaking memory.

Simple JS Carousel provides an easy method to remove all event listeners attached on the carousel. The script also includes support for keyboard navigation.