@ngdux/list 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngdux-list.mjs +16 -16
- package/fesm2022/ngdux-list.mjs.map +1 -1
- package/index.d.ts +368 -10
- package/package.json +1 -3
- package/esm2022/index.mjs +0 -12
- package/esm2022/lib/+state/effects.mjs +0 -23
- package/esm2022/lib/+state/state.service.mjs +0 -55
- package/esm2022/lib/models/list.model.mjs +0 -7
- package/esm2022/lib/ngdux-list-state.module.mjs +0 -53
- package/esm2022/lib/services/list-notification-service.mjs +0 -21
- package/esm2022/lib/state-generator/abstract-list-effects.mjs +0 -50
- package/esm2022/lib/state-generator/abstract-list-state.service.mjs +0 -44
- package/esm2022/lib/state-generator/abstract-list.facade.mjs +0 -85
- package/esm2022/lib/state-generator/list-actions.mjs +0 -58
- package/esm2022/lib/state-generator/list-reducer.mjs +0 -104
- package/esm2022/lib/state-generator/list-selectors.mjs +0 -80
- package/esm2022/lib/state-generator/list-state.mjs +0 -18
- package/esm2022/ngdux-list.mjs +0 -5
- package/lib/+state/effects.d.ts +0 -14
- package/lib/+state/state.service.d.ts +0 -22
- package/lib/models/list.model.d.ts +0 -191
- package/lib/ngdux-list-state.module.d.ts +0 -23
- package/lib/services/list-notification-service.d.ts +0 -13
- package/lib/state-generator/abstract-list-effects.d.ts +0 -49
- package/lib/state-generator/abstract-list-state.service.d.ts +0 -21
- package/lib/state-generator/abstract-list.facade.d.ts +0 -45
- package/lib/state-generator/list-actions.d.ts +0 -2
- package/lib/state-generator/list-reducer.d.ts +0 -10
- package/lib/state-generator/list-selectors.d.ts +0 -4
- package/lib/state-generator/list-state.d.ts +0 -12
package/fesm2022/ngdux-list.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
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,
|
|
4
|
+
import { InjectionToken, Inject, Injectable, Optional, NgModule } from '@angular/core';
|
|
5
5
|
import * as i1 from '@ngrx/store';
|
|
6
6
|
import { createAction, props, createReducer, on, createSelector, createFeatureSelector, select, Store } from '@ngrx/store';
|
|
7
7
|
import * as i1$1 from '@ngdux/store-common';
|
|
8
|
-
import {
|
|
8
|
+
import { createLoadingStateActionHandlers, createRequestStateActionHandlers, getLastPageNumber } from '@ngdux/store-common';
|
|
9
9
|
import { createEntityAdapter } from '@ngrx/entity';
|
|
10
10
|
import * as i2 from '@ngrx/effects';
|
|
11
11
|
import { createEffect, ofType, Actions } from '@ngrx/effects';
|
|
@@ -291,10 +291,10 @@ class ListStateService {
|
|
|
291
291
|
getFeatureSelectors(featureKey) {
|
|
292
292
|
return this.selectors[featureKey];
|
|
293
293
|
}
|
|
294
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
295
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
294
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ListStateService, deps: [{ token: i1.ReducerManager }, { token: LIST_FEATURE_KEYS }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
295
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ListStateService }); }
|
|
296
296
|
}
|
|
297
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
297
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ListStateService, decorators: [{
|
|
298
298
|
type: Injectable
|
|
299
299
|
}], ctorParameters: () => [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
|
|
300
300
|
type: Inject,
|
|
@@ -374,10 +374,10 @@ class NotificationServicePlaceholder {
|
|
|
374
374
|
console.log(data.title, data.message);
|
|
375
375
|
return of(true);
|
|
376
376
|
}
|
|
377
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
378
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
377
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NotificationServicePlaceholder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
378
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NotificationServicePlaceholder }); }
|
|
379
379
|
}
|
|
380
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NotificationServicePlaceholder, decorators: [{
|
|
381
381
|
type: Injectable
|
|
382
382
|
}] });
|
|
383
383
|
|
|
@@ -401,11 +401,11 @@ class NgduxListStateModule {
|
|
|
401
401
|
]
|
|
402
402
|
};
|
|
403
403
|
}
|
|
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: "
|
|
404
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", 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 }); }
|
|
405
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: NgduxListStateModule }); }
|
|
406
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgduxListStateModule, providers: [ListStateService] }); }
|
|
407
407
|
}
|
|
408
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: NgduxListStateModule, decorators: [{
|
|
409
409
|
type: NgModule,
|
|
410
410
|
args: [{
|
|
411
411
|
providers: [ListStateService]
|
|
@@ -447,10 +447,10 @@ class AbstractListReducerManager {
|
|
|
447
447
|
const getState = createFeatureSelector(this.featureKey);
|
|
448
448
|
return createListSelectors(this.entityAdapter, getState);
|
|
449
449
|
}
|
|
450
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
451
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
450
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AbstractListReducerManager, deps: [{ token: i1.ReducerManager }, { token: LIST_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
451
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AbstractListReducerManager }); }
|
|
452
452
|
}
|
|
453
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
453
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AbstractListReducerManager, decorators: [{
|
|
454
454
|
type: Injectable
|
|
455
455
|
}], ctorParameters: () => [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
|
|
456
456
|
type: Inject,
|
|
@@ -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 { ActionCreator, MemoizedSelector } from '@ngrx/store';\r\nimport { TypedAction } from '@ngrx/store/src/models';\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>,\r\n RequestOptions<Params>,\r\n ApiRequestState<E>,\r\n 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 } & TypedAction<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[] } & TypedAction<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 } & TypedAction<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 } & TypedAction<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 } & TypedAction<string>\r\n >;\r\n\r\n /**\r\n * Change the page number and reload the list\r\n */\r\n changePageNumber: ActionCreator<\r\n string,\r\n (props: { pageNumber: number }) => { pageNumber: number } & TypedAction<string>\r\n >;\r\n /**\r\n * Change the page size and reload the list\r\n */\r\n changePageSize: ActionCreator<string, (props: { pageSize: number }) => { pageSize: number } & TypedAction<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[] } & TypedAction<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 } & TypedAction<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 } & TypedAction<string>>;\r\n\r\n changeSelectedResources: ActionCreator<\r\n string,\r\n (props: { selectedResourceIds: string[] }) => { selectedResourceIds: string[] } & TypedAction<string>\r\n >;\r\n loadPage: ActionCreator<string, () => TypedAction<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 } & TypedAction<string>\r\n >;\r\n loadPageFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & TypedAction<string>>;\r\n delete: ActionCreator<string, (props: { resourceIds: string[] }) => { resourceIds: string[] } & TypedAction<string>>;\r\n deleteSuccess: ActionCreator<\r\n string,\r\n (props: { resourceIds: string[] }) => { resourceIds: string[] } & TypedAction<string>\r\n >;\r\n deleteFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & TypedAction<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> } & TypedAction<string>\r\n >;\r\n patchSuccess: ActionCreator<\r\n string,\r\n (props: { resources: (Entity | ErrorDto)[] }) => { resources: (Entity | ErrorDto)[] } & TypedAction<string>\r\n >;\r\n patchFailure: ActionCreator<string, (props: { errors: Error }) => { errors: Error } & TypedAction<string>>;\r\n loadNextPage: ActionCreator<string, () => TypedAction<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, () => TypedAction<string>>;\r\n /**\r\n * Reset to the initial state\r\n */\r\n reset: ActionCreator<string, () => TypedAction<string>>;\r\n loadPreviousPage: ActionCreator<string, () => TypedAction<string>>;\r\n loadFirstPage: ActionCreator<string, () => TypedAction<string>>;\r\n /**\r\n * Reset the request state to idle\r\n */\r\n resetRequestState: ActionCreator<string, () => TypedAction<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-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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"}
|