// 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 ? (
) : (
} onClick={() => setOpenCompose(false)}>
Send
)}
setOpenCompose(false)}>
)
}
export default ComposeMail