"use client"; import * as React from "react"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/src/components/ui/select"; import { type Period, display12HourValue, setDateByType, } from "./time-picker-utils"; export interface PeriodSelectorProps { period: Period; setPeriod: (m: Period) => void; date: Date | undefined; setDate: (date: Date | undefined) => void; onRightFocus?: () => void; onLeftFocus?: () => void; } export const TimePeriodSelect = React.forwardRef< HTMLButtonElement, PeriodSelectorProps >(({ period, setPeriod, date, setDate, onLeftFocus, onRightFocus }, ref) => { const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "ArrowRight") onRightFocus?.(); if (e.key === "ArrowLeft") onLeftFocus?.(); }; const handleValueChange = (value: Period) => { setPeriod(value); /** * trigger an update whenever the user switches between AM and PM; * otherwise user must manually change the hour each time */ if (date) { const hours = display12HourValue(date.getHours()); setDate( setDateByType( new Date(date), hours.toString(), "12hours", period === "AM" ? "PM" : "AM", ), ); } }; return (
); }); TimePeriodSelect.displayName = "TimePeriodSelect";