Merge pull request #13688 from Ahampa07/feat/add-copy-entity-link-support-in-entity-page-context-menu

Add support for copy entity url in entity page context menu
This commit is contained in:
Fredrik Adelöw
2022-10-04 10:01:51 +02:00
committed by GitHub
2 changed files with 27 additions and 1 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': patch
---
Added support for copy entity URL in entity page context menu
@@ -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 => (
<MenuItem
@@ -144,6 +154,17 @@ export function EntityContextMenu(props: EntityContextMenuProps) {
</ListItemIcon>
<ListItemText primary="Inspect entity" />
</MenuItem>
<MenuItem
onClick={() => {
onClose();
copyToClipboard();
}}
>
<ListItemIcon>
<FileCopyTwoToneIcon fontSize="small" />
</ListItemIcon>
<ListItemText primary="Copy entity URL" />
</MenuItem>
</MenuList>
</Popover>
</>