Jelajahi Sumber

Restore title-url functionality on group titles

Svilen Markov 8 bulan lalu
induk
melakukan
79779eb721

+ 16 - 1
internal/assets/static/js/main.js

@@ -1,6 +1,6 @@
 import { setupPopovers } from './popover.js';
 import { setupMasonries } from './masonry.js';
-import { throttledDebounce, isElementVisible } from './utils.js';
+import { throttledDebounce, isElementVisible, openURLInNewTab } from './utils.js';
 
 async function fetchPageContent(pageData) {
     // TODO: handle non 200 status codes/time outs
@@ -255,8 +255,23 @@ function setupGroups() {
 
         for (let t = 0; t < titles.length; t++) {
             const title = titles[t];
+
+            if (title.dataset.titleUrl !== undefined) {
+                title.addEventListener("auxclick", (event) => {
+                    if (event.button != 1) {
+                        return;
+                    }
+
+                    openURLInNewTab(title.dataset.titleUrl);
+                });
+            }
+
             title.addEventListener("click", () => {
                 if (t == current) {
+                    if (title.dataset.titleUrl !== undefined) {
+                        openURLInNewTab(title.dataset.titleUrl);
+                    }
+
                     return;
                 }
 

+ 4 - 0
internal/assets/static/js/utils.js

@@ -27,3 +27,7 @@ export function isElementVisible(element) {
 export function clamp(value, min, max) {
     return Math.min(Math.max(value, min), max);
 }
+
+export function openURLInNewTab(url) {
+    window.open(url, '_blank', 'noopener,noreferrer')?.focus();
+}

+ 1 - 1
internal/assets/templates/group.html

@@ -6,7 +6,7 @@
 <div class="widget-group-header">
     <div class="widget-header gap-20">
         {{ range $i, $widget := .Widgets }}
-            <button class="widget-group-title{{ if eq $i 0 }} widget-group-title-current{{ end }}">{{ $widget.Title }}</button>
+            <button class="widget-group-title{{ if eq $i 0 }} widget-group-title-current{{ end }}"{{ if ne "" .TitleURL }} data-title-url="{{ .TitleURL }}"{{ end }}>{{ $widget.Title }}</button>
         {{ end }}
     </div>
 </div>