diff --git a/app/src/layout/dock/Backlink.ts b/app/src/layout/dock/Backlink.ts
index 93dda6837..9b9edacc1 100644
--- a/app/src/layout/dock/Backlink.ts
+++ b/app/src/layout/dock/Backlink.ts
@@ -163,6 +163,22 @@ export class Backlink extends Model {
position: "bottom",
action: [Constants.CB_GET_FOCUS, Constants.CB_GET_CONTEXT]
});
+ },
+ toggleClick:(liElement: HTMLElement)=> {
+ const svgElement = liElement.firstElementChild.firstElementChild;
+ if (svgElement.classList.contains("b3-list-item__arrow--open")) {
+ svgElement.classList.remove("b3-list-item__arrow--open");
+ liElement.nextElementSibling?.classList.add("fn__none");
+ } else {
+ svgElement.classList.add("b3-list-item__arrow--open");
+ if (liElement.nextElementSibling && liElement.nextElementSibling.tagName === "UL") {
+ liElement.nextElementSibling.classList.remove("fn__none");
+ } else {
+ fetchPost("/api/ref/getBacklinkDoc", {defID:this.blockId, refTreeID:liElement.getAttribute("data-node-id")}, (response)=>{
+
+ })
+ }
+ }
}
});
this.mTree = new Tree({
@@ -355,7 +371,14 @@ export class Backlink extends Model {
this.notebookId = data.box;
this.inputsElement[0].value = data.k;
this.inputsElement[1].value = data.mk;
-
+ data.backlinks.forEach((item) => {
+ delete item.blocks
+ delete item.children
+ })
+ data.backmentions.forEach((item) => {
+ delete item.blocks
+ delete item.children
+ })
this.tree.updateData(data.backlinks);
this.mTree.updateData(data.backmentions);
diff --git a/app/src/util/Tree.ts b/app/src/util/Tree.ts
index a5da6be78..87bfd7009 100644
--- a/app/src/util/Tree.ts
+++ b/app/src/util/Tree.ts
@@ -14,6 +14,7 @@ export class Tree {
private click: (element: HTMLElement, event: MouseEvent) => void;
private ctrlClick: (element: HTMLElement) => void;
+ private toggleClick: (element: HTMLElement) => void;
private shiftClick: (element: HTMLElement) => void;
private altClick: (element: HTMLElement) => void;
private rightClick: (element: HTMLElement, event: MouseEvent) => void;
@@ -27,6 +28,7 @@ export class Tree {
ctrlClick?(element: HTMLElement): void
altClick?(element: HTMLElement): void
shiftClick?(element: HTMLElement): void
+ toggleClick?(element: HTMLElement): void
rightClick?(element: HTMLElement, event: MouseEvent): void
}) {
this.click = options.click;
@@ -34,6 +36,7 @@ export class Tree {
this.altClick = options.altClick;
this.shiftClick = options.shiftClick;
this.rightClick = options.rightClick;
+ this.toggleClick = options.toggleClick;
this.element = options.element;
this.blockExtHTML = options.blockExtHTML;
this.topExtHTML = options.topExtHTML;
@@ -76,7 +79,7 @@ data-type="${item.nodeType}"
data-subtype="${item.subType}"
${item.label ? "data-label='" + item.label + "'" : ""}>
-
+
${iconHTML}
${item.name}
@@ -137,6 +140,10 @@ data-def-path="${item.defPath}">
}
private toggleBlocks(liElement: HTMLElement) {
+ if (this.toggleClick) {
+ this.toggleClick(liElement)
+ return;
+ }
if (!liElement.nextElementSibling) {
return;
}