@ngdux/list 0.1.8 → 1.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.
@@ -1,11 +1,12 @@
1
- import { DEFAULT_REQUEST_OPTIONS, RequestState, SortingDirection, DEFAULT_STORED_PAGES } from '@ngdux/data-model-common';
1
+ import { DEFAULT_REQUEST_OPTIONS, RequestState, DEFAULT_PAGE } from '@ngdux/data-model-common';
2
2
  export { RequestState } from '@ngdux/data-model-common';
3
3
  import { createEffect, ofType } from '@ngrx/effects';
4
4
  import { select, createAction, props, createReducer, on, createSelector, createFeatureSelector } from '@ngrx/store';
5
5
  import { of } from 'rxjs';
6
- import { switchMap, withLatestFrom, filter, map, concatMap, catchError, exhaustMap, tap } from 'rxjs/operators';
7
- import { createLoadingStateActionHandlers, createRequestStateActionHandlers, getLastPageNumber } from '@ngdux/store-common';
6
+ import { map, withLatestFrom, filter, concatMap, catchError, exhaustMap, switchMap, tap } from 'rxjs/operators';
7
+ import { getLastPageNumber, createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';
8
8
  import { createEntityAdapter } from '@ngrx/entity';
9
+ import { InjectionToken } from '@angular/core';
9
10
 
10
11
  class AbstractListEffects {
11
12
  constructor(actions$, store, service, listActions, listSelectors, notificationService) {
@@ -19,36 +20,19 @@ class AbstractListEffects {
19
20
  deleteConfirmationTitle: 'Delete resources',
20
21
  deleteConfirmationMessage: 'Are you sure to delete the selected resources?'
21
22
  };
22
- this.initialize$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.initialize, this.listActions.reinitialize), switchMap(() => {
23
- return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];
24
- })));
25
- this.loadPreviousPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPreviousPage), withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), filter(([, currentPageNumber]) => currentPageNumber > 1), map(([, currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber - 1 }))));
26
- this.loadNextPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadNextPage), withLatestFrom(this.store.pipe(select(this.listSelectors.isLastPage)), this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), filter(([, isLastPage]) => !isLastPage), map(([, , currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber + 1 }))));
27
- this.refresh$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.refresh), withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), switchMap(([, currentPageNumber]) => [
28
- this.listActions.loadPage({ pageNumber: currentPageNumber }),
29
- this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })
30
- ])));
23
+ this.reload$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePageSize, this.listActions.changeSorting, this.listActions.changeFiltering, this.listActions.initialize, this.listActions.reset, this.listActions.changePageNumber, this.listActions.patchSuccess, this.listActions.deleteSuccess), map(() => this.listActions.loadPage())));
24
+ this.loadFirstPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadFirstPage), map(() => this.listActions.changePageNumber({ pageNumber: 1 }))));
25
+ this.loadPreviousPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPreviousPage), withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), filter(([, currentPageNumber]) => currentPageNumber > 1), map(([, currentPageNumber]) => this.listActions.changePageNumber({ pageNumber: currentPageNumber - 1 }))));
26
+ this.loadNextPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadNextPage), withLatestFrom(this.store.pipe(select(this.listSelectors.isLastPage)), this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), filter(([, isLastPage]) => !isLastPage), map(([, , currentPageNumber]) => this.listActions.changePageNumber({ pageNumber: currentPageNumber + 1 }))));
31
27
  this.changePagingOptions$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePagingOptions), withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))), map(([action, pagingOptions]) => {
32
28
  if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {
33
29
  return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });
34
30
  }
35
- else if (action.pagingOptions.page === pagingOptions.page + 1) {
36
- return this.listActions.loadNextPage();
37
- }
38
- else if (action.pagingOptions.page === pagingOptions.page - 1) {
39
- return this.listActions.loadPreviousPage();
40
- }
41
- else if (action.pagingOptions.page === 1) {
42
- return this.listActions.loadFirstPage();
31
+ else {
32
+ return this.listActions.changePageNumber({ pageNumber: action.pagingOptions.page });
43
33
  }
44
- return createAction('Not implement page options action');
45
34
  })));
46
- this.changeRequestOptions$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePageSize, this.listActions.changeSorting, this.listActions.changeFiltering, this.listActions.loadFirstPage), map(() => this.listActions.initialize())));
47
- this.loadPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPage), withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions)), this.store.pipe(select(this.listSelectors.getSortingOptions)), this.store.pipe(select(this.listSelectors.getFilteringOptions))), concatMap(([{ pageNumber }, pagingOptions, sortingOptions, filteringOptions]) => {
48
- pagingOptions = {
49
- page: pageNumber,
50
- pageSize: pagingOptions.pageSize
51
- };
35
+ this.loadPage$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPage), withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions)), this.store.pipe(select(this.listSelectors.getSortingOptions)), this.store.pipe(select(this.listSelectors.getFilteringOptions))), concatMap(([, pagingOptions, sortingOptions, filteringOptions]) => {
52
36
  return this.service
53
37
  .loadResources({
54
38
  pagingOptions,
@@ -60,14 +44,14 @@ class AbstractListEffects {
60
44
  pagingOptions
61
45
  })), catchError((errors) => of(this.listActions.loadPageFailure({ errors }))));
62
46
  })));
63
- this.patch$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.patch), exhaustMap(action => this.service.patchResources(action.resourceIds, action.resource).pipe(switchMap(resources => [this.listActions.patchSuccess({ resources }), this.listActions.refresh()]), catchError((errors) => of(this.listActions.patchFailure({ errors })))))));
47
+ this.patch$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.patch), exhaustMap(action => this.service.patchResources(action.resourceIds, action.resource).pipe(map(resources => this.listActions.patchSuccess({ resources })), catchError((errors) => of(this.listActions.patchFailure({ errors })))))));
64
48
  this.showRemovalsDialog$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.showRemovalsConfirmation), switchMap(() => {
65
49
  return this.notificationService.openConfirmationDialog({
66
50
  message: this.texts.deleteConfirmationMessage,
67
51
  title: this.texts.deleteConfirmationTitle
68
52
  });
69
53
  }), filter(confirmed => confirmed), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), map(([, resourceIds]) => this.listActions.delete({ resourceIds }))));
