Files
08d4c800e9 feat: allow timezones selection in Booker atom via prop (#20044)
* expose props to pass in timezones and booking dry run values from outside

* fix merge conflicts

* update typings

* add props values to test

* fixup: PR feedback

* PR feedback

* fix wrong prop name

* fix merge conflicts

* fixup

* update docs

* update docs examples

* fix props naming

* fix timezone component logic and typo

* extract typings of timeZones

* update typings for Timezone

* update docs

* resolve merge conflicts

* fix typings

---------

Co-authored-by: Morgan <[email protected]>
2025-03-20 14:05:45 +00:00

31 lines
1.2 KiB
TypeScript

import { useMemo } from "react";
import { TimezoneSelectComponent as TimezoneSelect } from "@calcom/features/components/timezone-select";
import type { TimezoneSelectProps } from "@calcom/features/components/timezone-select";
import type { Timezone } from "@calcom/features/bookings/Booker/types";
import useGetCityTimezones from "../hooks/useGetCityTimezones";
import { filterPropsTimezones, formatTimezones } from "../src/lib/timeZones";
export function Timezone(props: TimezoneSelectProps & { timeZones?: Timezone[] }) {
const { isLoading: isLoadingAvailableCityTimezones, data: availableCityTimezones } = useGetCityTimezones();
const cityTimeZones = useMemo(() => {
if (props.timeZones) {
const filteredTimeZones = filterPropsTimezones(props.timeZones, availableCityTimezones ?? []);
return formatTimezones(filteredTimeZones);
} else if (availableCityTimezones && !isLoadingAvailableCityTimezones) {
return formatTimezones(availableCityTimezones);
}
return [];
}, [availableCityTimezones, props.timeZones, isLoadingAvailableCityTimezones]);
return (
<TimezoneSelect
{...props}
data={cityTimeZones}
isPending={isLoadingAvailableCityTimezones}
isWebTimezoneSelect={false}
/>
);
}