From 7cfd9d4fd072d211a63fee19e079aa61c2c034b2 Mon Sep 17 00:00:00 2001 From: kvakazyambra Date: Mon, 17 Oct 2022 23:53:04 +0300 Subject: [PATCH] Share controls popup --- public/icons/link-white.svg | 4 ++ src/components/Nav/Header.module.scss | 16 ++++++++ src/components/Nav/Header.tsx | 54 ++++++++++++++++++++++----- src/components/Nav/Popup.module.scss | 44 ++++++++++++++++++++++ src/components/Nav/Popup.tsx | 37 ++++++++++++++++++ src/locales/ru.json | 1 + src/stores/ui.ts | 3 +- 7 files changed, 148 insertions(+), 11 deletions(-) create mode 100644 public/icons/link-white.svg create mode 100644 src/components/Nav/Popup.module.scss create mode 100644 src/components/Nav/Popup.tsx diff --git a/public/icons/link-white.svg b/public/icons/link-white.svg new file mode 100644 index 00000000..5a4bc439 --- /dev/null +++ b/public/icons/link-white.svg @@ -0,0 +1,4 @@ + + + diff --git a/src/components/Nav/Header.module.scss b/src/components/Nav/Header.module.scss index c04308a7..6e12aceb 100644 --- a/src/components/Nav/Header.module.scss +++ b/src/components/Nav/Header.module.scss @@ -20,6 +20,10 @@ } } +.mainHeaderInner { + position: relative; +} + .headerFixed.headerScrolledBottom, .headerFixed.headerScrolledTop { .mainLogo { @@ -31,6 +35,18 @@ } } +.popupShare { + opacity: 1; + transition: opacity 0.3s; + z-index: 1; + + .headerScrolledTop & { + opacity: 0; + transition: opacity 0.3s, z-index 0s 0.3s; + z-index: -1; + } +} + .headerFixed { position: fixed; top: 0; diff --git a/src/components/Nav/Header.tsx b/src/components/Nav/Header.tsx index 802db235..8d25caf2 100644 --- a/src/components/Nav/Header.tsx +++ b/src/components/Nav/Header.tsx @@ -3,12 +3,14 @@ import Private from './Private' import Notifications from './Notifications' import { Icon } from './Icon' import { Modal } from './Modal' +import { Popup } from './Popup' import AuthModal from './AuthModal' import { t } from '../../utils/intl' -import { useModalStore, showModal, useWarningsStore } from '../../stores/ui' +import {useModalStore, showModal, useWarningsStore, toggleModal} from '../../stores/ui' import { useAuthStore } from '../../stores/auth' import { handleClientRouteLinkClick, router, Routes, useRouter } from '../../stores/router' import styles from './Header.module.scss' +import stylesPopup from './Popup.module.scss' import privateStyles from './Private.module.scss' import { getPagePath } from '@nanostores/router' import { getLogger } from '../../utils/logger' @@ -49,11 +51,7 @@ export const Header = (props: Props) => { const toggleFixed = () => setFixed(!fixed()) // effects createEffect(() => { - if (fixed() || getModal()) { - document.body.classList.add('fixed') - } else { - document.body.classList.remove('fixed') - } + document.body.classList.toggle('fixed', fixed() || (getModal() && getModal() !== 'share')); }, [fixed(), getModal()]) // derived @@ -71,8 +69,6 @@ export const Header = (props: Props) => { onMount(() => { let scrollTop = window.scrollY - // window.console.log(props.title) - const handleScroll = () => { setIsScrollingBottom(window.scrollY > scrollTop) setIsScrolled(window.scrollY > 0) @@ -98,7 +94,43 @@ export const Header = (props: Props) => { -
+ +
+ + + +