70
- this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.delete), exhaustMap(({ resourceIds }) => this.service.deleteResources(resourceIds).pipe(switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]), catchError((errors) => of(this.listActions.deleteFailure({ errors })))))));
54
+ this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.delete), exhaustMap(({ resourceIds }) => this.service.deleteResources(resourceIds).pipe(map(() => this.listActions.deleteSuccess({ resourceIds })), catchError((errors) => of(this.listActions.deleteFailure({ errors })))))));
71
55
  this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(({ resourceIds }) => {
72
56
  this.notificationService.onListDelete(resourceIds);
73
57
  })), { dispatch: false });
@@ -77,20 +61,103 @@ class AbstractListEffects {
77
61
  }
78
62
  }
79
63
 
64
+ class AbstractListFacade {
65
+ constructor(store, listActions, listSelectors) {
66
+ this.store = store;
67
+ this.listActions = listActions;
68
+ this.listSelectors = listSelectors;
69
+ this.resources$ = this.store.pipe(select(this.listSelectors.getAll));
70
+ this.loadingState$ = this.store.pipe(select(this.listSelectors.getLoadingState));
71
+ this.requestState$ = this.store.pipe(select(this.listSelectors.getRequestState));
72
+ this.errors$ = this.store.pipe(select(this.listSelectors.getErrors));
73
+ this.isReady$ = this.store.pipe(select(this.listSelectors.isReady));
74
+ this.areSelectedReady$ = this.store.pipe(select(this.listSelectors.areSelectedReady));
75
+ this.currentPageData$ = this.store.pipe(select(this.listSelectors.getCurrentPageData));
76
+ this.currentPageNumber$ = this.store.pipe(select(this.listSelectors.getCurrentPageNumber));
77
+ this.filteringOptions$ = this.store.pipe(select(this.listSelectors.getFilteringOptions));
78
+ this.lastPageNumber$ = this.store.pipe(select(this.listSelectors.getLastPageNumber));
79
+ this.pagingOptions$ = this.store.pipe(select(this.listSelectors.getPagingOptions));
80
+ this.requestOptions$ = this.store.pipe(select(this.listSelectors.getRequestOptions));
81
+ this.sortingOptions$ = this.store.pipe(select(this.listSelectors.getSortingOptions));
82
+ this.selectedItems$ = this.store.pipe(select(this.listSelectors.getSelectedItems));
83
+ this.totalCount$ = this.store.pipe(select(this.listSelectors.getTotalCount));
84
+ }
85
+ setPageSize(props) {
86
+ this.store.dispatch(this.listActions.setPageSize(props));
87
+ }
88
+ setFiltering(props) {
89
+ this.store.dispatch(this.listActions.setFiltering(props));
90
+ }
91
+ setSorting(props) {
92
+ this.store.dispatch(this.listActions.setSorting(props));
93
+ }
94
+ changeFiltering(props) {
95
+ this.store.dispatch(this.listActions.changeFiltering(props));
96
+ }
97
+ changePagingOptions(props) {
98
+ this.store.dispatch(this.listActions.changePagingOptions(props));
99
+ }
100
+ changePageSize(props) {
101
+ this.store.dispatch(this.listActions.changePageSize(props));
102
+ }
103
+ changePageNumber(props) {
104
+ this.store.dispatch(this.listActions.changePageNumber(props));
105
+ }
106
+ changeSelectedResources(props) {
107
+ this.store.dispatch(this.listActions.changeSelectedResources(props));
108
+ }
109
+ changeSorting(props) {
110
+ this.store.dispatch(this.listActions.changeSorting(props));
111
+ }
112
+ loadPage() {
113
+ this.store.dispatch(this.listActions.loadPage());
114
+ }
115
+ loadFirstPage() {
116
+ this.store.dispatch(this.listActions.loadFirstPage());
117
+ }
118
+ loadNextPage() {
119
+ this.store.dispatch(this.listActions.loadNextPage());
120
+ }
121
+ loadPreviousPage() {
122
+ this.store.dispatch(this.listActions.loadPreviousPage());
123
+ }
124
+ patch(props) {
125
+ this.store.dispatch(this.listActions.patch(props));
126
+ }
127
+ delete(props) {
128
+ this.store.dispatch(this.listActions.delete(props));
129
+ }
130
+ initialize() {
131
+ this.store.dispatch(this.listActions.initialize());
132
+ }
133
+ reinitialize() {
134
+ this.store.dispatch(this.listActions.reset());
135
+ }
136
+ resetRequestState() {
137
+ this.store.dispatch(this.listActions.resetRequestState());
138
+ }
139
+ showRemovalsConfirmation() {
140
+ this.store.dispatch(this.listActions.showRemovalsConfirmation());
141
+ }
142
+ }
143
+
80
144
  function createListActions(featureName) {
81
- const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);
82
- const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);
145
+ const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);
83
146
  const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);
84
- const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);
147
+ const reset = createAction(`[Organization ${featureName} Page] Reset ${featureName}`);
85
148
  const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);
86
149
  const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);
87
150
  const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);
151
+ const setPageSize = createAction(`[${featureName} Page] Set ${featureName} Page Size`, props());
152
+ const setSorting = createAction(`[${featureName} Page] Set ${featureName} Sorting`, props());
153
+ const setFiltering = createAction(`[${featureName} Page] Set ${featureName} Filtering`, props());
88
154
  const changePageSize = createAction(`[${featureName} Page] Change ${featureName} Page Size`, props());
155
+ const changePageNumber = createAction(`[${featureName} Page] Change ${featureName} Page Number`, props());
89
156
  const changePagingOptions = createAction(`[${featureName} Page] Change ${featureName} Page Options`, props());
90
157
  const changeSorting = createAction(`[${featureName} Page] Change ${featureName} Sorting`, props());
91
158
  const changeFiltering = createAction(`[${featureName} Page] Change ${featureName} Filtering`, props());
