@sitecore/sc-contenthub-blok
Version:
A UI library for [Sitecore Content Hub](https://doc.sitecore.com/ch/).
31 lines • 1.39 kB
JavaScript
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
import { Children, cloneElement, isValidElement, useMemo, useState, } from "react";
import { isFunction } from "../../Foundations/utils";
export const BlokTooltip = ({ placement = "top", title, children, tooltipId = "ch-tooltip", }) => {
const [titleOnElement, setTitleOnElement] = useState(title);
const withTooltip = useMemo(() => Children.map(children, (child) => {
if (isValidElement(child)) {
return cloneElement(child, {
title: titleOnElement,
"data-tooltip-html": title,
"data-place": placement,
"data-tooltip-id": tooltipId,
onMouseEnter: () => {
if (isFunction(child.props.onMouseEnter)) {
child.props.onMouseEnter();
}
setTitleOnElement("");
},
onMouseLeave: () => {
if (isFunction(child.props.onMouseLeave)) {
child.props.onMouseLeave();
}
setTitleOnElement(title);
},
});
}
return child;
}), [children, placement, title, titleOnElement, tooltipId]);
return _jsx(_Fragment, { children: withTooltip });
};
//# sourceMappingURL=BlokTooltip.js.map