From fee10c9e13bf57eb6e42976f4d2ae8335cadfda1 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Thu, 14 Oct 2021 12:10:59 +0300 Subject: [PATCH] fix: apply announcement bar class if only needed (#5699) --- .../src/theme/AnnouncementBar/index.tsx | 10 +++----- .../src/theme/DocSidebar/index.tsx | 24 ++++++++++--------- .../src/validateThemeConfig.ts | 2 +- .../src/utils/announcementBarUtils.tsx | 4 ++-- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx index 2259c9db99..f42acb6a19 100644 --- a/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/AnnouncementBar/index.tsx @@ -14,18 +14,14 @@ import IconClose from '@theme/IconClose'; import styles from './styles.module.css'; function AnnouncementBar(): JSX.Element | null { - const {isClosed, close} = useAnnouncementBar(); + const {isActive, close} = useAnnouncementBar(); const {announcementBar} = useThemeConfig(); - if (!announcementBar) { + if (!isActive) { return null; } - const {content, backgroundColor, textColor, isCloseable} = announcementBar; - - if (!content || (isCloseable && isClosed)) { - return null; - } + const {content, backgroundColor, textColor, isCloseable} = announcementBar!; return (
{ - if (!isClosed) { - setShowAnnouncementBar(scrollY === 0); - } - }); - return showAnnouncementBar; + const {isActive} = useAnnouncementBar(); + const [showAnnouncementBar, setShowAnnouncementBar] = useState(isActive); + + useScrollPosition( + ({scrollY}) => { + if (isActive) { + setShowAnnouncementBar(scrollY === 0); + } + }, + [isActive], + ); + return isActive && showAnnouncementBar; } function HideableSidebarButton({onClick}: {onClick: React.MouseEventHandler}) { @@ -65,7 +69,6 @@ function DocSidebarDesktop({path, sidebar, onCollapse, isHidden}: Props) { navbar: {hideOnScroll}, hideableSidebar, } = useThemeConfig(); - const {isClosed: isAnnouncementBarClosed} = useAnnouncementBar(); return (
}