@grafana/ui
Version:
Grafana Components Library
1 lines • 4.04 kB
Source Map (JSON)
{"version":3,"file":"FieldLinkList.mjs","sources":["../../../../src/components/DataLinks/FieldLinkList.tsx"],"sourcesContent":["import { css } from '@emotion/css';\n\nimport { Field, GrafanaTheme2, LinkModel } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes';\nimport { Trans } from '../../utils/i18n';\nimport { Icon } from '../Icon/Icon';\n\nimport { DataLinkButton } from './DataLinkButton';\n\ntype Props = {\n links: Array<LinkModel<Field>>;\n};\n\n/**\n * @internal\n */\nexport function FieldLinkList({ links }: Props) {\n const styles = useStyles2(getStyles);\n\n if (links.length === 1) {\n return <DataLinkButton link={links[0]} />;\n }\n\n const externalLinks = links.filter((link) => link.target === '_blank');\n const internalLinks = links.filter((link) => link.target === '_self');\n\n return (\n <>\n {internalLinks.map((link, i) => {\n return <DataLinkButton key={i} link={link} />;\n })}\n <div className={styles.wrapper}>\n <p className={styles.externalLinksHeading}>\n <Trans i18nKey=\"grafana-ui.field-link-list.external-links-heading\">External links</Trans>\n </p>\n {externalLinks.map((link, i) => (\n <a key={i} href={link.href} target={link.target} className={styles.externalLink}>\n <Icon name=\"external-link-alt\" />\n {link.title}\n </a>\n ))}\n </div>\n </>\n );\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n wrapper: css({\n flexBasis: '150px',\n width: '100px',\n marginTop: theme.spacing(1),\n }),\n externalLinksHeading: css({\n color: theme.colors.text.secondary,\n fontWeight: theme.typography.fontWeightRegular,\n fontSize: theme.typography.size.sm,\n margin: 0,\n }),\n externalLink: css({\n color: theme.colors.text.link,\n fontWeight: theme.typography.fontWeightRegular,\n display: 'block',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n\n '&:hover': {\n textDecoration: 'underline',\n },\n\n div: {\n marginRight: theme.spacing(1),\n },\n }),\n});\n"],"names":[],"mappings":";;;;;;;;;;;;AAiBgB,SAAA,aAAA,CAAc,EAAE,KAAA,EAAgB,EAAA;AAC9C,EAAM,MAAA,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,IAAA,uBAAQ,GAAA,CAAA,cAAA,EAAA,EAAe,IAAM,EAAA,KAAA,CAAM,CAAC,CAAG,EAAA,CAAA;AAAA;AAGzC,EAAA,MAAM,gBAAgB,KAAM,CAAA,MAAA,CAAO,CAAC,IAAS,KAAA,IAAA,CAAK,WAAW,QAAQ,CAAA;AACrE,EAAA,MAAM,gBAAgB,KAAM,CAAA,MAAA,CAAO,CAAC,IAAS,KAAA,IAAA,CAAK,WAAW,OAAO,CAAA;AAEpE,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAc,aAAA,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,CAAM,KAAA;AAC9B,MAAO,uBAAA,GAAA,CAAC,cAAuB,EAAA,EAAA,IAAA,EAAA,EAAH,CAAe,CAAA;AAAA,KAC5C,CAAA;AAAA,oBACA,IAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,OACrB,EAAA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,GAAA,EAAA,EAAE,WAAW,MAAO,CAAA,oBAAA,EACnB,8BAAC,KAAM,EAAA,EAAA,OAAA,EAAQ,mDAAoD,EAAA,QAAA,EAAA,gBAAA,EAAc,CACnF,EAAA,CAAA;AAAA,MACC,aAAc,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,sBACvB,IAAA,CAAA,GAAA,EAAA,EAAU,IAAM,EAAA,IAAA,CAAK,MAAM,MAAQ,EAAA,IAAA,CAAK,MAAQ,EAAA,SAAA,EAAW,OAAO,YACjE,EAAA,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,IAAA,EAAA,EAAK,MAAK,mBAAoB,EAAA,CAAA;AAAA,QAC9B,IAAK,CAAA;AAAA,OAAA,EAAA,EAFA,CAGR,CACD;AAAA,KACH,EAAA;AAAA,GACF,EAAA,CAAA;AAEJ;AAEA,MAAM,SAAA,GAAY,CAAC,KAA0B,MAAA;AAAA,EAC3C,SAAS,GAAI,CAAA;AAAA,IACX,SAAW,EAAA,OAAA;AAAA,IACX,KAAO,EAAA,OAAA;AAAA,IACP,SAAA,EAAW,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA,GAC3B,CAAA;AAAA,EACD,sBAAsB,GAAI,CAAA;AAAA,IACxB,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,IACzB,UAAA,EAAY,MAAM,UAAW,CAAA,iBAAA;AAAA,IAC7B,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,IAAK,CAAA,EAAA;AAAA,IAChC,MAAQ,EAAA;AAAA,GACT,CAAA;AAAA,EACD,cAAc,GAAI,CAAA;AAAA,IAChB,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,IAAA;AAAA,IACzB,UAAA,EAAY,MAAM,UAAW,CAAA,iBAAA;AAAA,IAC7B,OAAS,EAAA,OAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,QAAU,EAAA,QAAA;AAAA,IACV,YAAc,EAAA,UAAA;AAAA,IAEd,SAAW,EAAA;AAAA,MACT,cAAgB,EAAA;AAAA,KAClB;AAAA,IAEA,GAAK,EAAA;AAAA,MACH,WAAA,EAAa,KAAM,CAAA,OAAA,CAAQ,CAAC;AAAA;AAC9B,GACD;AACH,CAAA,CAAA;;;;"}