import { CalendarMonth, Close } from '@mui/icons-material'
import { Box, Button, IconButton, Typography } from '@mui/joy'
import moment from 'moment'
import { useMemo, useState } from 'react'
import DueDatePickerModal from './DueDatePickerModal'
const DueDatePickerField = ({
dueDateOnly,
dueTime,
useCustomTime,
onDueDateChange,
onDueTimeChange,
onUseCustomTimeChange,
onClear,
emptyDisplay = 'icon-text',
size = 'sm',
}) => {
const [isOpen, setIsOpen] = useState(false)
const handleSave = ({
dueDateOnly: nextDate,
dueTime: nextTime,
useCustomTime: nextUseCustomTime,
}) => {
onDueDateChange?.({ target: { value: nextDate || '' } })
onUseCustomTimeChange?.(nextUseCustomTime)
onDueTimeChange?.({
target: { value: nextUseCustomTime && nextTime ? nextTime : '' },
})
setIsOpen(false)
}
const hasDueDate = Boolean(dueDateOnly)
const shouldShowLabel = hasDueDate || emptyDisplay === 'icon-text'
const dueDateLabel = useMemo(() => {
if (!dueDateOnly) {
return 'Due'
}
const formattedDate = moment(dueDateOnly).format('MMM D')
if (useCustomTime && dueTime) {
return `${formattedDate}, ${dueTime}`
}
return formattedDate
}, [dueDateOnly, dueTime, useCustomTime])
return (
<>
{hasDueDate && onClear && (
{
e.stopPropagation()
onClear?.()
}}
sx={{
position: 'absolute',
top: -18,
right: -18,
zIndex: 10,
borderRadius: '50%',
'&:hover': {
bgcolor: 'danger.softBg',
},
}}
>
)}
setIsOpen(false)}
dueDateOnly={dueDateOnly}
dueTime={dueTime}
useCustomTime={useCustomTime}
onApply={handleSave}
onRemove={
onClear
? () => {
onClear()
setIsOpen(false)
}
: undefined
}
/>
>
)
}
export default DueDatePickerField