From 9d59f87b3040ec4570eaccb9d7ac21c1fbc48c72 Mon Sep 17 00:00:00 2001 From: Gaetan Craig-Riou Date: Mon, 17 Feb 2025 16:50:49 +1100 Subject: [PATCH] Dispatch "closing" event when closing modal This allow for any other controller to trigger an action when the modal is closed --- .../controllers/mixins/useOpenAndCloseAsAModal.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/webpacker/controllers/mixins/useOpenAndCloseAsAModal.js b/app/webpacker/controllers/mixins/useOpenAndCloseAsAModal.js index 45c67dc38d..731421505c 100644 --- a/app/webpacker/controllers/mixins/useOpenAndCloseAsAModal.js +++ b/app/webpacker/controllers/mixins/useOpenAndCloseAsAModal.js @@ -12,8 +12,10 @@ export const useOpenAndCloseAsAModal = (controller) => { }.bind(controller), close: function (_event, remove = false) { + // displatch closing event so other controller can trigger action when the modal closes + this.dispatch("closing"); // Only execute close if the current modal is open - if (!this.modalTarget.classList.contains('in')) return; + if (!this.modalTarget.classList.contains("in")) return; this.modalTarget.classList.remove("in"); this.backgroundTarget.classList.remove("in"); @@ -22,7 +24,9 @@ export const useOpenAndCloseAsAModal = (controller) => { setTimeout(() => { this.backgroundTarget.style.display = "none"; this.modalTarget.style.display = "none"; - if (remove) { this.element.remove() } + if (remove) { + this.element.remove(); + } }, 200); }.bind(controller),