@grafana/ui
Version:
Grafana Components Library
1 lines • 7.8 kB
Source Map (JSON)
{"version":3,"file":"legend.mjs","sources":["../../../../src/options/builder/legend.tsx"],"sourcesContent":["import { type ChangeEvent } from 'react';\n\nimport { type PanelOptionsEditorBuilder, standardEditorsRegistry, type StatsPickerConfigSettings } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { LegendDisplayMode, type OptionsWithLegend } from '@grafana/schema';\n\nimport { Input } from '../../components/Input/Input';\n\n/** @public */\nexport function addLegendOptions<T extends OptionsWithLegend>(\n builder: PanelOptionsEditorBuilder<T>,\n includeLegendCalcs = true,\n showLegend = true\n) {\n const category = [t('grafana-ui.builder.legend.category', 'Legend')];\n\n builder\n .addBooleanSwitch({\n path: 'legend.showLegend',\n name: t('grafana-ui.builder.legend.name-visibility', 'Visibility'),\n category,\n description: '',\n defaultValue: showLegend,\n })\n .addRadio({\n path: 'legend.displayMode',\n name: t('grafana-ui.builder.legend.name-mode', 'Mode'),\n category,\n description: '',\n defaultValue: LegendDisplayMode.List,\n settings: {\n options: [\n { value: LegendDisplayMode.List, label: t('grafana-ui.builder.legend.mode-options.label-list', 'List') },\n { value: LegendDisplayMode.Table, label: t('grafana-ui.builder.legend.mode-options.label-table', 'Table') },\n ],\n },\n showIf: (c) => c.legend.showLegend,\n })\n .addRadio({\n path: 'legend.placement',\n name: t('grafana-ui.builder.legend.name-placement', 'Placement'),\n category,\n description: '',\n defaultValue: 'bottom',\n settings: {\n options: [\n { value: 'bottom', label: t('grafana-ui.builder.legend.placement-options.label-bottom', 'Bottom') },\n { value: 'right', label: t('grafana-ui.builder.legend.placement-options.label-right', 'Right') },\n ],\n },\n showIf: (c) => c.legend.showLegend,\n })\n .addCustomEditor({\n id: 'legend.width',\n path: 'legend.width',\n name: t('grafana-ui.builder.legend.name-width', 'Width'),\n category,\n showIf: (c) => c.legend.showLegend && c.legend.placement === 'right',\n editor: ({ onChange, ...props }) => {\n return (\n <Input\n {...props}\n placeholder={t('grafana-ui.builder.legend.placeholder-width', 'Auto, px, or % (e.g. 220 or 35%)')}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n let value: string | undefined = e.currentTarget.value.trim();\n\n if (value === '') {\n value = undefined;\n }\n\n let numeric = Number(value);\n onChange(Number.isNaN(numeric) ? value : numeric);\n }}\n // this is needed as a work-around for _something_ in an ancestor causing a blur/onChange/remount happen on every keypress\n onInputCapture={(e) => {\n e.stopPropagation();\n }}\n />\n );\n },\n })\n .addRadio({\n path: 'legend.overflow',\n name: t('grafana-ui.builder.legend.name-overflow', 'Overflow'),\n category,\n description: '',\n defaultValue: 'ellipsis',\n settings: {\n options: [\n { value: 'ellipsis', label: t('grafana-ui.builder.legend.overflow-options.label-ellipsis', 'Ellipsis') },\n { value: 'wrap', label: t('grafana-ui.builder.legend.overflow-options.label-wrap', 'Wrap') },\n ],\n },\n showIf: (c) => c.legend.showLegend && c.legend.displayMode === LegendDisplayMode.Table,\n })\n .addNumberInput({\n path: 'legend.limit',\n name: t('grafana-ui.builder.legend.name-limit', 'Limit'),\n category,\n description: t('grafana-ui.builder.legend.description-limit', 'Limits how many items are shown by default'),\n showIf: (c) => c.legend.showLegend,\n });\n\n if (includeLegendCalcs) {\n builder.addCustomEditor<StatsPickerConfigSettings, string[]>({\n id: 'legend.calcs',\n path: 'legend.calcs',\n name: t('grafana-ui.builder.legend.name-values', 'Values'),\n category,\n description: t('grafana-ui.builder.legend.description-values', 'Select values or calculations to show in legend'),\n editor: standardEditorsRegistry.get('stats-picker').editor,\n defaultValue: [],\n settings: {\n allowMultiple: true,\n },\n showIf: (currentConfig) => currentConfig.legend.showLegend !== false,\n });\n }\n}\n"],"names":[],"mappings":"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"}