diff --git a/assets/css/app.css b/assets/css/app.css index 97961ab..b754a08 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -181,6 +181,29 @@ padding-left: 14px; } +/* ============================================ + Menu Groups - Disable hover and active on expanded-menu-group header + ============================================ */ + +/* Disable all interactive effects on expanded-menu-group header (no href, not clickable) + Using [role="group"] to increase specificity and avoid !important */ +.sidebar .menu > li.expanded-menu-group > div[role="group"]:not(a) { + pointer-events: none; + cursor: default; +} + +/* Higher specificity selector to override DaisyUI menu hover styles + DaisyUI uses :where() which has 0 specificity, but the compiled CSS might have higher specificity + Using [role="group"] attribute selector increases specificity without !important */ +.sidebar .menu > li.expanded-menu-group > div[role="group"]:not(a):hover, +.sidebar .menu > li.expanded-menu-group > div[role="group"]:not(a):active, +.sidebar .menu > li.expanded-menu-group > div[role="group"]:not(a):focus { + background-color: transparent; + box-shadow: none; + cursor: default; + color: inherit; +} + /* ============================================ Elements Only Visible in Expanded State ============================================ */ @@ -217,7 +240,9 @@ - Menu has p-2 (8px), so links need 14px additional padding-left */ .sidebar .menu > li > a, -.sidebar .menu > li > button { +.sidebar .menu > li > button, +.sidebar .menu > li.expanded-menu-group > div, +.sidebar .menu > div.collapsed-menu-group > button { @apply transition-all duration-300; padding-left: 14px; } @@ -226,12 +251,17 @@ - Remove gap so label (which is opacity-0 w-0) doesn't create space - Keep padding-left at 14px so icons stay centered under logo */ [data-sidebar-expanded="false"] .sidebar .menu > li > a, -[data-sidebar-expanded="false"] .sidebar .menu > li > button { +[data-sidebar-expanded="false"] .sidebar .menu > li > button, +[data-sidebar-expanded="false"] .sidebar .menu > li.expanded-menu-group > div, +[data-sidebar-expanded="false"] .sidebar .menu > div.collapsed-menu-group > button { @apply gap-0; padding-left: 14px; padding-right: 14px; /* Center icon horizontally in 64px sidebar */ } + + + /* ============================================ Footer Button Alignment - Left Aligned in Collapsed State ============================================ */ diff --git a/config/test.exs b/config/test.exs index 326694e..45acaa4 100644 --- a/config/test.exs +++ b/config/test.exs @@ -12,7 +12,7 @@ config :mv, Mv.Repo, port: System.get_env("TEST_POSTGRES_PORT", "5000"), database: "mv_test#{System.get_env("MIX_TEST_PARTITION")}", pool: Ecto.Adapters.SQL.Sandbox, - pool_size: System.schedulers_online() * 2 + pool_size: System.schedulers_online() * 4 # We don't run a server during test. If one is required, # you can enable the server option below. diff --git a/lib/mv_web/components/layouts/sidebar.ex b/lib/mv_web/components/layouts/sidebar.ex index 6f7e684..33319d4 100644 --- a/lib/mv_web/components/layouts/sidebar.ex +++ b/lib/mv_web/components/layouts/sidebar.ex @@ -75,30 +75,23 @@ defmodule MvWeb.Layouts.Sidebar do icon="hero-users" label={gettext("Members")} /> - <.menu_item - href={~p"/users"} - icon="hero-user-circle" - label={gettext("Users")} - /> - <.menu_item - href={~p"/custom_field_values"} - icon="hero-rectangle-group" - label={gettext("Custom Fields")} - /> - - <.menu_group - icon="hero-currency-dollar" - label={gettext("Contributions")} - > - <.menu_subitem href="/contribution_types" label={gettext("Contribution Types")} /> - <.menu_subitem href="/membership_fee_settings" label={gettext("Settings")} /> - <.menu_item - href={~p"/settings"} - icon="hero-cog-6-tooth" - label={gettext("Settings")} + href={~p"/membership_fee_types"} + icon="hero-currency-euro" + label={gettext("Fee Types")} /> + + + <.menu_group icon="hero-cog-6-tooth" label={gettext("Administration")}> + <.menu_subitem href={~p"/users"} label={gettext("Users")} /> + <.menu_subitem href={~p"/admin/roles"} label={gettext("Roles")} /> + <.menu_subitem + href={~p"/membership_fee_settings"} + label={gettext("Fee Settings")} + /> + <.menu_subitem href={~p"/settings"} label={gettext("Settings")} /> + """ end @@ -129,43 +122,41 @@ defmodule MvWeb.Layouts.Sidebar do defp menu_group(assigns) do ~H""" -