@ngdux/list 4.0.0 → 5.0.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/fesm2022/ngdux-list.mjs
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { RequestState, getDefaultRequestOptions, DEFAULT_PAGE } from '@ngdux/data-model-common';
|
|
2
2
|
export { RequestState } from '@ngdux/data-model-common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { InjectionToken, Inject, Injectable, Optional, NgModule } from '@angular/core';
|
|
4
|
+
import { InjectionToken, Inject, Injectable, Optional, NgModule, inject } from '@angular/core';
|
|
5
5
|
import * as i1 from '@ngrx/store';
|
|
6
|
-
import { createAction, props, createReducer, on, createSelector, createFeatureSelector, select, Store } from '@ngrx/store';
|
|
6
|
+
import { createAction, props, createReducer, on, createSelector, createFeatureSelector, select, Store, provideState } from '@ngrx/store';
|
|
7
7
|
import * as i1$1 from '@ngdux/store-common';
|
|
8
|
-
import { createLoadingStateActionHandlers, createRequestStateActionHandlers
|
|
8
|
+
import { getLastPageNumber, createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';
|
|
9
9
|
import { createEntityAdapter } from '@ngrx/entity';
|
|
10
10
|
import * as i2 from '@ngrx/effects';
|
|
11
|
-
import { createEffect, ofType, Actions } from '@ngrx/effects';
|
|
11
|
+
import { createEffect, ofType, Actions, provideEffects } from '@ngrx/effects';
|
|
12
12
|
import { __decorate, __param, __metadata } from 'tslib';
|
|
13
|
-
import { of } from 'rxjs';
|
|
13
|
+
import { of, map as map$1, withLatestFrom as withLatestFrom$1, filter as filter$1, switchMap as switchMap$1, catchError as catchError$1, exhaustMap as exhaustMap$1, tap as tap$1 } from 'rxjs';
|
|
14
14
|
import { map, withLatestFrom, filter, switchMap, catchError, exhaustMap, tap } from 'rxjs/operators';
|
|
15
15
|
|
|
16
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
17
16
|
const LIST_FEATURE_KEY = new InjectionToken('LIST_FEATURE_KEY');
|
|
18
17
|
const LIST_FEATURE_KEYS = new InjectionToken('LIST_FEATURE_KEYS');
|
|
19
18
|
const LIST_SERVICES = new InjectionToken('LIST_SERVICES');
|
|
@@ -291,16 +290,19 @@ class ListStateService {
|
|
|
291
290
|
getFeatureSelectors(featureKey) {
|
|
292
291
|
return this.selectors[featureKey];
|
|
293
292
|
}
|
|
294
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
295
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
293
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ListStateService, deps: [{ token: i1.ReducerManager }, { token: LIST_FEATURE_KEYS }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
294
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ListStateService }); }
|
|
296
295
|
}
|
|
297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: ListStateService, decorators: [{
|
|
298
297
|
type: Injectable
|
|
299
298
|
}], ctorParameters: () => [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
|
|
300
299
|
type: Inject,
|
|
301
300
|
args: [LIST_FEATURE_KEYS]
|
|
302
301
|
}] }] });
|
|
303
302
|
|
|
303
|
+
/**
|
|
304
|
+
* @deprecated This class is deprecated and will be removed in a future release. Please use `createListEffects` instead.
|
|
305
|
+
*/
|
|
304
306
|
class AbstractListEffects {
|
|
305
307
|
constructor(actions$, store, service, listActions, listSelectors, notificationService) {
|
|
306
308
|
this.actions$ = actions$;
|
|
@@ -374,13 +376,16 @@ class NotificationServicePlaceholder {
|
|
|
374
376
|
console.log(data.title, data.message);
|
|
375
377
|
return of(true);
|
|
376
378
|
}
|
|
377
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
378
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
379
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NotificationServicePlaceholder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
380
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NotificationServicePlaceholder }); }
|
|
379
381
|
}
|
|
380
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
382
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NotificationServicePlaceholder, decorators: [{
|
|
381
383
|
type: Injectable
|
|
382
384
|
}] });
|
|
383
385
|
|
|
386
|
+
/**
|
|
387
|
+
* @deprecated This NgModule is deprecated and will be removed in a future release. Use `provideListState` and `createListState` instead to set up your list state in a more modular way.
|
|
388
|
+
*/
|
|
384
389
|
class NgduxListStateModule {
|
|
385
390
|
constructor(registerEffectsService, actions$, store, listStateService, featureKeys, services, notificationServices) {
|
|
386
391
|
featureKeys.forEach((featureKey, index) => {
|
|
@@ -401,11 +406,11 @@ class NgduxListStateModule {
|
|
|
401
406
|
]
|
|
402
407
|
};
|
|
403
408
|
}
|
|
404
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
405
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
406
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
409
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgduxListStateModule, deps: [{ token: i1$1.RegisterEffectsService }, { token: i2.Actions }, { token: i1.Store }, { token: ListStateService }, { token: LIST_FEATURE_KEYS }, { token: LIST_SERVICES }, { token: LIST_NOTIFICATION_SERVICES }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
410
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.4", ngImport: i0, type: NgduxListStateModule }); }
|
|
411
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgduxListStateModule, providers: [ListStateService] }); }
|
|
407
412
|
}
|
|
408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
413
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: NgduxListStateModule, decorators: [{
|
|
409
414
|
type: NgModule,
|
|
410
415
|
args: [{
|
|
411
416
|
providers: [ListStateService]
|
|
@@ -421,6 +426,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
421
426
|
args: [LIST_NOTIFICATION_SERVICES]
|
|
422
427
|
}] }] });
|
|
423
428
|
|
|
429
|
+
/**
|
|
430
|
+
* @deprecated This class is deprecated and will be removed in a future release.
|
|
431
|
+
*/
|
|
424
432
|
class AbstractListReducerManager {
|
|
425
433
|
constructor(reducerManager, featureKey) {
|
|
426
434
|
this.reducerManager = reducerManager;
|
|
@@ -447,16 +455,19 @@ class AbstractListReducerManager {
|
|
|
447
455
|
const getState = createFeatureSelector(this.featureKey);
|
|
448
456
|
return createListSelectors(this.entityAdapter, getState);
|
|
449
457
|
}
|
|
450
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
451
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
458
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractListReducerManager, deps: [{ token: i1.ReducerManager }, { token: LIST_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
459
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractListReducerManager }); }
|
|
452
460
|
}
|
|
453
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
461
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractListReducerManager, decorators: [{
|
|
454
462
|
type: Injectable
|
|
455
463
|
}], ctorParameters: () => [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
|
|
456
464
|
type: Inject,
|
|
457
465
|
args: [LIST_FEATURE_KEY]
|
|
458
466
|
}] }] });
|
|
459
467
|
|
|
468
|
+
/**
|
|
469
|
+
* @deprecated This class is deprecated and will be removed in a future release. Please use `provideListFacade` or `createListFacade` instead.
|
|
470
|
+
*/
|
|
460
471
|
class AbstractListFacade {
|
|
461
472
|
constructor(store, listActions, listSelectors) {
|
|
462
473
|
this.store = store;
|
|
@@ -541,6 +552,178 @@ class AbstractListFacade {
|
|
|
541
552
|
}
|
|
542
553
|
}
|
|
543
554
|
|
|
555
|
+
function createListEffects(listActions, listSelectors, listService, notificationService) {
|
|
556
|
+
return {
|
|
557
|
+
reload$: createEffect((actions$ = inject(Actions)) => reloadEffect(actions$, listActions), { functional: true }),
|
|
558
|
+
loadFirstPage$: createEffect((actions$ = inject(Actions)) => loadFirstPageEffect(actions$, listActions), {
|
|
559
|
+
functional: true
|
|
560
|
+
}),
|
|
561
|
+
loadPreviousPage$: createEffect((store = inject(Store), actions$ = inject(Actions)) => loadPreviousPageEffect(store, actions$, listActions, listSelectors), { functional: true }),
|
|
562
|
+
loadNextPage$: createEffect((store = inject(Store), actions$ = inject(Actions)) => loadNextPageEffect(store, actions$, listActions, listSelectors), { functional: true }),
|
|
563
|
+
loadPage$: createEffect((store = inject(Store), actions$ = inject(Actions), service = listService()) => loadPageEffect(store, actions$, listActions, listSelectors, service), { functional: true }),
|
|
564
|
+
patch$: createEffect((actions$ = inject(Actions), service = listService()) => patchEffect(actions$, listActions, service), { functional: true }),
|
|
565
|
+
delete$: createEffect((actions$ = inject(Actions), service = listService()) => deleteEffect(actions$, listActions, service), { functional: true }),
|
|
566
|
+
deleteSuccess$: createEffect((actions$ = inject(Actions), service = notificationService()) => deleteSuccessEffect(actions$, listActions, service), { functional: true, dispatch: false }),
|
|
567
|
+
errorsHandler$: createEffect((actions$ = inject(Actions), service = notificationService()) => errorsHandlerEffect(actions$, listActions, service), { functional: true, dispatch: false })
|
|
568
|
+
};
|
|
569
|
+
}
|
|
570
|
+
function reloadEffect(actions$, listActions) {
|
|
571
|
+
return actions$.pipe(ofType(listActions.changePageSize, listActions.changeSorting, listActions.changeFiltering, listActions.changePagingOptions, listActions.changeRequestParams, listActions.initialize, listActions.reset, listActions.changePageNumber, listActions.patchSuccess, listActions.deleteSuccess), map$1(() => listActions.loadPage()));
|
|
572
|
+
}
|
|
573
|
+
function loadFirstPageEffect(actions$, listActions) {
|
|
574
|
+
return actions$.pipe(ofType(listActions.loadFirstPage), map$1(() => listActions.changePageNumber({ pageNumber: 1 })));
|
|
575
|
+
}
|
|
576
|
+
function loadPreviousPageEffect(store, actions$, listActions, listSelectors) {
|
|
577
|
+
return actions$.pipe(ofType(listActions.loadPreviousPage), withLatestFrom$1(store.pipe(select(listSelectors.getCurrentPageNumber))), filter$1(([, currentPageNumber]) => currentPageNumber > 1), map$1(([, currentPageNumber]) => listActions.changePageNumber({ pageNumber: currentPageNumber - 1 })));
|
|
578
|
+
}
|
|
579
|
+
function loadNextPageEffect(store, actions$, listActions, listSelectors) {
|
|
580
|
+
return actions$.pipe(ofType(listActions.loadNextPage), withLatestFrom$1(store.pipe(select(listSelectors.isLastPage)), store.pipe(select(listSelectors.getCurrentPageNumber))), filter$1(([, isLastPage]) => !isLastPage), map$1(([, , currentPageNumber]) => listActions.changePageNumber({ pageNumber: currentPageNumber + 1 })));
|
|
581
|
+
}
|
|
582
|
+
function loadPageEffect(store, actions$, listActions, listSelectors, service) {
|
|
583
|
+
return actions$.pipe(ofType(listActions.loadPage), withLatestFrom$1(store.pipe(select(listSelectors.getPagingOptions)), store.pipe(select(listSelectors.getSortingOptions)), store.pipe(select(listSelectors.getFilteringOptions)), store.pipe(select(listSelectors.getRequestParameters))), switchMap$1(([, pagingOptions, sortingOptions, filteringOptions, requestParameters]) => {
|
|
584
|
+
return service
|
|
585
|
+
.loadResources({
|
|
586
|
+
pagingOptions,
|
|
587
|
+
sortingOptions,
|
|
588
|
+
filteringOptions,
|
|
589
|
+
requestParameters
|
|
590
|
+
})
|
|
591
|
+
.pipe(map$1(resources => listActions.loadPageSuccess({
|
|
592
|
+
resources,
|
|
593
|
+
pagingOptions
|
|
594
|
+
})), catchError$1((errors) => of(listActions.loadPageFailure({ errors }))));
|
|
595
|
+
}));
|
|
596
|
+
}
|
|
597
|
+
function patchEffect(actions$, listActions, service) {
|
|
598
|
+
return actions$.pipe(ofType(listActions.patch), exhaustMap$1(action => {
|
|
599
|
+
if (!service.patchResources) {
|
|
600
|
+
throw new Error('patchResources not implement in the ListService');
|
|
601
|
+
}
|
|
602
|
+
return service.patchResources(action.resourceIds, action.resource).pipe(map$1(resources => listActions.patchSuccess({ resources })), catchError$1((errors) => of(listActions.patchFailure({ errors }))));
|
|
603
|
+
}));
|
|
604
|
+
}
|
|
605
|
+
function deleteEffect(actions$, listActions, service) {
|
|
606
|
+
return actions$.pipe(ofType(listActions.delete), exhaustMap$1(({ resourceIds }) => {
|
|
607
|
+
if (!service.deleteResources) {
|
|
608
|
+
throw new Error('deleteResources not implement in the ListService');
|
|
609
|
+
}
|
|
610
|
+
return service.deleteResources(resourceIds).pipe(map$1(() => listActions.deleteSuccess({ resourceIds })), catchError$1((errors) => of(listActions.deleteFailure({ errors }))));
|
|
611
|
+
}));
|
|
612
|
+
}
|
|
613
|
+
function deleteSuccessEffect(actions$, listActions, notificationService) {
|
|
614
|
+
return actions$.pipe(ofType(listActions.deleteSuccess), tap$1(({ resourceIds }) => {
|
|
615
|
+
notificationService?.onListDelete(resourceIds);
|
|
616
|
+
}));
|
|
617
|
+
}
|
|
618
|
+
function errorsHandlerEffect(actions$, listActions, notificationService) {
|
|
619
|
+
return actions$.pipe(ofType(listActions.loadPageFailure, listActions.deleteFailure, listActions.patchFailure), tap$1(({ errors }) => {
|
|
620
|
+
notificationService?.onListErrors(errors);
|
|
621
|
+
}));
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
function provideListFacade(token, listActions, listSelectors) {
|
|
625
|
+
return {
|
|
626
|
+
provide: token,
|
|
627
|
+
useFactory: () => createListFacade(listActions, listSelectors, inject(Store))
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
function createListFacade(listActions, listSelectors, store) {
|
|
631
|
+
const resources$ = store.pipe(select(listSelectors.getAll));
|
|
632
|
+
const loadingState$ = store.pipe(select(listSelectors.getLoadingState));
|
|
633
|
+
const requestState$ = store.pipe(select(listSelectors.getRequestState));
|
|
634
|
+
const errors$ = store.pipe(select(listSelectors.getErrors));
|
|
635
|
+
const isReady$ = store.pipe(select(listSelectors.isReady));
|
|
636
|
+
const areSelectedReady$ = store.pipe(select(listSelectors.areSelectedReady));
|
|
637
|
+
const currentPageData$ = store.pipe(select(listSelectors.getCurrentPageData));
|
|
638
|
+
const currentPageNumber$ = store.pipe(select(listSelectors.getCurrentPageNumber));
|
|
639
|
+
const filteringOptions$ = store.pipe(select(listSelectors.getFilteringOptions));
|
|
640
|
+
const requestParameters$ = store.pipe(select(listSelectors.getRequestParameters));
|
|
641
|
+
const lastPageNumber$ = store.pipe(select(listSelectors.getLastPageNumber));
|
|
642
|
+
const pagingOptions$ = store.pipe(select(listSelectors.getPagingOptions));
|
|
643
|
+
const requestOptions$ = store.pipe(select(listSelectors.getRequestOptions));
|
|
644
|
+
const sortingOptions$ = store.pipe(select(listSelectors.getSortingOptions));
|
|
645
|
+
const selectedItems$ = store.pipe(select(listSelectors.getSelectedItems));
|
|
646
|
+
const totalCount$ = store.pipe(select(listSelectors.getTotalCount));
|
|
647
|
+
return {
|
|
648
|
+
resources$,
|
|
649
|
+
loadingState$,
|
|
650
|
+
requestState$,
|
|
651
|
+
errors$,
|
|
652
|
+
isReady$,
|
|
653
|
+
areSelectedReady$,
|
|
654
|
+
currentPageData$,
|
|
655
|
+
currentPageNumber$,
|
|
656
|
+
filteringOptions$,
|
|
657
|
+
requestParameters$,
|
|
658
|
+
lastPageNumber$,
|
|
659
|
+
pagingOptions$,
|
|
660
|
+
requestOptions$,
|
|
661
|
+
sortingOptions$,
|
|
662
|
+
selectedItems$,
|
|
663
|
+
totalCount$,
|
|
664
|
+
setPageSize(props) {
|
|
665
|
+
store.dispatch(listActions.setPageSize(props));
|
|
666
|
+
},
|
|
667
|
+
setFiltering(props) {
|
|
668
|
+
store.dispatch(listActions.setFiltering(props));
|
|
669
|
+
},
|
|
670
|
+
setSorting(props) {
|
|
671
|
+
store.dispatch(listActions.setSorting(props));
|
|
672
|
+
},
|
|
673
|
+
setRequestParameters(props) {
|
|
674
|
+
store.dispatch(listActions.setRequestParams(props));
|
|
675
|
+
},
|
|
676
|
+
changeFiltering(props) {
|
|
677
|
+
store.dispatch(listActions.changeFiltering(props));
|
|
678
|
+
},
|
|
679
|
+
changePagingOptions(props) {
|
|
680
|
+
store.dispatch(listActions.changePagingOptions(props));
|
|
681
|
+
},
|
|
682
|
+
changePageSize(props) {
|
|
683
|
+
store.dispatch(listActions.changePageSize(props));
|
|
684
|
+
},
|
|
685
|
+
changePageNumber(props) {
|
|
686
|
+
store.dispatch(listActions.changePageNumber(props));
|
|
687
|
+
},
|
|
688
|
+
changeSelectedResources(props) {
|
|
689
|
+
store.dispatch(listActions.changeSelectedResources(props));
|
|
690
|
+
},
|
|
691
|
+
changeSorting(props) {
|
|
692
|
+
store.dispatch(listActions.changeSorting(props));
|
|
693
|
+
},
|
|
694
|
+
changeRequestParams(props) {
|
|
695
|
+
store.dispatch(listActions.changeRequestParams(props));
|
|
696
|
+
},
|
|
697
|
+
loadPage() {
|
|
698
|
+
store.dispatch(listActions.loadPage());
|
|
699
|
+
},
|
|
700
|
+
loadFirstPage() {
|
|
701
|
+
store.dispatch(listActions.loadFirstPage());
|
|
702
|
+
},
|
|
703
|
+
loadNextPage() {
|
|
704
|
+
store.dispatch(listActions.loadNextPage());
|
|
705
|
+
},
|
|
706
|
+
loadPreviousPage() {
|
|
707
|
+
store.dispatch(listActions.loadPreviousPage());
|
|
708
|
+
},
|
|
709
|
+
patch(props) {
|
|
710
|
+
store.dispatch(listActions.patch(props));
|
|
711
|
+
},
|
|
712
|
+
delete(props) {
|
|
713
|
+
store.dispatch(listActions.delete(props));
|
|
714
|
+
},
|
|
715
|
+
initialize() {
|
|
716
|
+
store.dispatch(listActions.initialize());
|
|
717
|
+
},
|
|
718
|
+
reinitialize() {
|
|
719
|
+
store.dispatch(listActions.reset());
|
|
720
|
+
},
|
|
721
|
+
resetRequestState() {
|
|
722
|
+
store.dispatch(listActions.resetRequestState());
|
|
723
|
+
}
|
|
724
|
+
};
|
|
725
|
+
}
|
|
726
|
+
|
|
544
727
|
function createListState(featureName, idKey) {
|
|
545
728
|
const actions = createListActions(featureName);
|
|
546
729
|
const entityAdapter = createListEntityAdapter(idKey);
|
|
@@ -554,10 +737,22 @@ function createListState(featureName, idKey) {
|
|
|
554
737
|
entityAdapter
|
|
555
738
|
};
|
|
556
739
|
}
|
|
740
|
+
function provideListState(featureKey, facadeToken, service, notificationService = (NotificationServicePlaceholder)) {
|
|
741
|
+
const { actions, selectors, reducer } = createListState(featureKey);
|
|
742
|
+
return [
|
|
743
|
+
provideState(featureKey, reducer),
|
|
744
|
+
provideListFacade(facadeToken, actions, selectors),
|
|
745
|
+
provideEffects([
|
|
746
|
+
createListEffects(actions, selectors, () => inject(service), () => inject(notificationService))
|
|
747
|
+
]),
|
|
748
|
+
service,
|
|
749
|
+
notificationService
|
|
750
|
+
];
|
|
751
|
+
}
|
|
557
752
|
|
|
558
753
|
/**
|
|
559
754
|
* Generated bundle index. Do not edit.
|
|
560
755
|
*/
|
|
561
756
|
|
|
562
|
-
export { AbstractListEffects, AbstractListFacade, AbstractListReducerManager, LIST_FEATURE_KEY, LIST_FEATURE_KEYS, LIST_NOTIFICATION_SERVICES, LIST_SERVICES, ListStateService, NgduxListStateModule, createListActions, createListEntityAdapter, createListReducer, createListSelectors, createListState };
|
|
757
|
+
export { AbstractListEffects, AbstractListFacade, AbstractListReducerManager, LIST_FEATURE_KEY, LIST_FEATURE_KEYS, LIST_NOTIFICATION_SERVICES, LIST_SERVICES, ListStateService, NgduxListStateModule, createListActions, createListEntityAdapter, createListReducer, createListSelectors, createListState, provideListState };
|
|
563
758
|
//# sourceMappingURL=ngdux-list.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngdux-list.mjs","sources":["../../../../../../../libs/ngdux/util/store/list/src/lib/models/list.model.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-actions.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-reducer.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-selectors.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/state.service.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/abstract-list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/services/list-notification-service.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/ngdux-list-state.module.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/abstract-list-state.service.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/abstract-list.facade.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-state.ts","../../../../../../../libs/ngdux/util/store/list/src/ngdux-list.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\r\nimport { InjectionToken, Type } from '@angular/core';\r\nimport {\r\n ErrorDto,\r\n FilteringOptions,\r\n ListNotificationService,\r\n ListService,\r\n PagingOptions,\r\n RequestOptions,\r\n RequestState,\r\n SortingField\r\n} from '@ngdux/data-model-common';\r\nimport { ApiRequestState, LoadingState } from '@ngdux/store-common';\r\nimport { EntityState } from '@ngrx/entity';\r\nimport { Action, ActionCreator, MemoizedSelector } from '@ngrx/store';\r\n\r\nexport const LIST_FEATURE_KEY = new InjectionToken<string>('LIST_FEATURE_KEY');\r\nexport const LIST_FEATURE_KEYS = new InjectionToken<string>('LIST_FEATURE_KEYS');\r\nexport const LIST_SERVICES = new InjectionToken<string>('LIST_SERVICES');\r\nexport const LIST_NOTIFICATION_SERVICES = new InjectionToken<string>('LIST_NOTIFICATION_SERVICES');\r\n\r\nexport interface ListState<T, E = unknown, Params = Record<string, string>>\r\n extends EntityState<T>, RequestOptions<Params>, ApiRequestState<E>, LoadingState {\r\n selectedResourceIds: string[];\r\n lastPageNumber?: number;\r\n}\r\n\r\nexport interface ListSelectors<T, E = unknown, Params = Record<string, string>> {\r\n getAll: MemoizedSelector<object, T[]>;\r\n getRequestOptions: MemoizedSelector<object, RequestOptions>;\r\n isLastPage: MemoizedSelector<object, boolean>;\r\n getCurrentPageData: MemoizedSelector<object, T[]>;\r\n getPagingOptions: MemoizedSelector<object, PagingOptions>;\r\n getSortingOptions: MemoizedSelector<object, SortingField[]>;\r\n getFilteringOptions: MemoizedSelector<object, FilteringOptions>;\r\n getRequestParameters: MemoizedSelector<object, Params | undefined>;\r\n getCurrentPageNumber: MemoizedSelector<object, number>;\r\n getLastPageNumber: MemoizedSelector<object, number | undefined>;\r\n getLoadingState: MemoizedSelector<object, RequestState>;\r\n getSelectedResourceIds: MemoizedSelector<object, string[]>;\r\n getSelectedItems: MemoizedSelector<object, T[]>;\r\n getSelectionRecord: MemoizedSelector<object, Record<string, T>>;\r\n getRequestState: MemoizedSelector<object, RequestState>;\r\n getErrors: MemoizedSelector<object, E | undefined>;\r\n areSelectedReady: MemoizedSelector<object, boolean>;\r\n isReady: MemoizedSelector<object, boolean>;\r\n isDeleteDisabled: MemoizedSelector<object, boolean>;\r\n isCopyDisabled: MemoizedSelector<object, boolean>;\r\n getTotalCount: MemoizedSelector<object, number>;\r\n}\r\n\r\nexport interface ListActions<Entity, Error = unknown, Summary = Entity, Params = Record<string, string>> {\r\n /**\r\n * Set the page size without reloading the list\r\n */\r\n setPageSize: ActionCreator<string, (props: { pageSize: number }) => { pageSize: number } & Action<string>>;\r\n /**\r\n * Set the sorting options without reloading the list\r\n */\r\n setSorting: ActionCreator<\r\n string,\r\n (props: { sortingOptions: SortingField[] }) => { sortingOptions: SortingField[] } & Action<string>\r\n >;\r\n /**\r\n * Set the filtering options without reloading the list\r\n */\r\n setFiltering: ActionCreator<\r\n string,\r\n (props: { filteringOptions: FilteringOptions }) => { filteringOptions: FilteringOptions } & Action<string>\r\n >;\r\n /**\r\n * Set the request parameters without reloading the list\r\n */\r\n setRequestParams: ActionCreator<string, (props: { params: Params }) => { params: Params } & Action<string>>;\r\n\r\n /**\r\n * Change the paging options and reload the list\r\n */\r\n changePagingOptions: ActionCreator<\r\n string,\r\n (props: { pagingOptions: PagingOptions }) => { pagingOptions: PagingOptions } & Action<string>\r\n >;\r\n\r\n /**\r\n * Change the page number and reload the list\r\n */\r\n changePageNumber: ActionCreator<string, (props: { pageNumber: number }) => { pageNumber: number } & Action<string>>;\r\n /**\r\n * Change the page size and reload the list\r\n */\r\n changePageSize: ActionCreator<string, (props: { pageSize: number }) => { pageSize: number } & Action<string>>;\r\n /**\r\n * Change the sorting options and reload the list\r\n */\r\n changeSorting: ActionCreator<\r\n string,\r\n (props: { sortingOptions: SortingField[] }) => { sortingOptions: SortingField[] } & Action<string>\r\n >;\r\n /**\r\n * Change the filtering options and reload the list\r\n */\r\n changeFiltering: ActionCreator<\r\n string,\r\n (props: { filteringOptions: FilteringOptions }) => { filteringOptions: FilteringOptions } & Action<string>\r\n >;\r\n /**\r\n * Change the request parameters and reload the list\r\n */\r\n changeRequestParams: ActionCreator<string, (props: { params: Params }) => { params: Params } & Action<string>>;\r\n\r\n changeSelectedResources: ActionCreator<\r\n string,\r\n (props: { selectedResourceIds: string[] }) => { selectedResourceIds: string[] } & Action<string>\r\n >;\r\n loadPage: ActionCreator<string, () => Action<string>>;\r\n loadPageSuccess: ActionCreator<\r\n string,\r\n (props: {\r\n resources: Summary[];\r\n pagingOptions: PagingOptions;\r\n }) => { resources: Summary[]; pagingOptions: PagingOptions } & Action<string>\r\n >;\r\n loadPageFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & Action<string>>;\r\n delete: ActionCreator<string, (props: { resourceIds: string[] }) => { resourceIds: string[] } & Action<string>>;\r\n deleteSuccess: ActionCreator<\r\n string,\r\n (props: { resourceIds: string[] }) => { resourceIds: string[] } & Action<string>\r\n >;\r\n deleteFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & Action<string>>;\r\n patch: ActionCreator<\r\n string,\r\n (props: {\r\n resourceIds: string[];\r\n resource: Partial<Entity>;\r\n }) => { resourceIds: string[]; resource: Partial<Entity> } & Action<string>\r\n >;\r\n patchSuccess: ActionCreator<\r\n string,\r\n (props: { resources: (Entity | ErrorDto)[] }) => { resources: (Entity | ErrorDto)[] } & Action<string>\r\n >;\r\n patchFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & Action<string>>;\r\n loadNextPage: ActionCreator<string, () => Action<string>>;\r\n\r\n /**\r\n * Remove the current data, set the page number to 1 and deselect resources.\r\n * Keep all the rest, like filteringOptions and sortingOptions\r\n */\r\n initialize: ActionCreator<string, () => Action<string>>;\r\n /**\r\n * Reset to the initial state\r\n */\r\n reset: ActionCreator<string, () => Action<string>>;\r\n loadPreviousPage: ActionCreator<string, () => Action<string>>;\r\n loadFirstPage: ActionCreator<string, () => Action<string>>;\r\n /**\r\n * Reset the request state to idle\r\n */\r\n resetRequestState: ActionCreator<string, () => Action<string>>;\r\n}\r\n\r\nexport interface NgduxListStateModuleConfig<\r\n T extends { [key: string]: any },\r\n E,\r\n S = T,\r\n Params = Record<string, string>\r\n> {\r\n service: Type<ListService<T, S, Params>>;\r\n notificationService?: Type<ListNotificationService<E>>;\r\n}\r\n","import { ErrorDto, FilteringOptions, PagingOptions, SortingField } from '@ngdux/data-model-common';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { ListActions } from '../models/list.model';\r\n\r\nexport function createListActions<T, E, S = T, Params = Record<string, string>>(\r\n featureName: string\r\n): ListActions<T, E, S, Params> {\r\n const resetRequestState = createAction(`[${featureName} API] Reset ${featureName} Request State`);\r\n const initialize = createAction(`[${featureName} API] Initialize ${featureName}`);\r\n const reset = createAction(`[Organization ${featureName} API] Reset ${featureName}`);\r\n\r\n const loadNextPage = createAction(`[${featureName} API] Load Next ${featureName} Page`);\r\n const loadPreviousPage = createAction(`[${featureName} API] Load Previous ${featureName} Page`);\r\n const loadFirstPage = createAction(`[${featureName} API] Load First ${featureName} Page`);\r\n\r\n const setPageSize = createAction(`[${featureName} API] Set ${featureName} Page Size`, props<{ pageSize: number }>());\r\n const setSorting = createAction(\r\n `[${featureName} API] Set ${featureName} Sorting`,\r\n props<{ sortingOptions: SortingField[] }>()\r\n );\r\n const setFiltering = createAction(\r\n `[${featureName} API] Set ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const setRequestParams = createAction(\r\n `[${featureName} API] Set ${featureName} Request Params`,\r\n props<{ params: Params }>()\r\n );\r\n\r\n const changePageSize = createAction(\r\n `[${featureName} API] Change ${featureName} Page Size`,\r\n props<{ pageSize: number }>()\r\n );\r\n\r\n const changePageNumber = createAction(\r\n `[${featureName} API] Change ${featureName} Page Number`,\r\n props<{ pageNumber: number }>()\r\n );\r\n\r\n const changePagingOptions = createAction(\r\n `[${featureName} API] Change ${featureName} Page Options`,\r\n props<{ pagingOptions: PagingOptions }>()\r\n );\r\n const changeSorting = createAction(\r\n `[${featureName} API] Change ${featureName} Sorting`,\r\n props<{ sortingOptions: SortingField[] }>()\r\n );\r\n const changeFiltering = createAction(\r\n `[${featureName} API] Change ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const changeSelectedResources = createAction(\r\n `[${featureName} API] Change Selected Resources ${featureName}`,\r\n props<{ selectedResourceIds: string[] }>()\r\n );\r\n const changeRequestParams = createAction(\r\n `[${featureName} API] Change ${featureName} Request Params`,\r\n props<{ params: Params }>()\r\n );\r\n\r\n const loadPage = createAction(`[${featureName} API] Load ${featureName} Page`);\r\n const loadPageSuccess = createAction(\r\n `[${featureName} API] Load ${featureName} Page Success`,\r\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\r\n );\r\n const loadPageFailure = createAction(`[${featureName} API] Load ${featureName} Page Failure`, props<{ errors: E }>());\r\n\r\n const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props<{ resourceIds: string[] }>());\r\n const deleteSuccess = createAction(\r\n `[${featureName} API] Delete ${featureName} Success`,\r\n props<{ resourceIds: string[] }>()\r\n );\r\n const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const patch = createAction(\r\n `[${featureName} API] Patch ${featureName}`,\r\n props<{ resourceIds: string[]; resource: Partial<T> }>()\r\n );\r\n const patchSuccess = createAction(\r\n `[${featureName} API] Patch ${featureName} Success`,\r\n props<{ resources: (T | ErrorDto)[] }>()\r\n );\r\n const patchFailure = createAction(`[${featureName} API] Patch ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n return {\r\n initialize,\r\n reset,\r\n setPageSize,\r\n setSorting,\r\n setFiltering,\r\n setRequestParams,\r\n changePageSize,\r\n changePageNumber,\r\n changePagingOptions,\r\n changeSorting,\r\n changeFiltering,\r\n changeRequestParams,\r\n loadPreviousPage,\r\n loadNextPage,\r\n loadFirstPage,\r\n changeSelectedResources,\r\n loadPage,\r\n loadPageSuccess,\r\n loadPageFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n patch,\r\n patchSuccess,\r\n patchFailure,\r\n resetRequestState\r\n };\r\n}\r\n","import { DEFAULT_PAGE, getDefaultRequestOptions, RequestState } from '@ngdux/data-model-common';\r\nimport {\r\n createLoadingStateActionHandlers,\r\n createRequestStateActionHandlers,\r\n getLastPageNumber\r\n} from '@ngdux/store-common';\r\nimport { createEntityAdapter, EntityAdapter } from '@ngrx/entity';\r\nimport { ActionReducer, createReducer, on, ReducerTypes } from '@ngrx/store';\r\nimport { ActionCreator } from '@ngrx/store/src/models';\r\n\r\nimport { ListActions, ListState } from '../models/list.model';\r\n\r\nexport function createListEntityAdapter<T extends { [key: string]: any }>(idKey = 'id'): EntityAdapter<T> {\r\n return createEntityAdapter({\r\n selectId: resource => resource[idKey]\r\n });\r\n}\r\n\r\nexport function createListReducer<T, E, S = T, Params = Record<string, string>>(\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S, Params>,\r\n actionHandlers?: ReducerTypes<ListState<S, E, Params>, ActionCreator[]>[],\r\n initialListState?: { [key: string]: unknown }\r\n): ActionReducer<ListState<S, E, Params>> {\r\n const initialState: ListState<S, E, Params> = {\r\n ...createInitialListState<S, E, Params>(entityAdapter),\r\n ...initialListState\r\n };\r\n return createReducer<ListState<S, E, Params>>(\r\n initialState,\r\n ...createListActionHandlers<T, E, S, Params>(initialState, entityAdapter, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialListState<T, E, Params = Record<string, string>>(\r\n entityAdapter: EntityAdapter<T>\r\n): ListState<T, E, Params> {\r\n return entityAdapter.getInitialState({\r\n ...getDefaultRequestOptions<Params>(),\r\n lastPageNumber: undefined,\r\n selectedResourceIds: [],\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n });\r\n}\r\n\r\nfunction createListActionHandlers<T, E, S, Params>(\r\n initialListState: ListState<S, E, Params>,\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S, Params>\r\n): ReducerTypes<ListState<S, E, Params>, ActionCreator[]>[] {\r\n return [\r\n on(actions.reset, () => initialListState),\r\n on(actions.initialize, (state: ListState<S, E, Params>) =>\r\n entityAdapter.removeAll({\r\n ...state,\r\n selectedResourceIds: [],\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: DEFAULT_PAGE\r\n },\r\n requestState: RequestState.IDLE\r\n })\r\n ),\r\n on(actions.changePageSize, actions.setPageSize, (state: ListState<S, E, Params>, { pageSize }) => ({\r\n ...state,\r\n pagingOptions: { page: DEFAULT_PAGE, pageSize },\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changePageNumber, (state: ListState<S, E, Params>, { pageNumber }) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: pageNumber }\r\n })),\r\n on(actions.changePagingOptions, (state: ListState<S, E, Params>, { pagingOptions }) => ({\r\n ...state,\r\n pagingOptions\r\n })),\r\n on(actions.changeSorting, actions.setSorting, (state: ListState<S, E, Params>, { sortingOptions }) => ({\r\n ...state,\r\n sortingOptions,\r\n pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE }\r\n })),\r\n on(actions.changeFiltering, actions.setFiltering, (state: ListState<S, E, Params>, { filteringOptions }) => ({\r\n ...state,\r\n filteringOptions,\r\n pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE },\r\n lastPageNumber: undefined\r\n })),\r\n on(\r\n actions.changeRequestParams,\r\n actions.setRequestParams,\r\n (state: ListState<S, E, Params>, { params }): ListState<S, E, Params> => ({\r\n ...state,\r\n requestParameters: params,\r\n pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE }\r\n })\r\n ),\r\n on(actions.changeSelectedResources, (state: ListState<S, E, Params>, { selectedResourceIds }) => ({\r\n ...state,\r\n selectedResourceIds\r\n })),\r\n on(actions.loadFirstPage, (state: ListState<S, E, Params>) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: 1 }\r\n })),\r\n on(actions.loadPageSuccess, (state: ListState<S, E, Params>, { resources, pagingOptions }) => {\r\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\r\n if (lastPageNumber && pagingOptions.page > lastPageNumber) {\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: lastPageNumber\r\n },\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n };\r\n }\r\n\r\n return entityAdapter.setAll(resources, {\r\n ...state,\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n });\r\n }),\r\n on(actions.deleteSuccess, (state: ListState<S, E, Params>) => ({\r\n ...state,\r\n selectedResourceIds: [] as string[]\r\n })),\r\n ...createLoadingStateActionHandlers<ListState<S, E, Params>>(\r\n actions.loadPage,\r\n actions.loadPageSuccess,\r\n actions.loadPageFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E, Params>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E, Params>, E>(\r\n actions.resetRequestState,\r\n actions.patch,\r\n actions.patchSuccess,\r\n actions.patchFailure\r\n )\r\n ];\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { RequestOptions, RequestState } from '@ngdux/data-model-common';\r\nimport { EntityAdapter } from '@ngrx/entity';\r\nimport { DefaultProjectorFn, MemoizedSelector, createSelector } from '@ngrx/store';\r\nimport { ListSelectors, ListState } from '../models/list.model';\r\n\r\nexport function createListSelectors<T, E, Params = Record<string, string>>(\r\n entityAdapter: EntityAdapter<T>,\r\n getListState: MemoizedSelector<object, ListState<T, E, Params>, DefaultProjectorFn<ListState<T, E, Params>>>\r\n): ListSelectors<T, E, Params> {\r\n const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);\r\n\r\n const getPagingOptions = createSelector(getListState, state => state.pagingOptions);\r\n\r\n const getRequestOptions = createSelector(\r\n getListState,\r\n (state): RequestOptions => ({\r\n pagingOptions: state.pagingOptions,\r\n sortingOptions: state.sortingOptions,\r\n filteringOptions: state.filteringOptions\r\n })\r\n );\r\n\r\n const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);\r\n\r\n const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {\r\n return lastPageNumber ? lastPageNumber <= page : false;\r\n });\r\n\r\n const getCurrentPageData = createSelector(getAll, resources => {\r\n return resources;\r\n });\r\n\r\n const getSortingOptions = createSelector(getListState, state => state.sortingOptions);\r\n\r\n const getRequestParameters = createSelector(getListState, state => state.requestParameters);\r\n\r\n const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);\r\n\r\n const getCurrentPageNumber = createSelector(getPagingOptions, options => options?.page);\r\n\r\n const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);\r\n\r\n const getLoadingState = createSelector(getListState, state => state.loadingState);\r\n\r\n const getSelectedItems = createSelector(\r\n getSelectedResourceIds,\r\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\r\n (selectedResourceIds, resources): T[] =>\r\n selectedResourceIds.reduce((acc, selectedResourceId): T[] => {\r\n const resource = resources[selectedResourceId];\r\n if (resource) {\r\n acc.push(resource);\r\n }\r\n return acc;\r\n }, [] as T[])\r\n );\r\n\r\n const getSelectionRecord = createSelector(\r\n getSelectedResourceIds,\r\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\r\n (selectedResourceIds, resources): Record<string, T> =>\r\n selectedResourceIds.reduce((selected, selectedResourceId) => {\r\n const resource = resources[selectedResourceId];\r\n if (resource) {\r\n selected[selectedResourceId] = resource;\r\n }\r\n return selected;\r\n }, {} as Record<string, T>)\r\n );\r\n\r\n const getRequestState = createSelector(getListState, state => state.requestState);\r\n\r\n const getErrors = createSelector(getListState, state => state.errors);\r\n\r\n const isReady = createSelector(\r\n getAll,\r\n getLoadingState,\r\n (users, loadingState) => !!users && loadingState === RequestState.SUCCESS\r\n );\r\n\r\n const areSelectedReady = createSelector(\r\n getSelectedResourceIds,\r\n getSelectionRecord,\r\n getLoadingState,\r\n (selectedResourceIds, resources, loadingState) => {\r\n return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;\r\n }\r\n );\r\n\r\n const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);\r\n\r\n const isCopyDisabled = createSelector(\r\n getSelectedResourceIds,\r\n selectedResourceIds => selectedResourceIds.length !== 1\r\n );\r\n\r\n const getTotalCount = createSelector(\r\n getPagingOptions,\r\n isLastPage,\r\n getCurrentPageData,\r\n (pagingOptions, isLastPage, currentPageData) => {\r\n if (!pagingOptions) {\r\n return 0;\r\n }\r\n\r\n if (isLastPage) {\r\n return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;\r\n }\r\n return (pagingOptions.page + 1) * pagingOptions.pageSize;\r\n }\r\n );\r\n\r\n return {\r\n getAll,\r\n getRequestOptions,\r\n isLastPage,\r\n getCurrentPageData,\r\n getPagingOptions,\r\n getSortingOptions,\r\n getFilteringOptions,\r\n getRequestParameters,\r\n getCurrentPageNumber,\r\n getLastPageNumber,\r\n getLoadingState,\r\n getSelectedResourceIds,\r\n getSelectedItems,\r\n getSelectionRecord,\r\n getRequestState,\r\n getErrors,\r\n areSelectedReady,\r\n isReady,\r\n isDeleteDisabled,\r\n isCopyDisabled,\r\n getTotalCount\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { EntityAdapter } from '@ngrx/entity';\r\nimport { ReducerManager, createFeatureSelector } from '@ngrx/store';\r\nimport { LIST_FEATURE_KEYS, ListActions, ListSelectors, ListState } from '../models/list.model';\r\nimport { createListActions } from '../state-generator/list-actions';\r\nimport { createListEntityAdapter, createListReducer } from '../state-generator/list-reducer';\r\nimport { createListSelectors } from '../state-generator/list-selectors';\r\n\r\n@Injectable()\r\nexport class ListStateService<\r\n T extends { [key: string]: any },\r\n Error = unknown,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n> {\r\n protected actions: Record<string, ListActions<T, Error, S, Params>> = {};\r\n protected selectors: Record<string, ListSelectors<S, Error, Params>> = {};\r\n private entityAdapter: EntityAdapter<S>;\r\n\r\n constructor(private readonly reducerManager: ReducerManager, @Inject(LIST_FEATURE_KEYS) featureKeys: string[]) {\r\n this.entityAdapter = this.getEntityAdapter();\r\n featureKeys.forEach(featureKey => {\r\n if (!this.actions[featureKey]) {\r\n this.actions[featureKey] = this.getActions(featureKey);\r\n this.addReducer(featureKey, this.actions[featureKey]);\r\n this.selectors[featureKey] = this.getSelectors(featureKey);\r\n }\r\n });\r\n }\r\n\r\n protected getActions(featureKey: string) {\r\n return createListActions<T, Error, S, Params>(featureKey);\r\n }\r\n\r\n private getEntityAdapter() {\r\n return createListEntityAdapter<S>();\r\n }\r\n\r\n protected addReducer(featureKey: string, actions: ListActions<T, Error, S, Params>) {\r\n const currentReducers: string[] = Object.keys(this.reducerManager.currentReducers || {});\r\n\r\n if (!currentReducers.includes(featureKey)) {\r\n const reducer = createListReducer<T, Error, S, Params>(this.entityAdapter, actions);\r\n this.reducerManager.addReducer(featureKey, reducer);\r\n }\r\n }\r\n\r\n protected getSelectors(featureKey: string) {\r\n const getState = createFeatureSelector<ListState<S, Error, Params>>(featureKey);\r\n return createListSelectors(this.entityAdapter, getState);\r\n }\r\n\r\n getFeatureActions(featureKey: string) {\r\n return this.actions[featureKey];\r\n }\r\n\r\n getFeatureSelectors(featureKey: string) {\r\n return this.selectors[featureKey];\r\n }\r\n}\r\n","import { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\r\n\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\nexport abstract class AbstractListEffects<T, E = unknown, S = T, Params = Record<string, string>> {\r\n reload$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.listActions.changePageSize,\r\n this.listActions.changeSorting,\r\n this.listActions.changeFiltering,\r\n this.listActions.changePagingOptions,\r\n this.listActions.changeRequestParams,\r\n this.listActions.initialize,\r\n this.listActions.reset,\r\n this.listActions.changePageNumber,\r\n this.listActions.patchSuccess,\r\n this.listActions.deleteSuccess\r\n ),\r\n map(() => this.listActions.loadPage())\r\n )\r\n );\r\n\r\n loadFirstPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadFirstPage),\r\n map(() => this.listActions.changePageNumber({ pageNumber: 1 }))\r\n )\r\n );\r\n\r\n loadPreviousPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPreviousPage),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n filter(([, currentPageNumber]) => currentPageNumber > 1),\r\n map(([, currentPageNumber]) => this.listActions.changePageNumber({ pageNumber: currentPageNumber - 1 }))\r\n )\r\n );\r\n\r\n loadNextPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadNextPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.isLastPage)),\r\n this.store.pipe(select(this.listSelectors.getCurrentPageNumber))\r\n ),\r\n filter(([, isLastPage]) => !isLastPage),\r\n map(([, , currentPageNumber]) => this.listActions.changePageNumber({ pageNumber: currentPageNumber + 1 }))\r\n )\r\n );\r\n\r\n loadPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.getPagingOptions)),\r\n this.store.pipe(select(this.listSelectors.getSortingOptions)),\r\n this.store.pipe(select(this.listSelectors.getFilteringOptions)),\r\n this.store.pipe(select(this.listSelectors.getRequestParameters))\r\n ),\r\n switchMap(([, pagingOptions, sortingOptions, filteringOptions, requestParameters]) => {\r\n return this.service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions,\r\n requestParameters\r\n })\r\n .pipe(\r\n map(resources =>\r\n this.listActions.loadPageSuccess({\r\n resources,\r\n pagingOptions\r\n })\r\n ),\r\n catchError((errors: E) => of(this.listActions.loadPageFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n patch$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.patch),\r\n exhaustMap(action => {\r\n if (!this.service.patchResources) {\r\n throw new Error('patchResources not implement in the ListService');\r\n }\r\n\r\n return this.service.patchResources(action.resourceIds, action.resource).pipe(\r\n map(resources => this.listActions.patchSuccess({ resources })),\r\n catchError((errors: E) => of(this.listActions.patchFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.delete),\r\n exhaustMap(({ resourceIds }) => {\r\n if (!this.service.deleteResources) {\r\n throw new Error('deleteResources not implement in the ListService');\r\n }\r\n\r\n return this.service.deleteResources(resourceIds).pipe(\r\n map(() => this.listActions.deleteSuccess({ resourceIds })),\r\n catchError((errors: E) => of(this.listActions.deleteFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n deleteSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.deleteSuccess),\r\n tap(({ resourceIds }) => {\r\n this.notificationService?.onListDelete(resourceIds);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure),\r\n tap(({ errors }) => {\r\n this.notificationService?.onListErrors(errors);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n protected constructor(\r\n protected readonly actions$: Actions,\r\n protected readonly store: Store,\r\n protected readonly service: ListService<T, S, Params>,\r\n protected readonly listActions: ListActions<T, E, S, Params>,\r\n protected readonly listSelectors: ListSelectors<S, E, Params>,\r\n protected readonly notificationService?: ListNotificationService<E>\r\n ) {}\r\n}\r\n","import { Optional } from '@angular/core';\r\nimport { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { Actions, OnIdentifyEffects } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { AbstractListEffects } from '../state-generator/abstract-list-effects';\r\nimport { ListStateService } from './state.service';\r\n\r\nexport class ListEffects<\r\n T extends { [key: string]: any },\r\n Error = unknown,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n >\r\n extends AbstractListEffects<T, Error, S, Params>\r\n implements OnIdentifyEffects\r\n{\r\n constructor(\r\n actions$: Actions,\r\n store: Store,\r\n listStateService: ListStateService<T, Error, S, Params>,\r\n private readonly featureKey: string,\r\n service: ListService<T, S, Params>,\r\n @Optional() notificationService?: ListNotificationService<Error>\r\n ) {\r\n super(\r\n actions$,\r\n store,\r\n service,\r\n listStateService.getFeatureActions(featureKey),\r\n listStateService.getFeatureSelectors(featureKey),\r\n notificationService\r\n );\r\n }\r\n\r\n ngrxOnIdentifyEffects() {\r\n return this.featureKey;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ErrorDto, ListNotificationService } from '@ngdux/data-model-common';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NotificationServicePlaceholder implements ListNotificationService<ErrorDto> {\r\n onListErrors(errors: ErrorDto): void {\r\n console.error('ERROR', errors);\r\n }\r\n\r\n onListDelete(ids: string[]): void {\r\n console.log(`Resources ${ids.join(', ')} have been deleted.`);\r\n }\r\n\r\n openConfirmationDialog(data: { message: string; title: string }): Observable<boolean> {\r\n console.log(data.title, data.message);\r\n\r\n return of(true);\r\n }\r\n}\r\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { RegisterEffectsService } from '@ngdux/store-common';\r\nimport { Actions } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { ListEffects } from './+state/effects';\r\nimport { ListStateService } from './+state/state.service';\r\nimport {\r\n LIST_FEATURE_KEYS,\r\n LIST_NOTIFICATION_SERVICES,\r\n LIST_SERVICES,\r\n NgduxListStateModuleConfig\r\n} from './models/list.model';\r\nimport { NotificationServicePlaceholder } from './services/list-notification-service';\r\n\r\n@NgModule({\r\n providers: [ListStateService]\r\n})\r\nexport class NgduxListStateModule<\r\n T extends { [key: string]: any },\r\n Error = unknown,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n> {\r\n constructor(\r\n registerEffectsService: RegisterEffectsService,\r\n actions$: Actions,\r\n store: Store,\r\n listStateService: ListStateService<T, Error, S, Params>,\r\n @Inject(LIST_FEATURE_KEYS) featureKeys: string[],\r\n @Inject(LIST_SERVICES) services: ListService<T, S, Params>[],\r\n @Inject(LIST_NOTIFICATION_SERVICES) notificationServices: ListNotificationService<Error>[]\r\n ) {\r\n featureKeys.forEach((featureKey, index) => {\r\n const listEffects = new ListEffects(\r\n actions$,\r\n store,\r\n listStateService,\r\n featureKey,\r\n services[index],\r\n notificationServices[index]\r\n );\r\n registerEffectsService.registerEffects([listEffects]);\r\n });\r\n }\r\n\r\n static config<\r\n T extends { [key: string]: any },\r\n Error = unknown,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n >(\r\n config: NgduxListStateModuleConfig<T, Error, S, Params>\r\n ): ModuleWithProviders<NgduxListStateModule<T, Error, S, Params>> {\r\n return {\r\n ngModule: NgduxListStateModule,\r\n providers: [\r\n { provide: LIST_SERVICES, multi: true, useClass: config.service },\r\n {\r\n provide: LIST_NOTIFICATION_SERVICES,\r\n multi: true,\r\n useClass: config.notificationService || NotificationServicePlaceholder\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { EntityAdapter } from '@ngrx/entity';\r\nimport { ReducerManager, createFeatureSelector } from '@ngrx/store';\r\nimport { LIST_FEATURE_KEY, ListActions, ListSelectors, ListState } from '../models/list.model';\r\nimport { createListActions } from './list-actions';\r\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\r\nimport { createListSelectors } from './list-selectors';\r\n\r\n@Injectable()\r\nexport abstract class AbstractListReducerManager<\r\n T extends { [key: string]: any },\r\n E,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n> {\r\n actions: ListActions<T, E, S, Params>;\r\n selectors: ListSelectors<S, E, Params>;\r\n private entityAdapter: EntityAdapter<S>;\r\n\r\n constructor(\r\n private readonly reducerManager: ReducerManager,\r\n @Inject(LIST_FEATURE_KEY) private readonly featureKey: string\r\n ) {\r\n this.actions = this.getActions();\r\n this.entityAdapter = this.getEntityAdapter();\r\n this.addReducer();\r\n this.selectors = this.getSelectors();\r\n }\r\n\r\n protected getActions() {\r\n return createListActions<T, E, S, Params>(this.featureKey);\r\n }\r\n\r\n private getEntityAdapter() {\r\n return createListEntityAdapter<S>();\r\n }\r\n\r\n protected addReducer() {\r\n const currentReducers: string[] = Object.keys(this.reducerManager.currentReducers || {});\r\n\r\n if (!currentReducers.includes(this.featureKey)) {\r\n const reducer = createListReducer<T, E, S, Params>(this.entityAdapter, this.actions);\r\n this.reducerManager.addReducer(this.featureKey, reducer);\r\n }\r\n }\r\n\r\n protected getSelectors() {\r\n const getState = createFeatureSelector<ListState<S, E, Params>>(this.featureKey);\r\n return createListSelectors(this.entityAdapter, getState);\r\n }\r\n}\r\n","import { ActionPayload } from '@ngdux/store-common';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\nexport abstract class AbstractListFacade<T, E, S = T, Params = Record<string, string>> {\r\n readonly resources$ = this.store.pipe(select(this.listSelectors.getAll));\r\n readonly loadingState$ = this.store.pipe(select(this.listSelectors.getLoadingState));\r\n readonly requestState$ = this.store.pipe(select(this.listSelectors.getRequestState));\r\n readonly errors$ = this.store.pipe(select(this.listSelectors.getErrors));\r\n readonly isReady$ = this.store.pipe(select(this.listSelectors.isReady));\r\n readonly areSelectedReady$ = this.store.pipe(select(this.listSelectors.areSelectedReady));\r\n readonly currentPageData$ = this.store.pipe(select(this.listSelectors.getCurrentPageData));\r\n readonly currentPageNumber$ = this.store.pipe(select(this.listSelectors.getCurrentPageNumber));\r\n readonly filteringOptions$ = this.store.pipe(select(this.listSelectors.getFilteringOptions));\r\n readonly requestParameters$ = this.store.pipe(select(this.listSelectors.getRequestParameters));\r\n readonly lastPageNumber$ = this.store.pipe(select(this.listSelectors.getLastPageNumber));\r\n readonly pagingOptions$ = this.store.pipe(select(this.listSelectors.getPagingOptions));\r\n readonly requestOptions$ = this.store.pipe(select(this.listSelectors.getRequestOptions));\r\n readonly sortingOptions$ = this.store.pipe(select(this.listSelectors.getSortingOptions));\r\n readonly selectedItems$ = this.store.pipe(select(this.listSelectors.getSelectedItems));\r\n readonly totalCount$ = this.store.pipe(select(this.listSelectors.getTotalCount));\r\n\r\n constructor(\r\n protected readonly store: Store,\r\n private readonly listActions: ListActions<T, E, S, Params>,\r\n private readonly listSelectors: ListSelectors<S, E, Params>\r\n ) {}\r\n\r\n setPageSize(props: ActionPayload<ListActions<T, E, S, Params>['setPageSize']>): void {\r\n this.store.dispatch(this.listActions.setPageSize(props));\r\n }\r\n\r\n setFiltering(props: ActionPayload<ListActions<T, E, S, Params>['setFiltering']>): void {\r\n this.store.dispatch(this.listActions.setFiltering(props));\r\n }\r\n\r\n setSorting(props: ActionPayload<ListActions<T, E, S, Params>['setSorting']>): void {\r\n this.store.dispatch(this.listActions.setSorting(props));\r\n }\r\n\r\n setRequestParameters(props: ActionPayload<ListActions<T, E, S, Params>['setRequestParams']>) {\r\n this.store.dispatch(this.listActions.setRequestParams(props));\r\n }\r\n\r\n changeFiltering(props: ActionPayload<ListActions<T, E, S, Params>['changeFiltering']>): void {\r\n this.store.dispatch(this.listActions.changeFiltering(props));\r\n }\r\n\r\n changePagingOptions(props: ActionPayload<ListActions<T, E, S, Params>['changePagingOptions']>): void {\r\n this.store.dispatch(this.listActions.changePagingOptions(props));\r\n }\r\n\r\n changePageSize(props: ActionPayload<ListActions<T, E, S, Params>['changePageSize']>): void {\r\n this.store.dispatch(this.listActions.changePageSize(props));\r\n }\r\n\r\n changePageNumber(props: ActionPayload<ListActions<T, E, S, Params>['changePageNumber']>): void {\r\n this.store.dispatch(this.listActions.changePageNumber(props));\r\n }\r\n\r\n changeSelectedResources(props: ActionPayload<ListActions<T, E, S, Params>['changeSelectedResources']>): void {\r\n this.store.dispatch(this.listActions.changeSelectedResources(props));\r\n }\r\n\r\n changeSorting(props: ActionPayload<ListActions<T, E, S, Params>['changeSorting']>): void {\r\n this.store.dispatch(this.listActions.changeSorting(props));\r\n }\r\n\r\n changeRequestParams(props: ActionPayload<ListActions<T, E, S, Params>['changeRequestParams']>): void {\r\n this.store.dispatch(this.listActions.changeRequestParams(props));\r\n }\r\n\r\n loadPage(): void {\r\n this.store.dispatch(this.listActions.loadPage());\r\n }\r\n\r\n loadFirstPage(): void {\r\n this.store.dispatch(this.listActions.loadFirstPage());\r\n }\r\n\r\n loadNextPage(): void {\r\n this.store.dispatch(this.listActions.loadNextPage());\r\n }\r\n\r\n loadPreviousPage(): void {\r\n this.store.dispatch(this.listActions.loadPreviousPage());\r\n }\r\n\r\n patch(props: ActionPayload<ListActions<T, E, S, Params>['patch']>): void {\r\n this.store.dispatch(this.listActions.patch(props));\r\n }\r\n\r\n delete(props: ActionPayload<ListActions<T, E, S, Params>['delete']>): void {\r\n this.store.dispatch(this.listActions.delete(props));\r\n }\r\n\r\n initialize(): void {\r\n this.store.dispatch(this.listActions.initialize());\r\n }\r\n\r\n reinitialize(): void {\r\n this.store.dispatch(this.listActions.reset());\r\n }\r\n\r\n resetRequestState(): void {\r\n this.store.dispatch(this.listActions.resetRequestState());\r\n }\r\n}\r\n","import { Action, createFeatureSelector } from '@ngrx/store';\r\nimport { ListState } from '../models/list.model';\r\nimport { createListActions } from './list-actions';\r\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\r\nimport { createListSelectors } from './list-selectors';\r\n\r\nexport function createListState<\r\n T extends { [key: string]: any },\r\n E,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n>(featureName: string, idKey?: string) {\r\n const actions = createListActions<T, E, S, Params>(featureName);\r\n const entityAdapter = createListEntityAdapter<S>(idKey);\r\n const reducer = createListReducer<T, E, S, Params>(entityAdapter, actions);\r\n const getState = createFeatureSelector<ListState<S, E, Params>>(featureName);\r\n const selectors = createListSelectors<S, E, Params>(entityAdapter, getState);\r\n\r\n return {\r\n actions,\r\n reducer: (state: ListState<S, E, Params>, action: Action): ListState<S, E, Params> => reducer(state, action),\r\n selectors,\r\n entityAdapter\r\n };\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i4.ListStateService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngdux-list.mjs","sources":["../../../../../../../libs/ngdux/util/store/list/src/lib/models/list.model.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-actions.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-reducer.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-selectors.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/state.service.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/abstract-list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/services/list-notification-service.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/ngdux-list-state.module.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/abstract-list-state.service.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/abstract-list.facade.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-facade.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/state-generator/list-state.ts","../../../../../../../libs/ngdux/util/store/list/src/ngdux-list.ts"],"sourcesContent":["import { InjectionToken, Type } from '@angular/core';\r\nimport {\r\n ErrorDto,\r\n FilteringOptions,\r\n ListNotificationService,\r\n ListService,\r\n PagingOptions,\r\n RequestOptions,\r\n RequestState,\r\n SortingField\r\n} from '@ngdux/data-model-common';\r\nimport { ActionPayload, ApiRequestState, LoadingState } from '@ngdux/store-common';\r\nimport { EntityState } from '@ngrx/entity';\r\nimport { Action, ActionCreator, MemoizedSelector } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport const LIST_FEATURE_KEY = new InjectionToken<string>('LIST_FEATURE_KEY');\r\nexport const LIST_FEATURE_KEYS = new InjectionToken<string>('LIST_FEATURE_KEYS');\r\nexport const LIST_SERVICES = new InjectionToken<string>('LIST_SERVICES');\r\nexport const LIST_NOTIFICATION_SERVICES = new InjectionToken<string>('LIST_NOTIFICATION_SERVICES');\r\n\r\nexport interface ListState<T, E = unknown, Params = Record<string, string>>\r\n extends EntityState<T>, RequestOptions<Params>, ApiRequestState<E>, LoadingState {\r\n selectedResourceIds: string[];\r\n lastPageNumber?: number;\r\n}\r\n\r\nexport interface ListSelectors<Summary, E = unknown, Params = Record<string, string>> {\r\n getAll: MemoizedSelector<object, Summary[]>;\r\n getRequestOptions: MemoizedSelector<object, RequestOptions>;\r\n isLastPage: MemoizedSelector<object, boolean>;\r\n getCurrentPageData: MemoizedSelector<object, Summary[]>;\r\n getPagingOptions: MemoizedSelector<object, PagingOptions>;\r\n getSortingOptions: MemoizedSelector<object, SortingField[]>;\r\n getFilteringOptions: MemoizedSelector<object, FilteringOptions>;\r\n getRequestParameters: MemoizedSelector<object, Params | undefined>;\r\n getCurrentPageNumber: MemoizedSelector<object, number>;\r\n getLastPageNumber: MemoizedSelector<object, number | undefined>;\r\n getLoadingState: MemoizedSelector<object, RequestState>;\r\n getSelectedResourceIds: MemoizedSelector<object, string[]>;\r\n getSelectedItems: MemoizedSelector<object, Summary[]>;\r\n getSelectionRecord: MemoizedSelector<object, Record<string, Summary>>;\r\n getRequestState: MemoizedSelector<object, RequestState>;\r\n getErrors: MemoizedSelector<object, E | undefined>;\r\n areSelectedReady: MemoizedSelector<object, boolean>;\r\n isReady: MemoizedSelector<object, boolean>;\r\n isDeleteDisabled: MemoizedSelector<object, boolean>;\r\n isCopyDisabled: MemoizedSelector<object, boolean>;\r\n getTotalCount: MemoizedSelector<object, number>;\r\n}\r\n\r\nexport interface ListActions<Entity, Error = unknown, Summary = Entity, Params = Record<string, string>> {\r\n /**\r\n * Set the page size without reloading the list\r\n */\r\n setPageSize: ActionCreator<string, (props: { pageSize: number }) => { pageSize: number } & Action<string>>;\r\n /**\r\n * Set the sorting options without reloading the list\r\n */\r\n setSorting: ActionCreator<\r\n string,\r\n (props: { sortingOptions: SortingField[] }) => { sortingOptions: SortingField[] } & Action<string>\r\n >;\r\n /**\r\n * Set the filtering options without reloading the list\r\n */\r\n setFiltering: ActionCreator<\r\n string,\r\n (props: { filteringOptions: FilteringOptions }) => { filteringOptions: FilteringOptions } & Action<string>\r\n >;\r\n /**\r\n * Set the request parameters without reloading the list\r\n */\r\n setRequestParams: ActionCreator<string, (props: { params: Params }) => { params: Params } & Action<string>>;\r\n\r\n /**\r\n * Change the paging options and reload the list\r\n */\r\n changePagingOptions: ActionCreator<\r\n string,\r\n (props: { pagingOptions: PagingOptions }) => { pagingOptions: PagingOptions } & Action<string>\r\n >;\r\n\r\n /**\r\n * Change the page number and reload the list\r\n */\r\n changePageNumber: ActionCreator<string, (props: { pageNumber: number }) => { pageNumber: number } & Action<string>>;\r\n /**\r\n * Change the page size and reload the list\r\n */\r\n changePageSize: ActionCreator<string, (props: { pageSize: number }) => { pageSize: number } & Action<string>>;\r\n /**\r\n * Change the sorting options and reload the list\r\n */\r\n changeSorting: ActionCreator<\r\n string,\r\n (props: { sortingOptions: SortingField[] }) => { sortingOptions: SortingField[] } & Action<string>\r\n >;\r\n /**\r\n * Change the filtering options and reload the list\r\n */\r\n changeFiltering: ActionCreator<\r\n string,\r\n (props: { filteringOptions: FilteringOptions }) => { filteringOptions: FilteringOptions } & Action<string>\r\n >;\r\n /**\r\n * Change the request parameters and reload the list\r\n */\r\n changeRequestParams: ActionCreator<string, (props: { params: Params }) => { params: Params } & Action<string>>;\r\n\r\n changeSelectedResources: ActionCreator<\r\n string,\r\n (props: { selectedResourceIds: string[] }) => { selectedResourceIds: string[] } & Action<string>\r\n >;\r\n loadPage: ActionCreator<string, () => Action<string>>;\r\n loadPageSuccess: ActionCreator<\r\n string,\r\n (props: {\r\n resources: Summary[];\r\n pagingOptions: PagingOptions;\r\n }) => { resources: Summary[]; pagingOptions: PagingOptions } & Action<string>\r\n >;\r\n loadPageFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & Action<string>>;\r\n delete: ActionCreator<string, (props: { resourceIds: string[] }) => { resourceIds: string[] } & Action<string>>;\r\n deleteSuccess: ActionCreator<\r\n string,\r\n (props: { resourceIds: string[] }) => { resourceIds: string[] } & Action<string>\r\n >;\r\n deleteFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & Action<string>>;\r\n patch: ActionCreator<\r\n string,\r\n (props: {\r\n resourceIds: string[];\r\n resource: Partial<Entity>;\r\n }) => { resourceIds: string[]; resource: Partial<Entity> } & Action<string>\r\n >;\r\n patchSuccess: ActionCreator<\r\n string,\r\n (props: { resources: (Entity | ErrorDto)[] }) => { resources: (Entity | ErrorDto)[] } & Action<string>\r\n >;\r\n patchFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & Action<string>>;\r\n loadNextPage: ActionCreator<string, () => Action<string>>;\r\n\r\n /**\r\n * Remove the current data, set the page number to 1 and deselect resources.\r\n * Keep all the rest, like filteringOptions and sortingOptions\r\n */\r\n initialize: ActionCreator<string, () => Action<string>>;\r\n /**\r\n * Reset to the initial state\r\n */\r\n reset: ActionCreator<string, () => Action<string>>;\r\n loadPreviousPage: ActionCreator<string, () => Action<string>>;\r\n loadFirstPage: ActionCreator<string, () => Action<string>>;\r\n /**\r\n * Reset the request state to idle\r\n */\r\n resetRequestState: ActionCreator<string, () => Action<string>>;\r\n}\r\n\r\nexport interface NgduxListStateModuleConfig<\r\n T extends { [key: string]: any },\r\n E,\r\n S = T,\r\n Params = Record<string, string>\r\n> {\r\n service: Type<ListService<T, S, Params>>;\r\n notificationService?: Type<ListNotificationService<E>>;\r\n}\r\n\r\nexport interface ListFacade<Data, Error = unknown, Summary = Data, Params = Record<string, string>> {\r\n resources$: Observable<Summary[]>;\r\n loadingState$: Observable<RequestState>;\r\n requestState$: Observable<RequestState>;\r\n errors$: Observable<Error | undefined>;\r\n isReady$: Observable<boolean>;\r\n areSelectedReady$: Observable<boolean>;\r\n currentPageData$: Observable<Summary[]>;\r\n currentPageNumber$: Observable<number>;\r\n filteringOptions$: Observable<FilteringOptions>;\r\n requestParameters$: Observable<Params | undefined>;\r\n lastPageNumber$: Observable<number | undefined>;\r\n pagingOptions$: Observable<PagingOptions>;\r\n requestOptions$: Observable<RequestOptions<Record<string, string>>>;\r\n sortingOptions$: Observable<SortingField[]>;\r\n selectedItems$: Observable<Summary[]>;\r\n totalCount$: Observable<number>;\r\n\r\n setPageSize(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setPageSize']>): void;\r\n setFiltering(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setFiltering']>): void;\r\n setSorting(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setSorting']>): void;\r\n setRequestParameters(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setRequestParams']>): void;\r\n changeFiltering(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeFiltering']>): void;\r\n changePagingOptions(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePagingOptions']>): void;\r\n changePageSize(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePageSize']>): void;\r\n changePageNumber(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePageNumber']>): void;\r\n changeSelectedResources(\r\n props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeSelectedResources']>\r\n ): void;\r\n changeSorting(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeSorting']>): void;\r\n changeRequestParams(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeRequestParams']>): void;\r\n loadPage(): void;\r\n loadFirstPage(): void;\r\n loadNextPage(): void;\r\n loadPreviousPage(): void;\r\n patch(props: ActionPayload<ListActions<Data, Error, Summary, Params>['patch']>): void;\r\n delete(props: ActionPayload<ListActions<Data, Error, Summary, Params>['delete']>): void;\r\n initialize(): void;\r\n reinitialize(): void;\r\n resetRequestState(): void;\r\n}\r\n","import { ErrorDto, FilteringOptions, PagingOptions, SortingField } from '@ngdux/data-model-common';\r\nimport { createAction, props } from '@ngrx/store';\r\nimport { ListActions } from '../models/list.model';\r\n\r\nexport function createListActions<T, E, S = T, Params = Record<string, string>>(\r\n featureName: string\r\n): ListActions<T, E, S, Params> {\r\n const resetRequestState = createAction(`[${featureName} API] Reset ${featureName} Request State`);\r\n const initialize = createAction(`[${featureName} API] Initialize ${featureName}`);\r\n const reset = createAction(`[Organization ${featureName} API] Reset ${featureName}`);\r\n\r\n const loadNextPage = createAction(`[${featureName} API] Load Next ${featureName} Page`);\r\n const loadPreviousPage = createAction(`[${featureName} API] Load Previous ${featureName} Page`);\r\n const loadFirstPage = createAction(`[${featureName} API] Load First ${featureName} Page`);\r\n\r\n const setPageSize = createAction(`[${featureName} API] Set ${featureName} Page Size`, props<{ pageSize: number }>());\r\n const setSorting = createAction(\r\n `[${featureName} API] Set ${featureName} Sorting`,\r\n props<{ sortingOptions: SortingField[] }>()\r\n );\r\n const setFiltering = createAction(\r\n `[${featureName} API] Set ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const setRequestParams = createAction(\r\n `[${featureName} API] Set ${featureName} Request Params`,\r\n props<{ params: Params }>()\r\n );\r\n\r\n const changePageSize = createAction(\r\n `[${featureName} API] Change ${featureName} Page Size`,\r\n props<{ pageSize: number }>()\r\n );\r\n\r\n const changePageNumber = createAction(\r\n `[${featureName} API] Change ${featureName} Page Number`,\r\n props<{ pageNumber: number }>()\r\n );\r\n\r\n const changePagingOptions = createAction(\r\n `[${featureName} API] Change ${featureName} Page Options`,\r\n props<{ pagingOptions: PagingOptions }>()\r\n );\r\n const changeSorting = createAction(\r\n `[${featureName} API] Change ${featureName} Sorting`,\r\n props<{ sortingOptions: SortingField[] }>()\r\n );\r\n const changeFiltering = createAction(\r\n `[${featureName} API] Change ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const changeSelectedResources = createAction(\r\n `[${featureName} API] Change Selected Resources ${featureName}`,\r\n props<{ selectedResourceIds: string[] }>()\r\n );\r\n const changeRequestParams = createAction(\r\n `[${featureName} API] Change ${featureName} Request Params`,\r\n props<{ params: Params }>()\r\n );\r\n\r\n const loadPage = createAction(`[${featureName} API] Load ${featureName} Page`);\r\n const loadPageSuccess = createAction(\r\n `[${featureName} API] Load ${featureName} Page Success`,\r\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\r\n );\r\n const loadPageFailure = createAction(`[${featureName} API] Load ${featureName} Page Failure`, props<{ errors: E }>());\r\n\r\n const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props<{ resourceIds: string[] }>());\r\n const deleteSuccess = createAction(\r\n `[${featureName} API] Delete ${featureName} Success`,\r\n props<{ resourceIds: string[] }>()\r\n );\r\n const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const patch = createAction(\r\n `[${featureName} API] Patch ${featureName}`,\r\n props<{ resourceIds: string[]; resource: Partial<T> }>()\r\n );\r\n const patchSuccess = createAction(\r\n `[${featureName} API] Patch ${featureName} Success`,\r\n props<{ resources: (T | ErrorDto)[] }>()\r\n );\r\n const patchFailure = createAction(`[${featureName} API] Patch ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n return {\r\n initialize,\r\n reset,\r\n setPageSize,\r\n setSorting,\r\n setFiltering,\r\n setRequestParams,\r\n changePageSize,\r\n changePageNumber,\r\n changePagingOptions,\r\n changeSorting,\r\n changeFiltering,\r\n changeRequestParams,\r\n loadPreviousPage,\r\n loadNextPage,\r\n loadFirstPage,\r\n changeSelectedResources,\r\n loadPage,\r\n loadPageSuccess,\r\n loadPageFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n patch,\r\n patchSuccess,\r\n patchFailure,\r\n resetRequestState\r\n };\r\n}\r\n","import { DEFAULT_PAGE, getDefaultRequestOptions, RequestState } from '@ngdux/data-model-common';\r\nimport {\r\n createLoadingStateActionHandlers,\r\n createRequestStateActionHandlers,\r\n getLastPageNumber\r\n} from '@ngdux/store-common';\r\nimport { createEntityAdapter, EntityAdapter } from '@ngrx/entity';\r\nimport { ActionCreator, ActionReducer, createReducer, on, ReducerTypes } from '@ngrx/store';\r\n\r\nimport { ListActions, ListState } from '../models/list.model';\r\n\r\nexport function createListEntityAdapter<T extends { [key: string]: any }>(idKey = 'id'): EntityAdapter<T> {\r\n return createEntityAdapter({\r\n selectId: resource => resource[idKey]\r\n });\r\n}\r\n\r\nexport function createListReducer<T, E, S = T, Params = Record<string, string>>(\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S, Params>,\r\n actionHandlers?: ReducerTypes<ListState<S, E, Params>, ActionCreator[]>[],\r\n initialListState?: { [key: string]: unknown }\r\n): ActionReducer<ListState<S, E, Params>> {\r\n const initialState: ListState<S, E, Params> = {\r\n ...createInitialListState<S, E, Params>(entityAdapter),\r\n ...initialListState\r\n };\r\n return createReducer<ListState<S, E, Params>>(\r\n initialState,\r\n ...createListActionHandlers<T, E, S, Params>(initialState, entityAdapter, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialListState<T, E, Params = Record<string, string>>(\r\n entityAdapter: EntityAdapter<T>\r\n): ListState<T, E, Params> {\r\n return entityAdapter.getInitialState({\r\n ...getDefaultRequestOptions<Params>(),\r\n lastPageNumber: undefined,\r\n selectedResourceIds: [],\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n });\r\n}\r\n\r\nfunction createListActionHandlers<T, E, S, Params>(\r\n initialListState: ListState<S, E, Params>,\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S, Params>\r\n): ReducerTypes<ListState<S, E, Params>, ActionCreator[]>[] {\r\n return [\r\n on(actions.reset, () => initialListState),\r\n on(actions.initialize, (state: ListState<S, E, Params>) =>\r\n entityAdapter.removeAll({\r\n ...state,\r\n selectedResourceIds: [],\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: DEFAULT_PAGE\r\n },\r\n requestState: RequestState.IDLE\r\n })\r\n ),\r\n on(actions.changePageSize, actions.setPageSize, (state: ListState<S, E, Params>, { pageSize }) => ({\r\n ...state,\r\n pagingOptions: { page: DEFAULT_PAGE, pageSize },\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changePageNumber, (state: ListState<S, E, Params>, { pageNumber }) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: pageNumber }\r\n })),\r\n on(actions.changePagingOptions, (state: ListState<S, E, Params>, { pagingOptions }) => ({\r\n ...state,\r\n pagingOptions\r\n })),\r\n on(actions.changeSorting, actions.setSorting, (state: ListState<S, E, Params>, { sortingOptions }) => ({\r\n ...state,\r\n sortingOptions,\r\n pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE }\r\n })),\r\n on(actions.changeFiltering, actions.setFiltering, (state: ListState<S, E, Params>, { filteringOptions }) => ({\r\n ...state,\r\n filteringOptions,\r\n pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE },\r\n lastPageNumber: undefined\r\n })),\r\n on(\r\n actions.changeRequestParams,\r\n actions.setRequestParams,\r\n (state: ListState<S, E, Params>, { params }): ListState<S, E, Params> => ({\r\n ...state,\r\n requestParameters: params,\r\n pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE }\r\n })\r\n ),\r\n on(actions.changeSelectedResources, (state: ListState<S, E, Params>, { selectedResourceIds }) => ({\r\n ...state,\r\n selectedResourceIds\r\n })),\r\n on(actions.loadFirstPage, (state: ListState<S, E, Params>) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: 1 }\r\n })),\r\n on(actions.loadPageSuccess, (state: ListState<S, E, Params>, { resources, pagingOptions }) => {\r\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\r\n if (lastPageNumber && pagingOptions.page > lastPageNumber) {\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: lastPageNumber\r\n },\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n };\r\n }\r\n\r\n return entityAdapter.setAll(resources, {\r\n ...state,\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n });\r\n }),\r\n on(actions.deleteSuccess, (state: ListState<S, E, Params>) => ({\r\n ...state,\r\n selectedResourceIds: [] as string[]\r\n })),\r\n ...createLoadingStateActionHandlers<ListState<S, E, Params>>(\r\n actions.loadPage,\r\n actions.loadPageSuccess,\r\n actions.loadPageFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E, Params>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E, Params>, E>(\r\n actions.resetRequestState,\r\n actions.patch,\r\n actions.patchSuccess,\r\n actions.patchFailure\r\n )\r\n ];\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { RequestOptions, RequestState } from '@ngdux/data-model-common';\r\nimport { EntityAdapter } from '@ngrx/entity';\r\nimport { DefaultProjectorFn, MemoizedSelector, createSelector } from '@ngrx/store';\r\nimport { ListSelectors, ListState } from '../models/list.model';\r\n\r\nexport function createListSelectors<T, E, Params = Record<string, string>>(\r\n entityAdapter: EntityAdapter<T>,\r\n getListState: MemoizedSelector<object, ListState<T, E, Params>, DefaultProjectorFn<ListState<T, E, Params>>>\r\n): ListSelectors<T, E, Params> {\r\n const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);\r\n\r\n const getPagingOptions = createSelector(getListState, state => state.pagingOptions);\r\n\r\n const getRequestOptions = createSelector(\r\n getListState,\r\n (state): RequestOptions => ({\r\n pagingOptions: state.pagingOptions,\r\n sortingOptions: state.sortingOptions,\r\n filteringOptions: state.filteringOptions\r\n })\r\n );\r\n\r\n const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);\r\n\r\n const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {\r\n return lastPageNumber ? lastPageNumber <= page : false;\r\n });\r\n\r\n const getCurrentPageData = createSelector(getAll, resources => {\r\n return resources;\r\n });\r\n\r\n const getSortingOptions = createSelector(getListState, state => state.sortingOptions);\r\n\r\n const getRequestParameters = createSelector(getListState, state => state.requestParameters);\r\n\r\n const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);\r\n\r\n const getCurrentPageNumber = createSelector(getPagingOptions, options => options?.page);\r\n\r\n const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);\r\n\r\n const getLoadingState = createSelector(getListState, state => state.loadingState);\r\n\r\n const getSelectedItems = createSelector(\r\n getSelectedResourceIds,\r\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\r\n (selectedResourceIds, resources): T[] =>\r\n selectedResourceIds.reduce((acc, selectedResourceId): T[] => {\r\n const resource = resources[selectedResourceId];\r\n if (resource) {\r\n acc.push(resource);\r\n }\r\n return acc;\r\n }, [] as T[])\r\n );\r\n\r\n const getSelectionRecord = createSelector(\r\n getSelectedResourceIds,\r\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\r\n (selectedResourceIds, resources): Record<string, T> =>\r\n selectedResourceIds.reduce((selected, selectedResourceId) => {\r\n const resource = resources[selectedResourceId];\r\n if (resource) {\r\n selected[selectedResourceId] = resource;\r\n }\r\n return selected;\r\n }, {} as Record<string, T>)\r\n );\r\n\r\n const getRequestState = createSelector(getListState, state => state.requestState);\r\n\r\n const getErrors = createSelector(getListState, state => state.errors);\r\n\r\n const isReady = createSelector(\r\n getAll,\r\n getLoadingState,\r\n (users, loadingState) => !!users && loadingState === RequestState.SUCCESS\r\n );\r\n\r\n const areSelectedReady = createSelector(\r\n getSelectedResourceIds,\r\n getSelectionRecord,\r\n getLoadingState,\r\n (selectedResourceIds, resources, loadingState) => {\r\n return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;\r\n }\r\n );\r\n\r\n const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);\r\n\r\n const isCopyDisabled = createSelector(\r\n getSelectedResourceIds,\r\n selectedResourceIds => selectedResourceIds.length !== 1\r\n );\r\n\r\n const getTotalCount = createSelector(\r\n getPagingOptions,\r\n isLastPage,\r\n getCurrentPageData,\r\n (pagingOptions, isLastPage, currentPageData) => {\r\n if (!pagingOptions) {\r\n return 0;\r\n }\r\n\r\n if (isLastPage) {\r\n return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;\r\n }\r\n return (pagingOptions.page + 1) * pagingOptions.pageSize;\r\n }\r\n );\r\n\r\n return {\r\n getAll,\r\n getRequestOptions,\r\n isLastPage,\r\n getCurrentPageData,\r\n getPagingOptions,\r\n getSortingOptions,\r\n getFilteringOptions,\r\n getRequestParameters,\r\n getCurrentPageNumber,\r\n getLastPageNumber,\r\n getLoadingState,\r\n getSelectedResourceIds,\r\n getSelectedItems,\r\n getSelectionRecord,\r\n getRequestState,\r\n getErrors,\r\n areSelectedReady,\r\n isReady,\r\n isDeleteDisabled,\r\n isCopyDisabled,\r\n getTotalCount\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { EntityAdapter } from '@ngrx/entity';\r\nimport { ReducerManager, createFeatureSelector } from '@ngrx/store';\r\nimport { LIST_FEATURE_KEYS, ListActions, ListSelectors, ListState } from '../models/list.model';\r\nimport { createListActions } from '../state-generator/list-actions';\r\nimport { createListEntityAdapter, createListReducer } from '../state-generator/list-reducer';\r\nimport { createListSelectors } from '../state-generator/list-selectors';\r\n\r\n@Injectable()\r\nexport class ListStateService<\r\n T extends { [key: string]: any },\r\n Error = unknown,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n> {\r\n protected actions: Record<string, ListActions<T, Error, S, Params>> = {};\r\n protected selectors: Record<string, ListSelectors<S, Error, Params>> = {};\r\n private entityAdapter: EntityAdapter<S>;\r\n\r\n constructor(private readonly reducerManager: ReducerManager, @Inject(LIST_FEATURE_KEYS) featureKeys: string[]) {\r\n this.entityAdapter = this.getEntityAdapter();\r\n featureKeys.forEach(featureKey => {\r\n if (!this.actions[featureKey]) {\r\n this.actions[featureKey] = this.getActions(featureKey);\r\n this.addReducer(featureKey, this.actions[featureKey]);\r\n this.selectors[featureKey] = this.getSelectors(featureKey);\r\n }\r\n });\r\n }\r\n\r\n protected getActions(featureKey: string) {\r\n return createListActions<T, Error, S, Params>(featureKey);\r\n }\r\n\r\n private getEntityAdapter() {\r\n return createListEntityAdapter<S>();\r\n }\r\n\r\n protected addReducer(featureKey: string, actions: ListActions<T, Error, S, Params>) {\r\n const currentReducers: string[] = Object.keys(this.reducerManager.currentReducers || {});\r\n\r\n if (!currentReducers.includes(featureKey)) {\r\n const reducer = createListReducer<T, Error, S, Params>(this.entityAdapter, actions);\r\n this.reducerManager.addReducer(featureKey, reducer);\r\n }\r\n }\r\n\r\n protected getSelectors(featureKey: string) {\r\n const getState = createFeatureSelector<ListState<S, Error, Params>>(featureKey);\r\n return createListSelectors(this.entityAdapter, getState);\r\n }\r\n\r\n getFeatureActions(featureKey: string) {\r\n return this.actions[featureKey];\r\n }\r\n\r\n getFeatureSelectors(featureKey: string) {\r\n return this.selectors[featureKey];\r\n }\r\n}\r\n","import { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store, select } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\r\n\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\n/**\r\n * @deprecated This class is deprecated and will be removed in a future release. Please use `createListEffects` instead.\r\n */\r\nexport abstract class AbstractListEffects<T, E = unknown, S = T, Params = Record<string, string>> {\r\n reload$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.listActions.changePageSize,\r\n this.listActions.changeSorting,\r\n this.listActions.changeFiltering,\r\n this.listActions.changePagingOptions,\r\n this.listActions.changeRequestParams,\r\n this.listActions.initialize,\r\n this.listActions.reset,\r\n this.listActions.changePageNumber,\r\n this.listActions.patchSuccess,\r\n this.listActions.deleteSuccess\r\n ),\r\n map(() => this.listActions.loadPage())\r\n )\r\n );\r\n\r\n loadFirstPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadFirstPage),\r\n map(() => this.listActions.changePageNumber({ pageNumber: 1 }))\r\n )\r\n );\r\n\r\n loadPreviousPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPreviousPage),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n filter(([, currentPageNumber]) => currentPageNumber > 1),\r\n map(([, currentPageNumber]) => this.listActions.changePageNumber({ pageNumber: currentPageNumber - 1 }))\r\n )\r\n );\r\n\r\n loadNextPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadNextPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.isLastPage)),\r\n this.store.pipe(select(this.listSelectors.getCurrentPageNumber))\r\n ),\r\n filter(([, isLastPage]) => !isLastPage),\r\n map(([, , currentPageNumber]) => this.listActions.changePageNumber({ pageNumber: currentPageNumber + 1 }))\r\n )\r\n );\r\n\r\n loadPage$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPage),\r\n withLatestFrom(\r\n this.store.pipe(select(this.listSelectors.getPagingOptions)),\r\n this.store.pipe(select(this.listSelectors.getSortingOptions)),\r\n this.store.pipe(select(this.listSelectors.getFilteringOptions)),\r\n this.store.pipe(select(this.listSelectors.getRequestParameters))\r\n ),\r\n switchMap(([, pagingOptions, sortingOptions, filteringOptions, requestParameters]) => {\r\n return this.service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions,\r\n requestParameters\r\n })\r\n .pipe(\r\n map(resources =>\r\n this.listActions.loadPageSuccess({\r\n resources,\r\n pagingOptions\r\n })\r\n ),\r\n catchError((errors: E) => of(this.listActions.loadPageFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n patch$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.patch),\r\n exhaustMap(action => {\r\n if (!this.service.patchResources) {\r\n throw new Error('patchResources not implement in the ListService');\r\n }\r\n\r\n return this.service.patchResources(action.resourceIds, action.resource).pipe(\r\n map(resources => this.listActions.patchSuccess({ resources })),\r\n catchError((errors: E) => of(this.listActions.patchFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.delete),\r\n exhaustMap(({ resourceIds }) => {\r\n if (!this.service.deleteResources) {\r\n throw new Error('deleteResources not implement in the ListService');\r\n }\r\n\r\n return this.service.deleteResources(resourceIds).pipe(\r\n map(() => this.listActions.deleteSuccess({ resourceIds })),\r\n catchError((errors: E) => of(this.listActions.deleteFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n deleteSuccess$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.deleteSuccess),\r\n tap(({ resourceIds }) => {\r\n this.notificationService?.onListDelete(resourceIds);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure),\r\n tap(({ errors }) => {\r\n this.notificationService?.onListErrors(errors);\r\n })\r\n ),\r\n { dispatch: false }\r\n );\r\n\r\n protected constructor(\r\n protected readonly actions$: Actions,\r\n protected readonly store: Store,\r\n protected readonly service: ListService<T, S, Params>,\r\n protected readonly listActions: ListActions<T, E, S, Params>,\r\n protected readonly listSelectors: ListSelectors<S, E, Params>,\r\n protected readonly notificationService?: ListNotificationService<E>\r\n ) {}\r\n}\r\n","import { Optional } from '@angular/core';\r\nimport { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { Actions, OnIdentifyEffects } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { AbstractListEffects } from '../state-generator/abstract-list-effects';\r\nimport { ListStateService } from './state.service';\r\n\r\nexport class ListEffects<\r\n T extends { [key: string]: any },\r\n Error = unknown,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n >\r\n extends AbstractListEffects<T, Error, S, Params>\r\n implements OnIdentifyEffects\r\n{\r\n constructor(\r\n actions$: Actions,\r\n store: Store,\r\n listStateService: ListStateService<T, Error, S, Params>,\r\n private readonly featureKey: string,\r\n service: ListService<T, S, Params>,\r\n @Optional() notificationService?: ListNotificationService<Error>\r\n ) {\r\n super(\r\n actions$,\r\n store,\r\n service,\r\n listStateService.getFeatureActions(featureKey),\r\n listStateService.getFeatureSelectors(featureKey),\r\n notificationService\r\n );\r\n }\r\n\r\n ngrxOnIdentifyEffects() {\r\n return this.featureKey;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ListNotificationService } from '@ngdux/data-model-common';\r\nimport { Observable, of } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NotificationServicePlaceholder<Error> implements ListNotificationService<Error> {\r\n onListErrors(errors: Error): void {\r\n console.error('ERROR', errors);\r\n }\r\n\r\n onListDelete(ids: string[]): void {\r\n console.log(`Resources ${ids.join(', ')} have been deleted.`);\r\n }\r\n\r\n openConfirmationDialog(data: { message: string; title: string }): Observable<boolean> {\r\n console.log(data.title, data.message);\r\n\r\n return of(true);\r\n }\r\n}\r\n","import { Inject, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { RegisterEffectsService } from '@ngdux/store-common';\r\nimport { Actions } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { ListEffects } from './+state/effects';\r\nimport { ListStateService } from './+state/state.service';\r\nimport {\r\n LIST_FEATURE_KEYS,\r\n LIST_NOTIFICATION_SERVICES,\r\n LIST_SERVICES,\r\n NgduxListStateModuleConfig\r\n} from './models/list.model';\r\nimport { NotificationServicePlaceholder } from './services/list-notification-service';\r\n\r\n/**\r\n * @deprecated This NgModule is deprecated and will be removed in a future release. Use `provideListState` and `createListState` instead to set up your list state in a more modular way.\r\n */\r\n@NgModule({\r\n providers: [ListStateService]\r\n})\r\nexport class NgduxListStateModule<\r\n T extends { [key: string]: any },\r\n Error = unknown,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n> {\r\n constructor(\r\n registerEffectsService: RegisterEffectsService,\r\n actions$: Actions,\r\n store: Store,\r\n listStateService: ListStateService<T, Error, S, Params>,\r\n @Inject(LIST_FEATURE_KEYS) featureKeys: string[],\r\n @Inject(LIST_SERVICES) services: ListService<T, S, Params>[],\r\n @Inject(LIST_NOTIFICATION_SERVICES) notificationServices: ListNotificationService<Error>[]\r\n ) {\r\n featureKeys.forEach((featureKey, index) => {\r\n const listEffects = new ListEffects(\r\n actions$,\r\n store,\r\n listStateService,\r\n featureKey,\r\n services[index],\r\n notificationServices[index]\r\n );\r\n registerEffectsService.registerEffects([listEffects]);\r\n });\r\n }\r\n\r\n static config<\r\n T extends { [key: string]: any },\r\n Error = unknown,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n >(\r\n config: NgduxListStateModuleConfig<T, Error, S, Params>\r\n ): ModuleWithProviders<NgduxListStateModule<T, Error, S, Params>> {\r\n return {\r\n ngModule: NgduxListStateModule,\r\n providers: [\r\n { provide: LIST_SERVICES, multi: true, useClass: config.service },\r\n {\r\n provide: LIST_NOTIFICATION_SERVICES,\r\n multi: true,\r\n useClass: config.notificationService || NotificationServicePlaceholder\r\n }\r\n ]\r\n };\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { EntityAdapter } from '@ngrx/entity';\r\nimport { ReducerManager, createFeatureSelector } from '@ngrx/store';\r\nimport { LIST_FEATURE_KEY, ListActions, ListSelectors, ListState } from '../models/list.model';\r\nimport { createListActions } from './list-actions';\r\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\r\nimport { createListSelectors } from './list-selectors';\r\n\r\n/**\r\n * @deprecated This class is deprecated and will be removed in a future release.\r\n */\r\n@Injectable()\r\nexport abstract class AbstractListReducerManager<\r\n T extends { [key: string]: any },\r\n E,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n> {\r\n actions: ListActions<T, E, S, Params>;\r\n selectors: ListSelectors<S, E, Params>;\r\n private entityAdapter: EntityAdapter<S>;\r\n\r\n constructor(\r\n private readonly reducerManager: ReducerManager,\r\n @Inject(LIST_FEATURE_KEY) private readonly featureKey: string\r\n ) {\r\n this.actions = this.getActions();\r\n this.entityAdapter = this.getEntityAdapter();\r\n this.addReducer();\r\n this.selectors = this.getSelectors();\r\n }\r\n\r\n protected getActions() {\r\n return createListActions<T, E, S, Params>(this.featureKey);\r\n }\r\n\r\n private getEntityAdapter() {\r\n return createListEntityAdapter<S>();\r\n }\r\n\r\n protected addReducer() {\r\n const currentReducers: string[] = Object.keys(this.reducerManager.currentReducers || {});\r\n\r\n if (!currentReducers.includes(this.featureKey)) {\r\n const reducer = createListReducer<T, E, S, Params>(this.entityAdapter, this.actions);\r\n this.reducerManager.addReducer(this.featureKey, reducer);\r\n }\r\n }\r\n\r\n protected getSelectors() {\r\n const getState = createFeatureSelector<ListState<S, E, Params>>(this.featureKey);\r\n return createListSelectors(this.entityAdapter, getState);\r\n }\r\n}\r\n","import { ActionPayload } from '@ngdux/store-common';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\n/**\r\n * @deprecated This class is deprecated and will be removed in a future release. Please use `provideListFacade` or `createListFacade` instead.\r\n */\r\nexport abstract class AbstractListFacade<T, E, S = T, Params = Record<string, string>> {\r\n readonly resources$ = this.store.pipe(select(this.listSelectors.getAll));\r\n readonly loadingState$ = this.store.pipe(select(this.listSelectors.getLoadingState));\r\n readonly requestState$ = this.store.pipe(select(this.listSelectors.getRequestState));\r\n readonly errors$ = this.store.pipe(select(this.listSelectors.getErrors));\r\n readonly isReady$ = this.store.pipe(select(this.listSelectors.isReady));\r\n readonly areSelectedReady$ = this.store.pipe(select(this.listSelectors.areSelectedReady));\r\n readonly currentPageData$ = this.store.pipe(select(this.listSelectors.getCurrentPageData));\r\n readonly currentPageNumber$ = this.store.pipe(select(this.listSelectors.getCurrentPageNumber));\r\n readonly filteringOptions$ = this.store.pipe(select(this.listSelectors.getFilteringOptions));\r\n readonly requestParameters$ = this.store.pipe(select(this.listSelectors.getRequestParameters));\r\n readonly lastPageNumber$ = this.store.pipe(select(this.listSelectors.getLastPageNumber));\r\n readonly pagingOptions$ = this.store.pipe(select(this.listSelectors.getPagingOptions));\r\n readonly requestOptions$ = this.store.pipe(select(this.listSelectors.getRequestOptions));\r\n readonly sortingOptions$ = this.store.pipe(select(this.listSelectors.getSortingOptions));\r\n readonly selectedItems$ = this.store.pipe(select(this.listSelectors.getSelectedItems));\r\n readonly totalCount$ = this.store.pipe(select(this.listSelectors.getTotalCount));\r\n\r\n constructor(\r\n protected readonly store: Store,\r\n private readonly listActions: ListActions<T, E, S, Params>,\r\n private readonly listSelectors: ListSelectors<S, E, Params>\r\n ) {}\r\n\r\n setPageSize(props: ActionPayload<ListActions<T, E, S, Params>['setPageSize']>): void {\r\n this.store.dispatch(this.listActions.setPageSize(props));\r\n }\r\n\r\n setFiltering(props: ActionPayload<ListActions<T, E, S, Params>['setFiltering']>): void {\r\n this.store.dispatch(this.listActions.setFiltering(props));\r\n }\r\n\r\n setSorting(props: ActionPayload<ListActions<T, E, S, Params>['setSorting']>): void {\r\n this.store.dispatch(this.listActions.setSorting(props));\r\n }\r\n\r\n setRequestParameters(props: ActionPayload<ListActions<T, E, S, Params>['setRequestParams']>) {\r\n this.store.dispatch(this.listActions.setRequestParams(props));\r\n }\r\n\r\n changeFiltering(props: ActionPayload<ListActions<T, E, S, Params>['changeFiltering']>): void {\r\n this.store.dispatch(this.listActions.changeFiltering(props));\r\n }\r\n\r\n changePagingOptions(props: ActionPayload<ListActions<T, E, S, Params>['changePagingOptions']>): void {\r\n this.store.dispatch(this.listActions.changePagingOptions(props));\r\n }\r\n\r\n changePageSize(props: ActionPayload<ListActions<T, E, S, Params>['changePageSize']>): void {\r\n this.store.dispatch(this.listActions.changePageSize(props));\r\n }\r\n\r\n changePageNumber(props: ActionPayload<ListActions<T, E, S, Params>['changePageNumber']>): void {\r\n this.store.dispatch(this.listActions.changePageNumber(props));\r\n }\r\n\r\n changeSelectedResources(props: ActionPayload<ListActions<T, E, S, Params>['changeSelectedResources']>): void {\r\n this.store.dispatch(this.listActions.changeSelectedResources(props));\r\n }\r\n\r\n changeSorting(props: ActionPayload<ListActions<T, E, S, Params>['changeSorting']>): void {\r\n this.store.dispatch(this.listActions.changeSorting(props));\r\n }\r\n\r\n changeRequestParams(props: ActionPayload<ListActions<T, E, S, Params>['changeRequestParams']>): void {\r\n this.store.dispatch(this.listActions.changeRequestParams(props));\r\n }\r\n\r\n loadPage(): void {\r\n this.store.dispatch(this.listActions.loadPage());\r\n }\r\n\r\n loadFirstPage(): void {\r\n this.store.dispatch(this.listActions.loadFirstPage());\r\n }\r\n\r\n loadNextPage(): void {\r\n this.store.dispatch(this.listActions.loadNextPage());\r\n }\r\n\r\n loadPreviousPage(): void {\r\n this.store.dispatch(this.listActions.loadPreviousPage());\r\n }\r\n\r\n patch(props: ActionPayload<ListActions<T, E, S, Params>['patch']>): void {\r\n this.store.dispatch(this.listActions.patch(props));\r\n }\r\n\r\n delete(props: ActionPayload<ListActions<T, E, S, Params>['delete']>): void {\r\n this.store.dispatch(this.listActions.delete(props));\r\n }\r\n\r\n initialize(): void {\r\n this.store.dispatch(this.listActions.initialize());\r\n }\r\n\r\n reinitialize(): void {\r\n this.store.dispatch(this.listActions.reset());\r\n }\r\n\r\n resetRequestState(): void {\r\n this.store.dispatch(this.listActions.resetRequestState());\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { catchError, exhaustMap, filter, map, of, switchMap, tap, withLatestFrom } from 'rxjs';\r\nimport { ListActions, ListSelectors } from '../models/list.model';\r\n\r\nexport function createListEffects<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n listSelectors: ListSelectors<Summary, Error, Params>,\r\n listService: () => ListService<Data, Summary, Params>,\r\n notificationService: () => ListNotificationService<Error>\r\n) {\r\n return {\r\n reload$: createEffect((actions$ = inject(Actions)) => reloadEffect(actions$, listActions), { functional: true }),\r\n loadFirstPage$: createEffect((actions$ = inject(Actions)) => loadFirstPageEffect(actions$, listActions), {\r\n functional: true\r\n }),\r\n loadPreviousPage$: createEffect(\r\n (store = inject(Store), actions$ = inject(Actions)) =>\r\n loadPreviousPageEffect(store, actions$, listActions, listSelectors),\r\n { functional: true }\r\n ),\r\n loadNextPage$: createEffect(\r\n (store = inject(Store), actions$ = inject(Actions)) =>\r\n loadNextPageEffect(store, actions$, listActions, listSelectors),\r\n { functional: true }\r\n ),\r\n loadPage$: createEffect(\r\n (store = inject(Store), actions$ = inject(Actions), service = listService()) =>\r\n loadPageEffect(store, actions$, listActions, listSelectors, service),\r\n { functional: true }\r\n ),\r\n patch$: createEffect(\r\n (actions$ = inject(Actions), service = listService()) => patchEffect(actions$, listActions, service),\r\n { functional: true }\r\n ),\r\n delete$: createEffect(\r\n (actions$ = inject(Actions), service = listService()) => deleteEffect(actions$, listActions, service),\r\n { functional: true }\r\n ),\r\n deleteSuccess$: createEffect(\r\n (actions$ = inject(Actions), service = notificationService()) =>\r\n deleteSuccessEffect(actions$, listActions, service),\r\n { functional: true, dispatch: false }\r\n ),\r\n errorsHandler$: createEffect(\r\n (actions$ = inject(Actions), service = notificationService()) =>\r\n errorsHandlerEffect(actions$, listActions, service),\r\n { functional: true, dispatch: false }\r\n )\r\n };\r\n}\r\n\r\nfunction reloadEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>\r\n) {\r\n return actions$.pipe(\r\n ofType(\r\n listActions.changePageSize,\r\n listActions.changeSorting,\r\n listActions.changeFiltering,\r\n listActions.changePagingOptions,\r\n listActions.changeRequestParams,\r\n listActions.initialize,\r\n listActions.reset,\r\n listActions.changePageNumber,\r\n listActions.patchSuccess,\r\n listActions.deleteSuccess\r\n ),\r\n map(() => listActions.loadPage())\r\n );\r\n}\r\n\r\nfunction loadFirstPageEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>\r\n) {\r\n return actions$.pipe(\r\n ofType(listActions.loadFirstPage),\r\n map(() => listActions.changePageNumber({ pageNumber: 1 }))\r\n );\r\n}\r\n\r\nfunction loadPreviousPageEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n store: Store,\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n listSelectors: ListSelectors<Summary, Error, Params>\r\n) {\r\n return actions$.pipe(\r\n ofType(listActions.loadPreviousPage),\r\n withLatestFrom(store.pipe(select(listSelectors.getCurrentPageNumber))),\r\n filter(([, currentPageNumber]) => currentPageNumber > 1),\r\n map(([, currentPageNumber]) => listActions.changePageNumber({ pageNumber: currentPageNumber - 1 }))\r\n );\r\n}\r\n\r\nfunction loadNextPageEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n store: Store,\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n listSelectors: ListSelectors<Summary, Error, Params>\r\n) {\r\n return actions$.pipe(\r\n ofType(listActions.loadNextPage),\r\n withLatestFrom(\r\n store.pipe(select(listSelectors.isLastPage)),\r\n store.pipe(select(listSelectors.getCurrentPageNumber))\r\n ),\r\n filter(([, isLastPage]) => !isLastPage),\r\n map(([, , currentPageNumber]) => listActions.changePageNumber({ pageNumber: currentPageNumber + 1 }))\r\n );\r\n}\r\n\r\nfunction loadPageEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n store: Store,\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n listSelectors: ListSelectors<Summary, Error, Params>,\r\n service: ListService<Data, Summary, Params>\r\n) {\r\n return actions$.pipe(\r\n ofType(listActions.loadPage),\r\n withLatestFrom(\r\n store.pipe(select(listSelectors.getPagingOptions)),\r\n store.pipe(select(listSelectors.getSortingOptions)),\r\n store.pipe(select(listSelectors.getFilteringOptions)),\r\n store.pipe(select(listSelectors.getRequestParameters))\r\n ),\r\n switchMap(([, pagingOptions, sortingOptions, filteringOptions, requestParameters]) => {\r\n return service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions,\r\n requestParameters\r\n })\r\n .pipe(\r\n map(resources =>\r\n listActions.loadPageSuccess({\r\n resources,\r\n pagingOptions\r\n })\r\n ),\r\n catchError((errors: Error) => of(listActions.loadPageFailure({ errors })))\r\n );\r\n })\r\n );\r\n}\r\n\r\nfunction patchEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n service: ListService<Data, Summary, Params>\r\n) {\r\n return actions$.pipe(\r\n ofType(listActions.patch),\r\n exhaustMap(action => {\r\n if (!service.patchResources) {\r\n throw new Error('patchResources not implement in the ListService');\r\n }\r\n\r\n return service.patchResources(action.resourceIds, action.resource).pipe(\r\n map(resources => listActions.patchSuccess({ resources })),\r\n catchError((errors: Error) => of(listActions.patchFailure({ errors })))\r\n );\r\n })\r\n );\r\n}\r\n\r\nfunction deleteEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n service: ListService<Data, Summary, Params>\r\n) {\r\n return actions$.pipe(\r\n ofType(listActions.delete),\r\n exhaustMap(({ resourceIds }) => {\r\n if (!service.deleteResources) {\r\n throw new Error('deleteResources not implement in the ListService');\r\n }\r\n\r\n return service.deleteResources(resourceIds).pipe(\r\n map(() => listActions.deleteSuccess({ resourceIds })),\r\n catchError((errors: Error) => of(listActions.deleteFailure({ errors })))\r\n );\r\n })\r\n );\r\n}\r\n\r\nfunction deleteSuccessEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n notificationService?: ListNotificationService<Error>\r\n) {\r\n return actions$.pipe(\r\n ofType(listActions.deleteSuccess),\r\n tap(({ resourceIds }) => {\r\n notificationService?.onListDelete(resourceIds);\r\n })\r\n );\r\n}\r\n\r\nfunction errorsHandlerEffect<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n actions$: Actions,\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n notificationService?: ListNotificationService<Error>\r\n) {\r\n return actions$.pipe(\r\n ofType(listActions.loadPageFailure, listActions.deleteFailure, listActions.patchFailure),\r\n tap(({ errors }) => {\r\n notificationService?.onListErrors(errors);\r\n })\r\n );\r\n}\r\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { ActionPayload } from '@ngdux/store-common';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { ListActions, ListFacade, ListSelectors } from '../models/list.model';\r\n\r\nexport function provideListFacade<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n token: InjectionToken<ListFacade<Data, Error, Summary, Params>>,\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n listSelectors: ListSelectors<Summary, Error, Params>\r\n) {\r\n return {\r\n provide: token,\r\n useFactory: () => createListFacade(listActions, listSelectors, inject(Store))\r\n };\r\n}\r\n\r\nexport function createListFacade<Data, Error = unknown, Summary = Data, Params = Record<string, string>>(\r\n listActions: ListActions<Data, Error, Summary, Params>,\r\n listSelectors: ListSelectors<Summary, Error, Params>,\r\n store: Store\r\n): ListFacade<Data, Error, Summary, Params> {\r\n const resources$ = store.pipe(select(listSelectors.getAll));\r\n const loadingState$ = store.pipe(select(listSelectors.getLoadingState));\r\n const requestState$ = store.pipe(select(listSelectors.getRequestState));\r\n const errors$ = store.pipe(select(listSelectors.getErrors));\r\n const isReady$ = store.pipe(select(listSelectors.isReady));\r\n const areSelectedReady$ = store.pipe(select(listSelectors.areSelectedReady));\r\n const currentPageData$ = store.pipe(select(listSelectors.getCurrentPageData));\r\n const currentPageNumber$ = store.pipe(select(listSelectors.getCurrentPageNumber));\r\n const filteringOptions$ = store.pipe(select(listSelectors.getFilteringOptions));\r\n const requestParameters$ = store.pipe(select(listSelectors.getRequestParameters));\r\n const lastPageNumber$ = store.pipe(select(listSelectors.getLastPageNumber));\r\n const pagingOptions$ = store.pipe(select(listSelectors.getPagingOptions));\r\n const requestOptions$ = store.pipe(select(listSelectors.getRequestOptions));\r\n const sortingOptions$ = store.pipe(select(listSelectors.getSortingOptions));\r\n const selectedItems$ = store.pipe(select(listSelectors.getSelectedItems));\r\n const totalCount$ = store.pipe(select(listSelectors.getTotalCount));\r\n\r\n return {\r\n resources$,\r\n loadingState$,\r\n requestState$,\r\n errors$,\r\n isReady$,\r\n areSelectedReady$,\r\n currentPageData$,\r\n currentPageNumber$,\r\n filteringOptions$,\r\n requestParameters$,\r\n lastPageNumber$,\r\n pagingOptions$,\r\n requestOptions$,\r\n sortingOptions$,\r\n selectedItems$,\r\n totalCount$,\r\n setPageSize(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setPageSize']>): void {\r\n store.dispatch(listActions.setPageSize(props));\r\n },\r\n\r\n setFiltering(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setFiltering']>): void {\r\n store.dispatch(listActions.setFiltering(props));\r\n },\r\n\r\n setSorting(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setSorting']>): void {\r\n store.dispatch(listActions.setSorting(props));\r\n },\r\n\r\n setRequestParameters(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setRequestParams']>) {\r\n store.dispatch(listActions.setRequestParams(props));\r\n },\r\n\r\n changeFiltering(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeFiltering']>): void {\r\n store.dispatch(listActions.changeFiltering(props));\r\n },\r\n changePagingOptions(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePagingOptions']>): void {\r\n store.dispatch(listActions.changePagingOptions(props));\r\n },\r\n changePageSize(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePageSize']>): void {\r\n store.dispatch(listActions.changePageSize(props));\r\n },\r\n changePageNumber(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePageNumber']>): void {\r\n store.dispatch(listActions.changePageNumber(props));\r\n },\r\n changeSelectedResources(\r\n props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeSelectedResources']>\r\n ): void {\r\n store.dispatch(listActions.changeSelectedResources(props));\r\n },\r\n changeSorting(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeSorting']>): void {\r\n store.dispatch(listActions.changeSorting(props));\r\n },\r\n changeRequestParams(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeRequestParams']>): void {\r\n store.dispatch(listActions.changeRequestParams(props));\r\n },\r\n\r\n loadPage(): void {\r\n store.dispatch(listActions.loadPage());\r\n },\r\n\r\n loadFirstPage(): void {\r\n store.dispatch(listActions.loadFirstPage());\r\n },\r\n loadNextPage(): void {\r\n store.dispatch(listActions.loadNextPage());\r\n },\r\n\r\n loadPreviousPage(): void {\r\n store.dispatch(listActions.loadPreviousPage());\r\n },\r\n\r\n patch(props: ActionPayload<ListActions<Data, Error, Summary, Params>['patch']>): void {\r\n store.dispatch(listActions.patch(props));\r\n },\r\n\r\n delete(props: ActionPayload<ListActions<Data, Error, Summary, Params>['delete']>): void {\r\n store.dispatch(listActions.delete(props));\r\n },\r\n\r\n initialize(): void {\r\n store.dispatch(listActions.initialize());\r\n },\r\n\r\n reinitialize(): void {\r\n store.dispatch(listActions.reset());\r\n },\r\n resetRequestState(): void {\r\n store.dispatch(listActions.resetRequestState());\r\n }\r\n };\r\n}\r\n","import { inject, InjectionToken, ProviderToken } from '@angular/core';\r\nimport { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { provideEffects } from '@ngrx/effects';\r\nimport { Action, createFeatureSelector, provideState } from '@ngrx/store';\r\nimport { ListFacade, ListState } from '../models/list.model';\r\nimport { NotificationServicePlaceholder } from '../services/list-notification-service';\r\nimport { createListActions } from './list-actions';\r\nimport { createListEffects } from './list-effects';\r\nimport { provideListFacade } from './list-facade';\r\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\r\nimport { createListSelectors } from './list-selectors';\r\n\r\nexport function createListState<\r\n T extends { [key: string]: any },\r\n E,\r\n S extends { [key: string]: any } = T,\r\n Params = Record<string, string>\r\n>(featureName: string, idKey?: string) {\r\n const actions = createListActions<T, E, S, Params>(featureName);\r\n const entityAdapter = createListEntityAdapter<S>(idKey);\r\n const reducer = createListReducer<T, E, S, Params>(entityAdapter, actions);\r\n const getState = createFeatureSelector<ListState<S, E, Params>>(featureName);\r\n const selectors = createListSelectors<S, E, Params>(entityAdapter, getState);\r\n\r\n return {\r\n actions,\r\n reducer: (state: ListState<S, E, Params>, action: Action): ListState<S, E, Params> => reducer(state, action),\r\n selectors,\r\n entityAdapter\r\n };\r\n}\r\n\r\nexport function provideListState<\r\n Data extends { [key: string]: any },\r\n Error = unknown,\r\n Summary extends { [key: string]: any } = Data,\r\n Params = Record<string, string>\r\n>(\r\n featureKey: string,\r\n facadeToken: InjectionToken<ListFacade<Data, Error, Summary, Params>>,\r\n service: ProviderToken<ListService<Data, Summary, Params>>,\r\n notificationService: ProviderToken<ListNotificationService<Error>> = NotificationServicePlaceholder<Error>\r\n) {\r\n const { actions, selectors, reducer } = createListState<Data, Error, Summary, Params>(featureKey);\r\n\r\n return [\r\n provideState(featureKey, reducer),\r\n provideListFacade(facadeToken, actions, selectors),\r\n provideEffects([\r\n createListEffects(\r\n actions,\r\n selectors,\r\n () => inject(service),\r\n () => inject(notificationService)\r\n )\r\n ]),\r\n service,\r\n notificationService\r\n ];\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i3","i4.ListStateService","map","withLatestFrom","filter","switchMap","catchError","exhaustMap","tap"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngdux/list",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git@github.com:allanartuso/ngdux.git",
|
|
@@ -8,21 +8,21 @@
|
|
|
8
8
|
},
|
|
9
9
|
"homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/list#readme",
|
|
10
10
|
"peerDependencies": {
|
|
11
|
-
"@ngdux/
|
|
12
|
-
"@
|
|
13
|
-
"@
|
|
14
|
-
"@ngrx/
|
|
15
|
-
"@
|
|
16
|
-
"@ngrx/effects": "
|
|
11
|
+
"@ngdux/store-common": ">=5.0.0",
|
|
12
|
+
"@ngdux/data-model-common": ">=5.0.0",
|
|
13
|
+
"@ngrx/entity": ">=21.0.0",
|
|
14
|
+
"@ngrx/store": ">=21.0.0",
|
|
15
|
+
"@angular/core": ">=21.0.0",
|
|
16
|
+
"@ngrx/effects": ">=21.0.0"
|
|
17
17
|
},
|
|
18
18
|
"module": "fesm2022/ngdux-list.mjs",
|
|
19
|
-
"typings": "
|
|
19
|
+
"typings": "types/ngdux-list.d.ts",
|
|
20
20
|
"exports": {
|
|
21
21
|
"./package.json": {
|
|
22
22
|
"default": "./package.json"
|
|
23
23
|
},
|
|
24
24
|
".": {
|
|
25
|
-
"types": "./
|
|
25
|
+
"types": "./types/ngdux-list.d.ts",
|
|
26
26
|
"default": "./fesm2022/ngdux-list.mjs"
|
|
27
27
|
}
|
|
28
28
|
},
|
|
@@ -4,14 +4,16 @@ export { ListNotificationService, ListService, RequestOptions, RequestState } fr
|
|
|
4
4
|
import * as _ngrx_store from '@ngrx/store';
|
|
5
5
|
import { ActionCreator, Action, MemoizedSelector, ReducerManager, Store, ReducerTypes, ActionReducer, DefaultProjectorFn } from '@ngrx/store';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
|
-
import { InjectionToken, Type, ModuleWithProviders } from '@angular/core';
|
|
8
|
-
import { ApiRequestState, LoadingState, RegisterEffectsService
|
|
7
|
+
import { InjectionToken, Type, ModuleWithProviders, ProviderToken } from '@angular/core';
|
|
8
|
+
import { ActionPayload, ApiRequestState, LoadingState, RegisterEffectsService } from '@ngdux/store-common';
|
|
9
9
|
import * as _ngrx_entity from '@ngrx/entity';
|
|
10
10
|
import { EntityState, EntityAdapter } from '@ngrx/entity';
|
|
11
|
+
import * as rxjs from 'rxjs';
|
|
12
|
+
import { Observable } from 'rxjs';
|
|
11
13
|
import * as _ngrx_effects from '@ngrx/effects';
|
|
12
14
|
import { Actions } from '@ngrx/effects';
|
|
13
|
-
import * as
|
|
14
|
-
import
|
|
15
|
+
import * as dist_libs_ngdux_data_model_common_types_ngdux_data_model_common from 'dist/libs/ngdux/data-model/common/types/ngdux-data-model-common';
|
|
16
|
+
import * as _ngdux_list from '@ngdux/list';
|
|
15
17
|
|
|
16
18
|
declare const LIST_FEATURE_KEY: InjectionToken<string>;
|
|
17
19
|
declare const LIST_FEATURE_KEYS: InjectionToken<string>;
|
|
@@ -21,11 +23,11 @@ interface ListState<T, E = unknown, Params = Record<string, string>> extends Ent
|
|
|
21
23
|
selectedResourceIds: string[];
|
|
22
24
|
lastPageNumber?: number;
|
|
23
25
|
}
|
|
24
|
-
interface ListSelectors<
|
|
25
|
-
getAll: MemoizedSelector<object,
|
|
26
|
+
interface ListSelectors<Summary, E = unknown, Params = Record<string, string>> {
|
|
27
|
+
getAll: MemoizedSelector<object, Summary[]>;
|
|
26
28
|
getRequestOptions: MemoizedSelector<object, RequestOptions>;
|
|
27
29
|
isLastPage: MemoizedSelector<object, boolean>;
|
|
28
|
-
getCurrentPageData: MemoizedSelector<object,
|
|
30
|
+
getCurrentPageData: MemoizedSelector<object, Summary[]>;
|
|
29
31
|
getPagingOptions: MemoizedSelector<object, PagingOptions>;
|
|
30
32
|
getSortingOptions: MemoizedSelector<object, SortingField[]>;
|
|
31
33
|
getFilteringOptions: MemoizedSelector<object, FilteringOptions>;
|
|
@@ -34,8 +36,8 @@ interface ListSelectors<T, E = unknown, Params = Record<string, string>> {
|
|
|
34
36
|
getLastPageNumber: MemoizedSelector<object, number | undefined>;
|
|
35
37
|
getLoadingState: MemoizedSelector<object, RequestState>;
|
|
36
38
|
getSelectedResourceIds: MemoizedSelector<object, string[]>;
|
|
37
|
-
getSelectedItems: MemoizedSelector<object,
|
|
38
|
-
getSelectionRecord: MemoizedSelector<object, Record<string,
|
|
39
|
+
getSelectedItems: MemoizedSelector<object, Summary[]>;
|
|
40
|
+
getSelectionRecord: MemoizedSelector<object, Record<string, Summary>>;
|
|
39
41
|
getRequestState: MemoizedSelector<object, RequestState>;
|
|
40
42
|
getErrors: MemoizedSelector<object, E | undefined>;
|
|
41
43
|
areSelectedReady: MemoizedSelector<object, boolean>;
|
|
@@ -198,6 +200,44 @@ interface NgduxListStateModuleConfig<T extends {
|
|
|
198
200
|
service: Type<ListService<T, S, Params>>;
|
|
199
201
|
notificationService?: Type<ListNotificationService<E>>;
|
|
200
202
|
}
|
|
203
|
+
interface ListFacade<Data, Error = unknown, Summary = Data, Params = Record<string, string>> {
|
|
204
|
+
resources$: Observable<Summary[]>;
|
|
205
|
+
loadingState$: Observable<RequestState>;
|
|
206
|
+
requestState$: Observable<RequestState>;
|
|
207
|
+
errors$: Observable<Error | undefined>;
|
|
208
|
+
isReady$: Observable<boolean>;
|
|
209
|
+
areSelectedReady$: Observable<boolean>;
|
|
210
|
+
currentPageData$: Observable<Summary[]>;
|
|
211
|
+
currentPageNumber$: Observable<number>;
|
|
212
|
+
filteringOptions$: Observable<FilteringOptions>;
|
|
213
|
+
requestParameters$: Observable<Params | undefined>;
|
|
214
|
+
lastPageNumber$: Observable<number | undefined>;
|
|
215
|
+
pagingOptions$: Observable<PagingOptions>;
|
|
216
|
+
requestOptions$: Observable<RequestOptions<Record<string, string>>>;
|
|
217
|
+
sortingOptions$: Observable<SortingField[]>;
|
|
218
|
+
selectedItems$: Observable<Summary[]>;
|
|
219
|
+
totalCount$: Observable<number>;
|
|
220
|
+
setPageSize(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setPageSize']>): void;
|
|
221
|
+
setFiltering(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setFiltering']>): void;
|
|
222
|
+
setSorting(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setSorting']>): void;
|
|
223
|
+
setRequestParameters(props: ActionPayload<ListActions<Data, Error, Summary, Params>['setRequestParams']>): void;
|
|
224
|
+
changeFiltering(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeFiltering']>): void;
|
|
225
|
+
changePagingOptions(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePagingOptions']>): void;
|
|
226
|
+
changePageSize(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePageSize']>): void;
|
|
227
|
+
changePageNumber(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changePageNumber']>): void;
|
|
228
|
+
changeSelectedResources(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeSelectedResources']>): void;
|
|
229
|
+
changeSorting(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeSorting']>): void;
|
|
230
|
+
changeRequestParams(props: ActionPayload<ListActions<Data, Error, Summary, Params>['changeRequestParams']>): void;
|
|
231
|
+
loadPage(): void;
|
|
232
|
+
loadFirstPage(): void;
|
|
233
|
+
loadNextPage(): void;
|
|
234
|
+
loadPreviousPage(): void;
|
|
235
|
+
patch(props: ActionPayload<ListActions<Data, Error, Summary, Params>['patch']>): void;
|
|
236
|
+
delete(props: ActionPayload<ListActions<Data, Error, Summary, Params>['delete']>): void;
|
|
237
|
+
initialize(): void;
|
|
238
|
+
reinitialize(): void;
|
|
239
|
+
resetRequestState(): void;
|
|
240
|
+
}
|
|
201
241
|
|
|
202
242
|
declare class ListStateService<T extends {
|
|
203
243
|
[key: string]: any;
|
|
@@ -219,6 +259,9 @@ declare class ListStateService<T extends {
|
|
|
219
259
|
static ɵprov: i0.ɵɵInjectableDeclaration<ListStateService<any, any, any, any>>;
|
|
220
260
|
}
|
|
221
261
|
|
|
262
|
+
/**
|
|
263
|
+
* @deprecated This NgModule is deprecated and will be removed in a future release. Use `provideListState` and `createListState` instead to set up your list state in a more modular way.
|
|
264
|
+
*/
|
|
222
265
|
declare class NgduxListStateModule<T extends {
|
|
223
266
|
[key: string]: any;
|
|
224
267
|
}, Error = unknown, S extends {
|
|
@@ -235,6 +278,9 @@ declare class NgduxListStateModule<T extends {
|
|
|
235
278
|
static ɵinj: i0.ɵɵInjectorDeclaration<NgduxListStateModule>;
|
|
236
279
|
}
|
|
237
280
|
|
|
281
|
+
/**
|
|
282
|
+
* @deprecated This class is deprecated and will be removed in a future release. Please use `createListEffects` instead.
|
|
283
|
+
*/
|
|
238
284
|
declare abstract class AbstractListEffects<T, E = unknown, S = T, Params = Record<string, string>> {
|
|
239
285
|
protected readonly actions$: Actions;
|
|
240
286
|
protected readonly store: Store;
|
|
@@ -281,6 +327,9 @@ declare abstract class AbstractListEffects<T, E = unknown, S = T, Params = Recor
|
|
|
281
327
|
protected constructor(actions$: Actions, store: Store, service: ListService<T, S, Params>, listActions: ListActions<T, E, S, Params>, listSelectors: ListSelectors<S, E, Params>, notificationService?: ListNotificationService<E> | undefined);
|
|
282
328
|
}
|
|
283
329
|
|
|
330
|
+
/**
|
|
331
|
+
* @deprecated This class is deprecated and will be removed in a future release.
|
|
332
|
+
*/
|
|
284
333
|
declare abstract class AbstractListReducerManager<T extends {
|
|
285
334
|
[key: string]: any;
|
|
286
335
|
}, E, S extends {
|
|
@@ -300,24 +349,27 @@ declare abstract class AbstractListReducerManager<T extends {
|
|
|
300
349
|
static ɵprov: i0.ɵɵInjectableDeclaration<AbstractListReducerManager<any, any, any, any>>;
|
|
301
350
|
}
|
|
302
351
|
|
|
352
|
+
/**
|
|
353
|
+
* @deprecated This class is deprecated and will be removed in a future release. Please use `provideListFacade` or `createListFacade` instead.
|
|
354
|
+
*/
|
|
303
355
|
declare abstract class AbstractListFacade<T, E, S = T, Params = Record<string, string>> {
|
|
304
356
|
protected readonly store: Store;
|
|
305
357
|
private readonly listActions;
|
|
306
358
|
private readonly listSelectors;
|
|
307
359
|
readonly resources$: rxjs.Observable<S[]>;
|
|
308
|
-
readonly loadingState$: rxjs.Observable<
|
|
309
|
-
readonly requestState$: rxjs.Observable<
|
|
360
|
+
readonly loadingState$: rxjs.Observable<_ngdux_list.RequestState>;
|
|
361
|
+
readonly requestState$: rxjs.Observable<_ngdux_list.RequestState>;
|
|
310
362
|
readonly errors$: rxjs.Observable<E | undefined>;
|
|
311
363
|
readonly isReady$: rxjs.Observable<boolean>;
|
|
312
364
|
readonly areSelectedReady$: rxjs.Observable<boolean>;
|
|
313
365
|
readonly currentPageData$: rxjs.Observable<S[]>;
|
|
314
366
|
readonly currentPageNumber$: rxjs.Observable<number>;
|
|
315
|
-
readonly filteringOptions$: rxjs.Observable<
|
|
367
|
+
readonly filteringOptions$: rxjs.Observable<dist_libs_ngdux_data_model_common_types_ngdux_data_model_common.FilteringOptions>;
|
|
316
368
|
readonly requestParameters$: rxjs.Observable<Params | undefined>;
|
|
317
369
|
readonly lastPageNumber$: rxjs.Observable<number | undefined>;
|
|
318
|
-
readonly pagingOptions$: rxjs.Observable<
|
|
319
|
-
readonly requestOptions$: rxjs.Observable<
|
|
320
|
-
readonly sortingOptions$: rxjs.Observable<
|
|
370
|
+
readonly pagingOptions$: rxjs.Observable<dist_libs_ngdux_data_model_common_types_ngdux_data_model_common.PagingOptions>;
|
|
371
|
+
readonly requestOptions$: rxjs.Observable<_ngdux_list.RequestOptions<Record<string, string>>>;
|
|
372
|
+
readonly sortingOptions$: rxjs.Observable<dist_libs_ngdux_data_model_common_types_ngdux_data_model_common.SortingField[]>;
|
|
321
373
|
readonly selectedItems$: rxjs.Observable<S[]>;
|
|
322
374
|
readonly totalCount$: rxjs.Observable<number>;
|
|
323
375
|
constructor(store: Store, listActions: ListActions<T, E, S, Params>, listSelectors: ListSelectors<S, E, Params>);
|
|
@@ -348,7 +400,7 @@ declare function createListActions<T, E, S = T, Params = Record<string, string>>
|
|
|
348
400
|
declare function createListEntityAdapter<T extends {
|
|
349
401
|
[key: string]: any;
|
|
350
402
|
}>(idKey?: string): EntityAdapter<T>;
|
|
351
|
-
declare function createListReducer<T, E, S = T, Params = Record<string, string>>(entityAdapter: EntityAdapter<S>, actions: ListActions<T, E, S, Params>, actionHandlers?: ReducerTypes<ListState<S, E, Params>, ActionCreator
|
|
403
|
+
declare function createListReducer<T, E, S = T, Params = Record<string, string>>(entityAdapter: EntityAdapter<S>, actions: ListActions<T, E, S, Params>, actionHandlers?: ReducerTypes<ListState<S, E, Params>, ActionCreator[]>[], initialListState?: {
|
|
352
404
|
[key: string]: unknown;
|
|
353
405
|
}): ActionReducer<ListState<S, E, Params>>;
|
|
354
406
|
|
|
@@ -359,11 +411,19 @@ declare function createListState<T extends {
|
|
|
359
411
|
}, E, S extends {
|
|
360
412
|
[key: string]: any;
|
|
361
413
|
} = T, Params = Record<string, string>>(featureName: string, idKey?: string): {
|
|
362
|
-
actions: ListActions<T, E, S, Params>;
|
|
414
|
+
actions: _ngdux_list.ListActions<T, E, S, Params>;
|
|
363
415
|
reducer: (state: ListState<S, E, Params>, action: Action) => ListState<S, E, Params>;
|
|
364
|
-
selectors: ListSelectors<S, E, Params>;
|
|
416
|
+
selectors: _ngdux_list.ListSelectors<S, E, Params>;
|
|
365
417
|
entityAdapter: _ngrx_entity.EntityAdapter<S>;
|
|
366
418
|
};
|
|
419
|
+
declare function provideListState<Data extends {
|
|
420
|
+
[key: string]: any;
|
|
421
|
+
}, Error = unknown, Summary extends {
|
|
422
|
+
[key: string]: any;
|
|
423
|
+
} = Data, Params = Record<string, string>>(featureKey: string, facadeToken: InjectionToken<ListFacade<Data, Error, Summary, Params>>, service: ProviderToken<ListService<Data, Summary, Params>>, notificationService?: ProviderToken<ListNotificationService<Error>>): (i0.EnvironmentProviders | i0.Type<ListService<Data, Summary, Params>> | i0.AbstractType<ListService<Data, Summary, Params>> | InjectionToken<ListService<Data, Summary, Params>> | i0.Type<ListNotificationService<Error>> | i0.AbstractType<ListNotificationService<Error>> | {
|
|
424
|
+
provide: InjectionToken<ListFacade<Data, Error, Summary, Params>>;
|
|
425
|
+
useFactory: () => ListFacade<Data, Error, Summary, Params>;
|
|
426
|
+
})[];
|
|
367
427
|
|
|
368
|
-
export { AbstractListEffects, AbstractListFacade, AbstractListReducerManager, LIST_FEATURE_KEY, LIST_FEATURE_KEYS, LIST_NOTIFICATION_SERVICES, LIST_SERVICES, ListStateService, NgduxListStateModule, createListActions, createListEntityAdapter, createListReducer, createListSelectors, createListState };
|
|
369
|
-
export type { ListActions, ListSelectors, ListState, NgduxListStateModuleConfig };
|
|
428
|
+
export { AbstractListEffects, AbstractListFacade, AbstractListReducerManager, LIST_FEATURE_KEY, LIST_FEATURE_KEYS, LIST_NOTIFICATION_SERVICES, LIST_SERVICES, ListStateService, NgduxListStateModule, createListActions, createListEntityAdapter, createListReducer, createListSelectors, createListState, provideListState };
|
|
429
|
+
export type { ListActions, ListFacade, ListSelectors, ListState, NgduxListStateModuleConfig };
|