@grafana/ui
Version:
Grafana Components Library
1 lines • 4.71 kB
Source Map (JSON)
{"version":3,"file":"CellActions.mjs","sources":["../../../../src/components/Table/CellActions.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { t } from '@grafana/i18n';\n\nimport { IconSize } from '../../types/icon';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Stack } from '../Layout/Stack/Stack';\nimport { TooltipPlacement } from '../Tooltip/types';\n\nimport { TableCellInspectorMode } from './TableCellInspector';\nimport { FILTER_FOR_OPERATOR, FILTER_OUT_OPERATOR, TableCellProps } from './types';\nimport { getTextAlign } from './utils';\n\ninterface CellActionProps extends TableCellProps {\n previewMode: TableCellInspectorMode;\n}\n\ninterface CommonButtonProps {\n size: IconSize;\n showFilters?: boolean;\n tooltipPlacement: TooltipPlacement;\n}\n\nexport function CellActions({\n field,\n cell,\n previewMode,\n showFilters,\n onCellFilterAdded,\n setInspectCell,\n}: CellActionProps) {\n const isRightAligned = getTextAlign(field) === 'flex-end';\n const inspectEnabled = Boolean(field.config.custom?.inspect);\n const commonButtonProps: CommonButtonProps = {\n size: 'sm',\n tooltipPlacement: 'top',\n };\n\n const onFilterFor = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (onCellFilterAdded) {\n onCellFilterAdded({ key: field.name, operator: FILTER_FOR_OPERATOR, value: cell.value });\n }\n },\n [cell, field, onCellFilterAdded]\n );\n const onFilterOut = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (onCellFilterAdded) {\n onCellFilterAdded({ key: field.name, operator: FILTER_OUT_OPERATOR, value: cell.value });\n }\n },\n [cell, field, onCellFilterAdded]\n );\n\n return (\n <div className={`cellActions${isRightAligned ? ' cellActionsLeft' : ''}`}>\n <Stack gap={0.5}>\n {inspectEnabled && (\n <IconButton\n name=\"eye\"\n tooltip={t('grafana-ui.table.cell-inspect', 'Inspect value')}\n onClick={() => {\n if (setInspectCell) {\n setInspectCell({ value: cell.value, mode: previewMode });\n }\n }}\n {...commonButtonProps}\n />\n )}\n {showFilters && (\n <IconButton\n name={'search-plus'}\n onClick={onFilterFor}\n tooltip={t('grafana-ui.table.cell-filter-on', 'Filter for value')}\n {...commonButtonProps}\n />\n )}\n {showFilters && (\n <IconButton\n name={'search-minus'}\n onClick={onFilterOut}\n tooltip={t('grafana-ui.table.cell-filter-out', 'Filter out value')}\n {...commonButtonProps}\n />\n )}\n </Stack>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAwBO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF,CAAA,EAAoB;AA/BpB,EAAA,IAAA,EAAA;AAgCE,EAAA,MAAM,cAAA,GAAiB,YAAA,CAAa,KAAK,CAAA,KAAM,UAAA;AAC/C,EAAA,MAAM,iBAAiB,OAAA,CAAA,CAAQ,EAAA,GAAA,KAAA,CAAM,MAAA,CAAO,MAAA,KAAb,mBAAqB,OAAO,CAAA;AAC3D,EAAA,MAAM,iBAAA,GAAuC;AAAA,IAC3C,IAAA,EAAM,IAAA;AAAA,IACN,gBAAA,EAAkB;AAAA,GACpB;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,KAAA,KAA+C;AAC9C,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,iBAAA,CAAkB,EAAE,KAAK,KAAA,CAAM,IAAA,EAAM,UAAU,mBAAA,EAAqB,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,MACzF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,KAAA,EAAO,iBAAiB;AAAA,GACjC;AACA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,KAAA,KAA+C;AAC9C,MAAA,IAAI,iBAAA,EAAmB;AACrB,QAAA,iBAAA,CAAkB,EAAE,KAAK,KAAA,CAAM,IAAA,EAAM,UAAU,mBAAA,EAAqB,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,CAAA;AAAA,MACzF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,IAAA,EAAM,KAAA,EAAO,iBAAiB;AAAA,GACjC;AAEA,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,CAAA,WAAA,EAAc,cAAA,GAAiB,kBAAA,GAAqB,EAAE,CAAA,CAAA,EACpE,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAM,GAAA,EAAK,GAAA,EACT,QAAA,EAAA;AAAA,IAAA,cAAA,oBACC,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,OAAA,EAAS,CAAA,CAAE,+BAAA,EAAiC,eAAe,CAAA;AAAA,QAC3D,SAAS,MAAM;AACb,UAAA,IAAI,cAAA,EAAgB;AAClB,YAAA,cAAA,CAAe,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,IAAA,EAAM,aAAa,CAAA;AAAA,UACzD;AAAA,QACF,CAAA;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IAED,WAAA,oBACC,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,aAAA;AAAA,QACN,OAAA,EAAS,WAAA;AAAA,QACT,OAAA,EAAS,CAAA,CAAE,iCAAA,EAAmC,kBAAkB,CAAA;AAAA,QAC/D,GAAG;AAAA;AAAA,KACN;AAAA,IAED,WAAA,oBACC,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAM,cAAA;AAAA,QACN,OAAA,EAAS,WAAA;AAAA,QACT,OAAA,EAAS,CAAA,CAAE,kCAAA,EAAoC,kBAAkB,CAAA;AAAA,QAChE,GAAG;AAAA;AAAA;AACN,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;;;;"}