react-garden
Version:
React + TypeScript + ThreeJS app using Material UI on NextJS, Apollo Client, GraphQL + WordPress REST APIs, for ThreeD web development.. a part of the threed.ai code family.
71 lines (61 loc) • 2.09 kB
JavaScript
// ** React Imports
import { useState, forwardRef } from 'react'
// ** MUI Imports
import Box from '@mui/material/Box'
import TextField from '@mui/material/TextField'
// ** Third Party Imports
import format from 'date-fns/format'
import DatePicker from 'react-datepicker'
const PickersRange = () => {
// ** States
const [endDate, setEndDate] = useState(null)
const [startDate, setStartDate] = useState(new Date())
const [endDateRange, setEndDateRange] = useState(null)
const [startDateRange, setStartDateRange] = useState(new Date())
const handleOnChange = dates => {
const [start, end] = dates
setStartDate(start)
setEndDate(end)
}
const handleOnChangeRange = dates => {
const [start, end] = dates
setStartDateRange(start)
setEndDateRange(end)
}
const CustomInput = forwardRef((props, ref) => {
const startDate = format(props.start, 'MM/dd/yyyy')
const endDate = props.end !== null ? ` - ${format(props.end, 'MM/dd/yyyy')}` : null
const value = `${startDate}${endDate !== null ? endDate : ''}`
return <TextField inputRef={ref} label={props.label || ''} {...props} value={value} />
})
return (
<Box sx={{ display: 'flex', flexWrap: 'wrap' }} className='demo-space-x'>
<Box>
<DatePicker
selectsRange
endDate={endDate}
selected={startDate}
startDate={startDate}
id='date-range-picker'
onChange={handleOnChange}
shouldCloseOnSelect={false}
customInput={<CustomInput label='Date Range' start={startDate} end={endDate} />}
/>
</Box>
<Box>
<DatePicker
selectsRange
monthsShown={2}
endDate={endDateRange}
selected={startDateRange}
startDate={startDateRange}
shouldCloseOnSelect={false}
id='date-range-picker-months'
onChange={handleOnChangeRange}
customInput={<CustomInput label='Multiple Months' end={endDateRange} start={startDateRange} />}
/>
</Box>
</Box>
)
}
export default PickersRange