import { cx } from '@emotion/css'; import React, { FC, useState } from 'react'; import { Button, Collapse, Field, Form, Input, InputControl, Link, MultiSelect, Select, useStyles2 } from '@grafana/ui'; import { AmRouteReceiver, FormAmRoute } from '../../types/amroutes'; import { mapMultiSelectValueToStrings, mapSelectValueToString, optionalPositiveInteger, stringToSelectableValue, stringsToSelectableValues, commonGroupByOptions, } from '../../utils/amroutes'; import { makeAMLink } from '../../utils/misc'; import { timeOptions } from '../../utils/time'; import { getFormStyles } from './formStyles'; export interface AmRootRouteFormProps { alertManagerSourceName: string; onCancel: () => void; onSave: (data: FormAmRoute) => void; receivers: AmRouteReceiver[]; routes: FormAmRoute; } export const AmRootRouteForm: FC = ({ alertManagerSourceName, onCancel, onSave, receivers, routes, }) => { const styles = useStyles2(getFormStyles); const [isTimingOptionsExpanded, setIsTimingOptionsExpanded] = useState(false); const [groupByOptions, setGroupByOptions] = useState(stringsToSelectableValues(routes.groupBy)); return (
{({ control, errors, setValue }) => ( <> <>
( )} control={control} name="groupWaitValue" rules={{ validate: optionalPositiveInteger, }} /> ( )} control={control} name="groupIntervalValue" rules={{ validate: optionalPositiveInteger, }} /> ( )} control={control} name="repeatIntervalValue" rules={{ validate: optionalPositiveInteger, }} /> (