import { Banner, Loading, SearchField } from 'react-basics'; import { useMessages } from 'components/hooks'; import Empty from 'components/common/Empty'; import Pager from 'components/common/Pager'; import styles from './DataTable.module.css'; import classNames from 'classnames'; const DEFAULT_SEARCH_DELAY = 600; export const DataTableStyles = styles; export function DataTable({ data = {}, params = {}, setParams, isLoading, error, searchDelay, showSearch = true, showPaging = true, children, }) { const { formatMessage, labels, messages } = useMessages(); const { pageSize, count } = data; const { query, page } = params; const hasData = Boolean(!isLoading && data?.data?.length); const noResults = Boolean(!isLoading && query && !hasData); const handleSearch = query => { setParams({ ...params, query }); }; const handlePageChange = page => { setParams({ ...params, page }); }; if (error) { return {formatMessage(messages.error)}; } return ( <> {(hasData || query || isLoading) && showSearch && ( )}
{hasData && typeof children === 'function' ? children(data) : children} {isLoading && } {!isLoading && !hasData && !query && ( )} {noResults && }
{showPaging && ( )} ); } export default DataTable;