3.0.0 • Published 1 year ago

@threespot/expand-toggle v3.0.0

Weekly downloads
94
License
MIT
Repository
github
Last release
1 year ago

Expand Toggle

npm Build Status Coverage Status

Simple and accessible expandable functionality, similar to jQuery’s slideToggle() method.

Inspired by:

Install

yarn add @threespot/expand-toggle

Usage

JavaScript

import ExpandToggle from "@threespot/expand-toggle";

document.querySelectorAll("[data-expands]").forEach(el => new ExpandToggle(el));

Markup

<button type="button" data-expands="demo" data-expands-class="is-expanded">
  <span data-expands-text="Close">Open</span>
</button>

<div class="expandable" id="demo">
  <div class="expandable-wrap">
    <p>This content will be hidden to start.</p>
  </div>
</div>

Styles

The following minimum styles are required:

// This class name is just an example
.expandable {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 250ms ease;

  &[aria-hidden="false"],
  .no-js & {
    grid-template-rows: 1fr;
  }

  &-wrap {
    overflow: hidden;
  }
}

Options

data-expands-class defines a class (or multiple classes) to apply to the toggle button and expandable element when expanded

data-expands-text defines button text to use when expanded

data-expanded will expand the element by default

The following options can be set via JavaScript:

new ExpandToggle(el, {
  expandedClasses: "", // string, accepts multiple space-separated classes
  activeToggleText: "", // expanded state toggle button text
  shouldStartExpanded: false, // component starts expanded on init
  onReady: null // ready callback function
});

Events

ready

Since the ready event may be trigger immediately, bind using the onReady option:

const toggle = new ExpandToggle(el, {
  onReady: function() {
    console.log('ready');
  }
});

expand

Triggered when component is expanded

toggle.on('expand', function() {
  console.log('expand');
});

collapse

Triggered when component is collapsed

toggle.on('collapse', function() {
  console.log('collapse');
});

destroy

Triggered when component is destroyed

toggle.on('destroy', function() {
  console.log('destroy');
});

License

This is free software and may be redistributed under the terms of the MIT license.

About Threespot

Threespot is an independent digital agency hell-bent on helping those, and only those, who are committed to helping others. Find out more at https://www.threespot.com.

Threespot

3.0.0

1 year ago

2.1.0

2 years ago

1.6.2

5 years ago

1.6.1

5 years ago

1.6.0

5 years ago

1.5.3

5 years ago

1.5.2

5 years ago

1.5.1

5 years ago

1.5.0

5 years ago

1.4.0

5 years ago

1.3.2

5 years ago

1.3.0

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago

1.1.0

6 years ago

1.0.7

6 years ago

1.0.6

6 years ago

1.0.5

6 years ago

1.0.4

6 years ago

1.0.3

6 years ago

1.0.2

6 years ago

1.0.1

6 years ago

1.0.0

6 years ago