From 24df0cab20c6c83543d3cf782c6620a03cf880f0 Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Wed, 11 Dec 2024 12:50:42 -0600 Subject: [PATCH] Extract SaveSearchComponent This will enable downstream apps to easily set the css classes on the button --- .../spotlight/save_search_component.html.erb | 25 ++++++++++++++++++ .../spotlight/save_search_component.rb | 25 ++++++++++++++++++ app/views/catalog/_save_search.html.erb | 26 +------------------ 3 files changed, 51 insertions(+), 25 deletions(-) create mode 100644 app/components/spotlight/save_search_component.html.erb create mode 100644 app/components/spotlight/save_search_component.rb diff --git a/app/components/spotlight/save_search_component.html.erb b/app/components/spotlight/save_search_component.html.erb new file mode 100644 index 000000000..08de28b52 --- /dev/null +++ b/app/components/spotlight/save_search_component.html.erb @@ -0,0 +1,25 @@ +<%= button %> + diff --git a/app/components/spotlight/save_search_component.rb b/app/components/spotlight/save_search_component.rb new file mode 100644 index 000000000..5294e3542 --- /dev/null +++ b/app/components/spotlight/save_search_component.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Spotlight + # Displays the "Save this search" button and modal + class SaveSearchComponent < ViewComponent::Base + def initialize(button_classes: 'btn btn-secondary') + @button_classes = button_classes + super + end + + attr_reader :button_classes + + delegate :search_state, :current_exhibit, to: :helpers + delegate :searches, to: :current_exhibit + + def button + button_tag t(:'spotlight.saved_search.label'), id: 'save-this-search', class: button_classes, + data: { toggle: 'modal', 'bs-toggle': 'modal', target: '#save-modal', 'bs-target': '#save-modal' } + end + + def form_path + [helpers.spotlight, current_exhibit, Spotlight::Search.new] + end + end +end diff --git a/app/views/catalog/_save_search.html.erb b/app/views/catalog/_save_search.html.erb index 34e1b1a32..d1b6653e5 100644 --- a/app/views/catalog/_save_search.html.erb +++ b/app/views/catalog/_save_search.html.erb @@ -1,25 +1 @@ -<%= button_tag t(:'spotlight.saved_search.label'), id: "save-this-search", class: 'btn btn-secondary', data: { toggle: "modal", "bs-toggle": "modal", target: "#save-modal", "bs-target": "#save-modal" } %> - +<%= render Spotlight::SaveSearchComponent.new %>