feat(massinput): reduce size of ajax requests

This commit is contained in:
Gregor Kleen 2020-12-15 12:16:37 +01:00
parent 8c7cc62aed
commit 72838e2592

View File

@ -226,8 +226,21 @@ export class MassInput {
}
_serializeForm(submitButton, enctype) {
const rawFormData = new FormData(this._massInputForm);
const extraneousKeys = new Set();
for (const k of rawFormData.keys()) {
const n = k.replace(/\[\]$/, '');
const inputElements = Array.from(this._massInputForm.querySelectorAll(`[name=${n}]`));
const isBelowMassinput = inputElements.some((elem) => this._element.contains(elem));
const isFile = inputElements.some((elem) => elem.type === 'file');
if (!isBelowMassinput && isFile)
extraneousKeys.add(k);
}
for (const k of extraneousKeys)
rawFormData.delete(k);
// create new FormData and format any date values
const formData = Datepicker.unformatAll(this._massInputForm, new FormData(this._massInputForm));
const formData = Datepicker.unformatAll(this._massInputForm, rawFormData);
// manually add name and value of submit button to formData
formData.append(submitButton.name, submitButton.value);