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

123 строки
3.4 KiB

  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
  3. import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
  4. import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
  5. import React from 'react';
  6. import PropTypes from 'prop-types';
  7. import classNames from 'classnames';
  8. import { Target } from 'react-popper';
  9. import { mapToCssModules, tagPropType } from './utils';
  10. import Button from './Button';
  11. var propTypes = {
  12. caret: PropTypes.bool,
  13. color: PropTypes.string,
  14. children: PropTypes.node,
  15. className: PropTypes.string,
  16. cssModule: PropTypes.object,
  17. disabled: PropTypes.bool,
  18. onClick: PropTypes.func,
  19. 'aria-haspopup': PropTypes.bool,
  20. split: PropTypes.bool,
  21. tag: tagPropType,
  22. nav: PropTypes.bool
  23. };
  24. var defaultProps = {
  25. 'aria-haspopup': true,
  26. color: 'secondary'
  27. };
  28. var contextTypes = {
  29. isOpen: PropTypes.bool.isRequired,
  30. toggle: PropTypes.func.isRequired,
  31. inNavbar: PropTypes.bool.isRequired
  32. };
  33. var DropdownToggle =
  34. /*#__PURE__*/
  35. function (_React$Component) {
  36. _inheritsLoose(DropdownToggle, _React$Component);
  37. function DropdownToggle(props) {
  38. var _this;
  39. _this = _React$Component.call(this, props) || this;
  40. _this.onClick = _this.onClick.bind(_assertThisInitialized(_assertThisInitialized(_this)));
  41. return _this;
  42. }
  43. var _proto = DropdownToggle.prototype;
  44. _proto.onClick = function onClick(e) {
  45. if (this.props.disabled) {
  46. e.preventDefault();
  47. return;
  48. }
  49. if (this.props.nav && !this.props.tag) {
  50. e.preventDefault();
  51. }
  52. if (this.props.onClick) {
  53. this.props.onClick(e);
  54. }
  55. this.context.toggle(e);
  56. };
  57. _proto.render = function render() {
  58. var _this$props = this.props,
  59. className = _this$props.className,
  60. color = _this$props.color,
  61. cssModule = _this$props.cssModule,
  62. caret = _this$props.caret,
  63. split = _this$props.split,
  64. nav = _this$props.nav,
  65. tag = _this$props.tag,
  66. props = _objectWithoutPropertiesLoose(_this$props, ["className", "color", "cssModule", "caret", "split", "nav", "tag"]);
  67. var ariaLabel = props['aria-label'] || 'Toggle Dropdown';
  68. var classes = mapToCssModules(classNames(className, {
  69. 'dropdown-toggle': caret || split,
  70. 'dropdown-toggle-split': split,
  71. 'nav-link': nav
  72. }), cssModule);
  73. var children = props.children || React.createElement("span", {
  74. className: "sr-only"
  75. }, ariaLabel);
  76. var Tag;
  77. if (nav && !tag) {
  78. Tag = 'a';
  79. props.href = '#';
  80. } else if (!tag) {
  81. Tag = Button;
  82. props.color = color;
  83. props.cssModule = cssModule;
  84. } else {
  85. Tag = tag;
  86. }
  87. if (this.context.inNavbar) {
  88. return React.createElement(Tag, _extends({}, props, {
  89. className: classes,
  90. onClick: this.onClick,
  91. "aria-expanded": this.context.isOpen,
  92. children: children
  93. }));
  94. }
  95. return React.createElement(Target, _extends({}, props, {
  96. className: classes,
  97. component: Tag,
  98. onClick: this.onClick,
  99. "aria-expanded": this.context.isOpen,
  100. children: children
  101. }));
  102. };
  103. return DropdownToggle;
  104. }(React.Component);
  105. DropdownToggle.propTypes = propTypes;
  106. DropdownToggle.defaultProps = defaultProps;
  107. DropdownToggle.contextTypes = contextTypes;
  108. export default DropdownToggle;