From 1f91520f1b2fdeaebbb7ca8bdddb2d17a55bf8ed Mon Sep 17 00:00:00 2001 From: Lei OT Date: Fri, 11 Oct 2024 14:46:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E4=BB=B6:=20=E5=8F=AF=E6=8B=96?= =?UTF-8?q?=E6=8B=BD=E7=9A=84=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/DndModal.jsx | 30 +++-- .../Online/Components/BubbleIM.jsx | 2 +- .../Online/Components/EmailDetail.jsx | 71 +++--------- .../Online/Input/EmailEditorPopup.jsx | 105 ++++++------------ 4 files changed, 66 insertions(+), 142 deletions(-) diff --git a/src/components/DndModal.jsx b/src/components/DndModal.jsx index cb5ac65..dfbfe02 100644 --- a/src/components/DndModal.jsx +++ b/src/components/DndModal.jsx @@ -4,28 +4,34 @@ import Modal from '@dckj/react-better-modal'; import '@dckj/react-better-modal/dist/index.css'; import { isEmpty } from '@/utils/commons'; -const DnDModal = ({ children, open, setOpen, onCancel, initial = {}, title, ...props }) => { +const DnDModal = ({ children, open, setOpen, onCancel, onMove, onResize, initial = {}, title, footer=null, ...props }) => { // const [open, setOpen] = useState(false); function onHandleMove(e) { - console.log(e, '--->>> onHandleMove'); + // console.log(e, '--->>> onHandleMove'); + if (typeof onMove === 'function') { + onMove(e); + } } function onHandleResize(e) { - console.log(e, '--->>> onHandleResize'); + // console.log(e, '--->>> onHandleResize'); + if (typeof onResize === 'function') { + onResize(e); + } } function onHandleOk() { - console.log('onOk callback'); + // console.log('onOk callback'); } function onHandleCancel() { - console.log('onCancel callback'); + // console.log('onCancel callback'); if (typeof onCancel === 'function') { onCancel(); } setOpen(false); } function onStageChange({ state }) { - console.log(state); + // console.log(state); } return ( } @@ -53,7 +59,7 @@ const DnDModal = ({ children, open, setOpen, onCancel, initial = {}, title, ...p onCancel={onHandleCancel} // onOk={onHandleOk} onStageChange={onStageChange} - footer={null}> + footer={footer}> <>{children} ); diff --git a/src/views/Conversations/Online/Components/BubbleIM.jsx b/src/views/Conversations/Online/Components/BubbleIM.jsx index 1280b03..6bc8069 100644 --- a/src/views/Conversations/Online/Components/BubbleIM.jsx +++ b/src/views/Conversations/Online/Components/BubbleIM.jsx @@ -122,7 +122,7 @@ const BubbleIM = ({ handlePreview, handleContactClick, setNewChatModalVisible, s focusMsg === message.id ? 'message-box-focus' : '', message.status === 'failed' ? 'failed-msg' : '', // '*:bg-waba-me' - message.sender === 'me' ? '*:bg-waba-me' : '', // todo: channel color + message.sender === 'me' ? '*:!bg-waba-me' : '', // todo: channel color ].join(' ')} {...(message.type === 'meetingLink' ? { diff --git a/src/views/Conversations/Online/Components/EmailDetail.jsx b/src/views/Conversations/Online/Components/EmailDetail.jsx index 4f9d3c7..3acc881 100644 --- a/src/views/Conversations/Online/Components/EmailDetail.jsx +++ b/src/views/Conversations/Online/Components/EmailDetail.jsx @@ -1,11 +1,9 @@ -import { createContext, useEffect, useState } from 'react'; +import { useState } from 'react'; import { Button, Divider, Avatar } from 'antd'; -import { DeleteOutlined } from '@ant-design/icons'; -import Modal from '@dckj/react-better-modal'; -import { Avatar as Avatar1 } from 'react-chat-elements'; import { ReplyIcon, ShareForwardIcon } from '@/components/Icons'; -import { isEmpty, olog, stringToColour } from '@/utils/commons'; +import { stringToColour } from '@/utils/commons'; import EmailEditorPopup from '../Input/EmailEditorPopup'; +import DnDModal from '@/components/DndModal'; const TagColorStyle = (tag) => { const color = stringToColour(tag); @@ -17,33 +15,14 @@ const EmailDetail = ({ open, setOpen, emailDetail, ...props }) => { // const [open, setOpen] = useState(false); const [initialPosition, setInitialPosition] = useState({}); const [initialSize, setInitialSize] = useState({}); - const [initialMailTo, setInitialMailTo] = useState({}); function onHandleMove(e) { - // console.log(e, '--->>> onHandleMove'); const { top, left, width, height } = e; setInitialPosition({ top, left }); - console.log('top, left, width, height', '--->>> onHandleMove'); - console.log(top, left, width, height, '--->>> onHandleMove'); } function onHandleResize(e) { - // console.log(e, '--->>> onHandleResize'); const { top, left, width, height } = e; setInitialPosition({ top, left }); setInitialSize({ width, height }); - console.log('top, left, width, height', '--->>> onHandleResize'); - console.log(top, left, width, height, '--->>> onHandleResize'); - } - - function onHandleOk() { - console.log('onOk callback'); - } - - function onHandleCancel() { - console.log('onCancel callback'); - setOpen(false); - } - function onStageChange({ state }) { - console.log(state); } const [action, setAction] = useState(''); @@ -62,37 +41,7 @@ const EmailDetail = ({ open, setOpen, emailDetail, ...props }) => { return ( <> - } - onMove={onHandleMove} - onResize={onHandleResize} - onCancel={onHandleCancel} - // onOk={onHandleOk} - onStageChange={onStageChange} - footer={null}> + {/* email toolbar */}
{/*
@@ -150,8 +99,16 @@ const EmailDetail = ({ open, setOpen, emailDetail, ...props }) => { {/*
{emailOrigin.attachments.map(attachment =>
{attachment.name}
)}
*/}
-
- + + ); }; diff --git a/src/views/Conversations/Online/Input/EmailEditorPopup.jsx b/src/views/Conversations/Online/Input/EmailEditorPopup.jsx index 2ff8345..8d84026 100644 --- a/src/views/Conversations/Online/Input/EmailEditorPopup.jsx +++ b/src/views/Conversations/Online/Input/EmailEditorPopup.jsx @@ -2,11 +2,12 @@ import { createContext, useEffect, useState } from 'react'; import { Button, Form, Input, Flex, Checkbox, Switch, Mentions, Popover, Popconfirm, Select } from 'antd'; import Modal from '@dckj/react-better-modal'; import '@dckj/react-better-modal/dist/index.css'; +import DnDModal from '@/components/DndModal'; import LexicalEditor from '@/components/LexicalEditor'; -import { $getRoot, $getSelection, } from 'lexical'; -import {$generateHtmlFromNodes, $generateNodesFromDOM} from '@lexical/html'; +import { $getRoot, $getSelection } from 'lexical'; +import { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html'; import { isEmpty } from '@/utils/commons'; // import { AutoFocusPlugin } from '@lexical/react/LexicalAutoFocusPlugin'; @@ -35,30 +36,9 @@ const getAbstract = (longtext) => { return abstract; }; -const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, initial = {}, action='reply', ...props }) => { +const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, initial = {}, action = 'reply', ...props }) => { const [form] = Form.useForm(); - // const [open, setOpen] = useState(false); - function onHandleMove(e) { - console.log(e, '--->>> onHandleMove'); - } - function onHandleResize(e) { - console.log(e, '--->>> onHandleResize'); - } - - function onHandleOk() { - console.log('onOk callback'); - } - - function onHandleCancel() { - console.log('onCancel callback'); - form.resetFields(); - setOpen(false); - } - function onStageChange({ state }) { - console.log(state); - } - const [isRichText, setIsRichText] = useState(true); const [htmlContent, setHtmlContent] = useState(''); const [textContent, setTextContent] = useState(''); @@ -88,15 +68,10 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini body.content = isRichText ? htmlContent : textContent; body.fromEmail = newFromEmail || fromEmail; console.log('body', body); - form - .validateFields() - .then((values) => { - form.resetFields(); - - }) - // .catch((err) => {}) - ; - + form.validateFields().then((values) => { + form.resetFields(); + }); + // .catch((err) => {}) // setOpen(false); }; @@ -147,7 +122,7 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini cc: quote.cc, subject: `Re: ${subject}`, }; - const forwardValues = {subject: `Fw: ${subject}`,}; + const forwardValues = { subject: `Fw: ${subject}` }; if (action === 'reply') { form.setFieldsValue(_formValues); setInitialForm(_formValues); @@ -160,8 +135,8 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini }, [quote, open]); const [openPlainTextConfirm, setOpenPlainTextConfirm] = useState(false); - const handlePlainTextOpenChange = ({target}) => { - const {checked: newChecked} = target; + const handlePlainTextOpenChange = ({ target }) => { + const { checked: newChecked } = target; if (!newChecked) { setIsRichText(true); setOpenPlainTextConfirm(false); @@ -172,51 +147,37 @@ const EmailEditorPopup = ({ open, setOpen, fromEmail, reference, quote = {}, ini const confirmPlainText = () => { setIsRichText(false); setOpenPlainTextConfirm(false); - } + }; return ( <> - { + form.resetFields(); + }} title={initialForm.subject || `${reference ? '回复: ' : '写邮件: '} ${fromEmail || ''}`} - minimizeButton={<>} - onMove={onHandleMove} - onResize={onHandleResize} - onCancel={onHandleCancel} - // onOk={onHandleOk} - onStageChange={onStageChange} footer={
- - 纯文本 + + + 纯文本 + - ' }, + { key: 'XXX@chinahighlights.com', value: 'XXX@chinahighlights.com', label: 'XXX ' }, + ]} + value={newFromEmail || fromEmail} + onChange={(val) => setNewFromEmail(val)} + variant={'borderless'} + />
}>
-
+ ); };