From d78af187e049887a0faf2907fa84a139122c9704 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 6 Jul 2023 14:46:29 +0200 Subject: [PATCH 1/7] Allow dropdown controller to toggle more than one class "It's a Surprise Tool That Will Help Us Later" --- app/webpacker/controllers/dropdown_controller.js | 16 ++++++++++++---- .../stimulus/dropdown_controller_test.js | 4 +++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/webpacker/controllers/dropdown_controller.js b/app/webpacker/controllers/dropdown_controller.js index f84dca2ec3..20b189398d 100644 --- a/app/webpacker/controllers/dropdown_controller.js +++ b/app/webpacker/controllers/dropdown_controller.js @@ -17,12 +17,20 @@ export default class extends Controller { #show() { this.menuTarget.classList.remove("hidden"); - this.arrowTarget.classList.remove(this.arrowTarget.dataset.collapsedClass); - this.arrowTarget.classList.add(this.arrowTarget.dataset.expandedClass); + this.arrowTarget.dataset.collapsedClass.split(" ").forEach((className) => { + this.arrowTarget.classList.remove(className); + }); + this.arrowTarget.dataset.expandedClass.split(" ").forEach((className) => { + this.arrowTarget.classList.add(className); + }); } #hide() { this.menuTarget.classList.add("hidden"); - this.arrowTarget.classList.remove(this.arrowTarget.dataset.expandedClass); - this.arrowTarget.classList.add(this.arrowTarget.dataset.collapsedClass); + this.arrowTarget.dataset.expandedClass.split(" ").forEach((className) => { + this.arrowTarget.classList.remove(className); + }); + this.arrowTarget.dataset.collapsedClass.split(" ").forEach((className) => { + this.arrowTarget.classList.add(className); + }); } } diff --git a/spec/javascripts/stimulus/dropdown_controller_test.js b/spec/javascripts/stimulus/dropdown_controller_test.js index c2e3079075..3e6738f4cd 100644 --- a/spec/javascripts/stimulus/dropdown_controller_test.js +++ b/spec/javascripts/stimulus/dropdown_controller_test.js @@ -15,7 +15,7 @@ describe("Dropdown controller", () => { beforeEach(() => { document.body.innerHTML = `
- +