Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create reusable CopyButton component #9498

Closed
Closed
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
e836004
refactor all copy functionalities
rajku-dev Dec 19, 2024
59b9bfb
Update src/Utils/utils.ts
rajku-dev Dec 19, 2024
029b390
create CopyButton component
rajku-dev Dec 19, 2024
56d858a
use CopyButton component across
rajku-dev Dec 19, 2024
ec05b19
disable serial copyBtn
rajku-dev Dec 19, 2024
2c58284
revert tooltip class
rajku-dev Dec 19, 2024
68da53b
use cva instead
rajku-dev Dec 19, 2024
ae2426c
Update src/components/Licenses/SBOMViewer.tsx
rajku-dev Dec 20, 2024
4f383e6
remove console logs
rajku-dev Dec 20, 2024
c14a04d
drop error handling
rajku-dev Dec 20, 2024
1588cff
Update src/components/Shifting/ShiftDetails.tsx
rajku-dev Dec 20, 2024
1ccce49
Update src/components/Assets/AssetWarrantyCard.tsx
rajku-dev Dec 20, 2024
ae494c0
fix lint
rajku-dev Dec 20, 2024
12a262a
Merge branch 'develop' into issue/9494/revamp-clipboard
rajku-dev Dec 20, 2024
d10c5be
Merge branch 'develop' into issue/9494/revamp-clipboard
nihal467 Dec 20, 2024
ba35911
Merge branch 'develop' into issue/9494/revamp-clipboard
rajku-dev Dec 21, 2024
bc9a831
add CopyButton in DoctorVideoSlideover
rajku-dev Dec 21, 2024
5f4dd02
Merge branch 'issue/9494/revamp-clipboard' of https://github.com/rajk…
rajku-dev Dec 21, 2024
98f484e
add disable logic
rajku-dev Dec 21, 2024
50edfb9
fix disable logic
rajku-dev Dec 21, 2024
2c7ab78
fix lint
rajku-dev Dec 21, 2024
d9ed226
format with prettier
rajku-dev Dec 21, 2024
f84ba5b
Move content handling logic to CopyButton component
rajku-dev Dec 21, 2024
6c99e4e
format with prettier
rajku-dev Dec 21, 2024
6183a19
format ShiftDetails
rajku-dev Dec 21, 2024
ce9c578
add translations
rajku-dev Dec 21, 2024
70c0cc4
edit CopyButton
rajku-dev Dec 21, 2024
90eea5a
Merge branch 'develop' into issue/9494/revamp-clipboard
rajku-dev Dec 21, 2024
6f48ef6
Update src/components/Common/CopyButton.tsx
rajku-dev Dec 22, 2024
6ba3268
Update src/components/Common/CopyButton.tsx
rajku-dev Dec 22, 2024
df97cd0
fix lint
rajku-dev Dec 22, 2024
fe561d7
Merge branch 'develop' into issue/9494/revamp-clipboard
rajku-dev Dec 23, 2024
1bb5cac
Handle conditional rendering of CopyButton in AssetWaarantyCard | Fi…
rajku-dev Dec 23, 2024
541aa66
Merge branch 'issue/9494/revamp-clipboard' of https://github.com/rajk…
rajku-dev Dec 23, 2024
92a17cd
Merge branch 'develop' into issue/9494/revamp-clipboard
rajku-dev Dec 23, 2024
9c0a815
Update src/components/Common/CopyButton.tsx
rajku-dev Dec 24, 2024
cc87408
fix cypress test
rajku-dev Dec 26, 2024
620e74c
fix card alignment
rajku-dev Dec 27, 2024
c7b8f77
Merge branch 'develop' into issue/9494/revamp-clipboard
rajku-dev Dec 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 58 additions & 0 deletions src/components/Common/CopyButton.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import { useState } from "react";

import CareIcon, { IconName } from "@/CAREUI/icons/CareIcon";

import { TooltipComponent, TooltipProvider } from "@/components/ui/tooltip";

import { copyToClipboard } from "@/Utils/utils";
rajku-dev marked this conversation as resolved.
Show resolved Hide resolved

interface CopyButtonProps {
content: string;
tooltipContent?: string;
btnContent?: string;
resetDuration?: number;
iconClassName?: string;
btnClassName?: string;
icons?: {
copied: IconName;
copy: IconName;
};
}
rajku-dev marked this conversation as resolved.
Show resolved Hide resolved

const CopyButton = ({
content,
tooltipContent = "Copy to clipboard",
btnContent = "",
resetDuration = 2500,
iconClassName = "text-lg",
btnClassName = "",
icons = { copied: "l-check", copy: "l-copy" },
}: CopyButtonProps) => {
const [isCopied, setIsCopied] = useState(false);

return (
<TooltipProvider>
<TooltipComponent content={isCopied ? "Copied!" : tooltipContent}>
rajku-dev marked this conversation as resolved.
Show resolved Hide resolved
<button
onClick={() => {
copyToClipboard(content);
setIsCopied(true);
setTimeout(() => setIsCopied(false), resetDuration);
}}
rajku-dev marked this conversation as resolved.
Show resolved Hide resolved
className={btnClassName}
>
rajku-dev marked this conversation as resolved.
Show resolved Hide resolved
{btnContent ? (
btnContent
) : (
<CareIcon
icon={isCopied ? icons.copied : icons.copy}
className={iconClassName}
/>
)}
</button>
</TooltipComponent>
</TooltipProvider>
);
};

export default CopyButton;
Loading