- updated bando form;

This commit is contained in:
Vitalii Kiiko
2024-10-21 17:29:25 +02:00
parent ddb09abd83
commit 3b495cfdcc
8 changed files with 195 additions and 99 deletions

View File

@@ -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');
}