import { DatePicker } from '@mui/lab'; import { TextField } from '@mui/material'; import dayjs from 'dayjs'; import { isEmpty } from 'lodash'; import get from 'lodash/get'; import { useEffect, useState } from 'react'; import { useAppDispatch, useAppSelector } from '@/store/hooks'; import { setResumeState } from '@/store/resume/resumeSlice'; import MarkdownSupported from './MarkdownSupported'; interface Props { type?: 'text' | 'textarea' | 'date'; label: string; path: string; className?: string; markdownSupported?: boolean; } const ResumeInput: React.FC = ({ type = 'text', label, path, className, markdownSupported = false }) => { const dispatch = useAppDispatch(); const stateValue = useAppSelector((state) => get(state.resume, path, '')); useEffect(() => { setValue(stateValue); }, [stateValue]); const [value, setValue] = useState(stateValue); const onChange = (event: React.ChangeEvent) => { setValue(event.target.value); dispatch(setResumeState({ path, value: event.target.value })); }; const onChangeValue = (value: string) => { setValue(value); dispatch(setResumeState({ path, value })); }; if (type === 'textarea') { return ( } /> ); } if (type === 'date') { return ( } onChange={(date: Date | null, keyboardInputValue: string | undefined) => { isEmpty(keyboardInputValue) && onChangeValue(''); date && dayjs(date).isValid() && onChangeValue(date.toISOString()); }} /> ); } return ; }; export default ResumeInput;