diff --git a/web/app/components/workflow/nodes/human-input/components/delivery-method/email-configure-modal.tsx b/web/app/components/workflow/nodes/human-input/components/delivery-method/email-configure-modal.tsx new file mode 100644 index 0000000000..5731efa969 --- /dev/null +++ b/web/app/components/workflow/nodes/human-input/components/delivery-method/email-configure-modal.tsx @@ -0,0 +1,103 @@ +import { memo, useCallback, useState } from 'react' +import { useTranslation } from 'react-i18next' +import { RiCloseLine } from '@remixicon/react' +import Modal from '@/app/components/base/modal' +import Input from '@/app/components/base/input' +import TextArea from '@/app/components/base/textarea' +import Button from '@/app/components/base/button' +import { noop } from 'lodash-es' + +const i18nPrefix = 'workflow.nodes.humanInput' + +type Recipient = { + value: string + label: string +} + +type EmailConfigureModalProps = { + isShow: boolean + onClose: () => void + onConfirm: (data: any) => void +} + +const EmailConfigureModal = ({ + isShow, + onClose, + onConfirm, +}: EmailConfigureModalProps) => { + const { t } = useTranslation() + + const [recipients, setRecipients] = useState([]) + const [subject, setSubject] = useState('') + const [body, setBody] = useState('') + + const handleConfirm = useCallback(() => { + onConfirm({ + recipients: recipients.map(recipient => recipient.value), + subject, + body, + }) + }, [recipients, subject, body, onConfirm]) + + return ( + +
+ +
+
+
{t(`${i18nPrefix}.deliveryMethod.emailConfigure.title`)}
+
{t(`${i18nPrefix}.deliveryMethod.emailConfigure.description`)}
+
+
+
+
+ {t(`${i18nPrefix}.deliveryMethod.emailConfigure.recipient`)} +
+
+
+
+ {t(`${i18nPrefix}.deliveryMethod.emailConfigure.subject`)} +
+ setSubject(e.target.value)} + placeholder={t(`${i18nPrefix}.deliveryMethod.emailConfigure.subjectPlaceholder`)} + /> +
+
+
+ {t(`${i18nPrefix}.deliveryMethod.emailConfigure.body`)} +
+