mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-21 09:00:12 +01:00
🚨
This commit is contained in:
parent
bc3ab68a9d
commit
be3ac44ce7
12 changed files with 80 additions and 85 deletions
|
|
@ -282,34 +282,34 @@ export class Files extends Model {
|
|||
window.getSelection().removeAllRanges();
|
||||
const liElement = hasClosestByTag(event.target, "LI");
|
||||
if (liElement) {
|
||||
let selectElements: Element[] = Array.from(this.element.querySelectorAll(".b3-list-item--focus"))
|
||||
let selectElements: Element[] = Array.from(this.element.querySelectorAll(".b3-list-item--focus"));
|
||||
if (!liElement.classList.contains("b3-list-item--focus")) {
|
||||
selectElements.forEach((item) => {
|
||||
item.classList.remove("b3-list-item--focus");
|
||||
})
|
||||
});
|
||||
liElement.classList.add("b3-list-item--focus");
|
||||
selectElements = [liElement];
|
||||
}
|
||||
let ids = ""
|
||||
let ids = "";
|
||||
selectElements.forEach((item: HTMLElement) => {
|
||||
item.style.opacity = "0.1";
|
||||
ids += (item.getAttribute("data-node-id") || "") + ","
|
||||
})
|
||||
ids += (item.getAttribute("data-node-id") || "") + ",";
|
||||
});
|
||||
const img = new Image();
|
||||
// TODO: drag preview
|
||||
img.src = `data:image/png;base64,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`;
|
||||
img.src = "data:image/png;base64,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";
|
||||
event.dataTransfer.setDragImage(img, 10, 10);
|
||||
event.dataTransfer.setData(Constants.SIYUAN_DROP_FILE, ids);
|
||||
event.dataTransfer.dropEffect = "move";
|
||||
const tempEelement = document.createElement("div")
|
||||
const tempEelement = document.createElement("div");
|
||||
tempEelement.innerText = ids;
|
||||
window.siyuan.dragElement = tempEelement;
|
||||
}
|
||||
});
|
||||
this.element.addEventListener("dragend", (event: DragEvent & { target: HTMLElement }) => {
|
||||
this.element.addEventListener("dragend", () => {
|
||||
this.element.querySelectorAll(".b3-list-item--focus").forEach((item: HTMLElement) => {
|
||||
item.style.opacity = ""
|
||||
})
|
||||
item.style.opacity = "";
|
||||
});
|
||||
window.siyuan.dragElement = undefined;
|
||||
});
|
||||
this.element.addEventListener("dragover", (event: DragEvent & { target: HTMLElement }) => {
|
||||
|
|
@ -330,13 +330,13 @@ export class Files extends Model {
|
|||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
let sourceOnlyRoot = true
|
||||
let sourceOnlyRoot = true;
|
||||
Array.from(this.element.querySelectorAll(".b3-list-item--focus")).find((item: HTMLElement) => {
|
||||
if (item.getAttribute("data-type") === "navigation-file") {
|
||||
sourceOnlyRoot = false
|
||||
sourceOnlyRoot = false;
|
||||
return true;
|
||||
}
|
||||
})
|
||||
});
|
||||
const targetType = liElement.getAttribute("data-type");
|
||||
if (sourceOnlyRoot && targetType !== "navigation-root") {
|
||||
event.preventDefault();
|
||||
|
|
@ -379,7 +379,7 @@ export class Files extends Model {
|
|||
}
|
||||
const toURL = newUlElement.getAttribute("data-url");
|
||||
const toPath = newElement.getAttribute("data-path");
|
||||
const gutterType = window.siyuan.dragElement?.getAttribute("data-type")
|
||||
const gutterType = window.siyuan.dragElement?.getAttribute("data-type");
|
||||
if (newElement.classList.contains("dragover") && ["NodeListItem", "NodeHeading"].includes(gutterType)) {
|
||||
// 块标拖拽
|
||||
if (gutterType === "NodeHeading") {
|
||||
|
|
@ -406,22 +406,22 @@ export class Files extends Model {
|
|||
newElement.classList.remove("dragover", "dragover__bottom", "dragover__top");
|
||||
return;
|
||||
}
|
||||
const selectRootElements: HTMLElement[] = []
|
||||
const selectFileElements: HTMLElement[] = []
|
||||
const fromPaths: string[] = []
|
||||
const selectRootElements: HTMLElement[] = [];
|
||||
const selectFileElements: HTMLElement[] = [];
|
||||
const fromPaths: string[] = [];
|
||||
this.element.querySelectorAll(".b3-list-item--focus").forEach((item: HTMLElement) => {
|
||||
if (item.getAttribute("data-type") === "navigation-root") {
|
||||
selectRootElements.push(item)
|
||||
selectRootElements.push(item);
|
||||
} else {
|
||||
const dataPath = item.getAttribute("data-path")
|
||||
const dataPath = item.getAttribute("data-path");
|
||||
const isChild = fromPaths.find(item => {
|
||||
if (dataPath.startsWith(item.replace(".sy", ""))) {
|
||||
return true;
|
||||
}
|
||||
})
|
||||
});
|
||||
if (!isChild) {
|
||||
selectFileElements.push(item)
|
||||
fromPaths.push(dataPath)
|
||||
selectFileElements.push(item);
|
||||
fromPaths.push(dataPath);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -437,11 +437,11 @@ export class Files extends Model {
|
|||
if (newElement.classList.contains("dragover__top")) {
|
||||
selectRootElements.forEach(item => {
|
||||
newElement.parentElement.before(item.parentElement);
|
||||
})
|
||||
});
|
||||
} else {
|
||||
selectRootElements.reverse().forEach(item => {
|
||||
newElement.parentElement.after(item.parentElement);
|
||||
})
|
||||
});
|
||||
}
|
||||
const notebooks: string[] = [];
|
||||
Array.from(this.element.children).forEach(item => {
|
||||
|
|
@ -461,7 +461,7 @@ export class Files extends Model {
|
|||
});
|
||||
selectFileElements.forEach(item => {
|
||||
item.setAttribute("data-path", pathPosix().join(toDir, item.getAttribute("data-node-id") + ".sy"));
|
||||
})
|
||||
});
|
||||
hasMove = true;
|
||||
}
|
||||
if (newElement.classList.contains("dragover__top")) {
|
||||
|
|
@ -474,7 +474,7 @@ export class Files extends Model {
|
|||
if (nextULElement) {
|
||||
item.after(nextULElement);
|
||||
}
|
||||
})
|
||||
});
|
||||
} else if (newElement.classList.contains("dragover__bottom")) {
|
||||
selectFileElements.reverse().forEach(item => {
|
||||
let nextULElement;
|
||||
|
|
@ -489,7 +489,7 @@ export class Files extends Model {
|
|||
if (nextULElement) {
|
||||
item.after(nextULElement);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
const paths: string[] = [];
|
||||
Array.from(newElement.parentElement.children).forEach(item => {
|
||||
|
|
@ -668,7 +668,7 @@ export class Files extends Model {
|
|||
targetElement.remove();
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
private onMount(data: { data: { box: INotebook, existed?: boolean }, callback?: string }) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue