3 input#modalContact.modal(type="checkbox" @change="trySetEnterTime($event)")
4 div(role="dialog" data-checkbox="modalContact")
6 label.modal-close(for="modalContact")
7 h3.section {{ st.tr["Contact form"] }}
8 form(@submit.prevent="trySendMessage()" @keyup.enter="trySendMessage()")
10 label(for="userEmail") {{ st.tr["Email"] }}
11 input#userEmail(type="email")
13 label(for="mailSubject") {{ st.tr["Subject"] }}
14 input#mailSubject(type="text")
16 label(for="mailContent") {{ st.tr["Content"] }} *
19 button(@click="trySendMessage()") {{ st.tr["Send"] }}
20 #dialog.text-center {{ st.tr[infoMsg] }}
24 import { ajax } from "../utils/ajax";
25 import { store } from "@/store";
26 import { checkNameEmail } from "@/data/userCheck";
28 name: "my-contact-form",
31 enterTime: Number.MAX_SAFE_INTEGER, //for a basic anti-bot strategy
37 trySetEnterTime: function(event) {
38 if (!!event.target.checked)
40 this.enterTime = Date.now();
44 trySendMessage: function() {
45 // Basic anti-bot strategy:
46 const exitTime = Date.now();
47 if (exitTime - this.enterTime < 5000)
49 let email = document.getElementById("userEmail");
50 let subject = document.getElementById("mailSubject");
51 let content = document.getElementById("mailContent");
52 const error = checkNameEmail({email: email});
55 if (content.value.trim().length == 0)
56 return alert(this.st.tr["Empty message"]);
57 if (subject.value.trim().length == 0 && !confirm(this.st.tr["No subject. Send anyway?"]))
66 subject: subject.value,
67 content: content.value,
70 this.infoMsg = "Email sent!";
80 <style lang="sass" scoped>
81 [type="checkbox"].modal+div .card