persist sort order
This commit is contained in:
parent
e803dbdf8b
commit
36dcf3fbe1
3 changed files with 114 additions and 17 deletions
|
|
@ -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) => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue