UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

62 lines (58 loc) 3.19 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'); const CDropdownToggle = (_a) => { var { children, caret = true, custom, className, navLink = true, split, splitLabel = 'Toggle Dropdown', trigger = 'click' } = _a, rest = tslib_es6.__rest(_a, ["children", "caret", "custom", "className", "navLink", "split", "splitLabel", "trigger"]); const { dropdownToggleRef, handleHide, handleShow, variant, visible } = React.useContext(CDropdownContext.CDropdownContext); const triggers = Object.assign(Object.assign(Object.assign({}, ((trigger === 'click' || trigger.includes('click')) && { onClick: (event) => { event.preventDefault(); if (visible) { handleHide === null || handleHide === void 0 ? void 0 : handleHide(); } else { handleShow === null || handleShow === void 0 ? void 0 : handleShow(); } }, })), ((trigger === 'focus' || trigger.includes('focus')) && { onFocus: () => handleShow === null || handleShow === void 0 ? void 0 : handleShow(), onBlur: () => handleHide === null || handleHide === void 0 ? void 0 : handleHide(), })), { onKeyDown: (event) => { if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { event.preventDefault(); handleShow === null || handleShow === void 0 ? void 0 : handleShow(event.nativeEvent); } } }); const togglerProps = Object.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 && Object.assign({}, triggers))); if (custom && React.isValidElement(children)) { return (React.createElement(React.Fragment, null, React.cloneElement(children, Object.assign(Object.assign({ 'aria-expanded': visible }, (!rest.disabled && Object.assign({}, triggers))), { ref: dropdownToggleRef })))); } if (variant === 'nav-item' && navLink) { return (React.createElement("a", Object.assign({ href: "#" }, togglerProps, { role: "button" }, rest, { ref: dropdownToggleRef }), children)); } return (React.createElement(CButton.CButton, Object.assign({}, togglerProps, { tabIndex: 0 }, rest, { ref: dropdownToggleRef }), children, split && React.createElement("span", { className: "visually-hidden" }, splitLabel))); }; CDropdownToggle.propTypes = { caret: PropTypes.bool, children: PropTypes.node, className: PropTypes.string, custom: PropTypes.bool, split: PropTypes.bool, splitLabel: PropTypes.string, trigger: props.triggerPropType, }; CDropdownToggle.displayName = 'CDropdownToggle'; exports.CDropdownToggle = CDropdownToggle; //# sourceMappingURL=CDropdownToggle.js.map