25 lines
844 B
JavaScript
25 lines
844 B
JavaScript
import { composeRef, getNodeRef, supportRef } from "@rc-component/util/es/ref";
|
|
import React, { forwardRef, useMemo } from 'react';
|
|
const Overlay = /*#__PURE__*/forwardRef((props, ref) => {
|
|
const {
|
|
overlay,
|
|
arrow,
|
|
prefixCls
|
|
} = props;
|
|
const overlayNode = useMemo(() => {
|
|
let overlayElement;
|
|
if (typeof overlay === 'function') {
|
|
overlayElement = overlay();
|
|
} else {
|
|
overlayElement = overlay;
|
|
}
|
|
return overlayElement;
|
|
}, [overlay]);
|
|
const composedRef = composeRef(ref, getNodeRef(overlayNode));
|
|
return /*#__PURE__*/React.createElement(React.Fragment, null, arrow && /*#__PURE__*/React.createElement("div", {
|
|
className: `${prefixCls}-arrow`
|
|
}), /*#__PURE__*/React.cloneElement(overlayNode, {
|
|
ref: supportRef(overlayNode) ? composedRef : undefined
|
|
}));
|
|
});
|
|
export default Overlay; |