Files
openfoodnetwork/app/webpacker/controllers/mixins/useOpenAndCloseAsAModal.js
Ahmed Ejaz 1dec3debe1 12982: update close guard condition
- Execute the close method only when the current context modal is opened
2024-11-28 03:12:11 +05:00

36 lines
1.1 KiB
JavaScript

export const useOpenAndCloseAsAModal = (controller) => {
Object.assign(controller, {
open: function () {
this.backgroundTarget.style.display = "block";
this.modalTarget.style.display = "block";
setTimeout(() => {
this.modalTarget.classList.add("in");
this.backgroundTarget.classList.add("in");
document.querySelector("body").classList.add("modal-open");
});
}.bind(controller),
close: function (_event, remove = false) {
// Only execute close if the current modal is open
if (!this.modalTarget.classList.contains('in')) return;
this.modalTarget.classList.remove("in");
this.backgroundTarget.classList.remove("in");
document.querySelector("body").classList.remove("modal-open");
setTimeout(() => {
this.backgroundTarget.style.display = "none";
this.modalTarget.style.display = "none";
if (remove) { this.element.remove() }
}, 200);
}.bind(controller),
closeIfEscapeKey: function (e) {
if (e.code == "Escape") {
this.close();
}
}.bind(controller),
});
};