added styling

This commit is contained in:
gurusabarish
2023-01-16 20:15:05 +05:30
parent 001841d6e6
commit cd85ec46cd
5 changed files with 115 additions and 12 deletions
+3 -1
View File
@@ -339,10 +339,12 @@ params:
# title: "Custom Name" # title: "Custom Name"
content: My inbox is always open. Whether you have a question or just want to say hi, Ill try my best to get back to you! content: My inbox is always open. Whether you have a question or just want to say hi, Ill try my best to get back to you!
email: gurusabarisha@gmail.com email: gurusabarisha@gmail.com
btnName: Mail me
# formspree: # formspree:
# enable: true # `contact.email` value will be ignored # enable: true # `contact.email` value will be ignored
# formId: abcdefgh # Take it from your form's endpoint, like 'https://formspree.io/f/abcdefgh' # formId: abcdefgh # Take it from your form's endpoint, like 'https://formspree.io/f/abcdefgh'
btnName: Mail me # emailCaption: "Enter your email address"
# messageCaption: "Enter your message here"
footer: footer:
recentPosts: recentPosts:
+4
View File
@@ -98,3 +98,7 @@
</script> </script>
{{ end }} {{ end }}
{{ if (.Site.Params.contact.formspree.enable | default false) }}
<script src="/js/contact.js"></script>
{{ end }}
+21 -6
View File
@@ -9,17 +9,19 @@
{{ .Site.Params.contact.content | emojify | markdownify }} {{ .Site.Params.contact.content | emojify | markdownify }}
</div> </div>
{{ if .Site.Params.contact.formspree.enable | default false }} {{ if .Site.Params.contact.formspree.enable | default false }}
<form action="https://formspree.io/f/{{ .Site.Params.contact.formspree.formId }}" method="POST"> <div class="row justify-content-center">
<div class="text-center pt-3"> <form id="contact-form" action="https://formspree.io/f/{{ .Site.Params.contact.formspree.formId }}" onsubmit="handleFormspreeSubmit(event)" method="POST" class="col-md-7">
<input type="email" name="email" required="true" placeholder="{{ .Site.Params.contact.formspree.emailCaption | emojify | default "Your email" }}"> <div class="form-group pt-3">
<input type="email" class="form-control" name="email" required="true" placeholder='{{ .Site.Params.contact.formspree.emailCaption | emojify | default "Enter your email" }}'>
</div> </div>
<div class="text-center pt-3"> <div class="form-group pt-3">
<textarea name="message" required="true" placeholder="{{ .Site.Params.contact.formspree.messageCaption | emojify | default "Your message" }}"></textarea> <textarea class="form-control" name="message" required="true" placeholder='{{ .Site.Params.contact.formspree.messageCaption | emojify | default "Enter your message" }}' rows="3"></textarea>
</div> </div>
<div class="text-center pt-3"> <div class="form-group text-center pt-3">
<button type="submit" class="btn">{{ .Site.Params.contact.btnName | default "Get in Touch" }}</button> <button type="submit" class="btn">{{ .Site.Params.contact.btnName | default "Get in Touch" }}</button>
</div> </div>
</form> </form>
</div>
{{ else if .Site.Params.contact.email }} {{ else if .Site.Params.contact.email }}
<div class="text-center pt-3"> <div class="text-center pt-3">
<a href="mailto:{{ .Site.Params.contact.email }}" class="btn"> <a href="mailto:{{ .Site.Params.contact.email }}" class="btn">
@@ -31,5 +33,18 @@
</div> </div>
</div> </div>
</div> </div>
<div id="contact-form-status"></div>
</section> </section>
{{ end }} {{ end }}
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="check-circle-fill" viewBox="0 0 16 16">
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
</symbol>
<symbol id="info-fill" viewBox="0 0 16 16">
<path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
</symbol>
<symbol id="exclamation-triangle-fill" viewBox="0 0 16 16">
<path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
</symbol>
</svg>
+37
View File
@@ -537,3 +537,40 @@ header .navbar.animate {
#contact .btn:focus { #contact .btn:focus {
box-shadow: none !important; box-shadow: none !important;
} }
#contact form .form-control {
background-color: var(--secondary-color);
color: var(--text-color);
border-radius: .7rem;
border: 1px solid var(--text-secondary-color);
box-shadow: 0px 8px 56px rgb(15 80 100 / 5%);
}
#contact-form-status {
position: fixed;
bottom: 10px;
right: 10px;
z-index: 1;
transform: translate3d(0, 0, 0);
}
#contact-form-status svg {
height: 18px;
width: 18px;
}
#contact-form-status button {
border-radius: 50%;
border: none;
background-color: white;
padding: 0.5rem;
margin-left: 0.5rem;
box-shadow: 0px 8px 56px rgb(15 80 100 / 5%);
font-size: .6rem !important;
}
#contact-form-status .alert {
border-radius: 0.5rem;
box-shadow: 0px 8px 56px rgb(15 80 100 / 5%);
padding: .5rem 1rem;
}
+45
View File
@@ -0,0 +1,45 @@
async function handleFormspreeSubmit(event) {
event.preventDefault();
var form = document.getElementById("contact-form");
var data = new FormData(event.target);
fetch(event.target.action, {
method: form.method,
body: data,
headers: {
Accept: "application/json",
},
})
.then((response) => {
if (response.ok) {
contactAlert("success", "Thanks for your submission!");
form.reset();
} else {
response.json().then((data) => {
var errMessage = data.errors;
for (var i = 0; i < errMessage.length; i++) {
contactAlert("danger", errMessage[i].message);
}
});
}
})
.catch((error) => {
contactAlert("danger", "Oops! There was a problem submitting your form");
});
}
function contactAlert(type, message) {
var contactFormStatus = document.getElementById("contact-form-status");
var alert = `<div class="alert alert-${type} d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" role="img" aria-label="Success:">
<use xlink:href="#check-circle-fill" />
</svg>
<div>${message}</div>
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
</div>`;
contactFormStatus.innerHTML = alert;
// Remove alert after 3 seconds
setTimeout(function () {
contactFormStatus.innerHTML = "";
}, 3000);
}