@openmrs/esm-react-utils 8.0.1-pre.3581 → 8.0.1-pre.3592
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/usePaginationInfo.d.ts +4 -0
- package/dist/usePaginationInfo.js +37 -0
- package/mock.tsx +2 -0
- package/package.json +12 -12
- package/src/index.ts +1 -0
- package/src/usePaginationInfo.ts +32 -0
package/.turbo/turbo-build.log
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export * from './useOnClickOutside';
|
|
|
37
37
|
export * from './useOnVisible';
|
|
38
38
|
export * from './useOpenmrsSWR';
|
|
39
39
|
export * from './usePagination';
|
|
40
|
+
export * from './usePaginationInfo';
|
|
40
41
|
export * from './usePatient';
|
|
41
42
|
export * from './usePrimaryIdentifierResource';
|
|
42
43
|
export * from './useRenderableExtensions';
|
package/dist/index.js
CHANGED
|
@@ -37,6 +37,7 @@ export * from "./useOnClickOutside.js";
|
|
|
37
37
|
export * from "./useOnVisible.js";
|
|
38
38
|
export * from "./useOpenmrsSWR.js";
|
|
39
39
|
export * from "./usePagination.js";
|
|
40
|
+
export * from "./usePaginationInfo.js";
|
|
40
41
|
export * from "./usePatient.js";
|
|
41
42
|
export * from "./usePrimaryIdentifierResource.js";
|
|
42
43
|
export * from "./useRenderableExtensions.js";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
export function usePaginationInfo(pageSize, totalItems, pageNumber, currentItems) {
|
|
3
|
+
const pageSizes = useMemo(()=>{
|
|
4
|
+
let numberOfPages = Math.ceil(totalItems / pageSize);
|
|
5
|
+
if (isNaN(numberOfPages)) {
|
|
6
|
+
numberOfPages = 0;
|
|
7
|
+
}
|
|
8
|
+
return [
|
|
9
|
+
...Array(numberOfPages).keys()
|
|
10
|
+
].map((x)=>{
|
|
11
|
+
return (x + 1) * pageSize;
|
|
12
|
+
});
|
|
13
|
+
}, [
|
|
14
|
+
pageSize,
|
|
15
|
+
totalItems
|
|
16
|
+
]);
|
|
17
|
+
const pageItemsCount = useMemo(()=>{
|
|
18
|
+
let pageItemsCount = 0;
|
|
19
|
+
if (pageSize > totalItems) {
|
|
20
|
+
pageItemsCount = totalItems;
|
|
21
|
+
} else if (pageSize * pageNumber > totalItems) {
|
|
22
|
+
pageItemsCount = pageSize * (pageNumber - 1) + currentItems;
|
|
23
|
+
} else {
|
|
24
|
+
pageItemsCount = pageSize * pageNumber;
|
|
25
|
+
}
|
|
26
|
+
return pageItemsCount;
|
|
27
|
+
}, [
|
|
28
|
+
pageSize,
|
|
29
|
+
totalItems,
|
|
30
|
+
pageNumber,
|
|
31
|
+
currentItems
|
|
32
|
+
]);
|
|
33
|
+
return {
|
|
34
|
+
pageSizes,
|
|
35
|
+
pageItemsCount
|
|
36
|
+
};
|
|
37
|
+
}
|
package/mock.tsx
CHANGED
|
@@ -7,6 +7,7 @@ import { createGlobalStore } from '@openmrs/esm-state/mock';
|
|
|
7
7
|
import {
|
|
8
8
|
isDesktop as realIsDesktop,
|
|
9
9
|
usePagination as realUsePagination,
|
|
10
|
+
usePaginationInfo as realUsePaginationInfo,
|
|
10
11
|
useOpenmrsPagination as realUseOpenmrsrPagination,
|
|
11
12
|
useOpenmrsInfinite as realUseOpenmrsInfinite,
|
|
12
13
|
useOpenmrsFetchAll as realUseOpenmrsFetchAll,
|
|
@@ -77,6 +78,7 @@ export const Extension = vi.fn((props: any) => <slot />);
|
|
|
77
78
|
export const useFeatureFlag = vi.fn().mockReturnValue(true);
|
|
78
79
|
|
|
79
80
|
export const usePagination = vi.fn(realUsePagination);
|
|
81
|
+
export const usePaginationInfo = vi.fn(realUsePaginationInfo);
|
|
80
82
|
|
|
81
83
|
export const useOpenmrsPagination = vi.fn(realUseOpenmrsrPagination);
|
|
82
84
|
export const useOpenmrsInfinite = vi.fn(realUseOpenmrsInfinite);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmrs/esm-react-utils",
|
|
3
|
-
"version": "8.0.1-pre.
|
|
3
|
+
"version": "8.0.1-pre.3592",
|
|
4
4
|
"license": "MPL-2.0",
|
|
5
5
|
"description": "React utilities for OpenMRS.",
|
|
6
6
|
"type": "module",
|
|
@@ -79,17 +79,17 @@
|
|
|
79
79
|
"swr": "2.x"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
|
-
"@openmrs/esm-api": "8.0.1-pre.
|
|
83
|
-
"@openmrs/esm-config": "8.0.1-pre.
|
|
84
|
-
"@openmrs/esm-context": "8.0.1-pre.
|
|
85
|
-
"@openmrs/esm-emr-api": "8.0.1-pre.
|
|
86
|
-
"@openmrs/esm-error-handling": "8.0.1-pre.
|
|
87
|
-
"@openmrs/esm-extensions": "8.0.1-pre.
|
|
88
|
-
"@openmrs/esm-feature-flags": "8.0.1-pre.
|
|
89
|
-
"@openmrs/esm-globals": "8.0.1-pre.
|
|
90
|
-
"@openmrs/esm-navigation": "8.0.1-pre.
|
|
91
|
-
"@openmrs/esm-state": "8.0.1-pre.
|
|
92
|
-
"@openmrs/esm-utils": "8.0.1-pre.
|
|
82
|
+
"@openmrs/esm-api": "8.0.1-pre.3592",
|
|
83
|
+
"@openmrs/esm-config": "8.0.1-pre.3592",
|
|
84
|
+
"@openmrs/esm-context": "8.0.1-pre.3592",
|
|
85
|
+
"@openmrs/esm-emr-api": "8.0.1-pre.3592",
|
|
86
|
+
"@openmrs/esm-error-handling": "8.0.1-pre.3592",
|
|
87
|
+
"@openmrs/esm-extensions": "8.0.1-pre.3592",
|
|
88
|
+
"@openmrs/esm-feature-flags": "8.0.1-pre.3592",
|
|
89
|
+
"@openmrs/esm-globals": "8.0.1-pre.3592",
|
|
90
|
+
"@openmrs/esm-navigation": "8.0.1-pre.3592",
|
|
91
|
+
"@openmrs/esm-state": "8.0.1-pre.3592",
|
|
92
|
+
"@openmrs/esm-utils": "8.0.1-pre.3592",
|
|
93
93
|
"@swc/cli": "^0.7.7",
|
|
94
94
|
"@swc/core": "^1.11.29",
|
|
95
95
|
"@vitest/coverage-v8": "^4.0.7",
|
package/src/index.ts
CHANGED
|
@@ -37,6 +37,7 @@ export * from './useOnClickOutside';
|
|
|
37
37
|
export * from './useOnVisible';
|
|
38
38
|
export * from './useOpenmrsSWR';
|
|
39
39
|
export * from './usePagination';
|
|
40
|
+
export * from './usePaginationInfo';
|
|
40
41
|
export * from './usePatient';
|
|
41
42
|
export * from './usePrimaryIdentifierResource';
|
|
42
43
|
export * from './useRenderableExtensions';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
export function usePaginationInfo(pageSize: number, totalItems: number, pageNumber: number, currentItems: number) {
|
|
4
|
+
const pageSizes = useMemo(() => {
|
|
5
|
+
let numberOfPages = Math.ceil(totalItems / pageSize);
|
|
6
|
+
if (isNaN(numberOfPages)) {
|
|
7
|
+
numberOfPages = 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return [...Array(numberOfPages).keys()].map((x) => {
|
|
11
|
+
return (x + 1) * pageSize;
|
|
12
|
+
});
|
|
13
|
+
}, [pageSize, totalItems]);
|
|
14
|
+
|
|
15
|
+
const pageItemsCount = useMemo(() => {
|
|
16
|
+
let pageItemsCount = 0;
|
|
17
|
+
if (pageSize > totalItems) {
|
|
18
|
+
pageItemsCount = totalItems;
|
|
19
|
+
} else if (pageSize * pageNumber > totalItems) {
|
|
20
|
+
pageItemsCount = pageSize * (pageNumber - 1) + currentItems;
|
|
21
|
+
} else {
|
|
22
|
+
pageItemsCount = pageSize * pageNumber;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return pageItemsCount;
|
|
26
|
+
}, [pageSize, totalItems, pageNumber, currentItems]);
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
pageSizes,
|
|
30
|
+
pageItemsCount,
|
|
31
|
+
};
|
|
32
|
+
}
|