From 70980fbb44fbb9b5b2ccb7ee8d0f406e9532544b Mon Sep 17 00:00:00 2001 From: kay delaney <45561153+kaydelaney@users.noreply.github.com> Date: Mon, 30 May 2022 17:38:52 +0100 Subject: [PATCH] ClipboardButton: Simplify callbacks (#49847) --- .../ClipboardButton/ClipboardButton.tsx | 28 ++++--------------- .../rules/RuleDetailsActionButtons.tsx | 4 +-- 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/packages/grafana-ui/src/components/ClipboardButton/ClipboardButton.tsx b/packages/grafana-ui/src/components/ClipboardButton/ClipboardButton.tsx index 61f7a19debe..67007913992 100644 --- a/packages/grafana-ui/src/components/ClipboardButton/ClipboardButton.tsx +++ b/packages/grafana-ui/src/components/ClipboardButton/ClipboardButton.tsx @@ -2,41 +2,25 @@ import React, { useCallback, useRef } from 'react'; import { Button, ButtonProps } from '../Button'; -/** @deprecated Will be removed in next major release */ -interface ClipboardEvent { - action: string; - text: string; - trigger: Element; - clearSelection(): void; -} - export interface Props extends ButtonProps { /** A function that returns text to be copied */ getText(): string; /** Callback when the text has been successfully copied */ - onClipboardCopy?(e: ClipboardEvent): void; + onClipboardCopy?(copiedText: string): void; /** Callback when there was an error copying the text */ - onClipboardError?(e: ClipboardEvent): void; + onClipboardError?(copiedText: string, error: unknown): void; } -const dummyClearFunc = () => {}; - export function ClipboardButton({ onClipboardCopy, onClipboardError, children, getText, ...buttonProps }: Props) { const buttonRef = useRef(null); const copyTextCallback = useCallback(async () => { const textToCopy = getText(); - // Can be removed in 9.x - const dummyEvent: ClipboardEvent = { - action: 'copy', - clearSelection: dummyClearFunc, - text: textToCopy, - trigger: buttonRef.current!, - }; + try { await copyText(textToCopy, buttonRef); - onClipboardCopy?.(dummyEvent); - } catch { - onClipboardError?.(dummyEvent); + onClipboardCopy?.(textToCopy); + } catch (e) { + onClipboardError?.(textToCopy, e); } }, [getText, onClipboardCopy, onClipboardError]); diff --git a/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx b/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx index 9c52cdd2755..74caa1165dc 100644 --- a/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx +++ b/public/app/features/alerting/unified/components/rules/RuleDetailsActionButtons.tsx @@ -203,8 +203,8 @@ export const RuleDetailsActionButtons: FC = ({ rule, rulesSource }) => { onClipboardCopy={() => { notifyApp.success('URL copied!'); }} - onClipboardError={(e) => { - notifyApp.error('Error while copying URL', e.text); + onClipboardError={(copiedText) => { + notifyApp.error('Error while copying URL', copiedText); }} className={style.button} size="sm"