@@ -77,11 +77,16 @@ export const DatepickerComp: React.FC<DatepickerCompProps> = ({
77
77
const monthRef = useRef < HTMLSpanElement > ( null ) ;
78
78
const yearRef = useRef < HTMLSpanElement > ( null ) ;
79
79
80
+ const formatDate = useCallback ( ( ) => {
81
+ return `${ padZero ( day ?? 0 ) } .${ padZero ( month ?? 0 ) } .${ year } ` ;
82
+ } , [ day , month , year ] ) ;
83
+
80
84
const getFieldMessageId = ( ) => {
81
85
return fieldMessage ? `${ datepickerId } -fieldmessage` : undefined ;
82
86
} ;
83
87
84
88
const fieldMessageId = getFieldMessageId ( ) ;
89
+ // eslint-disable-next-line react-hooks/exhaustive-deps
85
90
const debounceCalendar = useCallback (
86
91
debounce ( ( newValue : any ) => {
87
92
if ( newValue !== lastValidDate && validateDate ( newValue ) ) {
@@ -100,8 +105,8 @@ export const DatepickerComp: React.FC<DatepickerCompProps> = ({
100
105
} ;
101
106
} , [ debounceCalendar ] ) ;
102
107
103
- const validateDateIntervals = ( ) => {
104
- const dateString = ` ${ day } . ${ month } . ${ year } ` ;
108
+ const validateDateIntervals = useCallback ( ( ) => {
109
+ const dateString = formatDate ( ) ;
105
110
getSimpleDateFromString ( dateString , date => {
106
111
const maxDateValidated = maxDateProp
107
112
? getSimpleDateFromString ( maxDateProp )
@@ -124,16 +129,24 @@ export const DatepickerComp: React.FC<DatepickerCompProps> = ({
124
129
}
125
130
setLastValidDate ( formattedDate ) ;
126
131
} ) ;
127
- } ;
132
+ } , [ formatDate , maxDateProp , onChange , setDay , setMonth , setYear ] ) ;
128
133
129
134
useEffect ( ( ) => {
130
135
if ( minDateProp !== minDate || maxDateProp !== maxDate ) {
131
136
setMinDate ( minDateProp ) ;
132
137
setMaxDate ( maxDateProp ) ;
133
138
validateDateIntervals ( ) ;
134
139
}
135
- debounceCalendar ( `${ day } .${ month } .${ year } ` ) ;
136
- } , [ minDateProp , maxDateProp , day , month , year , debounceCalendar ] ) ;
140
+ debounceCalendar ( formatDate ( ) ) ;
141
+ } , [
142
+ minDateProp ,
143
+ maxDateProp ,
144
+ formatDate ,
145
+ debounceCalendar ,
146
+ minDate ,
147
+ maxDate ,
148
+ validateDateIntervals ,
149
+ ] ) ;
137
150
138
151
const closeCalendarSetInputFocus = ( ) => {
139
152
setDisplayDatePicker ( false ) ;
@@ -172,6 +185,7 @@ export const DatepickerComp: React.FC<DatepickerCompProps> = ({
172
185
return ( ) => {
173
186
removeGlobalEventListeners ( ) ;
174
187
} ;
188
+ // eslint-disable-next-line react-hooks/exhaustive-deps
175
189
} , [ displayDatePicker ] ) ;
176
190
177
191
const calendarButtonClickHandler = ( ) => {
@@ -238,7 +252,7 @@ export const DatepickerComp: React.FC<DatepickerCompProps> = ({
238
252
setDay ( [ date . date ] ) ;
239
253
setMonth ( [ date . month + 1 ] ) ;
240
254
setYear ( [ date . year ] ) ;
241
- onChange ( ` ${ day } . ${ month } . ${ year } ` ) ;
255
+ onChange ( formatDate ( ) ) ;
242
256
}
243
257
} ;
244
258
0 commit comments