@grafana/ui
Version:
Grafana Components Library
94 lines (89 loc) • 3.21 kB
JavaScript
;
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');
;
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