@@ -31,22 +31,20 @@ import {emitOpenMenu} from "../plugin/EventBus";
3131import { openByMobile } from "../protyle/util/compatibility" ;
3232import { addFilesToDatabase } from "../protyle/render/av/addToDatabase" ;
3333
34- const initMultiMenu = ( selectItemElements : NodeListOf < Element > , app : App ) => {
35- const fileItemElement = Array . from ( selectItemElements ) . find ( item => {
36- if ( item . getAttribute ( "data-type" ) === "navigation-file" ) {
37- return true ;
38- }
39- } ) ;
40- if ( ! fileItemElement ) {
41- return window . siyuan . menus . menu ;
42- }
34+ const initMultiMenu = ( selectItemElements : Element [ ] , app : App ) => {
4335 const blockIDs : string [ ] = [ ] ;
44- selectItemElements . forEach ( item => {
36+ const fileItemElements = selectItemElements . filter ( item => {
37+ if ( item . getAttribute ( "data-type" ) === "navigation-file" ) {
4538 const id = item . getAttribute ( "data-node-id" ) ;
46- if ( id ) {
47- blockIDs . push ( id ) ;
48- }
39+ id && blockIDs . push ( id ) ;
40+ return true ;
41+ }
42+ return false ;
4943 } ) ;
44+
45+ if ( fileItemElements . length === 0 ) {
46+ return window . siyuan . menus . menu ;
47+ }
5048
5149 if ( blockIDs . length > 0 ) {
5250 window . siyuan . menus . menu . append ( new MenuItem ( {
@@ -69,19 +67,15 @@ const initMultiMenu = (selectItemElements: NodeListOf<Element>, app: App) => {
6967 } ] )
7068 } ) . element ) ;
7169 }
72-
73- window . siyuan . menus . menu . append ( movePathToMenu ( getTopPaths (
74- Array . from ( selectItemElements )
75- ) ) ) ;
76-
70+ window . siyuan . menus . menu . append ( movePathToMenu ( getTopPaths ( fileItemElements ) ) ) ;
7771 if ( blockIDs . length > 0 ) {
7872 window . siyuan . menus . menu . append ( new MenuItem ( {
7973 id : "addToDatabase" ,
8074 label : window . siyuan . languages . addToDatabase ,
8175 accelerator : window . siyuan . config . keymap . general . addToDatabase . custom ,
8276 icon : "iconDatabase" ,
8377 click : ( ) => {
84- addFilesToDatabase ( Array . from ( selectItemElements ) ) ;
78+ addFilesToDatabase ( fileItemElements ) ;
8579 }
8680 } ) . element ) ;
8781 }
@@ -91,13 +85,14 @@ const initMultiMenu = (selectItemElements: NodeListOf<Element>, app: App) => {
9185 label : window . siyuan . languages . delete ,
9286 accelerator : "⌦" ,
9387 click : ( ) => {
94- deleteFiles ( Array . from ( selectItemElements ) ) ;
88+ deleteFiles ( fileItemElements ) ;
9589 }
9690 } ) . element ) ;
9791
9892 if ( blockIDs . length === 0 ) {
9993 return window . siyuan . menus . menu ;
10094 }
95+
10196 window . siyuan . menus . menu . append ( new MenuItem ( { id : "separator_1" , type : "separator" } ) . element ) ;
10297 if ( ! window . siyuan . config . readonly ) {
10398 const riffCardMenu = [ {
@@ -176,8 +171,9 @@ const initMultiMenu = (selectItemElements: NodeListOf<Element>, app: App) => {
176171 plugins : app . plugins ,
177172 type : "open-menu-doctree" ,
178173 detail : {
179- elements : selectItemElements ,
180- type : "docs"
174+ elements : fileItemElements ,
175+ type : "docs" ,
176+ ids : blockIDs
181177 } ,
182178 separatorPosition : "top" ,
183179 } ) ;
@@ -199,7 +195,7 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => {
199195 } ) ;
200196 liElement . classList . add ( "b3-list-item--focus" ) ;
201197 }
202- const selectItemElements = fileElement . querySelectorAll ( ".b3-list-item--focus" ) ;
198+ const selectItemElements = Array . from ( fileElement . querySelectorAll ( ".b3-list-item--focus" ) ) ;
203199 if ( selectItemElements . length > 1 ) {
204200 return initMultiMenu ( selectItemElements , app ) ;
205201 }
@@ -407,7 +403,8 @@ export const initNavigationMenu = (app: App, liElement: HTMLElement) => {
407403 type : "open-menu-doctree" ,
408404 detail : {
409405 elements : selectItemElements ,
410- type : "notebook"
406+ type : "notebook" ,
407+ ids : [ notebookId ]
411408 } ,
412409 separatorPosition : "top" ,
413410 } ) ;
@@ -429,7 +426,7 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l
429426 } ) ;
430427 liElement . classList . add ( "b3-list-item--focus" ) ;
431428 }
432- const selectItemElements = fileElement . querySelectorAll ( ".b3-list-item--focus" ) ;
429+ const selectItemElements = Array . from ( fileElement . querySelectorAll ( ".b3-list-item--focus" ) ) ;
433430 if ( selectItemElements . length > 1 ) {
434431 return initMultiMenu ( selectItemElements , app ) ;
435432 }
@@ -701,7 +698,8 @@ export const initFileMenu = (app: App, notebookId: string, pathString: string, l
701698 type : "open-menu-doctree" ,
702699 detail : {
703700 elements : selectItemElements ,
704- type : "doc"
701+ type : "doc" ,
702+ ids : [ id ]
705703 } ,
706704 separatorPosition : "top" ,
707705 } ) ;
0 commit comments