import { Form, Select, Switch } from 'antd'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { AlertDef, Labels } from 'types/api/alerts/def'; import { requireErrorMessage } from 'utils/form/requireErrorMessage'; import { popupContainer } from 'utils/selectPopupContainer'; import ChannelSelect from './ChannelSelect'; import LabelSelect from './labels'; import { FormContainer, FormItemMedium, InputSmall, SeveritySelect, StepHeading, TextareaMedium, } from './styles'; const { Option } = Select; interface BasicInfoProps { isNewRule: boolean; alertDef: AlertDef; setAlertDef: (a: AlertDef) => void; } function BasicInfo({ isNewRule, alertDef, setAlertDef, }: BasicInfoProps): JSX.Element { const { t } = useTranslation('alerts'); const [ shouldBroadCastToAllChannels, setShouldBroadCastToAllChannels, ] = useState(false); useEffect(() => { const hasPreferredChannels = (alertDef.preferredChannels && alertDef.preferredChannels.length > 0) || isNewRule; setShouldBroadCastToAllChannels(!hasPreferredChannels); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const handleBroadcastToAllChannels = (shouldBroadcast: boolean): void => { setShouldBroadCastToAllChannels(shouldBroadcast); setAlertDef({ ...alertDef, broadcastToAll: shouldBroadcast, }); }; return ( <> {t('alert_form_step3')} { const s = (value as string) || 'critical'; setAlertDef({ ...alertDef, labels: { ...alertDef.labels, severity: s, }, }); }} > { setAlertDef({ ...alertDef, alert: e.target.value, }); }} /> { setAlertDef({ ...alertDef, annotations: { ...alertDef.annotations, description: e.target.value, }, }); }} /> { setAlertDef({ ...alertDef, labels: { ...l, }, }); }} initialValues={alertDef.labels} /> {!shouldBroadCastToAllChannels && ( { setAlertDef({ ...alertDef, preferredChannels, }); }} /> )} ); } export default BasicInfo;