From 4f013fc5d65e96a7b45926c6a0ad3870c28e1b1d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20G=C3=B6bel?= <dgoebel@techfak.uni-bielefeld.de>
Date: Fri, 18 Nov 2022 14:25:58 +0100
Subject: [PATCH] Remove trim function from v-model to allow input validation
 of bucket

#7
---
 src/components/Modals/BucketDetailModal.vue | 2 +-
 src/components/Modals/CreateBucketModal.vue | 8 +++++---
 src/views/object-storage/BucketsView.vue    | 3 +++
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/components/Modals/BucketDetailModal.vue b/src/components/Modals/BucketDetailModal.vue
index 31b7184..6d0a510 100644
--- a/src/components/Modals/BucketDetailModal.vue
+++ b/src/components/Modals/BucketDetailModal.vue
@@ -48,7 +48,7 @@ const props = defineProps<{
             </tr>
             <tr>
               <th scope="row">Description</th>
-              <td>{{ props.bucket.description }}</td>
+              <td class="text-break">{{ props.bucket.description }}</td>
             </tr>
           </tbody>
         </table>
diff --git a/src/components/Modals/CreateBucketModal.vue b/src/components/Modals/CreateBucketModal.vue
index e173a4b..2e9dec8 100644
--- a/src/components/Modals/CreateBucketModal.vue
+++ b/src/components/Modals/CreateBucketModal.vue
@@ -34,6 +34,8 @@ function createBucket() {
   // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
   const form = document.getElementById("bucketCreateForm")! as HTMLFormElement;
   formState.bucketNameTaken = false;
+  bucket.description = bucket.description.trim();
+  bucket.name = bucket.name.trim();
   if (form.checkValidity()) {
     formState.loading = true;
     BucketService.bucketCreateBucket(bucket)
@@ -94,7 +96,7 @@ function modalClosed() {
               minlength="3"
               maxlength="63"
               pattern="(?!(^((2(5[0-5]|[0-4]\d)|[01]?\d{1,2})\.){3}(2(5[0-5]|[0-4]\d)|[01]?\d{1,2})$))^[a-z\d][a-z\d.-]{1,61}[a-z\d]$"
-              v-model.trim="bucket.name"
+              v-model="bucket.name"
             />
             <div class="invalid-feedback">
               Requirements
@@ -109,7 +111,7 @@ function modalClosed() {
         </div>
         <div class="mb-3">
           <label for="bucketDescriptionInput" class="form-label">
-            Description
+            Description {{ bucket.description.length }} / 126
           </label>
           <div class="input-group">
             <textarea
@@ -119,7 +121,7 @@ function modalClosed() {
               rows="5"
               minlength="126"
               maxlength="65536"
-              v-model.trim="bucket.description"
+              v-model="bucket.description"
               placeholder="Describe the purpose of the bucket"
             ></textarea>
             <div class="invalid-feedback">
diff --git a/src/views/object-storage/BucketsView.vue b/src/views/object-storage/BucketsView.vue
index 93d000e..572e517 100644
--- a/src/views/object-storage/BucketsView.vue
+++ b/src/views/object-storage/BucketsView.vue
@@ -74,6 +74,9 @@ const filteredBuckets: ComputedRef<BucketOut[]> = computed(() => {
 
 function addBucket(bucket: BucketOut) {
   bucketsState.buckets.push(bucket);
+  bucketsState.buckets.sort((bucketA, bucketB) =>
+    bucketA.name >= bucketB.name ? 1 : -1
+  );
 }
 
 function deleteBucket(bucketName: string) {
-- 
GitLab