🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

Utility components to help compose React ARIA components.

Others React

Documentation

React ARIA

npm version Dependency Status

A set of utility components to help compose ARIA components in React. Please feel free to file an issue or submit a PR if you feel these can be more ARIA compliant ❤️

Usage

yarn add react-aria

npm install react-aria --save

<script src="https://unpkg.com/react-aria/dist/react-aria.js"></script> (UMD library exposed as `ReactARIA`)

Building a select menu

import { Trigger, Select } from 'react-aria'  const { Manager, OptionList, Option } = Select  class SelectMenu extends Component {   state = {     selection: null   }    _handleSelection = (item, e) => {     this.setState({       selection: item.value,       isOpen: false     })   }    render() {     const { isOpen } = this.state     return (       <Manager>         <Trigger           controls="select-menu"           type="menu"           isOpen={isOpen}           onToggle={() => this.setState({ isOpen: !isOpen })}         >           {this.state.selection || 'Select A Dropdown Item'}         </Trigger>         { isOpen &&           <OptionList             id="select-menu"             onOptionSelection={this._handleSelection}             onRequestClose={() => this.setState({ isOpen: false })}           >             <Option value="apples">Apples</Option>             <Option value="pears">Pears</Option>             <Option value="oranges">Oranges</Option>           </OptionList>         }       </Manager>     )   } }

Building a set of tabs

import { Tabs } from 'react-aria'  const { Manager, TabList, Tab, TabPanel } = Tabs  class TabsDemo extends Component {   state = {     tabs: [{       id: 't1',       title: 'Bacon 🐷',       panel: <div>And eggs 🐔</div>     }, {       id: 't2',       title: 'Zombiez 💀',       panel: <div>Brainz</div>     }, {       id: 't3',       title: 'Samuel 👨🏿',       panel: <div>Samuel L Jackson</div>     }],     activeId: 't2'   }    render() {     const { tabs, activeId } = this.state     return (       <Manager         activeTabId={activeId}         onChange={id => this.setState({ activeId: id })}         className="tab-set"       >         <TabList className="tab-list">           {tabs.map(({ id, title }) =>             <Tab               key={id}               id={id}               isActive={id === activeId}               className={`tab-list-item ${id === activeId ? 'is-active' : ''}`}             >               {title}             </Tab>           )}         </TabList>         <div className="tab-panels">           {tabs.map(({ id, panel }) =>             <TabPanel               key={id}               controlledBy={id}               isActive={id === activeId}               className="tab-panel"             >               {panel}             </TabPanel>           )}         </div>       </Manager>     )   } }

Running Locally

clone repo

git clone [email protected]:souporserious/react-aria.git

move into folder

cd ~/react-aria

install dependencies

npm install

run dev mode

npm run dev

open your browser and visit: http://localhost:8080/

Thank You

Huge thank you to David Clark and all of his ARIA work. Most of the code in here is heavily inspired by what he has done.


You May Also Like