@grafana/ui
Version:
Grafana Components Library
1 lines • 8.38 kB
Source Map (JSON)
{"version":3,"file":"DataLinksListItemBase.mjs","sources":["../../../../../src/components/DataLinks/DataLinksInlineEditor/DataLinksListItemBase.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { Draggable } from '@hello-pangea/dnd';\n\nimport { Action, DataFrame, DataLink, GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Badge } from '../../Badge/Badge';\nimport { Icon } from '../../Icon/Icon';\nimport { IconButton } from '../../IconButton/IconButton';\n\nexport interface DataLinksListItemBaseProps<T extends DataLink | Action> {\n index: number;\n item: T;\n data: DataFrame[];\n onChange: (index: number, item: T) => void;\n onEdit: () => void;\n onRemove: () => void;\n isEditing?: boolean;\n itemKey: string;\n}\n\n/** @internal */\nexport function DataLinksListItemBase<T extends DataLink | Action>({\n item,\n onEdit,\n onRemove,\n index,\n itemKey,\n}: DataLinksListItemBaseProps<T>) {\n const styles = useStyles2(getDataLinkListItemStyles);\n const { title = '', oneClick = false } = item;\n\n // @ts-ignore - https://github.com/microsoft/TypeScript/issues/27808\n const url = item.url ?? item.fetch?.url ?? '';\n\n const hasTitle = title.trim() !== '';\n const hasUrl = url.trim() !== '';\n\n return (\n <Draggable key={itemKey} draggableId={itemKey} index={index}>\n {(provided) => (\n <div\n className={cx(styles.wrapper, styles.dragRow)}\n ref={provided.innerRef}\n {...provided.draggableProps}\n key={index}\n >\n <div className={styles.linkDetails}>\n <div className={cx(styles.url, !hasTitle && styles.notConfigured)}>\n {hasTitle ? title : t('grafana-ui.data-links-inline-editor.title-not-provided', 'Title not provided')}\n </div>\n <div className={cx(styles.url, !hasUrl && styles.notConfigured)} title={url}>\n {hasUrl ? url : t('grafana-ui.data-links-inline-editor.url-not-provided', 'Data link url not provided')}\n </div>\n </div>\n <div className={styles.icons}>\n {oneClick && (\n <Badge\n color=\"blue\"\n text={t('grafana-ui.data-links-inline-editor.one-click', 'One click')}\n tooltip={t('grafana-ui.data-links-inline-editor.one-click-enabled', 'One click enabled')}\n />\n )}\n <IconButton\n name=\"pen\"\n onClick={onEdit}\n className={styles.icon}\n tooltip={t('grafana-ui.data-links-inline-editor.tooltip-edit', 'Edit')}\n />\n <IconButton\n name=\"trash-alt\"\n onClick={onRemove}\n className={styles.icon}\n tooltip={t('grafana-ui.data-links-inline-editor.tooltip-remove', 'Remove')}\n />\n <div className={styles.dragIcon} {...provided.dragHandleProps}>\n <Icon name=\"draggabledots\" size=\"lg\" />\n </div>\n </div>\n </div>\n )}\n </Draggable>\n );\n}\n\nconst getDataLinkListItemStyles = (theme: GrafanaTheme2) => {\n return {\n wrapper: css({\n display: 'flex',\n flexGrow: 1,\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '5px 0 5px 10px',\n borderRadius: theme.shape.radius.default,\n background: theme.colors.background.secondary,\n gap: 8,\n }),\n linkDetails: css({\n display: 'flex',\n flexDirection: 'column',\n flexGrow: 1,\n maxWidth: `calc(100% - 100px)`,\n }),\n errored: css({\n color: theme.colors.error.text,\n fontStyle: 'italic',\n }),\n notConfigured: css({\n fontStyle: 'italic',\n }),\n title: css({\n color: theme.colors.text.primary,\n fontSize: theme.typography.size.sm,\n fontWeight: theme.typography.fontWeightMedium,\n }),\n url: css({\n color: theme.colors.text.secondary,\n fontSize: theme.typography.size.sm,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }),\n dragRow: css({\n position: 'relative',\n margin: '8px',\n }),\n icons: css({\n display: 'flex',\n padding: 6,\n alignItems: 'center',\n gap: 8,\n }),\n dragIcon: css({\n cursor: 'grab',\n color: theme.colors.text.secondary,\n margin: theme.spacing(0, 0.5),\n }),\n icon: css({\n color: theme.colors.text.secondary,\n }),\n };\n};\n"],"names":[],"mappings":";;;;;;;;;;AAuBO,SAAS,qBAAmD,CAAA;AAAA,EACjE,IAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAkC,EAAA;AA7BlC,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA8BE,EAAM,MAAA,MAAA,GAAS,WAAW,yBAAyB,CAAA;AACnD,EAAA,MAAM,EAAE,KAAA,GAAQ,EAAI,EAAA,QAAA,GAAW,OAAU,GAAA,IAAA;AAGzC,EAAM,MAAA,GAAA,GAAA,CAAM,gBAAK,GAAL,KAAA,IAAA,GAAA,EAAA,GAAA,CAAY,UAAK,KAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAY,QAAxB,IAA+B,GAAA,EAAA,GAAA,EAAA;AAE3C,EAAM,MAAA,QAAA,GAAW,KAAM,CAAA,IAAA,EAAW,KAAA,EAAA;AAClC,EAAM,MAAA,MAAA,GAAS,GAAI,CAAA,IAAA,EAAW,KAAA,EAAA;AAE9B,EAAA,2BACG,SAAwB,EAAA,EAAA,WAAA,EAAa,OAAS,EAAA,KAAA,EAC5C,WAAC,QACA,qBAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAW,EAAA,EAAA,CAAG,MAAO,CAAA,OAAA,EAAS,OAAO,OAAO,CAAA;AAAA,MAC5C,KAAK,QAAS,CAAA,QAAA;AAAA,MACb,GAAG,QAAS,CAAA,cAAA;AAAA,MACb,GAAK,EAAA;AAAA,KAAA;AAAA,oBAEJ,IAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,WACrB,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,EAAG,CAAA,MAAA,CAAO,KAAK,CAAC,QAAA,IAAY,MAAO,CAAA,aAAa,GAC7D,QAAW,EAAA,QAAA,GAAA,KAAA,GAAQ,CAAE,CAAA,wDAAA,EAA0D,oBAAoB,CACtG,EAAA,CAAA;AAAA,0BACC,KAAI,EAAA,EAAA,SAAA,EAAW,GAAG,MAAO,CAAA,GAAA,EAAK,CAAC,MAAU,IAAA,MAAA,CAAO,aAAa,CAAA,EAAG,OAAO,GACrE,EAAA,QAAA,EAAA,MAAA,GAAS,MAAM,CAAE,CAAA,sDAAA,EAAwD,4BAA4B,CACxG,EAAA;AAAA,KACF,EAAA,CAAA;AAAA,oBACC,IAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,KACpB,EAAA,QAAA,EAAA;AAAA,MACC,QAAA,oBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,KAAM,EAAA,MAAA;AAAA,UACN,IAAA,EAAM,CAAE,CAAA,+CAAA,EAAiD,WAAW,CAAA;AAAA,UACpE,OAAA,EAAS,CAAE,CAAA,uDAAA,EAAyD,mBAAmB;AAAA;AAAA,OACzF;AAAA,sBAEF,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,KAAA;AAAA,UACL,OAAS,EAAA,MAAA;AAAA,UACT,WAAW,MAAO,CAAA,IAAA;AAAA,UAClB,OAAA,EAAS,CAAE,CAAA,kDAAA,EAAoD,MAAM;AAAA;AAAA,OACvE;AAAA,sBACA,GAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,IAAK,EAAA,WAAA;AAAA,UACL,OAAS,EAAA,QAAA;AAAA,UACT,WAAW,MAAO,CAAA,IAAA;AAAA,UAClB,OAAA,EAAS,CAAE,CAAA,oDAAA,EAAsD,QAAQ;AAAA;AAAA,OAC3E;AAAA,sBACC,GAAA,CAAA,KAAA,EAAA,EAAI,SAAW,EAAA,MAAA,CAAO,UAAW,GAAG,QAAA,CAAS,eAC5C,EAAA,QAAA,kBAAA,GAAA,CAAC,IAAK,EAAA,EAAA,IAAA,EAAK,eAAgB,EAAA,IAAA,EAAK,MAAK,CACvC,EAAA;AAAA,KACF,EAAA;AAAA,OAvCU,OA0ChB,CAAA;AAEJ;AAEA,MAAM,yBAAA,GAA4B,CAAC,KAAyB,KAAA;AAC1D,EAAO,OAAA;AAAA,IACL,SAAS,GAAI,CAAA;AAAA,MACX,OAAS,EAAA,MAAA;AAAA,MACT,QAAU,EAAA,CAAA;AAAA,MACV,UAAY,EAAA,QAAA;AAAA,MACZ,cAAgB,EAAA,eAAA;AAAA,MAChB,OAAS,EAAA,gBAAA;AAAA,MACT,YAAA,EAAc,KAAM,CAAA,KAAA,CAAM,MAAO,CAAA,OAAA;AAAA,MACjC,UAAA,EAAY,KAAM,CAAA,MAAA,CAAO,UAAW,CAAA,SAAA;AAAA,MACpC,GAAK,EAAA;AAAA,KACN,CAAA;AAAA,IACD,aAAa,GAAI,CAAA;AAAA,MACf,OAAS,EAAA,MAAA;AAAA,MACT,aAAe,EAAA,QAAA;AAAA,MACf,QAAU,EAAA,CAAA;AAAA,MACV,QAAU,EAAA,CAAA,kBAAA;AAAA,KACX,CAAA;AAAA,IACD,SAAS,GAAI,CAAA;AAAA,MACX,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,KAAM,CAAA,IAAA;AAAA,MAC1B,SAAW,EAAA;AAAA,KACZ,CAAA;AAAA,IACD,eAAe,GAAI,CAAA;AAAA,MACjB,SAAW,EAAA;AAAA,KACZ,CAAA;AAAA,IACD,OAAO,GAAI,CAAA;AAAA,MACT,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,OAAA;AAAA,MACzB,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,IAAK,CAAA,EAAA;AAAA,MAChC,UAAA,EAAY,MAAM,UAAW,CAAA;AAAA,KAC9B,CAAA;AAAA,IACD,KAAK,GAAI,CAAA;AAAA,MACP,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,MACzB,QAAA,EAAU,KAAM,CAAA,UAAA,CAAW,IAAK,CAAA,EAAA;AAAA,MAChC,UAAY,EAAA,QAAA;AAAA,MACZ,QAAU,EAAA,QAAA;AAAA,MACV,YAAc,EAAA;AAAA,KACf,CAAA;AAAA,IACD,SAAS,GAAI,CAAA;AAAA,MACX,QAAU,EAAA,UAAA;AAAA,MACV,MAAQ,EAAA;AAAA,KACT,CAAA;AAAA,IACD,OAAO,GAAI,CAAA;AAAA,MACT,OAAS,EAAA,MAAA;AAAA,MACT,OAAS,EAAA,CAAA;AAAA,MACT,UAAY,EAAA,QAAA;AAAA,MACZ,GAAK,EAAA;AAAA,KACN,CAAA;AAAA,IACD,UAAU,GAAI,CAAA;AAAA,MACZ,MAAQ,EAAA,MAAA;AAAA,MACR,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA,SAAA;AAAA,MACzB,MAAQ,EAAA,KAAA,CAAM,OAAQ,CAAA,CAAA,EAAG,GAAG;AAAA,KAC7B,CAAA;AAAA,IACD,MAAM,GAAI,CAAA;AAAA,MACR,KAAA,EAAO,KAAM,CAAA,MAAA,CAAO,IAAK,CAAA;AAAA,KAC1B;AAAA,GACH;AACF,CAAA;;;;"}