Skip to content

Commit 597d7bd

Browse files
committed
fix: close sidebar on navigation change
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
1 parent d509b63 commit 597d7bd

4 files changed

Lines changed: 43 additions & 4 deletions

File tree

src/global.d.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,28 @@
22
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
33
* SPDX-License-Identifier: AGPL-3.0-or-later
44
*/
5+
import type { ViewerFileInfo } from './utils/fileUtils.ts'
56

67
declare global {
78
interface Window {
8-
OCA: Record<string, unknown>
9+
OCA: {
10+
Dashboard: {
11+
register(name: string, callback: (el: HTMLElement) => void): void
12+
}
13+
Files: {
14+
Sidebar: {
15+
open: (path: string) => void
16+
close: () => void
17+
file: string | null | undefined
18+
registerTab(tab: unknown): void
19+
Tab: unknown
20+
}
21+
}
22+
Viewer: {
23+
open: ({ fileInfo, list } : { fileInfo: ViewerFileInfo, list: ViewerFileInfo[] }) => void
24+
close: () => void
25+
}
26+
}
927
}
1028
}
1129

src/router/index.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,13 +304,20 @@ const router = new Router({
304304
],
305305
})
306306

307-
router.afterEach((to) => {
307+
router.afterEach((to, from) => {
308+
// Update page title
308309
const rootTitle = to.meta?.rootTitle?.(to)
309310
if (rootTitle) {
310311
document.title = `${rootTitle} - ${baseTitle}`
311312
} else {
312313
document.title = baseTitle
313314
}
315+
316+
// Close sidebar on view change
317+
const isSidebarOpen = !!window.OCA?.Files?.Sidebar?.file
318+
if (isSidebarOpen && to.name !== from.name) {
319+
window.OCA.Files.Sidebar.close()
320+
}
314321
})
315322

316323
export default router

src/sidebar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ const photosTab = new OCA.Files.Sidebar.Tab({
5151
})
5252

5353
window.addEventListener('DOMContentLoaded', async function() {
54-
if (OCA.Files && OCA.Files.Sidebar) {
54+
if (window.OCA.Files && window.OCA.Files.Sidebar) {
5555
window.OCA.Files.Sidebar.registerTab(photosTab)
5656
const { default: PhotosTab } = await import(/* webpackPreload: true */ './views/PhotosTab.vue')
5757
PhotosTabView = PhotosTabView ?? Vue.extend(PhotosTab)

src/utils/fileUtils.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,25 @@ export function sortCompareFileInfo(fileInfo1: FoldersNode, fileInfo2: FoldersNo
9292
: -fileInfo1[key]?.toString()?.localeCompare(fileInfo2[key].toString(), getLanguage()) || -1
9393
}
9494

95+
export type ViewerFileInfo = {
96+
fileid: number
97+
basename: string
98+
filename: string
99+
mime: string
100+
mtime: Date
101+
ownerId: string
102+
source: string
103+
hasPreview: boolean
104+
previewUrl: string
105+
etag: string
106+
permissions: string
107+
}
108+
95109
/**
96110
*
97111
* @param file
98112
*/
99-
export function toViewerFileInfo(file: Node) {
113+
export function toViewerFileInfo(file: Node): ViewerFileInfo {
100114
let permissions = ''
101115

102116
if ((file.permissions & Permission.CREATE) === Permission.CREATE) {

0 commit comments

Comments
 (0)