Fix some variants and improve a few other things a little bit
[vchess.git] / client / src / components / ContactForm.vue
index 14273b0..f9c5c60 100644 (file)
@@ -1,20 +1,23 @@
 <template lang="pug">
 div
-  input#modalContact.modal(type="checkbox" @change="trySetEnterTime($event)")
-  div(role="dialog" data-checkbox="modalContact")
+  input#modalContact.modal(
+    type="checkbox"
+    @change="trySetEnterTime($event)"
+  )
+  div(
+    role="dialog"
+    data-checkbox="modalContact"
+  )
     .card
       label.modal-close(for="modalContact")
-      form(@submit.prevent="trySendMessage()" @keyup.enter="trySendMessage()")
-        fieldset
-          label(for="userEmail") {{ st.tr["Email"] }}
-          input#userEmail(type="email")
-        fieldset
-          label(for="mailSubject") {{ st.tr["Subject"] }}
-          input#mailSubject(type="text")
-        fieldset
-          label(for="mailContent") {{ st.tr["Content"] }} *
-          br
-          textarea#mailContent
+      fieldset
+        label(for="userEmail") {{ st.tr["Email"] }}
+        input#userEmail(type="email" :value="st.user.email")
+      fieldset
+        label(for="mailSubject") {{ st.tr["Subject"] }}
+        input#mailSubject(type="text")
+      fieldset
+        textarea#mailContent(:placeholder="st.tr['Your message']")
       button(@click="trySendMessage()") {{ st.tr["Send"] }}
       #dialog.text-center {{ st.tr[infoMsg] }}
 </template>
@@ -29,13 +32,12 @@ export default {
     return {
       enterTime: Number.MAX_SAFE_INTEGER, //for a basic anti-bot strategy
       st: store.state,
-      infoMsg: "",
+      infoMsg: ""
     };
   },
   methods: {
     trySetEnterTime: function(event) {
-      if (!!event.target.checked)
-      {
+      if (event.target.checked) {
         this.enterTime = Date.now();
         this.infoMsg = "";
       }
@@ -43,19 +45,22 @@ export default {
     trySendMessage: function() {
       // Basic anti-bot strategy:
       const exitTime = Date.now();
-      if (exitTime - this.enterTime < 5000)
-        return;
+      if (exitTime - this.enterTime < 5000) return;
       let email = document.getElementById("userEmail");
       let subject = document.getElementById("mailSubject");
       let content = document.getElementById("mailContent");
-      const error = checkNameEmail({email: email});
-      if (!!error)
-        return alert(error);
-      if (content.value.trim().length == 0)
-        return alert(this.st.tr["Empty message"]);
-      if (subject.value.trim().length == 0 && !confirm(this.st.tr["No subject. Send anyway?"]))
+      let error = checkNameEmail({ email: email });
+      if (!error && content.value.trim().length == 0)
+        error = this.st.tr["Empty message"];
+      if (error) {
+        alert(error);
+        return;
+      }
+      if (
+        subject.value.trim().length == 0 &&
+        !confirm(this.st.tr["No subject. Send anyway?"])
+      )
         return;
-
       // Message sending:
       ajax(
         "/messages",
@@ -63,7 +68,7 @@ export default {
         {
           email: email.value,
           subject: subject.value,
-          content: content.value,
+          content: content.value
         },
         () => {
           this.infoMsg = "Email sent!";
@@ -71,8 +76,8 @@ export default {
           content.value = "";
         }
       );
-    },
-  },
+    }
+  }
 };
 </script>
 
@@ -80,9 +85,11 @@ export default {
 [type="checkbox"].modal+div .card
   max-width: 767px
   max-height: 100%
+
 textarea#mailContent
   width: 100%
   min-height: 100px
+
 #dialog
   padding: 5px
   color: blue