aboutsummaryrefslogtreecommitdiff
path: root/src/app/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
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')
-rw-r--r--src/app/js/browser.js22
-rw-r--r--src/app/js/popups.js51
-rw-r--r--src/app/js/settings.js17
3 files changed, 61 insertions, 29 deletions
diff --git a/src/app/js/browser.js b/src/app/js/browser.js
index cd162e6..7ca2729 100644
--- a/src/app/js/browser.js
+++ b/src/app/js/browser.js
@@ -87,28 +87,16 @@ var Browser = {
},
},
toggle: (state) => {
- if (state) {
- browser.scrollTo(0, 0);
- overlay.classList.add("shown");
- browser.classList.add("shown");
+ browser.scrollTo(0, 0);
+ popups.set("#browser", state);
+ if (state) {
if (browserEntries.querySelectorAll(".el").length == 0) {
Browser.loadfront();
}
- return
- } else if (! state) {
- if (state != undefined) {
- Browser.filters.toggle(false);
- overlay.classList.remove("shown");
- browser.classList.remove("shown");
- preview.classList.remove("shown");
- return
- }
+ } else if (state === false) {
+ Browser.filters.toggle(false);
}
-
- browser.scrollTo(0, 0);
- overlay.classList.toggle("shown");
- browser.classList.toggle("shown");
},
install: (package_obj, clear_queue = false) => {
return installFromURL(
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);
+ }
+}
diff --git a/src/app/js/settings.js b/src/app/js/settings.js
index 8aeb2ca..a333e8b 100644
--- a/src/app/js/settings.js
+++ b/src/app/js/settings.js
@@ -1,28 +1,21 @@
var Settings = {
toggle: (state) => {
+ Settings.load();
+ options.scrollTo(0, 0);
+
+ popups.set("#options", state);
let settings_btn = document.getElementById("settings");
if (state) {
- Settings.load();
- options.scrollTo(0, 0);
- overlay.classList.add("shown");
- options.classList.add("shown");
settings_btn.classList.add("shown");
-
return;
- } else if (! state) {
+ } else if (state === false) {
if (state != undefined) {
- overlay.classList.remove("shown");
- options.classList.remove("shown");
settings_btn.classList.remove("shown");
return;
}
}
- Settings.load();
- options.scrollTo(0, 0);
- overlay.classList.toggle("shown");
- options.classList.toggle("shown");
settings_btn.classList.toggle("shown");
},
apply: () => {