From fab2ef16fa58c8ddf917a8e96cc7bb8ad194a015 Mon Sep 17 00:00:00 2001 From: James Date: Fri, 29 May 2020 16:04:16 -0400 Subject: [PATCH] adds CopyToClipboard --- .../elements/CopyToClipboard/index.js | 62 +++++++++++++++++++ .../elements/CopyToClipboard/index.scss | 35 +++++++++++ .../components/elements/Tooltip/index.scss | 2 +- src/client/components/icons/Copy/index.js | 27 ++++++++ src/client/components/icons/Copy/index.scss | 12 ++++ .../views/collections/Edit/Default.js | 19 ++++++ .../views/collections/Edit/index.scss | 20 ++++-- 7 files changed, 170 insertions(+), 7 deletions(-) create mode 100644 src/client/components/elements/CopyToClipboard/index.js create mode 100644 src/client/components/elements/CopyToClipboard/index.scss create mode 100644 src/client/components/icons/Copy/index.js create mode 100644 src/client/components/icons/Copy/index.scss diff --git a/src/client/components/elements/CopyToClipboard/index.js b/src/client/components/elements/CopyToClipboard/index.js new file mode 100644 index 0000000000..226eec970f --- /dev/null +++ b/src/client/components/elements/CopyToClipboard/index.js @@ -0,0 +1,62 @@ +import React, { useEffect, useState, useRef } from 'react'; +import PropTypes from 'prop-types'; +import Copy from '../../icons/Copy'; +import Tooltip from '../Tooltip'; + +import './index.scss'; + +const baseClass = 'copy-to-clipboard'; + +const CopyToClipboard = ({ value }) => { + const ref = useRef(null); + const [copied, setCopied] = useState(false); + const [hovered, setHovered] = useState(false); + + useEffect(() => { + if (copied && !hovered) { + setTimeout(() => { + setCopied(false); + }, 1500); + } + }, [copied, hovered]); + + return ( +