diff options
author | Christopher Ng <chrng8@gmail.com> | 2024-01-18 14:25:53 -0800 |
---|---|---|
committer | Ferdinand Thiessen <opensource@fthiessen.de> | 2024-01-21 01:13:56 +0100 |
commit | fad87c58a74ccb95460b7e1e3e3c8df0d55ee8a7 (patch) | |
tree | e47dd15c190d33f2c0d79003c516daef5c585de8 /apps/files | |
parent | 3c6fc685617a33e3183b0c1612d72513964bb585 (diff) | |
download | nextcloud-server-fad87c58a74ccb95460b7e1e3e3c8df0d55ee8a7.tar.gz nextcloud-server-fad87c58a74ccb95460b7e1e3e3c8df0d55ee8a7.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> |