Skip to content

Commit 1367b2a

Browse files
authored
add blur on submit to collection controller (#615)
add class to resource results add class to workshop results
1 parent b0753a2 commit 1367b2a

File tree

3 files changed

+28
-18
lines changed

3 files changed

+28
-18
lines changed
Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { Controller } from "@hotwired/stimulus"
1+
import { Controller } from "@hotwired/stimulus";
22

33
// Connects to data-controller="collection"
44
export default class extends Controller {
5-
static classes = [ "unselected", "selected" ]
5+
static classes = ["unselected", "selected"];
66
connect() {
77
this.element.addEventListener("change", (event) => {
88
const { type } = event.target;
@@ -22,34 +22,43 @@ static classes = [ "unselected", "selected" ]
2222
});
2323
this.element.addEventListener("input", (event) => {
2424
if (event.target.type === "text") {
25-
this.debouncedSubmit()
25+
this.debouncedSubmit();
2626
}
27-
})
27+
});
2828
}
2929

3030
submitForm() {
31-
this.element.requestSubmit()
31+
this.blurOldResults();
32+
this.element.requestSubmit();
3233
}
3334

3435
debouncedSubmit() {
35-
clearTimeout(this.timeout)
36+
clearTimeout(this.timeout);
3637
this.timeout = setTimeout(() => {
37-
this.submitForm()
38-
}, 400)
38+
this.submitForm();
39+
}, 400);
3940
}
4041

4142
toggleClass(el) {
42-
const button = el.closest("label")
43-
if (!button || !this.selectedClasses) return
43+
const button = el.closest("label");
44+
if (!button || !this.selectedClasses) return;
4445

4546
// Toggle selected classes
46-
this.selectedClasses.forEach(cls => {
47-
button.classList.toggle(cls)
48-
})
47+
this.selectedClasses.forEach((cls) => {
48+
button.classList.toggle(cls);
49+
});
4950

5051
// Toggle unselected classes
51-
this.unselectedClasses.forEach(cls => {
52-
button.classList.toggle(cls)
53-
})
52+
this.unselectedClasses.forEach((cls) => {
53+
button.classList.toggle(cls);
54+
});
55+
}
56+
57+
blurOldResults() {
58+
const elements = document.querySelectorAll(".blur-on-submit");
59+
60+
elements.forEach((el) => {
61+
el.classList.add("blur-sm");
62+
});
5463
}
5564
}

app/views/resources/resource_results.html.erb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<%= turbo_frame_tag :resource_results do %>
22
<%= turbo_stream.replace("resource_count", partial: "resource_count") %>
33
<%= turbo_stream.replace("copy_url", partial: "shared/copy_url") %>
4+
45
<% if @resources.any? %>
5-
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 animate-fade">
6+
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 animate-fade blur-on-submit">
67
<% @resources.each do |resource| %>
78
<%= render "resource_card", resource: resource.decorate %>
89
<% end %>

app/views/workshops/workshop_results.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<div class="mt-6">
99
<% if @workshops.any? %>
10-
<div id="workshops-list" class="space-y-4 animate-fade">
10+
<div id="workshops-list" class="space-y-4 animate-fade blur-on-submit">
1111
<% @workshops.each do |workshop| %>
1212
<%= render "workshops/index_row", workshop: workshop.decorate,
1313
breadcrumb: "Workshops", link_route: workshop_path(workshop) %>

0 commit comments

Comments
 (0)