summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaindropsSys <raindrops@equestria.dev>2023-11-17 23:25:16 +0100
committerRaindropsSys <raindrops@equestria.dev>2023-11-17 23:25:16 +0100
commit4bd815753eae7a1ddcc0fcdc152f0005531c8450 (patch)
treefd967a7b6aa9162bc608acd6fca637bb330c191b
parentea4c46cf14cd24873379332da57d2b4600e8d3e6 (diff)
downloadchatroom-4bd815753eae7a1ddcc0fcdc152f0005531c8450.tar.gz
chatroom-4bd815753eae7a1ddcc0fcdc152f0005531c8450.tar.bz2
chatroom-4bd815753eae7a1ddcc0fcdc152f0005531c8450.zip
Updated 2 files and added client/icons/dismiss.svg (automated)
-rw-r--r--client/icons/dismiss.svg1
-rw-r--r--client/index.html43
-rwxr-xr-xclient/main.js8
3 files changed, 35 insertions, 17 deletions
diff --git a/client/icons/dismiss.svg b/client/icons/dismiss.svg
new file mode 100644
index 0000000..c4b81e1
--- /dev/null
+++ b/client/icons/dismiss.svg
@@ -0,0 +1 @@
+<svg width="24" height="24" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m4.21 4.387.083-.094a1 1 0 0 1 1.32-.083l.094.083L12 10.585l6.293-6.292a1 1 0 1 1 1.414 1.414L13.415 12l6.292 6.293a1 1 0 0 1 .083 1.32l-.083.094a1 1 0 0 1-1.32.083l-.094-.083L12 13.415l-6.293 6.292a1 1 0 0 1-1.414-1.414L10.585 12 4.293 5.707a1 1 0 0 1-.083-1.32l.083-.094-.083.094Z" fill="#000000"/></svg> \ No newline at end of file
diff --git a/client/index.html b/client/index.html
index 3a9e3a0..d156d3b 100644
--- a/client/index.html
+++ b/client/index.html
@@ -54,9 +54,19 @@
window.activeTab = -1;
function refreshTabBar() {
+ let id = window.activeTab;
+
+ if (id > -1) {
+ Array.from(document.getElementById("windows").children).map((i) => {
+ i.classList.remove("open");
+ });
+
+ tabs[id].webview.classList.add("open");
+ }
+
document.getElementById("tabs").innerHTML = window.tabs.map((i, j) => `
<li class="nav-item">
- <a class="nav-link ${j === window.activeTab ? 'active' : ''}" aria-current="page" href="#" onclick="switchToTab(${j});"><img style="width: 24px; height: 24px;" alt="" src="${i.icon}"><span style="vertical-align: middle; margin-left: 5px; width: 171px; display: inline-block; white-space: nowrap; overflow: hidden !important; text-overflow: ellipsis">${i.name}</span></a>
+ <a class="nav-link ${j === window.activeTab ? 'active' : ''}" aria-current="page" href="#" onclick="switchToTab(${j});"><img style="width: 24px; height: 24px;" alt="" src="${i.icon}"><span style="vertical-align: middle; margin-left: 5px; width: 171px; display: inline-block; white-space: nowrap; overflow: hidden !important; text-overflow: ellipsis">${i.name}</span><span style="display: inline-block;" onclick="event.preventDefault(); closeTab(${j});"><img alt="" src="./icons/dismiss.svg"></span></a>
</li>
`).join("") + `<li class="nav-item">
<a class="nav-link" aria-current="page" href="#" onclick="openHome();"><img alt="" src="./icons/new.svg"></a>
@@ -78,11 +88,12 @@
icon: "./icons/placeholder.svg",
name: "Unnamed tab",
url,
- webview
+ webview,
+ id: crypto.randomUUID()
}
webview.src = url;
- webview.id = "wv-item-" + tabs.length;
+ webview.id = "wv-item-" + tab.id;
webview.addEventListener('page-title-updated', (e) => {
if (webview.getURL().startsWith("https://school.equestria.dev/")) {
tab.name = "Chat";
@@ -115,11 +126,6 @@
}
function switchToTab(id) {
- Array.from(document.getElementById("windows").children).map((i) => {
- i.classList.remove("open");
- });
-
- tabs[id].webview.classList.add("open");
window.activeTab = id;
refreshTabBar();
}
@@ -128,6 +134,20 @@
openTab("file:///" + __dirname + "/apps/home.html");
}
+ function closeTab(id) {
+ if (id === window.activeTab) {
+ closeCurrentTab();
+ return;
+ } else if (window.activeTab > id) {
+ window.activeTab--;
+ }
+
+ document.getElementById("wv-item-" + tabs[id].id).outerHTML = "";
+ window.tabs = tabs.filter((i, j) => j !== id);
+
+ refreshTabBar();
+ }
+
function closeCurrentTab() {
let oldActiveTab = window.activeTab;
@@ -138,15 +158,10 @@
window.activeTab--;
}
- document.getElementById("wv-item-" + oldActiveTab).outerHTML = "";
+ document.getElementById("wv-item-" + tabs[oldActiveTab].id).outerHTML = "";
window.tabs = tabs.filter((i, j) => j !== oldActiveTab);
- for (let wv of Array.from(document.getElementsByTagName("webview"))) {
- wv.id = "wv-item-" + (parseInt(wv.id.split("-")[2]) - 1);
- }
-
console.log(window.activeTab);
-
switchToTab(window.activeTab);
}
diff --git a/client/main.js b/client/main.js
index a886fd5..076674c 100755
--- a/client/main.js
+++ b/client/main.js
@@ -62,9 +62,11 @@ const createWindow = () => {
}
let menu = Menu.buildFromTemplate([
- {
- role: "appMenu",
- },
+ ...(process.platform === "darwin" ? [
+ {
+ role: "appMenu",
+ }
+ ] : []),
{
type: "submenu",
label: "File",