DateRangePickers combine a DateInput and a Calendar popover to allow users to enter or select a date range.
when locale is zhCN
, the format is YYYY-MM-DD - YYYY-MM-DD
, when locale is enUS
, the format is MM/DD/YYYY - MM/DD/YYYY
:
single mode:
import Spross from 'spross';// undefined - undefinedconst [value, setValue] = useState<[Date, Date] | undefined>([today, tomorrow]);<Spross.DateRangePicker locale="enUS" value={value} onChange={setValue} />
you can combine disabledDays
prop with minDate
and maxDate
prop to disable days:
import Spross from 'spross';// undefined - undefinedconst [value, setValue] = useState<[Date, Date] | undefined>([today, tomorrow]);const today = new Date();const minDate = new Date(today.getFullYear(), 0, 1);const maxDate = new Date(today.getFullYear(), 11, 31);<Spross.DatePickervalue={value}onChange={setValue}minDate={minDate}maxDate={maxDate}disabledDays={(date) => date.getDay() === 0 || date.getDay() === 2}/>
use onStartDaySelect
and onEndDaySelect
to limit the range number to 7 days:
import Spross from 'spross';const [value, setValue] = useState<[Date, Date] | undefined>();const [startDay, setStartDay] = useState<Date | undefined>(undefined);let oneWeekBefore: Date | undefined = undefined;let oneWeekLater: Date | undefined = undefined;if (startDay) {oneWeekBefore = new Date(startDay.getTime() - 7 * 24 * 60 * 60 * 1000);oneWeekLater = new Date(startDay.getTime() + 7 * 24 * 60 * 60 * 1000);}<Spross.DateRangePickervalue={value}onChange={setValue}disabledDays={(day) =>!!startDay && ((!!oneWeekBefore && day < oneWeekBefore) || (!!oneWeekLater && day > oneWeekLater))}onStartDaySelect={(day) => setStartDay(day)}onEndDaySelect={() => setStartDay(undefined)}/>