fleet/frontend/components/TeamsHeader/TeamsHeader.tsx
Jacob Shandling f0c4dd854b Add teams features to Vuln details page (#16761)
## Addresses #16758 

- Add Teams functionality to the Vulnerability details page
  - Premium only
  -  All links from page include team_id query param
      - To hosts page
      - To OS details pages
      - To SW version details pages
  - API call includes `team_id` query param 
  - Teams header
- If user only has access to one team, just shows the teamname (no
dropdown)
    -  Otherwise, Dropdown with team options
    - Includes "All teams," but not "No teams"
- Add empty state when ~both vulnerable OS versions and SW versions are
empty~ affected hosts === 0

<img width="1657" alt="Screenshot 2024-02-12 at 4 47 36 PM"
src="https://github.com/fleetdm/fleet/assets/61553566/4f0bb856-57c4-4905-b82b-b00dac6a8306">
<img width="1552" alt="Screenshot 2024-02-12 at 4 45 42 PM"
src="https://github.com/fleetdm/fleet/assets/61553566/45d6bbb5-0b31-46df-a715-7fa176029a1d">
<img width="1552" alt="Screenshot 2024-02-12 at 4 45 47 PM"
src="https://github.com/fleetdm/fleet/assets/61553566/de6c68a6-aaa4-4637-998c-569b4d189433">

---------
Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
2024-02-15 10:35:58 -07:00

40 lines
893 B
TypeScript

import React from "react";
import { ITeamSummary } from "interfaces/team";
import TeamsDropdown from "components/TeamsDropdown";
interface ITeamsHeader {
isOnGlobalTeam?: boolean;
currentTeamId?: number;
userTeams?: ITeamSummary[];
isSandboxMode?: boolean;
onTeamChange: (teamId: number) => void;
}
const TeamsHeader = ({
isOnGlobalTeam,
currentTeamId,
userTeams = [],
isSandboxMode = false,
onTeamChange,
}: ITeamsHeader) => {
if (userTeams) {
if (userTeams.length > 1 || isOnGlobalTeam) {
return (
<TeamsDropdown
currentUserTeams={userTeams}
selectedTeamId={currentTeamId}
onChange={onTeamChange}
isSandboxMode={isSandboxMode}
/>
);
}
if (userTeams.length === 1 && !isOnGlobalTeam) {
return <h1>{userTeams[0].name}</h1>;
}
}
return <></>;
};
export default TeamsHeader;