From 2bd8ec143e46254b5b0249ce501a4d2e5a67ce0d Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Mon, 29 Jun 2026 16:34:28 +0200 Subject: [PATCH 1/2] fix(files): proper accessible row name and title for overflow - resolves https://github.com/nextcloud/server/issues/59203 - resolves https://github.com/nextcloud/server/issues/56611 In the files list before this the accessible name of the button (default action) was overridden to the default action display name. But this causes problem for screen readers because then the whole table row is just called "view" or "download" instead of using the inner text (e.g. "filename.txt"). This fixes it to rename it `ACTION: FILENAME` instead. Also when long names were truncated there were no useful title (tooltip) for it, so it was not possible to get the real name. This is fixed by always provide a proper tooltip including the full name. Signed-off-by: Ferdinand Thiessen --- apps/files/src/components/FileEntry/FileEntryName.vue | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/files/src/components/FileEntry/FileEntryName.vue b/apps/files/src/components/FileEntry/FileEntryName.vue index ef7bd66b108b6..554d29aadd73a 100644 --- a/apps/files/src/components/FileEntry/FileEntryName.vue +++ b/apps/files/src/components/FileEntry/FileEntryName.vue @@ -136,7 +136,7 @@ export default defineComponent({ return { is: 'span', params: { - title: t('files', 'This node is unavailable'), + title: this.source.displayname + ` (${t('files', 'unavailable')})`, }, } } @@ -148,11 +148,12 @@ export default defineComponent({ folder: this.activeFolder!, contents: [], }) + const accessibleName = `${displayName}: ${this.source.displayname}` return { is: 'button', params: { - 'aria-label': displayName, - title: displayName, + 'aria-label': accessibleName, + title: accessibleName, tabindex: '0', }, } From 19b3ba7a2ac9241f3229a8080f30908454950eb1 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 30 Jun 2026 17:24:11 +0200 Subject: [PATCH 2/2] chore: use full translation string MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: John Molakvoæ Signed-off-by: Ferdinand Thiessen --- apps/files/src/components/FileEntry/FileEntryName.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/files/src/components/FileEntry/FileEntryName.vue b/apps/files/src/components/FileEntry/FileEntryName.vue index 554d29aadd73a..62288911edb57 100644 --- a/apps/files/src/components/FileEntry/FileEntryName.vue +++ b/apps/files/src/components/FileEntry/FileEntryName.vue @@ -136,7 +136,7 @@ export default defineComponent({ return { is: 'span', params: { - title: this.source.displayname + ` (${t('files', 'unavailable')})`, + title: t('files', '{displayName} (unavailable)', { displayName: this.source.displayname }), }, } }