aboutsummaryrefslogtreecommitdiff
path: root/src/app/js/popups.js
diff options
context:
space:
mode:
author0neGal <mail@0negal.com>2024-01-20 01:58:14 +0100
committer0neGal <mail@0negal.com>2024-01-20 01:58:14 +0100
commitc03ce1dc5b1e320a94ef6307aa4c32132c5bf33c (patch)
tree2bde427830974dbec8b4881801e05cd88138c961 /src/app/js/popups.js
parente2bae48724505c5b09b6bb28f053b8492bd66ba6 (diff)
downloadViper-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.js51
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);
+ }
+}