UNPKG

@grafana/ui

Version:
1 lines 7.24 kB
{"version":3,"file":"VizLegend.mjs","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 { LegendProps, SeriesVisibilityChangeBehavior, VizLegendItem } from './types';\nimport { mapMouseEventToMode } from './utils';\n\n/**\n * @public\n */\nexport function VizLegend<T>({\n items,\n thresholdItems,\n mappingItems,\n displayMode,\n sortBy: sortKey,\n seriesVisibilityChangeBehavior = SeriesVisibilityChangeBehavior.Isolate,\n sortDesc,\n onLabelClick,\n onToggleSort,\n placement,\n className,\n itemRenderer,\n readonly,\n isSortable,\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 />\n );\n },\n [className, placement, onMouseOver, onMouseOut, onLegendLabelClick, itemRenderer, readonly]\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 />\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":["items"],"mappings":"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"}