Skip to content

Commit b843c19

Browse files
fix: Availability reset to default hours on day toggle (calcom#26410)
* persist toggle time * Refactor time slot management in Schedule component --------- Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
1 parent 4d9e726 commit b843c19

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

packages/features/schedules/components/Schedule.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ export const ScheduleDay = <TFieldValues extends FieldValues>({
7474
}) => {
7575
const { watch, setValue } = useFormContext();
7676
const watchDayRange = watch(name);
77+
const lastNonEmptyDayRangeRef = useRef<TimeRange[] | null>(null);
7778

7879
return (
7980
<div
@@ -97,7 +98,20 @@ export const ScheduleDay = <TFieldValues extends FieldValues>({
9798
checked={watchDayRange && !!watchDayRange.length}
9899
data-testid={`${weekday}-switch`}
99100
onCheckedChange={(isChecked) => {
100-
setValue(name, (isChecked ? [DEFAULT_DAY_RANGE] : []) as TFieldValues[typeof name]);
101+
if (isChecked) {
102+
const previousDayRange = lastNonEmptyDayRangeRef.current;
103+
const newValue =
104+
(previousDayRange && previousDayRange.length > 0
105+
? previousDayRange
106+
: [DEFAULT_DAY_RANGE]) as TFieldValues[typeof name];
107+
108+
setValue(name, newValue);
109+
} else {
110+
if (watchDayRange && watchDayRange.length > 0) {
111+
lastNonEmptyDayRangeRef.current = watchDayRange as unknown as TimeRange[];
112+
}
113+
setValue(name, [] as TFieldValues[typeof name]);
114+
}
101115
}}
102116
/>
103117
</div>

0 commit comments

Comments
 (0)