89 lines
2.2 KiB
JavaScript
89 lines
2.2 KiB
JavaScript
import Prism from './prism'
|
|
|
|
import './prism.css'
|
|
import './style.css'
|
|
|
|
window.displayMailChimpStatus = function (data) {
|
|
if (!data.result || !data.msg) return
|
|
|
|
const mcStatus = document.querySelector('.mc-status')
|
|
|
|
if (!mcStatus) return
|
|
|
|
mcStatus.innerHTML = data.msg
|
|
|
|
mcStatus.focus()
|
|
|
|
mcStatus.classList.remove('hidden')
|
|
|
|
if (data.result === 'error') {
|
|
mcStatus.classList.remove('mc-success')
|
|
mcStatus.classList.add('mc-error')
|
|
return;
|
|
}
|
|
|
|
mcStatus.classList.remove('mc-error')
|
|
mcStatus.classList.add('mc-success')
|
|
}
|
|
|
|
const serialize = function (form) {
|
|
let serialized = ''
|
|
|
|
for (let i = 0; i < form.elements.length; i++) {
|
|
|
|
const field = form.elements[i]
|
|
|
|
if (!field.name || field.disabled || field.type === 'file' || field.type === 'reset' || field.type === 'submit' || field.type === 'button') continue
|
|
|
|
if ((field.type !== 'checkbox' && field.type !== 'radio') || field.checked) {
|
|
serialized += '&' + encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value)
|
|
}
|
|
}
|
|
|
|
return serialized;
|
|
}
|
|
|
|
const submitMailChimpForm = function (form) {
|
|
let url = form.getAttribute('action')
|
|
url = url.replace('/post?u=', '/post-json?u=')
|
|
url += serialize(form) + '&c=displayMailChimpStatus'
|
|
|
|
const script = window.document.createElement('script')
|
|
script.src = url
|
|
|
|
const ref = window.document.getElementsByTagName('script')[0]
|
|
ref.parentNode.insertBefore(script, ref)
|
|
|
|
script.onload = function () {
|
|
this.remove()
|
|
}
|
|
}
|
|
|
|
document.addEventListener('submit', function (event) {
|
|
if (!event.target.classList.contains('validate')) return
|
|
|
|
event.preventDefault()
|
|
|
|
submitMailChimpForm(event.target)
|
|
|
|
}, false)
|
|
|
|
window.toggleMenu = function () {
|
|
const menu = document.querySelector('.menu')
|
|
const menuOpen = document.querySelector('.menu-open')
|
|
const menuClose = document.querySelector('.menu-close')
|
|
|
|
if (!menu || !menuOpen || !menuClose) return
|
|
|
|
const isOpen = !menu.classList.contains('hidden')
|
|
|
|
if (isOpen) {
|
|
menu.classList.add('hidden')
|
|
menuOpen.classList.remove('hidden')
|
|
menuClose.classList.add('hidden')
|
|
} else {
|
|
menu.classList.remove('hidden')
|
|
menuOpen.classList.add('hidden')
|
|
menuClose.classList.remove('hidden')
|
|
}
|
|
} |