@@ -7,40 +7,15 @@ import type { FormatType, Locale } from '../../interface';
7
7
import { fillIndex } from '../../util' ;
8
8
import type { RangePickerProps } from '../RangePicker' ;
9
9
import useLockEffect from './useLockEffect' ;
10
- import { useCalendarValue } from './useRangeValue' ;
10
+ import { useCalendarValue , useUtil } from './useRangeValue' ;
11
11
12
12
const EMPTY_VALUE : any [ ] = [ ] ;
13
13
14
14
// Single Value is similar to Range Value, but it's more simple.
15
15
// This is design to support single value or multiple value,
16
16
// Thus this hook reuse part of the util from `useRangeValue`.
17
17
18
- type TriggerCalendarChange < DateType > = ( [ start , end ] : DateType ) => void ;
19
-
20
- function useUtil < DateType extends object = any > (
21
- generateConfig : GenerateConfig < DateType > ,
22
- locale : Locale ,
23
- formatList : FormatType [ ] ,
24
- ) {
25
- const getDateTexts = ( [ start , end ] : DateType ) => {
26
- return [ start , end ] . map ( ( date ) =>
27
- formatValue ( date , { generateConfig, locale, format : formatList [ 0 ] } ) ,
28
- ) as [ string , string ] ;
29
- } ;
30
-
31
- const isSameDates = ( source : DateType , target : DateType ) => {
32
- const [ prevStart = null , prevEnd = null ] = source ;
33
- const [ nextStart = null , nextEnd = null ] = target ;
34
-
35
- const isSameStart =
36
- prevStart === nextStart || isSameTimestamp ( generateConfig , prevStart , nextStart ) ;
37
- const isSameEnd = prevEnd === nextEnd || isSameTimestamp ( generateConfig , prevEnd , nextEnd ) ;
38
-
39
- return [ isSameStart && isSameEnd , isSameStart , isSameEnd ] ;
40
- } ;
41
-
42
- return [ getDateTexts , isSameDates ] as const ;
43
- }
18
+ type TriggerCalendarChange < DateType > = ( dates : DateType [ ] ) => void ;
44
19
45
20
export function useInnerValue < DateType extends object = any > (
46
21
generateConfig : GenerateConfig < DateType > ,
@@ -64,10 +39,14 @@ export function useInnerValue<DateType extends object = any>(
64
39
const [ calendarValue , setCalendarValue ] = useCalendarValue ( mergedValue ) ;
65
40
66
41
// ============================ Change ============================
67
- const [ getDateTexts , isSameDates ] = useUtil ( generateConfig , locale , formatList ) ;
42
+ const [ getDateTexts , isSameDates ] = useUtil < DateType , DateType [ ] > (
43
+ generateConfig ,
44
+ locale ,
45
+ formatList ,
46
+ ) ;
68
47
69
- const triggerCalendarChange : TriggerCalendarChange < DateType > = useEvent ( ( [ start , end ] ) => {
70
- const clone : DateType = [ start , end ] ;
48
+ const triggerCalendarChange : TriggerCalendarChange < DateType > = useEvent ( ( dates ) => {
49
+ const clone : DateType [ ] = [ ... dates ] ;
71
50
72
51
// Update merged value
73
52
const [ isSameMergedDates , isSameStart ] = isSameDates ( calendarValue ( ) , clone ) ;
0 commit comments