UNPKG

900 BJavaScriptView Raw
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import Dropdown from './Dropdown';
4import { omit } from './utils';
5
6const omitKeys = ['defaultOpen'];
7
8export default class UncontrolledDropdown extends Component {
9 constructor(props) {
10 super(props);
11
12 this.state = { isOpen: props.defaultOpen || false };
13 this.toggle = this.toggle.bind(this);
14 }
15
16 toggle(e) {
17 this.setState(
18 (prevState) => ({ isOpen: !prevState.isOpen }),
19 () => {
20 if (this.props.onToggle) {
21 this.props.onToggle(e, this.state.isOpen);
22 }
23 },
24 );
25 }
26
27 render() {
28 return (
29 <Dropdown
30 isOpen={this.state.isOpen}
31 toggle={this.toggle}
32 {...omit(this.props, omitKeys)}
33 />
34 );
35 }
36}
37
38UncontrolledDropdown.propTypes = {
39 defaultOpen: PropTypes.bool,
40 onToggle: PropTypes.func,
41 ...Dropdown.propTypes,
42};