Эх сурвалжийг харах

Add pushstate when previews are opened in lightbox and popstate when closed. Still work to do with potentially managing the popstate handler for files too. Potentially addresses the main problem in #59.

dom111 5 жил өмнө
parent
commit
34725983be

+ 17 - 1
src/lib/UI/NativeDOM.js

@@ -35,7 +35,20 @@ export default class NativeDOM extends UI {
     }
 
     window.addEventListener('popstate', () => {
-      this.trigger('go');
+      const url = location.pathname;
+
+      if (url.endsWith('/')) {
+        return this.trigger('go');
+      }
+
+      const parts = url.split(/\//),
+        // file = parts.pop(),
+        path = parts.join('/')
+      ;
+
+      this.trigger('go', path);
+
+      // trigger opening file
     });
 
     if (supportsDragDrop) {
@@ -196,5 +209,8 @@ export default class NativeDOM extends UI {
 
       document.title = `${decodeURIComponent(path)} | WebDAV`;
     });
+
+    this.on('preview:opened', (entry) => history.pushState(history.state, entry.fullPath, entry.fullPath));
+    this.on('preview:closed', (entry) => history.pushState(history.state, entry.path, entry.path));
   }
 }

+ 6 - 1
src/lib/UI/NativeDOM/List/Item.js

@@ -194,11 +194,16 @@ export default class Item extends Element {
               onShow(lightbox);
             }
           },
-          onClose: () => document.removeEventListener('keydown', escapeListener)
+          onClose: () => {
+            document.removeEventListener('keydown', escapeListener);
+            this.trigger('preview:closed', this.#entry);
+          }
         })
       ;
 
       lightbox.show();
+
+      this.trigger('preview:opened', this.#entry);
     };
 
     if (['video', 'audio', 'image', 'font', 'pdf'].includes(entry.type)) {

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
src/webdav-min.js


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно