Skip to content

Commit

Permalink
Merge pull request Sage-Bionetworks#999 from jay-hodgson/SWC-6869
Browse files Browse the repository at this point in the history
SWC-6869
  • Loading branch information
jay-hodgson committed Jun 14, 2024
2 parents caf0e4c + 932d706 commit 918c1c9
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,12 @@ export const SynapseNavDrawerIsShowing: Story = {
},
render: args => (
<>
<SynapseNavDrawer initIsOpen={false} />
<SynapseNavDrawer
initIsOpen={false}
gotoPlace={(href: string) => {
window.alert(`Nav bar calling back to change route to ${href}`)
}}
/>
<FullWidthAlert {...args} />
</>
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,8 @@ type Story = StoryObj<typeof meta>
export const Demo: Story = {
args: {
initIsOpen: false,
gotoPlace: (href: string) => {
window.alert(`Nav bar calling back to change route to ${href}`)
},
},
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import { mockSubmittedSubmission } from '../../mocks/dataaccess/MockSubmission'
const defaultProps: SynapseNavDrawerProps = {
initIsOpen: false,
signoutCallback: jest.fn(),
gotoPlace: jest.fn(),
}

function renderComponent(wrapperProps?: Partial<SynapseContextType>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,14 @@ import { useOneSageURL } from '../../utils/hooks/useOneSageURL'
export type SynapseNavDrawerProps = {
initIsOpen?: boolean
signoutCallback?: () => void
gotoPlace: (href: string) => void
}

type MenuItemParams = {
tooltip: string
iconName?: IconName
onClickOpenNavMenu?: NavItem
onClickGoToUrl?: string
onClickGoToPlace?: () => void
additionalChildren?: JSX.Element
badgeContent?: string | number
isCurrentlySelectedItem?: boolean
Expand Down Expand Up @@ -104,15 +105,15 @@ const NavDrawerListItem = (props: MenuItemParams) => {
tooltip,
iconName,
onClickOpenNavMenu,
onClickGoToUrl,
onClickGoToPlace,
additionalChildren,
badgeContent,
isCurrentlySelectedItem = false,
handleDrawerClose,
handleDrawerOpen,
} = props
const handler =
isCurrentlySelectedItem || onClickGoToUrl
isCurrentlySelectedItem || onClickGoToPlace
? handleDrawerClose
: () => {
handleDrawerOpen(onClickOpenNavMenu)
Expand Down Expand Up @@ -140,10 +141,10 @@ const NavDrawerListItem = (props: MenuItemParams) => {
</Tooltip>
)

return onClickGoToUrl ? (
return onClickGoToPlace ? (
<li>
<a
href={onClickGoToUrl}
onClick={onClickGoToPlace}
rel="noopener noreferrer"
className="SRC-whiteText"
>
Expand All @@ -160,7 +161,7 @@ const NavDrawerListItem = (props: MenuItemParams) => {
*/
export const SynapseNavDrawer: React.FunctionComponent<
SynapseNavDrawerProps
> = ({ initIsOpen = false, signoutCallback }) => {
> = ({ initIsOpen = false, signoutCallback, gotoPlace }) => {
const [isOpen, setOpen] = useState(initIsOpen)
const [selectedItem, setSelectedItem] = useState<NavItem>()
const [projectSearchText, setProjectSearchText] = useState<string>('')
Expand Down Expand Up @@ -225,9 +226,7 @@ export const SynapseNavDrawer: React.FunctionComponent<

const onProjectSearch = (searchTerm: string) => {
projectSearchJson.queryTerm = searchTerm.split(/[ ,]+/)
window.location.href = `/Search:${encodeURI(
JSON.stringify(projectSearchJson),
)}`
gotoPlace(`/Search:${encodeURI(JSON.stringify(projectSearchJson))}`)
}

const accountSettingsURL = useOneSageURL('/authenticated/myaccount')
Expand All @@ -243,7 +242,7 @@ export const SynapseNavDrawer: React.FunctionComponent<
<a
className="synapseIcon"
rel="noopener noreferrer"
href="/Home:0"
onClick={() => gotoPlace('/Home:0')}
aria-label="Synapse Home"
>
<SynapseIconWhite />
Expand All @@ -263,44 +262,56 @@ export const SynapseNavDrawer: React.FunctionComponent<
<NavDrawerListItem
tooltip="Favorites"
iconName="favTwoTone"
onClickGoToUrl={`/Profile:${currentUserProfile.ownerId}/favorites`}
onClickGoToPlace={() =>
gotoPlace(
`/Profile:${currentUserProfile.ownerId}/favorites`,
)
}
handleDrawerClose={handleDrawerClose}
handleDrawerOpen={handleDrawerOpen}
/>
<NavDrawerListItem
tooltip="Teams"
iconName="peopleTwoTone"
onClickGoToUrl={`/Profile:${currentUserProfile.ownerId}/teams`}
onClickGoToPlace={() =>
gotoPlace(`/Profile:${currentUserProfile.ownerId}/teams`)
}
handleDrawerClose={handleDrawerClose}
handleDrawerOpen={handleDrawerOpen}
/>
<NavDrawerListItem
tooltip="Challenges"
iconName="challengesTwoTone"
onClickGoToUrl={`/Profile:${currentUserProfile.ownerId}/challenges`}
onClickGoToPlace={() =>
gotoPlace(
`/Profile:${currentUserProfile.ownerId}/challenges`,
)
}
handleDrawerClose={handleDrawerClose}
handleDrawerOpen={handleDrawerOpen}
/>
<NavDrawerListItem
tooltip="Download Cart"
iconName="download"
onClickGoToUrl="/DownloadCart:0"
onClickGoToPlace={() => gotoPlace('/DownloadCart:0')}
badgeContent={numberOfFilesInDownloadList}
handleDrawerClose={handleDrawerClose}
handleDrawerOpen={handleDrawerOpen}
/>
<NavDrawerListItem
tooltip="Trash Can"
iconName="delete"
onClickGoToUrl="/Trash:0"
onClickGoToPlace={() => gotoPlace('/Trash:0')}
handleDrawerClose={handleDrawerClose}
handleDrawerOpen={handleDrawerOpen}
/>
{currentUserBundle?.isARReviewer && (
<NavDrawerListItem
tooltip="Data Access Management"
iconName="accessManagement"
onClickGoToUrl="/DataAccessManagement:default/Submissions"
onClickGoToPlace={() =>
gotoPlace('/DataAccessManagement:default/Submissions')
}
badgeContent={countOfOpenSubmissionsForReview}
handleDrawerClose={handleDrawerClose}
handleDrawerOpen={handleDrawerOpen}
Expand All @@ -311,7 +322,7 @@ export const SynapseNavDrawer: React.FunctionComponent<
<NavDrawerListItem
tooltip="Search"
iconName="search"
onClickGoToUrl="/Search:"
onClickGoToPlace={() => gotoPlace('/Search:')}
handleDrawerClose={handleDrawerClose}
handleDrawerOpen={handleDrawerOpen}
/>
Expand All @@ -338,7 +349,7 @@ export const SynapseNavDrawer: React.FunctionComponent<
<NavDrawerListItem
tooltip="Sign in"
iconName="login"
onClickGoToUrl="/LoginPlace:0"
onClickGoToPlace={() => gotoPlace('/LoginPlace:0')}
handleDrawerClose={handleDrawerClose}
handleDrawerOpen={handleDrawerOpen}
/>
Expand Down Expand Up @@ -400,35 +411,55 @@ export const SynapseNavDrawer: React.FunctionComponent<
<div className="linkList" onClick={handleDrawerClose}>
<a
className="SRC-whiteText"
href={`/Profile:${currentUserProfile?.ownerId}/projects/all`}
onClick={() =>
gotoPlace(
`/Profile:${currentUserProfile?.ownerId}/projects/all`,
)
}
rel="noopener noreferrer"
>
All
</a>
<a
className="SRC-whiteText"
href={`/Profile:${currentUserProfile?.ownerId}/projects/created_by_me`}
onClick={() =>
gotoPlace(
`/Profile:${currentUserProfile?.ownerId}/projects/created_by_me`,
)
}
rel="noopener noreferrer"
>
Created By Me
</a>
<a
className="SRC-whiteText"
href={`/Profile:${currentUserProfile?.ownerId}/projects/favorites`}
onClick={() =>
gotoPlace(
`/Profile:${currentUserProfile?.ownerId}/projects/favorites`,
)
}
rel="noopener noreferrer"
>
Favorite Projects
</a>
<a
className="SRC-whiteText"
href={`/Profile:${currentUserProfile?.ownerId}/projects/shared_directly_with_me`}
onClick={() =>
gotoPlace(
`/Profile:${currentUserProfile?.ownerId}/projects/shared_directly_with_me`,
)
}
rel="noopener noreferrer"
>
Shared With Me
</a>
<a
className="SRC-whiteText"
href={`/Profile:${currentUserProfile?.ownerId}/projects/all_my_team_projects`}
onClick={() =>
gotoPlace(
`/Profile:${currentUserProfile?.ownerId}/projects/all_my_team_projects`,
)
}
rel="noopener noreferrer"
>
Team Projects
Expand All @@ -446,7 +477,11 @@ export const SynapseNavDrawer: React.FunctionComponent<
<div className="linkList" onClick={handleDrawerClose}>
<a
className="SRC-whiteText"
href={`/Profile:${currentUserProfile?.ownerId}/profile`}
onClick={() =>
gotoPlace(
`/Profile:${currentUserProfile?.ownerId}/profile`,
)
}
rel="noopener noreferrer"
>
View Profile
Expand All @@ -461,7 +496,7 @@ export const SynapseNavDrawer: React.FunctionComponent<
</a>
<a
className="SRC-whiteText"
href={`/Following:0`}
onClick={() => gotoPlace(`/Following:0`)}
rel="noopener noreferrer"
>
Following
Expand Down Expand Up @@ -524,7 +559,7 @@ export const SynapseNavDrawer: React.FunctionComponent<
</a>
<a
className="SRC-whiteText"
href="/SynapseForum:default"
onClick={() => gotoPlace('/SynapseForum:default')}
rel="noopener noreferrer"
>
Help Forum
Expand Down

0 comments on commit 918c1c9

Please sign in to comment.