Skip to content

Commit c184d11

Browse files
committed
Merge main to develop
2 parents 0e30f20 + 7c939d3 commit c184d11

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

packages/form-js-viewer/src/render/components/form-fields/Datetime.js

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { Timepicker } from './parts/Timepicker';
1515

1616
import { formFieldClasses, prefixId } from '../Util';
1717
import { 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

2020
const 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) {

packages/form-js-viewer/src/render/components/util/dateTimeUtil.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,21 @@ export function isInvalidDateString(value) {
212212
return isNaN(new Date(Date.parse(value)).getTime());
213213
}
214214

215+
export function getNullDateTime() {
216+
return {
217+
date: new Date(Date.parse(null)),
218+
time: null
219+
};
220+
}
221+
222+
export function isValidDate(date) {
223+
return date && !isNaN(date.getTime());
224+
}
225+
226+
export function isValidTime(time) {
227+
return !isNaN(parseInt(time));
228+
}
229+
215230
function _getSignedPaddedHours(minutes) {
216231
if (minutes > 0) {
217232
return '-' + _getZeroPaddedString(Math.floor(minutes / 60));

0 commit comments

Comments
 (0)