@trackunit/react-components 2.2.2-alpha-0af54c028ac.0 → 2.2.3
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/index.cjs.js +18 -6
- package/index.esm.js +18 -6
- package/package.json +6 -6
package/index.cjs.js
CHANGED
|
@@ -13118,17 +13118,29 @@ const useRelayPagination = ({ onReset, pageSize, initialCursor } = { pageSize: d
|
|
|
13118
13118
|
const { hasNextPage, endCursor, hasPreviousPage, startCursor } = pageInfo ?? {};
|
|
13119
13119
|
const nextPage = react.useCallback(() => {
|
|
13120
13120
|
if (hasNextPage === true) {
|
|
13121
|
-
|
|
13122
|
-
|
|
13123
|
-
|
|
13121
|
+
const after = endCursor === null ? undefined : endCursor;
|
|
13122
|
+
setVariables(prev => {
|
|
13123
|
+
// Idempotent: when the resolved variables are unchanged (e.g. the
|
|
13124
|
+
// backend keeps reporting `hasNextPage: true` without advancing the
|
|
13125
|
+
// cursor), return the same reference so React skips the re-render.
|
|
13126
|
+
// Without this bail-out the forward auto-load in `useBidirectionalScroll`
|
|
13127
|
+
// re-runs every render and calls `nextPage` again, causing an infinite
|
|
13128
|
+
// update loop.
|
|
13129
|
+
if (prev.after === after && prev.first === pageSize && prev.before === undefined && prev.last === undefined) {
|
|
13130
|
+
return prev;
|
|
13131
|
+
}
|
|
13132
|
+
return { after, first: pageSize };
|
|
13124
13133
|
});
|
|
13125
13134
|
}
|
|
13126
13135
|
}, [hasNextPage, endCursor, pageSize]);
|
|
13127
13136
|
const previousPage = react.useCallback(() => {
|
|
13128
13137
|
if (hasPreviousPage === true) {
|
|
13129
|
-
|
|
13130
|
-
|
|
13131
|
-
last
|
|
13138
|
+
const before = startCursor === null ? undefined : startCursor;
|
|
13139
|
+
setVariables(prev => {
|
|
13140
|
+
if (prev.before === before && prev.last === pageSize && prev.after === undefined && prev.first === undefined) {
|
|
13141
|
+
return prev;
|
|
13142
|
+
}
|
|
13143
|
+
return { before, last: pageSize };
|
|
13132
13144
|
});
|
|
13133
13145
|
}
|
|
13134
13146
|
}, [hasPreviousPage, startCursor, pageSize]);
|
package/index.esm.js
CHANGED
|
@@ -13116,17 +13116,29 @@ const useRelayPagination = ({ onReset, pageSize, initialCursor } = { pageSize: d
|
|
|
13116
13116
|
const { hasNextPage, endCursor, hasPreviousPage, startCursor } = pageInfo ?? {};
|
|
13117
13117
|
const nextPage = useCallback(() => {
|
|
13118
13118
|
if (hasNextPage === true) {
|
|
13119
|
-
|
|
13120
|
-
|
|
13121
|
-
|
|
13119
|
+
const after = endCursor === null ? undefined : endCursor;
|
|
13120
|
+
setVariables(prev => {
|
|
13121
|
+
// Idempotent: when the resolved variables are unchanged (e.g. the
|
|
13122
|
+
// backend keeps reporting `hasNextPage: true` without advancing the
|
|
13123
|
+
// cursor), return the same reference so React skips the re-render.
|
|
13124
|
+
// Without this bail-out the forward auto-load in `useBidirectionalScroll`
|
|
13125
|
+
// re-runs every render and calls `nextPage` again, causing an infinite
|
|
13126
|
+
// update loop.
|
|
13127
|
+
if (prev.after === after && prev.first === pageSize && prev.before === undefined && prev.last === undefined) {
|
|
13128
|
+
return prev;
|
|
13129
|
+
}
|
|
13130
|
+
return { after, first: pageSize };
|
|
13122
13131
|
});
|
|
13123
13132
|
}
|
|
13124
13133
|
}, [hasNextPage, endCursor, pageSize]);
|
|
13125
13134
|
const previousPage = useCallback(() => {
|
|
13126
13135
|
if (hasPreviousPage === true) {
|
|
13127
|
-
|
|
13128
|
-
|
|
13129
|
-
last
|
|
13136
|
+
const before = startCursor === null ? undefined : startCursor;
|
|
13137
|
+
setVariables(prev => {
|
|
13138
|
+
if (prev.before === before && prev.last === pageSize && prev.after === undefined && prev.first === undefined) {
|
|
13139
|
+
return prev;
|
|
13140
|
+
}
|
|
13141
|
+
return { before, last: pageSize };
|
|
13130
13142
|
});
|
|
13131
13143
|
}
|
|
13132
13144
|
}, [hasPreviousPage, startCursor, pageSize]);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trackunit/react-components",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.3",
|
|
4
4
|
"repository": "https://github.com/Trackunit/manager",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"migrations": "./migrations.json",
|
|
@@ -14,17 +14,17 @@
|
|
|
14
14
|
"@floating-ui/react": "^0.26.25",
|
|
15
15
|
"string-ts": "^2.0.0",
|
|
16
16
|
"tailwind-merge": "^2.0.0",
|
|
17
|
-
"@trackunit/ui-design-tokens": "1.13.60
|
|
18
|
-
"@trackunit/css-class-variance-utilities": "1.13.61
|
|
19
|
-
"@trackunit/shared-utils": "1.15.64
|
|
20
|
-
"@trackunit/ui-icons": "1.13.62
|
|
17
|
+
"@trackunit/ui-design-tokens": "1.13.60",
|
|
18
|
+
"@trackunit/css-class-variance-utilities": "1.13.61",
|
|
19
|
+
"@trackunit/shared-utils": "1.15.64",
|
|
20
|
+
"@trackunit/ui-icons": "1.13.62",
|
|
21
21
|
"es-toolkit": "^1.39.10",
|
|
22
22
|
"@tanstack/react-virtual": "^3.14.3",
|
|
23
23
|
"dequal": "^2.0.3",
|
|
24
24
|
"fflate": "^0.8.2",
|
|
25
25
|
"superjson": "^2.2.6",
|
|
26
26
|
"zod": "^3.25.76",
|
|
27
|
-
"@trackunit/i18n-library-translation": "2.1.2
|
|
27
|
+
"@trackunit/i18n-library-translation": "2.1.2"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
30
|
"react": "^19.0.0",
|