@@ -13,12 +13,13 @@ import type { TimePickerProps } from '../TimePicker';
1313import type { TimeRangePickerProps } from '../TimeRangePicker' ;
1414import type { SinglePanelProps } from './SinglePanel' ;
1515
16- export interface TimePickerPanelProps extends SinglePanelProps {
16+ export interface TimePickerPanelProps extends Omit < SinglePanelProps , 'onChange' > {
1717 isShowPanel ?: boolean ;
1818 isFooterDisplay ?: boolean ; // 是否展示footer
1919 handleConfirmClick ?: ( defaultValue : dayjs . Dayjs | string ) => void ;
2020 presets ?: TimePickerProps [ 'presets' ] | TimeRangePickerProps [ 'presets' ] ;
2121 activeIndex ?: number ;
22+ onChange ?: ( value : string , e ?: MouseEvent | UIEvent ) => void ;
2223}
2324
2425type PresetValue = TimePickerPanelProps [ 'presets' ] [ keyof TimePickerPanelProps [ 'presets' ] ] ;
@@ -34,7 +35,7 @@ const TimePickerPanel: FC<TimePickerPanelProps> = (props) => {
3435 isShowPanel = true ,
3536 presets = null ,
3637 } = props ;
37- const [ triggerScroll , toggleTriggerScroll ] = useState ( false ) ; // 触发滚动
38+ const [ triggerScroll , setTriggerScroll ] = useState ( false ) ; // 触发滚动
3839 const { classPrefix } = useConfig ( ) ;
3940
4041 const TEXT_CONFIG = useTimePickerTextConfig ( ) ;
@@ -52,23 +53,23 @@ const TimePickerPanel: FC<TimePickerPanelProps> = (props) => {
5253 } , [ value , format ] ) ;
5354
5455 useEffect ( ( ) => {
55- if ( isShowPanel ) toggleTriggerScroll ( true ) ;
56+ if ( isShowPanel ) setTriggerScroll ( true ) ;
5657 } , [ isShowPanel ] ) ;
5758
5859 const resetTriggerScroll = useCallback ( ( ) => {
59- toggleTriggerScroll ( false ) ;
60- } , [ toggleTriggerScroll ] ) ;
60+ setTriggerScroll ( false ) ;
61+ } , [ setTriggerScroll ] ) ;
6162
62- const handlePresetClick = ( presetValue : PresetValue ) => {
63+ const handlePresetClick = ( presetValue : PresetValue , e : React . MouseEvent ) => {
6364 const presetVal = typeof presetValue === 'function' ? presetValue ( ) : presetValue ;
6465 if ( typeof props . activeIndex === 'number' ) {
6566 if ( Array . isArray ( presetVal ) ) {
66- props . onChange ?.( presetVal [ props . activeIndex ] ) ;
67+ props . onChange ?.( presetVal [ props . activeIndex ] , e . nativeEvent ) ;
6768 } else {
6869 log . error ( 'TimePicker' , `preset: ${ presets } 预设值必须是数组!` ) ;
6970 }
7071 } else {
71- props . onChange ?.( presetVal ) ;
72+ props . onChange ?.( presetVal as string , e . nativeEvent ) ;
7273 }
7374 } ;
7475
@@ -80,8 +81,8 @@ const TimePickerPanel: FC<TimePickerPanelProps> = (props) => {
8081 theme = "primary"
8182 size = "small"
8283 variant = "text"
83- onClick = { ( ) => {
84- handlePresetClick ( presets [ preset ] ) ;
84+ onClick = { ( e ) => {
85+ handlePresetClick ( presets [ preset ] , e ) ;
8586 } }
8687 >
8788 { preset }
@@ -94,8 +95,8 @@ const TimePickerPanel: FC<TimePickerPanelProps> = (props) => {
9495 theme = "primary"
9596 variant = "text"
9697 size = "small"
97- onClick = { ( ) => {
98- onChange ?.( dayjs ( ) . format ( format ) ) ;
98+ onClick = { ( e ) => {
99+ onChange ?.( dayjs ( ) . format ( format ) , e . nativeEvent ) ;
99100 } }
100101 >
101102 { TEXT_CONFIG . nowTime }
@@ -108,7 +109,7 @@ const TimePickerPanel: FC<TimePickerPanelProps> = (props) => {
108109 < div className = { `${ panelClassName } -section-body` } >
109110 < SinglePanel
110111 { ...props }
111- onChange = { onChange }
112+ onChange = { onChange as unknown as SinglePanelProps [ 'onChange' ] }
112113 format = { format }
113114 steps = { steps }
114115 value = { dayjs ( value , format ) . isValid ( ) ? value : defaultValue }
0 commit comments