UNPKG

@grafana/ui

Version:
94 lines (89 loc) 3.21 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var jsxRuntime = require('react/jsx-runtime'); var React = require('react'); var i18n = require('@grafana/i18n'); var IconButton = require('../IconButton/IconButton.cjs'); var Stack = require('../Layout/Stack/Stack.cjs'); var TableCellInspector = require('./TableCellInspector.cjs'); var cellUtils = require('./cellUtils.cjs'); var types = require('./types.cjs'); "use strict"; function CellActions({ field, cell, previewMode, showFilters, onCellFilterAdded, setInspectCell }) { var _a; const isRightAligned = cellUtils.getTextAlign(field) === "flex-end"; const inspectEnabled = Boolean((_a = field.config.custom) == null ? void 0 : _a.inspect); const commonButtonProps = { size: "sm", tooltipPlacement: "top" }; const onFilterFor = React.useCallback( (event) => { if (onCellFilterAdded) { onCellFilterAdded({ key: field.name, operator: types.FILTER_FOR_OPERATOR, value: cell.value }); } }, [cell, field, onCellFilterAdded] ); const onFilterOut = React.useCallback( (event) => { if (onCellFilterAdded) { onCellFilterAdded({ key: field.name, operator: types.FILTER_OUT_OPERATOR, value: cell.value }); } }, [cell, field, onCellFilterAdded] ); return /* @__PURE__ */ jsxRuntime.jsx("div", { className: `cellActions${isRightAligned ? " cellActionsLeft" : ""}`, children: /* @__PURE__ */ jsxRuntime.jsxs(Stack.Stack, { gap: 0.5, children: [ inspectEnabled && /* @__PURE__ */ jsxRuntime.jsx( IconButton.IconButton, { name: "eye", tooltip: i18n.t("grafana-ui.table.cell-inspect", "Inspect value"), onClick: () => { if (setInspectCell) { let mode = TableCellInspector.TableCellInspectorMode.text; let inspectValue = cell.value; try { const parsed = typeof inspectValue === "string" ? JSON.parse(inspectValue) : inspectValue; const isPlainObj = typeof parsed === "object" && parsed !== null && !Array.isArray(parsed) && (Object.getPrototypeOf(parsed) === Object.prototype || Object.getPrototypeOf(parsed) === null); if (Array.isArray(parsed) || isPlainObj) { inspectValue = JSON.stringify(parsed, null, 2); mode = TableCellInspector.TableCellInspectorMode.code; } } catch (e) { } setInspectCell({ value: inspectValue, mode }); } }, ...commonButtonProps } ), showFilters && /* @__PURE__ */ jsxRuntime.jsx( IconButton.IconButton, { name: "search-plus", onClick: onFilterFor, tooltip: i18n.t("grafana-ui.table.cell-filter-on", "Filter for value"), ...commonButtonProps } ), showFilters && /* @__PURE__ */ jsxRuntime.jsx( IconButton.IconButton, { name: "search-minus", onClick: onFilterOut, tooltip: i18n.t("grafana-ui.table.cell-filter-out", "Filter out value"), ...commonButtonProps } ) ] }) }); } exports.CellActions = CellActions; //# sourceMappingURL=CellActions.cjs.map