wix-style-react
Version:
57 lines (50 loc) • 1.52 kB
JavaScript
/* eslint-disable */
() => {
const containerRef = React.useRef(null);
const [data, setData] = React.useState([]);
const [container, setContainer] = React.useState(null);
const fetchMoreData = () =>
Promise.resolve(fetch(`/api/table?limit=${5}&offset=${data.length}`))
.then(results => {
setData([...data, ...results]);
})
React.useEffect(() => {
setContainer(containerRef);
fetchMoreData();
}, []);
const columns = [
{ title: 'First', render: row => row.firstName },
{ title: 'Last', render: row => row.lastName },
];
const renderToolbar = selectionContext => {
return (
<TableToolbar>
<TableToolbar.ItemGroup position="start">
<TableToolbar.Item>
<TableToolbar.SelectedCount>{`${selectionContext.selectedCount} Selected`}</TableToolbar.SelectedCount>
</TableToolbar.Item>
</TableToolbar.ItemGroup>
</TableToolbar>
);
};
return (
<div ref={containerRef} style={{ maxHeight: '258px', overflow: 'auto' }}>
<Card>
<Table
infiniteScroll
loadMore={fetchMoreData}
itemsPerPage={20}
hasMore={true}
scrollElement={container && container.current}
totalSelectableCount={180}
showSelection
data={data}
columns={columns}
>
<Table.ToolbarContainer>{renderToolbar}</Table.ToolbarContainer>
<Table.Content />
</Table>
</Card>
</div>
);
};