add reset state

This commit is contained in:
Bernt Christian Egeland 2023-01-22 14:34:39 +01:00
parent d12132c88f
commit 36d6c7147a

View File

@ -8,10 +8,10 @@ const TimePicker = ({ dateRange, onChange }) => {
const [error, setError] = useState(null); const [error, setError] = useState(null);
const [timeRange, setTimeRange] = useState(new Set()); const [timeRange, setTimeRange] = useState(new Set());
const [hoverIdx, setHoverIdx] = useState(null); const [hoverIdx, setHoverIdx] = useState(null);
const [reset, setReset] = useState(false);
useEffect(() => { useEffect(() => {
if (!dateRange.after) return setTimeRange(new Set()); if (reset) return;
if (timeRange.size > 0) return;
const after = new Date(dateRange.after); const after = new Date(dateRange.after);
const before = new Date(dateRange.before); const before = new Date(dateRange.before);
@ -33,7 +33,7 @@ const TimePicker = ({ dateRange, onChange }) => {
for (let hour = after.getHours(); hour < beforeOffset; hour++) { for (let hour = after.getHours(); hour < beforeOffset; hour++) {
setTimeRange((timeRange) => timeRange.add(hour)); setTimeRange((timeRange) => timeRange.add(hour));
} }
}, [dateRange.after, dateRange.before, timeRange.size]); }, [dateRange, timeRange, reset]);
/** /**
* Initializes two variables before and after with date objects, * Initializes two variables before and after with date objects,
@ -71,13 +71,16 @@ const TimePicker = ({ dateRange, onChange }) => {
const _timeRange = new Set([...timeRange]); const _timeRange = new Set([...timeRange]);
_timeRange.add(hour); _timeRange.add(hour);
// reset error messages
setError(null);
/** /**
* Check if the variable "hour" exists in the "timeRange" set. * Check if the variable "hour" exists in the "timeRange" set.
* If it does, reset the timepicker * If it does, reset the timepicker
*/ */
setError(null);
if (timeRange.has(hour)) { if (timeRange.has(hour)) {
setTimeRange(new Set()); setTimeRange(new Set());
setReset(true);
const resetBefore = before.setDate(after.getDate() + numberOfDaysSelected.size - 1); const resetBefore = before.setDate(after.getDate() + numberOfDaysSelected.size - 1);
return onChange({ return onChange({
after: after.setHours(0, 0, 0, 0) / 1000, after: after.setHours(0, 0, 0, 0) / 1000,