Skip to content

Instantly share code, notes, and snippets.

@renatorib
Last active September 30, 2017 04:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save renatorib/9e582050a1ef00a002bdaea1c28e1792 to your computer and use it in GitHub Desktop.
Save renatorib/9e582050a1ef00a002bdaea1c28e1792 to your computer and use it in GitHub Desktop.
class ToggleOpened extends Component {
state = { opened: false }
toggle = () =>
this.setState(state => ({ opened: !state.opened }))
render() {
return this.props.render({
opened: this.state.opened,
toggle: this.toggle,
})
}
}
const Dropdown = ({ label, items }) => (
<ToggleOpened render={({ opened, toggle }) => (
<Wrapper>
<Button onClick={toggle}>{label}</Button>
{opened && (
<FloatingDiv>
{items.map(item => (
<DropdownItem {...item} key={item.name} />
))}
</FloatingDiv>
)}
</Wrapper>
)} />
)
const Popover = ({ tip, children }) => (
<ToggleOpened render={({ opened, toggle }) => (
<Wrapper>
<div onClick={toggle}>{children}</div>
{opened && <FloatingDiv>{tip}</FloatingDiv>}
</Wrapper>
)} />
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment