mirror of
https://github.com/mickael-kerjean/filestash.git
synced 2026-10-19 16:14:39 +00:00
feature (move): cross window move
a request for a feature to move things by dnd a file from a window and land it to another window
This commit is contained in:
@@ -10,6 +10,7 @@ import componentFilesystem, { init as initFilesystem } from "./filespage/ctrl_fi
|
||||
import componentSubmenu, { init as initSubmenu } from "./filespage/ctrl_submenu.js";
|
||||
import componentNewItem, { init as initNewItem } from "./filespage/ctrl_newitem.js";
|
||||
import componentUpload, { init as initUpload } from "./filespage/ctrl_upload.js";
|
||||
import componentMove from "./filespage/ctrl_move.js";
|
||||
import { init as initState } from "./filespage/state_config.js";
|
||||
import { init as initThing } from "./filespage/thing.js";
|
||||
|
||||
@@ -43,7 +44,10 @@ export default WithShell(function(render) {
|
||||
// feature4: render the upload button
|
||||
componentUpload(createRender(qs($page, "[is=\"component_upload\"]")));
|
||||
|
||||
// feature5: accessibility / skip links
|
||||
// feature5: move accross windows
|
||||
componentMove();
|
||||
|
||||
// feature6: accessibility / skip links
|
||||
const $skip = createElement(`<a aria-role="navigation" href="#main">${t("Skip to content")}</a>`);
|
||||
$skip.onclick = (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
@@ -79,6 +79,8 @@ export const mv = (from, to) => ajax({
|
||||
|
||||
export const save = () => rxjs.of(null).pipe(rxjs.delay(1000));
|
||||
|
||||
const bc = new BroadcastChannel("filestash::ls::refresh");
|
||||
|
||||
export const ls = (path) => {
|
||||
const lsFromCache = (path) => rxjs.from(fscache().get(path));
|
||||
const lsFromHttp = (path) => ajax({
|
||||
@@ -101,9 +103,12 @@ export const ls = (path) => {
|
||||
lsFromCache(path),
|
||||
rxjs.merge(
|
||||
rxjs.of(null),
|
||||
rxjs.merge(rxjs.of(null), rxjs.fromEvent(window, "keydown").pipe( // "r" shorcut
|
||||
rxjs.filter((e) => e.keyCode === 82 && !isAlreadyFocused()),
|
||||
)).pipe(
|
||||
rxjs.merge(
|
||||
rxjs.of(null), rxjs.fromEvent(window, "keydown").pipe( // "r" shorcut
|
||||
rxjs.filter((e) => e.keyCode === 82 && !isAlreadyFocused()),
|
||||
),
|
||||
rxjs.fromEvent(bc, "message"),
|
||||
).pipe(
|
||||
rxjs.switchMap(() => lsFromHttp(path)),
|
||||
rxjs.catchError((err) => navigator.onLine ? rxjs.throwError(err) : rxjs.EMPTY),
|
||||
),
|
||||
@@ -147,6 +152,11 @@ export const ls = (path) => {
|
||||
);
|
||||
};
|
||||
|
||||
export const refresh = () => {
|
||||
window.dispatchEvent(new KeyboardEvent("keydown", { keyCode: 82 }));
|
||||
bc.postMessage(null);
|
||||
}
|
||||
|
||||
export const search = (term) => ajax({
|
||||
url: withURLParams(`api/files/search?path=${encodeURIComponent(currentPath())}&q=${encodeURIComponent(term)}`),
|
||||
responseType: "json"
|
||||
|
||||
@@ -358,6 +358,7 @@ var preload = [][]string{
|
||||
"/assets/" + BUILD_REF + "/pages/connectpage/model_config.js",
|
||||
"/assets/" + BUILD_REF + "/pages/connectpage/ctrl_form_state.js",
|
||||
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/cache.js",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/thing.js",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/thing.css",
|
||||
},
|
||||
@@ -365,13 +366,13 @@ var preload = [][]string{
|
||||
"/assets/" + BUILD_REF + "/pages/ctrl_filespage.js",
|
||||
"/assets/" + BUILD_REF + "/pages/ctrl_filespage.css",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/model_acl.js",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/cache.js",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/ctrl_filesystem.js",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/ctrl_filesystem.css",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/ctrl_upload.js",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/ctrl_upload.css",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/ctrl_newitem.js",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/ctrl_newitem.css",
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/ctrl_move.js",
|
||||
},
|
||||
{
|
||||
"/assets/" + BUILD_REF + "/pages/filespage/ctrl_submenu.js",
|
||||
|
||||
Reference in New Issue
Block a user