UNPKG

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
// ** 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