import { PageContent } from 'component/common/PageContent/PageContent';
import { PageHeader } from 'component/common/PageHeader/PageHeader';
import { useEnvironments } from 'hooks/api/getters/useEnvironments/useEnvironments';
import { CreateEnvironmentButton } from 'component/environments/CreateEnvironmentButton/CreateEnvironmentButton';
import { useTable, useGlobalFilter } from 'react-table';
import {
TableSearch,
SortableTableHeader,
Table,
} from 'component/common/Table';
import { useCallback } from 'react';
import { SearchHighlightProvider } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext';
import { TableBody } from '@mui/material';
import { CloudCircle } from '@mui/icons-material';
import { IconCell } from 'component/common/Table/cells/IconCell/IconCell';
import { EnvironmentActionCell } from 'component/environments/EnvironmentActionCell/EnvironmentActionCell';
import { EnvironmentNameCell } from 'component/environments/EnvironmentNameCell/EnvironmentNameCell';
import { EnvironmentRow } from 'component/environments/EnvironmentRow/EnvironmentRow';
import { MoveListItem } from 'hooks/useDragItem';
import useToast from 'hooks/useToast';
import useEnvironmentApi, {
createSortOrderPayload,
} from 'hooks/api/actions/useEnvironmentApi/useEnvironmentApi';
import { formatUnknownError } from 'utils/formatUnknownError';
export const EnvironmentTable = () => {
const { changeSortOrder } = useEnvironmentApi();
const { setToastApiError } = useToast();
const { environments, mutateEnvironments } = useEnvironments();
const moveListItem: MoveListItem = useCallback(
async (dragIndex: number, dropIndex: number, save = false) => {
const copy = [...environments];
const tmp = copy[dragIndex];
copy.splice(dragIndex, 1);
copy.splice(dropIndex, 0, tmp);
await mutateEnvironments(copy);
if (save) {
try {
await changeSortOrder(createSortOrderPayload(copy));
} catch (error: unknown) {
setToastApiError(formatUnknownError(error));
}
}
},
[changeSortOrder, environments, mutateEnvironments, setToastApiError]
);
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
state: { globalFilter },
setGlobalFilter,
} = useTable(
{
columns: COLUMNS as any,
data: environments,
autoResetGlobalFilter: false,
},
useGlobalFilter
);
const headerSearch = (
);
const headerActions = (
<>
{headerSearch}
>
);
const header = ;
return (
{rows.map(row => {
prepareRow(row);
return (
);
})}
);
};
const COLUMNS = [
{
id: 'Icon',
canSort: false,
Cell: () => } />,
},
{
Header: 'Name',
accessor: 'name',
width: '100%',
canSort: false,
Cell: (props: any) => (
),
},
{
Header: 'Actions',
id: 'Actions',
align: 'center',
canSort: false,
Cell: (props: any) => (
),
},
];