Package Exports
- halfshot-react-aria-offcanvas
- halfshot-react-aria-offcanvas/dist/index.js
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 (halfshot-react-aria-offcanvas) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
react-aria-offcanvas
Accessible Off-Canvas component for React.js
Demo
https://neosiae.github.io/react-aria-offcanvas/
Installation
Install react-aria-offcanvas using npm:
npm install --save react-aria-offcanvas
Or via yarn:
yarn add react-aria-offcanvas
Usage
import React, { Component, Fragment } from 'react'
import OffCanvas from 'react-aria-offcanvas'
const Navigation = () => (
<nav id="menu">
<ul>
<li>
<a href="#m-i-1">Menu Item 1</a>
</li>
<li>
<a href="#m-i-2">Menu Item 2</a>
</li>
<li>
<a href="#m-i-3">Menu Item 3</a>
</li>
<li>
<a href="#m-i-4">Menu Item 4</a>
</li>
<li>
<a href="#m-i-5">Menu Item 5</a>
</li>
</ul>
</nav>
)
export default class App extends Component {
state = {
isOpen: false,
}
open = () => {
this.setState({ isOpen: true })
}
close = () => {
this.setState({ isOpen: false })
}
render() {
return (
<Fragment>
<button
id="menu-button"
aria-label="Menu"
aria-controls="menu"
aria-expanded={this.state.isOpen}
onClick={this.open}
>
Click here
</button>
<OffCanvas
isOpen={this.state.isOpen}
onClose={this.close}
labelledby="menu-button"
>
<button onClick={this.close}>Close</button>
<Navigation />
</OffCanvas>
</Fragment>
)
}
}Props
The only required property for the component is isOpen, which controls whether the component is displayed or not.
| Prop | Type | Default | Description |
|---|---|---|---|
isOpen |
bool |
false |
Open or close OffCanvas. |
width |
string |
300px |
The width of OffCanvas. |
height |
string |
300px |
The height of OffCanvas. |
position |
string |
left |
Position OffCanvas to the left, right, top or bottom. |
mainContainerSelector |
string |
Allow OffCanvas to push your page. Pass a valid CSS selector of an element that should be pushed. |
|
onClose |
func |
Callback fired when the overlay is clicked or esc key is pressed. | |
closeOnEsc |
bool |
true |
Close OffCanvas on esc key. |
closeOnOverlayClick |
bool |
true |
Close OffCanvas on overlay click. |
lockBodyAfterOpen |
bool |
true |
Lock body overflow on menu open |
trapFocusAfterOpen |
bool |
true |
Trap focus when OffCanvas is open. |
returnFocusAfterClose |
bool |
true |
Return focus to the element that had focus before opening OffCanvas. |
focusFirstChildAfterOpen |
bool |
Set initial focus on the first focusable child inside OffCanvas. | |
focusThisChildAfterOpen |
string |
Set initial focus on a specific child inside OffCanvas. Pass a valid CSS selector of an element that should receive initial focus. | |
style |
object |
{ overlay: {}, content: {} } |
Inline styles object. It has two keys: overlay - overlay styles and content - OffCanvas styles. |
className |
string |
Custom className for OffCanvas. | |
overlayClassName |
string |
Custom className for the overlay. | |
role |
string |
Custom role for OffCanvas. | |
label |
string |
Custom aria-label for OffCanvas. | |
labelledby |
string |
Custom aria-labelledby for OffCanvas. |
License
MIT