diff --git a/pages/orgs/[org]/sources/[source]/concepts/[concept]/index.js b/pages/orgs/[org]/sources/[source]/concepts/[concept]/index.js index 8cd1616..b617f65 100755 --- a/pages/orgs/[org]/sources/[source]/concepts/[concept]/index.js +++ b/pages/orgs/[org]/sources/[source]/concepts/[concept]/index.js @@ -18,12 +18,26 @@ import { Paper, } from "@mui/material"; import Link from "next/link"; +import ContentCopyIcon from "@mui/icons-material/ContentCopy"; +import IconButton from "@mui/material/IconButton"; import { getConceptDetail, getConceptVersions, getConceptRelated, } from "../../../../../../api/conceptDetail"; +const handleCopyLink = async (org, source, conceptDetail) => { + const API_BASE_URL = process.env.NEXT_PUBLIC_API_URL; + const currentUrl = `${API_BASE_URL}/orgs/${org}/sources/${source}/concepts/${conceptDetail.id}`; + + try { + await navigator.clipboard.writeText(currentUrl); + console.log("URL copied to clipboard"); + } catch (err) { + console.error("Failed to copy URL: ", err); + } +}; + function ConceptDetail() { const router = useRouter(); const [selectedRows, setSelectedRows] = useState([]); @@ -160,15 +174,31 @@ function ConceptDetail() { {" "} {source}{" "} - - {" "} - {conceptDetail.id} | {conceptDetail.concept_class} |{" "} - {conceptDetail.datatype} - + + + {" "} + {conceptDetail.id} | {conceptDetail.concept_class} |{" "} + {conceptDetail.datatype} + + + { + handleCopyLink(org, source, conceptDetail); + }} + > + + + + Copy Link + + {/* Names */} @@ -380,8 +410,8 @@ function ConceptDetail() { {typeof conceptDetail?.extras[key] === "string" || typeof conceptDetail?.extras[key] === "number" || typeof conceptDetail?.extras[key] === "boolean" ? ( - typeof conceptDetail?.extras[key] === "string" - && conceptDetail?.extras[key]?.startsWith("http") ? ( + typeof conceptDetail?.extras[key] === "string" && + conceptDetail?.extras[key]?.startsWith("http") ? ( ) : ( - {typeof conceptDetail?.extras[key] === "boolean" ? - String(conceptDetail?.extras[key])[0].toUpperCase() + - String(conceptDetail?.extras[key]).slice(1) : conceptDetail?.extras[key]} + {typeof conceptDetail?.extras[key] === "boolean" + ? String( + conceptDetail?.extras[key] + )[0].toUpperCase() + + String(conceptDetail?.extras[key]).slice(1) + : conceptDetail?.extras[key]} ) ) : (