aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mikisabate@gmail.com>2025-09-10 17:14:46 +0200
committerMiquel Sabaté Solà <mikisabate@gmail.com>2025-09-10 21:48:52 +0200
commitacd25165aba6386403d42701c11c5ef133f173a0 (patch)
tree000bfcdb83b9692777e2b33eed32fb1219fdf14f
parent2574d61593df31130de8ab8081c7f64038df8db4 (diff)
downloadoperum-acd25165aba6386403d42701c11c5ef133f173a0.tar.gz
operum-acd25165aba6386403d42701c11c5ef133f173a0.zip
search: Only show the 'Save' link upon change
The previous behavior of just toggling between 'hidden' classes was just too naive, we need to check that the value has changed from the initial one in order to show that to the user. Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
-rw-r--r--app/javascript/controllers/search_controller.js11
-rw-r--r--test/system/searches_test.rb3
2 files changed, 13 insertions, 1 deletions
diff --git a/app/javascript/controllers/search_controller.js b/app/javascript/controllers/search_controller.js
index 63df81d..3a47d67 100644
--- a/app/javascript/controllers/search_controller.js
+++ b/app/javascript/controllers/search_controller.js
@@ -4,8 +4,12 @@ import { Controller } from "@hotwired/stimulus"
// introduced on an input. Then it fills the `results` elements with them.
export default class extends Controller {
static targets = ["body"]
+ static values = {
+ initialBody: String
+ }
connect() {
+ this.initialBody = this.bodyTarget.value.trim();
document.getElementById("search_body").focus();
}
@@ -17,7 +21,12 @@ export default class extends Controller {
.then(response => response.text())
.then(html => {
document.getElementById("results").innerHTML = html;
- document.getElementById("save-search").classList.toggle("hidden");
+
+ if (this.initialBody != this.bodyTarget.value) {
+ document.getElementById("save-search").classList.remove('hidden');
+ } else {
+ document.getElementById("save-search").classList.add('hidden');
+ }
})
} catch (error) {
document.getElementById("results").innerHTML = '<div class="notice">Something went wrong!</div>'
diff --git a/test/system/searches_test.rb b/test/system/searches_test.rb
index f1f2de4..e3b4993 100644
--- a/test/system/searches_test.rb
+++ b/test/system/searches_test.rb
@@ -90,6 +90,9 @@ class SearchesTest < ApplicationSystemTestCase
test 'edit an existing search works' do
visit edit_search_url(searches(:search1))
+ # Fill in the body input and press enter, otherwise the javascript
+ # controller won't fire up.
+ fill_in 'search_body', with: 'Autor'
find('#search_body').native.send_keys(:return)
# Hit the save button so the hidden form appears.