v0.11.6 added event form rules.
This commit is contained in:
@@ -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)));
|
||||
|
||||
Reference in New Issue
Block a user