@openmrs/esm-react-utils 8.0.1-pre.3585 → 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.
@@ -1,3 +1,3 @@
1
- [0] Successfully compiled: 52 files with swc (164.14ms)
1
+ [0] Successfully compiled: 53 files with swc (174.46ms)
2
2
  [0] swc --strip-leading-paths src -d dist exited with code 0
3
3
  [1] tsc --project tsconfig.build.json exited with code 0
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,4 @@
1
+ export declare function usePaginationInfo(pageSize: number, totalItems: number, pageNumber: number, currentItems: number): {
2
+ pageSizes: number[];
3
+ pageItemsCount: number;
4
+ };
@@ -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.3585",
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.3585",
83
- "@openmrs/esm-config": "8.0.1-pre.3585",
84
- "@openmrs/esm-context": "8.0.1-pre.3585",
85
- "@openmrs/esm-emr-api": "8.0.1-pre.3585",
86
- "@openmrs/esm-error-handling": "8.0.1-pre.3585",
87
- "@openmrs/esm-extensions": "8.0.1-pre.3585",
88
- "@openmrs/esm-feature-flags": "8.0.1-pre.3585",
89
- "@openmrs/esm-globals": "8.0.1-pre.3585",
90
- "@openmrs/esm-navigation": "8.0.1-pre.3585",
91
- "@openmrs/esm-state": "8.0.1-pre.3585",
92
- "@openmrs/esm-utils": "8.0.1-pre.3585",
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
+ }