doesitarm/components/email-subscribe.vue
2020-11-09 14:27:46 -06:00

129 lines
4 KiB
Vue

<template>
<div>
<div
v-if="feedbackMessage === null"
>
<form
class="email-subscribe text-xs relative"
@submit.prevent="trySubmit"
>
<label
v-show="isFocused"
for="email-subscribe"
class="block font-medium absolute"
style="top: -2em;"
>Email</label>
<div class="mt-1 relative rounded-md shadow-sm">
<div
v-show="isFocused"
class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"
>
<!-- Heroicon name: mail -->
<svg
class="h-5 w-5 text-gray-500"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 20 20"
fill="currentColor"
>
<path d="M2.003 5.884L10 9.882l7.997-3.998A2 2 0 0016 4H4a2 2 0 00-1.997 1.884z" />
<path d="M18 8.118l-8 4-8-4V14a2 2 0 002 2h12a2 2 0 002-2V8.118z" />
</svg>
</div>
<input
id="email-subscribe"
v-model="email"
:class="[
'form-input block w-full rounded-md bg-darker neumorphic-shadow py-1',
isFocused ? 'pl-10' : 'placeholder-white text-center border border-transparent px-3'
]"
:placeholder="isFocused ? 'me@email.com' : 'Tell me when this changes'"
style="width: 230px;"
type="email"
required
@focus="isFocused = true"
@blur="isFocused = false"
>
</div>
</form>
</div>
<div
v-show="feedbackMessage"
class="text-center p-4"
>
{{ feedbackMessage }}
</div>
</div>
</template>
<script>
import axios from 'axios'
export default {
props: {
appName: {
type: String,
required: true
},
notes: {
type: String,
default: ''
}
},
data: function () {
return {
email: '',
isFocused: false,
feedbackMessage: null,
}
},
methods: {
async trySubmit () {
console.log('Trying submit')
// Set intermediate message
this.feedbackMessage = 'Sending...'
const formActionUrl = `https://docs.google.com/forms/d/e/1FAIpQLSdWUAVabT3i1ExfnPgRKnk-s-aWLlOuy0d5JjMKDwKtrwXj1Q/formResponse?entry.710297191=${this.appName}&emailAddress=${this.email}&submit=Submit`
axios({
method: 'get',
url: formActionUrl,
// data: {
// // Email
// 'emailAddress': this.email,
// // App Name
// 'entry.710297191': this.appName,
// // Notes
// // 'entry.2040856090': '',
// 'submit': 'Submit'
// },
}).finally( response => {
this.feedbackMessage = 'We\'ll keep an eye on it for you!'
// console.log('response', response)
// if (response.status === 200) {
// this.feedbackMessage = '- We\'ll keep an eye on it for you!'
// } else {
// this.feedbackMessage = 'Oops! Something went wrong'
// }
})
// .catch(error => {
// // handle error
// console.error('Error Subscribing -', error)
// this.feedbackMessage = 'Oops! Something went wrong'
// })
}
}
}
</script>