1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| import { Children, cloneElement, forwardRef, useCallback } from "react";
| import { useCopyText } from "../../hooks/useCopyText";
| import { Tooltip } from "@humansignal/ui";
|
| export const CopyableTooltip = forwardRef(({ children, title, textForCopy, ...restProps }, ref) => {
| const [copied, copyText] = useCopyText({ defaultText: textForCopy });
|
| const clickHandler = useCallback((e) => {
| e.preventDefault();
| e.stopPropagation();
| copyText();
| }, []);
|
| const child = Children.only(children);
| const clone = cloneElement(child, {
| ...child.props,
| ref,
| onClick: clickHandler,
| });
|
| return <Tooltip title={copied ? "Copied!" : title} onClick={clickHandler} {...restProps} children={clone} />;
| });
|
|