fleet/frontend/pages/SoftwarePage/SoftwareAddPage/SoftwareFleetMaintained/FleetMaintainedAppsTable/FleetMaintainedAppsTableConfig.tsx
Gabriel Hernandez 314219a65a
Add UI for adding fleet maintained apps (#22204)
relates to #21775

> NOTE: there still needs to be integrated with the API when this work
is done.

Adds the UI for adding Fleet maintained applications. This includes:

**the view to see all the fleet maintained apps**


![image](https://github.com/user-attachments/assets/f49983d1-df6d-4721-b50d-a4fa78b2c85e)

**The fleet maintained app details Page:**


![image](https://github.com/user-attachments/assets/974c4a83-211e-45de-b0cc-2c5f6e055896)



<!-- Note that API documentation changes are now addressed by the
product design team. -->

- [x] Changes file added for user-visible changes in `changes/`,
`orbit/changes/` or `ee/fleetd-chrome/changes`.
See [Changes
files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/Committing-Changes.md#changes-files)
for more information.
- [ ] Added/updated tests
- [ ] Manual QA for all new/changed functionality
2024-09-20 15:47:01 +01:00

81 lines
2.5 KiB
TypeScript

import React from "react";
import { Column } from "react-table";
import { InjectedRouter } from "react-router";
import PATHS from "router/paths";
import { IHeaderProps, IStringCellProps } from "interfaces/datatable_config";
import { APPLE_PLATFORM_DISPLAY_NAMES } from "interfaces/platform";
import { IFleetMaintainedApp } from "interfaces/software";
import { buildQueryStringFromParams } from "utilities/url";
import TextCell from "components/TableContainer/DataTable/TextCell";
import HeaderCell from "components/TableContainer/DataTable/HeaderCell";
import SoftwareNameCell from "components/TableContainer/DataTable/SoftwareNameCell";
import TooltipWrapper from "components/TooltipWrapper";
type IFleetMaintainedAppsTableConfig = Column<IFleetMaintainedApp>;
type ITableStringCellProps = IStringCellProps<IFleetMaintainedApp>;
type ITableHeaderProps = IHeaderProps<IFleetMaintainedApp>;
// eslint-disable-next-line import/prefer-default-export
export const generateTableConfig = (
router: InjectedRouter,
teamId: number
): IFleetMaintainedAppsTableConfig[] => {
return [
{
Header: (cellProps: ITableHeaderProps) => (
<HeaderCell value="Name" isSortedDesc={cellProps.column.isSortedDesc} />
),
accessor: "name",
Cell: (cellProps: ITableStringCellProps) => {
const { name, id } = cellProps.row.original;
const path = `${PATHS.SOFTWARE_FLEET_MAINTAINED_DETAILS(
id
)}?${buildQueryStringFromParams({
team_id: teamId,
})}`;
return <SoftwareNameCell name={name} path={path} router={router} />;
},
sortType: "caseInsensitive",
},
{
Header: "Version",
accessor: "version",
Cell: ({ cell }: ITableStringCellProps) => (
<TextCell value={cell.value} />
),
disableSortBy: true,
},
{
Header: () => {
const titleWithToolTip = (
<TooltipWrapper
tipContent={
<>
Currently, only macOS apps are <br />
supported.
</>
}
>
Platform
</TooltipWrapper>
);
return <HeaderCell value={titleWithToolTip} disableSortBy />;
},
accessor: "platform",
Cell: ({ cell }: ITableStringCellProps) => (
<TextCell
value={
APPLE_PLATFORM_DISPLAY_NAMES[
cell.value as keyof typeof APPLE_PLATFORM_DISPLAY_NAMES
]
}
/>
),
disableSortBy: true,
},
];
};