2023-05-12 14:57:33 +00:00
|
|
|
import { createSignal, Show } from 'solid-js'
|
2022-10-19 22:16:17 +00:00
|
|
|
import styles from './Subscribe.module.scss'
|
2023-02-17 09:21:02 +00:00
|
|
|
|
2022-11-02 21:43:38 +00:00
|
|
|
import { clsx } from 'clsx'
|
2023-02-17 09:21:02 +00:00
|
|
|
import { useLocalize } from '../../context/localize'
|
2022-09-09 11:53:35 +00:00
|
|
|
|
|
|
|
export default () => {
|
2023-02-17 09:21:02 +00:00
|
|
|
const { t } = useLocalize()
|
2022-09-09 11:53:35 +00:00
|
|
|
let emailElement: HTMLInputElement | undefined
|
|
|
|
const [title, setTitle] = createSignal('')
|
|
|
|
const subscribe = async () => {
|
|
|
|
setTitle(t('...subscribing'))
|
2023-05-11 19:54:05 +00:00
|
|
|
|
|
|
|
const requestOptions = {
|
|
|
|
method: 'POST',
|
|
|
|
headers: {
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
},
|
|
|
|
body: JSON.stringify({
|
|
|
|
email: emailElement?.value
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
const r = await fetch('/api/newsletter', requestOptions)
|
2022-10-19 22:16:17 +00:00
|
|
|
setTitle(r.ok ? t('You are subscribed') : '')
|
2022-09-09 11:53:35 +00:00
|
|
|
}
|
2022-10-19 22:16:17 +00:00
|
|
|
|
2022-09-09 11:53:35 +00:00
|
|
|
return (
|
2022-10-19 22:16:17 +00:00
|
|
|
<div class={styles.subscribeForm}>
|
2023-05-12 14:57:33 +00:00
|
|
|
<Show when={!title()} fallback={title()}>
|
|
|
|
<input type="email" name="email" ref={emailElement} placeholder={t('Fill email')} />
|
|
|
|
<button
|
|
|
|
class={clsx(styles.button, 'button--light')}
|
|
|
|
onClick={() => emailElement?.value && subscribe()}
|
|
|
|
>
|
|
|
|
{t('Subscribe')}
|
|
|
|
</button>
|
|
|
|
</Show>
|
2022-09-09 11:53:35 +00:00
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|