// This component is used on DashboardPage.tsx > Software.tsx, // Host Details / Device User > Software.tsx, and SoftwarePage.tsx import React from "react"; import CustomLink from "components/CustomLink"; import EmptyTable from "components/EmptyTable"; import { IEmptyTableProps } from "interfaces/empty_table"; import { ISoftwareDropdownFilterVal } from "pages/SoftwarePage/SoftwareTitles/SoftwareTable/helpers"; export interface IEmptySoftwareTableProps { softwareFilter?: ISoftwareDropdownFilterVal; /** tableName is displayed in the search empty state */ tableName?: string; isSoftwareDisabled?: boolean; /** noSearchQuery is true when there is no search string filtering the results */ noSearchQuery?: boolean; /** isCollectingSoftware is only used on the Dashboard page with a TODO to revisit */ isCollectingSoftware?: boolean; /** true if the team has any software installers or VPP apps available to install on hosts */ installableSoftwareExists?: boolean; } const generateTypeText = ( tableName: string, softwareFilter?: ISoftwareDropdownFilterVal ) => { if (softwareFilter === "installableSoftware") { return "installable software"; } if (softwareFilter === "vulnerableSoftware") { return "vulnerable software"; } return tableName; }; const EmptySoftwareTable = ({ softwareFilter = "allSoftware", tableName = "software", isSoftwareDisabled, noSearchQuery, isCollectingSoftware, installableSoftwareExists, }: IEmptySoftwareTableProps): JSX.Element => { const softwareTypeText = generateTypeText(tableName, softwareFilter); const emptySoftware: IEmptyTableProps = { header: "No items match the current search criteria", info: `Expecting to see ${softwareTypeText}? Check back later.`, }; if (noSearchQuery && softwareFilter === "allSoftware") { emptySoftware.header = "No software detected"; } if (softwareFilter === "allSoftware" && installableSoftwareExists) { emptySoftware.header = "No software detected"; emptySoftware.info = "Install software on your hosts to see versions."; } if (isCollectingSoftware) { emptySoftware.header = "No software detected"; emptySoftware.info = `Expecting to see ${softwareTypeText}? Check back later.`; } if (isSoftwareDisabled) { emptySoftware.header = "Software inventory disabled"; emptySoftware.info = ( <> Users with the admin role can{" "} . ); } return ( ); }; export default EmptySoftwareTable;