Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

73 строки
2.1 KiB

  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
  3. import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
  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. var UncontrolledCollapse =
  18. /*#__PURE__*/
  19. function (_Component) {
  20. _inheritsLoose(UncontrolledCollapse, _Component);
  21. function UncontrolledCollapse(props) {
  22. var _this;
  23. _this = _Component.call(this, props) || this;
  24. _this.togglers = null;
  25. _this.removeEventListeners = null;
  26. _this.toggle = _this.toggle.bind(_assertThisInitialized(_assertThisInitialized(_this)));
  27. _this.state = {
  28. isOpen: props.defaultOpen || false
  29. };
  30. return _this;
  31. }
  32. var _proto = UncontrolledCollapse.prototype;
  33. _proto.componentDidMount = function componentDidMount() {
  34. this.togglers = findDOMElements(this.props.toggler);
  35. if (this.togglers.length) {
  36. this.removeEventListeners = addMultipleEventListeners(this.togglers, this.toggle, this.props.toggleEvents);
  37. }
  38. };
  39. _proto.componentWillUnmount = function componentWillUnmount() {
  40. if (this.togglers.length && this.removeEventListeners) {
  41. this.removeEventListeners();
  42. }
  43. };
  44. _proto.toggle = function toggle(e) {
  45. this.setState(function (_ref) {
  46. var isOpen = _ref.isOpen;
  47. return {
  48. isOpen: !isOpen
  49. };
  50. });
  51. e.preventDefault();
  52. };
  53. _proto.render = function render() {
  54. return React.createElement(Collapse, _extends({
  55. isOpen: this.state.isOpen
  56. }, omit(this.props, omitKeys)));
  57. };
  58. return UncontrolledCollapse;
  59. }(Component);
  60. UncontrolledCollapse.propTypes = propTypes;
  61. UncontrolledCollapse.defaultProps = defaultProps;
  62. export default UncontrolledCollapse;