diff --git a/package-lock.json b/package-lock.json
index 78c0102..881b2d9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17297,6 +17297,11 @@
"react-side-effect": "^2.1.0"
}
},
+ "react-hook-form": {
+ "version": "6.0.8",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-6.0.8.tgz",
+ "integrity": "sha512-lf1TTuRuqHkYJqDtNIgDu9Rk7euKWkFaG2+XZ3FSkngiFWR72Lj96/FeSGF+ZMylCLdCFq2F059kzucVKWvDiQ=="
+ },
"react-hot-loader": {
"version": "4.12.21",
"resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.12.21.tgz",
diff --git a/package.json b/package.json
index 8aa18a0..87f7648 100644
--- a/package.json
+++ b/package.json
@@ -46,7 +46,8 @@
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-flexbox-grid": "^2.1.2",
- "react-helmet": "^6.1.0"
+ "react-helmet": "^6.1.0",
+ "react-hook-form": "^6.0.8"
},
"devDependencies": {
"prettier": "2.0.5"
diff --git a/src/components/Articles/ArticleCard/ArticleCard.js b/src/components/Articles/ArticleCard/ArticleCard.js
index 10b1eea..b074df5 100644
--- a/src/components/Articles/ArticleCard/ArticleCard.js
+++ b/src/components/Articles/ArticleCard/ArticleCard.js
@@ -30,7 +30,7 @@ const ArticleCard = ({
{tags.map((tag, i) => (
- -
+
-
{tag}
))}
diff --git a/src/components/Articles/ArticleCard/ArticleCard.scss b/src/components/Articles/ArticleCard/ArticleCard.scss
index cd9663c..5da5c27 100644
--- a/src/components/Articles/ArticleCard/ArticleCard.scss
+++ b/src/components/Articles/ArticleCard/ArticleCard.scss
@@ -34,18 +34,6 @@
& li {
margin-right: 5px;
margin-bottom: 15px;
- & a {
- padding: 5px 10px;
- background: #EBF1FE;
- text-decoration: none;
- border-radius: 4px;
- font-size: 14px;
- transition: all .1s;
- &:hover {
- background: #d8e3fd;
- color: #3972f4;
- }
- }
}
}
}
diff --git a/src/components/Contacts/Contacts.scss b/src/components/Contacts/Contacts.scss
index 4bcfeeb..5f7270e 100644
--- a/src/components/Contacts/Contacts.scss
+++ b/src/components/Contacts/Contacts.scss
@@ -22,6 +22,7 @@
}
}
& .contacts-submitted {
+ min-height: 290px;
margin-bottom: 30px;
& h2 {
margin-bottom: 10px;
@@ -40,11 +41,18 @@
margin-bottom: 30px;
}
& form {
+ & .error-info {
+ text-align: left;
+ margin-bottom: 15px;
+ color: #df4e4e;
+ }
+ & .error-field {
+ border: 1px solid #ff3737;
+ }
& .form-content {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
- padding: 0 20px;
}
& input {
margin-bottom: 10px;
diff --git a/src/components/Contacts/ContactsForm/ContactsForm.js b/src/components/Contacts/ContactsForm/ContactsForm.js
index 0b087f4..95f9769 100644
--- a/src/components/Contacts/ContactsForm/ContactsForm.js
+++ b/src/components/Contacts/ContactsForm/ContactsForm.js
@@ -1,4 +1,5 @@
import React from "react"
+import { useForm } from "react-hook-form"
function encode(data) {
return Object.keys(data)
@@ -7,6 +8,7 @@ function encode(data) {
}
const ContactsFrom = () => {
+ const { register, handleSubmit, errors } = useForm()
const [state, setState] = React.useState({})
const [submitted, setSubmitted] = React.useState(false)
const [error, setError] = React.useState(false)
@@ -15,18 +17,19 @@ const ContactsFrom = () => {
setState({ ...state, [e.target.name]: e.target.value })
}
- const handleSubmit = e => {
- e.preventDefault()
- const form = e.target
+ const onSubmit = () => {
fetch("/", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: encode({
- "form-name": form.getAttribute("name"),
+ "form-name": "contact",
...state,
}),
})
- .then(() => setSubmitted(true))
+ .then(() => {
+ setSubmitted(true)
+ setState({})
+ })
.catch(error => {
console.error(error)
setError(true)
@@ -72,40 +75,59 @@ const ContactsFrom = () => {