* fix(tracker): fix assist typings * fix(tracker): fix assist typings * change(ui) - preferences - removed old * change(ui) - preferences - wip * change(ui) - preferences - list * change(ui) - right box mardings * change(ui) - preferences - integration item paddings * change(ui) - preferences - integration icons * change(ui) - preferences - integration icons * change(ui) - preferences - integration - check status * change(ui) - preferences - integration - check status * change(ui) - preferences - metadata - move the delete button inside the modal * change(ui) - preferences - webhooks - modal and delete btn changes * change(ui) - preferences - modalContext updates * change(ui) - input field forward refs * change(ui) - metadata - modal * change(ui) - metadata - set deleting item to null * change(ui) - integrations * change(ui) - hoc withcopy * change(ui) - projects * change(ui) - users list modal * change(ui) - projects remove border for the last * change(ui) - integrations new api changes * change(ui) - github and jira changes * change(ui) - github and jira changes Co-authored-by: sylenien <nikita@openreplay.com>
27 lines
942 B
TypeScript
27 lines
942 B
TypeScript
import React from 'react';
|
|
import copy from 'copy-to-clipboard';
|
|
import { Tooltip } from 'react-tippy';
|
|
|
|
const withCopy = (WrappedComponent: React.ComponentType) => {
|
|
const ComponentWithCopy = (props: any) => {
|
|
const [copied, setCopied] = React.useState(false);
|
|
const { value, tooltip } = props;
|
|
const copyToClipboard = (text: string) => {
|
|
copy(text);
|
|
setCopied(true);
|
|
setTimeout(() => {
|
|
setCopied(false);
|
|
}, 1000);
|
|
};
|
|
return (
|
|
<div onClick={() => copyToClipboard(value)} className="w-fit">
|
|
<Tooltip delay={0} arrow animation="fade" hideOnClick={false} title={copied ? tooltip : 'Click to copy'}>
|
|
<WrappedComponent {...props} copyToClipboard={copyToClipboard} />
|
|
</Tooltip>
|
|
</div>
|
|
);
|
|
};
|
|
return ComponentWithCopy;
|
|
};
|
|
|
|
export default withCopy;
|