diff --git a/packages/platform/atoms/availability/atom-api-transformers/transformAtomScheduleForApi.ts b/packages/platform/atoms/availability/atom-api-transformers/transformAtomScheduleForApi.ts
index 358a05ce7a..a9aa70cc6e 100644
--- a/packages/platform/atoms/availability/atom-api-transformers/transformAtomScheduleForApi.ts
+++ b/packages/platform/atoms/availability/atom-api-transformers/transformAtomScheduleForApi.ts
@@ -12,11 +12,7 @@ export function transformAtomScheduleForApi(body: AvailabilityFormValues): Updat
const overrides =
dateOverrides.flatMap(
(dateOverridesRanges) =>
- dateOverridesRanges?.ranges?.map((range) => ({
- date: `${range.start.getUTCFullYear}-${range.start.getUTCMonth}-${range.start.getUTCDate}`,
- startTime: `${range.start.getUTCHours}-${range.start.getUTCMinutes}`,
- endTime: `${range.end.getUTCHours}-${range.end.getUTCMinutes}`,
- })) ?? []
+ dateOverridesRanges?.ranges?.map((range) => transfromAtomOverrideForApi(range)) ?? []
) ?? [];
const availability = formatScheduleTime(schedule);
@@ -24,6 +20,32 @@ export function transformAtomScheduleForApi(body: AvailabilityFormValues): Updat
return { name, timeZone, isDefault, availability, overrides };
}
+type AtomDateOverride = {
+ start: Date;
+ end: Date;
+};
+
+function transfromAtomOverrideForApi(override: AtomDateOverride) {
+ const date = `${override.start.getUTCFullYear()}-${(override.start.getUTCMonth() + 1)
+ .toString()
+ .padStart(2, "0")}-${override.start.getUTCDate().toString().padStart(2, "0")}`;
+
+ return {
+ date,
+ startTime: padHoursMinutesWithZeros(`${override.start.getUTCHours()}:${override.start.getUTCMinutes()}`),
+ endTime: padHoursMinutesWithZeros(`${override.end.getUTCHours()}:${override.end.getUTCMinutes()}`),
+ };
+}
+
+function padHoursMinutesWithZeros(hhMM: string) {
+ const [hours, minutes] = hhMM.split(":");
+
+ const formattedHours = hours.padStart(2, "0");
+ const formattedMinutes = minutes.padStart(2, "0");
+
+ return `${formattedHours}:${formattedMinutes}`;
+}
+
function formatScheduleTime(
weekSchedule: AvailabilityFormValues["schedule"]
): UpdateScheduleInput_2024_06_11["availability"] {
diff --git a/packages/platform/atoms/availability/wrappers/AvailabilitySettingsPlatformWrapper.tsx b/packages/platform/atoms/availability/wrappers/AvailabilitySettingsPlatformWrapper.tsx
index b44f82d903..7c4bc43adc 100644
--- a/packages/platform/atoms/availability/wrappers/AvailabilitySettingsPlatformWrapper.tsx
+++ b/packages/platform/atoms/availability/wrappers/AvailabilitySettingsPlatformWrapper.tsx
@@ -26,6 +26,7 @@ type AvailabilitySettingsPlatformWrapperProps = {
onDeleteSuccess?: (res: ApiResponse) => void;
onDeleteError?: (err: ApiErrorResponse) => void;
disableEditableHeading?: boolean;
+ enableOverrides?: boolean;
};
export const AvailabilitySettingsPlatformWrapper = ({
@@ -36,6 +37,7 @@ export const AvailabilitySettingsPlatformWrapper = ({
onUpdateError,
onUpdateSuccess,
disableEditableHeading = false,
+ enableOverrides = false,
}: AvailabilitySettingsPlatformWrapperProps) => {
const { isLoading, data: schedule } = useSchedule(id);
const { data: schedules } = useSchedules();
@@ -99,6 +101,7 @@ export const AvailabilitySettingsPlatformWrapper = ({
}}
weekStart="Sunday"
timeFormat={timeFormat}
+ enableOverrides={enableOverrides}
isLoading={isLoading}
schedule={{
name: atomSchedule.name,
diff --git a/packages/platform/atoms/availability/wrappers/AvailabilitySettingsWebWrapper.tsx b/packages/platform/atoms/availability/wrappers/AvailabilitySettingsWebWrapper.tsx
index 01843bbd5a..3af1688dee 100644
--- a/packages/platform/atoms/availability/wrappers/AvailabilitySettingsWebWrapper.tsx
+++ b/packages/platform/atoms/availability/wrappers/AvailabilitySettingsWebWrapper.tsx
@@ -86,6 +86,7 @@ export const AvailabilitySettingsWebWrapper = () => {
isDeleting={deleteMutation.isPending}
isLoading={isPending}
isSaving={updateMutation.isPending}
+ enableOverrides={true}
timeFormat={timeFormat}
weekStart={me.data?.weekStart || "Sunday"}
backPath={fromEventType ? true : "/availability"}
diff --git a/packages/platform/atoms/src/components/ui/dialog.tsx b/packages/platform/atoms/src/components/ui/dialog.tsx
index e35cad9be8..9e3d69ae5c 100644
--- a/packages/platform/atoms/src/components/ui/dialog.tsx
+++ b/packages/platform/atoms/src/components/ui/dialog.tsx
@@ -33,20 +33,24 @@ const DialogContent = React.forwardRef<
React.ComponentPropsWithoutRef
>(({ className, children, ...props }, ref) => (
<>
-
-
- {children}
-
-
- Close
-
-
+
+
+
+
+ {children}
+
+
+ Close
+
+
+
+
>
));
DialogContent.displayName = DialogPrimitive.Content.displayName;
diff --git a/packages/platform/examples/base/src/pages/availability.tsx b/packages/platform/examples/base/src/pages/availability.tsx
index ce64dbb4a5..6be3b2ad4f 100644
--- a/packages/platform/examples/base/src/pages/availability.tsx
+++ b/packages/platform/examples/base/src/pages/availability.tsx
@@ -11,6 +11,7 @@ export default function Availability(props: { calUsername: string; calEmail: str