Skip to content

Commit

Permalink
fix(files): Add missing emptyView handling
Browse files Browse the repository at this point in the history
The interface provides this option but it was never implemented.
This feature of being able to render a custom empty view message is needed
for public file drops to properly show the terms of service.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
  • Loading branch information
susnux committed Jul 30, 2024
1 parent ca01ec1 commit 5ba308d
Showing 1 changed file with 54 additions and 26 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 @@ -398,9 +403,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 @@ -691,6 +714,11 @@ export default defineComponent({
}
}
&__empty-view-wrapper {
display: flex;
height: 100%;
}
&__refresh-icon {
flex: 0 0 44px;
width: 44px;
Expand Down

0 comments on commit 5ba308d

Please sign in to comment.