diff options
author | 0neGal <mail@0negal.com> | 2024-01-20 01:58:14 +0100 |
---|---|---|
committer | 0neGal <mail@0negal.com> | 2024-01-20 01:58:14 +0100 |
commit | c03ce1dc5b1e320a94ef6307aa4c32132c5bf33c (patch) | |
tree | 2bde427830974dbec8b4881801e05cd88138c961 /src/app/js/popups.js | |
parent | e2bae48724505c5b09b6bb28f053b8492bd66ba6 (diff) | |
download | Viper-c03ce1dc5b1e320a94ef6307aa4c32132c5bf33c.tar.gz Viper-c03ce1dc5b1e320a94ef6307aa4c32132c5bf33c.zip |
added src/app/js/popups.js
This makes opening and closing popups a little bit easier, on top of it,
it also fixes a bug where you could open the settings popup on top of
the browser popup or other popups, and it'd hide the background blur,
but still show both popups.
Diffstat (limited to 'src/app/js/popups.js')
-rw-r--r-- | src/app/js/popups.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/app/js/popups.js b/src/app/js/popups.js new file mode 100644 index 0000000..553358a --- /dev/null +++ b/src/app/js/popups.js @@ -0,0 +1,51 @@ +let popups = {}; + +popups.set = (popup, state, auto_close_all = true) => { + let popup_el = popup; + + if (typeof popup == "string") { + popup_el = document.querySelector(popup); + } + + if (! popup_el) {return false} + + if (auto_close_all && overlay.classList.contains("shown")) { + popups.set_all(false, popup_el); + } + + if (! state && state !== false) { + state = ! popup_el.classList.contains("shown"); + } + + if (state) { + overlay.classList.add("shown"); + popup_el.classList.add("shown"); + } else if (! state) { + overlay.classList.remove("shown"); + popup_el.classList.remove("shown"); + } +} + +popups.show = (popup, auto_close_all = true) => { + return popups.set(popup, true, auto_close_all); +} + +popups.hide = (popup, auto_close_all = true) => { + return popups.set(popup, false, auto_close_all); +} + +popups.list = () => { + return document.querySelectorAll(".popup"); +} + +popups.set_all = (state, exclude_popup) => { + let popups_list = document.querySelectorAll(".popup.shown"); + + for (let i = 0; i < popups_list.length; i++) { + if (popups_list[i] == exclude_popup) { + continue; + } + + popups.set(popups_list[i], false, false); + } +} |