mirror of
https://github.com/ClaperCo/Claper.git
synced 2026-02-24 04:01:04 +01:00
Implement view mode persistence with localStorage and update event handling
This commit is contained in:
@@ -111,6 +111,20 @@ const Hooks = {
|
||||
}
|
||||
},
|
||||
|
||||
// Hook for persisting view mode preference to localStorage
|
||||
ViewModePreference: {
|
||||
mounted() {
|
||||
const savedMode = localStorage.getItem("claper_event_list_view_mode");
|
||||
if (savedMode && (savedMode === "grid" || savedMode === "list")) {
|
||||
this.pushEvent("restore-view-mode", { view: savedMode });
|
||||
}
|
||||
|
||||
this.handleEvent("save-view-mode", ({ view }) => {
|
||||
localStorage.setItem("claper_event_list_view_mode", view);
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// Hook for Event Creation Chart
|
||||
EventCreationChart: {
|
||||
mounted() {
|
||||
|
||||
@@ -201,6 +201,14 @@ defmodule ClaperWeb.EventLive.Index do
|
||||
|
||||
@impl true
|
||||
def handle_event("change-view", %{"view" => view_mode}, socket) do
|
||||
{:noreply,
|
||||
socket
|
||||
|> assign(:view_mode, view_mode)
|
||||
|> push_event("save-view-mode", %{view: view_mode})}
|
||||
end
|
||||
|
||||
@impl true
|
||||
def handle_event("restore-view-mode", %{"view" => view_mode}, socket) do
|
||||
{:noreply, assign(socket, :view_mode, view_mode)}
|
||||
end
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
<!-- Right: View Toggle & Action Buttons -->
|
||||
<div class="flex items-center gap-2 flex-wrap">
|
||||
<!-- View Toggle -->
|
||||
<div class="flex items-center gap-1 bg-white border border-gray-200 rounded-full p-1">
|
||||
<div id="view-mode-toggle" phx-hook="ViewModePreference" class="flex items-center gap-1 bg-white border border-gray-200 rounded-full p-1">
|
||||
<button
|
||||
phx-click="change-view"
|
||||
phx-value-view="grid"
|
||||
|
||||
Reference in New Issue
Block a user