From 0e4a8b01ab938fd1d4fd1cf07f7e09c20a13ca74 Mon Sep 17 00:00:00 2001 From: Sonia Aguilar <33540275+soniaAguilarPeiron@users.noreply.github.com> Date: Thu, 29 Jun 2023 20:02:30 +0200 Subject: [PATCH] Alerting: Use ToggleTip instead of Hovercard in the info popup on Math expressions (#70881) * Use ToggleTip instead of Hovercard in the info popup on Math expressions * Address review comments --- .../src/components/Toggletip/Toggletip.tsx | 9 ++- .../features/expressions/components/Math.tsx | 55 ++++++++++++------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/packages/grafana-ui/src/components/Toggletip/Toggletip.tsx b/packages/grafana-ui/src/components/Toggletip/Toggletip.tsx index ce94ce0822a..114fad02fbf 100644 --- a/packages/grafana-ui/src/components/Toggletip/Toggletip.tsx +++ b/packages/grafana-ui/src/components/Toggletip/Toggletip.tsx @@ -1,3 +1,4 @@ +import { css, cx } from '@emotion/css'; import { Placement } from '@popperjs/core'; import React, { useCallback, useEffect, useRef } from 'react'; import { usePopperTooltip } from 'react-popper-tooltip'; @@ -28,6 +29,8 @@ export interface ToggletipProps { footer?: JSX.Element | string; /** The UI control users interact with to display toggletips */ children: JSX.Element; + /** Determine whether the toggletip should fit its content or not */ + fitContent?: boolean; } export const Toggletip = React.memo( @@ -40,6 +43,7 @@ export const Toggletip = React.memo( closeButton = true, onClose, footer, + fitContent = false, }: ToggletipProps) => { const styles = useStyles2(getStyles); const style = styles[theme]; @@ -91,7 +95,7 @@ export const Toggletip = React.memo(
{Boolean(title) &&
{title}
} {closeButton && ( @@ -139,5 +143,8 @@ export const getStyles = (theme: GrafanaTheme2) => { return { info, error, + fitContent: css` + max-width: fit-content; + `, }; }; diff --git a/public/app/features/expressions/components/Math.tsx b/public/app/features/expressions/components/Math.tsx index 89fe8478635..4a5a34f9ff3 100644 --- a/public/app/features/expressions/components/Math.tsx +++ b/public/app/features/expressions/components/Math.tsx @@ -3,8 +3,7 @@ import React, { ChangeEvent } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Stack } from '@grafana/experimental'; -import { Icon, InlineField, InlineLabel, TextArea, useStyles2 } from '@grafana/ui'; -import { HoverCard } from 'app/features/alerting/unified/components/HoverCard'; +import { Icon, InlineField, InlineLabel, TextArea, Toggletip, useStyles2 } from '@grafana/ui'; import { ExpressionQuery } from '../types'; @@ -37,12 +36,10 @@ export const Math = ({ labelWidth, onChange, query, onRunQuery }: Props) => { - -
- Math operator -
Run math operations on one or more queries. You reference the query by {'${refId}'} ie. $A, $B, $C etc. @@ -92,25 +89,34 @@ export const Math = ({ labelWidth, onChange, query, onRunQuery }: Props) => { description="rounds the number down to the nearest integer value. It's able to operate on series or escalar values." />
-
- See our additional documentation on{' '} - - Math expressions - - . -
} + title={ + + Math operator + + } + footer={ +
+ See our additional documentation on{' '} + + Math expressions + + . +
+ } + closeButton={true} + placement="bottom-start" > - +
Expression - - +
+ } labelWidth={labelWidth} @@ -166,6 +172,13 @@ const getStyles = (theme: GrafanaTheme2) => ({ grid-template-columns: max-content auto; column-gap: ${theme.spacing(2)}; `, + info: css` + display: flex; + flex-direction: row; + align-items: center; + cursor: pointer; + gap: ${theme.spacing(1)}; + `, }); const getDocumentedFunctionStyles = (theme: GrafanaTheme2) => ({