From 692d16f9a45c58f8a72bb8e3059778bb3f3a7830 Mon Sep 17 00:00:00 2001 From: ReaJason Date: Tue, 31 Dec 2024 11:41:08 +0800 Subject: [PATCH] fix: copyToClipboard button not work --- web/bun.lockb | Bin 149460 -> 159988 bytes web/package.json | 14 ++++++------ web/src/components/code-viewer.tsx | 30 +++++++++++++------------- web/src/components/copyable-field.tsx | 9 +++++--- 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/web/bun.lockb b/web/bun.lockb index 0d065434b6dc9c43aec007fedebac9c492c19d5d..9b34050aab532a81c8100264a66ea96b8edf83a3 100755 GIT binary patch delta 32574 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 E54W?D!~g&Q diff --git a/web/package.json b/web/package.json index 692aa9ec..537b8699 100644 --- a/web/package.json +++ b/web/package.json @@ -13,16 +13,18 @@ }, "devDependencies": { "@biomejs/biome": "1.9.4", - "@tanstack/router-plugin": "^1.91.1", + "@tanstack/router-plugin": "^1.92.11", "@types/node": "^22.10.2", "@types/react": "^19.0.2", "@types/react-dom": "^19.0.2", "@vitejs/plugin-react": "^4.3.4", + "@types/react-copy-to-clipboard": "^5.0.7", + "@types/react-syntax-highlighter": "^15.5.13", "autoprefixer": "^10.4.20", "postcss": "^8.4.49", "tailwindcss": "^3.4.17", "typescript": "^5.7.2", - "vite": "^6.0.5" + "vite": "^6.0.6" }, "dependencies": { "@hookform/resolvers": "^3.9.1", @@ -36,10 +38,10 @@ "@radix-ui/react-switch": "^1.1.2", "@radix-ui/react-tabs": "^1.1.2", "@radix-ui/react-tooltip": "^1.1.6", - "@tanstack/react-query": "^5.62.10", - "@tanstack/react-router": "^1.92.3", - "@tanstack/router-devtools": "^1.92.3", - "@types/react-syntax-highlighter": "^15.5.13", + "@tanstack/react-query": "^5.62.11", + "@tanstack/react-router": "^1.92.11", + "@tanstack/router-devtools": "^1.92.11", + "react-copy-to-clipboard": "^5.1.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.469.0", diff --git a/web/src/components/code-viewer.tsx b/web/src/components/code-viewer.tsx index c2547d76..06a3222f 100644 --- a/web/src/components/code-viewer.tsx +++ b/web/src/components/code-viewer.tsx @@ -2,6 +2,7 @@ import { Button, ButtonProps } from "@/components/ui/button.tsx"; import { cn } from "@/lib/utils.ts"; import { CheckIcon, ClipboardIcon } from "lucide-react"; import { HTMLProps, useEffect, useState } from "react"; +import { CopyToClipboard } from "react-copy-to-clipboard"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; import { materialDark } from "react-syntax-highlighter/dist/esm/styles/prism"; import { toast } from "sonner"; @@ -11,10 +12,6 @@ interface CopyButtonProps extends ButtonProps { src?: string; } -export function copyToClipboardWithMeta(value: string) { - navigator.clipboard.writeText(value); -} - export function CopyButton({ value, className, src, variant = "ghost", ...props }: CopyButtonProps) { const [hasCopied, setHasCopied] = useState(false); @@ -27,21 +24,24 @@ export function CopyButton({ value, className, src, variant = "ghost", ...props }, [hasCopied]); return ( - + + ); } diff --git a/web/src/components/copyable-field.tsx b/web/src/components/copyable-field.tsx index acb3240b..d025ec78 100644 --- a/web/src/components/copyable-field.tsx +++ b/web/src/components/copyable-field.tsx @@ -2,6 +2,7 @@ import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; import { Check, Copy } from "lucide-react"; import { useCallback, useState } from "react"; +import { CopyToClipboard } from "react-copy-to-clipboard"; import { toast } from "sonner"; interface CopyableFieldProps { @@ -31,9 +32,11 @@ export function CopyableField({ label, value, size }: CopyableFieldProps) { {value} {size != null && `(${size} bytes)`}

- + + + ); }