Accessible Searchable Accordion Plugin - jQuery a11yAccordion
File Size: | 74.4 KB |
---|---|
Views Total: | 3468 |
Last Update: | |
Publish Date: | |
Official Website: | Go to website |
License: | MIT |

a11yAccordion is an advanced, accessible, filterable, configurable jQuery accordion plugin for expanding and contracting content within the webpage.
Features:
- Tab key to switch between accordion headers.
- Enter key to open/close the current accordion panel.
- Filter through accordion header/panel/footer content with a search box.
- Custom styling. Light & Dark themes included.
- Custom accessible labels.
- Semantic markups. Based on HTML unordered list.
- Nested accordions are supported as well.
How to use it:
1. To get started, include jQuery library and the jQuery a11yAccordion plugin on the web page.
<link rel="stylesheet" href="/path/to/dist/css/a11yAccordion.min.css" /> <script src="/path/to/cdn/jquery.min.js"></script> <script src="/path/to/dist/js/a11yAccordion.js"></script>
2. Create an HTML list for your accordion.
<ul id="example" class="a11yAccordion"> <li class="a11yAccordionItem"> <div class="a11yAccordionItemHeader"> Header #1 </div> <div class="a11yAccordionHideArea"> First content </div> </li> <li class="a11yAccordionItem"> <div class="a11yAccordionItemHeader"> Header #2 </div> <div class="a11yAccordionHideArea"> Second content </div> </li> <li class="a11yAccordionItem"> <div class="a11yAccordionItemHeader"> Header #3 </div> <div class="a11yAccordionHideArea"> Third content </div> </li> </ul>
3. Initialize the plugin on the HTML list and done.
const myAccordion = new A11yAccordion({ parentSelector: '#example' });
4. Apply a theme to the accordion using the following CSS classes:
<ul id="example" class="a11yAccordion a11yAccordion-light"> ... Light Theme ... </ul> <ul id="example" class="a11yAccordion a11yAccordion-dark"> ... Dark Theme ... </ul>
5. Config the live search functionality.
const myAccordion = new A11yAccordion({ // enable/disable live search showSearch: true, // hide: hide accordion panels // collapse: collapse accordion panels searchActionType: 'hide', // whether or not to search for content in the collapsed panels overallSearch: false });
5. Decide whether or not to show only one accordion panel at a time. Default: true.
const myAccordion = new A11yAccordion({ showOne: false });
6. Config the expand contract animations.
const myAccordion = new A11yAccordion({ hideEffectStyle: 'linear', speed: 300, });
7. Customize the description for Show/Hide links.
const myAccordion = new A11yAccordion({ hiddenLinkDescription: '' });
<!-- OR --> <div class="a11yAccordionItemHeader" data-a11yAccordion-hiddenLinkDescription="Description Here"> Accordion Panel </div>
8. Default classes, labels, attributes, and IDs.
const myAccordion = new A11yAccordion({ classes: { headerClass: 'a11yAccordionItemHeader', accordionItemClass: 'a11yAccordionItem', hiddenAreaClass: 'a11yAccordionHideArea', showHeaderLabelClass: 'a11yAccordionItemHeaderLinkShowLabel', hideHeaderLabelClass: 'a11yAccordionItemHeaderLinkHideLabel', markedTextClass: 'a11yAccordion-markedText', visibleAreaClass: 'visiblea11yAccordionItem', noResultsDivClass: 'a11yAccordionNoResultsItem', searchDivClass: 'a11yAccordionSearchDiv', headerLinkClass: 'a11yAccordionItemHeaderLink', headerTextClass: 'a11yAccordionItemHeaderText', hiddenHeaderLabelDescriptionClass: 'a11yAccordionItemHeaderLinkHiddenLabel', toggleClass: 'toggle', triangleClass: 'a11yAccordion-triangle', searchClass: 'a11yAccordionSearch', accordionHeaderClass: 'a11yAccordion-header', accordionHideAreaClass: 'a11yAccordion-area' }, labels: { showHeaderLabelText: 'Show', hideHeaderLabelText: 'Hide', searchPlaceholder: 'Search', noResultsText: 'No Results Found', titleText: 'Type your query to search', resultsMessage: 'Number of results found: ', leaveBlankMessage: ' Please leave blank to see all the results.' }, ids: { noResultsDivID: 'a11yAccordion-noResultsItem', searchDivID: 'a11yAccordion-searchPanel', rowIdStringPrefix: 'a11yAccordion-row-' }, attributes: { hiddenLinkDescription: 'data-a11yAccordion-hiddenLinkDescription' } });
9. Callback functions.
const myAccordion = new A11yAccordion({ onAreaShow: function onAreaShow() {}, onAreaHide: function onAreaHide() {}, });
10. API methods.
// collapse an accordion panel myAccordion.collapseRow(rowIndex); // expand an accordion panel myAccordion.uncollapseRow(rowIndex); // toggle an accordion panel myAccordion.toggleRow(rowIndex); // get a panel's element myAccordion.getRowEl(rowIndex);
This awesome jQuery plugin is developed by anvk. For more Advanced Usages, please check the demo page or visit the official website.