// React Imports import { useState } from 'react' // MUI Imports import Drawer from '@mui/material/Drawer' import Button from '@mui/material/Button' import Typography from '@mui/material/Typography' import IconButton from '@mui/material/IconButton' import InputBase from '@mui/material/InputBase' // Third-party Imports import classnames from 'classnames' import { useEditor, EditorContent } from '@tiptap/react' import { StarterKit } from '@tiptap/starter-kit' import { Underline } from '@tiptap/extension-underline' import { Placeholder } from '@tiptap/extension-placeholder' import { TextAlign } from '@tiptap/extension-text-align' import type { Editor } from '@tiptap/core' // Component Imports import CustomIconButton from '@core/components/mui/IconButton' // Hook Imports import { useSettings } from '@core/hooks/useSettings' // Style Imports import '@/libs/styles/tiptapEditor.css' type Props = { openCompose: boolean setOpenCompose: (value: boolean) => void isBelowSmScreen: boolean isBelowMdScreen: boolean } const EditorToolbar = ({ editor }: { editor: Editor | null }) => { if (!editor) { return null } return (
editor.chain().focus().toggleBold().run()} > editor.chain().focus().toggleUnderline().run()} > editor.chain().focus().toggleItalic().run()} > editor.chain().focus().toggleStrike().run()} > editor.chain().focus().setTextAlign('left').run()} > editor.chain().focus().setTextAlign('center').run()} > editor.chain().focus().setTextAlign('right').run()} > editor.chain().focus().setTextAlign('justify').run()} >
) } const ComposeMail = (props: Props) => { // Props const { openCompose, setOpenCompose, isBelowSmScreen, isBelowMdScreen } = props // States const [visibility, setVisibility] = useState({ cc: false, bcc: false }) // Hooks const { settings } = useSettings() const toggleVisibility = (value: 'cc' | 'bcc') => { setVisibility(prev => ({ ...prev, [value]: !prev[value] })) } const editor = useEditor({ extensions: [ StarterKit, Placeholder.configure({ placeholder: 'Message' }), TextAlign.configure({ types: ['heading', 'paragraph'] }), Underline ], immediatelyRender: false }) return ( setOpenCompose(false)} PaperProps={{ sx: { width: isBelowMdScreen ? 'calc(100% - 2 * 1.5rem)' : '100%', maxWidth: 600, position: 'absolute', height: 'auto', insetInlineStart: 'auto', insetInlineEnd: '1.5rem', insetBlockEnd: '1.5rem', borderRadius: 'var(--mui-shape-borderRadius)', borderTop: 0, boxShadow: settings.skin === 'bordered' ? 'none' : 'var(--mui-customShadows-xl)', border: settings.skin === 'bordered' ? '1px solid var(--mui-palette-divider)' : undefined, zIndex: 12 } }} >
Compose Mail
setOpenCompose(false)}> setOpenCompose(false)}>
To:
toggleVisibility('cc')}> Cc | toggleVisibility('bcc')}> Bcc
{visibility.cc && ( Cc: } /> )} {visibility.bcc && ( Bcc: } /> )} Subject: } />
{isBelowSmScreen ? ( ) : ( )}
setOpenCompose(false)}>
) } export default ComposeMail