1 | import _extends from "@babel/runtime/helpers/esm/extends";
|
2 | import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
|
3 | import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
|
4 | import React, { Component } from 'react';
|
5 | import PropTypes from 'prop-types';
|
6 | import Collapse from './Collapse';
|
7 | import { omit, findDOMElements, defaultToggleEvents, addMultipleEventListeners } from './utils';
|
8 | var omitKeys = ['toggleEvents', 'defaultOpen'];
|
9 | var propTypes = {
|
10 | defaultOpen: PropTypes.bool,
|
11 | toggler: PropTypes.string.isRequired,
|
12 | toggleEvents: PropTypes.arrayOf(PropTypes.string)
|
13 | };
|
14 | var defaultProps = {
|
15 | toggleEvents: defaultToggleEvents
|
16 | };
|
17 |
|
18 | var UncontrolledCollapse =
|
19 |
|
20 | function (_Component) {
|
21 | _inheritsLoose(UncontrolledCollapse, _Component);
|
22 |
|
23 | function UncontrolledCollapse(props) {
|
24 | var _this;
|
25 |
|
26 | _this = _Component.call(this, props) || this;
|
27 | _this.togglers = null;
|
28 | _this.removeEventListeners = null;
|
29 | _this.toggle = _this.toggle.bind(_assertThisInitialized(_this));
|
30 | _this.state = {
|
31 | isOpen: props.defaultOpen || false
|
32 | };
|
33 | return _this;
|
34 | }
|
35 |
|
36 | var _proto = UncontrolledCollapse.prototype;
|
37 |
|
38 | _proto.componentDidMount = function componentDidMount() {
|
39 | this.togglers = findDOMElements(this.props.toggler);
|
40 |
|
41 | if (this.togglers.length) {
|
42 | this.removeEventListeners = addMultipleEventListeners(this.togglers, this.toggle, this.props.toggleEvents);
|
43 | }
|
44 | };
|
45 |
|
46 | _proto.componentWillUnmount = function componentWillUnmount() {
|
47 | if (this.togglers.length && this.removeEventListeners) {
|
48 | this.removeEventListeners();
|
49 | }
|
50 | };
|
51 |
|
52 | _proto.toggle = function toggle(e) {
|
53 | this.setState(function (_ref) {
|
54 | var isOpen = _ref.isOpen;
|
55 | return {
|
56 | isOpen: !isOpen
|
57 | };
|
58 | });
|
59 | e.preventDefault();
|
60 | };
|
61 |
|
62 | _proto.render = function render() {
|
63 | return React.createElement(Collapse, _extends({
|
64 | isOpen: this.state.isOpen
|
65 | }, omit(this.props, omitKeys)));
|
66 | };
|
67 |
|
68 | return UncontrolledCollapse;
|
69 | }(Component);
|
70 |
|
71 | UncontrolledCollapse.propTypes = propTypes;
|
72 | UncontrolledCollapse.defaultProps = defaultProps;
|
73 | export default UncontrolledCollapse; |
\ | No newline at end of file |