@ngdux/list 0.1.6
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/README.md +7 -0
- package/esm2020/index.mjs +6 -0
- package/esm2020/lib/+state/abstract-list-effects.mjs +83 -0
- package/esm2020/lib/+state/list-actions.mjs +56 -0
- package/esm2020/lib/+state/list-reducer.mjs +139 -0
- package/esm2020/lib/+state/list-selectors.mjs +70 -0
- package/esm2020/lib/models/list.model.mjs +2 -0
- package/esm2020/ngdux-list.mjs +5 -0
- package/fesm2015/ngdux-list.mjs +295 -0
- package/fesm2015/ngdux-list.mjs.map +1 -0
- package/fesm2020/ngdux-list.mjs +351 -0
- package/fesm2020/ngdux-list.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/+state/abstract-list-effects.d.ts +65 -0
- package/lib/+state/list-actions.d.ts +2 -0
- package/lib/+state/list-reducer.d.ts +10 -0
- package/lib/+state/list-selectors.d.ts +4 -0
- package/lib/models/list.model.d.ts +122 -0
- package/package.json +43 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { createEffect, ofType } from '@ngrx/effects';
|
|
2
|
+
import { select, createAction, props, createReducer, on, createSelector } from '@ngrx/store';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { switchMap, withLatestFrom, filter, map, concatMap, catchError, exhaustMap, tap } from 'rxjs/operators';
|
|
5
|
+
import { DEFAULT_REQUEST_OPTIONS, RequestState, SortingDirection, DEFAULT_STORED_PAGES } from '@ngdux/data-model-common';
|
|
6
|
+
import { createLoadingStateActionHandlers, createRequestStateActionHandlers, getLastPageNumber } from '@ngdux/store-common';
|
|
7
|
+
import { createEntityAdapter } from '@ngrx/entity';
|
|
8
|
+
|
|
9
|
+
class AbstractListEffects {
|
|
10
|
+
constructor(router, actions$, store, snackBar, service, listActions, listSelectors, notificationService) {
|
|
11
|
+
this.router = router;
|
|
12
|
+
this.actions$ = actions$;
|
|
13
|
+
this.store = store;
|
|
14
|
+
this.snackBar = snackBar;
|
|
15
|
+
this.service = service;
|
|
16
|
+
this.listActions = listActions;
|
|
17
|
+
this.listSelectors = listSelectors;
|
|
18
|
+
this.notificationService = notificationService;
|
|
19
|
+
this.texts = {
|
|
20
|
+
deleteConfirmationTitle: 'Delete resources',
|
|
21
|
+
deleteConfirmationMessage: 'Are you sure to delete the selected resources?',
|
|
22
|
+
deletedMessage: 'The resources were deleted successfully.'
|
|
23
|
+
};
|
|
24
|
+
this.initialize$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.initialize, this.listActions.reinitialize), switchMap(() => {
|
|
25
|
+
return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];
|
|
26
|
+
})));
|
|
27
|
+
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 }))));
|
|
28
|
+
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 }))));
|
|
29
|
+
this.refresh$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.refresh), withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))), switchMap(([, currentPageNumber]) => [
|
|
30
|
+
this.listActions.loadPage({ pageNumber: currentPageNumber }),
|
|
31
|
+
this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })
|
|
32
|
+
])));
|
|
33
|
+
this.changePagingOptions$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePagingOptions), withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))), map(([action, pagingOptions]) => {
|
|
34
|
+
if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {
|
|
35
|
+
return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });
|
|
36
|
+
}
|
|
37
|
+
else if (action.pagingOptions.page === pagingOptions.page + 1) {
|
|
38
|
+
return this.listActions.loadNextPage();
|
|
39
|
+
}
|
|
40
|
+
else if (action.pagingOptions.page === pagingOptions.page - 1) {
|
|
41
|
+
return this.listActions.loadPreviousPage();
|
|
42
|
+
}
|
|
43
|
+
else if (action.pagingOptions.page === 1) {
|
|
44
|
+
return this.listActions.loadFirstPage();
|
|
45
|
+
}
|
|
46
|
+
return createAction('Not implement page options action');
|
|
47
|
+
})));
|
|
48
|
+
this.changeRequestOptions$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.changePageSize, this.listActions.changeSorting, this.listActions.changeFiltering, this.listActions.loadFirstPage), map(() => this.listActions.initialize())));
|
|
49
|
+
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]) => {
|
|
50
|
+
pagingOptions = {
|
|
51
|
+
page: pageNumber,
|
|
52
|
+
pageSize: pagingOptions.pageSize
|
|
53
|
+
};
|
|
54
|
+
return this.service
|
|
55
|
+
.queryResources({
|
|
56
|
+
pagingOptions,
|
|
57
|
+
sortingOptions,
|
|
58
|
+
filteringOptions
|
|
59
|
+
})
|
|
60
|
+
.pipe(map(resources => this.listActions.loadPageSuccess({
|
|
61
|
+
resources,
|
|
62
|
+
pagingOptions
|
|
63
|
+
})), catchError((errors) => of(this.listActions.loadPageFailure({ errors }))));
|
|
64
|
+
})));
|
|
65
|
+
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 })))))));
|
|
66
|
+
this.showRemovalsDialog$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.showRemovalsConfirmation), switchMap(() => {
|
|
67
|
+
return this.notificationService.openConfirmationDialog({
|
|
68
|
+
message: this.texts.deleteConfirmationMessage,
|
|
69
|
+
title: this.texts.deleteConfirmationTitle
|
|
70
|
+
});
|
|
71
|
+
}), filter(confirmed => confirmed), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), map(([, resourceIds]) => this.listActions.delete({ resourceIds }))));
|
|
72
|
+
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 })))))));
|
|
73
|
+
this.deleteUsersSuccess$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.deleteSuccess), tap(() => {
|
|
74
|
+
this.snackBar.open(this.texts.deletedMessage, 'Ok');
|
|
75
|
+
})), { dispatch: false });
|
|
76
|
+
this.copySelected$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.copySelected), withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))), tap(([, resourceIds]) => {
|
|
77
|
+
this.router.navigate([resourceIds[0]], { state: { selectedResourceId: resourceIds[0] } });
|
|
78
|
+
})), { dispatch: false });
|
|
79
|
+
this.navigateToSelected$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.navigateToSelected), tap(action => {
|
|
80
|
+
this.router.navigate([action.resourceId]);
|
|
81
|
+
})), { dispatch: false });
|
|
82
|
+
this.errorsHandler$ = createEffect(() => this.actions$.pipe(ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure), tap(({ errors }) => {
|
|
83
|
+
this.notificationService.onListErrors(errors);
|
|
84
|
+
})), { dispatch: false });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function createListActions(featureName) {
|
|
89
|
+
const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);
|
|
90
|
+
const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);
|
|
91
|
+
const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);
|
|
92
|
+
const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);
|
|
93
|
+
const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);
|
|
94
|
+
const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);
|
|
95
|
+
const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);
|
|
96
|
+
const changePageSize = createAction(`[${featureName} Page] Change ${featureName} Page Size`, props());
|
|
97
|
+
const changePagingOptions = createAction(`[${featureName} Page] Change ${featureName} Page Options`, props());
|
|
98
|
+
const changeSorting = createAction(`[${featureName} Page] Change ${featureName} Sorting`, props());
|
|
99
|
+
const changeFiltering = createAction(`[${featureName} Page] Change ${featureName} Filtering`, props());
|
|
100
|
+
const changeSelected = createAction(`[${featureName} Page] Change Selected ${featureName}`, props());
|
|
101
|
+
const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props());
|
|
102
|
+
const loadPageSuccess = createAction(`[${featureName} Page] Load ${featureName} Page Success`, props());
|
|
103
|
+
const loadPageFailure = createAction(`[${featureName} Page] Load ${featureName} Page Failure`, props());
|
|
104
|
+
const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props());
|
|
105
|
+
const deleteSuccess = createAction(`[${featureName} Page] Delete ${featureName} Success`, props());
|
|
106
|
+
const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props());
|
|
107
|
+
const patch = createAction(`[${featureName} Page] Patch ${featureName}`, props());
|
|
108
|
+
const patchSuccess = createAction(`[${featureName} Page] Patch ${featureName} Success`, props());
|
|
109
|
+
const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props());
|
|
110
|
+
const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);
|
|
111
|
+
const copySelected = createAction(`[${featureName} Page] Copy Selected ${featureName}`);
|
|
112
|
+
const navigateToSelected = createAction(`[${featureName} Page] Navigate to selected ${featureName}`, props());
|
|
113
|
+
const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);
|
|
114
|
+
return {
|
|
115
|
+
initializeRequestOptions,
|
|
116
|
+
changePageSize,
|
|
117
|
+
changeSorting,
|
|
118
|
+
changeFiltering,
|
|
119
|
+
loadNextPage,
|
|
120
|
+
loadPage,
|
|
121
|
+
refresh,
|
|
122
|
+
initialize,
|
|
123
|
+
reinitialize,
|
|
124
|
+
loadPreviousPage,
|
|
125
|
+
loadFirstPage,
|
|
126
|
+
changeSelected,
|
|
127
|
+
loadPageSuccess,
|
|
128
|
+
loadPageFailure,
|
|
129
|
+
delete: deleteAction,
|
|
130
|
+
deleteSuccess,
|
|
131
|
+
deleteFailure,
|
|
132
|
+
patch,
|
|
133
|
+
patchSuccess,
|
|
134
|
+
patchFailure,
|
|
135
|
+
resetRequestState,
|
|
136
|
+
copySelected,
|
|
137
|
+
navigateToSelected,
|
|
138
|
+
changePagingOptions,
|
|
139
|
+
showRemovalsConfirmation
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function createListEntityAdapter(idKey = 'id') {
|
|
144
|
+
return createEntityAdapter({
|
|
145
|
+
selectId: resource => resource[idKey]
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function createListReducer(entityAdapter, actions, actionHandlers, initialListState) {
|
|
149
|
+
const initialState = { ...createInitialListState(entityAdapter), ...initialListState };
|
|
150
|
+
return createReducer(initialState, ...createListActionHandlers(initialState, entityAdapter, actions), ...(actionHandlers || []));
|
|
151
|
+
}
|
|
152
|
+
function createInitialListState(entityAdapter) {
|
|
153
|
+
return entityAdapter.getInitialState({
|
|
154
|
+
...DEFAULT_REQUEST_OPTIONS,
|
|
155
|
+
lastPageNumber: undefined,
|
|
156
|
+
selectedResourceIds: [],
|
|
157
|
+
loadingState: RequestState.IDLE,
|
|
158
|
+
requestState: RequestState.IDLE,
|
|
159
|
+
errors: undefined
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function createListActionHandlers(initialListState, entityAdapter, actions) {
|
|
163
|
+
return [
|
|
164
|
+
on(actions.reinitialize, () => initialListState),
|
|
165
|
+
on(actions.initialize, (state) => entityAdapter.removeAll({
|
|
166
|
+
...state,
|
|
167
|
+
selectedResourceIds: [],
|
|
168
|
+
pagingOptions: {
|
|
169
|
+
...state.pagingOptions,
|
|
170
|
+
page: 1
|
|
171
|
+
}
|
|
172
|
+
})),
|
|
173
|
+
on(actions.refresh, (state) => {
|
|
174
|
+
const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;
|
|
175
|
+
const resourceIds = state.ids.slice(currentPageStartIndex);
|
|
176
|
+
return entityAdapter.removeMany(resourceIds, state);
|
|
177
|
+
}),
|
|
178
|
+
on(actions.changePageSize, (state, { pageSize }) => ({
|
|
179
|
+
...state,
|
|
180
|
+
pagingOptions: { ...state.pagingOptions, pageSize },
|
|
181
|
+
lastPageNumber: undefined
|
|
182
|
+
})),
|
|
183
|
+
on(actions.changeSorting, (state, { sortingField }) => {
|
|
184
|
+
const sortingOptions = { ...state.sortingOptions };
|
|
185
|
+
if (sortingField.direction === SortingDirection.NONE) {
|
|
186
|
+
delete sortingOptions[sortingField.field];
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
sortingOptions[sortingField.field] = sortingField;
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
...state,
|
|
193
|
+
sortingOptions
|
|
194
|
+
};
|
|
195
|
+
}),
|
|
196
|
+
on(actions.changeFiltering, (state, { filteringOptions }) => ({
|
|
197
|
+
...state,
|
|
198
|
+
filteringOptions,
|
|
199
|
+
lastPageNumber: undefined
|
|
200
|
+
})),
|
|
201
|
+
on(actions.changeSelected, (state, { selectedResourceIds }) => ({
|
|
202
|
+
...state,
|
|
203
|
+
selectedResourceIds
|
|
204
|
+
})),
|
|
205
|
+
on(actions.loadFirstPage, (state) => ({
|
|
206
|
+
...state,
|
|
207
|
+
pagingOptions: { ...state.pagingOptions, page: 1 }
|
|
208
|
+
})),
|
|
209
|
+
on(actions.loadNextPage, (state) => {
|
|
210
|
+
if (state.pagingOptions.page === state.lastPageNumber) {
|
|
211
|
+
return { ...state };
|
|
212
|
+
}
|
|
213
|
+
if (state.pagingOptions.page + 1 === state.lastPageNumber &&
|
|
214
|
+
state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2) {
|
|
215
|
+
const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize);
|
|
216
|
+
state = entityAdapter.removeMany(resourceIds, { ...state });
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
...state,
|
|
220
|
+
pagingOptions: {
|
|
221
|
+
...state.pagingOptions,
|
|
222
|
+
page: state.pagingOptions.page + 1
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
}),
|
|
226
|
+
on(actions.loadPreviousPage, (state) => {
|
|
227
|
+
if (state.pagingOptions.page === 1) {
|
|
228
|
+
return { ...state };
|
|
229
|
+
}
|
|
230
|
+
return {
|
|
231
|
+
...state,
|
|
232
|
+
pagingOptions: {
|
|
233
|
+
...state.pagingOptions,
|
|
234
|
+
page: state.pagingOptions.page - 1
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
}),
|
|
238
|
+
on(actions.loadPageSuccess, (state, { resources, pagingOptions }) => {
|
|
239
|
+
if (pagingOptions.page < state.pagingOptions.page) {
|
|
240
|
+
return createPreviousPageSuccessState(entityAdapter, state, resources);
|
|
241
|
+
}
|
|
242
|
+
return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);
|
|
243
|
+
}),
|
|
244
|
+
on(actions.deleteSuccess, (state) => ({
|
|
245
|
+
...state,
|
|
246
|
+
selectedResourceIds: []
|
|
247
|
+
})),
|
|
248
|
+
on(actions.navigateToSelected, (state, { resourceId }) => ({
|
|
249
|
+
...state,
|
|
250
|
+
currentResourceId: resourceId
|
|
251
|
+
})),
|
|
252
|
+
...createLoadingStateActionHandlers(actions.loadPage, actions.loadPageSuccess, actions.loadPageFailure),
|
|
253
|
+
...createRequestStateActionHandlers(undefined, actions.delete, actions.deleteSuccess, actions.deleteFailure),
|
|
254
|
+
...createRequestStateActionHandlers(actions.resetRequestState, actions.patch, actions.patchSuccess, actions.patchFailure)
|
|
255
|
+
];
|
|
256
|
+
}
|
|
257
|
+
function createPreviousPageSuccessState(entityAdapter, state, resources) {
|
|
258
|
+
const resourceIds = state.ids.slice(0, (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize);
|
|
259
|
+
return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], {
|
|
260
|
+
...state,
|
|
261
|
+
selectedResourceIds: []
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
function createNextPageSuccessState(entityAdapter, state, pagingOptions, resources) {
|
|
265
|
+
let resourceIds = [];
|
|
266
|
+
const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;
|
|
267
|
+
if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {
|
|
268
|
+
resourceIds = state.ids.slice(0, state.pagingOptions.pageSize);
|
|
269
|
+
state = entityAdapter.removeMany(resourceIds, { ...state });
|
|
270
|
+
}
|
|
271
|
+
return entityAdapter.addMany(resources, {
|
|
272
|
+
...state,
|
|
273
|
+
lastPageNumber,
|
|
274
|
+
selectedResourceIds: []
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
279
|
+
function createListSelectors(entityAdapter, getListState) {
|
|
280
|
+
const getAll = createSelector(getListState, entityAdapter.getSelectors().selectAll);
|
|
281
|
+
const getPagingOptions = createSelector(getListState, state => state.pagingOptions);
|
|
282
|
+
const getRequestOptions = createSelector(getListState, (state) => ({
|
|
283
|
+
pagingOptions: state.pagingOptions,
|
|
284
|
+
sortingOptions: state.sortingOptions,
|
|
285
|
+
filteringOptions: state.filteringOptions
|
|
286
|
+
}));
|
|
287
|
+
const getLastPageNumber = createSelector(getListState, state => state.lastPageNumber);
|
|
288
|
+
const isLastPage = createSelector(getPagingOptions, getLastPageNumber, ({ page }, lastPageNumber) => {
|
|
289
|
+
return lastPageNumber <= page;
|
|
290
|
+
});
|
|
291
|
+
const getCurrentPageData = createSelector(getPagingOptions, getAll, ({ page, pageSize }, resources) => {
|
|
292
|
+
const defaultStoredPageIndex = (DEFAULT_STORED_PAGES + 1) / 2;
|
|
293
|
+
if (page < defaultStoredPageIndex) {
|
|
294
|
+
return resources.slice((page - 1) * pageSize, page * pageSize);
|
|
295
|
+
}
|
|
296
|
+
return resources.slice((defaultStoredPageIndex - 1) * pageSize, defaultStoredPageIndex * pageSize);
|
|
297
|
+
});
|
|
298
|
+
const getSortingOptions = createSelector(getListState, state => state.sortingOptions);
|
|
299
|
+
const getFilteringOptions = createSelector(getListState, state => state.filteringOptions);
|
|
300
|
+
const getCurrentPageNumber = createSelector(getPagingOptions, options => options.page);
|
|
301
|
+
const getSelectedResourceIds = createSelector(getListState, state => state.selectedResourceIds);
|
|
302
|
+
const getLoadingState = createSelector(getListState, state => state.loadingState);
|
|
303
|
+
const getSelected = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.map(selectedResourceId => resources[selectedResourceId]));
|
|
304
|
+
const getSelectionRecord = createSelector(getSelectedResourceIds, createSelector(getListState, entityAdapter.getSelectors().selectEntities), (selectedResourceIds, resources) => selectedResourceIds.reduce((selected, selectedResourceId) => {
|
|
305
|
+
selected[selectedResourceId] = resources[selectedResourceId];
|
|
306
|
+
return selected;
|
|
307
|
+
}, {}));
|
|
308
|
+
const getRequestState = createSelector(getListState, state => state.requestState);
|
|
309
|
+
const getErrors = createSelector(getListState, state => state.errors);
|
|
310
|
+
const isReady = createSelector(getAll, getLoadingState, (users, loadingState) => !!users && loadingState === RequestState.SUCCESS);
|
|
311
|
+
const areSelectedReady = createSelector(getSelectedResourceIds, getSelectionRecord, getLoadingState, (selectedResourceIds, resources, loadingState) => {
|
|
312
|
+
return selectedResourceIds.every(resourceId => !!resources[resourceId]) && loadingState === RequestState.SUCCESS;
|
|
313
|
+
});
|
|
314
|
+
const isDeleteDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => !selectedResourceIds.length);
|
|
315
|
+
const isCopyDisabled = createSelector(getSelectedResourceIds, selectedResourceIds => selectedResourceIds.length !== 1);
|
|
316
|
+
const getTotalCount = createSelector(getPagingOptions, isLastPage, getCurrentPageData, (pagingOptions, isLastPage, currentPageData) => {
|
|
317
|
+
if (isLastPage) {
|
|
318
|
+
return (pagingOptions.page - 1) * pagingOptions.pageSize + currentPageData.length;
|
|
319
|
+
}
|
|
320
|
+
return (pagingOptions.page + 1) * pagingOptions.pageSize;
|
|
321
|
+
});
|
|
322
|
+
return {
|
|
323
|
+
getAll,
|
|
324
|
+
getRequestOptions,
|
|
325
|
+
isLastPage,
|
|
326
|
+
getCurrentPageData,
|
|
327
|
+
getPagingOptions,
|
|
328
|
+
getSortingOptions,
|
|
329
|
+
getFilteringOptions,
|
|
330
|
+
getCurrentPageNumber,
|
|
331
|
+
getLastPageNumber,
|
|
332
|
+
getLoadingState,
|
|
333
|
+
getSelectedResourceIds,
|
|
334
|
+
getSelected,
|
|
335
|
+
getSelectionRecord,
|
|
336
|
+
getRequestState,
|
|
337
|
+
getErrors,
|
|
338
|
+
areSelectedReady,
|
|
339
|
+
isReady,
|
|
340
|
+
isDeleteDisabled,
|
|
341
|
+
isCopyDisabled,
|
|
342
|
+
getTotalCount
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Generated bundle index. Do not edit.
|
|
348
|
+
*/
|
|
349
|
+
|
|
350
|
+
export { AbstractListEffects, createListActions, createListEntityAdapter, createListReducer, createListSelectors };
|
|
351
|
+
//# sourceMappingURL=ngdux-list.mjs.map
|
|
@@ -0,0 +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/ngdux-list.ts"],"sourcesContent":["import { MatSnackBar } from '@angular/material/snack-bar';\nimport { Router } from '@angular/router';\nimport {\n FilteringOptions,\n ListNotificationService,\n ListService,\n PagingOptions,\n SortingOptions\n} from '@ngdux/data-model-common';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { createAction, select, Store } from '@ngrx/store';\nimport { of } from 'rxjs';\nimport { catchError, concatMap, exhaustMap, filter, map, switchMap, tap, withLatestFrom } from 'rxjs/operators';\n\nimport { ListActions, ListSelectors } from '../models/list.model';\n\nexport abstract class AbstractListEffects<T, E, S = T> {\n texts = {\n deleteConfirmationTitle: 'Delete resources',\n deleteConfirmationMessage: 'Are you sure to delete the selected resources?',\n deletedMessage: 'The resources were deleted successfully.'\n };\n\n initialize$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.initialize, this.listActions.reinitialize),\n switchMap(() => {\n return [this.listActions.loadPage({ pageNumber: 1 }), this.listActions.loadPage({ pageNumber: 2 })];\n })\n )\n );\n\n loadPreviousPage$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.loadPreviousPage),\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\n filter(([, currentPageNumber]) => currentPageNumber > 1),\n map(([, currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber - 1 }))\n )\n );\n\n loadNextPage$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.loadNextPage),\n withLatestFrom(\n this.store.pipe(select(this.listSelectors.isLastPage)),\n this.store.pipe(select(this.listSelectors.getCurrentPageNumber))\n ),\n filter(([, isLastPage]) => !isLastPage),\n map(([, , currentPageNumber]) => this.listActions.loadPage({ pageNumber: currentPageNumber + 1 }))\n )\n );\n\n refresh$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.refresh),\n withLatestFrom(this.store.pipe(select(this.listSelectors.getCurrentPageNumber))),\n switchMap(([, currentPageNumber]) => [\n this.listActions.loadPage({ pageNumber: currentPageNumber }),\n this.listActions.loadPage({ pageNumber: currentPageNumber + 1 })\n ])\n )\n );\n\n changePagingOptions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.changePagingOptions),\n withLatestFrom(this.store.pipe(select(this.listSelectors.getPagingOptions))),\n map(([action, pagingOptions]) => {\n if (action.pagingOptions.pageSize !== pagingOptions.pageSize) {\n return this.listActions.changePageSize({ pageSize: action.pagingOptions.pageSize });\n } else if (action.pagingOptions.page === pagingOptions.page + 1) {\n return this.listActions.loadNextPage();\n } else if (action.pagingOptions.page === pagingOptions.page - 1) {\n return this.listActions.loadPreviousPage();\n } else if (action.pagingOptions.page === 1) {\n return this.listActions.loadFirstPage();\n }\n\n return createAction('Not implement page options action');\n })\n )\n );\n\n changeRequestOptions$ = createEffect(() =>\n this.actions$.pipe(\n ofType(\n this.listActions.changePageSize,\n this.listActions.changeSorting,\n this.listActions.changeFiltering,\n this.listActions.loadFirstPage\n ),\n map(() => this.listActions.initialize())\n )\n );\n\n loadPage$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.loadPage),\n withLatestFrom(\n this.store.pipe(select(this.listSelectors.getPagingOptions)),\n this.store.pipe(select(this.listSelectors.getSortingOptions)),\n this.store.pipe(select(this.listSelectors.getFilteringOptions))\n ),\n concatMap(\n ([{ pageNumber }, pagingOptions, sortingOptions, filteringOptions]: [\n { pageNumber: number },\n PagingOptions,\n SortingOptions,\n FilteringOptions\n ]) => {\n pagingOptions = {\n page: pageNumber,\n pageSize: pagingOptions.pageSize\n };\n\n return this.service\n .queryResources({\n pagingOptions,\n sortingOptions,\n filteringOptions\n })\n .pipe(\n map(resources =>\n this.listActions.loadPageSuccess({\n resources,\n pagingOptions\n })\n ),\n catchError((errors: E) => of(this.listActions.loadPageFailure({ errors })))\n );\n }\n )\n )\n );\n\n patch$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.patch),\n exhaustMap(action =>\n this.service.patchResources(action.resourceIds, action.resource).pipe(\n switchMap(resources => [this.listActions.patchSuccess({ resources }), this.listActions.refresh()]),\n catchError((errors: E) => of(this.listActions.patchFailure({ errors })))\n )\n )\n )\n );\n\n showRemovalsDialog$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.showRemovalsConfirmation),\n switchMap(() => {\n return this.notificationService.openConfirmationDialog({\n message: this.texts.deleteConfirmationMessage,\n title: this.texts.deleteConfirmationTitle\n });\n }),\n filter(confirmed => confirmed),\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\n map(([, resourceIds]) => this.listActions.delete({ resourceIds }))\n )\n );\n\n delete$ = createEffect(() =>\n this.actions$.pipe(\n ofType(this.listActions.delete),\n exhaustMap(({ resourceIds }) =>\n this.service.deleteResources(resourceIds).pipe(\n switchMap(() => [this.listActions.deleteSuccess({ resourceIds }), this.listActions.refresh()]),\n catchError((errors: E) => of(this.listActions.deleteFailure({ errors })))\n )\n )\n )\n );\n\n deleteUsersSuccess$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(this.listActions.deleteSuccess),\n tap(() => {\n this.snackBar.open(this.texts.deletedMessage, 'Ok');\n })\n ),\n { dispatch: false }\n );\n\n copySelected$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(this.listActions.copySelected),\n withLatestFrom(this.store.pipe(select(this.listSelectors.getSelectedResourceIds))),\n tap(([, resourceIds]) => {\n this.router.navigate([resourceIds[0]], { state: { selectedResourceId: resourceIds[0] } });\n })\n ),\n { dispatch: false }\n );\n\n navigateToSelected$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(this.listActions.navigateToSelected),\n tap(action => {\n this.router.navigate([action.resourceId]);\n })\n ),\n { dispatch: false }\n );\n\n errorsHandler$ = createEffect(\n () =>\n this.actions$.pipe(\n ofType(this.listActions.loadPageFailure, this.listActions.deleteFailure, this.listActions.patchFailure),\n tap(({ errors }) => {\n this.notificationService.onListErrors(errors);\n })\n ),\n { dispatch: false }\n );\n\n protected constructor(\n protected readonly router: Router,\n protected readonly actions$: Actions,\n protected readonly store: Store,\n protected readonly snackBar: MatSnackBar,\n private readonly service: ListService<T, S>,\n private readonly listActions: ListActions<T, E, S>,\n private readonly listSelectors: ListSelectors<S, E>,\n private readonly notificationService: ListNotificationService<E>\n ) {}\n}\n","import { ErrorDto, FilteringOptions, PagingOptions, SortingField } from '@ngdux/data-model-common';\nimport { createAction, props } from '@ngrx/store';\nimport { ListActions } from '../models/list.model';\n\nexport function createListActions<T, E, S = T>(featureName: string): ListActions<T, E, S> {\n const initializeRequestOptions = createAction(`[${featureName} Page] Initialize ${featureName} Request Options`);\n const refresh = createAction(`[${featureName} Page] Refresh ${featureName}`);\n const initialize = createAction(`[${featureName} Page] Initialize ${featureName}`);\n const reinitialize = createAction(`[Organization ${featureName} Page] Reinitialize ${featureName}`);\n\n const loadNextPage = createAction(`[${featureName} Page] Load Next ${featureName} Page`);\n const loadPreviousPage = createAction(`[${featureName} Page] Load Previous ${featureName} Page`);\n const loadFirstPage = createAction(`[${featureName} Page] Load First ${featureName} Page`);\n\n const changePageSize = createAction(\n `[${featureName} Page] Change ${featureName} Page Size`,\n props<{ pageSize: number }>()\n );\n\n const changePagingOptions = createAction(\n `[${featureName} Page] Change ${featureName} Page Options`,\n props<{ pagingOptions: PagingOptions }>()\n );\n const changeSorting = createAction(\n `[${featureName} Page] Change ${featureName} Sorting`,\n props<{ sortingField: SortingField }>()\n );\n const changeFiltering = createAction(\n `[${featureName} Page] Change ${featureName} Filtering`,\n props<{ filteringOptions: FilteringOptions }>()\n );\n const changeSelected = createAction(\n `[${featureName} Page] Change Selected ${featureName}`,\n props<{ selectedResourceIds: string[] }>()\n );\n\n const loadPage = createAction(`[${featureName} Page] Load ${featureName} Page`, props<{ pageNumber: number }>());\n const loadPageSuccess = createAction(\n `[${featureName} Page] Load ${featureName} Page Success`,\n props<{ resources: S[]; pagingOptions: PagingOptions }>()\n );\n const loadPageFailure = createAction(\n `[${featureName} Page] Load ${featureName} Page Failure`,\n props<{ errors: E }>()\n );\n\n const deleteAction = createAction(`[${featureName} Page] Delete ${featureName}`, props<{ resourceIds: string[] }>());\n const deleteSuccess = createAction(\n `[${featureName} Page] Delete ${featureName} Success`,\n props<{ resourceIds: string[] }>()\n );\n const deleteFailure = createAction(`[${featureName} Page] Delete ${featureName} Failure`, props<{ errors: E }>());\n\n const patch = createAction(\n `[${featureName} Page] Patch ${featureName}`,\n props<{ resourceIds: string[]; resource: Partial<T> }>()\n );\n const patchSuccess = createAction(\n `[${featureName} Page] Patch ${featureName} Success`,\n props<{ resources: (T | ErrorDto)[] }>()\n );\n const patchFailure = createAction(`[${featureName} Page] Patch ${featureName} Failure`, props<{ errors: E }>());\n const resetRequestState = createAction(`[${featureName} Page] Reset ${featureName} Request State`);\n const copySelected = createAction(`[${featureName} Page] Copy Selected ${featureName}`);\n const navigateToSelected = createAction(\n `[${featureName} Page] Navigate to selected ${featureName}`,\n props<{ resourceId: string }>()\n );\n\n const showRemovalsConfirmation = createAction(`[${featureName} Page] Show ${featureName} Removal Confirmation`);\n\n return {\n initializeRequestOptions,\n changePageSize,\n changeSorting,\n changeFiltering,\n loadNextPage,\n loadPage,\n refresh,\n initialize,\n reinitialize,\n loadPreviousPage,\n loadFirstPage,\n changeSelected,\n loadPageSuccess,\n loadPageFailure,\n delete: deleteAction,\n deleteSuccess,\n deleteFailure,\n patch,\n patchSuccess,\n patchFailure,\n resetRequestState,\n copySelected,\n navigateToSelected,\n changePagingOptions,\n showRemovalsConfirmation\n };\n}\n","import {\n DEFAULT_REQUEST_OPTIONS,\n DEFAULT_STORED_PAGES,\n PagingOptions,\n RequestState,\n SortingDirection\n} from '@ngdux/data-model-common';\nimport {\n createLoadingStateActionHandlers,\n createRequestStateActionHandlers,\n getLastPageNumber\n} from '@ngdux/store-common';\nimport { createEntityAdapter, EntityAdapter } from '@ngrx/entity';\nimport { ActionReducer, createReducer, on, ReducerTypes } from '@ngrx/store';\nimport { ActionCreator } from '@ngrx/store/src/models';\n\nimport { ListActions, ListState } from '../models/list.model';\n\nexport function createListEntityAdapter<T extends { [key: string]: any }>(idKey = 'id'): EntityAdapter<T> {\n return createEntityAdapter({\n selectId: resource => resource[idKey]\n });\n}\n\nexport function createListReducer<T, E, S = T>(\n entityAdapter: EntityAdapter<S>,\n actions: ListActions<T, E, S>,\n actionHandlers?: ReducerTypes<ListState<S, E>, ActionCreator[]>[],\n initialListState?: { [key: string]: unknown }\n): ActionReducer<ListState<S, E>> {\n const initialState: ListState<S, E> = { ...createInitialListState<S, E>(entityAdapter), ...initialListState };\n return createReducer<ListState<S, E>>(\n initialState,\n ...createListActionHandlers<T, E, S>(initialState, entityAdapter, actions),\n ...(actionHandlers || [])\n );\n}\n\nfunction createInitialListState<T, E>(entityAdapter: EntityAdapter<T>): ListState<T, E> {\n return entityAdapter.getInitialState({\n ...DEFAULT_REQUEST_OPTIONS,\n lastPageNumber: undefined,\n selectedResourceIds: [],\n loadingState: RequestState.IDLE,\n requestState: RequestState.IDLE,\n errors: undefined\n });\n}\n\nfunction createListActionHandlers<T, E, S>(\n initialListState: ListState<S, E>,\n entityAdapter: EntityAdapter<S>,\n actions: ListActions<T, E, S>\n): ReducerTypes<ListState<S, E>, ActionCreator[]>[] {\n return [\n on(actions.reinitialize, () => initialListState),\n on(actions.initialize, (state: ListState<S, E>) =>\n entityAdapter.removeAll({\n ...state,\n selectedResourceIds: [],\n pagingOptions: {\n ...state.pagingOptions,\n page: 1\n }\n })\n ),\n on(actions.refresh, (state: ListState<S, E>) => {\n const currentPageStartIndex = (state.pagingOptions.page - 1) * state.pagingOptions.pageSize;\n const resourceIds = state.ids.slice(currentPageStartIndex) as string[];\n\n return entityAdapter.removeMany(resourceIds, state);\n }),\n\n on(actions.changePageSize, (state: ListState<S, E>, { pageSize }) => ({\n ...state,\n pagingOptions: { ...state.pagingOptions, pageSize },\n lastPageNumber: undefined\n })),\n on(actions.changeSorting, (state: ListState<S, E>, { sortingField }) => {\n const sortingOptions = { ...state.sortingOptions };\n if (sortingField.direction === SortingDirection.NONE) {\n delete sortingOptions[sortingField.field];\n } else {\n sortingOptions[sortingField.field] = sortingField;\n }\n return {\n ...state,\n sortingOptions\n };\n }),\n on(actions.changeFiltering, (state: ListState<S, E>, { filteringOptions }) => ({\n ...state,\n filteringOptions,\n lastPageNumber: undefined\n })),\n on(actions.changeSelected, (state: ListState<S, E>, { selectedResourceIds }) => ({\n ...state,\n selectedResourceIds\n })),\n on(actions.loadFirstPage, (state: ListState<S, E>) => ({\n ...state,\n pagingOptions: { ...state.pagingOptions, page: 1 }\n })),\n on(actions.loadNextPage, (state: ListState<S, E>) => {\n if (state.pagingOptions.page === state.lastPageNumber) {\n return { ...state };\n }\n\n if (\n state.pagingOptions.page + 1 === state.lastPageNumber &&\n state.pagingOptions.page + 1 > (DEFAULT_STORED_PAGES + 1) / 2\n ) {\n const resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\n state = entityAdapter.removeMany(resourceIds, { ...state });\n }\n\n return {\n ...state,\n pagingOptions: {\n ...state.pagingOptions,\n page: state.pagingOptions.page + 1\n }\n };\n }),\n on(actions.loadPreviousPage, (state: ListState<S, E>) => {\n if (state.pagingOptions.page === 1) {\n return { ...state };\n }\n\n return {\n ...state,\n pagingOptions: {\n ...state.pagingOptions,\n page: state.pagingOptions.page - 1\n }\n };\n }),\n on(actions.loadPageSuccess, (state: ListState<S, E>, { resources, pagingOptions }) => {\n if (pagingOptions.page < state.pagingOptions.page) {\n return createPreviousPageSuccessState(entityAdapter, state, resources);\n }\n\n return createNextPageSuccessState(entityAdapter, state, pagingOptions, resources);\n }),\n on(actions.deleteSuccess, (state: ListState<S, E>) => ({\n ...state,\n selectedResourceIds: [] as string[]\n })),\n on(actions.navigateToSelected, (state: ListState<S, E>, { resourceId }) => ({\n ...state,\n currentResourceId: resourceId\n })),\n\n ...createLoadingStateActionHandlers<ListState<S, E>>(\n actions.loadPage,\n actions.loadPageSuccess,\n actions.loadPageFailure\n ),\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\n undefined,\n actions.delete,\n actions.deleteSuccess,\n actions.deleteFailure\n ),\n ...createRequestStateActionHandlers<ListState<S, E>, E>(\n actions.resetRequestState,\n actions.patch,\n actions.patchSuccess,\n actions.patchFailure\n )\n ];\n}\n\nfunction createPreviousPageSuccessState<T, E>(\n entityAdapter: EntityAdapter<T>,\n state: ListState<T, E>,\n resources: T[]\n): ListState<T, E> {\n const resourceIds: string[] = state.ids.slice(\n 0,\n (DEFAULT_STORED_PAGES - 1) * state.pagingOptions.pageSize\n ) as string[];\n\n return entityAdapter.setAll([...resources, ...resourceIds.map(resourceId => state.entities[resourceId])], {\n ...state,\n selectedResourceIds: []\n });\n}\n\nfunction createNextPageSuccessState<T, E>(\n entityAdapter: EntityAdapter<T>,\n state: ListState<T, E>,\n pagingOptions: PagingOptions,\n resources: T[]\n): ListState<T, E> {\n let resourceIds: string[] = [];\n const lastPageNumber = getLastPageNumber(resources, pagingOptions) || state.lastPageNumber;\n\n if (pagingOptions.page > DEFAULT_STORED_PAGES && lastPageNumber !== state.pagingOptions.page) {\n resourceIds = state.ids.slice(0, state.pagingOptions.pageSize) as string[];\n state = entityAdapter.removeMany(resourceIds, { ...state });\n }\n\n return entityAdapter.addMany(resources, {\n ...state,\n lastPageNumber,\n selectedResourceIds: []\n });\n}\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;MAgBsB,mBAAmB,CAAA;AA4MvC,IAAA,WAAA,CACqB,MAAc,EACd,QAAiB,EACjB,KAAY,EACZ,QAAqB,EACvB,OAA0B,EAC1B,WAAiC,EACjC,aAAkC,EAClC,mBAA+C,EAAA;QAP7C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAS;QACjB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QACvB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAmB;QAC1B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;QACjC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAqB;QAClC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAA4B;AAnNlE,QAAA,IAAA,CAAA,KAAK,GAAG;AACN,YAAA,uBAAuB,EAAE,kBAAkB;AAC3C,YAAA,yBAAyB,EAAE,gDAAgD;AAC3E,YAAA,cAAc,EAAE,0CAA0C;SAC3D,CAAC;AAEF,QAAA,IAAA,CAAA,WAAW,GAAG,YAAY,CAAC,MACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAClE,SAAS,CAAC,MAAK;YACb,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACrG,CAAC,CACH,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,iBAAiB,GAAG,YAAY,CAAC,MAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,EACzC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAChF,MAAM,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,iBAAiB,GAAG,CAAC,CAAC,EACxD,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,iBAAiB,GAAG,CAAC,EAAE,CAAC,CAAC,CACjG,CACF,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,YAAY,CAAC,MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EACrC,cAAc,CACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,EACtD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CACjE,EACD,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EACvC,GAAG,CAAC,CAAC,KAAK,iBAAiB,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,iBAAiB,GAAG,CAAC,EAAE,CAAC,CAAC,CACnG,CACF,CAAC;QAEF,IAAQ,CAAA,QAAA,GAAG,YAAY,CAAC,MACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAChC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAChF,SAAS,CAAC,CAAC,GAAG,iBAAiB,CAAC,KAAK;YACnC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AAC5D,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,iBAAiB,GAAG,CAAC,EAAE,CAAC;SACjE,CAAC,CACH,CACF,CAAC;QAEF,IAAoB,CAAA,oBAAA,GAAG,YAAY,CAAC,MAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAC5C,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAC5E,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,KAAI;YAC9B,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ,EAAE;AAC5D,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrF,aAAA;iBAAM,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE;AAC/D,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;AACxC,aAAA;iBAAM,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE;AAC/D,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;AAC5C,aAAA;AAAM,iBAAA,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE;AAC1C,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;AACzC,aAAA;AAED,YAAA,OAAO,YAAY,CAAC,mCAAmC,CAAC,CAAC;SAC1D,CAAC,CACH,CACF,CAAC;QAEF,IAAqB,CAAA,qBAAA,GAAG,YAAY,CAAC,MACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CACJ,IAAI,CAAC,WAAW,CAAC,cAAc,EAC/B,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,IAAI,CAAC,WAAW,CAAC,eAAe,EAChC,IAAI,CAAC,WAAW,CAAC,aAAa,CAC/B,EACD,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,CACzC,CACF,CAAC;AAEF,QAAA,IAAA,CAAA,SAAS,GAAG,YAAY,CAAC,MACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EACjC,cAAc,CACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,EAC7D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAChE,EACD,SAAS,CACP,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,CAKhE,KAAI;AACH,YAAA,aAAa,GAAG;AACd,gBAAA,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,aAAa,CAAC,QAAQ;aACjC,CAAC;YAEF,OAAO,IAAI,CAAC,OAAO;AAChB,iBAAA,cAAc,CAAC;gBACd,aAAa;gBACb,cAAc;gBACd,gBAAgB;aACjB,CAAC;AACD,iBAAA,IAAI,CACH,GAAG,CAAC,SAAS,IACX,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;gBAC/B,SAAS;gBACT,aAAa;aACd,CAAC,CACH,EACD,UAAU,CAAC,CAAC,MAAS,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAC5E,CAAC;SACL,CACF,CACF,CACF,CAAC;QAEF,IAAM,CAAA,MAAA,GAAG,YAAY,CAAC,MACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAC9B,UAAU,CAAC,MAAM,IACf,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CACnE,SAAS,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAClG,UAAU,CAAC,CAAC,MAAS,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CACzE,CACF,CACF,CACF,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAAC,MACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,EACjD,SAAS,CAAC,MAAK;AACb,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;AACrD,gBAAA,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB;AAC7C,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB;AAC1C,aAAA,CAAC,CAAC;SACJ,CAAC,EACF,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC,EAC9B,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAClF,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CACnE,CACF,CAAC;QAEF,IAAO,CAAA,OAAA,GAAG,YAAY,CAAC,MACrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAC/B,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,KACzB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,IAAI,CAC5C,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,EAC9F,UAAU,CAAC,CAAC,MAAS,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAC1E,CACF,CACF,CACF,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAChC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EACtC,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;SACrD,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAa,CAAA,aAAA,GAAG,YAAY,CAC1B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EACrC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAClF,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,KAAI;YACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC3F,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;QAEF,IAAmB,CAAA,mBAAA,GAAG,YAAY,CAChC,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAC3C,GAAG,CAAC,MAAM,IAAG;YACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;SAC3C,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;AAEF,QAAA,IAAA,CAAA,cAAc,GAAG,YAAY,CAC3B,MACE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,EACvG,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAI;AACjB,YAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC/C,CAAC,CACH,EACH,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;KAWE;AACL;;AClOK,SAAU,iBAAiB,CAAc,WAAmB,EAAA;IAChE,MAAM,wBAAwB,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAqB,kBAAA,EAAA,WAAW,CAAkB,gBAAA,CAAA,CAAC,CAAC;IACjH,MAAM,OAAO,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAkB,eAAA,EAAA,WAAW,CAAE,CAAA,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAqB,kBAAA,EAAA,WAAW,CAAE,CAAA,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,YAAY,CAAC,CAAA,cAAA,EAAiB,WAAW,CAAuB,oBAAA,EAAA,WAAW,CAAE,CAAA,CAAC,CAAC;IAEpG,MAAM,YAAY,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAoB,iBAAA,EAAA,WAAW,CAAO,KAAA,CAAA,CAAC,CAAC;IACzF,MAAM,gBAAgB,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAwB,qBAAA,EAAA,WAAW,CAAO,KAAA,CAAA,CAAC,CAAC;IACjG,MAAM,aAAa,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAqB,kBAAA,EAAA,WAAW,CAAO,KAAA,CAAA,CAAC,CAAC;AAE3F,IAAA,MAAM,cAAc,GAAG,YAAY,CACjC,CAAI,CAAA,EAAA,WAAW,CAAiB,cAAA,EAAA,WAAW,CAAY,UAAA,CAAA,EACvD,KAAK,EAAwB,CAC9B,CAAC;AAEF,IAAA,MAAM,mBAAmB,GAAG,YAAY,CACtC,CAAI,CAAA,EAAA,WAAW,CAAiB,cAAA,EAAA,WAAW,CAAe,aAAA,CAAA,EAC1D,KAAK,EAAoC,CAC1C,CAAC;AACF,IAAA,MAAM,aAAa,GAAG,YAAY,CAChC,CAAI,CAAA,EAAA,WAAW,CAAiB,cAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EACrD,KAAK,EAAkC,CACxC,CAAC;AACF,IAAA,MAAM,eAAe,GAAG,YAAY,CAClC,CAAI,CAAA,EAAA,WAAW,CAAiB,cAAA,EAAA,WAAW,CAAY,UAAA,CAAA,EACvD,KAAK,EAA0C,CAChD,CAAC;AACF,IAAA,MAAM,cAAc,GAAG,YAAY,CACjC,CAAI,CAAA,EAAA,WAAW,CAA0B,uBAAA,EAAA,WAAW,CAAE,CAAA,EACtD,KAAK,EAAqC,CAC3C,CAAC;AAEF,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAe,YAAA,EAAA,WAAW,CAAO,KAAA,CAAA,EAAE,KAAK,EAA0B,CAAC,CAAC;AACjH,IAAA,MAAM,eAAe,GAAG,YAAY,CAClC,CAAI,CAAA,EAAA,WAAW,CAAe,YAAA,EAAA,WAAW,CAAe,aAAA,CAAA,EACxD,KAAK,EAAoD,CAC1D,CAAC;AACF,IAAA,MAAM,eAAe,GAAG,YAAY,CAClC,CAAI,CAAA,EAAA,WAAW,CAAe,YAAA,EAAA,WAAW,CAAe,aAAA,CAAA,EACxD,KAAK,EAAiB,CACvB,CAAC;AAEF,IAAA,MAAM,YAAY,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAiB,cAAA,EAAA,WAAW,CAAE,CAAA,EAAE,KAAK,EAA6B,CAAC,CAAC;AACrH,IAAA,MAAM,aAAa,GAAG,YAAY,CAChC,CAAI,CAAA,EAAA,WAAW,CAAiB,cAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EACrD,KAAK,EAA6B,CACnC,CAAC;AACF,IAAA,MAAM,aAAa,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAiB,cAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAiB,CAAC,CAAC;AAElH,IAAA,MAAM,KAAK,GAAG,YAAY,CACxB,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAE,CAAA,EAC5C,KAAK,EAAmD,CACzD,CAAC;AACF,IAAA,MAAM,YAAY,GAAG,YAAY,CAC/B,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EACpD,KAAK,EAAmC,CACzC,CAAC;AACF,IAAA,MAAM,YAAY,GAAG,YAAY,CAAC,CAAI,CAAA,EAAA,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAU,QAAA,CAAA,EAAE,KAAK,EAAiB,CAAC,CAAC;IAChH,MAAM,iBAAiB,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAgB,aAAA,EAAA,WAAW,CAAgB,cAAA,CAAA,CAAC,CAAC;IACnG,MAAM,YAAY,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAwB,qBAAA,EAAA,WAAW,CAAE,CAAA,CAAC,CAAC;AACxF,IAAA,MAAM,kBAAkB,GAAG,YAAY,CACrC,CAAI,CAAA,EAAA,WAAW,CAA+B,4BAAA,EAAA,WAAW,CAAE,CAAA,EAC3D,KAAK,EAA0B,CAChC,CAAC;IAEF,MAAM,wBAAwB,GAAG,YAAY,CAAC,CAAA,CAAA,EAAI,WAAW,CAAe,YAAA,EAAA,WAAW,CAAuB,qBAAA,CAAA,CAAC,CAAC;IAEhH,OAAO;QACL,wBAAwB;QACxB,cAAc;QACd,aAAa;QACb,eAAe;QACf,YAAY;QACZ,QAAQ;QACR,OAAO;QACP,UAAU;QACV,YAAY;QACZ,gBAAgB;QAChB,aAAa;QACb,cAAc;QACd,eAAe;QACf,eAAe;AACf,QAAA,MAAM,EAAE,YAAY;QACpB,aAAa;QACb,aAAa;QACb,KAAK;QACL,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,YAAY;QACZ,kBAAkB;QAClB,mBAAmB;QACnB,wBAAwB;KACzB,CAAC;AACJ;;AChFgB,SAAA,uBAAuB,CAAmC,KAAK,GAAG,IAAI,EAAA;AACpF,IAAA,OAAO,mBAAmB,CAAC;QACzB,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC;AACtC,KAAA,CAAC,CAAC;AACL,CAAC;AAEK,SAAU,iBAAiB,CAC/B,aAA+B,EAC/B,OAA6B,EAC7B,cAAiE,EACjE,gBAA6C,EAAA;AAE7C,IAAA,MAAM,YAAY,GAAoB,EAAE,GAAG,sBAAsB,CAAO,aAAa,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC9G,OAAO,aAAa,CAClB,YAAY,EACZ,GAAG,wBAAwB,CAAU,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,EAC1E,IAAI,cAAc,IAAI,EAAE,CAAC,CAC1B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAO,aAA+B,EAAA;IACnE,OAAO,aAAa,CAAC,eAAe,CAAC;AACnC,QAAA,GAAG,uBAAuB;AAC1B,QAAA,cAAc,EAAE,SAAS;AACzB,QAAA,mBAAmB,EAAE,EAAE;QACvB,YAAY,EAAE,YAAY,CAAC,IAAI;QAC/B,YAAY,EAAE,YAAY,CAAC,IAAI;AAC/B,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA,CAAC,CAAC;AACL,CAAC;AAED,SAAS,wBAAwB,CAC/B,gBAAiC,EACjC,aAA+B,EAC/B,OAA6B,EAAA;IAE7B,OAAO;QACL,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChD,QAAA,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAsB,KAC5C,aAAa,CAAC,SAAS,CAAC;AACtB,YAAA,GAAG,KAAK;AACR,YAAA,mBAAmB,EAAE,EAAE;AACvB,YAAA,aAAa,EAAE;gBACb,GAAG,KAAK,CAAC,aAAa;AACtB,gBAAA,IAAI,EAAE,CAAC;AACR,aAAA;AACF,SAAA,CAAC,CACH;QACD,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAsB,KAAI;AAC7C,YAAA,MAAM,qBAAqB,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC;YAC5F,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAa,CAAC;YAEvE,OAAO,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AACtD,SAAC,CAAC;AAEF,QAAA,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAsB,EAAE,EAAE,QAAQ,EAAE,MAAM;AACpE,YAAA,GAAG,KAAK;YACR,aAAa,EAAE,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,QAAQ,EAAE;AACnD,YAAA,cAAc,EAAE,SAAS;AAC1B,SAAA,CAAC,CAAC;AACH,QAAA,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAsB,EAAE,EAAE,YAAY,EAAE,KAAI;YACrE,MAAM,cAAc,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;AACnD,YAAA,IAAI,YAAY,CAAC,SAAS,KAAK,gBAAgB,CAAC,IAAI,EAAE;AACpD,gBAAA,OAAO,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC3C,aAAA;AAAM,iBAAA;AACL,gBAAA,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;AACnD,aAAA;YACD,OAAO;AACL,gBAAA,GAAG,KAAK;gBACR,cAAc;aACf,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAsB,EAAE,EAAE,gBAAgB,EAAE,MAAM;AAC7E,YAAA,GAAG,KAAK;YACR,gBAAgB;AAChB,YAAA,cAAc,EAAE,SAAS;AAC1B,SAAA,CAAC,CAAC;AACH,QAAA,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,KAAsB,EAAE,EAAE,mBAAmB,EAAE,MAAM;AAC/E,YAAA,GAAG,KAAK;YACR,mBAAmB;AACpB,SAAA,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAsB,MAAM;AACrD,YAAA,GAAG,KAAK;YACR,aAAa,EAAE,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE;AACnD,SAAA,CAAC,CAAC;QACH,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,KAAsB,KAAI;YAClD,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,KAAK,CAAC,cAAc,EAAE;AACrD,gBAAA,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;AACrB,aAAA;YAED,IACE,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,cAAc;AACrD,gBAAA,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,EAC7D;AACA,gBAAA,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAa,CAAC;AACjF,gBAAA,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAC7D,aAAA;YAED,OAAO;AACL,gBAAA,GAAG,KAAK;AACR,gBAAA,aAAa,EAAE;oBACb,GAAG,KAAK,CAAC,aAAa;AACtB,oBAAA,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC;AACnC,iBAAA;aACF,CAAC;AACJ,SAAC,CAAC;QACF,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAsB,KAAI;AACtD,YAAA,IAAI,KAAK,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,EAAE;AAClC,gBAAA,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;AACrB,aAAA;YAED,OAAO;AACL,gBAAA,GAAG,KAAK;AACR,gBAAA,aAAa,EAAE;oBACb,GAAG,KAAK,CAAC,aAAa;AACtB,oBAAA,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC;AACnC,iBAAA;aACF,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,EAAE,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,KAAsB,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,KAAI;YACnF,IAAI,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE;gBACjD,OAAO,8BAA8B,CAAC,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACxE,aAAA;YAED,OAAO,0BAA0B,CAAC,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AACpF,SAAC,CAAC;QACF,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,KAAsB,MAAM;AACrD,YAAA,GAAG,KAAK;AACR,YAAA,mBAAmB,EAAE,EAAc;AACpC,SAAA,CAAC,CAAC;AACH,QAAA,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAsB,EAAE,EAAE,UAAU,EAAE,MAAM;AAC1E,YAAA,GAAG,KAAK;AACR,YAAA,iBAAiB,EAAE,UAAU;AAC9B,SAAA,CAAC,CAAC;AAEH,QAAA,GAAG,gCAAgC,CACjC,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,eAAe,EACvB,OAAO,CAAC,eAAe,CACxB;AACD,QAAA,GAAG,gCAAgC,CACjC,SAAS,EACT,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,aAAa,EACrB,OAAO,CAAC,aAAa,CACtB;AACD,QAAA,GAAG,gCAAgC,CACjC,OAAO,CAAC,iBAAiB,EACzB,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,YAAY,CACrB;KACF,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,aAA+B,EAC/B,KAAsB,EACtB,SAAc,EAAA;IAEd,MAAM,WAAW,GAAa,KAAK,CAAC,GAAG,CAAC,KAAK,CAC3C,CAAC,EACD,CAAC,oBAAoB,GAAG,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,QAAQ,CAC9C,CAAC;IAEd,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;AACxG,QAAA,GAAG,KAAK;AACR,QAAA,mBAAmB,EAAE,EAAE;AACxB,KAAA,CAAC,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CACjC,aAA+B,EAC/B,KAAsB,EACtB,aAA4B,EAC5B,SAAc,EAAA;IAEd,IAAI,WAAW,GAAa,EAAE,CAAC;AAC/B,IAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,aAAa,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC;AAE3F,IAAA,IAAI,aAAa,CAAC,IAAI,GAAG,oBAAoB,IAAI,cAAc,KAAK,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE;AAC5F,QAAA,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAa,CAAC;AAC3E,QAAA,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAC7D,KAAA;AAED,IAAA,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE;AACtC,QAAA,GAAG,KAAK;QACR,cAAc;AACd,QAAA,mBAAmB,EAAE,EAAE;AACxB,KAAA,CAAC,CAAC;AACL;;AChNA;AAMgB,SAAA,mBAAmB,CACjC,aAA+B,EAC/B,YAA4F,EAAA;AAE5F,IAAA,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;AAEpF,IAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IAEpF,MAAM,iBAAiB,GAAG,cAAc,CACtC,YAAY,EACZ,CAAC,KAAK,MAAsB;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;AACzC,KAAA,CAAC,CACH,CAAC;AAEF,IAAA,MAAM,iBAAiB,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AAEtF,IAAA,MAAM,UAAU,GAAG,cAAc,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,cAAc,KAAI;QAClG,OAAO,cAAc,IAAI,IAAI,CAAC;AAChC,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,kBAAkB,GAAG,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,SAAS,KAAI;QACpG,MAAM,sBAAsB,GAAG,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC;QAE9D,IAAI,IAAI,GAAG,sBAAsB,EAAE;AACjC,YAAA,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,QAAQ,EAAE,IAAI,GAAG,QAAQ,CAAC,CAAC;AAChE,SAAA;AAED,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,sBAAsB,GAAG,CAAC,IAAI,QAAQ,EAAE,sBAAsB,GAAG,QAAQ,CAAC,CAAC;AACrG,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,iBAAiB,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;AAEtF,IAAA,MAAM,mBAAmB,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAE1F,IAAA,MAAM,oBAAoB,GAAG,cAAc,CAAC,gBAAgB,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvF,IAAA,MAAM,sBAAsB,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAEhG,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAElF,IAAA,MAAM,WAAW,GAAG,cAAc,CAChC,sBAAsB,EACtB,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,EACzE,CAAC,mBAAmB,EAAE,SAAS,KAC7B,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAC/E,CAAC;AAEF,IAAA,MAAM,kBAAkB,GAAG,cAAc,CACvC,sBAAsB,EACtB,cAAc,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,EAAE,CAAC,cAAc,CAAC,EACzE,CAAC,mBAAmB,EAAE,SAAS,KAC7B,mBAAmB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,kBAAkB,KAAI;QAC1D,QAAQ,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;AAC7D,QAAA,OAAO,QAAQ,CAAC;AAClB,KAAC,EAAE,EAAuB,CAAC,CAC9B,CAAC;AAEF,IAAA,MAAM,eAAe,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAElF,IAAA,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAG,cAAc,CAC5B,MAAM,EACN,eAAe,EACf,CAAC,KAAK,EAAE,YAAY,KAAK,CAAC,CAAC,KAAK,IAAI,YAAY,KAAK,YAAY,CAAC,OAAO,CAC1E,CAAC;AAEF,IAAA,MAAM,gBAAgB,GAAG,cAAc,CACrC,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,CAAC,mBAAmB,EAAE,SAAS,EAAE,YAAY,KAAI;QAC/C,OAAO,mBAAmB,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,YAAY,KAAK,YAAY,CAAC,OAAO,CAAC;AACnH,KAAC,CACF,CAAC;AAEF,IAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,sBAAsB,EAAE,mBAAmB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAEpH,IAAA,MAAM,cAAc,GAAG,cAAc,CACnC,sBAAsB,EACtB,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,CACxD,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,cAAc,CAClC,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,CAAC,aAAa,EAAE,UAAU,EAAE,eAAe,KAAI;AAC7C,QAAA,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC;AACnF,SAAA;QACD,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC;AAC3D,KAAC,CACF,CAAC;IAEF,OAAO;QACL,MAAM;QACN,iBAAiB;QACjB,UAAU;QACV,kBAAkB;QAClB,gBAAgB;QAChB,iBAAiB;QACjB,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB;QACjB,eAAe;QACf,sBAAsB;QACtB,WAAW;QACX,kBAAkB;QAClB,eAAe;QACf,SAAS;QACT,gBAAgB;QAChB,OAAO;QACP,gBAAgB;QAChB,cAAc;QACd,aAAa;KACd,CAAC;AACJ;;AC9HA;;AAEG;;;;"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
2
|
+
import { Router } from '@angular/router';
|
|
3
|
+
import { ListNotificationService, ListService, PagingOptions } from '@ngdux/data-model-common';
|
|
4
|
+
import { Actions } from '@ngrx/effects';
|
|
5
|
+
import { Store } from '@ngrx/store';
|
|
6
|
+
import { ListActions, ListSelectors } from '../models/list.model';
|
|
7
|
+
export declare abstract class AbstractListEffects<T, E, S = T> {
|
|
8
|
+
protected readonly router: Router;
|
|
9
|
+
protected readonly actions$: Actions;
|
|
10
|
+
protected readonly store: Store;
|
|
11
|
+
protected readonly snackBar: MatSnackBar;
|
|
12
|
+
private readonly service;
|
|
13
|
+
private readonly listActions;
|
|
14
|
+
private readonly listSelectors;
|
|
15
|
+
private readonly notificationService;
|
|
16
|
+
texts: {
|
|
17
|
+
deleteConfirmationTitle: string;
|
|
18
|
+
deleteConfirmationMessage: string;
|
|
19
|
+
deletedMessage: string;
|
|
20
|
+
};
|
|
21
|
+
initialize$: import("rxjs").Observable<{
|
|
22
|
+
pageNumber: number;
|
|
23
|
+
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
24
|
+
loadPreviousPage$: import("rxjs").Observable<{
|
|
25
|
+
pageNumber: number;
|
|
26
|
+
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
27
|
+
loadNextPage$: import("rxjs").Observable<{
|
|
28
|
+
pageNumber: number;
|
|
29
|
+
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
30
|
+
refresh$: import("rxjs").Observable<{
|
|
31
|
+
pageNumber: number;
|
|
32
|
+
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
33
|
+
changePagingOptions$: import("rxjs").Observable<import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
34
|
+
changeRequestOptions$: import("rxjs").Observable<import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
35
|
+
loadPage$: import("rxjs").Observable<({
|
|
36
|
+
resources: S[];
|
|
37
|
+
pagingOptions: PagingOptions;
|
|
38
|
+
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
39
|
+
errors: E;
|
|
40
|
+
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
41
|
+
patch$: import("rxjs").Observable<import("@ngrx/store/src/models").TypedAction<string> | ({
|
|
42
|
+
errors: E;
|
|
43
|
+
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
44
|
+
showRemovalsDialog$: import("rxjs").Observable<{
|
|
45
|
+
resourceIds: string[];
|
|
46
|
+
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
47
|
+
delete$: import("rxjs").Observable<import("@ngrx/store/src/models").TypedAction<string> | ({
|
|
48
|
+
errors: E;
|
|
49
|
+
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
50
|
+
deleteUsersSuccess$: import("rxjs").Observable<{
|
|
51
|
+
resourceIds: string[];
|
|
52
|
+
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
53
|
+
copySelected$: import("rxjs").Observable<[import("@ngrx/store/src/models").TypedAction<string>, string[]]> & import("@ngrx/effects").CreateEffectMetadata;
|
|
54
|
+
navigateToSelected$: import("rxjs").Observable<{
|
|
55
|
+
resourceId: string;
|
|
56
|
+
} & import("@ngrx/store/src/models").TypedAction<string>> & import("@ngrx/effects").CreateEffectMetadata;
|
|
57
|
+
errorsHandler$: import("rxjs").Observable<({
|
|
58
|
+
errors: E;
|
|
59
|
+
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
60
|
+
errors: E;
|
|
61
|
+
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
62
|
+
errors: E;
|
|
63
|
+
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
64
|
+
protected constructor(router: Router, actions$: Actions, store: Store, snackBar: MatSnackBar, service: ListService<T, S>, listActions: ListActions<T, E, S>, listSelectors: ListSelectors<S, E>, notificationService: ListNotificationService<E>);
|
|
65
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EntityAdapter } from '@ngrx/entity';
|
|
2
|
+
import { ActionReducer, ReducerTypes } from '@ngrx/store';
|
|
3
|
+
import { ActionCreator } from '@ngrx/store/src/models';
|
|
4
|
+
import { ListActions, ListState } from '../models/list.model';
|
|
5
|
+
export declare function createListEntityAdapter<T extends {
|
|
6
|
+
[key: string]: any;
|
|
7
|
+
}>(idKey?: string): EntityAdapter<T>;
|
|
8
|
+
export declare function createListReducer<T, E, S = T>(entityAdapter: EntityAdapter<S>, actions: ListActions<T, E, S>, actionHandlers?: ReducerTypes<ListState<S, E>, ActionCreator[]>[], initialListState?: {
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}): ActionReducer<ListState<S, E>>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { EntityAdapter } from '@ngrx/entity';
|
|
2
|
+
import { DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';
|
|
3
|
+
import { ListSelectors, ListState } from '../models/list.model';
|
|
4
|
+
export declare function createListSelectors<T, E>(entityAdapter: EntityAdapter<T>, getListState: MemoizedSelector<object, ListState<T, E>, DefaultProjectorFn<ListState<T, E>>>): ListSelectors<T, E>;
|