diff --git a/packages/web-app-files/src/components/AppBar/ViewOptions.vue b/packages/web-app-files/src/components/AppBar/ViewOptions.vue
index 980f4102c85..37128cb9874 100644
--- a/packages/web-app-files/src/components/AppBar/ViewOptions.vue
+++ b/packages/web-app-files/src/components/AppBar/ViewOptions.vue
@@ -29,7 +29,7 @@
import { mapMutations, mapState } from 'vuex'
-import MixinFilesListPagination from '../../mixins/filesListPagination'
-
export default {
- mixins: [MixinFilesListPagination],
-
computed: {
- ...mapState('Files', ['areHiddenFilesShown']),
+ ...mapState('Files', ['areHiddenFilesShown', 'filesPageLimit']),
viewButtonAriaLabel() {
return this.$gettext('Display customization options of the files list')
@@ -64,11 +60,43 @@ export default {
set(value) {
this.SET_HIDDEN_FILES_VISIBILITY(value)
}
+ },
+
+ pageItemsLimit: {
+ get() {
+ return this.filesPageLimit
+ },
+
+ set(value) {
+ this.updateQuery(value)
+ }
+ }
+ },
+
+ watch: {
+ $route: {
+ handler(route) {
+ if (Object.prototype.hasOwnProperty.call(route.query, 'items-limit')) {
+ this.SET_FILES_PAGE_LIMIT(route.query['items-limit'])
+
+ return
+ }
+
+ this.updateQuery()
+ },
+ immediate: true
}
},
methods: {
- ...mapMutations('Files', ['SET_HIDDEN_FILES_VISIBILITY'])
+ ...mapMutations('Files', ['SET_HIDDEN_FILES_VISIBILITY', 'SET_FILES_PAGE_LIMIT']),
+
+ updateQuery(limit = this.pageItemsLimit) {
+ const query = { ...this.$route.query, 'items-limit': limit }
+
+ this.SET_FILES_PAGE_LIMIT(limit)
+ this.$router.replace({ query }).catch(() => {})
+ }
}
}
diff --git a/packages/web-app-files/src/components/FilesList/Pagination.vue b/packages/web-app-files/src/components/FilesList/Pagination.vue
index 81995ad82e0..b39b27b2be3 100644
--- a/packages/web-app-files/src/components/FilesList/Pagination.vue
+++ b/packages/web-app-files/src/components/FilesList/Pagination.vue
@@ -4,7 +4,7 @@
:pages="pages"
:current-page="currentPage"
:max-displayed="3"
- :current-route="$_filesListPagination_targetRoute"
+ :current-route="targetRoute"
class="files-pagination uk-flex uk-flex-center oc-my-s"
/>
@@ -12,20 +12,13 @@