From d82371947d4d648f23a69e8fc53b3418d3b24e0c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e?= <tpoussard@neogeo.fr>
Date: Tue, 12 Jul 2022 16:06:59 +0200
Subject: [PATCH] add fast form for title

---
 .../Feature/Detail/FeatureHeader.vue          | 38 +++++++++++++++++--
 .../Feature/FeatureEditStatusField.vue        |  9 -----
 src/store/modules/feature.store.js            |  6 ++-
 3 files changed, 40 insertions(+), 13 deletions(-)

diff --git a/src/components/Feature/Detail/FeatureHeader.vue b/src/components/Feature/Detail/FeatureHeader.vue
index c4472199..a8c01877 100644
--- a/src/components/Feature/Detail/FeatureHeader.vue
+++ b/src/components/Feature/Detail/FeatureHeader.vue
@@ -2,7 +2,24 @@
   <div>
     <h1 class="ui header">
       <div class="content">
-        {{ currentFeature.title || currentFeature.feature_id }}
+        <span
+          v-if="fastEditionMode && form"
+          class="form ui half-block"
+        >
+          <input
+            id="feature_detail_title_input"
+            :value="form.title"
+            type="text"
+            required
+            maxlength="128"
+            name="title"
+            @blur="updateStore"
+          >
+        </span>
+        <span v-else>
+          {{ currentFeature.title || currentFeature.feature_id }}
+        </span>
+
         <div class="ui icon right floated compact buttons">
           <router-link
             v-if="displayToListButton"
@@ -140,6 +157,7 @@
 
 import { mapState, mapGetters } from 'vuex';
 
+
 export default {
 
   name: 'FeatureHeader',
@@ -174,9 +192,9 @@ export default {
       'isOnline',
     ]),
     ...mapState('feature', [
-      'currentFeature'
+      'currentFeature',
+      'form',
     ]),
-
     ...mapGetters([
       'permissions',
     ]),
@@ -220,9 +238,14 @@ export default {
         }
       });
     },
+
     saveFastEdition() {
       this.$store.dispatch('feature/SEND_FEATURE', this.$route.name)
         .then(() => console.log('sent'));
+    },
+
+    updateStore(e) {
+      this.$store.commit('feature/UPDATE_FORM_FIELD', { name: 'title', value: e.target.value });
     }
   }
 };
@@ -236,4 +259,13 @@ export default {
   line-height: 0;
   margin-right: 5px;
 }
+.half-block {
+  display: inline-block;
+  width: 50%;
+}
+#feature_detail_title_input {
+  font-weight: bold;
+  font-size: 2em;
+  padding: .25em;
+}
 </style>
\ No newline at end of file
diff --git a/src/components/Feature/FeatureEditStatusField.vue b/src/components/Feature/FeatureEditStatusField.vue
index 27b4f30c..19661d36 100644
--- a/src/components/Feature/FeatureEditStatusField.vue
+++ b/src/components/Feature/FeatureEditStatusField.vue
@@ -64,14 +64,5 @@ export default {
       return [];
     },
   },
-
-  mounted() {
-    console.log('selectedStatus', this.selectedStatus);
-    
-  },
-
-  methods: {
-  }
-
 };
 </script>
\ No newline at end of file
diff --git a/src/store/modules/feature.store.js b/src/store/modules/feature.store.js
index ef76b951..cf961e8e 100644
--- a/src/store/modules/feature.store.js
+++ b/src/store/modules/feature.store.js
@@ -40,7 +40,11 @@ const feature = {
       };
     },
     UPDATE_FORM_FIELD(state, field) {
-      state.form[field.name].value = field.value;
+      if (state.form[field.name].value) {
+        state.form[field.name].value = field.value;
+      } else {
+        state.form[field.name] = field.value;
+      }
     },
     UPDATE_EXTRA_FORM(state, extra_form) {
       const index = state.extra_forms.findIndex(el => el.label === extra_form.label);
-- 
GitLab