UNPKG

@grafana/ui

Version:
139 lines (134 loc) 4.08 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var jsxRuntime = require('react/jsx-runtime'); var React = require('react'); var data = require('@grafana/data'); var schema = require('@grafana/schema'); require('../PanelChrome/index.cjs'); var VizLegendList = require('./VizLegendList.cjs'); var VizLegendTable = require('./VizLegendTable.cjs'); var types = require('./types.cjs'); var utils = require('./utils.cjs'); var PanelContext = require('../PanelChrome/PanelContext.cjs'); var types$1 = require('../PanelChrome/types.cjs'); "use strict"; function VizLegend({ items, thresholdItems, mappingItems, displayMode = schema.LegendDisplayMode.List, sortBy: sortKey, seriesVisibilityChangeBehavior = types.SeriesVisibilityChangeBehavior.Isolate, sortDesc, onLabelClick, onToggleSort, placement, className, itemRenderer, readonly, isSortable, limit, filterAction, overflow }) { const { eventBus, onToggleSeriesVisibility, onToggleLegendSort } = PanelContext.usePanelContext(); const onMouseOver = React.useCallback( (item, event) => { eventBus == null ? void 0 : eventBus.publish({ type: data.DataHoverEvent.type, payload: { raw: event, x: 0, y: 0, dataId: item.label } }); }, [eventBus] ); const onMouseOut = React.useCallback( (item, event) => { eventBus == null ? void 0 : eventBus.publish({ type: data.DataHoverClearEvent.type, payload: { raw: event, x: 0, y: 0, dataId: item.label } }); }, [eventBus] ); const onLegendLabelClick = React.useCallback( (item, event) => { var _a; if (onLabelClick) { onLabelClick(item, event); } if (onToggleSeriesVisibility) { onToggleSeriesVisibility( (_a = item.fieldName) != null ? _a : item.label, seriesVisibilityChangeBehavior === types.SeriesVisibilityChangeBehavior.Hide ? types$1.SeriesVisibilityChangeMode.AppendToSelection : utils.mapMouseEventToMode(event) ); } }, [onToggleSeriesVisibility, onLabelClick, seriesVisibilityChangeBehavior] ); const makeVizLegendList = React.useCallback( (items2) => { return /* @__PURE__ */ jsxRuntime.jsx( VizLegendList.VizLegendList, { className, placement, onLabelMouseOver: onMouseOver, onLabelMouseOut: onMouseOut, onLabelClick: onLegendLabelClick, itemRenderer, readonly, items: items2, limit, filterAction } ); }, [className, placement, onMouseOver, onMouseOut, onLegendLabelClick, itemRenderer, readonly, limit, filterAction] ); switch (displayMode) { case schema.LegendDisplayMode.Table: return /* @__PURE__ */ jsxRuntime.jsx( VizLegendTable.VizLegendTable, { className, items, placement, sortBy: sortKey, sortDesc, onLabelClick: onLegendLabelClick, onToggleSort: onToggleSort || onToggleLegendSort, onLabelMouseOver: onMouseOver, onLabelMouseOut: onMouseOut, itemRenderer, readonly, isSortable, limit, filterAction, overflow } ); case schema.LegendDisplayMode.List: const isThresholdsEnabled = thresholdItems && thresholdItems.length > 1; const isValueMappingEnabled = mappingItems && mappingItems.length > 0; return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [ !isThresholdsEnabled && (!isValueMappingEnabled || items.length > 1) && makeVizLegendList(items), isThresholdsEnabled && makeVizLegendList(thresholdItems), isValueMappingEnabled && makeVizLegendList(mappingItems) ] }); default: return null; } } VizLegend.displayName = "VizLegend"; exports.VizLegend = VizLegend; //# sourceMappingURL=VizLegend.cjs.map