import React, { FC } from 'react'; import { SelectableValue } from '@grafana/data'; import { Button, Checkbox, Field, Input } from '@grafana/ui'; import { NotificationChannelDTO, NotificationChannelOption, NotificationChannelSecureFields } from '../../../types'; import { NotificationSettingsProps } from './NotificationChannelForm'; import { OptionElement } from './OptionElement'; interface Props extends NotificationSettingsProps { selectedChannelOptions: NotificationChannelOption[]; currentFormValues: NotificationChannelDTO; secureFields: NotificationChannelSecureFields; onResetSecureField: (key: string) => void; } export const NotificationChannelOptions: FC = ({ control, currentFormValues, errors, selectedChannelOptions, register, onResetSecureField, secureFields, }) => { return ( <> {selectedChannelOptions.map((option: NotificationChannelOption, index: number) => { const key = `${option.label}-${index}`; // Some options can be dependent on other options, this determines what is selected in the dependency options // I think this needs more thought. const selectedOptionValue = currentFormValues[`settings.${option.showWhen.field}`] && (currentFormValues[`settings.${option.showWhen.field}`] as SelectableValue).value; if (option.showWhen.field && selectedOptionValue !== option.showWhen.is) { return null; } if (option.element === 'checkbox') { return ( ); } return ( {secureFields && secureFields[option.propertyName] ? ( onResetSecureField(option.propertyName)} fill="text" type="button" size="sm"> Clear } /> ) : ( )} ); })} ); };