@coreui/react-pro
Version:
UI Components Library for React.js
36 lines (33 loc) • 1.85 kB
JavaScript
import { __rest } 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 '@popperjs/core';
import { useForkedRef } from '../../hooks/useForkedRef.js';
import { getAlignmentClassNames } from './utils.js';
const CDropdownMenu = forwardRef((_a, ref) => {
var { children, as: Component = 'ul', className } = _a, rest = __rest(_a, ["children", "as", "className"]);
const { alignment, container, dark, dropdownMenuRef, popper, portal, visible } = useContext(CDropdownContext);
const forkedRef = useForkedRef(ref, dropdownMenuRef);
return (React.createElement(CConditionalPortal, { container: container, portal: portal !== null && portal !== void 0 ? portal : false },
React.createElement(Component, Object.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, (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