UNPKG

731 BJavaScriptView Raw
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import Popover from './Popover';
4import { omit } from './utils';
5
6const omitKeys = ['defaultOpen'];
7
8export default class UncontrolledPopover 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() {
17 this.setState((prevState) => ({ isOpen: !prevState.isOpen }));
18 }
19
20 render() {
21 return (
22 <Popover
23 isOpen={this.state.isOpen}
24 toggle={this.toggle}
25 {...omit(this.props, omitKeys)}
26 />
27 );
28 }
29}
30
31UncontrolledPopover.propTypes = {
32 defaultOpen: PropTypes.bool,
33 ...Popover.propTypes,
34};