Skip to content

Commit 7e753c3

Browse files
authored
Merge pull request #478 from nextmcloud/nmc/5325-file-list-shows-empty-when-switching-between-grid-and-list-view
Nmc/5325 file list shows empty when switching between grid and list view
2 parents 641c7b2 + af1cbf8 commit 7e753c3

1 file changed

Lines changed: 30 additions & 0 deletions

File tree

src/nmcfiles.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,36 @@ if (document.readyState === 'loading') {
245245
setupPendingShare()
246246
}
247247

248+
/** Fixes empty file list when switching between grid and list view. */
249+
function setupGridViewScrollFix(): void {
250+
let filesListEl: Element | null = null
251+
let classObserver: MutationObserver | null = null
252+
253+
const domObserver = new MutationObserver(() => {
254+
const el = document.querySelector('.files-list')
255+
if (!el || el === filesListEl) return
256+
filesListEl = el
257+
258+
let prevIsGrid = el.classList.contains('files-list--grid')
259+
classObserver?.disconnect()
260+
classObserver = new MutationObserver(() => {
261+
const isGrid = el.classList.contains('files-list--grid')
262+
if (isGrid === prevIsGrid) return
263+
prevIsGrid = isGrid
264+
setTimeout(() => el.dispatchEvent(new Event('scroll', { bubbles: true })), 0)
265+
})
266+
classObserver.observe(el, { attributes: true, attributeFilter: ['class'] })
267+
})
268+
269+
domObserver.observe(document.body, { childList: true, subtree: true })
270+
}
271+
272+
if (document.readyState === 'loading') {
273+
document.addEventListener('DOMContentLoaded', setupGridViewScrollFix)
274+
} else {
275+
setupGridViewScrollFix()
276+
}
277+
248278
window.addEventListener('DOMContentLoaded', function() {
249279
const breadcrumb = document.querySelector('.breadcrumb')
250280
const empty = document.querySelector('.files-list__empty')

0 commit comments

Comments
 (0)