@grafana/ui
Version:
Grafana Components Library
1 lines • 4.68 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,WAAY,CAAA;AAAA,EAC1B,KAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,iBAAA;AAAA,EACA;AACF,CAAoB,EAAA;AA/BpB,EAAA,IAAA,EAAA;AAgCE,EAAM,MAAA,cAAA,GAAiB,YAAa,CAAA,KAAK,CAAM,KAAA,UAAA;AAC/C,EAAA,MAAM,iBAAiB,OAAQ,CAAA,CAAA,EAAA,GAAA,KAAA,CAAM,MAAO,CAAA,MAAA,KAAb,mBAAqB,OAAO,CAAA;AAC3D,EAAA,MAAM,iBAAuC,GAAA;AAAA,IAC3C,IAAM,EAAA,IAAA;AAAA,IACN,gBAAkB,EAAA;AAAA,GACpB;AAEA,EAAA,MAAM,WAAc,GAAA,WAAA;AAAA,IAClB,CAAC,KAA+C,KAAA;AAC9C,MAAA,IAAI,iBAAmB,EAAA;AACrB,QAAkB,iBAAA,CAAA,EAAE,KAAK,KAAM,CAAA,IAAA,EAAM,UAAU,mBAAqB,EAAA,KAAA,EAAO,IAAK,CAAA,KAAA,EAAO,CAAA;AAAA;AACzF,KACF;AAAA,IACA,CAAC,IAAM,EAAA,KAAA,EAAO,iBAAiB;AAAA,GACjC;AACA,EAAA,MAAM,WAAc,GAAA,WAAA;AAAA,IAClB,CAAC,KAA+C,KAAA;AAC9C,MAAA,IAAI,iBAAmB,EAAA;AACrB,QAAkB,iBAAA,CAAA,EAAE,KAAK,KAAM,CAAA,IAAA,EAAM,UAAU,mBAAqB,EAAA,KAAA,EAAO,IAAK,CAAA,KAAA,EAAO,CAAA;AAAA;AACzF,KACF;AAAA,IACA,CAAC,IAAM,EAAA,KAAA,EAAO,iBAAiB;AAAA,GACjC;AAEA,EACE,uBAAA,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,CAAc,WAAA,EAAA,cAAA,GAAiB,kBAAqB,GAAA,EAAE,CACpE,CAAA,EAAA,QAAA,kBAAA,IAAA,CAAC,KAAM,EAAA,EAAA,GAAA,EAAK,GACT,EAAA,QAAA,EAAA;AAAA,IACC,cAAA,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAK,EAAA,KAAA;AAAA,QACL,OAAA,EAAS,CAAE,CAAA,+BAAA,EAAiC,eAAe,CAAA;AAAA,QAC3D,SAAS,MAAM;AACb,UAAA,IAAI,cAAgB,EAAA;AAClB,YAAA,cAAA,CAAe,EAAE,KAAO,EAAA,IAAA,CAAK,KAAO,EAAA,IAAA,EAAM,aAAa,CAAA;AAAA;AACzD,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,IAED,WACC,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAM,EAAA,aAAA;AAAA,QACN,OAAS,EAAA,WAAA;AAAA,QACT,OAAA,EAAS,CAAE,CAAA,iCAAA,EAAmC,kBAAkB,CAAA;AAAA,QAC/D,GAAG;AAAA;AAAA,KACN;AAAA,IAED,WACC,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAM,EAAA,cAAA;AAAA,QACN,OAAS,EAAA,WAAA;AAAA,QACT,OAAA,EAAS,CAAE,CAAA,kCAAA,EAAoC,kBAAkB,CAAA;AAAA,QAChE,GAAG;AAAA;AAAA;AACN,GAAA,EAEJ,CACF,EAAA,CAAA;AAEJ;;;;"}