diff options
author | Christopher Ng <chrng8@gmail.com> | 2024-01-18 14:25:53 -0800 |
---|---|---|
committer | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2024-01-20 12:23:51 +0100 |
commit | 1b0eb2bebd6998b2ebfb8ed177640ea5329bd4ca (patch) | |
tree | fa09f59e8e45ea446d2f3a8669b654a3d17d8e50 /apps/files | |
parent | 6f1393d34bd15e22519d3b9e03e2f0d62f2ec823 (diff) | |
download | nextcloud-server-1b0eb2bebd6998b2ebfb8ed177640ea5329bd4ca.tar.gz nextcloud-server-1b0eb2bebd6998b2ebfb8ed177640ea5329bd4ca.zip |
fix(files): Fix checkbox state semantics
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Diffstat (limited to 'apps/files')
-rw-r--r-- | apps/files/src/components/FileEntry.vue | 6 | ||||
-rw-r--r-- | apps/files/src/components/FileEntry/FileEntryCheckbox.vue | 20 | ||||
-rw-r--r-- | apps/files/src/components/FileEntryGrid.vue | 6 | ||||
-rw-r--r-- | apps/files/src/components/FilesListTableHeader.vue | 8 |
4 files changed, 23 insertions, 17 deletions
diff --git a/apps/files/src/components/FileEntry.vue b/apps/files/src/components/FileEntry.vue index de598657ac7..8b4c7b71ef9 100644 --- a/apps/files/src/components/FileEntry.vue +++ b/apps/files/src/components/FileEntry.vue @@ -32,10 +32,10 @@ <span v-if="source.attributes.failed" class="files-list__row--failed" /> <!-- Checkbox --> - <FileEntryCheckbox :display-name="displayName" - :fileid="fileid" + <FileEntryCheckbox :fileid="fileid" :is-loading="isLoading" - :nodes="nodes" /> + :nodes="nodes" + :source="source" /> <!-- Link to file --> <td class="files-list__row-name" data-cy-files-list-row-name> diff --git a/apps/files/src/components/FileEntry/FileEntryCheckbox.vue b/apps/files/src/components/FileEntry/FileEntryCheckbox.vue index ff88b461737..bb851ed1e0e 100644 --- a/apps/files/src/components/FileEntry/FileEntryCheckbox.vue +++ b/apps/files/src/components/FileEntry/FileEntryCheckbox.vue @@ -24,14 +24,14 @@ @keyup.esc.exact="resetSelection"> <NcLoadingIcon v-if="isLoading" /> <NcCheckboxRadioSwitch v-else - :aria-label="t('files', 'Select the row for {displayName}', { displayName })" + :aria-label="ariaLabel" :checked="isSelected" @update:checked="onSelectionChange" /> </td> </template> <script lang="ts"> -import { Node } from '@nextcloud/files' +import { Node, FileType } from '@nextcloud/files' import { translate as t } from '@nextcloud/l10n' import Vue, { PropType } from 'vue' @@ -51,10 +51,6 @@ export default Vue.extend({ }, props: { - displayName: { - type: String, - required: true, - }, fileid: { type: String, required: true, @@ -67,6 +63,10 @@ export default Vue.extend({ type: Array as PropType<Node[]>, required: true, }, + source: { + type: Object as PropType<Node>, + required: true, + }, }, setup() { @@ -88,6 +88,14 @@ export default Vue.extend({ index() { return this.nodes.findIndex((node: Node) => node.fileid === parseInt(this.fileid)) }, + isFile() { + return this.source.type === FileType.File + }, + ariaLabel() { + return this.isFile + ? t('files', 'Toggle selection for file "{displayName}"', { displayName: this.source.basename }) + : t('files', 'Toggle selection for folder "{displayName}"', { displayName: this.source.basename }) + }, }, methods: { diff --git a/apps/files/src/components/FileEntryGrid.vue b/apps/files/src/components/FileEntryGrid.vue index a43f9c98b75..99fd45813ed 100644 --- a/apps/files/src/components/FileEntryGrid.vue +++ b/apps/files/src/components/FileEntryGrid.vue @@ -37,10 +37,10 @@ <span v-if="source.attributes.failed" class="files-list__row--failed" /> <!-- Checkbox --> - <FileEntryCheckbox :display-name="displayName" - :fileid="fileid" + <FileEntryCheckbox :fileid="fileid" :is-loading="isLoading" - :nodes="nodes" /> + :nodes="nodes" + :source="source" /> <!-- Link to file --> <td class="files-list__row-name" data-cy-files-list-row-name> diff --git a/apps/files/src/components/FilesListTableHeader.vue b/apps/files/src/components/FilesListTableHeader.vue index c679b2068c1..148ce3bc4e5 100644 --- a/apps/files/src/components/FilesListTableHeader.vue +++ b/apps/files/src/components/FilesListTableHeader.vue @@ -71,7 +71,7 @@ </template> <script lang="ts"> -import { translate } from '@nextcloud/l10n' +import { translate as t } from '@nextcloud/l10n' import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js' import Vue from 'vue' @@ -142,9 +142,7 @@ export default Vue.extend({ }, selectAllBind() { - const label = this.isNoneSelected || this.isSomeSelected - ? this.t('files', 'Select all') - : this.t('files', 'Unselect all') + const label = t('files', 'Toggle selection for all files and folders') return { 'aria-label': label, checked: this.isAllSelected, @@ -203,7 +201,7 @@ export default Vue.extend({ this.selectionStore.reset() }, - t: translate, + t, }, }) </script> |