@coreui/react-pro
Version:
UI Components Library for React.js
38 lines (34 loc) • 2.09 kB
JavaScript
var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js');
var React = require('react');
var PropTypes = require('prop-types');
var index = require('../../node_modules/classnames/index.js');
var CDropdown = require('./CDropdown.js');
var CConditionalPortal = require('../conditional-portal/CConditionalPortal.js');
var useForkedRef = require('../../hooks/useForkedRef.js');
require('@popperjs/core');
var utils = require('./utils.js');
var CDropdownMenu = React.forwardRef(function (_a, ref) {
var children = _a.children, _b = _a.as, Component = _b === void 0 ? 'ul' : _b, className = _a.className, rest = tslib_es6.__rest(_a, ["children", "as", "className"]);
var _c = React.useContext(CDropdown.CDropdownContext), alignment = _c.alignment, container = _c.container, dark = _c.dark, dropdownMenuRef = _c.dropdownMenuRef, popper = _c.popper, portal = _c.portal, visible = _c.visible;
var forkedRef = useForkedRef.useForkedRef(ref, dropdownMenuRef);
return (React.createElement(CConditionalPortal.CConditionalPortal, { container: container, portal: portal !== null && portal !== void 0 ? portal : false },
React.createElement(Component, tslib_es6.__assign({ className: index.default('dropdown-menu', {
show: visible,
}, alignment && utils.getAlignmentClassNames(alignment), className), ref: forkedRef, role: "menu", "aria-hidden": !visible }, (!popper && { 'data-coreui-popper': 'static' }), (dark && { 'data-coreui-theme': 'dark' }), rest), Component === 'ul'
? React.Children.map(children, function (child, index) {
if (React.isValidElement(child)) {
return React.createElement("li", { key: index }, React.cloneElement(child));
}
return;
})
: children)));
});
CDropdownMenu.propTypes = {
as: PropTypes.elementType,
children: PropTypes.node,
className: PropTypes.string,
};
CDropdownMenu.displayName = 'CDropdownMenu';
exports.CDropdownMenu = CDropdownMenu;
//# sourceMappingURL=CDropdownMenu.js.map
;