UNPKG

2.22 kBJavaScriptView Raw
1import _extends from "@babel/runtime-corejs2/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime-corejs2/helpers/esm/objectWithoutPropertiesLoose";
3import _inheritsLoose from "@babel/runtime-corejs2/helpers/esm/inheritsLoose";
4import React from 'react';
5import PropTypes from 'prop-types';
6import classNames from 'classnames';
7import Button from './Button';
8import SafeAnchor from './SafeAnchor';
9import { bsClass as setBsClass } from './utils/bootstrapUtils';
10var propTypes = {
11 noCaret: PropTypes.bool,
12 open: PropTypes.bool,
13 title: PropTypes.string,
14 useAnchor: PropTypes.bool
15};
16var defaultProps = {
17 open: false,
18 useAnchor: false,
19 bsRole: 'toggle'
20};
21
22var DropdownToggle =
23/*#__PURE__*/
24function (_React$Component) {
25 _inheritsLoose(DropdownToggle, _React$Component);
26
27 function DropdownToggle() {
28 return _React$Component.apply(this, arguments) || this;
29 }
30
31 var _proto = DropdownToggle.prototype;
32
33 _proto.render = function render() {
34 var _this$props = this.props,
35 noCaret = _this$props.noCaret,
36 open = _this$props.open,
37 useAnchor = _this$props.useAnchor,
38 bsClass = _this$props.bsClass,
39 className = _this$props.className,
40 children = _this$props.children,
41 props = _objectWithoutPropertiesLoose(_this$props, ["noCaret", "open", "useAnchor", "bsClass", "className", "children"]);
42
43 delete props.bsRole;
44 var Component = useAnchor ? SafeAnchor : Button;
45 var useCaret = !noCaret; // This intentionally forwards bsSize and bsStyle (if set) to the
46 // underlying component, to allow it to render size and style variants.
47 // FIXME: Should this really fall back to `title` as children?
48
49 return React.createElement(Component, _extends({}, props, {
50 role: "button",
51 className: classNames(className, bsClass),
52 "aria-haspopup": true,
53 "aria-expanded": open
54 }), children || props.title, useCaret && ' ', useCaret && React.createElement("span", {
55 className: "caret"
56 }));
57 };
58
59 return DropdownToggle;
60}(React.Component);
61
62DropdownToggle.propTypes = propTypes;
63DropdownToggle.defaultProps = defaultProps;
64export default setBsClass('dropdown-toggle', DropdownToggle);
\No newline at end of file