92
- const changeSelected = createAction(`[${featureName} Page] Change Selected ${featureName}`, props());
93
- const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props());
159
+ const changeSelectedResources = createAction(`[${featureName} Page] Change Selected Resources ${featureName}`, props());
160
+ const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`);
94
161
  const loadPageSuccess = createAction(`[${featureName} Page] Load ${featureName} Page Success`, props());
95
162
  const loadPageFailure = createAction(`[${featureName} Page] Load ${featureName} Page Failure`, props());
96
163
  const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props());
@@ -99,21 +166,23 @@ function createListActions(featureName) {
99
166
  const patch = createAction(`[${featureName} Page] Patch ${featureName}`, props());
100
167
  const patchSuccess = createAction(`[${featureName} Page] Patch ${featureName} Success`, props());
101
168
  const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props());
102
- const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);
103
169
  const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);
104
170
  return {
105
- initializeRequestOptions,
171
+ initialize,
172
+ reset,
173
+ setPageSize,
174
+ setSorting,
175
+ setFiltering,
106
176
  changePageSize,
177
+ changePageNumber,
178
+ changePagingOptions,
107
179
  changeSorting,
108
180
  changeFiltering,
109
- loadNextPage,
110
- loadPage,
111
- refresh,
112
- initialize,
113
- reinitialize,
114
181
  loadPreviousPage,
182
+ loadNextPage,
115
183
  loadFirstPage,
116
- changeSelected,
184
+ changeSelectedResources,
185
+ loadPage,
117
186
  loadPageSuccess,
118
187
  loadPageFailure,
119
188
  delete: deleteAction,
@@ -123,7 +192,6 @@ function createListActions(featureName) {
123
192
  patchSuccess,
124
193
  patchFailure,
125
194
  resetRequestState,
126
- changePagingOptions,
127
195
  showRemovalsConfirmation
128
196
  };
129
197
  }
@@ -142,68 +210,26 @@ function createInitialListState(entityAdapter) {
142
210
  }
143
211
  function createListActionHandlers(initialListState, entityAdapter, actions) {
144
212
  return [
145
- on(actions.reinitialize, () => initialListState),
146
- on(actions.initialize, (state) => entityAdapter.removeAll(Object.assign(Object.assign({}, state), { selectedResourceIds: [], pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: 1 }) }))),
147
- on(actions.refresh, (state) => {
148
- const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;
149
- const resourceIds = state.ids.slice(currentPageStartIndex);
150
- return entityAdapter.removeMany(resourceIds, state);
151
- }),
152
- on(actions.changePageSize, (state, { pageSize }) => (Object.assign(Object.assign({}, state), { pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { pageSize }), lastPageNumber: undefined }))),
153
- on(actions.changeSorting, (state, { sortingField }) => {
154
- const sortingOptions = Object.assign({}, state.sortingOptions);
155
- if (sortingField.direction === SortingDirection.NONE) {
156
- delete sortingOptions[sortingField.field];
157
- }
158
- else {
159
- sortingOptions[sortingField.field] = sortingField;
160
- }
161
- return Object.assign(Object.assign({}, state), { sortingOptions });
162
- }),
163
- on(actions.changeFiltering, (state, { filteringOptions }) => (Object.assign(Object.assign({}, state), { filteringOptions, lastPageNumber: undefined }))),
164
- on(actions.changeSelected, (state, { selectedResourceIds }) => (Object.assign(Object.assign({}, state), { selectedResourceIds }))),
213
+ on(actions.reset, () => initialListState),
214
+ on(actions.initialize, (state) => entityAdapter.removeAll(Object.assign(Object.assign({}, state), { selectedResourceIds: [], pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: DEFAULT_PAGE }), requestState: RequestState.IDLE }))),
215
+ on(actions.changePageSize, actions.setPageSize, (state, { pageSize }) => (Object.assign(Object.assign({}, state), { pagingOptions: { page: DEFAULT_PAGE, pageSize }, lastPageNumber: undefined }))),
216
+ on(actions.changePageNumber, (state, { pageNumber }) => (Object.assign(Object.assign({}, state), { pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: pageNumber }) }))),
217
+ on(actions.changeSorting, actions.setSorting, (state, { sortingOptions }) => (Object.assign(Object.assign({}, state), { sortingOptions, pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: DEFAULT_PAGE }) }))),
218
+ on(actions.changeFiltering, actions.setFiltering, (state, { filteringOptions }) => (Object.assign(Object.assign({}, state), { filteringOptions, pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: DEFAULT_PAGE }), lastPageNumber: undefined }))),
219
+ on(actions.changeSelectedResources, (state, { selectedResourceIds }) => (Object.assign(Object.assign({}, state), { selectedResourceIds }))),
165
220
  on(actions.loadFirstPage, (state) => (Object.assign(Object.assign({}, state), { pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: 1 }) }))),
166
- on(actions.loadNextPage, (state) => {
167
- if (state.pagingOptions.page === state.lastPageNumber) {
168
- return Object.assign({}, state);
169
- }
170
- if (state.pagingOptions.page + 1 === state.lastPageNumber &&
171
- state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2) {
172
- const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize);
173
- state = entityAdapter.removeMany(resourceIds, Object.assign({}, state));
174
- }
175
- return Object.assign(Object.assign({}, state), { pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: state.pagingOptions.page + 1 }) });
176
- }),
177
- on(actions.loadPreviousPage, (state) => {
178
- if (state.pagingOptions.page === 1) {
179
- return Object.assign({}, state);
180
- }
181
- return Object.assign(Object.assign({}, state), { pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: state.pagingOptions.page - 1 }) });
182
- }),
183
221
  on(actions.loadPageSuccess, (state, { resources, pagingOptions }) => {
184
- if (pagingOptions.page < state.pagingOptions.page) {
185
- return createPreviousPageSuccessState(entityAdapter, state, resources);
222
+ const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;
223
+ if (pagingOptions.page > lastPageNumber) {
224
+ return Object.assign(Object.assign({}, state), { pagingOptions: Object.assign(Object.assign({}, state.pagingOptions), { page: lastPageNumber }), lastPageNumber, selectedResourceIds: [] });
186
225
  }
187
- return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);
226
+ return entityAdapter.setAll(resources, Object.assign(Object.assign({}, state), { lastPageNumber, selectedResourceIds: [] }));
188
227
  }),
189
228
  on(actions.deleteSuccess, (state) => (Object.assign(Object.assign({}, state), { selectedResourceIds: [] }))),
190
229
  ...createLoadingStateActionHandlers(actions.loadPage, actions.loadPageSuccess, actions.loadPageFailure),
191
230
  ...createRequestStateActionHandlers(undefined, actions.delete, actions.deleteSuccess, actions.deleteFailure),
192
231
  ...createRequestStateActionHandlers(actions.resetRequestState, actions.patch, actions.patchSuccess, actions.patchFailure)
193
232
  ];
194
- }
195
- function createPreviousPageSuccessState(entityAdapter, state, resources) {
196
- const resourceIds = state.ids.slice(0, (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize);
197
- return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], Object.assign(Object.assign({}, state), { selectedResourceIds: [] }));
198
- }
199
- function createNextPageSuccessState(entityAdapter, state, pagingOptions, resources) {
200
- let resourceIds = [];
201
- const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;
202
- if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {
203
- resourceIds = state.ids.slice(0, state.pagingOptions.pageSize);
204
- state = entityAdapter.removeMany(resourceIds, Object.assign({}, state));
205
- }
206
- return entityAdapter.addMany(resources, Object.assign(Object.assign({}, state), { lastPageNumber, selectedResourceIds: [] }));
207
233
  }
208
234
 
209
235
  /* eslint-disable @typescript-eslint/ban-types */
@@ -219,19 +245,15 @@ function createListSelectors(entityAdapter, getListState) {
219
245
  const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {
220
246
  return lastPageNumber <= page;
221
247
  });
222
- const getCurrentPageData = createSelector(getPagingOptions, getAll, ({ page, pageSize }, resources) => {
223
- const defaultStoredPageIndex = (DEFAULT_STORED_PAGES + 1) / 2;
224
- if (page < defaultStoredPageIndex) {
225
- return resources.slice((page - 1) * pageSize, page * pageSize);
226
- }
227
- return resources.slice((defaultStoredPageIndex - 1) * pageSize, defaultStoredPageIndex * pageSize);
248
+ const getCurrentPageData = createSelector(getAll, resources => {
249
+ return resources;
228
250
  });
229
251
  const getSortingOptions = createSelector(getListState, state => state.sortingOptions);
230
252
  const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);
231
253
  const getCurrentPageNumber = createSelector(getPagingOptions, options => options.page);
232
254
  const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);
233
255
  const getLoadingState = createSelector(getListState, state => state.loadingState);
234
- const getSelected = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.map(selectedResourceId => resources[selectedResourceId]));
256
+ const getSelectedItems = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.map(selectedResourceId => resources[selectedResourceId]));
235
257
  const getSelectionRecord = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.reduce((selected, selectedResourceId) => {
236
258
  selected[selectedResourceId] = resources[selectedResourceId];
237
259
  return selected;
@@ -262,7 +284,7 @@ function createListSelectors(entityAdapter, getListState) {
262
284
  getLastPageNumber,
263
285
  getLoadingState,
264
286
  getSelectedResourceIds,
265
- getSelected,
287
+ getSelectedItems,
266
288
  getSelectionRecord,
267
289
  getRequestState,
268
290
  getErrors,
@@ -288,9 +310,12 @@ function createListState(featureName) {
288
310
  };
289
311
  }
290
312
 
313
+ /* eslint-disable @typescript-eslint/ban-types */
314
+ const LIST_FEATURE_KEY = new InjectionToken('LIST_FEATURE_KEY');
315
+
291
316
  /**
292
317
  * Generated bundle index. Do not edit.
293
318
  */
294
319
 
295
- export { AbstractListEffects, createListActions, createListEntityAdapter, createListReducer, createListSelectors, createListState };
320
+ export { AbstractListEffects, AbstractListFacade, LIST_FEATURE_KEY, createListActions, createListEntityAdapter, createListReducer, createListSelectors, createListState };
296
321
  //# sourceMappingURL=ngdux-list.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngdux-list.mjs","sources":["../../../../../../../libs/ngdux/util/store/list/src/lib/+state/abstract-list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-actions.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-reducer.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-selectors.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-state.ts","../../../../../../../libs/ngdux/util/store/list/src/ngdux-list.ts"],"sourcesContent":["import {\r\n FilteringOptions,\r\n ListNotificationService,\r\n ListService,\r\n PagingOptions,\r\n SortingOptions\r\n} from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { createAction, select, Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, concatMap, 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, S = T> {\r\n texts = {\r\n deleteConfirmationTitle: 'Delete resources',\r\n deleteConfirmationMessage: 'Are you sure to delete the selected resources?'\r\n };\r\n\r\n initialize$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.initialize, this.listActions.reinitialize),\r\n switchMap(() => {\r\n return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];\r\n })\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.loadPage({ 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.loadPage({ pageNumber: currentPageNumber + 1 }))\r\n )\r\n );\r\n\r\n refresh$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.refresh),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\r\n switchMap(([, currentPageNumber]) => [\r\n this.listActions.loadPage({ pageNumber: currentPageNumber }),\r\n this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })\r\n ])\r\n )\r\n );\r\n\r\n changePagingOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.changePagingOptions),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))),\r\n map(([action, pagingOptions]) => {\r\n if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {\r\n return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });\r\n } else if (action.pagingOptions.page === pagingOptions.page + 1) {\r\n return this.listActions.loadNextPage();\r\n } else if (action.pagingOptions.page === pagingOptions.page - 1) {\r\n return this.listActions.loadPreviousPage();\r\n } else if (action.pagingOptions.page === 1) {\r\n return this.listActions.loadFirstPage();\r\n }\r\n\r\n return createAction('Not implement page options action');\r\n })\r\n )\r\n );\r\n\r\n changeRequestOptions$ = 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.loadFirstPage\r\n ),\r\n map(() => this.listActions.initialize())\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 ),\r\n concatMap(\r\n ([{ pageNumber }, pagingOptions, sortingOptions, filteringOptions]: [\r\n { pageNumber: number },\r\n PagingOptions,\r\n SortingOptions,\r\n FilteringOptions\r\n ]) => {\r\n pagingOptions = {\r\n page: pageNumber,\r\n pageSize: pagingOptions.pageSize\r\n };\r\n\r\n return this.service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions\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\r\n patch$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.patch),\r\n exhaustMap(action =>\r\n this.service.patchResources(action.resourceIds, action.resource).pipe(\r\n switchMap(resources => [this.listActions.patchSuccess({ resources }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.patchFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n showRemovalsDialog$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.showRemovalsConfirmation),\r\n switchMap(() => {\r\n return this.notificationService.openConfirmationDialog({\r\n message: this.texts.deleteConfirmationMessage,\r\n title: this.texts.deleteConfirmationTitle\r\n });\r\n }),\r\n filter(confirmed => confirmed),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\r\n map(([, resourceIds]) => this.listActions.delete({ resourceIds }))\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 this.service.deleteResources(resourceIds).pipe(\r\n switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]),\r\n catchError((errors: E) => of(this.listActions.deleteFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n deleteUsersSuccess$ = 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 private readonly service: ListService<T, S>,\r\n private readonly listActions: ListActions<T, E, S>,\r\n private readonly listSelectors: ListSelectors<S, E>,\r\n private readonly notificationService: ListNotificationService<E>\r\n ) {}\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>(featureName: string): ListActions<T, E, S> {\r\n const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);\r\n const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);\r\n const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);\r\n const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);\r\n\r\n const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);\r\n const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);\r\n const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);\r\n\r\n const changePageSize = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Size`,\r\n props<{ pageSize: number }>()\r\n );\r\n\r\n const changePagingOptions = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Options`,\r\n props<{ pagingOptions: PagingOptions }>()\r\n );\r\n const changeSorting = createAction(\r\n `[${featureName} Page] Change ${featureName} Sorting`,\r\n props<{ sortingField: SortingField }>()\r\n );\r\n const changeFiltering = createAction(\r\n `[${featureName} Page] Change ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const changeSelected = createAction(\r\n `[${featureName} Page] Change Selected ${featureName}`,\r\n props<{ selectedResourceIds: string[] }>()\r\n );\r\n\r\n const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props<{ pageNumber: number }>());\r\n const loadPageSuccess = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Success`,\r\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\r\n );\r\n const loadPageFailure = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Failure`,\r\n props<{ errors: E }>()\r\n );\r\n\r\n const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props<{ resourceIds: string[] }>());\r\n const deleteSuccess = createAction(\r\n `[${featureName} Page] Delete ${featureName} Success`,\r\n props<{ resourceIds: string[] }>()\r\n );\r\n const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const patch = createAction(\r\n `[${featureName} Page] Patch ${featureName}`,\r\n props<{ resourceIds: string[]; resource: Partial<T> }>()\r\n );\r\n const patchSuccess = createAction(\r\n `[${featureName} Page] Patch ${featureName} Success`,\r\n props<{ resources: (T | ErrorDto)[] }>()\r\n );\r\n const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props<{ errors: E }>());\r\n const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);\r\n\r\n const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);\r\n\r\n return {\r\n initializeRequestOptions,\r\n changePageSize,\r\n changeSorting,\r\n changeFiltering,\r\n loadNextPage,\r\n loadPage,\r\n refresh,\r\n initialize,\r\n reinitialize,\r\n loadPreviousPage,\r\n loadFirstPage,\r\n changeSelected,\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 changePagingOptions,\r\n showRemovalsConfirmation\r\n };\r\n}\r\n","import {\r\n DEFAULT_REQUEST_OPTIONS,\r\n DEFAULT_STORED_PAGES,\r\n PagingOptions,\r\n RequestState,\r\n SortingDirection\r\n} 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>(\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>,\r\n actionHandlers?: ReducerTypes<ListState<S, E>, ActionCreator[]>[],\r\n initialListState?: { [key: string]: unknown }\r\n): ActionReducer<ListState<S, E>> {\r\n const initialState: ListState<S, E> = { ...createInitialListState<S, E>(entityAdapter), ...initialListState };\r\n return createReducer<ListState<S, E>>(\r\n initialState,\r\n ...createListActionHandlers<T, E, S>(initialState, entityAdapter, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialListState<T, E>(entityAdapter: EntityAdapter<T>): ListState<T, E> {\r\n return entityAdapter.getInitialState({\r\n ...DEFAULT_REQUEST_OPTIONS,\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>(\r\n initialListState: ListState<S, E>,\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>\r\n): ReducerTypes<ListState<S, E>, ActionCreator[]>[] {\r\n return [\r\n on(actions.reinitialize, () => initialListState),\r\n on(actions.initialize, (state: ListState<S, E>) =>\r\n entityAdapter.removeAll({\r\n ...state,\r\n selectedResourceIds: [],\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: 1\r\n }\r\n })\r\n ),\r\n on(actions.refresh, (state: ListState<S, E>) => {\r\n const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;\r\n const resourceIds = state.ids.slice(currentPageStartIndex) as string[];\r\n\r\n return entityAdapter.removeMany(resourceIds, state);\r\n }),\r\n\r\n on(actions.changePageSize, (state: ListState<S, E>, { pageSize }) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, pageSize },\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSorting, (state: ListState<S, E>, { sortingField }) => {\r\n const sortingOptions = { ...state.sortingOptions };\r\n if (sortingField.direction === SortingDirection.NONE) {\r\n delete sortingOptions[sortingField.field];\r\n } else {\r\n sortingOptions[sortingField.field] = sortingField;\r\n }\r\n return {\r\n ...state,\r\n sortingOptions\r\n };\r\n }),\r\n on(actions.changeFiltering, (state: ListState<S, E>, { filteringOptions }) => ({\r\n ...state,\r\n filteringOptions,\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSelected, (state: ListState<S, E>, { selectedResourceIds }) => ({\r\n ...state,\r\n selectedResourceIds\r\n })),\r\n on(actions.loadFirstPage, (state: ListState<S, E>) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: 1 }\r\n })),\r\n on(actions.loadNextPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === state.lastPageNumber) {\r\n return { ...state };\r\n }\r\n\r\n if (\r\n state.pagingOptions.page + 1 === state.lastPageNumber &&\r\n state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2\r\n ) {\r\n const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page + 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPreviousPage, (state: ListState<S, E>) => {\r\n if (state.pagingOptions.page === 1) {\r\n return { ...state };\r\n }\r\n\r\n return {\r\n ...state,\r\n pagingOptions: {\r\n ...state.pagingOptions,\r\n page: state.pagingOptions.page - 1\r\n }\r\n };\r\n }),\r\n on(actions.loadPageSuccess, (state: ListState<S, E>, { resources, pagingOptions }) => {\r\n if (pagingOptions.page < state.pagingOptions.page) {\r\n return createPreviousPageSuccessState(entityAdapter, state, resources);\r\n }\r\n\r\n return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);\r\n }),\r\n on(actions.deleteSuccess, (state: ListState<S, E>) => ({\r\n ...state,\r\n selectedResourceIds: [] as string[]\r\n })),\r\n ...createLoadingStateActionHandlers<ListState<S, E>>(\r\n actions.loadPage,\r\n actions.loadPageSuccess,\r\n actions.loadPageFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, 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\r\nfunction createPreviousPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n resources: T[]\r\n): ListState<T, E> {\r\n const resourceIds: string[] = state.ids.slice(\r\n 0,\r\n (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize\r\n ) as string[];\r\n\r\n return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], {\r\n ...state,\r\n selectedResourceIds: []\r\n });\r\n}\r\n\r\nfunction createNextPageSuccessState<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n state: ListState<T, E>,\r\n pagingOptions: PagingOptions,\r\n resources: T[]\r\n): ListState<T, E> {\r\n let resourceIds: string[] = [];\r\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\r\n\r\n if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {\r\n resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\r\n state = entityAdapter.removeMany(resourceIds, { ...state });\r\n }\r\n\r\n return entityAdapter.addMany(resources, {\r\n ...state,\r\n lastPageNumber,\r\n selectedResourceIds: []\r\n });\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\nimport { DEFAULT_STORED_PAGES, RequestOptions, RequestState } from '@ngdux/data-model-common';\nimport { EntityAdapter } from '@ngrx/entity';\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\nimport { ListSelectors, ListState } from '../models/list.model';\n\nexport function createListSelectors<T, E>(\n entityAdapter: EntityAdapter<T>,\n getListState: MemoizedSelector<object, ListState<T, E>, DefaultProjectorFn<ListState<T, E>>>\n): ListSelectors<T, E> {\n const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);\n\n const getPagingOptions = createSelector(getListState, state => state.pagingOptions);\n\n const getRequestOptions = createSelector(\n getListState,\n (state): RequestOptions => ({\n pagingOptions: state.pagingOptions,\n sortingOptions: state.sortingOptions,\n filteringOptions: state.filteringOptions\n })\n );\n\n const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);\n\n const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {\n return lastPageNumber <= page;\n });\n\n const getCurrentPageData = createSelector(getPagingOptions, getAll, ({ page, pageSize }, resources) => {\n const defaultStoredPageIndex = (DEFAULT_STORED_PAGES + 1) / 2;\n\n if (page < defaultStoredPageIndex) {\n return resources.slice((page - 1) * pageSize, page * pageSize);\n }\n\n return resources.slice((defaultStoredPageIndex - 1) * pageSize, defaultStoredPageIndex * pageSize);\n });\n\n const getSortingOptions = createSelector(getListState, state => state.sortingOptions);\n\n const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);\n\n const getCurrentPageNumber = createSelector(getPagingOptions, options => options.page);\n\n const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);\n\n const getLoadingState = createSelector(getListState, state => state.loadingState);\n\n const getSelected = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): T[] =>\n selectedResourceIds.map(selectedResourceId => resources[selectedResourceId])\n );\n\n const getSelectionRecord = createSelector(\n getSelectedResourceIds,\n createSelector(getListState, entityAdapter.getSelectors().selectEntities),\n (selectedResourceIds, resources): Record<string, T> =>\n selectedResourceIds.reduce((selected, selectedResourceId) => {\n selected[selectedResourceId] = resources[selectedResourceId];\n return selected;\n }, {} as Record<string, T>)\n );\n\n const getRequestState = createSelector(getListState, state => state.requestState);\n\n const getErrors = createSelector(getListState, state => state.errors);\n\n const isReady = createSelector(\n getAll,\n getLoadingState,\n (users, loadingState) => !!users && loadingState === RequestState.SUCCESS\n );\n\n const areSelectedReady = createSelector(\n getSelectedResourceIds,\n getSelectionRecord,\n getLoadingState,\n (selectedResourceIds, resources, loadingState) => {\n return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;\n }\n );\n\n const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);\n\n const isCopyDisabled = createSelector(\n getSelectedResourceIds,\n selectedResourceIds => selectedResourceIds.length !== 1\n );\n\n const getTotalCount = createSelector(\n getPagingOptions,\n isLastPage,\n getCurrentPageData,\n (pagingOptions, isLastPage, currentPageData) => {\n if (isLastPage) {\n return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;\n }\n return (pagingOptions.page + 1) * pagingOptions.pageSize;\n }\n );\n\n return {\n getAll,\n getRequestOptions,\n isLastPage,\n getCurrentPageData,\n getPagingOptions,\n getSortingOptions,\n getFilteringOptions,\n getCurrentPageNumber,\n getLastPageNumber,\n getLoadingState,\n getSelectedResourceIds,\n getSelected,\n getSelectionRecord,\n getRequestState,\n getErrors,\n areSelectedReady,\n isReady,\n isDeleteDisabled,\n isCopyDisabled,\n getTotalCount\n };\n}\n","import { Action, createFeatureSelector } from '@ngrx/store';\nimport { ListState } from '../models/list.model';\nimport { createListActions } from './list-actions';\nimport { createListEntityAdapter, createListReducer } from './list-reducer';\nimport { createListSelectors } from './list-selectors';\n\nexport function createListState<T, E, S = T>(featureName: string) {\n const actions = createListActions<T, E, S>(featureName);\n const entityAdapter = createListEntityAdapter<S>();\n const reducer = createListReducer<T, E, S>(entityAdapter, actions);\n const getState = createFeatureSelector<ListState<S, E>>(featureName);\n const selectors = createListSelectors<S, E>(entityAdapter, getState);\n\n return {\n actions,\n reducer: (state: ListState<S, E>, action: Action): ListState<S, E> => reducer(state, action),\n selectors,\n entityAdapter\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngdux-list.mjs","sources":["../../../../../../../libs/ngdux/util/store/list/src/lib/+state/abstract-list-effects.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/abstract-list.facade.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-actions.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-reducer.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-selectors.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/+state/list-state.ts","../../../../../../../libs/ngdux/util/store/list/src/lib/models/list.model.ts","../../../../../../../libs/ngdux/util/store/list/src/ngdux-list.ts"],"sourcesContent":["import { ListNotificationService, ListService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, concatMap, 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, S = T> {\r\n texts = {\r\n deleteConfirmationTitle: 'Delete resources',\r\n deleteConfirmationMessage: 'Are you sure to delete the selected resources?'\r\n };\r\n\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.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 changePagingOptions$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.changePagingOptions),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))),\r\n map(([action, pagingOptions]) => {\r\n if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {\r\n return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });\r\n } else {\r\n return this.listActions.changePageNumber({ pageNumber: action.pagingOptions.page });\r\n }\r\n })\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 ),\r\n concatMap(([, pagingOptions, sortingOptions, filteringOptions]) => {\r\n return this.service\r\n .loadResources({\r\n pagingOptions,\r\n sortingOptions,\r\n filteringOptions\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 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 showRemovalsDialog$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.listActions.showRemovalsConfirmation),\r\n switchMap(() => {\r\n return this.notificationService.openConfirmationDialog({\r\n message: this.texts.deleteConfirmationMessage,\r\n title: this.texts.deleteConfirmationTitle\r\n });\r\n }),\r\n filter(confirmed => confirmed),\r\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\r\n map(([, resourceIds]) => this.listActions.delete({ resourceIds }))\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 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 deleteUsersSuccess$ = 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 private readonly service: ListService<T, S>,\r\n private readonly listActions: ListActions<T, E, S>,\r\n private readonly listSelectors: ListSelectors<S, E>,\r\n private readonly notificationService: ListNotificationService<E>\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> {\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 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>,\r\n private readonly listSelectors: ListSelectors<S, E>\r\n ) {}\r\n\r\n setPageSize(props: ActionPayload<ListActions<T, E>['setPageSize']>): void {\r\n this.store.dispatch(this.listActions.setPageSize(props));\r\n }\r\n\r\n setFiltering(props: ActionPayload<ListActions<T, E>['setFiltering']>): void {\r\n this.store.dispatch(this.listActions.setFiltering(props));\r\n }\r\n\r\n setSorting(props: ActionPayload<ListActions<T, E>['setSorting']>): void {\r\n this.store.dispatch(this.listActions.setSorting(props));\r\n }\r\n\r\n changeFiltering(props: ActionPayload<ListActions<T, E>['changeFiltering']>): void {\r\n this.store.dispatch(this.listActions.changeFiltering(props));\r\n }\r\n\r\n changePagingOptions(props: ActionPayload<ListActions<T, E>['changePagingOptions']>): void {\r\n this.store.dispatch(this.listActions.changePagingOptions(props));\r\n }\r\n\r\n changePageSize(props: ActionPayload<ListActions<T, E>['changePageSize']>): void {\r\n this.store.dispatch(this.listActions.changePageSize(props));\r\n }\r\n\r\n changePageNumber(props: ActionPayload<ListActions<T, E>['changePageNumber']>): void {\r\n this.store.dispatch(this.listActions.changePageNumber(props));\r\n }\r\n\r\n changeSelectedResources(props: ActionPayload<ListActions<T, E>['changeSelectedResources']>): void {\r\n this.store.dispatch(this.listActions.changeSelectedResources(props));\r\n }\r\n\r\n changeSorting(props: ActionPayload<ListActions<T, E>['changeSorting']>): void {\r\n this.store.dispatch(this.listActions.changeSorting(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>['patch']>): void {\r\n this.store.dispatch(this.listActions.patch(props));\r\n }\r\n\r\n delete(props: ActionPayload<ListActions<T, E>['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 showRemovalsConfirmation(): void {\r\n this.store.dispatch(this.listActions.showRemovalsConfirmation());\r\n }\r\n}\r\n","import { ErrorDto, FilteringOptions, PagingOptions, SortingOptions } 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>(featureName: string): ListActions<T, E, S> {\r\n const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);\r\n const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);\r\n const reset = createAction(`[Organization ${featureName} Page] Reset ${featureName}`);\r\n\r\n const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);\r\n const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);\r\n const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);\r\n\r\n const setPageSize = createAction(`[${featureName} Page] Set ${featureName} Page Size`, props<{ pageSize: number }>());\r\n const setSorting = createAction(\r\n `[${featureName} Page] Set ${featureName} Sorting`,\r\n props<{ sortingOptions: SortingOptions }>()\r\n );\r\n const setFiltering = createAction(\r\n `[${featureName} Page] Set ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n\r\n const changePageSize = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Size`,\r\n props<{ pageSize: number }>()\r\n );\r\n\r\n const changePageNumber = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Number`,\r\n props<{ pageNumber: number }>()\r\n );\r\n\r\n const changePagingOptions = createAction(\r\n `[${featureName} Page] Change ${featureName} Page Options`,\r\n props<{ pagingOptions: PagingOptions }>()\r\n );\r\n const changeSorting = createAction(\r\n `[${featureName} Page] Change ${featureName} Sorting`,\r\n props<{ sortingOptions: SortingOptions }>()\r\n );\r\n const changeFiltering = createAction(\r\n `[${featureName} Page] Change ${featureName} Filtering`,\r\n props<{ filteringOptions: FilteringOptions }>()\r\n );\r\n const changeSelectedResources = createAction(\r\n `[${featureName} Page] Change Selected Resources ${featureName}`,\r\n props<{ selectedResourceIds: string[] }>()\r\n );\r\n\r\n const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`);\r\n const loadPageSuccess = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Success`,\r\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\r\n );\r\n const loadPageFailure = createAction(\r\n `[${featureName} Page] Load ${featureName} Page Failure`,\r\n props<{ errors: E }>()\r\n );\r\n\r\n const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props<{ resourceIds: string[] }>());\r\n const deleteSuccess = createAction(\r\n `[${featureName} Page] Delete ${featureName} Success`,\r\n props<{ resourceIds: string[] }>()\r\n );\r\n const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const patch = createAction(\r\n `[${featureName} Page] Patch ${featureName}`,\r\n props<{ resourceIds: string[]; resource: Partial<T> }>()\r\n );\r\n const patchSuccess = createAction(\r\n `[${featureName} Page] Patch ${featureName} Success`,\r\n props<{ resources: (T | ErrorDto)[] }>()\r\n );\r\n const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props<{ errors: E }>());\r\n\r\n const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);\r\n\r\n return {\r\n initialize,\r\n reset,\r\n setPageSize,\r\n setSorting,\r\n setFiltering,\r\n changePageSize,\r\n changePageNumber,\r\n changePagingOptions,\r\n changeSorting,\r\n changeFiltering,\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 showRemovalsConfirmation\r\n };\r\n}\r\n","import { DEFAULT_PAGE, DEFAULT_REQUEST_OPTIONS, 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>(\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>,\r\n actionHandlers?: ReducerTypes<ListState<S, E>, ActionCreator[]>[],\r\n initialListState?: { [key: string]: unknown }\r\n): ActionReducer<ListState<S, E>> {\r\n const initialState: ListState<S, E> = { ...createInitialListState<S, E>(entityAdapter), ...initialListState };\r\n return createReducer<ListState<S, E>>(\r\n initialState,\r\n ...createListActionHandlers<T, E, S>(initialState, entityAdapter, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialListState<T, E>(entityAdapter: EntityAdapter<T>): ListState<T, E> {\r\n return entityAdapter.getInitialState({\r\n ...DEFAULT_REQUEST_OPTIONS,\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>(\r\n initialListState: ListState<S, E>,\r\n entityAdapter: EntityAdapter<S>,\r\n actions: ListActions<T, E, S>\r\n): ReducerTypes<ListState<S, E>, ActionCreator[]>[] {\r\n return [\r\n on(actions.reset, () => initialListState),\r\n on(actions.initialize, (state: ListState<S, E>) =>\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>, { 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>, { pageNumber }) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: pageNumber }\r\n })),\r\n on(actions.changeSorting, actions.setSorting, (state: ListState<S, E>, { 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>, { filteringOptions }) => ({\r\n ...state,\r\n filteringOptions,\r\n pagingOptions: { ...state.pagingOptions, page: DEFAULT_PAGE },\r\n lastPageNumber: undefined\r\n })),\r\n on(actions.changeSelectedResources, (state: ListState<S, E>, { selectedResourceIds }) => ({\r\n ...state,\r\n selectedResourceIds\r\n })),\r\n on(actions.loadFirstPage, (state: ListState<S, E>) => ({\r\n ...state,\r\n pagingOptions: { ...state.pagingOptions, page: 1 }\r\n })),\r\n on(actions.loadPageSuccess, (state: ListState<S, E>, { resources, pagingOptions }) => {\r\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\r\n if (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>) => ({\r\n ...state,\r\n selectedResourceIds: [] as string[]\r\n })),\r\n ...createLoadingStateActionHandlers<ListState<S, E>>(\r\n actions.loadPage,\r\n actions.loadPageSuccess,\r\n actions.loadPageFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createRequestStateActionHandlers<ListState<S, E>, 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 { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\r\nimport { ListSelectors, ListState } from '../models/list.model';\r\n\r\nexport function createListSelectors<T, E>(\r\n entityAdapter: EntityAdapter<T>,\r\n getListState: MemoizedSelector<object, ListState<T, E>, DefaultProjectorFn<ListState<T, E>>>\r\n): ListSelectors<T, E> {\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 <= page;\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 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.map(selectedResourceId => resources[selectedResourceId])\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 selected[selectedResourceId] = resources[selectedResourceId];\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 (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 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 { 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<T, E, S = T>(featureName: string) {\r\n const actions = createListActions<T, E, S>(featureName);\r\n const entityAdapter = createListEntityAdapter<S>();\r\n const reducer = createListReducer<T, E, S>(entityAdapter, actions);\r\n const getState = createFeatureSelector<ListState<S, E>>(featureName);\r\n const selectors = createListSelectors<S, E>(entityAdapter, getState);\r\n\r\n return {\r\n actions,\r\n reducer: (state: ListState<S, E>, action: Action): ListState<S, E> => reducer(state, action),\r\n selectors,\r\n entityAdapter\r\n };\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { InjectionToken } from '@angular/core';\r\nimport {\r\n ErrorDto,\r\n FilteringOptions,\r\n PagingOptions,\r\n RequestOptions,\r\n RequestState,\r\n SortingOptions\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\n\r\nexport interface ListState<T, E> extends EntityState<T>, RequestOptions, ApiRequestState<E>, LoadingState {\r\n selectedResourceIds: string[];\r\n lastPageNumber: number;\r\n}\r\n\r\nexport interface ListSelectors<T, E> {\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, SortingOptions>;\r\n getFilteringOptions: MemoizedSelector<object, FilteringOptions>;\r\n getCurrentPageNumber: MemoizedSelector<object, number>;\r\n getLastPageNumber: MemoizedSelector<object, number>;\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>;\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<T, E, S = T> {\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: SortingOptions }) => { sortingOptions: SortingOptions } & 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 /**\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: SortingOptions }) => { sortingOptions: SortingOptions } & 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 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: S[];\r\n pagingOptions: PagingOptions;\r\n }) => { resources: S[]; pagingOptions: PagingOptions } & TypedAction<string>\r\n >;\r\n loadPageFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & 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: E }) => { errors: E } & TypedAction<string>>;\r\n patch: ActionCreator<\r\n string,\r\n (props: {\r\n resourceIds: string[];\r\n resource: Partial<T>;\r\n }) => { resourceIds: string[]; resource: Partial<T> } & TypedAction<string>\r\n >;\r\n patchSuccess: ActionCreator<\r\n string,\r\n (props: { resources: (T | ErrorDto)[] }) => { resources: (T | ErrorDto)[] } & TypedAction<string>\r\n >;\r\n patchFailure: ActionCreator<string, (props: { errors: E }) => { errors: E } & 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 showRemovalsConfirmation: ActionCreator<string, () => TypedAction<string>>;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}