aidbox-react 1.6.0 → 1.7.1
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/dist/cjs/hooks/pager.d.ts +4 -0
- package/dist/cjs/index.js +18 -9
- package/dist/cjs/services/token.d.ts +1 -0
- package/dist/esm/hooks/pager.d.ts +4 -0
- package/dist/esm/index.js +18 -9
- package/dist/esm/services/token.d.ts +1 -0
- package/dist/index.d.ts +5 -0
- package/lib/hooks/pager.d.ts +4 -0
- package/lib/hooks/pager.js +19 -10
- package/lib/hooks/pager.js.map +1 -1
- package/lib/services/token.d.ts +1 -0
- package/package.json +1 -1
- package/src/hooks/pager.ts +37 -12
- package/src/services/token.ts +1 -0
|
@@ -3,7 +3,11 @@ import { RemoteData } from '../libs/remoteData';
|
|
|
3
3
|
import { SearchParams } from '../services/search';
|
|
4
4
|
export interface PagerManager {
|
|
5
5
|
loadNext: () => void;
|
|
6
|
+
loadPrevious: () => void;
|
|
7
|
+
loadPage: (page: number) => void;
|
|
6
8
|
reload: () => void;
|
|
7
9
|
hasNext: boolean;
|
|
10
|
+
hasPrevious: boolean;
|
|
11
|
+
currentPage: number;
|
|
8
12
|
}
|
|
9
13
|
export declare function usePager<T extends AidboxResource>(resourceType: T['resourceType'], resourcesOnPage?: number, searchParams?: SearchParams): [RemoteData<Bundle<T>>, PagerManager];
|
package/dist/cjs/index.js
CHANGED
|
@@ -3168,19 +3168,28 @@ function createSharedState(initial) {
|
|
|
3168
3168
|
}
|
|
3169
3169
|
|
|
3170
3170
|
function usePager(resourceType, resourcesOnPage = 15, searchParams = {}) {
|
|
3171
|
-
|
|
3171
|
+
var _a;
|
|
3172
|
+
const [pageToLoad, setPageToLoad] = react.exports.useState((_a = searchParams._page) !== null && _a !== void 0 ? _a : 1);
|
|
3172
3173
|
const [reloadsCount, setReloadsCount] = react.exports.useState(0);
|
|
3173
|
-
const [resources] = useService(() => getFHIRResources(resourceType, Object.assign(Object.assign({}, searchParams), { _count: resourcesOnPage, _page: pageToLoad })), [pageToLoad, reloadsCount]);
|
|
3174
|
+
const [resources] = useService(() => getFHIRResources(resourceType, Object.assign(Object.assign({}, searchParams), { _count: resourcesOnPage, _page: pageToLoad })), [pageToLoad, reloadsCount, resourcesOnPage]);
|
|
3175
|
+
const hasNext = react.exports.useMemo(() => { var _a; return (isSuccess(resources) ? Boolean((_a = resources.data.link) === null || _a === void 0 ? void 0 : _a.some((link) => link.relation === 'next')) : false); }, [resources]);
|
|
3176
|
+
const hasPrevious = react.exports.useMemo(() => { var _a; return isSuccess(resources) ? Boolean((_a = resources.data.link) === null || _a === void 0 ? void 0 : _a.some((link) => link.relation === 'previous')) : false; }, [resources]);
|
|
3177
|
+
const loadNext = react.exports.useCallback(() => setPageToLoad((currentPage) => currentPage + 1), []);
|
|
3178
|
+
const loadPrevious = react.exports.useCallback(() => setPageToLoad((currentPage) => (hasPrevious ? currentPage - 1 : currentPage)), [hasPrevious]);
|
|
3179
|
+
const reload = react.exports.useCallback(() => {
|
|
3180
|
+
setPageToLoad(1);
|
|
3181
|
+
setReloadsCount((c) => c + 1);
|
|
3182
|
+
}, []);
|
|
3174
3183
|
return [
|
|
3175
3184
|
resources,
|
|
3176
3185
|
{
|
|
3177
|
-
loadNext
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
reload
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3186
|
+
loadNext,
|
|
3187
|
+
loadPrevious,
|
|
3188
|
+
loadPage: setPageToLoad,
|
|
3189
|
+
reload,
|
|
3190
|
+
hasNext,
|
|
3191
|
+
hasPrevious,
|
|
3192
|
+
currentPage: pageToLoad,
|
|
3184
3193
|
},
|
|
3185
3194
|
];
|
|
3186
3195
|
}
|
|
@@ -3,7 +3,11 @@ import { RemoteData } from '../libs/remoteData';
|
|
|
3
3
|
import { SearchParams } from '../services/search';
|
|
4
4
|
export interface PagerManager {
|
|
5
5
|
loadNext: () => void;
|
|
6
|
+
loadPrevious: () => void;
|
|
7
|
+
loadPage: (page: number) => void;
|
|
6
8
|
reload: () => void;
|
|
7
9
|
hasNext: boolean;
|
|
10
|
+
hasPrevious: boolean;
|
|
11
|
+
currentPage: number;
|
|
8
12
|
}
|
|
9
13
|
export declare function usePager<T extends AidboxResource>(resourceType: T['resourceType'], resourcesOnPage?: number, searchParams?: SearchParams): [RemoteData<Bundle<T>>, PagerManager];
|
package/dist/esm/index.js
CHANGED
|
@@ -3166,19 +3166,28 @@ function createSharedState(initial) {
|
|
|
3166
3166
|
}
|
|
3167
3167
|
|
|
3168
3168
|
function usePager(resourceType, resourcesOnPage = 15, searchParams = {}) {
|
|
3169
|
-
|
|
3169
|
+
var _a;
|
|
3170
|
+
const [pageToLoad, setPageToLoad] = react.exports.useState((_a = searchParams._page) !== null && _a !== void 0 ? _a : 1);
|
|
3170
3171
|
const [reloadsCount, setReloadsCount] = react.exports.useState(0);
|
|
3171
|
-
const [resources] = useService(() => getFHIRResources(resourceType, Object.assign(Object.assign({}, searchParams), { _count: resourcesOnPage, _page: pageToLoad })), [pageToLoad, reloadsCount]);
|
|
3172
|
+
const [resources] = useService(() => getFHIRResources(resourceType, Object.assign(Object.assign({}, searchParams), { _count: resourcesOnPage, _page: pageToLoad })), [pageToLoad, reloadsCount, resourcesOnPage]);
|
|
3173
|
+
const hasNext = react.exports.useMemo(() => { var _a; return (isSuccess(resources) ? Boolean((_a = resources.data.link) === null || _a === void 0 ? void 0 : _a.some((link) => link.relation === 'next')) : false); }, [resources]);
|
|
3174
|
+
const hasPrevious = react.exports.useMemo(() => { var _a; return isSuccess(resources) ? Boolean((_a = resources.data.link) === null || _a === void 0 ? void 0 : _a.some((link) => link.relation === 'previous')) : false; }, [resources]);
|
|
3175
|
+
const loadNext = react.exports.useCallback(() => setPageToLoad((currentPage) => currentPage + 1), []);
|
|
3176
|
+
const loadPrevious = react.exports.useCallback(() => setPageToLoad((currentPage) => (hasPrevious ? currentPage - 1 : currentPage)), [hasPrevious]);
|
|
3177
|
+
const reload = react.exports.useCallback(() => {
|
|
3178
|
+
setPageToLoad(1);
|
|
3179
|
+
setReloadsCount((c) => c + 1);
|
|
3180
|
+
}, []);
|
|
3172
3181
|
return [
|
|
3173
3182
|
resources,
|
|
3174
3183
|
{
|
|
3175
|
-
loadNext
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
reload
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3184
|
+
loadNext,
|
|
3185
|
+
loadPrevious,
|
|
3186
|
+
loadPage: setPageToLoad,
|
|
3187
|
+
reload,
|
|
3188
|
+
hasNext,
|
|
3189
|
+
hasPrevious,
|
|
3190
|
+
currentPage: pageToLoad,
|
|
3182
3191
|
},
|
|
3183
3192
|
];
|
|
3184
3193
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -42,6 +42,7 @@ declare function isNotAskedAny(responses: Array<RemoteData>): responses is Array
|
|
|
42
42
|
interface Token {
|
|
43
43
|
access_token: string;
|
|
44
44
|
token_type: string;
|
|
45
|
+
refresh_token?: string;
|
|
45
46
|
}
|
|
46
47
|
|
|
47
48
|
declare function buildQueryParams(params: Record<string, any>): string;
|
|
@@ -223,8 +224,12 @@ declare function createSharedState<S>(initial?: S): StateManager<S>;
|
|
|
223
224
|
|
|
224
225
|
interface PagerManager {
|
|
225
226
|
loadNext: () => void;
|
|
227
|
+
loadPrevious: () => void;
|
|
228
|
+
loadPage: (page: number) => void;
|
|
226
229
|
reload: () => void;
|
|
227
230
|
hasNext: boolean;
|
|
231
|
+
hasPrevious: boolean;
|
|
232
|
+
currentPage: number;
|
|
228
233
|
}
|
|
229
234
|
declare function usePager<T extends AidboxResource>(resourceType: T['resourceType'], resourcesOnPage?: number, searchParams?: SearchParams): [RemoteData<Bundle<T>>, PagerManager];
|
|
230
235
|
|
package/lib/hooks/pager.d.ts
CHANGED
|
@@ -3,7 +3,11 @@ import { RemoteData } from '../libs/remoteData';
|
|
|
3
3
|
import { SearchParams } from '../services/search';
|
|
4
4
|
export interface PagerManager {
|
|
5
5
|
loadNext: () => void;
|
|
6
|
+
loadPrevious: () => void;
|
|
7
|
+
loadPage: (page: number) => void;
|
|
6
8
|
reload: () => void;
|
|
7
9
|
hasNext: boolean;
|
|
10
|
+
hasPrevious: boolean;
|
|
11
|
+
currentPage: number;
|
|
8
12
|
}
|
|
9
13
|
export declare function usePager<T extends AidboxResource>(resourceType: T['resourceType'], resourcesOnPage?: number, searchParams?: SearchParams): [RemoteData<Bundle<T>>, PagerManager];
|
package/lib/hooks/pager.js
CHANGED
|
@@ -7,23 +7,32 @@ var remoteData_1 = require("../libs/remoteData");
|
|
|
7
7
|
var fhir_1 = require("../services/fhir");
|
|
8
8
|
var service_1 = require("./service");
|
|
9
9
|
function usePager(resourceType, resourcesOnPage, searchParams) {
|
|
10
|
+
var _a;
|
|
10
11
|
if (resourcesOnPage === void 0) { resourcesOnPage = 15; }
|
|
11
12
|
if (searchParams === void 0) { searchParams = {}; }
|
|
12
|
-
var
|
|
13
|
-
var
|
|
13
|
+
var _b = (0, react_1.useState)((_a = searchParams._page) !== null && _a !== void 0 ? _a : 1), pageToLoad = _b[0], setPageToLoad = _b[1];
|
|
14
|
+
var _c = (0, react_1.useState)(0), reloadsCount = _c[0], setReloadsCount = _c[1];
|
|
14
15
|
var resources = (0, service_1.useService)(function () {
|
|
15
16
|
return (0, fhir_1.getFHIRResources)(resourceType, tslib_1.__assign(tslib_1.__assign({}, searchParams), { _count: resourcesOnPage, _page: pageToLoad }));
|
|
16
|
-
}, [pageToLoad, reloadsCount])[0];
|
|
17
|
+
}, [pageToLoad, reloadsCount, resourcesOnPage])[0];
|
|
18
|
+
var hasNext = (0, react_1.useMemo)(function () { var _a; return ((0, remoteData_1.isSuccess)(resources) ? Boolean((_a = resources.data.link) === null || _a === void 0 ? void 0 : _a.some(function (link) { return link.relation === 'next'; })) : false); }, [resources]);
|
|
19
|
+
var hasPrevious = (0, react_1.useMemo)(function () { var _a; return (0, remoteData_1.isSuccess)(resources) ? Boolean((_a = resources.data.link) === null || _a === void 0 ? void 0 : _a.some(function (link) { return link.relation === 'previous'; })) : false; }, [resources]);
|
|
20
|
+
var loadNext = (0, react_1.useCallback)(function () { return setPageToLoad(function (currentPage) { return currentPage + 1; }); }, []);
|
|
21
|
+
var loadPrevious = (0, react_1.useCallback)(function () { return setPageToLoad(function (currentPage) { return (hasPrevious ? currentPage - 1 : currentPage); }); }, [hasPrevious]);
|
|
22
|
+
var reload = (0, react_1.useCallback)(function () {
|
|
23
|
+
setPageToLoad(1);
|
|
24
|
+
setReloadsCount(function (c) { return c + 1; });
|
|
25
|
+
}, []);
|
|
17
26
|
return [
|
|
18
27
|
resources,
|
|
19
28
|
{
|
|
20
|
-
loadNext:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
reload:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
loadNext: loadNext,
|
|
30
|
+
loadPrevious: loadPrevious,
|
|
31
|
+
loadPage: setPageToLoad,
|
|
32
|
+
reload: reload,
|
|
33
|
+
hasNext: hasNext,
|
|
34
|
+
hasPrevious: hasPrevious,
|
|
35
|
+
currentPage: pageToLoad,
|
|
27
36
|
},
|
|
28
37
|
];
|
|
29
38
|
}
|
package/lib/hooks/pager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pager.js","sourceRoot":"","sources":["../../src/hooks/pager.ts"],"names":[],"mappings":";;;;AAAA,+
|
|
1
|
+
{"version":3,"file":"pager.js","sourceRoot":"","sources":["../../src/hooks/pager.ts"],"names":[],"mappings":";;;;AAAA,+BAAuD;AAGvD,iDAA2D;AAC3D,yCAAoD;AAEpD,qCAAuC;AAYvC,SAAgB,QAAQ,CACpB,YAA+B,EAC/B,eAA4B,EAC5B,YAA+B;;IAD/B,gCAAA,EAAA,oBAA4B;IAC5B,6BAAA,EAAA,iBAA+B;IAEzB,IAAA,KAA8B,IAAA,gBAAQ,EAAC,MAAC,YAAY,CAAC,KAAgB,mCAAI,CAAC,CAAC,EAA1E,UAAU,QAAA,EAAE,aAAa,QAAiD,CAAC;IAC5E,IAAA,KAAkC,IAAA,gBAAQ,EAAC,CAAC,CAAC,EAA5C,YAAY,QAAA,EAAE,eAAe,QAAe,CAAC;IAC7C,IAAA,SAAS,GAAI,IAAA,oBAAU,EAC1B;QACI,OAAA,IAAA,uBAAgB,EAAC,YAAY,wCACtB,YAAY,KACf,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,UAAU,IACnB;IAJF,CAIE,EACN,CAAC,UAAU,EAAE,YAAY,EAAE,eAAe,CAAC,CAC9C,GARe,CAQd;IAEF,IAAM,OAAO,GAAG,IAAA,eAAO,EACnB,sBAAM,OAAA,CAAC,IAAA,sBAAS,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAA,SAAS,CAAC,IAAI,CAAC,IAAI,0CAAE,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAxB,CAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA,EAAA,EAC7G,CAAC,SAAS,CAAC,CACd,CAAC;IAEF,IAAM,WAAW,GAAG,IAAA,eAAO,EACvB,sBACI,OAAA,IAAA,sBAAS,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAA,SAAS,CAAC,IAAI,CAAC,IAAI,0CAAE,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,QAAQ,KAAK,UAAU,EAA5B,CAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA,EAAA,EAC7G,CAAC,SAAS,CAAC,CACd,CAAC;IAEF,IAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,cAAM,OAAA,aAAa,CAAC,UAAC,WAAW,IAAK,OAAA,WAAW,GAAG,CAAC,EAAf,CAAe,CAAC,EAA/C,CAA+C,EAAE,EAAE,CAAC,CAAC;IAExF,IAAM,YAAY,GAAG,IAAA,mBAAW,EAC5B,cAAM,OAAA,aAAa,CAAC,UAAC,WAAW,IAAK,OAAA,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAA7C,CAA6C,CAAC,EAA7E,CAA6E,EACnF,CAAC,WAAW,CAAC,CAChB,CAAC;IAEF,IAAM,MAAM,GAAG,IAAA,mBAAW,EAAC;QACvB,aAAa,CAAC,CAAC,CAAC,CAAC;QACjB,eAAe,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,GAAG,CAAC,EAAL,CAAK,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACH,SAAS;QACT;YACI,QAAQ,UAAA;YACR,YAAY,cAAA;YACZ,QAAQ,EAAE,aAAa;YACvB,MAAM,QAAA;YACN,OAAO,SAAA;YACP,WAAW,aAAA;YACX,WAAW,EAAE,UAAU;SAC1B;KACJ,CAAC;AACN,CAAC;AApDD,4BAoDC"}
|
package/lib/services/token.d.ts
CHANGED
package/package.json
CHANGED
package/src/hooks/pager.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useState } from 'react';
|
|
1
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
2
2
|
import { AidboxResource, Bundle } from 'shared/src/contrib/aidbox';
|
|
3
3
|
|
|
4
4
|
import { isSuccess, RemoteData } from '../libs/remoteData';
|
|
@@ -8,8 +8,12 @@ import { useService } from './service';
|
|
|
8
8
|
|
|
9
9
|
export interface PagerManager {
|
|
10
10
|
loadNext: () => void;
|
|
11
|
+
loadPrevious: () => void;
|
|
12
|
+
loadPage: (page: number) => void;
|
|
11
13
|
reload: () => void;
|
|
12
14
|
hasNext: boolean;
|
|
15
|
+
hasPrevious: boolean;
|
|
16
|
+
currentPage: number;
|
|
13
17
|
}
|
|
14
18
|
|
|
15
19
|
export function usePager<T extends AidboxResource>(
|
|
@@ -17,9 +21,8 @@ export function usePager<T extends AidboxResource>(
|
|
|
17
21
|
resourcesOnPage: number = 15,
|
|
18
22
|
searchParams: SearchParams = {}
|
|
19
23
|
): [RemoteData<Bundle<T>>, PagerManager] {
|
|
20
|
-
const [pageToLoad, setPageToLoad] = useState(1);
|
|
24
|
+
const [pageToLoad, setPageToLoad] = useState((searchParams._page as number) ?? 1);
|
|
21
25
|
const [reloadsCount, setReloadsCount] = useState(0);
|
|
22
|
-
|
|
23
26
|
const [resources] = useService(
|
|
24
27
|
() =>
|
|
25
28
|
getFHIRResources(resourceType, {
|
|
@@ -27,20 +30,42 @@ export function usePager<T extends AidboxResource>(
|
|
|
27
30
|
_count: resourcesOnPage,
|
|
28
31
|
_page: pageToLoad,
|
|
29
32
|
}),
|
|
30
|
-
[pageToLoad, reloadsCount]
|
|
33
|
+
[pageToLoad, reloadsCount, resourcesOnPage]
|
|
34
|
+
);
|
|
35
|
+
|
|
36
|
+
const hasNext = useMemo(
|
|
37
|
+
() => (isSuccess(resources) ? Boolean(resources.data.link?.some((link) => link.relation === 'next')) : false),
|
|
38
|
+
[resources]
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
const hasPrevious = useMemo(
|
|
42
|
+
() =>
|
|
43
|
+
isSuccess(resources) ? Boolean(resources.data.link?.some((link) => link.relation === 'previous')) : false,
|
|
44
|
+
[resources]
|
|
31
45
|
);
|
|
32
46
|
|
|
47
|
+
const loadNext = useCallback(() => setPageToLoad((currentPage) => currentPage + 1), []);
|
|
48
|
+
|
|
49
|
+
const loadPrevious = useCallback(
|
|
50
|
+
() => setPageToLoad((currentPage) => (hasPrevious ? currentPage - 1 : currentPage)),
|
|
51
|
+
[hasPrevious]
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
const reload = useCallback(() => {
|
|
55
|
+
setPageToLoad(1);
|
|
56
|
+
setReloadsCount((c) => c + 1);
|
|
57
|
+
}, []);
|
|
58
|
+
|
|
33
59
|
return [
|
|
34
60
|
resources,
|
|
35
61
|
{
|
|
36
|
-
loadNext
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
},
|
|
62
|
+
loadNext,
|
|
63
|
+
loadPrevious,
|
|
64
|
+
loadPage: setPageToLoad,
|
|
65
|
+
reload,
|
|
66
|
+
hasNext,
|
|
67
|
+
hasPrevious,
|
|
68
|
+
currentPage: pageToLoad,
|
|
44
69
|
},
|
|
45
70
|
];
|
|
46
71
|
}
|