UNPKG

@coreui/react

Version:

UI Components Library for React.js

36 lines (33 loc) 2.01 kB
import { __rest, __assign } from '../../node_modules/tslib/tslib.es6.js'; import React, { forwardRef, useContext } from 'react'; import PropTypes from 'prop-types'; import classNames from '../../_virtual/index.js'; import { CConditionalPortal } from '../conditional-portal/CConditionalPortal.js'; import { CDropdownContext } from './CDropdownContext.js'; import { useForkedRef } from '../../hooks/useForkedRef.js'; import '@popperjs/core'; import { getAlignmentClassNames } from './utils.js'; var CDropdownMenu = forwardRef(function (_a, ref) { var children = _a.children, _b = _a.as, Component = _b === void 0 ? 'ul' : _b, className = _a.className, rest = __rest(_a, ["children", "as", "className"]); var _c = useContext(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(ref, dropdownMenuRef); return (React.createElement(CConditionalPortal, { container: container, portal: portal !== null && portal !== void 0 ? portal : false }, React.createElement(Component, __assign({ className: classNames('dropdown-menu', { show: visible, }, alignment && getAlignmentClassNames(alignment), className), ref: forkedRef, role: "menu" }, (!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'; export { CDropdownMenu }; //# sourceMappingURL=CDropdownMenu.js.map