UNPKG

@coreui/react-pro

Version:

UI Components Library for React.js

38 lines (34 loc) 2.09 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('../../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