import { PageContent } from 'component/common/PageContent/PageContent';
import { PageHeader } from 'component/common/PageHeader/PageHeader';
import {
TableSearch,
SortableTableHeader,
TableCell,
TablePlaceholder,
Table,
TableBody,
TableRow,
} from 'component/common/Table';
import { useTable, useGlobalFilter, useSortBy } from 'react-table';
import { CreateSegmentButton } from 'component/segments/CreateSegmentButton/CreateSegmentButton';
import { SearchHighlightProvider } from 'component/common/Table/SearchHighlightContext/SearchHighlightContext';
import { useMediaQuery, Box } from '@mui/material';
import { sortTypes } from 'utils/sortTypes';
import { useSegments } from 'hooks/api/getters/useSegments/useSegments';
import { useMemo, useEffect, useState } from 'react';
import { SegmentEmpty } from 'component/segments/SegmentEmpty/SegmentEmpty';
import { IconCell } from 'component/common/Table/cells/IconCell/IconCell';
import { DonutLarge } from '@mui/icons-material';
import { SegmentActionCell } from 'component/segments/SegmentActionCell/SegmentActionCell';
import { HighlightCell } from 'component/common/Table/cells/HighlightCell/HighlightCell';
import { DateCell } from 'component/common/Table/cells/DateCell/DateCell';
import theme from 'themes/theme';
import { SegmentDocsWarning } from 'component/segments/SegmentDocs/SegmentDocs';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
export const SegmentTable = () => {
const { segments, loading } = useSegments();
const isSmallScreen = useMediaQuery(theme.breakpoints.down('md'));
const [initialState] = useState({
sortBy: [{ id: 'createdAt', desc: false }],
hiddenColumns: ['description'],
});
const data = useMemo(() => {
return (
segments ??
Array(5).fill({
name: 'Segment name',
description: 'Segment descripton',
createdAt: new Date().toISOString(),
createdBy: 'user',
})
);
}, [segments]);
const {
getTableProps,
getTableBodyProps,
headerGroups,
rows,
prepareRow,
state: { globalFilter },
setGlobalFilter,
setHiddenColumns,
} = useTable(
{
initialState,
columns: COLUMNS as any,
data: data as any,
sortTypes,
autoResetGlobalFilter: false,
autoResetSortBy: false,
disableSortRemove: true,
defaultColumn: {
Cell: HighlightCell,
},
},
useGlobalFilter,
useSortBy
);
useEffect(() => {
const hiddenColumns = ['description'];
if (isSmallScreen) {
hiddenColumns.push('createdAt', 'createdBy');
}
setHiddenColumns(hiddenColumns);
}, [setHiddenColumns, isSmallScreen]);
return (
>
}
/>
}
isLoading={loading}
>
}
elseShow={() => (
<>
{rows.map(row => {
prepareRow(row);
return (
{row.cells.map(cell => (
{cell.render('Cell')}
))}
);
})}
0
}
show={
No segments found matching “
{globalFilter}”
}
/>
>
)}
/>
);
};
const COLUMNS = [
{
id: 'Icon',
width: '1%',
disableGlobalFilter: true,
disableSortBy: true,
Cell: () => } />,
},
{
Header: 'Name',
accessor: 'name',
width: '80%',
Cell: ({ value, row: { original } }: any) => (
),
},
{
Header: 'Created at',
accessor: 'createdAt',
minWidth: 150,
Cell: DateCell,
disableGlobalFilter: true,
},
{
Header: 'Created by',
accessor: 'createdBy',
},
{
Header: 'Actions',
id: 'Actions',
align: 'center',
width: '1%',
disableSortBy: true,
disableGlobalFilter: true,
Cell: ({ row: { original } }: any) => (
),
},
{
accessor: 'description',
},
];