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 {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" 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[], token: string }) => void isCreation: boolean, watchList?: Watchlist, }) { const rdapEventNameTranslated = rdapEventNameTranslation() const rdapEventDetailTranslated = rdapEventDetailTranslation() const triggerTagRenderer: 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]} ) } 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} ))} )} } optionFilterProp='label' options={connectors.map(c => ({ label: `${c.provider} (${c.id})`, value: c.id }))} /> {(fields, {add, remove}, {errors}) => ( <> {fields.map((field, index) => ( {fields.length > 0 ? ( remove(field.name)} /> ) : null} ))} {t`Check out this link to the Symfony documentation to help you build the DSN`} } > )}
) }