From b372477aa0accd4f4868e6343eeac9cd5377fd83 Mon Sep 17 00:00:00 2001 From: spandev <143828642+Spandan-Mishra@users.noreply.github.com> Date: Mon, 29 Dec 2025 09:45:51 +0530 Subject: [PATCH] fix: save button in availibility disabled when no changes (#26174) * fix: save button in availibility disabled when no changes * fix: updated comparison logic * fix: changed logic from and to or --- .../availability/AvailabilitySettings.tsx | 23 +++++++++++++++++-- packages/platform/atoms/availability/types.ts | 1 + 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/platform/atoms/availability/AvailabilitySettings.tsx b/packages/platform/atoms/availability/AvailabilitySettings.tsx index 2811fddbd7..2897d4b6bc 100644 --- a/packages/platform/atoms/availability/AvailabilitySettings.tsx +++ b/packages/platform/atoms/availability/AvailabilitySettings.tsx @@ -320,7 +320,10 @@ export const AvailabilitySettings = forwardRef({ defaultValues: { - ...schedule, + name: schedule.name, + timeZone: schedule.timeZone, + isDefault: schedule.isDefault, + dateOverrides: schedule.dateOverrides, schedule: schedule.availability || [], }, }); @@ -329,6 +332,20 @@ export const AvailabilitySettings = forwardRef(null); + useEffect(() => { + initialValuesRef.current = form.getValues() as AvailabilityFormValues; + }, [form, schedule]); + + const formHasChanges = useMemo(() => { + if (!initialValuesRef.current) return false; + try { + return (JSON.stringify(form.watch("schedule")) !== JSON.stringify(initialValuesRef.current.availability) || JSON.stringify(watchedValues) !== JSON.stringify(initialValuesRef.current)); + } catch { + return form.formState.isDirty; + } + }, [watchedValues, form.formState.isDirty]); + // Trigger callback whenever the form state changes useEffect(() => { if (onFormStateChange && watchedValues) { @@ -623,7 +640,9 @@ export const AvailabilitySettings = forwardRef + loading={isSaving} + disabled={isLoading || !formHasChanges} + > {t("save")}