Package Exports
- react-accessible-accordion
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-accessible-accordion) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
react-accessible-accordion

Accessible Accordion component for React. Inspired by rc-collapse and react-sanfona. 🔍👌
This is a work in progress. Feel free to contribute. Try a demo now.
Usage
First, grab the package from npm:
npm install --save react-accessible-accordion
# react-accessible-accordion's peerDependencies:
npm install --save react@^15.0.0 react-dom@^15.0.0Then, import the editor and use it in your code. Here is a basic example:
import React from 'react';
import ReactDOM from 'react-dom';
import {
Accordion,
AccordionItem,
AccordionItemTitle,
AccordionItemBody,
} from 'react-accessible-accordion';
import './node_modules/react-accessible-accordion/dist/react-accessible-accordion.css';
const Example = () => (
<Accordion>
<AccordionItem>
<AccordionItemTitle>
<h3>Simple title</h3>
</AccordionItemTitle>
<AccordionItemBody>
<p>
Body content
</p>
</AccordionItemBody>
</AccordionItem>
<AccordionItem>
<AccordionItemTitle>
<h3>Complex title</h3>
<div>With a bit of description</div>
</AccordionItemTitle>
<AccordionItemBody>
<p>
Body content
</p>
</AccordionItemBody>
</AccordionItem>
</Accordion>
);
ReactDOM.render(<Example />, document.querySelector('[data-mount]'));API
Accordion
props:
| name | type | default | description |
|---|---|---|---|
| accordion | Boolean | true | Open only one item at a time or not |
| onChange | Function(keys) | noop | Triggered on change (open/close items) |
| className | String | accordion | CSS class(es) applied to the component |
| activeItems | Array | [] | Indexes (or custom keys) to pre expand items. Can be changed dynamically. Doesn't have the priority against `AccordionItem - expanded` on first render. |
AccordionItem
props:
| name | type | default | description |
|---|---|---|---|
| expanded | Boolean | false | Expands this item on first render |
| className | String | accordion__item | CSS class(es) applied to the component |
| hideBodyClassName | String | null | Class name for hidden body state |
| customKey | String | Custom key to be used as a reference in `Accordion - activeItems` |
AccordionItemTitle
props:
| name | type | default | description |
|---|---|---|---|
| className | String | accordion__title | CSS class(es) applied to the component |
| hideBodyClassName | String | null | Class name for hidden body state |
AccordionItemBody
props:
| name | type | default | description |
|---|---|---|---|
| className | String | accordion__body | CSS class(es) applied to the component |
| hideBodyClassName | String | accordion__body--hidden | Class name for hidden body state |
Accessibility
What this project is doing accessibility-wise?
This project manages two types of Accordions, with single or multiple items open.
Single item
Use this with with props
accordionset totrueonAccordion.
For this type of Accordion, you will get the following role set up on your elements:
- Accordion:
tablist - AccordionItem: no specific role
- AccordionItemTitle:
tab - AccordionItemBody:
tabpanel
Multiple items
For this type of Accordion, you will get the following role set up on your elements:
Use this with with props
accordionset tofalseonAccordion.
- Accordion: no specific role
- AccordionItem: no specific role
- AccordionItemTitle:
button - AccordionItemBody: no specific role
Development
Install
Clone the project on your computer, and install Node. This project also uses nvm.
nvm install
# Then, install all project dependencies.
npm install
# Install the git hooks.
./.githooks/deploy
# Set up a `.env` file with the appropriate secrets.
touch .envWorking on the project
Everything mentioned in the installation process should already be done.
# Make sure you use the right node version.
nvm use
# Start the the development tools in watch mode.
npm run start
# Runs linting.
npm run lint
# Runs tests.
npm run test
# View other available commands with:
npm runRun the demo
Everything mentioned in the installation process should already be done.
# Make sure you use the right node version.
nvm use
# Start the server and the development tools.
npm run start-demoPublish
npm version [TYPE]
git push origin master --tags
npm publishBrowser support
Supported browser / device versions:
| Browser | Device/OS | Version | Notes |
|---|---|---|---|
| Mobile Safari | iOS | latest | |
| Chrome | Android | latest | |
| IE | Windows | 11 | |
| MS Edge | Windows | latest | |
| Chrome | Desktop | latest | |
| Firefox | Desktop | latest | |
| Safari | OSX | latest |