persist sort order

This commit is contained in:
Rafael Epplée 2025-12-01 11:49:09 +01:00
parent e803dbdf8b
commit 36dcf3fbe1
No known key found for this signature in database
GPG key ID: B4EFE6DC59FAE118
3 changed files with 114 additions and 17 deletions

View file

@ -43,14 +43,46 @@ Hooks.ComboBox = {
destroyed() {
this.el.removeEventListener("keydown", this.handleKeyDown)
},
};
// MemberSortPersistence hook: Persists sorting order to a cookie
Hooks.MemberSortPersistence = {
mounted() {
this.handleEvent("persist_sort", ({ sort_field, sort_order }) => {
const setCookie = (name, value) => {
const secure = window.location.protocol === "https:" ? "Secure" : "";
document.cookie = `${name}=${encodeURIComponent(
value
)}; path=/; SameSite=Lax; ${secure}`;
};
setCookie("member_sort_field", sort_field);
setCookie("member_sort_order", sort_order);
});
},
};
// Helper to read and decode cookie value
const getCookie = (name) => {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) {
return decodeURIComponent(parts.pop().split(";").shift());
}
}
return null;
};
let liveSocket = new LiveSocket("/live", Socket, {
longPollFallbackMs: 2500,
params: {_csrf_token: csrfToken},
hooks: Hooks
})
params: () => {
return {
_csrf_token: csrfToken,
member_sort_field: getCookie("member_sort_field"),
member_sort_order: getCookie("member_sort_order"),
};
},
hooks: Hooks,
});
// Listen for custom events from LiveView
window.addEventListener("phx:set-input-value", (e) => {