Mobile header Subscribe (#275)

This commit is contained in:
Ilya Y 2023-10-21 15:45:07 +03:00 committed by GitHub
parent bfe1ef2e85
commit 65e34f1551
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 77 additions and 65 deletions

View File

@ -1,7 +1,7 @@
import { createMemo, For } from 'solid-js'
import styles from './Footer.module.scss'
import { Icon } from '../_shared/Icon'
import Subscribe from './Subscribe'
import { Subscribe } from '../_shared/Subscribe'
import { clsx } from 'clsx'
import { useLocalize } from '../../context/localize'

View File

@ -244,40 +244,6 @@
color: #696969;
}
.mobileSubscription {
margin-bottom: 5rem;
input[type='email'] {
background: #f7f7f8;
border: none;
border-radius: 1.6rem;
padding-right: 5.6rem;
&:not(:placeholder-shown) {
& ~ .mobileSubscriptionSubmit {
display: block;
}
}
}
}
.mobileSubscriptionSubmit {
aspect-ratio: 1/1;
display: none;
height: 100%;
position: absolute;
right: 0;
top: 0;
img {
aspect-ratio: 1/1;
left: 50%;
position: relative;
transform: translateX(-50%);
width: 16px !important;
}
}
.mainNavigationItemActive {
background: var(--link-hover-background) !important;
color: var(--link-hover-color) !important;

View File

@ -23,6 +23,7 @@ import styles from './Header.module.scss'
import { apiClient } from '../../../utils/apiClient'
import { RANDOM_TOPICS_COUNT } from '../../Views/Home'
import { Link } from './Link'
import { Subscribe } from '../../_shared/Subscribe'
type Props = {
title?: string
@ -280,16 +281,7 @@ export const Header = (props: Props) => {
</ul>
<h4>{t('Newsletter')}</h4>
<form action="." class={styles.mobileSubscription}>
<div class="pretty-form__item">
<input type="email" placeholder="Ваш email" id="subscription-email" />
<label for="subscription-email">{t('Your email')}</label>
<button class={styles.mobileSubscriptionSubmit}>
<Icon name="arrow-right" />
</button>
</div>
</form>
<Subscribe variant={'mobileSubscription'} />
<p
class={styles.mobileDescription}
innerHTML={t(

View File

@ -60,3 +60,37 @@
line-height: 16px;
color: #d00820;
}
.mobileSubscription {
margin-bottom: 5rem;
input[type='email'] {
background: #f7f7f8;
border: none;
border-radius: 1.6rem;
padding-right: 5.6rem;
&:not(:placeholder-shown) {
& ~ .mobileSubscriptionSubmit {
display: block;
}
}
}
}
.mobileSubscriptionSubmit {
aspect-ratio: 1/1;
display: none;
height: 100%;
position: absolute;
right: 0;
top: 0;
img {
aspect-ratio: 1/1;
left: 50%;
position: relative;
transform: translateX(-50%);
width: 16px !important;
}
}

View File

@ -1,13 +1,15 @@
import { createSignal, JSX, Show } from 'solid-js'
import { useLocalize } from '../../context/localize'
import { validateEmail } from '../../utils/validateEmail'
import { Button } from '../_shared/Button'
import { useLocalize } from '../../../context/localize'
import { validateEmail } from '../../../utils/validateEmail'
import { Button } from '../Button'
import styles from './Subscribe.module.scss'
import { useSnackbar } from '../../context/snackbar'
import { useSnackbar } from '../../../context/snackbar'
import { Icon } from '../Icon'
export default () => {
type Props = {
variant?: 'mobileSubscription'
}
export const Subscribe = (props: Props) => {
const { t } = useLocalize()
const [title, setTitle] = createSignal('')
@ -69,19 +71,36 @@ export default () => {
}
return (
<form class={styles.form} onSubmit={handleSubmit} novalidate>
<form
class={props.variant === 'mobileSubscription' ? styles.mobileSubscription : styles.form}
onSubmit={handleSubmit}
novalidate
>
<Show when={!title()} fallback={title()}>
<div class={styles.controls}>
<input
type="email"
name="email"
value={email()}
onInput={handleInput}
class={styles.input}
placeholder={t('Fill email')}
/>
<Button class={styles.button} type="submit" variant="secondary" value={t('Subscribe')} />
</div>
<Show
when={props.variant === 'mobileSubscription'}
fallback={
<div class={styles.controls}>
<input
type="email"
name="email"
value={email()}
onInput={handleInput}
class={styles.input}
placeholder={t('Fill email')}
/>
<Button class={styles.button} type="submit" variant="secondary" value={t('Subscribe')} />
</div>
}
>
<div class="pretty-form__item">
<input type="email" placeholder={t('Your email')} id="subscription-email" />
<label for="subscription-email">{t('Your email')}</label>
<button type="submit" class={styles.mobileSubscriptionSubmit}>
<Icon name="arrow-right" />
</button>
</div>
</Show>
<Show when={emailError()}>
<div class={styles.error}>{emailError()}</div>
</Show>

View File

@ -0,0 +1 @@
export { Subscribe } from './Subscribe'

View File

@ -2,7 +2,7 @@ import { createSignal, Show } from 'solid-js'
import { PageLayout } from '../../components/_shared/PageLayout'
import { Modal } from '../../components/Nav/Modal'
import { Feedback } from '../../components/Discours/Feedback'
import Subscribe from '../../components/Discours/Subscribe'
import { Subscribe } from '../../components/_shared/Subscribe'
import Opener from '../../components/Nav/Modal/Opener'
import { Icon } from '../../components/_shared/Icon'