import { useMemo, useRef, useState } from 'react' import { useLocation } from 'react-router-dom' import { Card, Flex, Space, Spin } from 'antd' import { LoadingOutlined } from '@ant-design/icons' import useCollapseState from '../../hooks/useCollapseState' import NotesPanel from '../../common/NotesPanel' import InfoCollapse from '../../common/InfoCollapse' import ViewButton from '../../common/ViewButton' import NoteIcon from '../../../Icons/NoteIcon' import ObjectForm from '../../common/ObjectForm' import EditButtons from '../../common/EditButtons' import ObjectTableNavigationButtons from '../../common/ObjectTableNavigationButtons' import ActivityIndicator from '../../common/ActivityIndicator' import ActionHandler from '../../common/ActionHandler' import ObjectActions from '../../common/ObjectActions' import TemplateEditor from '../../common/TemplateEditor' import ScrollBox from '../../common/ScrollBox' import { useDashboardObjectTools } from '../../context/DashboardObjectToolsContext' const EmailTemplateDesign = () => { const location = useLocation() const objectFormRef = useRef(null) const actionHandlerRef = useRef(null) const emailTemplateId = new URLSearchParams(location.search).get( 'emailTemplateId' ) const [collapseState, updateCollapseState] = useCollapseState( 'EmailTemplateDesign', { preview: true, editor: true, notes: true } ) const [formState, setFormState] = useState({ isEditing: false, editLoading: false, formValid: false, activities: [], loading: false, objectData: {} }) useDashboardObjectTools( useMemo( () => ( ), [emailTemplateId, formState.isEditing, formState.loading] ) ) return ( actionHandlerRef.current.callAction('finishEdit')} cancelEditing={() => actionHandlerRef.current.callAction('cancelEdit') } startEditing={() => actionHandlerRef.current.callAction('edit')} editLoading={formState.editLoading} formValid={formState.formValid} disabled={formState.beingEditedByOther || formState.loading} loading={formState.editLoading} /> { objectFormRef.current?.startEditing() return false }, cancelEdit: () => { objectFormRef.current?.cancelEditing() return true }, finishEdit: () => { objectFormRef.current?.handleUpdate() return true } }} loading={formState.loading} ref={actionHandlerRef} > setFormState((previous) => ({ ...previous, ...state })) } > {({ loading, isEditing, objectData, form, setObjectData }) => ( )} } active={collapseState.notes} onToggle={(expanded) => updateCollapseState('notes', expanded)} collapseKey='notes' > }> ) } export default EmailTemplateDesign