v0.11.6 added event form rules.

This commit is contained in:
2026-03-21 11:07:22 -04:00
parent 60df2cf97e
commit 82a521f12c
6 changed files with 39 additions and 28 deletions

View File

@@ -179,9 +179,14 @@ function EventForm({ event, userGroups, eventTypes, selectedDate, onSave, onCanc
? (new Date(event.end_at) - new Date(event.start_at)) / 60000
: null;
const prevTypeIdRef = useRef(event?.event_type_id ? String(event.event_type_id) : '');
const mountedRef = useRef(false);
// Auto-update end time when event type or start time changes
// Mark mounted after first render so effects skip initial fire
useEffect(() => { mountedRef.current = true; }, []);
// Auto-update end time only when type, start date, or start time actually changes
useEffect(() => {
if (!mountedRef.current) return; // skip initial mount
if (!startDate || !startTime) return;
const et = localEventTypes.find(t => t.id === Number(eventTypeId));
const start = buildISO(startDate, startTime);
@@ -189,12 +194,12 @@ function EventForm({ event, userGroups, eventTypes, selectedDate, onSave, onCanc
const typeChanged = String(eventTypeId) !== prevTypeIdRef.current;
prevTypeIdRef.current = String(eventTypeId);
if (!event || typeChanged) {
// New event or type change: apply eventType duration
// New event or explicit type change: apply eventType duration
const dur = et?.default_duration_hrs || 1;
setEndDate(toLocalDateInput(addHours(start, dur)));
setEndTime(toLocalTimeInput(addHours(start, dur)));
} else {
// Editing with same type: preserve saved duration
// Editing start date/time with same type: preserve saved duration
const durMins = savedDurMins || 60;
setEndDate(toLocalDateInput(addHours(start, durMins/60)));
setEndTime(toLocalTimeInput(addHours(start, durMins/60)));