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]}
)
) : (