diff --git a/web/src/components/Calender.jsx b/web/src/components/Calender.jsx index 9ca02a6d4..2a2c71211 100644 --- a/web/src/components/Calender.jsx +++ b/web/src/components/Calender.jsx @@ -93,7 +93,6 @@ const Calender = ({ onChange, calenderRef, close }) => { index++; } } - // setState((prev) => ({ ...prev, selectedDay: todayTimestamp, monthDetails: monthArray })); return monthArray; }, [getNumberOfDays, getDayDetails] @@ -108,6 +107,9 @@ const Calender = ({ onChange, calenderRef, close }) => { if (state.monthDetails) { keyRef.current = keyRef.current.slice(0, state.monthDetails.length); } + // set today date in focus for keyboard navigation + const todayDate = new Date(todayTimestamp).getDate(); + keyRef.current.find((t) => t.tabIndex === todayDate)?.focus(); }, [state.monthDetails]); const isCurrentDay = (day) => day.timestamp === todayTimestamp; @@ -216,7 +218,8 @@ const Calender = ({ onChange, calenderRef, close }) => { const handleKeydown = (e, day, index) => { if ((keyRef.current && e.key === 'Enter') || e.keyCode === 32) { - onDateClick(day); + e.preventDefault(); + day.month === 0 && onDateClick(day); } if (e.key === 'ArrowLeft') { index > 0 && keyRef.current[index - 1].focus(); @@ -246,8 +249,7 @@ const Calender = ({ onChange, calenderRef, close }) => { onClick={() => onDateClick(day)} onkeydown={(e) => handleKeydown(e, day, idx)} ref={(ref) => (keyRef.current[idx] = ref)} - autoFocus={isCurrentDay(day)} - tabIndex={idx} + tabIndex={day.month === 0 ? day.date : null} className={`h-12 w-12 float-left flex flex-shrink justify-center items-center cursor-pointer ${ day.month !== 0 ? ' opacity-50 bg-gray-700 dark:bg-gray-700 pointer-events-none' : '' } @@ -284,6 +286,7 @@ const Calender = ({ onChange, calenderRef, close }) => {
setYear(-1)} > @@ -292,6 +295,7 @@ const Calender = ({ onChange, calenderRef, close }) => {
setMonth(-1)} > @@ -304,13 +308,14 @@ const Calender = ({ onChange, calenderRef, close }) => {
setMonth(1)} >
-
setYear(1)}> +
setYear(1)}>
diff --git a/web/src/components/Select.jsx b/web/src/components/Select.jsx index 24f03ca7d..4f7536dc6 100644 --- a/web/src/components/Select.jsx +++ b/web/src/components/Select.jsx @@ -71,7 +71,7 @@ export default function Select({ }, [type, options, inputOptions, propSelected, setSelected]); const [focused, setFocused] = useState(null); - const [showDatePicker, setShowDatePicker] = useState(false); + const [showCalender, setShowCalender] = useState(false); const calenderRef = useRef(null); const ref = useRef(null); @@ -81,7 +81,7 @@ export default function Select({ setShowMenu(false); //show calender date range picker - if (value === 'custom_range') return setShowDatePicker(true); + if (value === 'custom_range') return setShowCalender(true); onChange && onChange(value); }, [onChange, options, propSelected, setSelected] @@ -110,7 +110,7 @@ export default function Select({ setSelected(focused); if (options[focused].value === 'custom_range') { setShowMenu(false); - return setShowDatePicker(true); + return setShowCalender(true); } onChange && onChange(options[focused].value); @@ -184,8 +184,8 @@ export default function Select({ useEffect(() => { const addBackDrop = (e) => { - if (showDatePicker && !findDOMNodes(calenderRef.current).contains(e.target)) { - setShowDatePicker(false); + if (showCalender && !findDOMNodes(calenderRef.current).contains(e.target)) { + setShowCalender(false); } }; window.addEventListener('click', addBackDrop); @@ -193,7 +193,7 @@ export default function Select({ return function cleanup() { window.removeEventListener('click', addBackDrop); }; - }, [showDatePicker]); + }, [showCalender]); switch (type) { case 'datepicker': @@ -208,9 +208,9 @@ export default function Select({ trailingIcon={showMenu ? ArrowDropup : ArrowDropdown} value={datePickerValue} /> - {showDatePicker && ( + {showCalender && ( - setShowDatePicker(false)} /> + setShowCalender(false)} /> )} {showMenu ? (