mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 23:20:13 +01:00
This commit is contained in:
parent
de0b3b8415
commit
641550e1ed
2 changed files with 44 additions and 12 deletions
|
|
@ -16,7 +16,12 @@ import {mountHelp, newNotebook} from "../../util/mount";
|
||||||
import {confirmDialog} from "../../dialog/confirmDialog";
|
import {confirmDialog} from "../../dialog/confirmDialog";
|
||||||
import {isNotCtrl, isOnlyMeta, setStorageVal, updateHotkeyTip} from "../../protyle/util/compatibility";
|
import {isNotCtrl, isOnlyMeta, setStorageVal, updateHotkeyTip} from "../../protyle/util/compatibility";
|
||||||
import {openFileById} from "../../editor/util";
|
import {openFileById} from "../../editor/util";
|
||||||
import {hasClosestByAttribute, hasClosestByTag, hasTopClosestByTag} from "../../protyle/util/hasClosest";
|
import {
|
||||||
|
hasClosestByAttribute,
|
||||||
|
hasClosestByClassName,
|
||||||
|
hasClosestByTag,
|
||||||
|
hasTopClosestByTag
|
||||||
|
} from "../../protyle/util/hasClosest";
|
||||||
import {isTouchDevice} from "../../util/functions";
|
import {isTouchDevice} from "../../util/functions";
|
||||||
import {App} from "../../index";
|
import {App} from "../../index";
|
||||||
import {refreshFileTree} from "../../dialog/processSystem";
|
import {refreshFileTree} from "../../dialog/processSystem";
|
||||||
|
|
@ -938,20 +943,31 @@ export class Files extends Model {
|
||||||
if (!liElement) {
|
if (!liElement) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
let fileHTML = "";
|
||||||
|
data.files.forEach((item: IFile) => {
|
||||||
|
fileHTML += this.genFileHTML(item);
|
||||||
|
});
|
||||||
let nextElement = liElement.nextElementSibling;
|
let nextElement = liElement.nextElementSibling;
|
||||||
if (nextElement && nextElement.tagName === "UL") {
|
if (nextElement && nextElement.tagName === "UL") {
|
||||||
// 文件展开时,刷新
|
// 文件展开时,刷新
|
||||||
// TODO nextElement.innerHTML = fileHTML;
|
const tempElement = document.createElement("template");
|
||||||
|
tempElement.innerHTML = fileHTML;
|
||||||
|
// 保持文件夹展开状态
|
||||||
|
nextElement.querySelectorAll(":scope > .b3-list-item > .b3-list-item__toggle> .b3-list-item__arrow--open").forEach(item => {
|
||||||
|
const openLiElement = hasClosestByClassName(item, "b3-list-item")
|
||||||
|
if (openLiElement) {
|
||||||
|
const tempOpenLiElement = tempElement.content.querySelector(`.b3-list-item[data-node-id="${openLiElement.getAttribute("data-node-id")}"]`)
|
||||||
|
tempOpenLiElement.after(openLiElement.nextElementSibling);
|
||||||
|
tempOpenLiElement.querySelector(".b3-list-item__arrow").classList.add("b3-list-item__arrow--open");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
nextElement.innerHTML = tempElement.innerHTML;
|
||||||
if (typeof scrollTop === "number") {
|
if (typeof scrollTop === "number") {
|
||||||
this.element.scroll({top: scrollTop, behavior: "smooth"});
|
this.element.scroll({top: scrollTop, behavior: "smooth"});
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
liElement.querySelector(".b3-list-item__arrow").classList.add("b3-list-item__arrow--open");
|
liElement.querySelector(".b3-list-item__arrow").classList.add("b3-list-item__arrow--open");
|
||||||
let fileHTML = "";
|
|
||||||
data.files.forEach((item: IFile) => {
|
|
||||||
fileHTML += this.genFileHTML(item);
|
|
||||||
});
|
|
||||||
liElement.insertAdjacentHTML("afterend", `<ul class="file-tree__sliderDown">${fileHTML}</ul>`);
|
liElement.insertAdjacentHTML("afterend", `<ul class="file-tree__sliderDown">${fileHTML}</ul>`);
|
||||||
nextElement = liElement.nextElementSibling;
|
nextElement = liElement.nextElementSibling;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
|
@ -1204,3 +1220,4 @@ aria-label="${escapeHtml(ariaLabel)}">${getDisplayName(item.name, true, true)}</
|
||||||
return window.siyuan.menus.menu;
|
return window.siyuan.menus.menu;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import {hasClosestByTag, hasTopClosestByTag} from "../../protyle/util/hasClosest";
|
import {hasClosestByClassName, hasClosestByTag, hasTopClosestByTag} from "../../protyle/util/hasClosest";
|
||||||
import {escapeHtml} from "../../util/escape";
|
import {escapeHtml} from "../../util/escape";
|
||||||
import {Model} from "../../layout/Model";
|
import {Model} from "../../layout/Model";
|
||||||
import {Constants} from "../../constants";
|
import {Constants} from "../../constants";
|
||||||
|
|
@ -528,18 +528,33 @@ export class MobileFiles extends Model {
|
||||||
}
|
}
|
||||||
|
|
||||||
private onLsHTML(data: { files: IFile[], box: string, path: string }) {
|
private onLsHTML(data: { files: IFile[], box: string, path: string }) {
|
||||||
|
if (data.files.length === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const liElement = this.element.querySelector(`ul[data-url="${data.box}"] li[data-path="${data.path}"]`);
|
||||||
|
if (!liElement) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
let fileHTML = "";
|
let fileHTML = "";
|
||||||
data.files.forEach((item: IFile) => {
|
data.files.forEach((item: IFile) => {
|
||||||
fileHTML += this.genFileHTML(item);
|
fileHTML += this.genFileHTML(item);
|
||||||
});
|
});
|
||||||
if (fileHTML === "") {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const liElement = this.element.querySelector(`ul[data-url="${data.box}"] li[data-path="${data.path}"]`);
|
|
||||||
let nextElement = liElement.nextElementSibling;
|
let nextElement = liElement.nextElementSibling;
|
||||||
if (nextElement && nextElement.tagName === "UL") {
|
if (nextElement && nextElement.tagName === "UL") {
|
||||||
// 文件展开时,刷新
|
// 文件展开时,刷新
|
||||||
nextElement.remove();
|
const tempElement = document.createElement("template");
|
||||||
|
tempElement.innerHTML = fileHTML;
|
||||||
|
// 保持文件夹展开状态
|
||||||
|
nextElement.querySelectorAll(":scope > .b3-list-item > .b3-list-item__toggle> .b3-list-item__arrow--open").forEach(item => {
|
||||||
|
const openLiElement = hasClosestByClassName(item, "b3-list-item")
|
||||||
|
if (openLiElement) {
|
||||||
|
const tempOpenLiElement = tempElement.content.querySelector(`.b3-list-item[data-node-id="${openLiElement.getAttribute("data-node-id")}"]`)
|
||||||
|
tempOpenLiElement.after(openLiElement.nextElementSibling);
|
||||||
|
tempOpenLiElement.querySelector(".b3-list-item__arrow").classList.add("b3-list-item__arrow--open");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
nextElement.innerHTML = tempElement.innerHTML;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
liElement.querySelector(".b3-list-item__arrow").classList.add("b3-list-item__arrow--open");
|
liElement.querySelector(".b3-list-item__arrow").classList.add("b3-list-item__arrow--open");
|
||||||
liElement.insertAdjacentHTML("afterend", `<ul class="file-tree__sliderDown">${fileHTML}</ul>`);
|
liElement.insertAdjacentHTML("afterend", `<ul class="file-tree__sliderDown">${fileHTML}</ul>`);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue