|
|
@@ -1,4 +1,5 @@
|
|
|
import { useState } from 'react'
|
|
|
+import classnames from 'classnames'
|
|
|
import NewProjectButton from '../new-project-button'
|
|
|
import SidebarFilters from './sidebar-filters'
|
|
|
import AddAffiliation, { useAddAffiliation } from '../add-affiliation'
|
|
|
@@ -14,6 +15,7 @@ import { NavbarDropdownItemData } from '@/features/ui/components/types/navbar'
|
|
|
import { useContactUsModal } from '@/shared/hooks/use-contact-us-modal'
|
|
|
import { UserProvider } from '@/shared/context/user-context'
|
|
|
import { AccountMenuItems } from '@/features/ui/components/bootstrap-5/navbar/account-menu-items'
|
|
|
+import { useScrolled } from '@/features/project-list/components/sidebar/use-scroll'
|
|
|
|
|
|
function SidebarDsNav() {
|
|
|
const { t } = useTranslation()
|
|
|
@@ -31,6 +33,7 @@ function SidebarDsNav() {
|
|
|
const helpItem = items.find(
|
|
|
item => item.text === 'help'
|
|
|
) as NavbarDropdownItemData
|
|
|
+ const { containerRef, scrolledUp, scrolledDown } = useScrolled()
|
|
|
return (
|
|
|
<div
|
|
|
className="project-list-sidebar-wrapper-react d-none d-md-flex"
|
|
|
@@ -40,82 +43,92 @@ function SidebarDsNav() {
|
|
|
},
|
|
|
})}
|
|
|
>
|
|
|
- <NewProjectButton id="new-project-button-sidebar" />
|
|
|
- <div className="project-list-sidebar-scroll">
|
|
|
+ <NewProjectButton
|
|
|
+ id="new-project-button-sidebar"
|
|
|
+ className={scrolledDown ? 'show-shadow' : undefined}
|
|
|
+ />
|
|
|
+ <div className="project-list-sidebar-scroll" ref={containerRef}>
|
|
|
<SidebarFilters />
|
|
|
{showAddAffiliationWidget && <hr />}
|
|
|
<AddAffiliation />
|
|
|
</div>
|
|
|
- <div className="project-list-sidebar-survey-wrapper">
|
|
|
- <SurveyWidget variant="light" />
|
|
|
- </div>
|
|
|
- <div className="d-flex gap-3 mb-2">
|
|
|
- {helpItem && (
|
|
|
- <Dropdown
|
|
|
- className="ds-nav-icon-dropdown"
|
|
|
- onToggle={show => setShowHelpDropdown(show)}
|
|
|
- >
|
|
|
- <Dropdown.Toggle role="menuitem" aria-label={t('help')}>
|
|
|
- <OLTooltip
|
|
|
- description={t('help')}
|
|
|
- id="help-icon"
|
|
|
- overlayProps={{
|
|
|
- placement: 'top',
|
|
|
- show: showHelpDropdown ? false : undefined,
|
|
|
- }}
|
|
|
- >
|
|
|
- <div>
|
|
|
- <MaterialIcon type="help" size="2x" />
|
|
|
- </div>
|
|
|
- </OLTooltip>
|
|
|
- </Dropdown.Toggle>
|
|
|
- <Dropdown.Menu as="ul" role="menu" align="end">
|
|
|
- <NavDropdownMenuItems
|
|
|
- dropdown={helpItem.dropdown}
|
|
|
- showContactUsModal={showContactUsModal}
|
|
|
- />
|
|
|
- </Dropdown.Menu>
|
|
|
- </Dropdown>
|
|
|
+ <div
|
|
|
+ className={classnames(
|
|
|
+ 'ds-nav-sidebar-lower',
|
|
|
+ scrolledUp && 'show-shadow'
|
|
|
)}
|
|
|
- {sessionUser && (
|
|
|
- <>
|
|
|
+ >
|
|
|
+ <div className="project-list-sidebar-survey-wrapper">
|
|
|
+ <SurveyWidget variant="light" />
|
|
|
+ </div>
|
|
|
+ <div className="d-flex gap-3 mb-2">
|
|
|
+ {helpItem && (
|
|
|
<Dropdown
|
|
|
className="ds-nav-icon-dropdown"
|
|
|
- onToggle={show => setShowAccountDropdown(show)}
|
|
|
+ onToggle={show => setShowHelpDropdown(show)}
|
|
|
>
|
|
|
- <Dropdown.Toggle role="menuitem" aria-label={t('Account')}>
|
|
|
+ <Dropdown.Toggle role="menuitem" aria-label={t('help')}>
|
|
|
<OLTooltip
|
|
|
- description={t('Account')}
|
|
|
- id="open-account"
|
|
|
+ description={t('help')}
|
|
|
+ id="help-icon"
|
|
|
overlayProps={{
|
|
|
placement: 'top',
|
|
|
- show: showAccountDropdown ? false : undefined,
|
|
|
+ show: showHelpDropdown ? false : undefined,
|
|
|
}}
|
|
|
>
|
|
|
<div>
|
|
|
- <MaterialIcon type="person" size="2x" />
|
|
|
+ <MaterialIcon type="help" size="2x" />
|
|
|
</div>
|
|
|
</OLTooltip>
|
|
|
</Dropdown.Toggle>
|
|
|
<Dropdown.Menu as="ul" role="menu" align="end">
|
|
|
- <AccountMenuItems
|
|
|
- sessionUser={sessionUser}
|
|
|
- showSubscriptionLink={showSubscriptionLink}
|
|
|
+ <NavDropdownMenuItems
|
|
|
+ dropdown={helpItem.dropdown}
|
|
|
+ showContactUsModal={showContactUsModal}
|
|
|
/>
|
|
|
</Dropdown.Menu>
|
|
|
</Dropdown>
|
|
|
- <UserProvider>{contactUsModal}</UserProvider>
|
|
|
- </>
|
|
|
- )}
|
|
|
- </div>
|
|
|
- <div className="ds-nav-ds-link">
|
|
|
- <a
|
|
|
- target="_blank"
|
|
|
- href="https://www.digital-science.com/"
|
|
|
- rel="noopener"
|
|
|
- >
|
|
|
- Digital Science
|
|
|
- </a>
|
|
|
+ )}
|
|
|
+ {sessionUser && (
|
|
|
+ <>
|
|
|
+ <Dropdown
|
|
|
+ className="ds-nav-icon-dropdown"
|
|
|
+ onToggle={show => setShowAccountDropdown(show)}
|
|
|
+ >
|
|
|
+ <Dropdown.Toggle role="menuitem" aria-label={t('Account')}>
|
|
|
+ <OLTooltip
|
|
|
+ description={t('Account')}
|
|
|
+ id="open-account"
|
|
|
+ overlayProps={{
|
|
|
+ placement: 'top',
|
|
|
+ show: showAccountDropdown ? false : undefined,
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <MaterialIcon type="person" size="2x" />
|
|
|
+ </div>
|
|
|
+ </OLTooltip>
|
|
|
+ </Dropdown.Toggle>
|
|
|
+ <Dropdown.Menu as="ul" role="menu" align="end">
|
|
|
+ <AccountMenuItems
|
|
|
+ sessionUser={sessionUser}
|
|
|
+ showSubscriptionLink={showSubscriptionLink}
|
|
|
+ />
|
|
|
+ </Dropdown.Menu>
|
|
|
+ </Dropdown>
|
|
|
+ <UserProvider>{contactUsModal}</UserProvider>
|
|
|
+ </>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ <div className="ds-nav-ds-link">
|
|
|
+ <a
|
|
|
+ target="_blank"
|
|
|
+ href="https://www.digital-science.com/"
|
|
|
+ rel="noopener"
|
|
|
+ >
|
|
|
+ Digital Science
|
|
|
+ </a>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div
|
|
|
{...getHandleProps({
|