persistent forms now only leaks ther required event handler and not the functions it uses internally.
This commit is contained in:
parent
bac7a9a6f1
commit
cfd8b79022
@ -1,4 +1,7 @@
|
|||||||
function setCookie(name, value, days) {
|
|
||||||
|
saveFormToCookieEvent = (() => {
|
||||||
|
|
||||||
|
function setCookie(name, value, days) {
|
||||||
let expires = "";
|
let expires = "";
|
||||||
if (days) {
|
if (days) {
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
@ -6,20 +9,20 @@ function setCookie(name, value, days) {
|
|||||||
expires = "; expires=" + date.toUTCString();
|
expires = "; expires=" + date.toUTCString();
|
||||||
}
|
}
|
||||||
document.cookie = name + "=" + encodeURIComponent(value) + expires + "; path=/";
|
document.cookie = name + "=" + encodeURIComponent(value) + expires + "; path=/";
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCookie(name) {
|
function getCookie(name) {
|
||||||
const nameEQ = name + "=";
|
const nameEQ = name + "=";
|
||||||
const ca = document.cookie.split(';');
|
const ca = document.cookie.split(';');
|
||||||
for(let i=0; i < ca.length; i++) {
|
for (let i = 0; i < ca.length; i++) {
|
||||||
let c = ca[i];
|
let c = ca[i];
|
||||||
while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
|
||||||
if (c.indexOf(nameEQ) == 0) return decodeURIComponent(c.substring(nameEQ.length,c.length));
|
if (c.indexOf(nameEQ) == 0) return decodeURIComponent(c.substring(nameEQ.length, c.length));
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveFormToCookie(form) {
|
function saveFormToCookie(form) {
|
||||||
const formData = new FormData(form);
|
const formData = new FormData(form);
|
||||||
for (let element of form.elements) {
|
for (let element of form.elements) {
|
||||||
if (element.id) {
|
if (element.id) {
|
||||||
@ -40,15 +43,15 @@ function saveFormToCookie(form) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function saveFormToCookieEvent(evt) {
|
let saveFormToCookieEvent = function(evt) {
|
||||||
//console.log("save form to cookie: " + evt.target)
|
//console.log("save form to cookie: " + evt.target)
|
||||||
form = evt.target
|
form = evt.target
|
||||||
saveFormToCookie(form)
|
saveFormToCookie(form)
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadFormFromCookie(form) {
|
function loadFormFromCookie(form) {
|
||||||
//console.log("Load form from cookie")
|
//console.log("Load form from cookie")
|
||||||
if (!form) {
|
if (!form) {
|
||||||
return
|
return
|
||||||
@ -83,41 +86,28 @@ function loadFormFromCookie(form) {
|
|||||||
if (updated) {
|
if (updated) {
|
||||||
htmx.trigger(form, 'formdataloaded')
|
htmx.trigger(form, 'formdataloaded')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getPersistentForms() {
|
function getPersistentForms() {
|
||||||
return document.getElementsByClassName("persistent-form");
|
return document.getElementsByClassName("persistent-form");
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadFormsFromCookie() {
|
function loadFormsFromCookie() {
|
||||||
let forms = getPersistentForms();
|
let forms = getPersistentForms();
|
||||||
for (let i = 0; i < forms.length; i++) {
|
for (let i = 0; i < forms.length; i++) {
|
||||||
loadFormFromCookie(forms[i])
|
loadFormFromCookie(forms[i])
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Most likely not needed.
|
|
||||||
/*
|
|
||||||
( () => {
|
|
||||||
let forms = getPersistentForms()
|
|
||||||
for (let i = 0; i < forms.length; i++) {
|
|
||||||
forms[i].addEventListener('change', function() {
|
|
||||||
saveFormToCookie(form)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})()
|
|
||||||
*/
|
|
||||||
|
|
||||||
htmx.on('htmx:load', function(event) {
|
htmx.on('htmx:load', function (event) {
|
||||||
//console.log("htmx:load")
|
//console.log("htmx:load")
|
||||||
loadFormsFromCookie();
|
loadFormsFromCookie();
|
||||||
});
|
});
|
||||||
|
|
||||||
htmx.on('htmx:afterSettle', function(event) {
|
htmx.on('htmx:afterSettle', function (event) {
|
||||||
//console.log("htmx:afterSettle")
|
//console.log("htmx:afterSettle")
|
||||||
loadFormsFromCookie();
|
loadFormsFromCookie();
|
||||||
});
|
});
|
||||||
|
|
||||||
// when hx-boost=false
|
return saveFormToCookieEvent
|
||||||
// Load form data from cookie on page load
|
})()
|
||||||
//document.addEventListener('DOMContentLoaded', loadFormFromCookie);
|
|
||||||
|
Loading…
Reference in New Issue
Block a user