2020-08-12 11:41:56 +00:00
|
|
|
import React, { createRef, useState } from "react";
|
|
|
|
|
import styled from "styled-components";
|
|
|
|
|
import copy from "copy-to-clipboard";
|
2021-02-26 06:58:47 +00:00
|
|
|
import { BaseTextInput } from "components/designSystems/appsmith/TextInputComponent";
|
|
|
|
|
import { BaseButton } from "components/designSystems/blueprint/ButtonComponent";
|
2020-08-12 11:41:56 +00:00
|
|
|
|
|
|
|
|
const Wrapper = styled.div`
|
|
|
|
|
display: flex;
|
|
|
|
|
|
2020-10-12 07:15:35 +00:00
|
|
|
div {
|
2021-02-26 06:58:47 +00:00
|
|
|
flex-basis: calc(100% - 90px);
|
2020-10-12 07:15:35 +00:00
|
|
|
}
|
2021-02-26 06:58:47 +00:00
|
|
|
input:disabled {
|
|
|
|
|
color: #555;
|
|
|
|
|
}
|
|
|
|
|
button {
|
|
|
|
|
flex-basis: 80px;
|
|
|
|
|
margin-left: 10px;
|
2020-08-12 11:41:56 +00:00
|
|
|
}
|
|
|
|
|
`;
|
|
|
|
|
|
2021-04-28 10:28:39 +00:00
|
|
|
function CopyToClipboard(props: any) {
|
2020-08-12 11:41:56 +00:00
|
|
|
const { copyText } = props;
|
|
|
|
|
const copyURLInput = createRef<HTMLInputElement>();
|
|
|
|
|
const [isCopied, setIsCopied] = useState(false);
|
|
|
|
|
|
|
|
|
|
const copyToClipboard = (url: string) => {
|
|
|
|
|
copy(url);
|
|
|
|
|
setIsCopied(true);
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
setIsCopied(false);
|
|
|
|
|
}, 3000);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const selectText = () => {
|
|
|
|
|
if (copyURLInput.current) {
|
|
|
|
|
copyURLInput.current.setSelectionRange(0, copyText.length);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
return (
|
|
|
|
|
<Wrapper>
|
2021-02-26 06:58:47 +00:00
|
|
|
<BaseTextInput
|
2021-04-28 10:28:39 +00:00
|
|
|
defaultValue={copyText}
|
|
|
|
|
disabled
|
2020-10-12 07:15:35 +00:00
|
|
|
fill
|
|
|
|
|
onChange={() => {
|
2020-08-12 11:41:56 +00:00
|
|
|
selectText();
|
|
|
|
|
}}
|
|
|
|
|
/>
|
2020-10-12 07:15:35 +00:00
|
|
|
|
2021-02-26 06:58:47 +00:00
|
|
|
<BaseButton
|
2020-08-12 11:41:56 +00:00
|
|
|
onClick={() => {
|
|
|
|
|
copyToClipboard(copyText);
|
|
|
|
|
}}
|
2021-04-28 10:28:39 +00:00
|
|
|
text={isCopied ? "Copied" : "Copy"}
|
2020-08-12 11:41:56 +00:00
|
|
|
/>
|
|
|
|
|
</Wrapper>
|
|
|
|
|
);
|
2021-04-28 10:28:39 +00:00
|
|
|
}
|
2020-08-12 11:41:56 +00:00
|
|
|
|
|
|
|
|
export default CopyToClipboard;
|