React wrapper around Tether from Hub Spot.
npm install react-tether --save
bower install react-tether --save
import TetherComponent from 'react-tether'
class SimpleDemo extends React.Component {
constructor(props) {
super(props)
this.state = {
isOpen: false
}
}
render() {
const { isOpen } = this.state
return(
<TetherComponent
attachment="top center"
constraints={[{
to: 'scrollParent',
attachment: 'together'
}]}
>
{ /* First child: This is what the item will be tethered to */ }
<button onClick={() => {this.setState({isOpen: !isOpen})}}>
Toggle Tethered Content
</button>
{ /* Second child: If present, this item will be tethered to the the first child */ }
{
isOpen &&
<div>
<h2>Tethered Content</h2>
<p>A paragraph to accompany the title.</p>
</div>
}
</TetherComponent>
)
}
}The first child is used as the Tether's target and the second child (which is optional) is used as Tether's element that will be moved.
The tag that is used to render the Tether element, defaults to div.
Where in the DOM the Tether element is appended. Passes in any valid selector to document.querySelector. Defaults to document.body.
Any valid Tether options.
The following methods are exposed on the component instance:
getTetherInstance(): Tetherdisable(): voidenable(): voidon(event: string, handler: function, ctx: any): voidonce(event: string, handler: function, ctx: any): voidoff(event: string, handler: function): voidposition(): void
<TetherComponent ref={tether => this.tether = tether}>
<Target/>
<Element onResize={() => this.tether && this.tether.position()}
</TetherComponent>clone repo
git clone git@github.com:souporserious/react-tether.git
move into folder
cd ~/react-tether
install dependencies
npm install
run dev mode
npm run dev
open your browser and visit: http://localhost:8080/
