From 55a3d2b1d312af449237b1eed55b1b7f48b937b1 Mon Sep 17 00:00:00 2001
From: Thomas Citharel <tcit@tcit.fr>
Date: Mon, 14 Jun 2021 15:40:30 +0200
Subject: [PATCH] Add pagination to resource mover modal as well

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
---
 .../components/Resource/ResourceSelector.vue  | 51 +++++++++++++++----
 1 file changed, 40 insertions(+), 11 deletions(-)

diff --git a/js/src/components/Resource/ResourceSelector.vue b/js/src/components/Resource/ResourceSelector.vue
index 818a90f10..e1aa4acde 100644
--- a/js/src/components/Resource/ResourceSelector.vue
+++ b/js/src/components/Resource/ResourceSelector.vue
@@ -58,18 +58,34 @@
       >
         {{ $t("No resources in this folder") }}
       </p>
+      <b-pagination
+        v-if="resource.children.total > RESOURCES_PER_PAGE"
+        :total="resource.children.total"
+        v-model="page"
+        size="is-small"
+        :per-page="RESOURCES_PER_PAGE"
+        :aria-next-label="$t('Next page')"
+        :aria-previous-label="$t('Previous page')"
+        :aria-page-label="$t('Page')"
+        :aria-current-label="$t('Current page')"
+      />
     </article>
-    <b-button
-      type="is-primary"
-      @click="updateResource"
-      :disabled="moveDisabled"
-      >{{
-        $t("Move resource to {folder}", { folder: resource.title })
-      }}</b-button
-    >
-    <b-button type="is-text" @click="$emit('close-move-modal')">{{
-      $t("Cancel")
-    }}</b-button>
+    <div class="buttons">
+      <b-button type="is-text" @click="$emit('close-move-modal')">{{
+        $t("Cancel")
+      }}</b-button>
+      <b-button
+        type="is-primary"
+        @click="updateResource"
+        :disabled="moveDisabled"
+        ><template v-if="resource.path === '/'">
+          {{ $t("Move resource to the root folder") }}
+        </template>
+        <template v-else
+          >{{ $t("Move resource to {folder}", { folder: resource.title }) }}
+        </template></b-button
+      >
+    </div>
   </div>
 </template>
 <script lang="ts">
@@ -86,6 +102,8 @@ import { IResource } from "../../types/resource";
           return {
             path: this.resource.path,
             username: this.username,
+            page: this.page,
+            limit: this.RESOURCES_PER_PAGE,
           };
         }
         return { path: "/", username: this.username };
@@ -103,6 +121,10 @@ export default class ResourceSelector extends Vue {
 
   resource: IResource | undefined = this.initialResource.parent;
 
+  RESOURCES_PER_PAGE = 10;
+
+  page = 1;
+
   goDown(element: IResource): void {
     if (element.type === "folder" && element.id !== this.initialResource.id) {
       this.resource = element;
@@ -150,4 +172,11 @@ export default class ResourceSelector extends Vue {
     color: #fff;
   }
 }
+.buttons {
+  justify-content: flex-end;
+}
+
+nav.pagination {
+  margin: 0.5rem;
+}
 </style>