import { InfoCircleOutlined } from '@ant-design/icons/lib' import { Form, Input, Select, Switch, Tabs } from 'antd' import { FormInstance } from 'antd/lib/form' import { TabPaneProps } from 'antd/lib/tabs' import React, { useEffect, useState } from 'react' import { Trans, useTranslation } from 'react-i18next' import { AdminFormFieldFragment } from '../../../graphql/fragment/admin.form.fragment' interface Props extends TabPaneProps { form: FormInstance fields: AdminFormFieldFragment[] } export const SelfNotificationsTab: React.FC = (props) => { const { t } = useTranslation() const [enabled, setEnabled] = useState() useEffect(() => { const next = props.form.getFieldValue(['form', 'selfNotifications', 'enabled']) as boolean if (next !== enabled) { setEnabled(next) } }, [props.form.getFieldValue(['form', 'selfNotifications', 'enabled'])]) useEffect(() => { props.form .validateFields([ ['form', 'selfNotifications', 'subject'], ['form', 'selfNotifications', 'htmlTemplate'], ]) .catch((e: Error) => console.error('failed to validate', e)) }, [enabled]) const groups: { [key: string]: AdminFormFieldFragment[] } = {} props.fields.forEach((field) => { if (!groups[field.type]) { groups[field.type] = [] } groups[field.type].push(field) }) return ( setEnabled(e.valueOf())} /> form:selfNotifications.htmlTemplateInfo } > ) }