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 @@