@ngdux/list 1.3.2 → 1.4.0
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/esm2020/index.mjs +10 -8
- package/esm2020/lib/+state/effects.mjs +23 -0
- package/esm2020/lib/+state/state.service.mjs +55 -0
- package/esm2020/lib/models/list.model.mjs +4 -1
- package/esm2020/lib/ngdux-list-state.module.mjs +53 -0
- package/esm2020/lib/services/list-notification-service.mjs +21 -0
- package/esm2020/lib/state-generator/abstract-list-effects.mjs +66 -0
- package/esm2020/lib/state-generator/abstract-list-state.service.mjs +44 -0
- package/esm2020/lib/state-generator/abstract-list.facade.mjs +91 -0
- package/esm2020/lib/state-generator/list-actions.mjs +63 -0
- package/esm2020/lib/state-generator/list-reducer.mjs +104 -0
- package/esm2020/lib/state-generator/list-selectors.mjs +80 -0
- package/esm2020/lib/state-generator/list-state.mjs +18 -0
- package/fesm2015/ngdux-list.mjs +240 -107
- package/fesm2015/ngdux-list.mjs.map +1 -1
- package/fesm2020/ngdux-list.mjs +240 -105
- package/fesm2020/ngdux-list.mjs.map +1 -1
- package/index.d.ts +9 -7
- package/lib/+state/effects.d.ts +14 -0
- package/lib/+state/state.service.d.ts +22 -0
- package/lib/models/list.model.d.ts +18 -6
- package/lib/ngdux-list-state.module.d.ts +23 -0
- package/lib/services/list-notification-service.d.ts +13 -0
- package/lib/{+state → state-generator}/abstract-list-effects.d.ts +9 -11
- package/lib/{+state → state-generator}/abstract-list-state.service.d.ts +7 -7
- package/lib/{+state → state-generator}/abstract-list.facade.d.ts +20 -17
- package/lib/{+state → state-generator}/list-reducer.d.ts +2 -2
- package/lib/state-generator/list-selectors.d.ts +4 -0
- package/lib/{+state → state-generator}/list-state.d.ts +4 -4
- package/package.json +29 -13
- package/esm2020/lib/+state/abstract-list-effects.mjs +0 -71
- package/esm2020/lib/+state/abstract-list-state.service.mjs +0 -44
- package/esm2020/lib/+state/abstract-list.facade.mjs +0 -88
- package/esm2020/lib/+state/list-actions.mjs +0 -60
- package/esm2020/lib/+state/list-reducer.mjs +0 -97
- package/esm2020/lib/+state/list-selectors.mjs +0 -80
- package/esm2020/lib/+state/list-state.mjs +0 -18
- package/lib/+state/list-selectors.d.ts +0 -4
- /package/lib/{+state → state-generator}/list-actions.d.ts +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { createAction, props } from '@ngrx/store';
|
|
2
|
+
export function createListActions(featureName) {
|
|
3
|
+
const resetRequestState = createAction(`[${featureName} API] Reset ${featureName} Request State`);
|
|
4
|
+
const initialize = createAction(`[${featureName} API] Initialize ${featureName}`);
|
|
5
|
+
const reset = createAction(`[Organization ${featureName} API] Reset ${featureName}`);
|
|
6
|
+
const loadNextPage = createAction(`[${featureName} API] Load Next ${featureName} Page`);
|
|
7
|
+
const loadPreviousPage = createAction(`[${featureName} API] Load Previous ${featureName} Page`);
|
|
8
|
+
const loadFirstPage = createAction(`[${featureName} API] Load First ${featureName} Page`);
|
|
9
|
+
const setPageSize = createAction(`[${featureName} API] Set ${featureName} Page Size`, props());
|
|
10
|
+
const setSorting = createAction(`[${featureName} API] Set ${featureName} Sorting`, props());
|
|
11
|
+
const setFiltering = createAction(`[${featureName} API] Set ${featureName} Filtering`, props());
|
|
12
|
+
const setRequestParams = createAction(`[${featureName} API] Set ${featureName} Request Params`, props());
|
|
13
|
+
const changePageSize = createAction(`[${featureName} API] Change ${featureName} Page Size`, props());
|
|
14
|
+
const changePageNumber = createAction(`[${featureName} API] Change ${featureName} Page Number`, props());
|
|
15
|
+
const changePagingOptions = createAction(`[${featureName} API] Change ${featureName} Page Options`, props());
|
|
16
|
+
const changeSorting = createAction(`[${featureName} API] Change ${featureName} Sorting`, props());
|
|
17
|
+
const changeFiltering = createAction(`[${featureName} API] Change ${featureName} Filtering`, props());
|
|
18
|
+
const changeSelectedResources = createAction(`[${featureName} API] Change Selected Resources ${featureName}`, props());
|
|
19
|
+
const changeRequestParams = createAction(`[${featureName} API] Change ${featureName} Request Params`, props());
|
|
20
|
+
const loadPage = createAction(`[${featureName} API] Load ${featureName} Page`);
|
|
21
|
+
const loadPageSuccess = createAction(`[${featureName} API] Load ${featureName} Page Success`, props());
|
|
22
|
+
const loadPageFailure = createAction(`[${featureName} API] Load ${featureName} Page Failure`, props());
|
|
23
|
+
const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props());
|
|
24
|
+
const deleteSuccess = createAction(`[${featureName} API] Delete ${featureName} Success`, props());
|
|
25
|
+
const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props());
|
|
26
|
+
const patch = createAction(`[${featureName} API] Patch ${featureName}`, props());
|
|
27
|
+
const patchSuccess = createAction(`[${featureName} API] Patch ${featureName} Success`, props());
|
|
28
|
+
const patchFailure = createAction(`[${featureName} API] Patch ${featureName} Failure`, props());
|
|
29
|
+
/**
|
|
30
|
+
* @deprecated The method will be removed. The AbstractEffect will not be responsible for it anymore
|
|
31
|
+
*/
|
|
32
|
+
const showRemovalsConfirmation = createAction(`[${featureName} API] Show ${featureName} Removal Confirmation`);
|
|
33
|
+
return {
|
|
34
|
+
initialize,
|
|
35
|
+
reset,
|
|
36
|
+
setPageSize,
|
|
37
|
+
setSorting,
|
|
38
|
+
setFiltering,
|
|
39
|
+
setRequestParams,
|
|
40
|
+
changePageSize,
|
|
41
|
+
changePageNumber,
|
|
42
|
+
changePagingOptions,
|
|
43
|
+
changeSorting,
|
|
44
|
+
changeFiltering,
|
|
45
|
+
changeRequestParams,
|
|
46
|
+
loadPreviousPage,
|
|
47
|
+
loadNextPage,
|
|
48
|
+
loadFirstPage,
|
|
49
|
+
changeSelectedResources,
|
|
50
|
+
loadPage,
|
|
51
|
+
loadPageSuccess,
|
|
52
|
+
loadPageFailure,
|
|
53
|
+
delete: deleteAction,
|
|
54
|
+
deleteSuccess,
|
|
55
|
+
deleteFailure,
|
|
56
|
+
patch,
|
|
57
|
+
patchSuccess,
|
|
58
|
+
patchFailure,
|
|
59
|
+
resetRequestState,
|
|
60
|
+
showRemovalsConfirmation
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi9zdGF0ZS1nZW5lcmF0b3IvbGlzdC1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsV0FBbUI7SUFFbkIsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGVBQWUsV0FBVyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsb0JBQW9CLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbEYsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixXQUFXLGVBQWUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUVyRixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLG1CQUFtQixXQUFXLE9BQU8sQ0FBQyxDQUFDO0lBQ3hGLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyx1QkFBdUIsV0FBVyxPQUFPLENBQUMsQ0FBQztJQUNoRyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLG9CQUFvQixXQUFXLE9BQU8sQ0FBQyxDQUFDO0lBRTFGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsYUFBYSxXQUFXLFlBQVksRUFBRSxLQUFLLEVBQXdCLENBQUMsQ0FBQztJQUNySCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQzdCLElBQUksV0FBVyxhQUFhLFdBQVcsVUFBVSxFQUNqRCxLQUFLLEVBQXNDLENBQzVDLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxZQUFZLENBQy9CLElBQUksV0FBVyxhQUFhLFdBQVcs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QUNiLGFBQWE7UUFDYixLQUFLO1FBQ0wsWUFBWTtRQUNaLFlBQVk7UUFDWixpQkFBaUI7UUFDakIsd0JBQXdCO0tBQ3pCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JEdG8sIEZpbHRlcmluZ09wdGlvbnMsIFBhZ2luZ09wdGlvbnMsIFNvcnRpbmdPcHRpb25zIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcclxuaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgTGlzdEFjdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvbGlzdC5tb2RlbCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdEFjdGlvbnM8VCwgRSwgUyA9IFQsIFBhcmFtcyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxyXG4gIGZlYXR1cmVOYW1lOiBzdHJpbmdcclxuKTogTGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPiB7XHJcbiAgY29uc3QgcmVzZXRSZXF1ZXN0U3RhdGUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIFJlc2V0ICR7ZmVhdHVyZU5hbWV9IFJlcXVlc3QgU3RhdGVgKTtcclxuICBjb25zdCBpbml0aWFsaXplID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBJbml0aWFsaXplICR7ZmVhdHVyZU5hbWV9YCk7XHJcbiAgY29uc3QgcmVzZXQgPSBjcmVhdGVBY3Rpb24oYFtPcmdhbml6YXRpb24gJHtmZWF0dXJlTmFtZX0gQVBJXSBSZXNldCAke2ZlYXR1cmVOYW1lfWApO1xyXG5cclxuICBjb25zdCBsb2FkTmV4dFBhZ2UgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIExvYWQgTmV4dCAke2ZlYXR1cmVOYW1lfSBQYWdlYCk7XHJcbiAgY29uc3QgbG9hZFByZXZpb3VzUGFnZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gTG9hZCBQcmV2aW91cyAke2ZlYXR1cmVOYW1lfSBQYWdlYCk7XHJcbiAgY29uc3QgbG9hZEZpcnN0UGFnZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gTG9hZCBGaXJzdCAke2ZlYXR1cmVOYW1lfSBQYWdlYCk7XHJcblxyXG4gIGNvbnN0IHNldFBhZ2VTaXplID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBTZXQgJHtmZWF0dXJlTmFtZX0gUGFnZSBTaXplYCwgcHJvcHM8eyBwYWdlU2l6ZTogbnVtYmVyIH0+KCkpO1xyXG4gIGNvbnN0IHNldFNvcnRpbmcgPSBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gU2V0ICR7ZmVhdHVyZU5hbWV9IFNvcnRpbmdgLFxyXG4gICAgcHJvcHM8eyBzb3J0aW5nT3B0aW9uczogU29ydGluZ09wdGlvbnMgfT4oKVxyXG4gICk7XHJcbiAgY29uc3Qgc2V0RmlsdGVyaW5nID0gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2ZlYXR1cmVOYW1lfSBBUEldIFNldCAke2ZlYXR1cmVOYW1lfSBGaWx0ZXJpbmdgLFxyXG4gICAgcHJvcHM8eyBmaWx0ZXJpbmdPcHRpb25zOiBGaWx0ZXJpbmdPcHRpb25zIH0+KClcclxuICApO1xyXG4gIGNvbnN0IHNldFJlcXVlc3RQYXJhbXMgPSBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gU2V0ICR7ZmVhdHVyZU5hbWV9IFJlcXVlc3QgUGFyYW1zYCxcclxuICAgIHByb3BzPHsgcGFyYW1zOiBQYXJhbXMgfT4oKVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGNoYW5nZVBhZ2VTaXplID0gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2ZlYXR1cmVOYW1lfSBBUEldIENoYW5nZSAke2ZlYXR1cmVOYW1lfSBQYWdlIFNpemVgLFxyXG4gICAgcHJvcHM8eyBwYWdlU2l6ZTogbnVtYmVyIH0+KClcclxuICApO1xyXG5cclxuICBjb25zdCBjaGFuZ2VQYWdlTnVtYmVyID0gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2ZlYXR1cmVOYW1lfSBBUEldIENoYW5nZSAke2ZlYXR1cmVOYW1lfSBQYWdlIE51bWJlcmAsXHJcbiAgICBwcm9wczx7IHBhZ2VOdW1iZXI6IG51bWJlciB9PigpXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgY2hhbmdlUGFnaW5nT3B0aW9ucyA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBDaGFuZ2UgJHtmZWF0dXJlTmFtZX0gUGFnZSBPcHRpb25zYCxcclxuICAgIHByb3BzPHsgcGFnaW5nT3B0aW9uczogUGFnaW5nT3B0aW9ucyB9PigpXHJcbiAgKTtcclxuICBjb25zdCBjaGFuZ2VTb3J0aW5nID0gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2ZlYXR1cmVOYW1lfSBBUEldIENoYW5nZSAke2ZlYXR1cmVOYW1lfSBTb3J0aW5nYCxcclxuICAgIHByb3BzPHsgc29ydGluZ09wdGlvbnM6IFNvcnRpbmdPcHRpb25zIH0+KClcclxuICApO1xyXG4gIGNvbnN0IGNoYW5nZUZpbHRlcmluZyA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBDaGFuZ2UgJHtmZWF0dXJlTmFtZX0gRmlsdGVyaW5nYCxcclxuICAgIHByb3BzPHsgZmlsdGVyaW5nT3B0aW9uczogRmlsdGVyaW5nT3B0aW9ucyB9PigpXHJcbiAgKTtcclxuICBjb25zdCBjaGFuZ2VTZWxlY3RlZFJlc291cmNlcyA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBDaGFuZ2UgU2VsZWN0ZWQgUmVzb3VyY2VzICR7ZmVhdHVyZU5hbWV9YCxcclxuICAgIHByb3BzPHsgc2VsZWN0ZWRSZXNvdXJjZUlkczogc3RyaW5nW10gfT4oKVxyXG4gICk7XHJcbiAgY29uc3QgY2hhbmdlUmVxdWVzdFBhcmFtcyA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBDaGFuZ2UgJHtmZWF0dXJlTmFtZX0gUmVxdWVzdCBQYXJhbXNgLFxyXG4gICAgcHJvcHM8eyBwYXJhbXM6IFBhcmFtcyB9PigpXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgbG9hZFBhZ2UgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIExvYWQgJHtmZWF0dXJlTmFtZX0gUGFnZWApO1xyXG4gIGNvbnN0IGxvYWRQYWdlU3VjY2VzcyA9IGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBMb2FkICR7ZmVhdHVyZU5hbWV9IFBhZ2UgU3VjY2Vzc2AsXHJcbiAgICBwcm9wczx7IHJlc291cmNlczogU1tdOyBwYWdpbmdPcHRpb25zOiBQYWdpbmdPcHRpb25zIH0+KClcclxuICApO1xyXG4gIGNvbnN0IGxvYWRQYWdlRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gTG9hZCAke2ZlYXR1cmVOYW1lfSBQYWdlIEZhaWx1cmVgLCBwcm9wczx7IGVycm9yczogRSB9PigpKTtcclxuXHJcbiAgY29uc3QgZGVsZXRlQWN0aW9uID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBEZWxldGUgJHtmZWF0dXJlTmFtZX1gLCBwcm9wczx7IHJlc291cmNlSWRzOiBzdHJpbmdbXSB9PigpKTtcclxuICBjb25zdCBkZWxldGVTdWNjZXNzID0gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2ZlYXR1cmVOYW1lfSBBUEldIERlbGV0ZSAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCxcclxuICAgIHByb3BzPHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdIH0+KClcclxuICApO1xyXG4gIGNvbnN0IGRlbGV0ZUZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIERlbGV0ZSAke2ZlYXR1cmVOYW1lfSBGYWlsdXJlYCwgcHJvcHM8eyBlcnJvcnM6IEUgfT4oKSk7XHJcblxyXG4gIGNvbnN0IHBhdGNoID0gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2ZlYXR1cmVOYW1lfSBBUEldIFBhdGNoICR7ZmVhdHVyZU5hbWV9YCxcclxuICAgIHByb3BzPHsgcmVzb3VyY2VJZHM6IHN0cmluZ1tdOyByZXNvdXJjZTogUGFydGlhbDxUPiB9PigpXHJcbiAgKTtcclxuICBjb25zdCBwYXRjaFN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gUGF0Y2ggJHtmZWF0dXJlTmFtZX0gU3VjY2Vzc2AsXHJcbiAgICBwcm9wczx7IHJlc291cmNlczogKFQgfCBFcnJvckR0bylbXSB9PigpXHJcbiAgKTtcclxuICBjb25zdCBwYXRjaEZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIFBhdGNoICR7ZmVhdHVyZU5hbWV9IEZhaWx1cmVgLCBwcm9wczx7IGVycm9yczogRSB9PigpKTtcclxuXHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgVGhlIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQuIFRoZSBBYnN0cmFjdEVmZmVjdCB3aWxsIG5vdCBiZSByZXNwb25zaWJsZSBmb3IgaXQgYW55bW9yZVxyXG4gICAqL1xyXG4gIGNvbnN0IHNob3dSZW1vdmFsc0NvbmZpcm1hdGlvbiA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gU2hvdyAke2ZlYXR1cmVOYW1lfSBSZW1vdmFsIENvbmZpcm1hdGlvbmApO1xyXG5cclxuICByZXR1cm4ge1xyXG4gICAgaW5pdGlhbGl6ZSxcclxuICAgIHJlc2V0LFxyXG4gICAgc2V0UGFnZVNpemUsXHJcbiAgICBzZXRTb3J0aW5nLFxyXG4gICAgc2V0RmlsdGVyaW5nLFxyXG4gICAgc2V0UmVxdWVzdFBhcmFtcyxcclxuICAgIGNoYW5nZVBhZ2VTaXplLFxyXG4gICAgY2hhbmdlUGFnZU51bWJlcixcclxuICAgIGNoYW5nZVBhZ2luZ09wdGlvbnMsXHJcbiAgICBjaGFuZ2VTb3J0aW5nLFxyXG4gICAgY2hhbmdlRmlsdGVyaW5nLFxyXG4gICAgY2hhbmdlUmVxdWVzdFBhcmFtcyxcclxuICAgIGxvYWRQcmV2aW91c1BhZ2UsXHJcbiAgICBsb2FkTmV4dFBhZ2UsXHJcbiAgICBsb2FkRmlyc3RQYWdlLFxyXG4gICAgY2hhbmdlU2VsZWN0ZWRSZXNvdXJjZXMsXHJcbiAgICBsb2FkUGFnZSxcclxuICAgIGxvYWRQYWdlU3VjY2VzcyxcclxuICAgIGxvYWRQYWdlRmFpbHVyZSxcclxuICAgIGRlbGV0ZTogZGVsZXRlQWN0aW9uLFxyXG4gICAgZGVsZXRlU3VjY2VzcyxcclxuICAgIGRlbGV0ZUZhaWx1cmUsXHJcbiAgICBwYXRjaCxcclxuICAgIHBhdGNoU3VjY2VzcyxcclxuICAgIHBhdGNoRmFpbHVyZSxcclxuICAgIHJlc2V0UmVxdWVzdFN0YXRlLFxyXG4gICAgc2hvd1JlbW92YWxzQ29uZmlybWF0aW9uXHJcbiAgfTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { DEFAULT_PAGE, getDefaultRequestOptions, RequestState } from '@ngdux/data-model-common';
|
|
2
|
+
import { createLoadingStateActionHandlers, createRequestStateActionHandlers, getLastPageNumber } from '@ngdux/store-common';
|
|
3
|
+
import { createEntityAdapter } from '@ngrx/entity';
|
|
4
|
+
import { createReducer, on } from '@ngrx/store';
|
|
5
|
+
export function createListEntityAdapter(idKey = 'id') {
|
|
6
|
+
return createEntityAdapter({
|
|
7
|
+
selectId: resource => resource[idKey]
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export function createListReducer(entityAdapter, actions, actionHandlers, initialListState) {
|
|
11
|
+
const initialState = {
|
|
12
|
+
...createInitialListState(entityAdapter),
|
|
13
|
+
...initialListState
|
|
14
|
+
};
|
|
15
|
+
return createReducer(initialState, ...createListActionHandlers(initialState, entityAdapter, actions), ...(actionHandlers || []));
|
|
16
|
+
}
|
|
17
|
+
function createInitialListState(entityAdapter) {
|
|
18
|
+
return entityAdapter.getInitialState({
|
|
19
|
+
...getDefaultRequestOptions(),
|
|
20
|
+
lastPageNumber: undefined,
|
|
21
|
+
selectedResourceIds: [],
|
|
22
|
+
loadingState: RequestState.IDLE,
|
|
23
|
+
requestState: RequestState.IDLE,
|
|
24
|
+
errors: undefined
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function createListActionHandlers(initialListState, entityAdapter, actions) {
|
|
28
|
+
return [
|
|
29
|
+
on(actions.reset, () => initialListState),
|
|
30
|
+
on(actions.initialize, (state) => entityAdapter.removeAll({
|
|
31
|
+
...state,
|
|
32
|
+
selectedResourceIds: [],
|
|
33
|
+
pagingOptions: {
|
|
34
|
+
...state.pagingOptions,
|
|
35
|
+
page: DEFAULT_PAGE
|
|
36
|
+
},
|
|
37
|
+
requestState: RequestState.IDLE
|
|
38
|
+
})),
|
|
39
|
+
on(actions.changePageSize, actions.setPageSize, (state, { pageSize }) => ({
|
|
40
|
+
...state,
|
|
41
|
+
pagingOptions: { page: DEFAULT_PAGE, pageSize },
|
|
42
|
+
lastPageNumber: undefined
|
|
43
|
+
})),
|
|
44
|
+
on(actions.changePageNumber, (state, { pageNumber }) => ({
|
|
45
|
+
...state,
|
|
46
|
+
pagingOptions: { ...state.pagingOptions, page: pageNumber }
|
|
47
|
+
})),
|
|
48
|
+
on(actions.changePagingOptions, (state, { pagingOptions }) => ({
|
|
49
|
+
...state,
|
|
50
|
+
pagingOptions
|
|
51
|
+
})),
|
|
52
|
+
on(actions.changeSorting, actions.setSorting, (state, { sortingOptions }) => ({
|
|
53
|
+
...state,
|
|
54
|
+
sortingOptions,
|
|
55
|
+
pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE }
|
|
56
|
+
})),
|
|
57
|
+
on(actions.changeFiltering, actions.setFiltering, (state, { filteringOptions }) => ({
|
|
58
|
+
...state,
|
|
59
|
+
filteringOptions,
|
|
60
|
+
pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE },
|
|
61
|
+
lastPageNumber: undefined
|
|
62
|
+
})),
|
|
63
|
+
on(actions.changeRequestParams, actions.setRequestParams, (state, { params }) => ({
|
|
64
|
+
...state,
|
|
65
|
+
requestParameters: params,
|
|
66
|
+
pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE }
|
|
67
|
+
})),
|
|
68
|
+
on(actions.changeSelectedResources, (state, { selectedResourceIds }) => ({
|
|
69
|
+
...state,
|
|
70
|
+
selectedResourceIds
|
|
71
|
+
})),
|
|
72
|
+
on(actions.loadFirstPage, (state) => ({
|
|
73
|
+
...state,
|
|
74
|
+
pagingOptions: { ...state.pagingOptions, page: 1 }
|
|
75
|
+
})),
|
|
76
|
+
on(actions.loadPageSuccess, (state, { resources, pagingOptions }) => {
|
|
77
|
+
const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;
|
|
78
|
+
if (lastPageNumber && pagingOptions.page > lastPageNumber) {
|
|
79
|
+
return {
|
|
80
|
+
...state,
|
|
81
|
+
pagingOptions: {
|
|
82
|
+
...state.pagingOptions,
|
|
83
|
+
page: lastPageNumber
|
|
84
|
+
},
|
|
85
|
+
lastPageNumber,
|
|
86
|
+
selectedResourceIds: []
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return entityAdapter.setAll(resources, {
|
|
90
|
+
...state,
|
|
91
|
+
lastPageNumber,
|
|
92
|
+
selectedResourceIds: []
|
|
93
|
+
});
|
|
94
|
+
}),
|
|
95
|
+
on(actions.deleteSuccess, (state) => ({
|
|
96
|
+
...state,
|
|
97
|
+
selectedResourceIds: []
|
|
98
|
+
})),
|
|
99
|
+
...createLoadingStateActionHandlers(actions.loadPage, actions.loadPageSuccess, actions.loadPageFailure),
|
|
100
|
+
...createRequestStateActionHandlers(undefined, actions.delete, actions.deleteSuccess, actions.deleteFailure),
|
|
101
|
+
...createRequestStateActionHandlers(actions.resetRequestState, actions.patch, actions.patchSuccess, actions.patchFailure)
|
|
102
|
+
];
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2xpc3Qvc3JjL2xpYi9zdGF0ZS1nZW5lcmF0b3IvbGlzdC1yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsd0JBQXdCLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEcsT0FBTyxFQUNMLGdDQUFnQyxFQUNoQyxnQ0FBZ0MsRUFDaEMsaUJBQWlCLEVBQ2xCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLG1CQUFtQixFQUFpQixNQUFNLGNBQWMsQ0FBQztBQUNsRSxPQUFPLEVBQWlCLGFBQWEsRUFBRSxFQUFFLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBSzdFLE1BQU0sVUFBVSx1QkFBdUIsQ0FBbUMsS0FBSyxHQUFHLElBQUk7SUFDcEYsT0FBTyxtQkFBbUIsQ0FBQztRQUN6QixRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0tBQ3RDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQy9CLGFBQStCLEVBQy9CLE9BQXFDLEVBQ3JDLGNBQXlFLEVBQ3pFLGdCQUE2QztJQUU3QyxNQUFNLFlBQVksR0FBNEI7UUFDNUMsR0FBRyxzQkFBc0IsQ0FBZSxhQUFhLENBQUM7UUFDdEQsR0FBRyxnQkFBZ0I7S0FDcEIsQ0FBQztJQUNGLE9BQU8sYUFBYSxDQUNsQixZQUFZLEVBQ1osR0FBRyx3QkFBd0IsQ0FBa0IsWUFBWSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsRUFDbEYsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUM3QixhQUErQjtJQUUvQixPQUFPLGFB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QUMsUUFBUSxFQUNoQixPQUFPLENBQUMsZUFBZSxFQUN2QixPQUFPLENBQUMsZUFBZSxDQUN4QjtRQUNELEdBQUcsZ0NBQWdDLENBQ2pDLFNBQVMsRUFDVCxPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLE9BQU8sQ0FBQyxhQUFhLENBQ3RCO1FBQ0QsR0FBRyxnQ0FBZ0MsQ0FDakMsT0FBTyxDQUFDLGlCQUFpQixFQUN6QixPQUFPLENBQUMsS0FBSyxFQUNiLE9BQU8sQ0FBQyxZQUFZLEVBQ3BCLE9BQU8sQ0FBQyxZQUFZLENBQ3JCO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBERUZBVUxUX1BBR0UsIGdldERlZmF1bHRSZXF1ZXN0T3B0aW9ucywgUmVxdWVzdFN0YXRlIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBjcmVhdGVMb2FkaW5nU3RhdGVBY3Rpb25IYW5kbGVycyxcclxuICBjcmVhdGVSZXF1ZXN0U3RhdGVBY3Rpb25IYW5kbGVycyxcclxuICBnZXRMYXN0UGFnZU51bWJlclxyXG59IGZyb20gJ0BuZ2R1eC9zdG9yZS1jb21tb24nO1xyXG5pbXBvcnQgeyBjcmVhdGVFbnRpdHlBZGFwdGVyLCBFbnRpdHlBZGFwdGVyIH0gZnJvbSAnQG5ncngvZW50aXR5JztcclxuaW1wb3J0IHsgQWN0aW9uUmVkdWNlciwgY3JlYXRlUmVkdWNlciwgb24sIFJlZHVjZXJUeXBlcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciB9IGZyb20gJ0BuZ3J4L3N0b3JlL3NyYy9tb2RlbHMnO1xyXG5cclxuaW1wb3J0IHsgTGlzdEFjdGlvbnMsIExpc3RTdGF0ZSB9IGZyb20gJy4uL21vZGVscy9saXN0Lm1vZGVsJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMaXN0RW50aXR5QWRhcHRlcjxUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfT4oaWRLZXkgPSAnaWQnKTogRW50aXR5QWRhcHRlcjxUPiB7XHJcbiAgcmV0dXJuIGNyZWF0ZUVudGl0eUFkYXB0ZXIoe1xyXG4gICAgc2VsZWN0SWQ6IHJlc291cmNlID0+IHJlc291cmNlW2lkS2V5XVxyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdFJlZHVjZXI8VCwgRSwgUyA9IFQsIFBhcmFtcyA9IFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KFxyXG4gIGVudGl0eUFkYXB0ZXI6IEVudGl0eUFkYXB0ZXI8Uz4sXHJcbiAgYWN0aW9uczogTGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPixcclxuICBhY3Rpb25IYW5kbGVycz86IFJlZHVjZXJUeXBlczxMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiwgQWN0aW9uQ3JlYXRvcltdPltdLFxyXG4gIGluaXRpYWxMaXN0U3RhdGU/OiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfVxyXG4pOiBBY3Rpb25SZWR1Y2VyPExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+PiB7XHJcbiAgY29uc3QgaW5pdGlhbFN0YXRlOiBMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiA9IHtcclxuICAgIC4uLmNyZWF0ZUluaXRpYWxMaXN0U3RhdGU8UywgRSwgUGFyYW1zPihlbnRpdHlBZGFwdGVyKSxcclxuICAgIC4uLmluaXRpYWxMaXN0U3RhdGVcclxuICB9O1xyXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyPExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+PihcclxuICAgIGluaXRpYWxTdGF0ZSxcclxuICAgIC4uLmNyZWF0ZUxpc3RBY3Rpb25IYW5kbGVyczxULCBFLCBTLCBQYXJhbXM+KGluaXRpYWxTdGF0ZSwgZW50aXR5QWRhcHRlciwgYWN0aW9ucyksXHJcbiAgICAuLi4oYWN0aW9uSGFuZGxlcnMgfHwgW10pXHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlSW5pdGlhbExpc3RTdGF0ZTxULCBFLCBQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihcclxuICBlbnRpdHlBZGFwdGVyOiBFbnRpdHlBZGFwdGVyPFQ+XHJcbik6IExpc3RTdGF0ZTxULCBFLCBQYXJhbXM+IHtcclxuICByZXR1cm4gZW50aXR5QWRhcHRlci5nZXRJbml0aWFsU3RhdGUoe1xyXG4gICAgLi4uZ2V0RGVmYXVsdFJlcXVlc3RPcHRpb25zPFBhcmFtcz4oKSxcclxuICAgIGxhc3RQYWdlTnVtYmVyOiB1bmRlZmluZWQsXHJcbiAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXSxcclxuICAgIGxvYWRpbmdTdGF0ZTogUmVxdWVzdFN0YXRlLklETEUsXHJcbiAgICByZXF1ZXN0U3RhdGU6IFJlcXVlc3RTdGF0ZS5JRExFLFxyXG4gICAgZXJyb3JzOiB1bmRlZmluZWRcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlTGlzdEFjdGlvbkhhbmRsZXJzPFQsIEUsIFMsIFBhcmFtcz4oXHJcbiAgaW5pdGlhbExpc3RTdGF0ZTogTGlzdFN0YXRlPFMsIEUsIFBhcmFtcz4sXHJcbiAgZW50aXR5QWRhcHRlcjogRW50aXR5QWRhcHRlcjxTPixcclxuICBhY3Rpb25zOiBMaXN0QWN0aW9uczxULCBFLCBTLCBQYXJhbXM+XHJcbik6IFJlZHVjZXJUeXBlczxMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiwgQWN0aW9uQ3JlYXRvcltdPltdIHtcclxuICByZXR1cm4gW1xyXG4gICAgb24oYWN0aW9ucy5yZXNldCwgKCkgPT4gaW5pdGlhbExpc3RTdGF0ZSksXHJcbiAgICBvbihhY3Rpb25zLmluaXRpYWxpemUsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEUsIFBhcmFtcz4pID0+XHJcbiAgICAgIGVudGl0eUFkYXB0ZXIucmVtb3ZlQWxsKHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXSxcclxuICAgICAgICBwYWdpbmdPcHRpb25zOiB7XHJcbiAgICAgICAgICAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLFxyXG4gICAgICAgICAgcGFnZTogREVGQVVMVF9QQUdFXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXF1ZXN0U3RhdGU6IFJlcXVlc3RTdGF0ZS5JRExFXHJcbiAgICAgIH0pXHJcbiAgICApLFxyXG4gICAgb24oYWN0aW9ucy5jaGFuZ2VQYWdlU2l6ZSwgYWN0aW9ucy5zZXRQYWdlU2l6ZSwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiwgeyBwYWdlU2l6ZSB9KSA9PiAoe1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgcGFnaW5nT3B0aW9uczogeyBwYWdlOiBERUZBVUxUX1BBR0UsIHBhZ2VTaXplIH0sXHJcbiAgICAgIGxhc3RQYWdlTnVtYmVyOiB1bmRlZmluZWRcclxuICAgIH0pKSxcclxuICAgIG9uKGFjdGlvbnMuY2hhbmdlUGFnZU51bWJlciwgKHN0YXRlOiBMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiwgeyBwYWdlTnVtYmVyIH0pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBwYWdpbmdPcHRpb25zOiB7IC4uLnN0YXRlLnBhZ2luZ09wdGlvbnMsIHBhZ2U6IHBhZ2VOdW1iZXIgfVxyXG4gICAgfSkpLFxyXG4gICAgb24oYWN0aW9ucy5jaGFuZ2VQYWdpbmdPcHRpb25zLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+LCB7IHBhZ2luZ09wdGlvbnMgfSkgPT4gKHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIHBhZ2luZ09wdGlvbnNcclxuICAgIH0pKSxcclxuICAgIG9uKGFjdGlvbnMuY2hhbmdlU29ydGluZywgYWN0aW9ucy5zZXRTb3J0aW5nLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+LCB7IHNvcnRpbmdPcHRpb25zIH0pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBzb3J0aW5nT3B0aW9ucyxcclxuICAgICAgcGFnaW5nT3B0aW9uczogeyAuLi5zdGF0ZS5wYWdpbmdPcHRpb25zLCBwYWdlOiBERUZBVUxUX1BBR0UgfVxyXG4gICAgfSkpLFxyXG4gICAgb24oYWN0aW9ucy5jaGFuZ2VGaWx0ZXJpbmcsIGFjdGlvbnMuc2V0RmlsdGVyaW5nLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+LCB7IGZpbHRlcmluZ09wdGlvbnMgfSkgPT4gKHtcclxuICAgICAgLi4uc3RhdGUsXHJcbiAgICAgIGZpbHRlcmluZ09wdGlvbnMsXHJcbiAgICAgIHBhZ2luZ09wdGlvbnM6IHsgLi4uc3RhdGUucGFnaW5nT3B0aW9ucywgcGFnZTogREVGQVVMVF9QQUdFIH0sXHJcbiAgICAgIGxhc3RQYWdlTnVtYmVyOiB1bmRlZmluZWRcclxuICAgIH0pKSxcclxuICAgIG9uKFxyXG4gICAgICBhY3Rpb25zLmNoYW5nZVJlcXVlc3RQYXJhbXMsXHJcbiAgICAgIGFjdGlvbnMuc2V0UmVxdWVzdFBhcmFtcyxcclxuICAgICAgKHN0YXRlOiBMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiwgeyBwYXJhbXMgfSk6IExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+ID0+ICh7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgcmVxdWVzdFBhcmFtZXRlcnM6IHBhcmFtcyxcclxuICAgICAgICBwYWdpbmdPcHRpb25zOiB7IC4uLnN0YXRlLnBhZ2luZ09wdGlvbnMsIHBhZ2U6IERFRkFVTFRfUEFHRSB9XHJcbiAgICAgIH0pXHJcbiAgICApLFxyXG4gICAgb24oYWN0aW9ucy5jaGFuZ2VTZWxlY3RlZFJlc291cmNlcywgKHN0YXRlOiBMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiwgeyBzZWxlY3RlZFJlc291cmNlSWRzIH0pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBzZWxlY3RlZFJlc291cmNlSWRzXHJcbiAgICB9KSksXHJcbiAgICBvbihhY3Rpb25zLmxvYWRGaXJzdFBhZ2UsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEUsIFBhcmFtcz4pID0+ICh7XHJcbiAgICAgIC4uLnN0YXRlLFxyXG4gICAgICBwYWdpbmdPcHRpb25zOiB7IC4uLnN0YXRlLnBhZ2luZ09wdGlvbnMsIHBhZ2U6IDEgfVxyXG4gICAgfSkpLFxyXG4gICAgb24oYWN0aW9ucy5sb2FkUGFnZVN1Y2Nlc3MsIChzdGF0ZTogTGlzdFN0YXRlPFMsIEUsIFBhcmFtcz4sIHsgcmVzb3VyY2VzLCBwYWdpbmdPcHRpb25zIH0pID0+IHtcclxuICAgICAgY29uc3QgbGFzdFBhZ2VOdW1iZXIgPSBnZXRMYXN0UGFnZU51bWJlcihyZXNvdXJjZXMsIHBhZ2luZ09wdGlvbnMpIHx8IHN0YXRlLmxhc3RQYWdlTnVtYmVyO1xyXG4gICAgICBpZiAobGFzdFBhZ2VOdW1iZXIgJiYgcGFnaW5nT3B0aW9ucy5wYWdlID4gbGFzdFBhZ2VOdW1iZXIpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICBwYWdpbmdPcHRpb25zOiB7XHJcbiAgICAgICAgICAgIC4uLnN0YXRlLnBhZ2luZ09wdGlvbnMsXHJcbiAgICAgICAgICAgIHBhZ2U6IGxhc3RQYWdlTnVtYmVyXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbGFzdFBhZ2VOdW1iZXIsXHJcbiAgICAgICAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXVxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBlbnRpdHlBZGFwdGVyLnNldEFsbChyZXNvdXJjZXMsIHtcclxuICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICBsYXN0UGFnZU51bWJlcixcclxuICAgICAgICBzZWxlY3RlZFJlc291cmNlSWRzOiBbXVxyXG4gICAgICB9KTtcclxuICAgIH0pLFxyXG4gICAgb24oYWN0aW9ucy5kZWxldGVTdWNjZXNzLCAoc3RhdGU6IExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+KSA9PiAoe1xyXG4gICAgICAuLi5zdGF0ZSxcclxuICAgICAgc2VsZWN0ZWRSZXNvdXJjZUlkczogW10gYXMgc3RyaW5nW11cclxuICAgIH0pKSxcclxuICAgIC4uLmNyZWF0ZUxvYWRpbmdTdGF0ZUFjdGlvbkhhbmRsZXJzPExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+PihcclxuICAgICAgYWN0aW9ucy5sb2FkUGFnZSxcclxuICAgICAgYWN0aW9ucy5sb2FkUGFnZVN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMubG9hZFBhZ2VGYWlsdXJlXHJcbiAgICApLFxyXG4gICAgLi4uY3JlYXRlUmVxdWVzdFN0YXRlQWN0aW9uSGFuZGxlcnM8TGlzdFN0YXRlPFMsIEUsIFBhcmFtcz4sIEU+KFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIGFjdGlvbnMuZGVsZXRlLFxyXG4gICAgICBhY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMuZGVsZXRlRmFpbHVyZVxyXG4gICAgKSxcclxuICAgIC4uLmNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzPExpc3RTdGF0ZTxTLCBFLCBQYXJhbXM+LCBFPihcclxuICAgICAgYWN0aW9ucy5yZXNldFJlcXVlc3RTdGF0ZSxcclxuICAgICAgYWN0aW9ucy5wYXRjaCxcclxuICAgICAgYWN0aW9ucy5wYXRjaFN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMucGF0Y2hGYWlsdXJlXHJcbiAgICApXHJcbiAgXTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
2
|
+
import { RequestState } from '@ngdux/data-model-common';
|
|
3
|
+
import { createSelector } from '@ngrx/store';
|
|
4
|
+
export function createListSelectors(entityAdapter, getListState) {
|
|
5
|
+
const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);
|
|
6
|
+
const getPagingOptions = createSelector(getListState, state => state.pagingOptions);
|
|
7
|
+
const getRequestOptions = createSelector(getListState, (state) => ({
|
|
8
|
+
pagingOptions: state.pagingOptions,
|
|
9
|
+
sortingOptions: state.sortingOptions,
|
|
10
|
+
filteringOptions: state.filteringOptions
|
|
11
|
+
}));
|
|
12
|
+
const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);
|
|
13
|
+
const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {
|
|
14
|
+
return lastPageNumber ? lastPageNumber <= page : false;
|
|
15
|
+
});
|
|
16
|
+
const getCurrentPageData = createSelector(getAll, resources => {
|
|
17
|
+
return resources;
|
|
18
|
+
});
|
|
19
|
+
const getSortingOptions = createSelector(getListState, state => state.sortingOptions);
|
|
20
|
+
const getRequestParameters = createSelector(getListState, state => state.requestParameters);
|
|
21
|
+
const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);
|
|
22
|
+
const getCurrentPageNumber = createSelector(getPagingOptions, options => options?.page);
|
|
23
|
+
const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);
|
|
24
|
+
const getLoadingState = createSelector(getListState, state => state.loadingState);
|
|
25
|
+
const getSelectedItems = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.reduce((acc, selectedResourceId) => {
|
|
26
|
+
const resource = resources[selectedResourceId];
|
|
27
|
+
if (resource) {
|
|
28
|
+
acc.push(resource);
|
|
29
|
+
}
|
|
30
|
+
return acc;
|
|
31
|
+
}, []));
|
|
32
|
+
const getSelectionRecord = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.reduce((selected, selectedResourceId) => {
|
|
33
|
+
const resource = resources[selectedResourceId];
|
|
34
|
+
if (resource) {
|
|
35
|
+
selected[selectedResourceId] = resource;
|
|
36
|
+
}
|
|
37
|
+
return selected;
|
|
38
|
+
}, {}));
|
|
39
|
+
const getRequestState = createSelector(getListState, state => state.requestState);
|
|
40
|
+
const getErrors = createSelector(getListState, state => state.errors);
|
|
41
|
+
const isReady = createSelector(getAll, getLoadingState, (users, loadingState) => !!users && loadingState === RequestState.SUCCESS);
|
|
42
|
+
const areSelectedReady = createSelector(getSelectedResourceIds, getSelectionRecord, getLoadingState, (selectedResourceIds, resources, loadingState) => {
|
|
43
|
+
return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;
|
|
44
|
+
});
|
|
45
|
+
const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);
|
|
46
|
+
const isCopyDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => selectedResourceIds.length !== 1);
|
|
47
|
+
const getTotalCount = createSelector(getPagingOptions, isLastPage, getCurrentPageData, (pagingOptions, isLastPage, currentPageData) => {
|
|
48
|
+
if (!pagingOptions) {
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
if (isLastPage) {
|
|
52
|
+
return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;
|
|
53
|
+
}
|
|
54
|
+
return (pagingOptions.page + 1) * pagingOptions.pageSize;
|
|
55
|
+
});
|
|
56
|
+
return {
|
|
57
|
+
getAll,
|
|
58
|
+
getRequestOptions,
|
|
59
|
+
isLastPage,
|
|
60
|
+
getCurrentPageData,
|
|
61
|
+
getPagingOptions,
|
|
62
|
+
getSortingOptions,
|
|
63
|
+
getFilteringOptions,
|
|
64
|
+
getRequestParameters,
|
|
65
|
+
getCurrentPageNumber,
|
|
66
|
+
getLastPageNumber,
|
|
67
|
+
getLoadingState,
|
|
68
|
+
getSelectedResourceIds,
|
|
69
|
+
getSelectedItems,
|
|
70
|
+
getSelectionRecord,
|
|
71
|
+
getRequestState,
|
|
72
|
+
getErrors,
|
|
73
|
+
areSelectedReady,
|
|
74
|
+
isReady,
|
|
75
|
+
isDeleteDisabled,
|
|
76
|
+
isCopyDisabled,
|
|
77
|
+
getTotalCount
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvbGlzdC9zcmMvbGliL3N0YXRlLWdlbmVyYXRvci9saXN0LXNlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsT0FBTyxFQUFrQixZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RSxPQUFPLEVBQXdDLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUduRixNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLGFBQStCLEVBQy9CLFlBQTRHO0lBRTVHLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXBGLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVwRixNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FDdEMsWUFBWSxFQUNaLENBQUMsS0FBSyxFQUFrQixFQUFFLENBQUMsQ0FBQztRQUMxQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7UUFDbEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1FBQ3BDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7S0FDekMsQ0FBQyxDQUNILENBQUM7SUFFRixNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFdEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxjQUFjLEVBQUUsRUFBRTtRQUNsRyxPQUFPLGNBQWMsQ0FBQyxD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QkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIsZ0JBQWdCO1FBQ2hCLGtCQUFrQjtRQUNsQixlQUFlO1FBQ2YsU0FBUztRQUNULGdCQUFnQjtRQUNoQixPQUFPO1FBQ1AsZ0JBQWdCO1FBQ2hCLGNBQWM7UUFDZCxhQUFhO0tBQ2QsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXR5cGVzICovXHJcbmltcG9ydCB7IFJlcXVlc3RPcHRpb25zLCBSZXF1ZXN0U3RhdGUgfSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xyXG5pbXBvcnQgeyBFbnRpdHlBZGFwdGVyIH0gZnJvbSAnQG5ncngvZW50aXR5JztcclxuaW1wb3J0IHsgRGVmYXVsdFByb2plY3RvckZuLCBNZW1vaXplZFNlbGVjdG9yLCBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgTGlzdFNlbGVjdG9ycywgTGlzdFN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2xpc3QubW9kZWwnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RTZWxlY3RvcnM8VCwgRSwgUGFyYW1zID0gUmVjb3JkPHN0cmluZywgc3RyaW5nPj4oXHJcbiAgZW50aXR5QWRhcHRlcjogRW50aXR5QWRhcHRlcjxUPixcclxuICBnZXRMaXN0U3RhdGU6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBMaXN0U3RhdGU8VCwgRSwgUGFyYW1zPiwgRGVmYXVsdFByb2plY3RvckZuPExpc3RTdGF0ZTxULCBFLCBQYXJhbXM+Pj5cclxuKTogTGlzdFNlbGVjdG9yczxULCBFLCBQYXJhbXM+IHtcclxuICBjb25zdCBnZXRBbGwgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIGVudGl0eUFkYXB0ZXIuZ2V0U2VsZWN0b3JzKCkuc2VsZWN0QWxsKTtcclxuXHJcbiAgY29uc3QgZ2V0UGFnaW5nT3B0aW9ucyA9IGNyZWF0ZVNlbGVjdG9yKGdldExpc3RTdGF0ZSwgc3RhdGUgPT4gc3RhdGUucGFnaW5nT3B0aW9ucyk7XHJcblxyXG4gIGNvbnN0IGdldFJlcXVlc3RPcHRpb25zID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgICBnZXRMaXN0U3RhdGUsXHJcbiAgICAoc3RhdGUpOiBSZXF1ZXN0T3B0aW9ucyA9PiAoe1xyXG4gICAgICBwYWdpbmdPcHRpb25zOiBzdGF0ZS5wYWdpbmdPcHRpb25zLFxyXG4gICAgICBzb3J0aW5nT3B0aW9uczogc3RhdGUuc29ydGluZ09wdGlvbnMsXHJcbiAgICAgIGZpbHRlcmluZ09wdGlvbnM6IHN0YXRlLmZpbHRlcmluZ09wdGlvbnNcclxuICAgIH0pXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgZ2V0TGFzdFBhZ2VOdW1iZXIgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIHN0YXRlID0+IHN0YXRlLmxhc3RQYWdlTnVtYmVyKTtcclxuXHJcbiAgY29uc3QgaXNMYXN0UGFnZSA9IGNyZWF0ZVNlbGVjdG9yKGdldFBhZ2luZ09wdGlvbnMsIGdldExhc3RQYWdlTnVtYmVyLCAoeyBwYWdlIH0sIGxhc3RQYWdlTnVtYmVyKSA9PiB7XHJcbiAgICByZXR1cm4gbGFzdFBhZ2VOdW1iZXIgPyBsYXN0UGFnZU51bWJlciA8PSBwYWdlIDogZmFsc2U7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGdldEN1cnJlbnRQYWdlRGF0YSA9IGNyZWF0ZVNlbGVjdG9yKGdldEFsbCwgcmVzb3VyY2VzID0+IHtcclxuICAgIHJldHVybiByZXNvdXJjZXM7XHJcbiAgfSk7XHJcblxyXG4gIGNvbnN0IGdldFNvcnRpbmdPcHRpb25zID0gY3JlYXRlU2VsZWN0b3IoZ2V0TGlzdFN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5zb3J0aW5nT3B0aW9ucyk7XHJcblxyXG4gIGNvbnN0IGdldFJlcXVlc3RQYXJhbWV0ZXJzID0gY3JlYXRlU2VsZWN0b3IoZ2V0TGlzdFN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5yZXF1ZXN0UGFyYW1ldGVycyk7XHJcblxyXG4gIGNvbnN0IGdldEZpbHRlcmluZ09wdGlvbnMgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIHN0YXRlID0+IHN0YXRlLmZpbHRlcmluZ09wdGlvbnMpO1xyXG5cclxuICBjb25zdCBnZXRDdXJyZW50UGFnZU51bWJlciA9IGNyZWF0ZVNlbGVjdG9yKGdldFBhZ2luZ09wdGlvbnMsIG9wdGlvbnMgPT4gb3B0aW9ucz8ucGFnZSk7XHJcblxyXG4gIGNvbnN0IGdldFNlbGVjdGVkUmVzb3VyY2VJZHMgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIHN0YXRlID0+IHN0YXRlLnNlbGVjdGVkUmVzb3VyY2VJZHMpO1xyXG5cclxuICBjb25zdCBnZXRMb2FkaW5nU3RhdGUgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIHN0YXRlID0+IHN0YXRlLmxvYWRpbmdTdGF0ZSk7XHJcblxyXG4gIGNvbnN0IGdldFNlbGVjdGVkSXRlbXMgPSBjcmVhdGVTZWxlY3RvcihcclxuICAgIGdldFNlbGVjdGVkUmVzb3VyY2VJZHMsXHJcbiAgICBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIGVudGl0eUFkYXB0ZXIuZ2V0U2VsZWN0b3JzKCkuc2VsZWN0RW50aXRpZXMpLFxyXG4gICAgKHNlbGVjdGVkUmVzb3VyY2VJZHMsIHJlc291cmNlcyk6IFRbXSA9PlxyXG4gICAgICBzZWxlY3RlZFJlc291cmNlSWRzLnJlZHVjZSgoYWNjLCBzZWxlY3RlZFJlc291cmNlSWQpOiBUW10gPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VzW3NlbGVjdGVkUmVzb3VyY2VJZF07XHJcbiAgICAgICAgaWYgKHJlc291cmNlKSB7XHJcbiAgICAgICAgICBhY2MucHVzaChyZXNvdXJjZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhY2M7XHJcbiAgICAgIH0sIFtdIGFzIFRbXSlcclxuICApO1xyXG5cclxuICBjb25zdCBnZXRTZWxlY3Rpb25SZWNvcmQgPSBjcmVhdGVTZWxlY3RvcihcclxuICAgIGdldFNlbGVjdGVkUmVzb3VyY2VJZHMsXHJcbiAgICBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIGVudGl0eUFkYXB0ZXIuZ2V0U2VsZWN0b3JzKCkuc2VsZWN0RW50aXRpZXMpLFxyXG4gICAgKHNlbGVjdGVkUmVzb3VyY2VJZHMsIHJlc291cmNlcyk6IFJlY29yZDxzdHJpbmcsIFQ+ID0+XHJcbiAgICAgIHNlbGVjdGVkUmVzb3VyY2VJZHMucmVkdWNlKChzZWxlY3RlZCwgc2VsZWN0ZWRSZXNvdXJjZUlkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcmVzb3VyY2UgPSByZXNvdXJjZXNbc2VsZWN0ZWRSZXNvdXJjZUlkXTtcclxuICAgICAgICBpZiAocmVzb3VyY2UpIHtcclxuICAgICAgICAgIHNlbGVjdGVkW3NlbGVjdGVkUmVzb3VyY2VJZF0gPSByZXNvdXJjZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHNlbGVjdGVkO1xyXG4gICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBUPilcclxuICApO1xyXG5cclxuICBjb25zdCBnZXRSZXF1ZXN0U3RhdGUgPSBjcmVhdGVTZWxlY3RvcihnZXRMaXN0U3RhdGUsIHN0YXRlID0+IHN0YXRlLnJlcXVlc3RTdGF0ZSk7XHJcblxyXG4gIGNvbnN0IGdldEVycm9ycyA9IGNyZWF0ZVNlbGVjdG9yKGdldExpc3RTdGF0ZSwgc3RhdGUgPT4gc3RhdGUuZXJyb3JzKTtcclxuXHJcbiAgY29uc3QgaXNSZWFkeSA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gICAgZ2V0QWxsLFxyXG4gICAgZ2V0TG9hZGluZ1N0YXRlLFxyXG4gICAgKHVzZXJzLCBsb2FkaW5nU3RhdGUpID0+ICEhdXNlcnMgJiYgbG9hZGluZ1N0YXRlID09PSBSZXF1ZXN0U3RhdGUuU1VDQ0VTU1xyXG4gICk7XHJcblxyXG4gIGNvbnN0IGFyZVNlbGVjdGVkUmVhZHkgPSBjcmVhdGVTZWxlY3RvcihcclxuICAgIGdldFNlbGVjdGVkUmVzb3VyY2VJZHMsXHJcbiAgICBnZXRTZWxlY3Rpb25SZWNvcmQsXHJcbiAgICBnZXRMb2FkaW5nU3RhdGUsXHJcbiAgICAoc2VsZWN0ZWRSZXNvdXJjZUlkcywgcmVzb3VyY2VzLCBsb2FkaW5nU3RhdGUpID0+IHtcclxuICAgICAgcmV0dXJuIHNlbGVjdGVkUmVzb3VyY2VJZHMuZXZlcnkocmVzb3VyY2VJZCA9PiAhIXJlc291cmNlc1tyZXNvdXJjZUlkXSkgJiYgbG9hZGluZ1N0YXRlID09PSBSZXF1ZXN0U3RhdGUuU1VDQ0VTUztcclxuICAgIH1cclxuICApO1xyXG5cclxuICBjb25zdCBpc0RlbGV0ZURpc2FibGVkID0gY3JlYXRlU2VsZWN0b3IoZ2V0U2VsZWN0ZWRSZXNvdXJjZUlkcywgc2VsZWN0ZWRSZXNvdXJjZUlkcyA9PiAhc2VsZWN0ZWRSZXNvdXJjZUlkcy5sZW5ndGgpO1xyXG5cclxuICBjb25zdCBpc0NvcHlEaXNhYmxlZCA9IGNyZWF0ZVNlbGVjdG9yKFxyXG4gICAgZ2V0U2VsZWN0ZWRSZXNvdXJjZUlkcyxcclxuICAgIHNlbGVjdGVkUmVzb3VyY2VJZHMgPT4gc2VsZWN0ZWRSZXNvdXJjZUlkcy5sZW5ndGggIT09IDFcclxuICApO1xyXG5cclxuICBjb25zdCBnZXRUb3RhbENvdW50ID0gY3JlYXRlU2VsZWN0b3IoXHJcbiAgICBnZXRQYWdpbmdPcHRpb25zLFxyXG4gICAgaXNMYXN0UGFnZSxcclxuICAgIGdldEN1cnJlbnRQYWdlRGF0YSxcclxuICAgIChwYWdpbmdPcHRpb25zLCBpc0xhc3RQYWdlLCBjdXJyZW50UGFnZURhdGEpID0+IHtcclxuICAgICAgaWYgKCFwYWdpbmdPcHRpb25zKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc0xhc3RQYWdlKSB7XHJcbiAgICAgICAgcmV0dXJuIChwYWdpbmdPcHRpb25zLnBhZ2UgLSAxKSAqIHBhZ2luZ09wdGlvbnMucGFnZVNpemUgKyBjdXJyZW50UGFnZURhdGEubGVuZ3RoO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAocGFnaW5nT3B0aW9ucy5wYWdlICsgMSkgKiBwYWdpbmdPcHRpb25zLnBhZ2VTaXplO1xyXG4gICAgfVxyXG4gICk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBnZXRBbGwsXHJcbiAgICBnZXRSZXF1ZXN0T3B0aW9ucyxcclxuICAgIGlzTGFzdFBhZ2UsXHJcbiAgICBnZXRDdXJyZW50UGFnZURhdGEsXHJcbiAgICBnZXRQYWdpbmdPcHRpb25zLFxyXG4gICAgZ2V0U29ydGluZ09wdGlvbnMsXHJcbiAgICBnZXRGaWx0ZXJpbmdPcHRpb25zLFxyXG4gICAgZ2V0UmVxdWVzdFBhcmFtZXRlcnMsXHJcbiAgICBnZXRDdXJyZW50UGFnZU51bWJlcixcclxuICAgIGdldExhc3RQYWdlTnVtYmVyLFxyXG4gICAgZ2V0TG9hZGluZ1N0YXRlLFxyXG4gICAgZ2V0U2VsZWN0ZWRSZXNvdXJjZUlkcyxcclxuICAgIGdldFNlbGVjdGVkSXRlbXMsXHJcbiAgICBnZXRTZWxlY3Rpb25SZWNvcmQsXHJcbiAgICBnZXRSZXF1ZXN0U3RhdGUsXHJcbiAgICBnZXRFcnJvcnMsXHJcbiAgICBhcmVTZWxlY3RlZFJlYWR5LFxyXG4gICAgaXNSZWFkeSxcclxuICAgIGlzRGVsZXRlRGlzYWJsZWQsXHJcbiAgICBpc0NvcHlEaXNhYmxlZCxcclxuICAgIGdldFRvdGFsQ291bnRcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createFeatureSelector } from '@ngrx/store';
|
|
2
|
+
import { createListActions } from './list-actions';
|
|
3
|
+
import { createListEntityAdapter, createListReducer } from './list-reducer';
|
|
4
|
+
import { createListSelectors } from './list-selectors';
|
|
5
|
+
export function createListState(featureName, idKey) {
|
|
6
|
+
const actions = createListActions(featureName);
|
|
7
|
+
const entityAdapter = createListEntityAdapter(idKey);
|
|
8
|
+
const reducer = createListReducer(entityAdapter, actions);
|
|
9
|
+
const getState = createFeatureSelector(featureName);
|
|
10
|
+
const selectors = createListSelectors(entityAdapter, getState);
|
|
11
|
+
return {
|
|
12
|
+
actions,
|
|
13
|
+
reducer: (state, action) => reducer(state, action),
|
|
14
|
+
selectors,
|
|
15
|
+
entityAdapter
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9saXN0L3NyYy9saWIvc3RhdGUtZ2VuZXJhdG9yL2xpc3Qtc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXZELE1BQU0sVUFBVSxlQUFlLENBSzdCLFdBQW1CLEVBQUUsS0FBYztJQUNuQyxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBa0IsV0FBVyxDQUFDLENBQUM7SUFDaEUsTUFBTSxhQUFhLEdBQUcsdUJBQXVCLENBQUksS0FBSyxDQUFDLENBQUM7SUFDeEQsTUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQWtCLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRSxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBMEIsV0FBVyxDQUFDLENBQUM7SUFDN0UsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQWUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTdFLE9BQU87UUFDTCxPQUFPO1FBQ1AsT0FBTyxFQUFFLENBQUMsS0FBOEIsRUFBRSxNQUFjLEVBQTJCLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztRQUM1RyxTQUFTO1FBQ1QsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uLCBjcmVhdGVGZWF0dXJlU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IExpc3RTdGF0ZSB9IGZyb20gJy4uL21vZGVscy9saXN0Lm1vZGVsJztcclxuaW1wb3J0IHsgY3JlYXRlTGlzdEFjdGlvbnMgfSBmcm9tICcuL2xpc3QtYWN0aW9ucyc7XHJcbmltcG9ydCB7IGNyZWF0ZUxpc3RFbnRpdHlBZGFwdGVyLCBjcmVhdGVMaXN0UmVkdWNlciB9IGZyb20gJy4vbGlzdC1yZWR1Y2VyJztcclxuaW1wb3J0IHsgY3JlYXRlTGlzdFNlbGVjdG9ycyB9IGZyb20gJy4vbGlzdC1zZWxlY3RvcnMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxpc3RTdGF0ZTxcclxuICBUIGV4dGVuZHMgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcclxuICBFLFxyXG4gIFMgZXh0ZW5kcyB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0gVCxcclxuICBQYXJhbXMgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbj4oZmVhdHVyZU5hbWU6IHN0cmluZywgaWRLZXk/OiBzdHJpbmcpIHtcclxuICBjb25zdCBhY3Rpb25zID0gY3JlYXRlTGlzdEFjdGlvbnM8VCwgRSwgUywgUGFyYW1zPihmZWF0dXJlTmFtZSk7XHJcbiAgY29uc3QgZW50aXR5QWRhcHRlciA9IGNyZWF0ZUxpc3RFbnRpdHlBZGFwdGVyPFM+KGlkS2V5KTtcclxuICBjb25zdCByZWR1Y2VyID0gY3JlYXRlTGlzdFJlZHVjZXI8VCwgRSwgUywgUGFyYW1zPihlbnRpdHlBZGFwdGVyLCBhY3Rpb25zKTtcclxuICBjb25zdCBnZXRTdGF0ZSA9IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxMaXN0U3RhdGU8UywgRSwgUGFyYW1zPj4oZmVhdHVyZU5hbWUpO1xyXG4gIGNvbnN0IHNlbGVjdG9ycyA9IGNyZWF0ZUxpc3RTZWxlY3RvcnM8UywgRSwgUGFyYW1zPihlbnRpdHlBZGFwdGVyLCBnZXRTdGF0ZSk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBhY3Rpb25zLFxyXG4gICAgcmVkdWNlcjogKHN0YXRlOiBMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiwgYWN0aW9uOiBBY3Rpb24pOiBMaXN0U3RhdGU8UywgRSwgUGFyYW1zPiA9PiByZWR1Y2VyKHN0YXRlLCBhY3Rpb24pLFxyXG4gICAgc2VsZWN0b3JzLFxyXG4gICAgZW50aXR5QWRhcHRlclxyXG4gIH07XHJcbn1cclxuIl19
|