import { useState } from "react"; import { useFormContext } from "react-hook-form"; import { useLocale } from "@calcom/lib/hooks/useLocale"; import { TimeUnit } from "@calcom/prisma/enums"; import { Dropdown, DropdownItem, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, Icon, TextField, } from "@calcom/ui"; const TIME_UNITS = [TimeUnit.DAY, TimeUnit.HOUR, TimeUnit.MINUTE] as const; type Props = { disabled: boolean; }; const TimeUnitAddonSuffix = ({ DropdownItems, timeUnitOptions, }: { DropdownItems: JSX.Element; timeUnitOptions: { [x: string]: string }; }) => { // because isDropdownOpen already triggers a render cycle we can use getValues() // instead of watch() function const form = useFormContext(); const timeUnit = form.getValues("timeUnit") ?? TimeUnit.MINUTE; const [isDropdownOpen, setIsDropdownOpen] = useState(false); return ( {DropdownItems} ); }; export const TimeTimeUnitInput = (props: Props) => { const form = useFormContext(); const { t } = useLocale(); const timeUnitOptions = TIME_UNITS.reduce((acc, option) => { acc[option] = t(`${option.toLowerCase()}_timeUnit`); return acc; }, {} as { [x: string]: string }); return (
{TIME_UNITS.map((timeUnit, index) => ( { form.setValue("timeUnit", timeUnit, { shouldDirty: true }); }}> {timeUnitOptions[timeUnit]} ))} } /> } />
); };