fix(files): Do not split filename into base and extension for folders

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2024-07-22 17:54:54 +02:00
parent f95d8263f6
commit 5dc8e06014
No known key found for this signature in database
GPG key ID: 45FAE7268762B400
4 changed files with 35 additions and 17 deletions

View file

@ -34,7 +34,7 @@
@click.native="execDefaultAction" />
<FileEntryName ref="name"
:display-name="displayName"
:basename="basename"
:extension="extension"
:files-list-width="filesListWidth"
:nodes="nodes"

View file

@ -29,8 +29,8 @@
v-bind="linkTo.params">
<!-- File name -->
<span class="files-list__row-name-text">
<!-- Keep the displayName stuck to the extension to avoid whitespace rendering issues-->
<span class="files-list__row-name-" v-text="displayName" />
<!-- Keep the filename stuck to the extension to avoid whitespace rendering issues-->
<span class="files-list__row-name-" v-text="basename" />
<span class="files-list__row-name-ext" v-text="extension" />
</span>
</component>
@ -64,10 +64,16 @@ export default defineComponent({
},
props: {
displayName: {
/**
* The filename without extension
*/
basename: {
type: String,
required: true,
},
/**
* The extension of the filename
*/
extension: {
type: String,
required: true,
@ -155,7 +161,7 @@ export default defineComponent({
params: {
download: this.source.basename,
href: this.source.source,
title: t('files', 'Download file {name}', { name: this.displayName }),
title: t('files', 'Download file {name}', { name: `${this.basename}${this.extension}` }),
tabindex: '0',
},
}

View file

@ -36,7 +36,7 @@
@click.native="execDefaultAction" />
<FileEntryName ref="name"
:display-name="displayName"
:basename="basename"
:extension="extension"
:files-list-width="filesListWidth"
:grid-mode="true"

View file

@ -74,19 +74,31 @@ export default defineComponent({
return this.source.status === NodeStatus.LOADING
},
extension() {
if (this.source.attributes?.displayname) {
return extname(this.source.attributes.displayname)
}
return this.source.extension || ''
},
/**
* The display name of the current node
* Either the nodes filename or a custom display name (e.g. for shares)
*/
displayName() {
const ext = this.extension
const name = String(this.source.attributes.displayname
|| this.source.basename)
return this.source.displayname
},
/**
* The display name without extension
*/
basename() {
if (this.extension === '') {
return this.displayName
}
return this.displayName.slice(0, 0 - this.extension.length)
},
/**
* The extension of the file
*/
extension() {
if (this.source.type === FileType.Folder) {
return ''
}
// Strip extension from name if defined
return !ext ? name : name.slice(0, 0 - ext.length)
return extname(this.displayName)
},
draggingFiles() {