import React from "react"; import { TimeSelect } from "./TimeSelect"; import { TimePickerProps } from "./TimeProps"; import { getValidTimeValue, genShowHourMinuteSecond, getHourMinuteSecond, getDisabledHours, getDisabledMinutes, getDisabledSeconds, getDisabledMilliseconds, } from "./util"; import { DateChangeContext } from "../calendar/DateProps"; type SelectType = "hour" | "minute" | "second" | "milliseconds"; export function Combobox({ value: _value, onChange, format = "HH:mm:ss", ...props }: Partial) { const value = getValidTimeValue(_value, props, format); const { showHour, showMinute, showSecond, showMilliseconds, } = genShowHourMinuteSecond(format); const { hour = null, minute = null, second = null, milliseconds = null, } = _value ? getHourMinuteSecond(value) : {}; const handleItemChange = (type: SelectType) => ( selectValue: number, context: DateChangeContext ): void => { const newValue = value.clone(); switch (type) { case "hour": newValue.hour(selectValue); break; case "minute": newValue.minute(selectValue); break; case "second": newValue.second(selectValue); break; case "milliseconds": newValue.milliseconds(selectValue); break; } onChange(getValidTimeValue(newValue, props, format), context); }; const { hourStep = 1, minuteStep = 1, secondStep = 1, millisecondsStep = 1, } = props; return ( <> {showHour && ( )} {showMinute && ( )} {showSecond && ( )} {showMilliseconds && ( )} ); } Combobox.displayName = "TimePickerCombobox";