@coreui/react-pro
Version:
UI Components Library for React.js
62 lines (58 loc) • 3.19 kB
JavaScript
;
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