UNPKG

toggle-js

Version:

A simple toggle script for menus, accordions, navigation, and more.

60 lines (50 loc) 2.32 kB
# What is Toggle? Toggle is a lightweight JavaScript module that provides simple toggle interaction functionality using the accessible [`aria-expanded`](https://www.w3.org/TR/wai-aria/states_and_properties#aria-expanded) HTML attribute. Toggle is pure JavaScript with no dependencies, and can be easily implemented into any workflow or framework. # Getting Started The easiest way to start using Toggle is to import via [npm](https://www.npmjs.com/): ```sh npm i toggle-js ``` Once installed, use Toggle in your scripts: ```js import Toggle from 'toggle-js' let toggle = new Toggle() ``` Alternatively, you may [download the minified script](https://raw.githubusercontent.com/oldrivercreative/toggle/master/dist/toggle.js) and add it to your solution manually. ### Creating Toggles Once installed, create Toggle instances using `new Toggle()`: ```js let toggle = new Toggle() ``` ### Toggling Once created, toggle **targets** (by default any element with a class of `toggle`) gain an `aria-expanded` attribute, indicating the **expanded** state (`true` or `false`). Adjacent toggle **buttons** (by default any `<button>`) will toggle the expanded state when clicked. ### Presentation Toggle alters the `aria-expanded` attribute of the toggle target and may add or remove classes from toggle targets, buttons, and parents. You must handle the presentation of these states in your stylesheet. For example: ```css [aria-expanded="false"] { display: none; } ``` # Configuration You may pass in a configuration object when instantiating new Toggles. All configuration options are fully documented in [options.js](https://github.com/oldrivercreative/toggle/blob/master/src/options.js). A succinct list of configuration options and their default values are listed below: ```js let toggle = new Toggle({ blur: false, blurFilter: '.toggle, .toggle *, button, button *', buttonClass: null, buttonClassExpanded: null, buttonContent: 'Toggle', buttonSelector: 'button', createButtons: false, parentClass: null, parentClassExpanded: null, scoped: true, single: false, singleSibling: false, targetClass: null, targetClassExpanded: null, targetSelector: '.toggle' }) ``` ### Examples See [Toggle Recipes](https://oldrivercreative.github.io/toggle/) for common examples of Toggle configuration.