@@ -58,7 +58,9 @@ describe('createMainMenu', () => {
5858 view : {
5959 layoutMode : 'all-panels' ,
6060 layoutModes : [ 'all-panels' , 'list-editor' , 'editor-only' ] ,
61+ canToggleCompactMode : true ,
6162 canToggleMindmap : false ,
63+ isCompactMode : true ,
6264 isMindmapShown : false ,
6365 canTogglePresentation : false ,
6466 isPresentationShown : false ,
@@ -98,12 +100,107 @@ describe('createMainMenu', () => {
98100 'menu:view.layout.allPanels' ,
99101 'menu:view.layout.listEditor' ,
100102 'menu:view.layout.editorOnly' ,
103+ undefined ,
104+ 'menu:view.compactMode' ,
101105 ] )
102106 expect ( viewMenu ?. submenu ?. some ( item => Array . isArray ( item . submenu ) ) ) . toBe (
103107 false ,
104108 )
105109 } )
106110
111+ it ( 'omits compact mode when the current space has no list' , async ( ) => {
112+ const { createMainMenu } = await import ( '../main' )
113+
114+ const context : MainMenuContext = {
115+ file : {
116+ primaryAction : null ,
117+ secondaryAction : null ,
118+ canCreateFragment : false ,
119+ } ,
120+ view : {
121+ layoutMode : null ,
122+ layoutModes : [ ] ,
123+ canToggleCompactMode : false ,
124+ canToggleMindmap : false ,
125+ isCompactMode : false ,
126+ isMindmapShown : false ,
127+ canTogglePresentation : false ,
128+ isPresentationShown : false ,
129+ } ,
130+ editor : {
131+ kind : null ,
132+ noteMode : null ,
133+ canFormat : false ,
134+ canPreviewCode : false ,
135+ isCodePreviewShown : false ,
136+ canPreviewJson : false ,
137+ isJsonPreviewShown : false ,
138+ canAdjustFontSize : false ,
139+ } ,
140+ }
141+
142+ createMainMenu ( context )
143+
144+ const template = buildFromTemplate . mock . calls [ 0 ] ?. [ 0 ] as Array < {
145+ label ?: string
146+ submenu ?: Array < { label ?: string , type ?: string , checked ?: boolean } >
147+ } >
148+ const viewMenu = template . find ( item => item . label === 'menu:view.label' )
149+ const compactModeItem = viewMenu ?. submenu ?. find (
150+ item => item . label === 'menu:view.compactMode' ,
151+ )
152+
153+ expect ( compactModeItem ) . toBeUndefined ( )
154+ } )
155+
156+ it ( 'marks compact mode as checked when enabled' , async ( ) => {
157+ const { createMainMenu } = await import ( '../main' )
158+
159+ const context : MainMenuContext = {
160+ file : {
161+ primaryAction : 'new-sheet' ,
162+ secondaryAction : null ,
163+ canCreateFragment : false ,
164+ } ,
165+ view : {
166+ layoutMode : null ,
167+ layoutModes : [ ] ,
168+ canToggleCompactMode : true ,
169+ canToggleMindmap : false ,
170+ isCompactMode : true ,
171+ isMindmapShown : false ,
172+ canTogglePresentation : false ,
173+ isPresentationShown : false ,
174+ } ,
175+ editor : {
176+ kind : null ,
177+ noteMode : null ,
178+ canFormat : false ,
179+ canPreviewCode : false ,
180+ isCodePreviewShown : false ,
181+ canPreviewJson : false ,
182+ isJsonPreviewShown : false ,
183+ canAdjustFontSize : false ,
184+ } ,
185+ }
186+
187+ createMainMenu ( context )
188+
189+ const template = buildFromTemplate . mock . calls [ 0 ] ?. [ 0 ] as Array < {
190+ label ?: string
191+ submenu ?: Array < { label ?: string , type ?: string , checked ?: boolean } >
192+ } >
193+ const viewMenu = template . find ( item => item . label === 'menu:view.label' )
194+ const compactModeItem = viewMenu ?. submenu ?. find (
195+ item => item . label === 'menu:view.compactMode' ,
196+ )
197+
198+ expect ( compactModeItem ) . toMatchObject ( {
199+ checked : true ,
200+ type : 'checkbox' ,
201+ } )
202+ } )
203+
107204 it ( 'does not include space navigation items in the app menu' , async ( ) => {
108205 const { createMainMenu } = await import ( '../main' )
109206
0 commit comments