diff --git a/.changeset/warm-days-watch.md b/.changeset/warm-days-watch.md
new file mode 100644
index 0000000000..b0a211c7a8
--- /dev/null
+++ b/.changeset/warm-days-watch.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog': patch
+---
+
+Added support for copy entity URL in entity page context menu
diff --git a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx
index 41610ed13c..49952bdffe 100644
--- a/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx
+++ b/plugins/catalog/src/components/EntityContextMenu/EntityContextMenu.tsx
@@ -26,12 +26,14 @@ import {
import { makeStyles } from '@material-ui/core/styles';
import BugReportIcon from '@material-ui/icons/BugReport';
import MoreVert from '@material-ui/icons/MoreVert';
-import React, { useState } from 'react';
+import FileCopyTwoToneIcon from '@material-ui/icons/FileCopyTwoTone';
+import React, { useCallback, useState } from 'react';
import { IconComponent } from '@backstage/core-plugin-api';
import { useEntityPermission } from '@backstage/plugin-catalog-react';
import { catalogEntityDeletePermission } from '@backstage/plugin-catalog-common';
import { BackstageTheme } from '@backstage/theme';
import { UnregisterEntity, UnregisterEntityOptions } from './UnregisterEntity';
+import { useApi, alertApiRef } from '@backstage/core-plugin-api';
/** @public */
export type EntityContextMenuClassKey = 'button';
@@ -84,6 +86,14 @@ export function EntityContextMenu(props: EntityContextMenuProps) {
setAnchorEl(undefined);
};
+ const alertApi = useApi(alertApiRef);
+
+ const copyToClipboard = useCallback(() => {
+ navigator.clipboard
+ .writeText(window.location.toString())
+ .then(() => alertApi.post({ message: 'Copied!', severity: 'info' }));
+ }, [alertApi]);
+
const extraItems = UNSTABLE_extraContextMenuItems && [
...UNSTABLE_extraContextMenuItems.map(item => (
+
>