From 65f439e4daee1503b58fcdb86fc96e274d10c51f Mon Sep 17 00:00:00 2001 From: soky srm Date: Tue, 24 Mar 2026 19:19:05 +0100 Subject: [PATCH] Add appearance setting for 2 column layout (#1285) --- .../settings/appearances_controller.rb | 3 ++- app/models/user.rb | 4 ++++ app/views/pages/dashboard.html.erb | 2 +- app/views/settings/appearances/show.html.erb | 21 +++++++++++++++++++ config/locales/views/settings/en.yml | 4 ++++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/app/controllers/settings/appearances_controller.rb b/app/controllers/settings/appearances_controller.rb index ae2282443..51ae26739 100644 --- a/app/controllers/settings/appearances_controller.rb +++ b/app/controllers/settings/appearances_controller.rb @@ -10,7 +10,8 @@ class Settings::AppearancesController < ApplicationController @user.transaction do @user.lock! updated_prefs = (@user.preferences || {}).deep_dup - updated_prefs["show_split_grouped"] = params.dig(:user, :show_split_grouped) == "1" + updated_prefs["show_split_grouped"] = params.dig(:user, :show_split_grouped) == "1" if params.dig(:user, :show_split_grouped) + updated_prefs["dashboard_two_column"] = params.dig(:user, :dashboard_two_column) == "1" if params.dig(:user, :dashboard_two_column) @user.update!(preferences: updated_prefs) end redirect_to settings_appearance_path diff --git a/app/models/user.rb b/app/models/user.rb index 4cb17c6bd..752338bc2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -320,6 +320,10 @@ class User < ApplicationRecord preferences&.dig("show_split_grouped") != false end + def dashboard_two_column? + preferences&.dig("dashboard_two_column") != false + end + def update_transactions_preferences(prefs) transaction do lock! diff --git a/app/views/pages/dashboard.html.erb b/app/views/pages/dashboard.html.erb index 39db5e283..0a429d0b0 100644 --- a/app/views/pages/dashboard.html.erb +++ b/app/views/pages/dashboard.html.erb @@ -29,7 +29,7 @@ <% end %> -
+
gap-6 pb-6 lg:pb-12" data-controller="dashboard-sortable" data-action="dragover->dashboard-sortable#dragOver drop->dashboard-sortable#drop" role="list" aria-label="Dashboard sections"> <% if Current.family.accounts.any? %> <% @dashboard_sections.each do |section| %> <% next unless section[:visible] %> diff --git a/app/views/settings/appearances/show.html.erb b/app/views/settings/appearances/show.html.erb index c2e9e703e..f22096236 100644 --- a/app/views/settings/appearances/show.html.erb +++ b/app/views/settings/appearances/show.html.erb @@ -28,6 +28,27 @@
<% end %> +<%= settings_section title: t(".dashboard_title"), subtitle: t(".dashboard_subtitle") do %> +
+ <%= form_with url: settings_appearance_path, method: :patch, + class: "p-3", + data: { controller: "auto-submit-form" } do |f| %> +
+
+

<%= t(".dashboard_two_column_title") %>

+

<%= t(".dashboard_two_column_description") %>

+
+ <%= render DS::Toggle.new( + id: "user_dashboard_two_column", + name: "user[dashboard_two_column]", + checked: @user.dashboard_two_column?, + data: { auto_submit_form_target: "auto" } + ) %> +
+ <% end %> +
+<% end %> + <%= settings_section title: t(".transactions_title"), subtitle: t(".transactions_subtitle") do %>
<%= form_with url: settings_appearance_path, method: :patch, diff --git a/config/locales/views/settings/en.yml b/config/locales/views/settings/en.yml index d66cb7882..9dada3442 100644 --- a/config/locales/views/settings/en.yml +++ b/config/locales/views/settings/en.yml @@ -36,6 +36,10 @@ en: theme_system: System transactions_title: Transactions transactions_subtitle: Customize how transactions are displayed + dashboard_title: Dashboard + dashboard_subtitle: Customize how the dashboard is displayed + dashboard_two_column_title: Two-column layout + dashboard_two_column_description: Display dashboard widgets in two columns on large screens. When off, widgets stack in a single column. split_grouped_title: Group split transactions split_grouped_description: Show split transactions grouped under their parent in the transaction list. When off, split children appear as individual rows. preferences: