import React, { useState, FC } from 'react';
import PropTypes from 'prop-types';
import {
makeStyles,
Theme,
createStyles,
Tooltip,
IconButton,
Fade,
} from '@material-ui/core';
interface CopyButtonProps {
className?: string;
icon?: any;
label: string;
value: string;
others?: any;
}
const CopyIcon = (
);
const CopyButton: FC = props => {
const { label, icon, className, value, ...others } = props;
const classes = useStyles();
const [tooltipTitle, setTooltipTitle] = useState('Copy');
const handleClick = (v: string) => {
setTooltipTitle('Copied!');
navigator.clipboard.writeText(v);
setTimeout(() => {
setTooltipTitle('Copy');
}, 1000);
};
return (
handleClick(value || '')}
{...others}
>
{icon || CopyIcon}
);
};
CopyButton.propTypes = {
className: PropTypes.string,
icon: PropTypes.element,
label: PropTypes.string.isRequired,
value: PropTypes.string.isRequired,
others: PropTypes.object,
};
CopyButton.defaultProps = {
label: 'copy button',
value: '',
};
CopyButton.displayName = 'CopyButton';
const useStyles = makeStyles((theme: Theme) =>
createStyles({
root: {},
button: {},
tooltip: {},
})
);
export default CopyButton;