import type { FormInstance, SelectProps} from 'antd' import {Button, Form, Input, Select, Space, Tag, Tooltip, Typography} from 'antd' import {t} from 'ttag' import {ApiOutlined, MinusCircleOutlined, PlusOutlined} from '@ant-design/icons' import React from 'react' import type {Connector} from '../../../utils/api/connectors' import { rdapDomainStatusCodeDetailTranslation, rdapEventDetailTranslation, rdapEventNameTranslation } from '../../../utils/functions/rdapTranslation' import {actionToColor} from '../../../utils/functions/actionToColor' import {actionToIcon} from '../../../utils/functions/actionToIcon' import type {EventAction, Watchlist} from '../../../utils/api' import {formItemLayoutWithOutLabel} from "../../../utils/providers" import {eppStatusCodeToColor} from "../../../utils/functions/eppStatusCodeToColor" type TagRender = SelectProps['tagRender'] const formItemLayout = { labelCol: { xs: {span: 24}, sm: {span: 4} }, wrapperCol: { xs: {span: 24}, sm: {span: 20} } } export function WatchlistForm({form, connectors, onFinish, isCreation}: { form: FormInstance connectors: Array onFinish: (values: { domains: string[], trackedEvents: string[], trackedEppStatus: string[], token: string }) => void isCreation: boolean, watchlist?: Watchlist, }) { const rdapEventNameTranslated = rdapEventNameTranslation() const rdapEventDetailTranslated = rdapEventDetailTranslation() const rdapDomainStatusCodeDetailTranslated = rdapDomainStatusCodeDetailTranslation() const eventActionTagRenderer: TagRender = ({value, closable, onClose}: { value: EventAction closable: boolean onClose: () => void }) => { const onPreventMouseDown = (event: React.MouseEvent) => { event.preventDefault() event.stopPropagation() } return ( {rdapEventNameTranslated[value as keyof typeof rdapEventNameTranslated]} ) } const domainStatusTagRenderer: TagRender = ({value, closable, onClose}: { value: EventAction closable: boolean onClose: () => void }) => { const onPreventMouseDown = (event: React.MouseEvent) => { event.preventDefault() event.stopPropagation() } return ( {value} ) } return (
{ if (!domains || domains.length < 1) { throw new Error(t`At least one domain name`) } } } ]} > {(fields, {add, remove}, {errors}) => ( <> {fields.map((field, index) => ( {fields.length > 1 ? ( remove(field.name)} /> ) : null} ))} )} ({ value: e, title: rdapDomainStatusCodeDetailTranslated[e as keyof typeof rdapDomainStatusCodeDetailTranslated] || undefined, label: e }))} /> {fields.length > 0 ? ( remove(field.name)} /> ) : null} ))} {t`Check out this link to the Symfony documentation to help you build the DSN`} } > )} ) }