@cloudflare/component-dropdown
Cloudflare Dropdown Component
Installation
Installation with yarn is recommended
$ yarn add @cloudflare/component-dropdown
Usage
import React from 'react';
import {
Dropdown,
DropdownLink,
DropdownSeparator
} from '@cloudflare/component-dropdown';
import { Button, ButtonGroup } from '@cloudflare/component-button';
import { Code, CodeBlock } from '@cloudflare/component-code';
class DropdownComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
dropdown1Open: false,
dropdown2Open: false
};
}
render() {
return (
<div>
<ButtonGroup>
<Button
type="primary"
onClick={() => this.setState({ dropdown1Open: true })}
>
Open Dropdown 1
</Button>
{this.state.dropdown1Open && (
<Dropdown onClose={() => this.setState({ dropdown1Open: false })}>
<DropdownLink to="/foo">Link to /foo</DropdownLink>
<DropdownLink to="/bar">Link to /bar</DropdownLink>
<DropdownSeparator />
<DropdownLink to="/baz">Link to /baz</DropdownLink>
<DropdownLink to="/bat">Link to /bat</DropdownLink>
<DropdownLink disabled to="/bad">
Disabled dropdown link
</DropdownLink>
</Dropdown>
)}
<Button
type="success"
onClick={() => this.setState({ dropdown2Open: true })}
>
Open Dropdown 2
</Button>
{this.state.dropdown2Open && (
<Dropdown
align="right"
onClose={() => this.setState({ dropdown2Open: false })}
>
<DropdownLink to="/foo">Link to /foo</DropdownLink>
<DropdownLink to="/bar">Link to /bar</DropdownLink>
<DropdownSeparator />
<DropdownLink to="/baz">Link to /baz</DropdownLink>
<DropdownLink to="/bat">Link to /bat</DropdownLink>
</Dropdown>
)}
</ButtonGroup>
<p>
{`You can also optionally pass an align prop with either "left" or
"right"`}
</p>
<CodeBlock>{`<Dropdown align="right" ...>`}</CodeBlock>
<p>
<Code>{`<DropdownLink/>`}</Code> just wraps cf-component-link so you
can use either to to specify a route or pass an onClick handler.
</p>
<CodeBlock>{`<DropdownLink to="/my-route"/>`}</CodeBlock>
<CodeBlock>{`<DropdownLink onClick={this.handleClick}/>`}</CodeBlock>
<p>
Note: to requires that you setup cf-util-route-handler prior to
routing.
</p>
</div>
);
}
}
export default DropdownComponent;