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 }) => {
-
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 && (
)}
{showMenu ? (