diff --git a/app/assets/stylesheets/events.css b/app/assets/stylesheets/events.css index 067ef0c52..c18bbb530 100644 --- a/app/assets/stylesheets/events.css +++ b/app/assets/stylesheets/events.css @@ -60,3 +60,7 @@ padding-block: var(--grid-lines); z-index: 1; } + +.event--related { + box-shadow: 0 0 0.3em 0.3em var(--bubble-color) !important; +} diff --git a/app/javascript/controllers/related_element_controller.js b/app/javascript/controllers/related_element_controller.js new file mode 100644 index 000000000..662ad258f --- /dev/null +++ b/app/javascript/controllers/related_element_controller.js @@ -0,0 +1,29 @@ +import { Controller } from "@hotwired/stimulus" + +export default class extends Controller { + static classes = ["highlight"] + + highlight(event) { + const targetElement = event.target.closest('[data-related-element-target]') + if (!targetElement) return + + const targetValue = targetElement.dataset.relatedElementTarget + const relatedElements = this.element.querySelectorAll(`[data-related-element-target="${targetValue}"]`) + + relatedElements.forEach(element => { + element.classList.add(this.highlightClass) + }) + } + + unhighlight(event) { + const targetElement = event.target.closest('[data-related-element-target]') + if (!targetElement) return + + const targetValue = targetElement.dataset.relatedElementTarget + const relatedElements = this.element.querySelectorAll(`[data-related-element-target="${targetValue}"]`) + + relatedElements.forEach(element => { + element.classList.remove(this.highlightClass) + }) + } +} diff --git a/app/views/events/_day.html.erb b/app/views/events/_day.html.erb index dab5c0737..fa3e8e180 100644 --- a/app/views/events/_day.html.erb +++ b/app/views/events/_day.html.erb @@ -1,4 +1,6 @@ -