[#571] calendar selector doesnt need to be clicked twice to open (#605)

Co-authored-by: Camille Moussu <cmoussu@linagora.com>
This commit is contained in:
Camille Moussu
2026-03-03 21:12:50 +01:00
committed by GitHub
parent 4d16d19132
commit 8599b5b76a
+16 -1
View File
@@ -188,6 +188,10 @@ export default function EventFormFields({
// Track if user has clicked on calendar section in normal mode // Track if user has clicked on calendar section in normal mode
const [hasClickedCalendarSection, setHasClickedCalendarSection] = const [hasClickedCalendarSection, setHasClickedCalendarSection] =
React.useState(false); React.useState(false);
// Track whether the calendar Select dropdown is open
const [calendarSelectOpen, setCalendarSelectOpen] = React.useState(false);
const delegatedCalendars = userPersonalCalendars.filter( const delegatedCalendars = userPersonalCalendars.filter(
(cal) => cal.delegated (cal) => cal.delegated
); );
@@ -202,13 +206,14 @@ export default function EventFormFields({
: ""; : "";
const isSelectedDelegated = !!selectedCalendar?.delegated; const isSelectedDelegated = !!selectedCalendar?.delegated;
// Reset hasEndDateChanged and hasClickedDateTimeSection when modal closes // Reset all click-tracking state when modal closes
React.useEffect(() => { React.useEffect(() => {
if (!isOpen) { if (!isOpen) {
setHasEndDateChanged(false); setHasEndDateChanged(false);
setHasClickedDateTimeSection(false); setHasClickedDateTimeSection(false);
setHasClickedLocationSection(false); setHasClickedLocationSection(false);
setHasClickedCalendarSection(false); setHasClickedCalendarSection(false);
setCalendarSelectOpen(false);
} }
}, [isOpen]); }, [isOpen]);
@@ -230,6 +235,13 @@ export default function EventFormFields({
} }
}, [showMore, hasEndDateChanged, startDate, endDate]); }, [showMore, hasEndDateChanged, startDate, endDate]);
// Auto-open the calendar Select once it is mounted after clicking the preview row
React.useEffect(() => {
if (hasClickedCalendarSection) {
setCalendarSelectOpen(true);
}
}, [hasClickedCalendarSection]);
// Use all-day toggle hook // Use all-day toggle hook
const { handleAllDayToggle } = useAllDayToggle({ const { handleAllDayToggle } = useAllDayToggle({
allday, allday,
@@ -822,6 +834,9 @@ export default function EventFormFields({
label="" label=""
SelectDisplayProps={{ "aria-label": t("event.form.calendar") }} SelectDisplayProps={{ "aria-label": t("event.form.calendar") }}
displayEmpty displayEmpty
open={calendarSelectOpen}
onOpen={() => setCalendarSelectOpen(true)}
onClose={() => setCalendarSelectOpen(false)}
onChange={(e: SelectChangeEvent) => onChange={(e: SelectChangeEvent) =>
handleCalendarChange(e.target.value) handleCalendarChange(e.target.value)
} }