UNPKG

@grafana/ui

Version:
1 lines 5.62 kB
{"version":3,"file":"DataLinkEditor.mjs","sources":["../../../../src/components/DataLinks/DataLinkEditor.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { memo, ChangeEvent } from 'react';\n\nimport { VariableSuggestion, GrafanaTheme2, DataLink } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Field } from '../Forms/Field';\nimport { Input } from '../Input/Input';\nimport { Switch } from '../Switch/Switch';\n\nimport { DataLinkInput } from './DataLinkInput';\n\ninterface DataLinkEditorProps {\n index: number;\n isLast: boolean;\n value: DataLink;\n suggestions: VariableSuggestion[];\n onChange: (index: number, link: DataLink, callback?: () => void) => void;\n showOneClick?: boolean;\n}\n\nexport const DataLinkEditor = memo(\n ({ index, value, onChange, suggestions, isLast, showOneClick = false }: DataLinkEditorProps) => {\n const styles = useStyles2(getStyles);\n\n const onUrlChange = (url: string, callback?: () => void) => {\n onChange(index, { ...value, url }, callback);\n };\n\n const onTitleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange(index, { ...value, title: event.target.value });\n };\n\n const onOpenInNewTabChanged = () => {\n onChange(index, { ...value, targetBlank: !value.targetBlank });\n };\n\n const onOneClickChanged = () => {\n onChange(index, { ...value, oneClick: !value.oneClick });\n };\n\n return (\n <div className={styles.listItem}>\n <Field label={t('grafana-ui.data-link-editor.title-label', 'Title')}>\n <Input\n id=\"link-title\"\n value={value.title}\n onChange={onTitleChange}\n placeholder={t('grafana-ui.data-link-editor.title-placeholder', 'Show details')}\n />\n </Field>\n\n <Field label={t('grafana-ui.data-link-editor.url-label', 'URL')}>\n <DataLinkInput value={value.url} onChange={onUrlChange} suggestions={suggestions} />\n </Field>\n\n <Field label={t('grafana-ui.data-link-editor.new-tab-label', 'Open in new tab')}>\n <Switch id=\"new-tab-toggle\" value={value.targetBlank || false} onChange={onOpenInNewTabChanged} />\n </Field>\n\n {showOneClick && (\n <Field\n label={t('grafana-ui.data-link-inline-editor.one-click', 'One click')}\n description={t(\n 'grafana-ui.data-link-editor-modal.one-click-description',\n 'Only one link can have one click enabled at a time'\n )}\n >\n <Switch id=\"one-click-toggle\" value={value.oneClick || false} onChange={onOneClickChanged} />\n </Field>\n )}\n\n {isLast && (\n <Trans i18nKey=\"grafana-ui.data-link-editor.info\" className={styles.infoText}>\n With data links you can reference data variables like series name, labels and values. Type CMD+Space,\n CTRL+Space, or $ to open variable suggestions.\n </Trans>\n )}\n </div>\n );\n }\n);\n\nDataLinkEditor.displayName = 'DataLinkEditor';\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n listItem: css({\n marginBottom: theme.spacing(),\n }),\n infoText: css({\n paddingBottom: theme.spacing(2),\n marginLeft: '66px',\n color: theme.colors.text.secondary,\n }),\n});\n"],"names":[],"mappings":"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"}