From 1f6418f48f80bbfd916e96af9864f037d19596b8 Mon Sep 17 00:00:00 2001 From: Tim Down <158919+timdown@users.noreply.github.com> Date: Fri, 30 Aug 2024 14:06:59 +0100 Subject: [PATCH] Merge pull request #20161 from overleaf/td-bs5-contact-modal-wiki-search-visibility Fix for learn wiki search results not appearing in BS5 nav contact modal GitOrigin-RevId: 9f4476163c509ab6ec7fe119600276c906c44f7e --- .../bootstrap-5/navbar/contact-us-item.tsx | 30 +++++++++---------- .../bootstrap-5/navbar/default-navbar.tsx | 16 +++++++++- .../navbar/nav-dropdown-from-data.tsx | 4 ++- .../bootstrap-5/navbar/nav-item-from-data.tsx | 15 ++++++++-- .../ui/components/ol/ol-form-select.tsx | 1 + 5 files changed, 46 insertions(+), 20 deletions(-) diff --git a/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/contact-us-item.tsx b/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/contact-us-item.tsx index 27af356580..49fcfcfd59 100644 --- a/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/contact-us-item.tsx +++ b/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/contact-us-item.tsx @@ -1,25 +1,23 @@ import NavDropdownLinkItem from '@/features/ui/components/bootstrap-5/navbar/nav-dropdown-link-item' import { sendMB } from '@/infrastructure/event-tracking' import { useTranslation } from 'react-i18next' -import { useContactUsModal } from '@/shared/hooks/use-contact-us-modal' -import { UserProvider } from '@/shared/context/user-context' -export default function ContactUsItem() { +export default function ContactUsItem({ + showModal, +}: { + showModal: (event?: Event) => void +}) { const { t } = useTranslation() - const { modal, showModal } = useContactUsModal({ autofillProjectUrl: false }) return ( - <> - { - sendMB('menu-clicked-contact') - showModal() - }} - > - {t('contact_us')} - - {modal} - + { + sendMB('menu-clicked-contact') + showModal() + }} + > + {t('contact_us')} + ) } diff --git a/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/default-navbar.tsx b/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/default-navbar.tsx index 5421da70f4..33f30962a1 100644 --- a/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/default-navbar.tsx +++ b/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/default-navbar.tsx @@ -8,6 +8,8 @@ import NavItemFromData from '@/features/ui/components/bootstrap-5/navbar/nav-ite import LoggedInItems from '@/features/ui/components/bootstrap-5/navbar/logged-in-items' import HeaderLogoOrTitle from '@/features/ui/components/bootstrap-5/navbar/header-logo-or-title' import MaterialIcon from '@/shared/components/material-icon' +import { useContactUsModal } from '@/shared/hooks/use-contact-us-modal' +import { UserProvider } from '@/shared/context/user-context' function LoggedOutItems() { return Logged out @@ -32,6 +34,13 @@ function DefaultNavbar(props: DefaultNavbarMetadata) { const { t } = useTranslation() const { isReady } = useWaitForI18n() + // The Contact Us modal is rendered at this level rather than inside the nav + // bar because otherwise the help wiki search results dropdown doesn't show up + const { modal: contactUsModal, showModal: showContactUsModal } = + useContactUsModal({ + autofillProjectUrl: false, + }) + if (!isReady) { return null } @@ -95,7 +104,11 @@ function DefaultNavbar(props: DefaultNavbarMetadata) { (item.only_content_pages && !suppressNavContentLinks) return showNavItem ? ( - + ) : null })} {sessionUser ? ( @@ -112,6 +125,7 @@ function DefaultNavbar(props: DefaultNavbarMetadata) { )} + {contactUsModal} ) } diff --git a/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/nav-dropdown-from-data.tsx b/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/nav-dropdown-from-data.tsx index 98d42ec35c..bfa6af6763 100644 --- a/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/nav-dropdown-from-data.tsx +++ b/services/web/frontend/js/features/ui/components/bootstrap-5/navbar/nav-dropdown-from-data.tsx @@ -9,8 +9,10 @@ import ContactUsItem from '@/features/ui/components/bootstrap-5/navbar/contact-u export default function NavDropdownFromData({ item, + showContactUsModal, }: { item: NavbarDropdownItemData + showContactUsModal: (event?: Event) => void }) { return ( @@ -18,7 +20,7 @@ export default function NavDropdownFromData({ if ('divider' in child) { return } else if ('isContactUs' in child) { - return + return } else if (isDropdownLinkItem(child)) { return ( void +}) { if (isDropdownItem(item)) { - return + return ( + + ) } else if (isLinkItem(item)) { return (