import { memo, useState, useCallback } from 'react'; import { DatePickerInlineBase, getStateValue } from '../DatePickerInline'; import AnimatedCrossView from './AnimatedCrossView'; import DatePickerModalHeader from './DatePickerModalHeader'; import DatePickerModalContentHeader from './DatePickerModalContentHeader'; import CalendarEdit from './CalendarEdit'; import DatePickerModalHeaderBackground from './DatePickerModalHeaderBackground'; import type { DatePickerModalContentSingleProps, DatePickerModalContentRangeProps, DatePickerModalContentMultiProps, LocalState, LocalStateSingle, LocalStateRange, LocalStateMultiple, } from './types'; import { useControlledValue } from '../../hooks'; import DatePickerInlineHeader from '../DatePickerInline/DatePickerInlineHeader'; type Props = | DatePickerModalContentSingleProps | DatePickerModalContentRangeProps | DatePickerModalContentMultiProps; export function DatePickerModalContent(props: Props) { const { mode = 'single', onChange, onConfirm, onClose, disableSafeTop, disableWeekDays, // locale = 'en', validRange, dateMode, startYear, endYear, date, startDate, endDate, dates, } = props; const [collapsed, setCollapsed] = useState(true); const onInnerChange = useCallback( (params: any) => { onChange?.(params); }, [onChange], ); const [state, onStateChange] = useControlledValue({ value: getStateValue( { date, dates, startDate, endDate, }, mode, ), onChange: onInnerChange, }); const onInnerConfirm = useCallback(() => { if (mode === 'single') { (onConfirm as DatePickerModalContentSingleProps['onConfirm'])?.({ date: (state as LocalStateSingle)?.date, }); } else if (mode === 'range') { (onConfirm as DatePickerModalContentRangeProps['onConfirm'])?.({ startDate: (state as LocalStateRange)?.startDate, endDate: (state as LocalStateRange)?.endDate, }); } else if (mode === 'multiple') { (onConfirm as DatePickerModalContentMultiProps['onConfirm'])?.({ dates: (state as LocalStateMultiple)?.dates || [], }); } }, [state, mode, onConfirm]); const onToggleCollapse = useCallback(() => { setCollapsed(prev => !prev); }, [setCollapsed]); return ( <> } calendarEdit={ } /> ); } export default memo(DatePickerModalContent);