From 9149d098d9c44fceb92c1c085d7bd28fdfa8aa46 Mon Sep 17 00:00:00 2001 From: Kevin Date: Sun, 3 May 2026 15:53:12 +0100 Subject: [PATCH] Chore: Extract off-canvas drawer pattern into Overlays::DrawerComponent Because the nav, lesson sidebar, and admin sidebar all duplicated the same overlay + slide-in panel + visibility controller wiring, this PR extracts the shared shell into a single reusable ViewComponent. Callers yield their content in and pass a hook class and optional breakpoint. --- .../lessons/sidebar_component.html.erb | 80 +++--------- .../overlays/drawer_component.html.erb | 52 ++++++++ app/components/overlays/drawer_component.rb | 22 ++++ app/views/layouts/admin/_sidebar_nav.html.erb | 86 +++---------- app/views/shared/_off_canvas_menu.html.erb | 120 +++++------------- .../overlays/drawer_component_spec.rb | 56 ++++++++ 6 files changed, 197 insertions(+), 219 deletions(-) create mode 100644 app/components/overlays/drawer_component.html.erb create mode 100644 app/components/overlays/drawer_component.rb create mode 100644 spec/components/overlays/drawer_component_spec.rb diff --git a/app/components/lessons/sidebar_component.html.erb b/app/components/lessons/sidebar_component.html.erb index a8886c72b6..7620976897 100644 --- a/app/components/lessons/sidebar_component.html.erb +++ b/app/components/lessons/sidebar_component.html.erb @@ -1,72 +1,22 @@ -<%# Off-canvas drawer — below xl %> -