浏览代码

:art: https://github.com/siyuan-note/siyuan/issues/8347

Vanessa 2 年之前
父节点
当前提交
852d5fbe52
共有 3 个文件被更改,包括 20 次插入5 次删除
  1. 16 5
      app/src/layout/dock/index.ts
  2. 3 0
      app/src/plugin/index.ts
  3. 1 0
      app/src/types/index.d.ts

+ 16 - 5
app/src/layout/dock/index.ts

@@ -609,25 +609,36 @@ export class Dock {
         return max;
         return max;
     }
     }
 
 
-    public genButton(data: IDockTab[], index: number, append = false) {
+    public genButton(data: IDockTab[], index: number, tabIndex?: number) {
         let html = "";
         let html = "";
         data.forEach(item => {
         data.forEach(item => {
+            if (typeof tabIndex === "undefined" && !TYPES.includes(item.type)) {
+                return;
+            }
             html += `<span data-height="${item.size.height}" data-width="${item.size.width}" data-type="${item.type}" data-index="${index}" data-hotkey="${item.hotkey || ""}" data-hotkeyLangId="${item.hotkeyLangId || ""}" data-title="${item.title}" class="dock__item${item.show ? " dock__item--active" : ""} b3-tooltips b3-tooltips__${this.getClassDirect(index)}" aria-label="${item.title} ${item.hotkey ? updateHotkeyTip(item.hotkey) : ""}${window.siyuan.languages.dockTip}">
             html += `<span data-height="${item.size.height}" data-width="${item.size.width}" data-type="${item.type}" data-index="${index}" data-hotkey="${item.hotkey || ""}" data-hotkeyLangId="${item.hotkeyLangId || ""}" data-title="${item.title}" class="dock__item${item.show ? " dock__item--active" : ""} b3-tooltips b3-tooltips__${this.getClassDirect(index)}" aria-label="${item.title} ${item.hotkey ? updateHotkeyTip(item.hotkey) : ""}${window.siyuan.languages.dockTip}">
     <svg><use xlink:href="#${item.icon}"></use></svg>
     <svg><use xlink:href="#${item.icon}"></use></svg>
 </span>`;
 </span>`;
             this.data[item.type] = true;
             this.data[item.type] = true;
         });
         });
         if (index === 0) {
         if (index === 0) {
-            if (append) {
-                this.element.firstElementChild.lastElementChild.insertAdjacentHTML("beforebegin", html);
+            if (typeof tabIndex === "number") {
+                if (this.element.firstElementChild.children[tabIndex]) {
+                    this.element.firstElementChild.children[tabIndex].insertAdjacentHTML("beforebegin", html);
+                } else {
+                    this.element.firstElementChild.lastElementChild.insertAdjacentHTML("beforebegin", html);
+                }
             } else {
             } else {
                 this.element.firstElementChild.innerHTML = `${html}<span class="dock__item dock__item--pin b3-tooltips b3-tooltips__${this.getClassDirect(index)}" aria-label="${this.pin ? window.siyuan.languages.unpin : window.siyuan.languages.pin}">
                 this.element.firstElementChild.innerHTML = `${html}<span class="dock__item dock__item--pin b3-tooltips b3-tooltips__${this.getClassDirect(index)}" aria-label="${this.pin ? window.siyuan.languages.unpin : window.siyuan.languages.pin}">
     <svg><use xlink:href="#iconPin"></use></svg>
     <svg><use xlink:href="#iconPin"></use></svg>
 </span>`;
 </span>`;
             }
             }
         } else {
         } else {
-            if (append) {
-                this.element.lastElementChild.insertAdjacentHTML("beforeend", html);
+            if (typeof tabIndex === "number") {
+                if (this.element.lastElementChild.children[tabIndex]) {
+                    this.element.lastElementChild.children[tabIndex].insertAdjacentHTML("beforebegin", html);
+                } else {
+                    this.element.lastElementChild.insertAdjacentHTML("beforeend", html);
+                }
             } else {
             } else {
                 this.element.lastElementChild.innerHTML = html;
                 this.element.lastElementChild.innerHTML = html;
             }
             }

+ 3 - 0
app/src/plugin/index.ts

@@ -170,6 +170,9 @@ export class Plugin {
     }) {
     }) {
         /// #if !MOBILE
         /// #if !MOBILE
         const type2 = this.name + options.type;
         const type2 = this.name + options.type;
+        if (typeof options.config.index === "undefined") {
+            options.config.index = 1000;
+        }
         this.docks[type2] = {
         this.docks[type2] = {
             config: options.config,
             config: options.config,
             model: (arg: { tab: Tab }) => {
             model: (arg: { tab: Tab }) => {

+ 1 - 0
app/src/types/index.d.ts

@@ -313,6 +313,7 @@ declare interface IPluginDockTab {
     icon: string,
     icon: string,
     hotkey?: string,
     hotkey?: string,
     title: string,
     title: string,
+    index?: number
 }
 }
 
 
 declare interface IOpenFileOptions {
 declare interface IOpenFileOptions {