DataTable refactor.

This commit is contained in:
Mike Cao 2023-09-22 00:59:00 -07:00
parent 92ccc64e47
commit 6846355c63
17 changed files with 94 additions and 114 deletions

View file

@ -25,13 +25,13 @@ export function DataTable({
const { page, pageSize, count } = pageInfo || {};
const noResults = Boolean(query && data?.length === 0);
const handleChange = () => {
onChange?.({ query, page });
const handleChange = value => {
onChange?.({ query: value, page });
};
const handleSearch = value => {
setQuery(value);
handleChange();
handleChange(value);
};
const handlePageChange = page => {

View file

@ -7,7 +7,7 @@ import useMessages from 'components/hooks/useMessages';
import useUser from 'components/hooks/useUser';
import { ROLES } from 'lib/constants';
import { Button, Icon, Icons, Modal, ModalTrigger, Text, useToasts } from 'react-basics';
import { useState } from 'react';
import { useRef, useState } from 'react';
export function WebsitesList({
showTeam,
@ -20,16 +20,20 @@ export function WebsitesList({
const { user } = useUser();
const [params, setParams] = useState({});
const { get, useQuery } = useApi();
const { data, isLoading, error, refetch } = useQuery(
['websites', includeTeams, onlyTeams],
() =>
get(`/users/${user?.id}/websites`, {
const count = useRef(0);
const q = useQuery(
['websites', includeTeams, onlyTeams, params],
() => {
count.current += 1;
return get(`/users/${user?.id}/websites`, {
includeTeams,
onlyTeams,
...params,
}),
});
},
{ enabled: !!user },
);
const { data, refetch, isLoading, error } = q;
const { showToast } = useToasts();
const handleChange = params => {
@ -60,10 +64,10 @@ export function WebsitesList({
);
return (
<Page loading={isLoading} error={error}>
<Page loading={isLoading && count.current === 0} error={error}>
{showHeader && <PageHeader title={formatMessage(labels.websites)}>{addButton}</PageHeader>}
<WebsitesTable
data={data}
data={data?.data}
showTeam={showTeam}
showEditButton={showEditButton}
onChange={handleChange}

View file

@ -8,7 +8,6 @@ import DataTable, { DataTableStyles } from 'components/common/DataTable';
export function WebsitesTable({
data = [],
filterValue,
showTeam,
showEditButton,
openExternal = false,
@ -17,12 +16,12 @@ export function WebsitesTable({
const { formatMessage, labels } = useMessages();
const { user } = useUser();
const showTable = data && (filterValue || data?.data?.length !== 0);
const showTable = data.length !== 0;
return (
<DataTable onChange={onChange}>
{showTable && (
<GridTable data={data?.data}>
<GridTable data={data}>
<GridColumn name="name" label={formatMessage(labels.name)} />
<GridColumn name="domain" label={formatMessage(labels.domain)} />
{showTeam && (