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', }, ];