import React, { useEffect, useState } from 'react'; import Popover, { PopoverProps } from '@uiw/react-popover'; import Input, { InputProps } from '@uiw/react-input'; import Button from '@uiw/react-button'; import { IProps } from '@uiw/utils'; import formatter from '@uiw/formatter'; import { TimePickerTime, TimePickerTimeProps } from './Time'; import './style/index.less'; export * from './Panel'; export * from './Time'; export interface TimePickerProps extends IProps, Omit { value?: Date; format?: string; popoverProps?: PopoverProps; disabledHours?: TimePickerTimeProps['disabledHours']; precision?: TimePickerTimeProps['precision']; disabledMinutes?: TimePickerTimeProps['disabledMinutes']; disabledSeconds?: TimePickerTimeProps['disabledSeconds']; hideDisabled?: TimePickerTimeProps['hideDisabled']; allowClear?: boolean; disabled?: boolean; onChange?: ( dataStr?: string, date?: Date | '', type?: TimePickerTimeProps['type'], num?: number, disableds?: number[], ) => void; } export default function TimePicker(props: TimePickerProps) { const { prefixCls = 'w-timepicker', className, disabled, value, format = 'HH:mm:ss', popoverProps, allowClear = true, onChange, disabledHours, disabledMinutes, disabledSeconds, hideDisabled, precision, ...inputProps } = props; const [date, setDate] = useState(props.value); useEffect(() => setDate(props.value), [props.value]); const timeProps = { disabledHours, disabledMinutes, disabledSeconds, hideDisabled, precision, }; const inputValue = date ? formatter(format, new Date(date)) : ''; const datePickerTime = date || new Date(); const _props: InputProps = { ...inputProps, value: inputValue }; if (allowClear && inputValue !== '' && !!inputValue) { _props.addonAfter = (