added styling
This commit is contained in:
@@ -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, I’ll 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, I’ll 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:
|
||||||
|
|||||||
@@ -98,3 +98,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
{{ if (.Site.Params.contact.formspree.enable | default false) }}
|
||||||
|
<script src="/js/contact.js"></script>
|
||||||
|
{{ end }}
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user