) => setAnchorEl(ev.currentTarget)
-
- return (
- <>
-
-
-
- {anchorEl ? : }
-
-
-
-
- {entries.map((entry) => (
- {
- onClose()
- }}
- />
- ))}
-
- >
- )
-}
-
-const useStyles = makeStyles((theme: Theme) => ({
- link: {
- "&:focus": {
- outline: "none",
-
- "& .MuiListItem-button": {
- background: fade(theme.palette.primary.light, 0.1),
- },
- },
-
- "& .MuiListItemText-root": {
- display: "flex",
- flexDirection: "column",
- alignItems: "center",
- },
- "& .feature-stage-chip": {
- position: "absolute",
- bottom: theme.spacing(1),
-
- "& .MuiChip-labelSmall": {
- fontSize: "10px",
- },
- },
- whiteSpace: "nowrap",
- "& .MuiListItem-button": {
- height: navHeight,
- color: "#A7A7A7",
- padding: `0 ${theme.spacing(3)}px`,
-
- "&.Mui-selected": {
- background: "transparent",
- "& .MuiListItemText-root": {
- color: theme.palette.primary.contrastText,
-
- "&:not(.no-brace) .MuiTypography-root": {
- position: "relative",
-
- "&::before": {
- content: `"{"`,
- left: -14,
- position: "absolute",
- },
- "&::after": {
- content: `"}"`,
- position: "absolute",
- right: -14,
- },
- },
- },
- },
-
- "&.Mui-focusVisible, &:hover": {
- background: "#333",
- },
-
- "& .MuiListItemText-primary": {
- fontFamily: theme.typography.fontFamily,
- fontSize: 16,
- fontWeight: 500,
- },
- },
- },
-}))
diff --git a/site/src/components/Navbar/Navbar.test.tsx b/site/src/components/Navbar/Navbar.test.tsx
deleted file mode 100644
index 3a014d415327a..0000000000000
--- a/site/src/components/Navbar/Navbar.test.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import { screen, waitFor } from "@testing-library/react"
-import React from "react"
-import * as API from "../../api/api"
-import { renderWithAuth } from "../../testHelpers/renderHelpers"
-import { checks } from "../../xServices/auth/authXService"
-import { Language as AdminDropdownLanguage } from "../AdminDropdown/AdminDropdown"
-import { Navbar } from "./Navbar"
-
-beforeEach(() => {
- jest.resetAllMocks()
-})
-
-describe("Navbar", () => {
- describe("when user has permission to update users", () => {
- it("displays the admin menu", async () => {
- const checkUserPermissionsSpy = jest.spyOn(API, "checkUserPermissions").mockResolvedValueOnce({
- [checks.updateUsers]: true,
- })
-
- renderWithAuth()
-
- // Wait for the request is done
- await waitFor(() => expect(checkUserPermissionsSpy).toBeCalledTimes(1))
- await screen.findByRole("button", { name: AdminDropdownLanguage.menuTitle })
- })
- })
-
- describe("when user has NO permission to update users", () => {
- it("does not display the admin menu", async () => {
- const checkUserPermissionsSpy = jest.spyOn(API, "checkUserPermissions").mockResolvedValueOnce({
- [checks.updateUsers]: false,
- })
- renderWithAuth()
-
- // Wait for the request is done
- await waitFor(() => expect(checkUserPermissionsSpy).toBeCalledTimes(1))
- expect(screen.queryByRole("button", { name: AdminDropdownLanguage.menuTitle })).not.toBeInTheDocument()
- })
- })
-})
diff --git a/site/src/components/Navbar/Navbar.tsx b/site/src/components/Navbar/Navbar.tsx
index 90a3c4676794a..0ac64ef7d1269 100644
--- a/site/src/components/Navbar/Navbar.tsx
+++ b/site/src/components/Navbar/Navbar.tsx
@@ -1,6 +1,5 @@
-import { useActor, useSelector } from "@xstate/react"
+import { useActor } from "@xstate/react"
import React, { useContext } from "react"
-import { selectPermissions } from "../../xServices/auth/authSelectors"
import { XServiceContext } from "../../xServices/StateContext"
import { NavbarView } from "../NavbarView/NavbarView"
@@ -8,11 +7,7 @@ export const Navbar: React.FC = () => {
const xServices = useContext(XServiceContext)
const [authState, authSend] = useActor(xServices.authXService)
const { me } = authState.context
- const permissions = useSelector(xServices.authXService, selectPermissions)
- // When we have more options in the admin dropdown we may want to check this
- // for more permissions
- const displayAdminDropdown = !!permissions?.updateUsers
const onSignOut = () => authSend("SIGN_OUT")
- return
+ return
}
diff --git a/site/src/components/NavbarView/NavbarView.test.tsx b/site/src/components/NavbarView/NavbarView.test.tsx
index 15d643135d163..8ef6cdc312a99 100644
--- a/site/src/components/NavbarView/NavbarView.test.tsx
+++ b/site/src/components/NavbarView/NavbarView.test.tsx
@@ -10,26 +10,26 @@ describe("NavbarView", () => {
}
it("renders content", async () => {
// When
- render()
+ render()
// Then
await screen.findAllByText("Coder", { exact: false })
})
it("workspaces nav link has the correct href", async () => {
- render()
+ render()
const workspacesLink = await screen.findByText(navLanguage.workspaces)
expect((workspacesLink as HTMLAnchorElement).href).toContain("/workspaces")
})
it("templates nav link has the correct href", async () => {
- render()
+ render()
const templatesLink = await screen.findByText(navLanguage.templates)
expect((templatesLink as HTMLAnchorElement).href).toContain("/templates")
})
it("users nav link has the correct href", async () => {
- render()
+ render()
const userLink = await screen.findByText(navLanguage.users)
expect((userLink as HTMLAnchorElement).href).toContain("/users")
})
@@ -42,7 +42,7 @@ describe("NavbarView", () => {
}
// When
- render()
+ render()
// Then
// There should be a 'B' avatar!
diff --git a/site/src/components/NavbarView/NavbarView.tsx b/site/src/components/NavbarView/NavbarView.tsx
index 1c0edb236199f..092a299851e91 100644
--- a/site/src/components/NavbarView/NavbarView.tsx
+++ b/site/src/components/NavbarView/NavbarView.tsx
@@ -5,14 +5,12 @@ import React from "react"
import { NavLink } from "react-router-dom"
import * as TypesGen from "../../api/typesGenerated"
import { navHeight } from "../../theme/constants"
-import { AdminDropdown } from "../AdminDropdown/AdminDropdown"
import { Logo } from "../Icons/Logo"
import { UserDropdown } from "../UserDropdown/UsersDropdown"
export interface NavbarViewProps {
user?: TypesGen.User
onSignOut: () => void
- displayAdminDropdown: boolean
}
export const Language = {
@@ -21,7 +19,7 @@ export const Language = {
users: "Users",
}
-export const NavbarView: React.FC = ({ user, onSignOut, displayAdminDropdown }) => {
+export const NavbarView: React.FC = ({ user, onSignOut }) => {
const styles = useStyles()
return (
)