diff --git a/src/__tests__/patients/list/ViewPatients.test.tsx b/src/__tests__/patients/list/ViewPatients.test.tsx index fc32fd1fb3..0167d31d6f 100644 --- a/src/__tests__/patients/list/ViewPatients.test.tsx +++ b/src/__tests__/patients/list/ViewPatients.test.tsx @@ -11,6 +11,7 @@ import { act } from 'react-dom/test-utils' import * as ButtonBarProvider from 'page-header/ButtonBarProvider' import format from 'date-fns/format' import Page from 'clients/Page' +import { defaultPageSize } from 'components/PageComponent' import ViewPatients from '../../../patients/list/ViewPatients' import PatientRepository from '../../../clients/db/PatientRepository' import * as patientSlice from '../../../patients/patients-slice' @@ -188,7 +189,7 @@ describe('Patients', () => { }, { number: 1, - size: 1, + size: defaultPageSize.value, nextPageInfo: { index: null }, direction: 'next', previousPageInfo: { index: null }, diff --git a/src/components/PageComponent.tsx b/src/components/PageComponent.tsx index 9a2ed59ac1..d07eb98a9c 100644 --- a/src/components/PageComponent.tsx +++ b/src/components/PageComponent.tsx @@ -1,13 +1,24 @@ import React from 'react' -import { Button } from '@hospitalrun/components' +import { Button, Select } from '@hospitalrun/components' import { useTranslation } from 'react-i18next' +const pageSizes = [ + { label: '25', value: 25 }, + { label: '50', value: 50 }, + { label: '100', value: 100 }, + { label: '200', value: 200 }, + { label: 'All', value: undefined }, +] + +export const defaultPageSize = pageSizes[0] + const PageComponent = ({ hasNext, hasPrevious, pageNumber, setPreviousPageRequest, setNextPageRequest, + onPageSizeChange, }: any) => { const { t } = useTranslation() @@ -17,25 +28,34 @@ const PageComponent = ({ key="actions.previous" outlined disabled={!hasPrevious} - style={{ float: 'left' }} + style={{ float: 'left', marginRight: '5px' }} color="success" onClick={setPreviousPageRequest} > {t('actions.previous')} -
- {t('actions.page')} {pageNumber} -
+
+ {t('actions.page')} {pageNumber} +
+
+ +
) } diff --git a/src/patients/list/ViewPatients.tsx b/src/patients/list/ViewPatients.tsx index d25226841d..6057fcd6ca 100644 --- a/src/patients/list/ViewPatients.tsx +++ b/src/patients/list/ViewPatients.tsx @@ -7,7 +7,7 @@ import { useButtonToolbarSetter } from 'page-header/ButtonBarProvider' import format from 'date-fns/format' import SortRequest from 'clients/db/SortRequest' import PageRequest from 'clients/db/PageRequest' -import PageComponent from 'components/PageComponent' +import PageComponent, { defaultPageSize } from 'components/PageComponent' import useUpdateEffect from 'hooks/useUpdateEffect' import { RootState } from '../../store' import { searchPatients } from '../patients-slice' @@ -28,7 +28,7 @@ const ViewPatients = () => { const setButtonToolBar = useButtonToolbarSetter() const defaultPageRequest = useRef({ - size: 1, + size: defaultPageSize.value, number: 1, nextPageInfo: { index: null }, previousPageInfo: { index: null }, @@ -131,29 +131,43 @@ const ViewPatients = () => { setSearchText(event.target.value) } + const onPageSizeChange = (event: React.ChangeEvent) => { + const newPageSize = parseInt(event.target.value, 10) + setUserPageRequest(() => ({ + size: newPageSize, + number: 1, + nextPageInfo: { index: null }, + previousPageInfo: { index: null }, + direction: 'next', + })) + } + return ( - - - - - - - - {isLoading ? loadingIndicator : table} +
+ + + + + + + + {isLoading ? loadingIndicator : table} + - +
) }