1 | import React, { Component } from 'react';
|
2 | import PropTypes from 'prop-types';
|
3 | import Dropdown from './Dropdown';
|
4 | import { omit } from './utils';
|
5 |
|
6 | const omitKeys = ['defaultOpen'];
|
7 |
|
8 | export 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 |
|
38 | UncontrolledDropdown.propTypes = {
|
39 | defaultOpen: PropTypes.bool,
|
40 | onToggle: PropTypes.func,
|
41 | ...Dropdown.propTypes,
|
42 | };
|