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

coherent-gameface-carousel

v1.4.1

Published

A component for Coherent Labs Gameface.

Downloads

84

Readme

The coherent-gameface-carousel is part of the Gameface custom components suite. As most of the components in this suite it uses slots to allow dynamic content.

Usage

The coherent-gameface-carousel component comes with UMD and CJS builds.

Usage with UMD modules:

<script src="./node_modules/coherent-gameface-carousel/dist/carousel.production.min.js"></script>
  • add the coherent-gameface-carousel component to your html:
<gameface-carousel>
    <div slot="carousel-content">0</div>
    <div slot="carousel-content">1</div>
    <div slot="carousel-content">2</div>
    <div slot="carousel-content">3</div>
    <div slot="carousel-content">4</div>
    <div slot="carousel-content">5</div>
    <div slot="carousel-content">6</div>
    <div slot="carousel-content">7</div>
</gameface-carousel>

This is all! Load the file in Gameface to see the coherent-gameface-carousel.

Usage with JavaScript:

If you wish to import the modules using JavaScript you can remove the script tags which import the components and the coherent-gameface-carousel from the node_modules folder and import them like this:

import { Carousel } from 'coherent-gameface-carousel';

or simply

import 'coherent-gameface-carousel';

Note that this approach requires a module bundler like Webpack or Rollup to resolve the modules from the node_modules folder.

Public API

Properties

currentItemIndex

This is the index of the active item. It returns a number. You can set it and the carousel will scroll to the specified element. You must pass a number corresponding to an existing item in the carousel.

document.querySelector('gameface-carousel').currentItemIndex = 0;

When the currentItemIndex is modified, the carousel will automatically apply the carousel-current-item class to the active item. This class is available for styling purposes on the active item.

items

Returns an array of HTMLElements - the carousel items. Setting it will replace all current items with the ones from the array.

document.querySelector('gameface-carousel').items = [HTMLElementInstance, HTMLElementInstance1, HTMLElementInstanceN, ...];

currentPage

Returns the index of the currently active page. Setting it will scroll the carousel to specified page.

document.querySelector('gameface-carousel').currentPage = 1;

Available Slots

carousel-content

The carousel supports a dynamic slot that is supposed to hold its items - carousel-content. To add an item into this slot specify its slot attribute:

<div slot="carousel-content">7</div>

All elements that have this slot attribute will be initially added to the carousel.

carousel-next and carousel-previous

These slots are reserved for the navigation controls that change the currently active carousel items. By default they are right and left pointing arrows. Set the slot attribute to next or previous to an element to use custom navigation controls:

<gameface-carousel>
    <button slot="carousel-next">Next</div>
    <button slot="carousel-previous">Prev</div>
<gameface-carousel>

Adding items to the carousel

addItem(element, index)

Use the addItem method to add a new item:

Parameters

  • element - the new carousel item that should be added
  • [index] - the index at which to add the new item
const carouselItem = document.createElement('div');
carouselItem.textContent = 'Hello, there!';

document.querySelector('gameface-carousel').addItem(carouselItem);

Removing items from the carousel

removeItem(index)

Use the removeItem method to remove an item:

Parameters

  • [index] - the index of the item that is to be removed, if omitted - will remove the first element
document.querySelector('gameface-carousel').removeItem();

Updating the page size

Use the pageSize setter to change the number of simultaneously visible elements.

document.querySelector('gameface-carousel').pageSize = 3;

Navigating the carousel

Sometimes it may be necessary to navigate the carousel programmatically. This can be achieved by using the next() and previous() properties of the carousel.

For example if we want to use the mouse scroll to navigate:

document.querySelector('gameface-carousel').addEventListener('wheel', (e) => {               
    if (e.deltaY > 0) {
        document.querySelector('gameface-carousel').next();
    } else {
        document.querySelector('gameface-carousel').previous();
    }
});

Or if we want to use the left and right keyboard keys:

document.addEventListener('keydown', (e) => {
    if (e.keyCode === 39) {
        document.querySelector('gameface-carousel').next();
    }
    
    if (e.keyCode === 37) {
        document.querySelector('gameface-carousel').previous();
    }
});

Limitations

Currently all items in the carousel must have the same width and height otherwise the component will not be properly resized.

Usage with data-bindings (Coherent Gameface only)

Using the carousel component with data-binding is straightforward.

We add our data-bindings to the <component-slot> like this:

<gameface-carousel class="carousel-component">
    <div
        slot="carousel-content"
        class="box"
        data-bind-for="item:{{carousel.items}}"
    >
    <div 
        data-bind-value="{{item.id}}"
        data-bind-style-background-color="{{item.color}}">
        </div>
    </div>
</gameface-carousel>

And then we need to re-render the controls:

document.querySelector('gameface-carousel').rerenderControls();

The reason we do that is because, the carousel will intialize before the data-binding and the control won't be rendered properly. The same principle applies every time we change the number of elements in the model, since the carousel controls won't be changed automatically.