diff --git a/src/app/(main)/reports/ReportsDataTable.tsx b/src/app/(main)/reports/ReportsDataTable.tsx index 7c99fb25..b03edfc2 100644 --- a/src/app/(main)/reports/ReportsDataTable.tsx +++ b/src/app/(main)/reports/ReportsDataTable.tsx @@ -14,12 +14,8 @@ export default function ReportsDataTable({ }) { const queryResult = useReports({ websiteId, teamId }); - if (queryResult?.result?.data?.length === 0) { - return children; - } - return ( - + children}> {({ data }) => } ); diff --git a/src/app/(main)/settings/teams/TeamsDataTable.tsx b/src/app/(main)/settings/teams/TeamsDataTable.tsx index 6baeba33..e8563b2e 100644 --- a/src/app/(main)/settings/teams/TeamsDataTable.tsx +++ b/src/app/(main)/settings/teams/TeamsDataTable.tsx @@ -15,12 +15,8 @@ export function TeamsDataTable({ const { user } = useLogin(); const queryResult = useTeams(user.id); - if (queryResult?.result?.data?.length === 0) { - return children; - } - return ( - + children}> {({ data }) => { return ; }} diff --git a/src/app/(main)/settings/users/UsersDataTable.tsx b/src/app/(main)/settings/users/UsersDataTable.tsx index 681b4dc2..03addc74 100644 --- a/src/app/(main)/settings/users/UsersDataTable.tsx +++ b/src/app/(main)/settings/users/UsersDataTable.tsx @@ -12,12 +12,8 @@ export function UsersDataTable({ }) { const queryResult = useUsers(); - if (queryResult?.result?.data?.length === 0) { - return children; - } - return ( - + children}> {({ data }) => } ); diff --git a/src/app/(main)/settings/websites/WebsitesDataTable.tsx b/src/app/(main)/settings/websites/WebsitesDataTable.tsx index 1780dfb4..d91bbeef 100644 --- a/src/app/(main)/settings/websites/WebsitesDataTable.tsx +++ b/src/app/(main)/settings/websites/WebsitesDataTable.tsx @@ -18,12 +18,8 @@ export function WebsitesDataTable({ }) { const queryResult = useWebsites({ teamId }); - if (queryResult?.result?.data?.length === 0) { - return children; - } - return ( - + children}> {({ data }) => ( + children}> {({ data }) => } ); diff --git a/src/components/common/DataTable.tsx b/src/components/common/DataTable.tsx index c3bab88f..22373f60 100644 --- a/src/components/common/DataTable.tsx +++ b/src/components/common/DataTable.tsx @@ -1,11 +1,12 @@ import { ReactNode } from 'react'; import classNames from 'classnames'; -import { Banner, Loading, SearchField } from 'react-basics'; +import { Loading, SearchField } from 'react-basics'; import { useMessages, useNavigation } from 'components/hooks'; import Empty from 'components/common/Empty'; import Pager from 'components/common/Pager'; import { PagedQueryResult } from 'lib/types'; import styles from './DataTable.module.css'; +import { LoadingPanel } from 'components/common/LoadingPanel'; const DEFAULT_SEARCH_DELAY = 600; @@ -14,6 +15,7 @@ export interface DataTableProps { searchDelay?: number; allowSearch?: boolean; allowPaging?: boolean; + renderEmpty?: () => ReactNode; children: ReactNode | ((data: any) => ReactNode); } @@ -22,6 +24,7 @@ export function DataTable({ searchDelay = 600, allowSearch = true, allowPaging = true, + renderEmpty, children, }: DataTableProps) { const { formatMessage, labels, messages } = useMessages(); @@ -29,7 +32,7 @@ export function DataTable({ result, params, setParams, - query: { error, isLoading }, + query: { error, isLoading, isFetched }, } = queryResult || {}; const { page, pageSize, count, data } = result || {}; const { query } = params || {}; @@ -46,10 +49,6 @@ export function DataTable({ router.push(renderUrl({ page })); }; - if (error) { - return {formatMessage(messages.error)}; - } - return ( <> {allowSearch && (hasData || query) && ( @@ -62,23 +61,27 @@ export function DataTable({ placeholder={formatMessage(labels.search)} /> )} -
- {hasData ? (typeof children === 'function' ? children(result) : children) : null} - {isLoading && } - {!isLoading && !hasData && !query && } - {!isLoading && noResults && } -
- {allowPaging && hasData && ( - - )} + +
+ {hasData ? (typeof children === 'function' ? children(result) : children) : null} + {isLoading && } + {!isLoading && !hasData && !query && (renderEmpty ? renderEmpty() : )} + {!isLoading && noResults && } +
+ {allowPaging && hasData && ( + + )} +
); }