UNPKG

@coreui/react

Version:

UI Components Library for React.js

54 lines (50 loc) 2.94 kB
'use strict'; var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js'); var React = require('react'); var PropTypes = require('prop-types'); var index = require('../../_virtual/index.js'); var CButton = require('../button/CButton.js'); var CDropdownContext = require('./CDropdownContext.js'); var props = require('../../props.js'); var CDropdownToggle = function (_a) { var children = _a.children, _b = _a.caret, caret = _b === void 0 ? true : _b, custom = _a.custom, className = _a.className, _c = _a.navLink, navLink = _c === void 0 ? true : _c, split = _a.split, _d = _a.trigger, trigger = _d === void 0 ? 'click' : _d, rest = tslib_es6.__rest(_a, ["children", "caret", "custom", "className", "navLink", "split", "trigger"]); var _e = React.useContext(CDropdownContext.CDropdownContext), dropdownToggleRef = _e.dropdownToggleRef, variant = _e.variant, visible = _e.visible, setVisible = _e.setVisible; var triggers = tslib_es6.__assign(tslib_es6.__assign({}, ((trigger === 'click' || trigger.includes('click')) && { onClick: function (event) { event.preventDefault(); setVisible(!visible); }, })), ((trigger === 'focus' || trigger.includes('focus')) && { onFocus: function () { return setVisible(true); }, onBlur: function () { return setVisible(false); }, })); var togglerProps = tslib_es6.__assign({ className: index.default({ 'nav-link': variant === 'nav-item' && navLink, 'dropdown-toggle': caret, 'dropdown-toggle-split': split, show: visible, }, className), 'aria-expanded': visible }, (!rest.disabled && tslib_es6.__assign({}, triggers))); var Toggler = function () { if (custom && React.isValidElement(children)) { return (React.createElement(React.Fragment, null, React.cloneElement(children, tslib_es6.__assign(tslib_es6.__assign({ 'aria-expanded': visible }, (!rest.disabled && tslib_es6.__assign({}, triggers))), { ref: dropdownToggleRef })))); } if (variant === 'nav-item' && navLink) { return (React.createElement("a", tslib_es6.__assign({ href: "#" }, togglerProps, { role: "button" }, rest, { ref: dropdownToggleRef }), children)); } return (React.createElement(CButton.CButton, tslib_es6.__assign({}, togglerProps, { tabIndex: 0 }, rest, { ref: dropdownToggleRef }), children, split && React.createElement("span", { className: "visually-hidden" }, "Toggle Dropdown"))); }; return React.createElement(Toggler, null); }; CDropdownToggle.propTypes = { caret: PropTypes.bool, children: PropTypes.node, className: PropTypes.string, custom: PropTypes.bool, split: PropTypes.bool, trigger: props.triggerPropType, }; CDropdownToggle.displayName = 'CDropdownToggle'; exports.CDropdownToggle = CDropdownToggle; //# sourceMappingURL=CDropdownToggle.js.map