/**
* WordPress dependencies
*/
import { useState, useMemo } from '@wordpress/element';
/**
* Internal dependencies
*/
import DataViews from '../index';
import {
LAYOUT_ACTIVITY,
LAYOUT_GRID,
LAYOUT_LIST,
LAYOUT_TABLE,
} from '../../constants';
import filterSortAndPaginate from '../../utils/filter-sort-and-paginate';
import type { View } from '../../types';
import { actions, data, fields } from './fixtures';
const InfiniteScroll = () => {
const [ view, setView ] = useState< View >( {
type: LAYOUT_GRID,
search: '',
startPosition: 1,
perPage: 15, // Start with a small number to demonstrate pagination
filters: [],
fields: [ 'satellites' ],
titleField: 'title',
descriptionField: 'description',
mediaField: 'image',
infiniteScrollEnabled: true, // Enable infinite scroll by default
} );
const { data: shownData, paginationInfo } = useMemo( () => {
return filterSortAndPaginate( data, view, fields );
}, [ view ] );
return (
<>
item.id.toString() }
paginationInfo={ paginationInfo }
data={ shownData }
view={ view }
fields={ fields }
onChangeView={ setView }
actions={ actions }
defaultLayouts={ {
[ LAYOUT_TABLE ]: {},
[ LAYOUT_GRID ]: {},
[ LAYOUT_LIST ]: {},
[ LAYOUT_ACTIVITY ]: {},
} }
/>
>
);
};
export default InfiniteScroll;