Skip to content

Commit

Permalink
Merge pull request #46917 from nextcloud/fix/add-missing-empty-content
Browse files Browse the repository at this point in the history
fix(files): Add missing `emptyView` handling
  • Loading branch information
skjnldsv authored Jul 31, 2024
2 parents c8c84e6 + f570507 commit a5770a5
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 29 deletions.
80 changes: 54 additions & 26 deletions apps/files/src/views/FilesList.vue
Original file line number Diff line number Diff line change
Expand Up @@ -74,32 +74,37 @@
:name="t('files', 'Loading current folder')" />

<!-- Empty content placeholder -->
<NcEmptyContent v-else-if="!loading && isEmptyDir"
:name="currentView?.emptyTitle || t('files', 'No files in here')"
:description="currentView?.emptyCaption || t('files', 'Upload some content or sync with your devices!')"
data-cy-files-content-empty>
<template v-if="directory !== '/'" #action>
<!-- Uploader -->
<UploadPicker v-if="currentFolder && canUpload && !isQuotaExceeded"
allow-folders
class="files-list__header-upload-button"
:content="getContent"
:destination="currentFolder"
:forbidden-characters="forbiddenCharacters"
multiple
@failed="onUploadFail"
@uploaded="onUpload" />
<NcButton v-else
:aria-label="t('files', 'Go to the previous folder')"
:to="toPreviousDir"
type="primary">
{{ t('files', 'Go back') }}
</NcButton>
</template>
<template #icon>
<NcIconSvgWrapper :svg="currentView.icon" />
</template>
</NcEmptyContent>
<template v-else-if="!loading && isEmptyDir">
<div v-if="currentView?.emptyView" class="files-list__empty-view-wrapper">
<div ref="customEmptyView" />
</div>
<NcEmptyContent v-else
:name="currentView?.emptyTitle || t('files', 'No files in here')"
:description="currentView?.emptyCaption || t('files', 'Upload some content or sync with your devices!')"
data-cy-files-content-empty>
<template v-if="directory !== '/'" #action>
<!-- Uploader -->
<UploadPicker v-if="currentFolder && canUpload && !isQuotaExceeded"
allow-folders
class="files-list__header-upload-button"
:content="getContent"
:destination="currentFolder"
:forbidden-characters="forbiddenCharacters"
multiple
@failed="onUploadFail"
@uploaded="onUpload" />
<NcButton v-else
:aria-label="t('files', 'Go to the previous folder')"
:to="toPreviousDir"
type="primary">
{{ t('files', 'Go back') }}
</NcButton>
</template>
<template #icon>
<NcIconSvgWrapper :svg="currentView.icon" />
</template>
</NcEmptyContent>
</template>

<!-- File list -->
<FilesListVirtual v-else
Expand Down Expand Up @@ -391,9 +396,27 @@ export default defineComponent({
filtersChanged() {
return this.filtersStore.filtersChanged
},

showCustomEmptyView() {
return !this.loading && this.isEmptyDir && this.currentView?.emptyView !== undefined
}
},

watch: {
/**
* Handle rendering the custom empty view
* @param show The current state if the custom empty view should be rendered
*/
showCustomEmptyView(show: boolean) {
if (show) {
this.$nextTick(() => {
const el = this.$refs.customEmptyView as HTMLDivElement
// We can cast here because "showCustomEmptyView" assets that current view is set
this.currentView!.emptyView!(el)
})
}
},

currentView(newView, oldView) {
if (newView?.id === oldView?.id) {
return
Expand Down Expand Up @@ -679,6 +702,11 @@ export default defineComponent({
}
}

&__empty-view-wrapper {
display: flex;
height: 100%;
}

&__refresh-icon {
flex: 0 0 44px;
width: 44px;
Expand Down
4 changes: 2 additions & 2 deletions dist/files-main.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/files-main.js.map

Large diffs are not rendered by default.

0 comments on commit a5770a5

Please sign in to comment.