/** * WordPress dependencies */ import { Button, SelectControl } from '@wordpress/components'; import { createInterpolateElement, memo, useContext } from '@wordpress/element'; import { sprintf, __, _x, isRTL } from '@wordpress/i18n'; import { next, previous } from '@wordpress/icons'; import { Stack } from '@wordpress/ui'; /** * Internal dependencies */ import DataViewsContext from '../dataviews-context'; export function DataViewsPagination() { const { view, onChangeView, paginationInfo: { totalItems = 0, totalPages }, } = useContext( DataViewsContext ); if ( ! totalItems || ! totalPages || view.infiniteScrollEnabled ) { return null; } const currentPage = view.page ?? 1; const pageSelectOptions = Array.from( Array( totalPages ) ).map( ( _, i ) => { const page = i + 1; return { value: page.toString(), label: page.toString(), 'aria-label': currentPage === page ? sprintf( // translators: 1: current page number. 2: total number of pages. __( 'Page %1$d of %2$d' ), currentPage, totalPages ) : page.toString(), }; } ); return ( !! totalItems && totalPages !== 1 && ( { createInterpolateElement( sprintf( // translators: 1: Current page number, 2: Total number of pages. _x( '
Page
%1$s
of %2$d
', 'paging' ), '', totalPages ), { div:
, CurrentPage: ( { onChangeView( { ...view, page: +newValue, } ); } } size="small" variant="minimal" /> ), } ) }