import { Box, Pagination, Table, Tile } from '@rocket.chat/fuselage';
import { useDebouncedValue } from '@rocket.chat/fuselage-hooks';
import React, { useState, useEffect, useCallback, forwardRef } from 'react';
import flattenChildren from 'react-keyed-flatten-children';
import { useTranslation } from '../../contexts/TranslationContext';
import HeaderCell from './HeaderCell';
import LoadingRow from './LoadingRow';
import ScrollableContentWrapper from '../ScrollableContentWrapper';
const GenericTable = ({
children,
fixed = true,
header,
params: paramsDefault = '',
renderFilter,
renderRow: RenderRow,
results,
setParams = () => { },
total,
...props
}, ref) => {
const t = useTranslation();
const [filter, setFilter] = useState(paramsDefault);
const [itemsPerPage, setItemsPerPage] = useState(25);
const [current, setCurrent] = useState(0);
const params = useDebouncedValue(filter, 500);
useEffect(() => {
setParams({ ...params, current, itemsPerPage });
}, [params, current, itemsPerPage, setParams]);
const Loading = useCallback(() => {
const headerCells = flattenChildren(header);
return Array.from({ length: 10 }, (_, i) => );
}, [header]);
const showingResultsLabel = useCallback(({ count, current, itemsPerPage }) => t('Showing results %s - %s of %s', current + 1, Math.min(current + itemsPerPage, count), count), [t]);
const itemsPerPageLabel = useCallback(() => t('Items_per_page:'), [t]);
return <>
{typeof renderFilter === 'function' ? renderFilter({ onChange: setFilter, ...props }) : null}
{results && !results.length
?
{t('No_data_found')}
: <>
{header &&
{header}
}
{RenderRow && (
results
? results.map((props, index) => )
:
)}
{children && (results ? results.map(children) : )}
>
}
>;
};
export default Object.assign(forwardRef(GenericTable), {
HeaderCell,
});