@@ -15,7 +15,7 @@ import { Timepicker } from './parts/Timepicker';
1515
1616import { formFieldClasses , prefixId } from '../Util' ;
1717import { sanitizeDateTimePickerValue } from '../util/sanitizerUtil' ;
18- import { parseIsoTime , serializeDate , serializeDateTime , serializeTime } from '../util/dateTimeUtil' ;
18+ import { parseIsoTime , serializeDate , serializeDateTime , serializeTime , getNullDateTime , isValidDate , isValidTime } from '../util/dateTimeUtil' ;
1919
2020const type = 'datetime' ;
2121
@@ -49,14 +49,9 @@ export function Datetime(props) {
4949 const { formId } = useContext ( FormContext ) ;
5050 const dateTimeGroupRef = useRef ( ) ;
5151
52- const getNullDateTime = ( ) => ( { date : new Date ( Date . parse ( null ) ) , time : null } ) ;
53-
5452 const [ dateTime , setDateTime ] = useState ( getNullDateTime ( ) ) ;
5553 const [ dateTimeUpdateRequest , setDateTimeUpdateRequest ] = useState ( null ) ;
5654
57- const isValidDate = ( date ) => date && ! isNaN ( date . getTime ( ) ) ;
58- const isValidTime = ( time ) => ! isNaN ( parseInt ( time ) ) ;
59-
6055 const useDatePicker = useMemo ( ( ) => subtype === DATETIME_SUBTYPES . DATE || subtype === DATETIME_SUBTYPES . DATETIME , [ subtype ] ) ;
6156 const useTimePicker = useMemo ( ( ) => subtype === DATETIME_SUBTYPES . TIME || subtype === DATETIME_SUBTYPES . DATETIME , [ subtype ] ) ;
6257
@@ -113,9 +108,13 @@ export function Datetime(props) {
113108 newDateTimeValue = serializeDateTime ( date , time , timeSerializingFormat ) ;
114109 }
115110
111+ if ( value === newDateTimeValue ) {
112+ return ;
113+ }
114+
116115 onChange ( { value : newDateTimeValue , field } ) ;
117116
118- } , [ field , onChange , subtype , timeSerializingFormat ] ) ;
117+ } , [ value , field , onChange , subtype , timeSerializingFormat ] ) ;
119118
120119 useEffect ( ( ) => {
121120 if ( dateTimeUpdateRequest ) {
0 commit comments