import { css, cx } from '@emotion/css';
import { useId } from 'react';
import Highlighter from 'react-highlight-words';
import {
DynamicConfigValue,
FieldConfigOptionsRegistry,
FieldConfigProperty,
FieldOverrideContext,
GrafanaTheme2,
} from '@grafana/data';
import { useTranslate } from '@grafana/i18n';
import { Counter, Field, HorizontalGroup, IconButton, Label, useStyles2 } from '@grafana/ui';
import { OptionsPaneCategory } from './OptionsPaneCategory';
interface DynamicConfigValueEditorProps {
property: DynamicConfigValue;
registry: FieldConfigOptionsRegistry;
onChange: (value: DynamicConfigValue) => void;
context: FieldOverrideContext;
onRemove: () => void;
isSystemOverride?: boolean;
searchQuery: string;
}
export const DynamicConfigValueEditor = ({
property,
context,
registry,
onChange,
onRemove,
isSystemOverride,
searchQuery,
}: DynamicConfigValueEditorProps) => {
const styles = useStyles2(getStyles);
const { t } = useTranslate();
const item = registry?.getIfExists(property.id);
const componentId = useId();
if (!item) {
return null;
}
const isCollapsible =
Array.isArray(property.value) ||
property.id === FieldConfigProperty.Thresholds ||
property.id === FieldConfigProperty.Links ||
property.id === FieldConfigProperty.Mappings;
const labelCategory = item.category?.filter((c) => c !== item.name);
let editor;
/* eslint-disable react/display-name */
const renderLabel =
(includeDescription = true, includeCounter = false) =>
(isExpanded = false) => (