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 (