Accessible Content Toggle Plugin - jQuery Toggle-Panel
File Size: | 7.69 KB |
---|---|
Views Total: | 131 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

Toggle-Panel is a lightweight jQuery plugin that provides an elegant way to create accessible and mobile-friendly toggleable content (like spoilers and accordions) on the page, with support for ARIA attributes, roles, and keyboard interactions.
More Features:
- Custom toggle mode: Slide, Toggle, or a function.
- Auto closes all panels on mobile devices.
- Auto set focus on the opened panel.
- Custom trigger events: click or mouseover.
- Custom ARIA labels.
How to use it:
1. Enable a button to show/hide a DIV element.
<button type="button" id="trigger-example">Toggle Panel-Example</button> <div id="panel-example" class="panel"> Content To Toggle </div>
2. Hide the DIV element on page load.
.panel { display: none; } .tgp__panel--is-opened { display: block !important; }
3. Determine whether to open the DIV panel on page load.
<button type="button" data-tgp-panel-id="trigger-example" data-tgp-opened="true">Toggle Panel-Example</button> <div id="panel-example" class="panel"> Content To Toggle </div>
4. Load the Toggle-Panel plugin after jQuery.
<script src="/path/to/cdn/jquery.min.js"></script> <script src="/path/to/jquery.toggle-panel.js"></script>
5. Initialize the plugin and done.
$('#trigger-example').togglePanel({ // options here });
6. Use this plugin to create an accessible accordion interface.
<div id="wrapper"> <div> <button type="button" id="trigger-1">Toggle Panel 1</button> <div id="panel-1" class="panel"> Accordion 1 </div> </div> <div> <button type="button" id="trigger-2">Toggle Panel 2</button> <div id="panel-2" class="panel"> Accordion 2 </div> </div> <div> <button type="button" id="trigger-3">Toggle Panel 3</button> <div id="panel-3" class="panel"> Accordion 1 </div> </div> </div>
$('button').togglePanel({ panel: 'next', mode: 'toggle', wrapper: $('#wrapper'), connect: true, });
7. All default plugin options.
$('#trigger-example').togglePanel({ // CSS class prefix prefix : 'tgp', // wrapper of connected panels wrapper: false, // if true, only one panel can be opened connect: false, // next panel or an unique panel ID panel: 'next', // trigger event: 'click' or 'mouseover' event: 'click', // If 'panel' setting = "function", this function will be called findPanel: function() {}, // 'slide', 'toggle', or 'custom' mode: 'slide', // auto move focus to the opened panel autoFocus: true, // allow the trigger button to close its panel selfClose: true, // return focus to the trigger after closing returnFocus: true, // close panel after mouse leaving with delay autoHide: false, // delay in ms delay: 300, // disable clicks on the first levels disableFirstLevel: false, // remove titles from trigger buttons removeTitle: false, // close all panels on mobile devices smallScreenBreakpoint: 767, // labels for accessibility panelLabel: '', closeLabel: 'Collapse', openLabel: 'Expand', // If 'mode' setting = 'custom', these functions will be called customShow: function() {}, customHide: function() {}, });
8. Callbacks.
$('#trigger-example').togglePanel({ onShow: function () {}, onShowEnd: function () {}, onHide: function () {}, onHideEnd: function () {} });
9. API methods.
// remove auto focus on init $('button[id^=trigger]').trigger('no-autofocus.tgp'); // show panel $('button[id^=trigger]').trigger('show.tgp'); // hide panel $('button[id^=trigger]').trigger('hide.tgp'); // destroy $('button[id^=trigger]').trigger('destroy.tgp');
This awesome jQuery plugin is developed by cyril-lamotte. For more Advanced Usages, please check the demo page or visit the official website.