- updated bando form;
This commit is contained in:
@@ -1,18 +1,63 @@
|
||||
import { useEffect } from 'react';
|
||||
import { __ } from '@wordpress/i18n';
|
||||
import equal from 'fast-deep-equal';
|
||||
//import { diff } from 'deep-object-diff';
|
||||
import { diff } from 'deep-object-diff';
|
||||
import { klona } from 'klona';
|
||||
import { TZDate } from '@date-fns/tz';
|
||||
import { wrap } from 'object-path-immutable';
|
||||
import { is, isNil } from 'ramda';
|
||||
|
||||
// store
|
||||
import { storeGet } from '../../store';
|
||||
|
||||
const UnsavedChangesDetector = ({ getValuesFn }) => {
|
||||
const warnIfUnsavedChanges = (event) => {
|
||||
const formData = getValuesFn();
|
||||
let formData = klona(getValuesFn());
|
||||
formData.dates = [];
|
||||
|
||||
if (formData.startDate) {
|
||||
let starDate;
|
||||
|
||||
if (is(String, formData.startDate)) {
|
||||
starDate = formData.startDate;
|
||||
} else {
|
||||
const tzAwareDate = new TZDate(formData.startDate, 'Europe/Berlin');
|
||||
starDate = tzAwareDate.toISOString().substring(0, 19);
|
||||
}
|
||||
|
||||
formData = wrap(formData).insert(['dates'], starDate, 0).value();
|
||||
}
|
||||
if (formData.endDate) {
|
||||
let endDate;
|
||||
|
||||
if (is(String, formData.endDate)) {
|
||||
endDate = formData.endDate;
|
||||
} else {
|
||||
const tzAwareDate = new TZDate(formData.endDate, 'Europe/Berlin');
|
||||
endDate = tzAwareDate.toISOString().substring(0, 19);
|
||||
}
|
||||
|
||||
formData = wrap(formData).insert(['dates'], endDate, 1).value();
|
||||
}
|
||||
if (!isNil(formData.startTime)) {
|
||||
if (!is(String, formData.startTime)) {
|
||||
const tzAwareDate = new TZDate(formData.startTime, 'Europe/Berlin');
|
||||
formData.startTime = tzAwareDate.toISOString().substring(11, 16);
|
||||
}
|
||||
}
|
||||
if (!isNil(formData.endTime)) {
|
||||
if (!is(String, formData.endTime)) {
|
||||
const tzAwareDate = new TZDate(formData.endTime, 'Europe/Berlin');
|
||||
formData.endTime = tzAwareDate.toISOString().substring(11, 16);
|
||||
}
|
||||
}
|
||||
const initial = storeGet.main.formInitialData();
|
||||
|
||||
const isEqual = equal(initial, formData);
|
||||
// TODO
|
||||
//console.log('isEqual', isEqual, initial, formData, diff(initial, formData))
|
||||
/*console.log('isEqual', isEqual,
|
||||
initial, formData,
|
||||
diff(initial, formData))*/
|
||||
if (!isEqual) {
|
||||
event.returnValue = __('You have unsaved changes. If you proceed, they will be lost.', 'gepafin');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user