@@ -39,6 +39,15 @@ import {
39
39
40
40
const { and } = createGuards < DatePickerSchema > ( )
41
41
42
+ function isDateArrayEqual ( a : DateValue [ ] , b : DateValue [ ] | undefined ) {
43
+ if ( a ?. length !== b ?. length ) return false
44
+ const len = Math . max ( a . length , b . length )
45
+ for ( let i = 0 ; i < len ; i ++ ) {
46
+ if ( ! isDateEqual ( a [ i ] , b [ i ] ) ) return false
47
+ }
48
+ return true
49
+ }
50
+
42
51
export const machine = createMachine < DatePickerSchema > ( {
43
52
props ( { props } ) {
44
53
const locale = props . locale || "en-US"
@@ -105,7 +114,7 @@ export const machine = createMachine<DatePickerSchema>({
105
114
return {
106
115
focusedValue : bindable < DateValue > ( ( ) => ( {
107
116
defaultValue : prop ( "focusedValue" ) ,
108
- isEqual : ( a , b ) => b !== null && a !== null && isDateEqual ( a , b ) ,
117
+ isEqual : isDateEqual ,
109
118
hash : ( v ) => v . toString ( ) ,
110
119
sync : true ,
111
120
onChange ( focusedValue ) {
@@ -122,9 +131,10 @@ export const machine = createMachine<DatePickerSchema>({
122
131
value : bindable ( ( ) => ( {
123
132
defaultValue : prop ( "defaultValue" ) ,
124
133
value : prop ( "value" ) ,
125
- isEqual : ( a , b ) => b != null && a != null && a . every ( ( date , index ) => isDateEqual ( date , b [ index ] ) ) ,
134
+ isEqual : isDateArrayEqual ,
126
135
hash : ( v ) => v . map ( ( date ) => date . toString ( ) ) . join ( "," ) ,
127
136
onChange ( value ) {
137
+ console . log ( "onChange" , value )
128
138
const context = getContext ( )
129
139
const valueAsString = value . map ( ( date ) =>
130
140
prop ( "format" ) ( date , { locale : prop ( "locale" ) , timeZone : prop ( "timeZone" ) } ) ,
0 commit comments