UNPKG

@grafana/ui

Version:
1 lines 8.03 kB
{"version":3,"file":"VizLegend.cjs","sources":["../../../../src/components/VizLegend/VizLegend.tsx"],"sourcesContent":["import { useCallback } from 'react';\nimport * as React from 'react';\n\nimport { DataHoverClearEvent, DataHoverEvent } from '@grafana/data';\nimport { LegendDisplayMode } from '@grafana/schema';\n\nimport { SeriesVisibilityChangeMode, usePanelContext } from '../PanelChrome';\n\nimport { VizLegendList } from './VizLegendList';\nimport { VizLegendTable } from './VizLegendTable';\nimport { type LegendProps, SeriesVisibilityChangeBehavior, type VizLegendItem } from './types';\nimport { mapMouseEventToMode } from './utils';\n\n/**\n * @public\n *\n * https://developers.grafana.com/ui/latest/index.html?path=/docs/plugins-vizlegend--docs\n */\nexport function VizLegend<T>({\n items,\n thresholdItems,\n mappingItems,\n displayMode = LegendDisplayMode.List,\n sortBy: sortKey,\n seriesVisibilityChangeBehavior = SeriesVisibilityChangeBehavior.Isolate,\n sortDesc,\n onLabelClick,\n onToggleSort,\n placement,\n className,\n itemRenderer,\n readonly,\n isSortable,\n limit,\n filterAction,\n overflow,\n}: LegendProps<T>) {\n const { eventBus, onToggleSeriesVisibility, onToggleLegendSort } = usePanelContext();\n\n const onMouseOver = useCallback(\n (\n item: VizLegendItem,\n event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>\n ) => {\n eventBus?.publish({\n type: DataHoverEvent.type,\n payload: {\n raw: event,\n x: 0,\n y: 0,\n dataId: item.label,\n },\n });\n },\n [eventBus]\n );\n\n const onMouseOut = useCallback(\n (\n item: VizLegendItem,\n event: React.MouseEvent<HTMLButtonElement, MouseEvent> | React.FocusEvent<HTMLButtonElement>\n ) => {\n eventBus?.publish({\n type: DataHoverClearEvent.type,\n payload: {\n raw: event,\n x: 0,\n y: 0,\n dataId: item.label,\n },\n });\n },\n [eventBus]\n );\n\n const onLegendLabelClick = useCallback(\n (item: VizLegendItem, event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (onLabelClick) {\n onLabelClick(item, event);\n }\n if (onToggleSeriesVisibility) {\n onToggleSeriesVisibility(\n item.fieldName ?? item.label,\n seriesVisibilityChangeBehavior === SeriesVisibilityChangeBehavior.Hide\n ? SeriesVisibilityChangeMode.AppendToSelection\n : mapMouseEventToMode(event)\n );\n }\n },\n [onToggleSeriesVisibility, onLabelClick, seriesVisibilityChangeBehavior]\n );\n\n const makeVizLegendList = useCallback(\n (items: VizLegendItem[]) => {\n return (\n <VizLegendList<T>\n className={className}\n placement={placement}\n onLabelMouseOver={onMouseOver}\n onLabelMouseOut={onMouseOut}\n onLabelClick={onLegendLabelClick}\n itemRenderer={itemRenderer}\n readonly={readonly}\n items={items}\n limit={limit}\n filterAction={filterAction}\n />\n );\n },\n [className, placement, onMouseOver, onMouseOut, onLegendLabelClick, itemRenderer, readonly, limit, filterAction]\n );\n\n switch (displayMode) {\n case LegendDisplayMode.Table:\n return (\n <VizLegendTable<T>\n className={className}\n items={items}\n placement={placement}\n sortBy={sortKey}\n sortDesc={sortDesc}\n onLabelClick={onLegendLabelClick}\n onToggleSort={onToggleSort || onToggleLegendSort}\n onLabelMouseOver={onMouseOver}\n onLabelMouseOut={onMouseOut}\n itemRenderer={itemRenderer}\n readonly={readonly}\n isSortable={isSortable}\n limit={limit}\n filterAction={filterAction}\n overflow={overflow}\n />\n );\n case LegendDisplayMode.List:\n const isThresholdsEnabled = thresholdItems && thresholdItems.length > 1;\n const isValueMappingEnabled = mappingItems && mappingItems.length > 0;\n return (\n <>\n {/* render items when single series and there is no thresholds and no value mappings\n * render items when multi series and there is no thresholds\n */}\n {!isThresholdsEnabled && (!isValueMappingEnabled || items.length > 1) && makeVizLegendList(items)}\n {/* render threshold colors if From thresholds scheme selected */}\n {isThresholdsEnabled && makeVizLegendList(thresholdItems)}\n {/* render value mapping colors */}\n {isValueMappingEnabled && makeVizLegendList(mappingItems)}\n </>\n );\n default:\n return null;\n }\n}\n\nVizLegend.displayName = 'VizLegend';\n"],"names":["LegendDisplayMode","SeriesVisibilityChangeBehavior","usePanelContext","useCallback","DataHoverEvent","DataHoverClearEvent","SeriesVisibilityChangeMode","mapMouseEventToMode","items","jsx","VizLegendList","VizLegendTable","jsxs","Fragment"],"mappings":"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"}