import { css } from '@emotion/css'; import { ComponentProps, useMemo } from 'react'; import { GrafanaTheme2, SelectableValue } from '@grafana/data'; import { InlineField, Select, SelectMenuOptions, useStyles2 } from '@grafana/ui'; import { useAlertmanager } from '../state/AlertmanagerContext'; import { AlertManagerDataSource, GRAFANA_RULES_SOURCE_NAME } from '../utils/datasource'; interface Props { disabled?: boolean; } function getAlertManagerLabel(alertManager: AlertManagerDataSource) { return alertManager.name === GRAFANA_RULES_SOURCE_NAME ? 'Grafana' : alertManager.name; } export const AlertManagerPicker = ({ disabled = false }: Props) => { const styles = useStyles2(getStyles); const { selectedAlertmanager, availableAlertManagers, setSelectedAlertmanager } = useAlertmanager(); const options = useMemo(() => { return availableAlertManagers.map>((ds) => ({ label: getAlertManagerLabel(ds), value: ds.name, imgUrl: ds.imgUrl, meta: ds.meta, })); }, [availableAlertManagers]); const isDisabled = disabled || options.length === 1; const label = isDisabled ? 'Alertmanager' : 'Choose Alertmanager'; return (