@ngdux/form 3.0.1 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ngdux-form.mjs +118 -8
- package/fesm2022/ngdux-form.mjs.map +1 -1
- package/package.json +8 -10
- package/types/ngdux-form.d.ts +195 -0
- package/esm2022/index.mjs +0 -10
- package/esm2022/lib/+state/abstract-form-effects.mjs +0 -35
- package/esm2022/lib/+state/abstract-form-state.service.mjs +0 -39
- package/esm2022/lib/+state/abstract-form.facade.mjs +0 -29
- package/esm2022/lib/+state/form-actions.mjs +0 -32
- package/esm2022/lib/+state/form-reducer.mjs +0 -30
- package/esm2022/lib/+state/form-selectors.mjs +0 -17
- package/esm2022/lib/+state/form-state.mjs +0 -16
- package/esm2022/lib/models/form.model.mjs +0 -3
- package/esm2022/ngdux-form.mjs +0 -5
- package/index.d.ts +0 -9
- package/lib/+state/abstract-form-effects.d.ts +0 -41
- package/lib/+state/abstract-form-state.service.d.ts +0 -15
- package/lib/+state/abstract-form.facade.d.ts +0 -19
- package/lib/+state/form-actions.d.ts +0 -2
- package/lib/+state/form-reducer.d.ts +0 -3
- package/lib/+state/form-selectors.d.ts +0 -3
- package/lib/+state/form-state.d.ts +0 -7
- package/lib/models/form.model.d.ts +0 -79
package/fesm2022/ngdux-form.mjs
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { RequestState } from '@ngdux/data-model-common';
|
|
2
2
|
export { RequestState } from '@ngdux/data-model-common';
|
|
3
|
-
import { createEffect, ofType } from '@ngrx/effects';
|
|
4
|
-
import { of } from 'rxjs';
|
|
3
|
+
import { createEffect, ofType, Actions, provideEffects } from '@ngrx/effects';
|
|
4
|
+
import { of, switchMap as switchMap$1, map as map$1, catchError as catchError$1, exhaustMap as exhaustMap$1, tap as tap$1 } from 'rxjs';
|
|
5
5
|
import { switchMap, map, catchError, exhaustMap, tap } from 'rxjs/operators';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
|
-
import { InjectionToken, Injectable,
|
|
7
|
+
import { InjectionToken, Inject, Injectable, inject } from '@angular/core';
|
|
8
8
|
import * as i1 from '@ngrx/store';
|
|
9
|
-
import { createAction, props, createReducer, on, createSelector, createFeatureSelector, select } from '@ngrx/store';
|
|
9
|
+
import { createAction, props, createReducer, on, createSelector, createFeatureSelector, select, Store, provideState } from '@ngrx/store';
|
|
10
10
|
import { createRequestStateActionHandlers, createLoadingStateActionHandlers } from '@ngdux/store-common';
|
|
11
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated This class is deprecated and will be removed in a future release. Please use `createFormEffects` instead.
|
|
14
|
+
*/
|
|
12
15
|
class AbstractFormEffects {
|
|
13
16
|
constructor(actions$, store, service, formActions, notificationService) {
|
|
14
17
|
this.actions$ = actions$;
|
|
@@ -116,6 +119,9 @@ function createFormSelectors(getFormState) {
|
|
|
116
119
|
};
|
|
117
120
|
}
|
|
118
121
|
|
|
122
|
+
/**
|
|
123
|
+
* @deprecated This class is deprecated and will be removed in a future release.
|
|
124
|
+
*/
|
|
119
125
|
class AbstractFormReducerManager {
|
|
120
126
|
constructor(reducerManager, featureKey) {
|
|
121
127
|
this.reducerManager = reducerManager;
|
|
@@ -137,16 +143,19 @@ class AbstractFormReducerManager {
|
|
|
137
143
|
const getState = createFeatureSelector(this.featureKey);
|
|
138
144
|
return createFormSelectors(getState);
|
|
139
145
|
}
|
|
140
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
141
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
146
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormReducerManager, deps: [{ token: i1.ReducerManager }, { token: FORM_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
147
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormReducerManager }); }
|
|
142
148
|
}
|
|
143
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.4", ngImport: i0, type: AbstractFormReducerManager, decorators: [{
|
|
144
150
|
type: Injectable
|
|
145
151
|
}], ctorParameters: () => [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
|
|
146
152
|
type: Inject,
|
|
147
153
|
args: [FORM_FEATURE_KEY]
|
|
148
154
|
}] }] });
|
|
149
155
|
|
|
156
|
+
/**
|
|
157
|
+
* @deprecated This class is deprecated and will be removed in a future release. Please use `provideFormFacade` or `createFormFacade` instead.
|
|
158
|
+
*/
|
|
150
159
|
class AbstractFormFacade {
|
|
151
160
|
constructor(store, formActions, formSelectors) {
|
|
152
161
|
this.store = store;
|
|
@@ -175,6 +184,95 @@ class AbstractFormFacade {
|
|
|
175
184
|
}
|
|
176
185
|
}
|
|
177
186
|
|
|
187
|
+
function createFormEffects(formActions, formService, notificationService) {
|
|
188
|
+
return {
|
|
189
|
+
load$: createEffect((actions$ = inject(Actions), service = formService()) => loadResourceEffect(actions$, formActions, service), {
|
|
190
|
+
functional: true
|
|
191
|
+
}),
|
|
192
|
+
create$: createEffect((actions$ = inject(Actions), service = formService()) => createResourceEffect(actions$, formActions, service), {
|
|
193
|
+
functional: true
|
|
194
|
+
}),
|
|
195
|
+
update$: createEffect((actions$ = inject(Actions), service = formService()) => updateResourceEffect(actions$, formActions, service), {
|
|
196
|
+
functional: true
|
|
197
|
+
}),
|
|
198
|
+
delete$: createEffect((actions$ = inject(Actions), service = formService()) => deleteResourceEffect(actions$, formActions, service), {
|
|
199
|
+
functional: true
|
|
200
|
+
}),
|
|
201
|
+
errorsHandler$: createEffect((actions$ = inject(Actions), service = notificationService()) => errorsHandlerEffect(actions$, formActions, service), {
|
|
202
|
+
functional: true,
|
|
203
|
+
dispatch: false
|
|
204
|
+
})
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function loadResourceEffect(actions$, formActions, service) {
|
|
208
|
+
return actions$.pipe(ofType(formActions.load), switchMap$1(({ id }) => service.loadResource(id).pipe(map$1(resource => formActions.loadSuccess({ resource })), catchError$1((errors) => of(formActions.loadFailure({ errors }))))));
|
|
209
|
+
}
|
|
210
|
+
function createResourceEffect(actions$, formActions, service) {
|
|
211
|
+
return actions$.pipe(ofType(formActions.create), switchMap$1(action => {
|
|
212
|
+
if (!service.createResource) {
|
|
213
|
+
throw new Error('createResource not implement in the ListService');
|
|
214
|
+
}
|
|
215
|
+
return service.createResource(action.resource).pipe(map$1(resource => formActions.createSuccess({ resource })), catchError$1((errors) => of(formActions.createFailure({ errors }))));
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
218
|
+
function updateResourceEffect(actions$, formActions, service) {
|
|
219
|
+
return actions$.pipe(ofType(formActions.save), switchMap$1(({ resource }) => {
|
|
220
|
+
if (!service.saveResource) {
|
|
221
|
+
throw new Error('saveResource not implement in the ListService');
|
|
222
|
+
}
|
|
223
|
+
return service.saveResource(resource).pipe(map$1(response => formActions.saveSuccess({ resource: response })), catchError$1((errors) => of(formActions.saveFailure({ errors }))));
|
|
224
|
+
}));
|
|
225
|
+
}
|
|
226
|
+
function deleteResourceEffect(actions$, formActions, service) {
|
|
227
|
+
return actions$.pipe(ofType(formActions.delete), exhaustMap$1(action => {
|
|
228
|
+
if (!service.deleteResource) {
|
|
229
|
+
throw new Error('deleteResource not implement in the ListService');
|
|
230
|
+
}
|
|
231
|
+
return service.deleteResource(action.id).pipe(map$1(() => formActions.deleteSuccess({ id: action.id })), catchError$1((errors) => of(formActions.deleteFailure({ errors }))));
|
|
232
|
+
}));
|
|
233
|
+
}
|
|
234
|
+
function errorsHandlerEffect(actions$, formActions, notificationService) {
|
|
235
|
+
return actions$.pipe(ofType(formActions.saveFailure, formActions.loadFailure, formActions.deleteFailure, formActions.createFailure), tap$1(({ errors }) => {
|
|
236
|
+
notificationService.onFormErrors(errors);
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
function provideFormFacade(token, formActions, formSelectors) {
|
|
241
|
+
return {
|
|
242
|
+
provide: token,
|
|
243
|
+
useFactory: () => createFormFacade(formActions, formSelectors, inject(Store))
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
function createFormFacade(formActions, formSelectors, store) {
|
|
247
|
+
const resource$ = store.pipe(select(formSelectors.getResource));
|
|
248
|
+
const loadingState$ = store.pipe(select(formSelectors.getLoadingState));
|
|
249
|
+
const requestState$ = store.pipe(select(formSelectors.getRequestState));
|
|
250
|
+
const errors$ = store.pipe(select(formSelectors.getErrors));
|
|
251
|
+
const isReady$ = store.pipe(select(formSelectors.isReady));
|
|
252
|
+
return {
|
|
253
|
+
resource$,
|
|
254
|
+
loadingState$,
|
|
255
|
+
requestState$,
|
|
256
|
+
errors$,
|
|
257
|
+
isReady$,
|
|
258
|
+
create(props) {
|
|
259
|
+
store.dispatch(formActions.create(props));
|
|
260
|
+
},
|
|
261
|
+
load(props) {
|
|
262
|
+
store.dispatch(formActions.load(props));
|
|
263
|
+
},
|
|
264
|
+
save(props) {
|
|
265
|
+
store.dispatch(formActions.save(props));
|
|
266
|
+
},
|
|
267
|
+
delete(props) {
|
|
268
|
+
store.dispatch(formActions.delete(props));
|
|
269
|
+
},
|
|
270
|
+
reset() {
|
|
271
|
+
store.dispatch(formActions.reset());
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
|
|
178
276
|
function createFormState(featureName) {
|
|
179
277
|
const actions = createFormActions(featureName);
|
|
180
278
|
const reducer = createFormReducer(actions);
|
|
@@ -186,10 +284,22 @@ function createFormState(featureName) {
|
|
|
186
284
|
selectors
|
|
187
285
|
};
|
|
188
286
|
}
|
|
287
|
+
function provideFormState(featureKey, facadeToken, service, notificationService) {
|
|
288
|
+
const { actions, selectors, reducer } = createFormState(featureKey);
|
|
289
|
+
return [
|
|
290
|
+
provideState(featureKey, reducer),
|
|
291
|
+
provideFormFacade(facadeToken, actions, selectors),
|
|
292
|
+
provideEffects([
|
|
293
|
+
createFormEffects(actions, () => inject(service), () => inject(notificationService))
|
|
294
|
+
]),
|
|
295
|
+
service,
|
|
296
|
+
notificationService
|
|
297
|
+
];
|
|
298
|
+
}
|
|
189
299
|
|
|
190
300
|
/**
|
|
191
301
|
* Generated bundle index. Do not edit.
|
|
192
302
|
*/
|
|
193
303
|
|
|
194
|
-
export { AbstractFormEffects, AbstractFormFacade, AbstractFormReducerManager, FORM_FEATURE_KEY, createFormActions, createFormReducer, createFormSelectors, createFormState };
|
|
304
|
+
export { AbstractFormEffects, AbstractFormFacade, AbstractFormReducerManager, FORM_FEATURE_KEY, createFormActions, createFormReducer, createFormSelectors, createFormState, provideFormState };
|
|
195
305
|
//# sourceMappingURL=ngdux-form.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngdux-form.mjs","sources":["../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-effects.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/models/form.model.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-actions.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-reducer.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-selectors.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-state.service.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form.facade.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-state.ts","../../../../../../../libs/ngdux/util/store/form/src/ngdux-form.ts"],"sourcesContent":["import { FormNotificationService, FormService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, exhaustMap, map, switchMap, tap } from 'rxjs/operators';\r\nimport { FormActions } from '../models/form.model';\r\n\r\nexport abstract class AbstractFormEffects<DTO, ERROR, CREATE_DTO = DTO> {\r\n load$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.load),\r\n switchMap(({ id }) =>\r\n this.service.loadResource(id).pipe(\r\n map(resource => this.formActions.loadSuccess({ resource })),\r\n catchError((errors: ERROR) => of(this.formActions.loadFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n create$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.create),\r\n switchMap(action => {\r\n if (!this.service.createResource) {\r\n throw new Error('createResource not implement in the ListService');\r\n }\r\n\r\n return this.service.createResource(action.resource).pipe(\r\n map(resource => this.formActions.createSuccess({ resource })),\r\n catchError((errors: ERROR) => of(this.formActions.createFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n update$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.save),\r\n switchMap(({ resource }) => {\r\n if (!this.service.saveResource) {\r\n throw new Error('saveResource not implement in the ListService');\r\n }\r\n\r\n return this.service.saveResource(resource).pipe(\r\n map(response => this.formActions.saveSuccess({ resource: response })),\r\n catchError((errors: ERROR) => of(this.formActions.saveFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.delete),\r\n exhaustMap(action => {\r\n if (!this.service.deleteResource) {\r\n throw new Error('deleteResource not implement in the ListService');\r\n }\r\n\r\n return this.service.deleteResource(action.id).pipe(\r\n map(() => this.formActions.deleteSuccess({ id: action.id })),\r\n catchError((errors: ERROR) => of(this.formActions.deleteFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.formActions.saveFailure,\r\n this.formActions.loadFailure,\r\n this.formActions.deleteFailure,\r\n this.formActions.createFailure\r\n ),\r\n tap(({ errors }) => {\r\n this.notificationService.onFormErrors(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: FormService<DTO, CREATE_DTO>,\r\n private readonly formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n private readonly notificationService: FormNotificationService<ERROR>\r\n ) {}\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { RequestState } from '@ngdux/data-model-common';\r\nimport { ApiRequestState, LoadingState } from '@ngdux/store-common';\r\nimport { ActionCreator, MemoizedSelector } from '@ngrx/store';\r\nimport { TypedAction } from '@ngrx/store/src/models';\r\n\r\nexport const FORM_FEATURE_KEY = new InjectionToken<string>('FORM_FEATURE_KEY');\r\n\r\nexport interface FormState<T, E> extends ApiRequestState<E>, LoadingState {\r\n resource?: T;\r\n}\r\n\r\nexport interface FormSelectors<T, E> {\r\n getRequestState: MemoizedSelector<object, RequestState>;\r\n getLoadingState: MemoizedSelector<object, RequestState>;\r\n getErrors: MemoizedSelector<object, E | undefined>;\r\n getResource: MemoizedSelector<object, T | undefined>;\r\n isReady: MemoizedSelector<object, boolean>;\r\n}\r\n\r\nexport interface FormActions<DTO, ERROR, CREATE_DTO = DTO> {\r\n load: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n loadSuccess: ActionCreator<string, (props: { resource: DTO }) => { resource: DTO } & TypedAction<string>>;\r\n loadFailure: ActionCreator<string, (props: { errors: ERROR }) => { errors: ERROR } & TypedAction<string>>;\r\n\r\n save: ActionCreator<string, (props: { resource: DTO }) => { resource: DTO } & TypedAction<string>>;\r\n saveSuccess: ActionCreator<string, (props: { resource: DTO }) => { resource: DTO } & TypedAction<string>>;\r\n saveFailure: ActionCreator<string, (props: { errors: ERROR }) => { errors: ERROR } & TypedAction<string>>;\r\n\r\n delete: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n deleteSuccess: ActionCreator<string, (props: { id: string }) => { id: string } & TypedAction<string>>;\r\n deleteFailure: ActionCreator<string, (props: { errors: ERROR }) => { errors: ERROR } & TypedAction<string>>;\r\n\r\n create: ActionCreator<string, (props: { resource: CREATE_DTO }) => { resource: CREATE_DTO } & TypedAction<string>>;\r\n createSuccess: ActionCreator<string, (props: { resource: DTO }) => { resource: DTO } & TypedAction<string>>;\r\n createFailure: ActionCreator<string, (props: { errors: ERROR }) => { errors: ERROR } & TypedAction<string>>;\r\n\r\n reset: ActionCreator<string, () => TypedAction<string>>;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { FormActions } from '../models/form.model';\r\n\r\nexport function createFormActions<DTO, ERROR, CREATE_DTO = DTO>(\r\n featureName: string\r\n): FormActions<DTO, ERROR, CREATE_DTO> {\r\n const load = createAction(`[${featureName} API] Load ${featureName}`, props<{ id: string }>());\r\n const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props<{ resource: DTO }>());\r\n const loadFailure = createAction(`[${featureName} API] Load ${featureName} Failure`, props<{ errors: ERROR }>());\r\n\r\n const save = createAction(`[${featureName} API] Save ${featureName}`, props<{ resource: DTO }>());\r\n const saveSuccess = createAction(`[${featureName} API] Save ${featureName} Success`, props<{ resource: DTO }>());\r\n const saveFailure = createAction(`[${featureName} API] Save ${featureName} Failure`, props<{ errors: ERROR }>());\r\n\r\n const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props<{ id: string }>());\r\n const deleteSuccess = createAction(`[${featureName} API] Delete ${featureName} Success`, props<{ id: string }>());\r\n const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props<{ errors: ERROR }>());\r\n\r\n const create = createAction(`[${featureName} API] Create ${featureName}`, props<{ resource: CREATE_DTO }>());\r\n const createSuccess = createAction(`[${featureName} API] Create ${featureName} Success`, props<{ resource: DTO }>());\r\n const createFailure = createAction(`[${featureName} API] Create ${featureName} Failure`, props<{ errors: ERROR }>());\r\n\r\n const reset = createAction(`[${featureName} API] Reset ${featureName}`);\r\n\r\n return {\r\n load,\r\n loadSuccess,\r\n loadFailure,\r\n save,\r\n saveSuccess,\r\n saveFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n create,\r\n createSuccess,\r\n createFailure,\r\n reset\r\n };\r\n}\r\n","import { RequestState } from '@ngdux/data-model-common';\r\nimport { createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';\r\nimport { ActionCreator, ActionReducer, Creator, ReducerTypes, createReducer, on } from '@ngrx/store';\r\nimport { FormActions, FormState } from '../models/form.model';\r\n\r\nexport function createFormReducer<DTO, ERROR, CREATE_DTO = DTO>(\r\n actions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n actionHandlers?: ReducerTypes<FormState<DTO, ERROR>, ActionCreator[]>[],\r\n initialFormState?: Record<string, any>\r\n): ActionReducer<FormState<DTO, ERROR>> {\r\n const initialState: FormState<DTO, ERROR> = { ...createInitialFormState<DTO, ERROR>(), ...initialFormState };\r\n return createReducer<FormState<DTO, ERROR>>(\r\n initialState,\r\n ...createFormActionHandlers<DTO, ERROR, CREATE_DTO>(initialState, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialFormState<DTO, ERROR>(): FormState<DTO, ERROR> {\r\n return {\r\n resource: undefined,\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n };\r\n}\r\n\r\nfunction createFormActionHandlers<DTO, ERROR, CREATE_DTO = DTO>(\r\n initialFormState: FormState<DTO, ERROR>,\r\n actions: FormActions<DTO, ERROR, CREATE_DTO>\r\n): ReducerTypes<FormState<DTO, ERROR>, ActionCreator<string, Creator<any[], object>>[]>[] {\r\n return [\r\n on(actions.reset, (): FormState<DTO, ERROR> => initialFormState),\r\n on(\r\n actions.loadSuccess,\r\n actions.createSuccess,\r\n actions.saveSuccess,\r\n (state: FormState<DTO, ERROR>, { resource }): FormState<DTO, ERROR> => ({ ...state, resource })\r\n ),\r\n on(\r\n actions.deleteSuccess,\r\n (state: FormState<DTO, ERROR>): FormState<DTO, ERROR> => ({\r\n ...state,\r\n resource: undefined\r\n })\r\n ),\r\n ...createRequestStateActionHandlers<FormState<DTO, ERROR>, ERROR>(\r\n actions.load,\r\n actions.save,\r\n actions.saveSuccess,\r\n actions.saveFailure\r\n ),\r\n ...createRequestStateActionHandlers<FormState<DTO, ERROR>, ERROR>(\r\n undefined,\r\n actions.create,\r\n actions.createSuccess,\r\n actions.createFailure\r\n ),\r\n ...createRequestStateActionHandlers<FormState<DTO, ERROR>, ERROR>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createLoadingStateActionHandlers<FormState<DTO, ERROR>>(actions.load, actions.loadSuccess, actions.loadFailure)\r\n ];\r\n}\r\n","import { RequestState } from '@ngdux/data-model-common';\r\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\r\nimport { FormSelectors, FormState } from '../models/form.model';\r\n\r\nexport function createFormSelectors<T, E>(\r\n getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>\r\n): FormSelectors<T, E> {\r\n const getRequestState = createSelector(getFormState, state => state.requestState);\r\n const getLoadingState = createSelector(getFormState, state => state.loadingState);\r\n const getErrors = createSelector(getFormState, state => state.errors);\r\n const getResource = createSelector(getFormState, state => state.resource);\r\n\r\n const isReady = createSelector(\r\n getResource,\r\n getLoadingState,\r\n (resource, loadingState) => !!resource && loadingState === RequestState.SUCCESS\r\n );\r\n\r\n return {\r\n getRequestState,\r\n getLoadingState,\r\n getErrors,\r\n getResource,\r\n isReady\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { ReducerManager, createFeatureSelector } from '@ngrx/store';\r\nimport { FORM_FEATURE_KEY, FormActions, FormSelectors, FormState } from '../models/form.model';\r\nimport { createFormActions } from './form-actions';\r\nimport { createFormReducer } from './form-reducer';\r\nimport { createFormSelectors } from './form-selectors';\r\n\r\n@Injectable()\r\nexport abstract class AbstractFormReducerManager<DTO, ERROR, CREATE_DTO = DTO> {\r\n actions: FormActions<DTO, ERROR, CREATE_DTO>;\r\n selectors: FormSelectors<DTO, ERROR>;\r\n\r\n constructor(\r\n private readonly reducerManager: ReducerManager,\r\n @Inject(FORM_FEATURE_KEY) private readonly featureKey: string\r\n ) {\r\n this.actions = this.getActions();\r\n this.addReducer();\r\n this.selectors = this.getSelectors();\r\n }\r\n\r\n protected getActions() {\r\n return createFormActions<DTO, ERROR, CREATE_DTO>(this.featureKey);\r\n }\r\n\r\n protected addReducer() {\r\n if (!this.reducerManager.currentReducers[this.featureKey]) {\r\n const reducer = createFormReducer(this.actions);\r\n this.reducerManager.addReducer(this.featureKey, reducer);\r\n }\r\n }\r\n\r\n protected getSelectors() {\r\n const getState = createFeatureSelector<FormState<DTO, ERROR>>(this.featureKey);\r\n return createFormSelectors(getState);\r\n }\r\n}\r\n","import { ActionPayload } from '@ngdux/store-common';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { FormActions, FormSelectors } from '../models/form.model';\r\n\r\nexport abstract class AbstractFormFacade<DTO, E, CREATE_DTO = DTO> {\r\n readonly resource$ = this.store.pipe(select(this.formSelectors.getResource));\r\n readonly loadingState$ = this.store.pipe(select(this.formSelectors.getLoadingState));\r\n readonly requestState$ = this.store.pipe(select(this.formSelectors.getRequestState));\r\n readonly errors$ = this.store.pipe(select(this.formSelectors.getErrors));\r\n readonly isReady$ = this.store.pipe(select(this.formSelectors.isReady));\r\n\r\n constructor(\r\n protected readonly store: Store,\r\n private readonly formActions: FormActions<DTO, E, CREATE_DTO>,\r\n private readonly formSelectors: FormSelectors<DTO, E>\r\n ) {}\r\n\r\n create(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['create']>): void {\r\n this.store.dispatch(this.formActions.create(props));\r\n }\r\n\r\n load(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['load']>): void {\r\n this.store.dispatch(this.formActions.load(props));\r\n }\r\n\r\n save(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['save']>): void {\r\n this.store.dispatch(this.formActions.save(props));\r\n }\r\n\r\n delete(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['delete']>): void {\r\n this.store.dispatch(this.formActions.delete(props));\r\n }\r\n\r\n reset(): void {\r\n this.store.dispatch(this.formActions.reset());\r\n }\r\n}\r\n","import { Action, createFeatureSelector } from '@ngrx/store';\r\nimport { FormState } from '../models/form.model';\r\nimport { createFormActions } from './form-actions';\r\nimport { createFormReducer } from './form-reducer';\r\nimport { createFormSelectors } from './form-selectors';\r\n\r\nexport function createFormState<DTO, ERROR, CREATE_DTO = DTO>(featureName: string) {\r\n const actions = createFormActions<DTO, ERROR, CREATE_DTO>(featureName);\r\n const reducer = createFormReducer(actions);\r\n const getState = createFeatureSelector<FormState<DTO, ERROR>>(featureName);\r\n const selectors = createFormSelectors(getState);\r\n\r\n return {\r\n actions,\r\n reducer: (state: FormState<DTO, ERROR>, action: Action): FormState<DTO, ERROR> => reducer(state, action),\r\n selectors\r\n };\r\n}\r\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-form.mjs","sources":["../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-effects.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/models/form.model.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-actions.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-reducer.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-selectors.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form-state.service.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/abstract-form.facade.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-effects.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-facade.ts","../../../../../../../libs/ngdux/util/store/form/src/lib/+state/form-state.ts","../../../../../../../libs/ngdux/util/store/form/src/ngdux-form.ts"],"sourcesContent":["import { FormNotificationService, FormService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\nimport { of } from 'rxjs';\r\nimport { catchError, exhaustMap, map, switchMap, tap } from 'rxjs/operators';\r\nimport { FormActions } from '../models/form.model';\r\n\r\n/**\r\n * @deprecated This class is deprecated and will be removed in a future release. Please use `createFormEffects` instead.\r\n */\r\nexport abstract class AbstractFormEffects<DTO, ERROR, CREATE_DTO = DTO> {\r\n load$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.load),\r\n switchMap(({ id }) =>\r\n this.service.loadResource(id).pipe(\r\n map(resource => this.formActions.loadSuccess({ resource })),\r\n catchError((errors: ERROR) => of(this.formActions.loadFailure({ errors })))\r\n )\r\n )\r\n )\r\n );\r\n\r\n create$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.create),\r\n switchMap(action => {\r\n if (!this.service.createResource) {\r\n throw new Error('createResource not implement in the ListService');\r\n }\r\n\r\n return this.service.createResource(action.resource).pipe(\r\n map(resource => this.formActions.createSuccess({ resource })),\r\n catchError((errors: ERROR) => of(this.formActions.createFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n update$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.save),\r\n switchMap(({ resource }) => {\r\n if (!this.service.saveResource) {\r\n throw new Error('saveResource not implement in the ListService');\r\n }\r\n\r\n return this.service.saveResource(resource).pipe(\r\n map(response => this.formActions.saveSuccess({ resource: response })),\r\n catchError((errors: ERROR) => of(this.formActions.saveFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n delete$ = createEffect(() =>\r\n this.actions$.pipe(\r\n ofType(this.formActions.delete),\r\n exhaustMap(action => {\r\n if (!this.service.deleteResource) {\r\n throw new Error('deleteResource not implement in the ListService');\r\n }\r\n\r\n return this.service.deleteResource(action.id).pipe(\r\n map(() => this.formActions.deleteSuccess({ id: action.id })),\r\n catchError((errors: ERROR) => of(this.formActions.deleteFailure({ errors })))\r\n );\r\n })\r\n )\r\n );\r\n\r\n errorsHandler$ = createEffect(\r\n () =>\r\n this.actions$.pipe(\r\n ofType(\r\n this.formActions.saveFailure,\r\n this.formActions.loadFailure,\r\n this.formActions.deleteFailure,\r\n this.formActions.createFailure\r\n ),\r\n tap(({ errors }) => {\r\n this.notificationService.onFormErrors(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: FormService<DTO, CREATE_DTO>,\r\n private readonly formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n private readonly notificationService: FormNotificationService<ERROR>\r\n ) {}\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { RequestState } from '@ngdux/data-model-common';\r\nimport { ActionPayload, ApiRequestState, LoadingState } from '@ngdux/store-common';\r\nimport { Action, ActionCreator, MemoizedSelector } from '@ngrx/store';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport const FORM_FEATURE_KEY = new InjectionToken<string>('FORM_FEATURE_KEY');\r\n\r\nexport interface FormState<T, E> extends ApiRequestState<E>, LoadingState {\r\n resource?: T;\r\n}\r\n\r\nexport interface FormSelectors<T, E> {\r\n getRequestState: MemoizedSelector<object, RequestState>;\r\n getLoadingState: MemoizedSelector<object, RequestState>;\r\n getErrors: MemoizedSelector<object, E | undefined>;\r\n getResource: MemoizedSelector<object, T | undefined>;\r\n isReady: MemoizedSelector<object, boolean>;\r\n}\r\n\r\nexport interface FormActions<DTO, ERROR, CREATE_DTO = DTO> {\r\n load: ActionCreator<string, (props: { id: string }) => { id: string } & Action<string>>;\r\n loadSuccess: ActionCreator<string, (props: { resource: DTO }) => { resource: DTO } & Action<string>>;\r\n loadFailure: ActionCreator<string, (props: { errors: ERROR }) => { errors: ERROR } & Action<string>>;\r\n\r\n save: ActionCreator<string, (props: { resource: DTO }) => { resource: DTO } & Action<string>>;\r\n saveSuccess: ActionCreator<string, (props: { resource: DTO }) => { resource: DTO } & Action<string>>;\r\n saveFailure: ActionCreator<string, (props: { errors: ERROR }) => { errors: ERROR } & Action<string>>;\r\n\r\n delete: ActionCreator<string, (props: { id: string }) => { id: string } & Action<string>>;\r\n deleteSuccess: ActionCreator<string, (props: { id: string }) => { id: string } & Action<string>>;\r\n deleteFailure: ActionCreator<string, (props: { errors: ERROR }) => { errors: ERROR } & Action<string>>;\r\n\r\n create: ActionCreator<string, (props: { resource: CREATE_DTO }) => { resource: CREATE_DTO } & Action<string>>;\r\n createSuccess: ActionCreator<string, (props: { resource: DTO }) => { resource: DTO } & Action<string>>;\r\n createFailure: ActionCreator<string, (props: { errors: ERROR }) => { errors: ERROR } & Action<string>>;\r\n\r\n reset: ActionCreator<string, () => Action<string>>;\r\n}\r\n\r\nexport interface FormFacade<DTO, ERROR, CREATE_DTO = DTO> {\r\n resource$: Observable<DTO | undefined>;\r\n loadingState$: Observable<RequestState>;\r\n requestState$: Observable<RequestState>;\r\n errors$: Observable<ERROR | undefined>;\r\n isReady$: Observable<boolean>;\r\n\r\n create(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['create']>): void;\r\n load(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['load']>): void;\r\n save(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['save']>): void;\r\n delete(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['delete']>): void;\r\n reset(): void;\r\n}\r\n","import { createAction, props } from '@ngrx/store';\r\nimport { FormActions } from '../models/form.model';\r\n\r\nexport function createFormActions<DTO, ERROR, CREATE_DTO = DTO>(\r\n featureName: string\r\n): FormActions<DTO, ERROR, CREATE_DTO> {\r\n const load = createAction(`[${featureName} API] Load ${featureName}`, props<{ id: string }>());\r\n const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props<{ resource: DTO }>());\r\n const loadFailure = createAction(`[${featureName} API] Load ${featureName} Failure`, props<{ errors: ERROR }>());\r\n\r\n const save = createAction(`[${featureName} API] Save ${featureName}`, props<{ resource: DTO }>());\r\n const saveSuccess = createAction(`[${featureName} API] Save ${featureName} Success`, props<{ resource: DTO }>());\r\n const saveFailure = createAction(`[${featureName} API] Save ${featureName} Failure`, props<{ errors: ERROR }>());\r\n\r\n const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props<{ id: string }>());\r\n const deleteSuccess = createAction(`[${featureName} API] Delete ${featureName} Success`, props<{ id: string }>());\r\n const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props<{ errors: ERROR }>());\r\n\r\n const create = createAction(`[${featureName} API] Create ${featureName}`, props<{ resource: CREATE_DTO }>());\r\n const createSuccess = createAction(`[${featureName} API] Create ${featureName} Success`, props<{ resource: DTO }>());\r\n const createFailure = createAction(`[${featureName} API] Create ${featureName} Failure`, props<{ errors: ERROR }>());\r\n\r\n const reset = createAction(`[${featureName} API] Reset ${featureName}`);\r\n\r\n return {\r\n load,\r\n loadSuccess,\r\n loadFailure,\r\n save,\r\n saveSuccess,\r\n saveFailure,\r\n delete: deleteAction,\r\n deleteSuccess,\r\n deleteFailure,\r\n create,\r\n createSuccess,\r\n createFailure,\r\n reset\r\n };\r\n}\r\n","import { RequestState } from '@ngdux/data-model-common';\r\nimport { createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';\r\nimport { ActionCreator, ActionReducer, Creator, ReducerTypes, createReducer, on } from '@ngrx/store';\r\nimport { FormActions, FormState } from '../models/form.model';\r\n\r\nexport function createFormReducer<DTO, ERROR, CREATE_DTO = DTO>(\r\n actions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n actionHandlers?: ReducerTypes<FormState<DTO, ERROR>, ActionCreator[]>[],\r\n initialFormState?: Record<string, any>\r\n): ActionReducer<FormState<DTO, ERROR>> {\r\n const initialState: FormState<DTO, ERROR> = { ...createInitialFormState<DTO, ERROR>(), ...initialFormState };\r\n return createReducer<FormState<DTO, ERROR>>(\r\n initialState,\r\n ...createFormActionHandlers<DTO, ERROR, CREATE_DTO>(initialState, actions),\r\n ...(actionHandlers || [])\r\n );\r\n}\r\n\r\nfunction createInitialFormState<DTO, ERROR>(): FormState<DTO, ERROR> {\r\n return {\r\n resource: undefined,\r\n loadingState: RequestState.IDLE,\r\n requestState: RequestState.IDLE,\r\n errors: undefined\r\n };\r\n}\r\n\r\nfunction createFormActionHandlers<DTO, ERROR, CREATE_DTO = DTO>(\r\n initialFormState: FormState<DTO, ERROR>,\r\n actions: FormActions<DTO, ERROR, CREATE_DTO>\r\n): ReducerTypes<FormState<DTO, ERROR>, ActionCreator<string, Creator<any[], object>>[]>[] {\r\n return [\r\n on(actions.reset, (): FormState<DTO, ERROR> => initialFormState),\r\n on(\r\n actions.loadSuccess,\r\n actions.createSuccess,\r\n actions.saveSuccess,\r\n (state: FormState<DTO, ERROR>, { resource }): FormState<DTO, ERROR> => ({ ...state, resource })\r\n ),\r\n on(\r\n actions.deleteSuccess,\r\n (state: FormState<DTO, ERROR>): FormState<DTO, ERROR> => ({\r\n ...state,\r\n resource: undefined\r\n })\r\n ),\r\n ...createRequestStateActionHandlers<FormState<DTO, ERROR>, ERROR>(\r\n actions.load,\r\n actions.save,\r\n actions.saveSuccess,\r\n actions.saveFailure\r\n ),\r\n ...createRequestStateActionHandlers<FormState<DTO, ERROR>, ERROR>(\r\n undefined,\r\n actions.create,\r\n actions.createSuccess,\r\n actions.createFailure\r\n ),\r\n ...createRequestStateActionHandlers<FormState<DTO, ERROR>, ERROR>(\r\n undefined,\r\n actions.delete,\r\n actions.deleteSuccess,\r\n actions.deleteFailure\r\n ),\r\n ...createLoadingStateActionHandlers<FormState<DTO, ERROR>>(actions.load, actions.loadSuccess, actions.loadFailure)\r\n ];\r\n}\r\n","import { RequestState } from '@ngdux/data-model-common';\r\nimport { createSelector, DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';\r\nimport { FormSelectors, FormState } from '../models/form.model';\r\n\r\nexport function createFormSelectors<T, E>(\r\n getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>\r\n): FormSelectors<T, E> {\r\n const getRequestState = createSelector(getFormState, state => state.requestState);\r\n const getLoadingState = createSelector(getFormState, state => state.loadingState);\r\n const getErrors = createSelector(getFormState, state => state.errors);\r\n const getResource = createSelector(getFormState, state => state.resource);\r\n\r\n const isReady = createSelector(\r\n getResource,\r\n getLoadingState,\r\n (resource, loadingState) => !!resource && loadingState === RequestState.SUCCESS\r\n );\r\n\r\n return {\r\n getRequestState,\r\n getLoadingState,\r\n getErrors,\r\n getResource,\r\n isReady\r\n };\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { ReducerManager, createFeatureSelector } from '@ngrx/store';\r\nimport { FORM_FEATURE_KEY, FormActions, FormSelectors, FormState } from '../models/form.model';\r\nimport { createFormActions } from './form-actions';\r\nimport { createFormReducer } from './form-reducer';\r\nimport { createFormSelectors } from './form-selectors';\r\n\r\n/**\r\n * @deprecated This class is deprecated and will be removed in a future release.\r\n */\r\n@Injectable()\r\nexport abstract class AbstractFormReducerManager<DTO, ERROR, CREATE_DTO = DTO> {\r\n actions: FormActions<DTO, ERROR, CREATE_DTO>;\r\n selectors: FormSelectors<DTO, ERROR>;\r\n\r\n constructor(\r\n private readonly reducerManager: ReducerManager,\r\n @Inject(FORM_FEATURE_KEY) private readonly featureKey: string\r\n ) {\r\n this.actions = this.getActions();\r\n this.addReducer();\r\n this.selectors = this.getSelectors();\r\n }\r\n\r\n protected getActions() {\r\n return createFormActions<DTO, ERROR, CREATE_DTO>(this.featureKey);\r\n }\r\n\r\n protected addReducer() {\r\n if (!this.reducerManager.currentReducers[this.featureKey]) {\r\n const reducer = createFormReducer(this.actions);\r\n this.reducerManager.addReducer(this.featureKey, reducer);\r\n }\r\n }\r\n\r\n protected getSelectors() {\r\n const getState = createFeatureSelector<FormState<DTO, ERROR>>(this.featureKey);\r\n return createFormSelectors(getState);\r\n }\r\n}\r\n","import { ActionPayload } from '@ngdux/store-common';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { FormActions, FormSelectors } from '../models/form.model';\r\n\r\n/**\r\n * @deprecated This class is deprecated and will be removed in a future release. Please use `provideFormFacade` or `createFormFacade` instead.\r\n */\r\nexport abstract class AbstractFormFacade<DTO, E, CREATE_DTO = DTO> {\r\n readonly resource$ = this.store.pipe(select(this.formSelectors.getResource));\r\n readonly loadingState$ = this.store.pipe(select(this.formSelectors.getLoadingState));\r\n readonly requestState$ = this.store.pipe(select(this.formSelectors.getRequestState));\r\n readonly errors$ = this.store.pipe(select(this.formSelectors.getErrors));\r\n readonly isReady$ = this.store.pipe(select(this.formSelectors.isReady));\r\n\r\n constructor(\r\n protected readonly store: Store,\r\n private readonly formActions: FormActions<DTO, E, CREATE_DTO>,\r\n private readonly formSelectors: FormSelectors<DTO, E>\r\n ) {}\r\n\r\n create(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['create']>): void {\r\n this.store.dispatch(this.formActions.create(props));\r\n }\r\n\r\n load(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['load']>): void {\r\n this.store.dispatch(this.formActions.load(props));\r\n }\r\n\r\n save(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['save']>): void {\r\n this.store.dispatch(this.formActions.save(props));\r\n }\r\n\r\n delete(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['delete']>): void {\r\n this.store.dispatch(this.formActions.delete(props));\r\n }\r\n\r\n reset(): void {\r\n this.store.dispatch(this.formActions.reset());\r\n }\r\n}\r\n","import { inject } from '@angular/core';\r\nimport { FormNotificationService, FormService } from '@ngdux/data-model-common';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\r\nimport { catchError, exhaustMap, map, of, switchMap, tap } from 'rxjs';\r\nimport { FormActions } from '../models/form.model';\r\n\r\nexport function createFormEffects<DTO, ERROR, CREATE_DTO = DTO>(\r\n formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n formService: () => FormService<DTO, CREATE_DTO>,\r\n notificationService: () => FormNotificationService<ERROR>\r\n) {\r\n return {\r\n load$: createEffect(\r\n (actions$ = inject(Actions), service = formService()) => loadResourceEffect(actions$, formActions, service),\r\n {\r\n functional: true\r\n }\r\n ),\r\n create$: createEffect(\r\n (actions$ = inject(Actions), service = formService()) => createResourceEffect(actions$, formActions, service),\r\n {\r\n functional: true\r\n }\r\n ),\r\n update$: createEffect(\r\n (actions$ = inject(Actions), service = formService()) => updateResourceEffect(actions$, formActions, service),\r\n {\r\n functional: true\r\n }\r\n ),\r\n delete$: createEffect(\r\n (actions$ = inject(Actions), service = formService()) => deleteResourceEffect(actions$, formActions, service),\r\n {\r\n functional: true\r\n }\r\n ),\r\n errorsHandler$: createEffect(\r\n (actions$ = inject(Actions), service = notificationService()) =>\r\n errorsHandlerEffect(actions$, formActions, service),\r\n {\r\n functional: true,\r\n dispatch: false\r\n }\r\n )\r\n };\r\n}\r\n\r\nfunction loadResourceEffect<DTO, ERROR, CREATE_DTO = DTO>(\r\n actions$: Actions,\r\n formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n service: FormService<DTO, CREATE_DTO>\r\n) {\r\n return actions$.pipe(\r\n ofType(formActions.load),\r\n switchMap(({ id }) =>\r\n service.loadResource(id).pipe(\r\n map(resource => formActions.loadSuccess({ resource })),\r\n catchError((errors: ERROR) => of(formActions.loadFailure({ errors })))\r\n )\r\n )\r\n );\r\n}\r\n\r\nfunction createResourceEffect<DTO, ERROR, CREATE_DTO = DTO>(\r\n actions$: Actions,\r\n formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n service: FormService<DTO, CREATE_DTO>\r\n) {\r\n return actions$.pipe(\r\n ofType(formActions.create),\r\n switchMap(action => {\r\n if (!service.createResource) {\r\n throw new Error('createResource not implement in the ListService');\r\n }\r\n\r\n return service.createResource(action.resource).pipe(\r\n map(resource => formActions.createSuccess({ resource })),\r\n catchError((errors: ERROR) => of(formActions.createFailure({ errors })))\r\n );\r\n })\r\n );\r\n}\r\n\r\nfunction updateResourceEffect<DTO, ERROR, CREATE_DTO = DTO>(\r\n actions$: Actions,\r\n formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n service: FormService<DTO, CREATE_DTO>\r\n) {\r\n return actions$.pipe(\r\n ofType(formActions.save),\r\n switchMap(({ resource }) => {\r\n if (!service.saveResource) {\r\n throw new Error('saveResource not implement in the ListService');\r\n }\r\n\r\n return service.saveResource(resource).pipe(\r\n map(response => formActions.saveSuccess({ resource: response })),\r\n catchError((errors: ERROR) => of(formActions.saveFailure({ errors })))\r\n );\r\n })\r\n );\r\n}\r\n\r\nfunction deleteResourceEffect<DTO, ERROR, CREATE_DTO = DTO>(\r\n actions$: Actions,\r\n formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n service: FormService<DTO, CREATE_DTO>\r\n) {\r\n return actions$.pipe(\r\n ofType(formActions.delete),\r\n exhaustMap(action => {\r\n if (!service.deleteResource) {\r\n throw new Error('deleteResource not implement in the ListService');\r\n }\r\n\r\n return service.deleteResource(action.id).pipe(\r\n map(() => formActions.deleteSuccess({ id: action.id })),\r\n catchError((errors: ERROR) => of(formActions.deleteFailure({ errors })))\r\n );\r\n })\r\n );\r\n}\r\n\r\nfunction errorsHandlerEffect<DTO, ERROR, CREATE_DTO = DTO>(\r\n actions$: Actions,\r\n formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n notificationService: FormNotificationService<ERROR>\r\n) {\r\n return actions$.pipe(\r\n ofType(formActions.saveFailure, formActions.loadFailure, formActions.deleteFailure, formActions.createFailure),\r\n tap(({ errors }) => {\r\n notificationService.onFormErrors(errors);\r\n })\r\n );\r\n}\r\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { ActionPayload } from '@ngdux/store-common';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { FormActions, FormFacade, FormSelectors } from '../models/form.model';\r\n\r\nexport function provideFormFacade<DTO, ERROR, CREATE_DTO = DTO>(\r\n token: InjectionToken<FormFacade<DTO, ERROR, CREATE_DTO>>,\r\n formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n formSelectors: FormSelectors<DTO, ERROR>\r\n) {\r\n return {\r\n provide: token,\r\n useFactory: () => createFormFacade(formActions, formSelectors, inject(Store))\r\n };\r\n}\r\n\r\nexport function createFormFacade<DTO, ERROR, CREATE_DTO = DTO>(\r\n formActions: FormActions<DTO, ERROR, CREATE_DTO>,\r\n formSelectors: FormSelectors<DTO, ERROR>,\r\n store: Store\r\n): FormFacade<DTO, ERROR, CREATE_DTO> {\r\n const resource$ = store.pipe(select(formSelectors.getResource));\r\n const loadingState$ = store.pipe(select(formSelectors.getLoadingState));\r\n const requestState$ = store.pipe(select(formSelectors.getRequestState));\r\n const errors$ = store.pipe(select(formSelectors.getErrors));\r\n const isReady$ = store.pipe(select(formSelectors.isReady));\r\n\r\n return {\r\n resource$,\r\n loadingState$,\r\n requestState$,\r\n errors$,\r\n isReady$,\r\n create(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['create']>): void {\r\n store.dispatch(formActions.create(props));\r\n },\r\n load(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['load']>): void {\r\n store.dispatch(formActions.load(props));\r\n },\r\n save(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['save']>): void {\r\n store.dispatch(formActions.save(props));\r\n },\r\n delete(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['delete']>): void {\r\n store.dispatch(formActions.delete(props));\r\n },\r\n reset(): void {\r\n store.dispatch(formActions.reset());\r\n }\r\n };\r\n}\r\n","import { InjectionToken, ProviderToken, inject } from '@angular/core';\r\nimport { FormNotificationService, FormService } from '@ngdux/data-model-common';\r\nimport { provideEffects } from '@ngrx/effects';\r\nimport { Action, createFeatureSelector, provideState } from '@ngrx/store';\r\nimport { FormFacade, FormState } from '../models/form.model';\r\nimport { createFormActions } from './form-actions';\r\nimport { createFormEffects } from './form-effects';\r\nimport { provideFormFacade } from './form-facade';\r\nimport { createFormReducer } from './form-reducer';\r\nimport { createFormSelectors } from './form-selectors';\r\n\r\nexport function createFormState<DTO, ERROR, CREATE_DTO = DTO>(featureName: string) {\r\n const actions = createFormActions<DTO, ERROR, CREATE_DTO>(featureName);\r\n const reducer = createFormReducer(actions);\r\n const getState = createFeatureSelector<FormState<DTO, ERROR>>(featureName);\r\n const selectors = createFormSelectors(getState);\r\n\r\n return {\r\n actions,\r\n reducer: (state: FormState<DTO, ERROR>, action: Action): FormState<DTO, ERROR> => reducer(state, action),\r\n selectors\r\n };\r\n}\r\n\r\nexport function provideFormState<DTO, ERROR, CREATE_DTO = DTO>(\r\n featureKey: string,\r\n facadeToken: InjectionToken<FormFacade<DTO, ERROR, CREATE_DTO>>,\r\n service: ProviderToken<FormService<DTO, CREATE_DTO>>,\r\n notificationService: ProviderToken<FormNotificationService<ERROR>>\r\n) {\r\n const { actions, selectors, reducer } = createFormState<DTO, ERROR, CREATE_DTO>(featureKey);\r\n\r\n return [\r\n provideState(featureKey, reducer),\r\n provideFormFacade(facadeToken, actions, selectors),\r\n provideEffects([\r\n createFormEffects(\r\n actions,\r\n () => inject(service),\r\n () => inject(notificationService)\r\n )\r\n ]),\r\n service,\r\n notificationService\r\n ];\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["switchMap","map","catchError","exhaustMap","tap"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngdux/form",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git@github.com:allanartuso/ngdux.git",
|
|
@@ -8,22 +8,20 @@
|
|
|
8
8
|
},
|
|
9
9
|
"homepage": "https://github.com/allanartuso/ngdux/tree/master/libs/ngdux/util/store/form#readme",
|
|
10
10
|
"peerDependencies": {
|
|
11
|
-
"@ngdux/
|
|
12
|
-
"@
|
|
13
|
-
"@
|
|
14
|
-
"@
|
|
15
|
-
"@ngrx/effects": "
|
|
11
|
+
"@ngdux/store-common": ">=3.0.0",
|
|
12
|
+
"@ngdux/data-model-common": ">=3.0.0",
|
|
13
|
+
"@ngrx/store": ">=21.0.0",
|
|
14
|
+
"@angular/core": ">=21.0.0",
|
|
15
|
+
"@ngrx/effects": ">=21.0.0"
|
|
16
16
|
},
|
|
17
17
|
"module": "fesm2022/ngdux-form.mjs",
|
|
18
|
-
"typings": "
|
|
18
|
+
"typings": "types/ngdux-form.d.ts",
|
|
19
19
|
"exports": {
|
|
20
20
|
"./package.json": {
|
|
21
21
|
"default": "./package.json"
|
|
22
22
|
},
|
|
23
23
|
".": {
|
|
24
|
-
"types": "./
|
|
25
|
-
"esm2022": "./esm2022/ngdux-form.mjs",
|
|
26
|
-
"esm": "./esm2022/ngdux-form.mjs",
|
|
24
|
+
"types": "./types/ngdux-form.d.ts",
|
|
27
25
|
"default": "./fesm2022/ngdux-form.mjs"
|
|
28
26
|
}
|
|
29
27
|
},
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { RequestState, FormService, FormNotificationService } from '@ngdux/data-model-common';
|
|
2
|
+
export { FormNotificationService, FormService, RequestState } from '@ngdux/data-model-common';
|
|
3
|
+
import * as _ngrx_effects from '@ngrx/effects';
|
|
4
|
+
import { Actions } from '@ngrx/effects';
|
|
5
|
+
import * as rxjs from 'rxjs';
|
|
6
|
+
import { Observable } from 'rxjs';
|
|
7
|
+
import * as _ngrx_store from '@ngrx/store';
|
|
8
|
+
import { ActionCreator, Action, MemoizedSelector, Store, ReducerManager, ReducerTypes, ActionReducer, DefaultProjectorFn } from '@ngrx/store';
|
|
9
|
+
import * as _angular_core from '@angular/core';
|
|
10
|
+
import { InjectionToken, ProviderToken } from '@angular/core';
|
|
11
|
+
import { ActionPayload, ApiRequestState, LoadingState } from '@ngdux/store-common';
|
|
12
|
+
import * as _ngdux_form from '@ngdux/form';
|
|
13
|
+
|
|
14
|
+
declare const FORM_FEATURE_KEY: InjectionToken<string>;
|
|
15
|
+
interface FormState<T, E> extends ApiRequestState<E>, LoadingState {
|
|
16
|
+
resource?: T;
|
|
17
|
+
}
|
|
18
|
+
interface FormSelectors<T, E> {
|
|
19
|
+
getRequestState: MemoizedSelector<object, RequestState>;
|
|
20
|
+
getLoadingState: MemoizedSelector<object, RequestState>;
|
|
21
|
+
getErrors: MemoizedSelector<object, E | undefined>;
|
|
22
|
+
getResource: MemoizedSelector<object, T | undefined>;
|
|
23
|
+
isReady: MemoizedSelector<object, boolean>;
|
|
24
|
+
}
|
|
25
|
+
interface FormActions<DTO, ERROR, CREATE_DTO = DTO> {
|
|
26
|
+
load: ActionCreator<string, (props: {
|
|
27
|
+
id: string;
|
|
28
|
+
}) => {
|
|
29
|
+
id: string;
|
|
30
|
+
} & Action<string>>;
|
|
31
|
+
loadSuccess: ActionCreator<string, (props: {
|
|
32
|
+
resource: DTO;
|
|
33
|
+
}) => {
|
|
34
|
+
resource: DTO;
|
|
35
|
+
} & Action<string>>;
|
|
36
|
+
loadFailure: ActionCreator<string, (props: {
|
|
37
|
+
errors: ERROR;
|
|
38
|
+
}) => {
|
|
39
|
+
errors: ERROR;
|
|
40
|
+
} & Action<string>>;
|
|
41
|
+
save: ActionCreator<string, (props: {
|
|
42
|
+
resource: DTO;
|
|
43
|
+
}) => {
|
|
44
|
+
resource: DTO;
|
|
45
|
+
} & Action<string>>;
|
|
46
|
+
saveSuccess: ActionCreator<string, (props: {
|
|
47
|
+
resource: DTO;
|
|
48
|
+
}) => {
|
|
49
|
+
resource: DTO;
|
|
50
|
+
} & Action<string>>;
|
|
51
|
+
saveFailure: ActionCreator<string, (props: {
|
|
52
|
+
errors: ERROR;
|
|
53
|
+
}) => {
|
|
54
|
+
errors: ERROR;
|
|
55
|
+
} & Action<string>>;
|
|
56
|
+
delete: ActionCreator<string, (props: {
|
|
57
|
+
id: string;
|
|
58
|
+
}) => {
|
|
59
|
+
id: string;
|
|
60
|
+
} & Action<string>>;
|
|
61
|
+
deleteSuccess: ActionCreator<string, (props: {
|
|
62
|
+
id: string;
|
|
63
|
+
}) => {
|
|
64
|
+
id: string;
|
|
65
|
+
} & Action<string>>;
|
|
66
|
+
deleteFailure: ActionCreator<string, (props: {
|
|
67
|
+
errors: ERROR;
|
|
68
|
+
}) => {
|
|
69
|
+
errors: ERROR;
|
|
70
|
+
} & Action<string>>;
|
|
71
|
+
create: ActionCreator<string, (props: {
|
|
72
|
+
resource: CREATE_DTO;
|
|
73
|
+
}) => {
|
|
74
|
+
resource: CREATE_DTO;
|
|
75
|
+
} & Action<string>>;
|
|
76
|
+
createSuccess: ActionCreator<string, (props: {
|
|
77
|
+
resource: DTO;
|
|
78
|
+
}) => {
|
|
79
|
+
resource: DTO;
|
|
80
|
+
} & Action<string>>;
|
|
81
|
+
createFailure: ActionCreator<string, (props: {
|
|
82
|
+
errors: ERROR;
|
|
83
|
+
}) => {
|
|
84
|
+
errors: ERROR;
|
|
85
|
+
} & Action<string>>;
|
|
86
|
+
reset: ActionCreator<string, () => Action<string>>;
|
|
87
|
+
}
|
|
88
|
+
interface FormFacade<DTO, ERROR, CREATE_DTO = DTO> {
|
|
89
|
+
resource$: Observable<DTO | undefined>;
|
|
90
|
+
loadingState$: Observable<RequestState>;
|
|
91
|
+
requestState$: Observable<RequestState>;
|
|
92
|
+
errors$: Observable<ERROR | undefined>;
|
|
93
|
+
isReady$: Observable<boolean>;
|
|
94
|
+
create(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['create']>): void;
|
|
95
|
+
load(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['load']>): void;
|
|
96
|
+
save(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['save']>): void;
|
|
97
|
+
delete(props: ActionPayload<FormActions<DTO, ERROR, CREATE_DTO>['delete']>): void;
|
|
98
|
+
reset(): void;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* @deprecated This class is deprecated and will be removed in a future release. Please use `createFormEffects` instead.
|
|
103
|
+
*/
|
|
104
|
+
declare abstract class AbstractFormEffects<DTO, ERROR, CREATE_DTO = DTO> {
|
|
105
|
+
protected readonly actions$: Actions;
|
|
106
|
+
protected readonly store: Store;
|
|
107
|
+
private readonly service;
|
|
108
|
+
private readonly formActions;
|
|
109
|
+
private readonly notificationService;
|
|
110
|
+
load$: rxjs.Observable<({
|
|
111
|
+
resource: DTO;
|
|
112
|
+
} & _ngrx_store.Action<string>) | ({
|
|
113
|
+
errors: ERROR;
|
|
114
|
+
} & _ngrx_store.Action<string>)> & _ngrx_effects.CreateEffectMetadata;
|
|
115
|
+
create$: rxjs.Observable<({
|
|
116
|
+
resource: DTO;
|
|
117
|
+
} & _ngrx_store.Action<string>) | ({
|
|
118
|
+
errors: ERROR;
|
|
119
|
+
} & _ngrx_store.Action<string>)> & _ngrx_effects.CreateEffectMetadata;
|
|
120
|
+
update$: rxjs.Observable<({
|
|
121
|
+
resource: DTO;
|
|
122
|
+
} & _ngrx_store.Action<string>) | ({
|
|
123
|
+
errors: ERROR;
|
|
124
|
+
} & _ngrx_store.Action<string>)> & _ngrx_effects.CreateEffectMetadata;
|
|
125
|
+
delete$: rxjs.Observable<({
|
|
126
|
+
id: string;
|
|
127
|
+
} & _ngrx_store.Action<string>) | ({
|
|
128
|
+
errors: ERROR;
|
|
129
|
+
} & _ngrx_store.Action<string>)> & _ngrx_effects.CreateEffectMetadata;
|
|
130
|
+
errorsHandler$: rxjs.Observable<({
|
|
131
|
+
errors: ERROR;
|
|
132
|
+
} & _ngrx_store.Action<string>) | ({
|
|
133
|
+
errors: ERROR;
|
|
134
|
+
} & _ngrx_store.Action<string>) | ({
|
|
135
|
+
errors: ERROR;
|
|
136
|
+
} & _ngrx_store.Action<string>) | ({
|
|
137
|
+
errors: ERROR;
|
|
138
|
+
} & _ngrx_store.Action<string>)> & _ngrx_effects.CreateEffectMetadata;
|
|
139
|
+
protected constructor(actions$: Actions, store: Store, service: FormService<DTO, CREATE_DTO>, formActions: FormActions<DTO, ERROR, CREATE_DTO>, notificationService: FormNotificationService<ERROR>);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @deprecated This class is deprecated and will be removed in a future release.
|
|
144
|
+
*/
|
|
145
|
+
declare abstract class AbstractFormReducerManager<DTO, ERROR, CREATE_DTO = DTO> {
|
|
146
|
+
private readonly reducerManager;
|
|
147
|
+
private readonly featureKey;
|
|
148
|
+
actions: FormActions<DTO, ERROR, CREATE_DTO>;
|
|
149
|
+
selectors: FormSelectors<DTO, ERROR>;
|
|
150
|
+
constructor(reducerManager: ReducerManager, featureKey: string);
|
|
151
|
+
protected getActions(): FormActions<DTO, ERROR, CREATE_DTO>;
|
|
152
|
+
protected addReducer(): void;
|
|
153
|
+
protected getSelectors(): FormSelectors<DTO, ERROR>;
|
|
154
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AbstractFormReducerManager<any, any, any>, never>;
|
|
155
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<AbstractFormReducerManager<any, any, any>>;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* @deprecated This class is deprecated and will be removed in a future release. Please use `provideFormFacade` or `createFormFacade` instead.
|
|
160
|
+
*/
|
|
161
|
+
declare abstract class AbstractFormFacade<DTO, E, CREATE_DTO = DTO> {
|
|
162
|
+
protected readonly store: Store;
|
|
163
|
+
private readonly formActions;
|
|
164
|
+
private readonly formSelectors;
|
|
165
|
+
readonly resource$: rxjs.Observable<DTO | undefined>;
|
|
166
|
+
readonly loadingState$: rxjs.Observable<_ngdux_form.RequestState>;
|
|
167
|
+
readonly requestState$: rxjs.Observable<_ngdux_form.RequestState>;
|
|
168
|
+
readonly errors$: rxjs.Observable<E | undefined>;
|
|
169
|
+
readonly isReady$: rxjs.Observable<boolean>;
|
|
170
|
+
constructor(store: Store, formActions: FormActions<DTO, E, CREATE_DTO>, formSelectors: FormSelectors<DTO, E>);
|
|
171
|
+
create(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['create']>): void;
|
|
172
|
+
load(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['load']>): void;
|
|
173
|
+
save(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['save']>): void;
|
|
174
|
+
delete(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['delete']>): void;
|
|
175
|
+
reset(): void;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
declare function createFormActions<DTO, ERROR, CREATE_DTO = DTO>(featureName: string): FormActions<DTO, ERROR, CREATE_DTO>;
|
|
179
|
+
|
|
180
|
+
declare function createFormReducer<DTO, ERROR, CREATE_DTO = DTO>(actions: FormActions<DTO, ERROR, CREATE_DTO>, actionHandlers?: ReducerTypes<FormState<DTO, ERROR>, ActionCreator[]>[], initialFormState?: Record<string, any>): ActionReducer<FormState<DTO, ERROR>>;
|
|
181
|
+
|
|
182
|
+
declare function createFormSelectors<T, E>(getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>): FormSelectors<T, E>;
|
|
183
|
+
|
|
184
|
+
declare function createFormState<DTO, ERROR, CREATE_DTO = DTO>(featureName: string): {
|
|
185
|
+
actions: _ngdux_form.FormActions<DTO, ERROR, CREATE_DTO>;
|
|
186
|
+
reducer: (state: FormState<DTO, ERROR>, action: Action) => FormState<DTO, ERROR>;
|
|
187
|
+
selectors: _ngdux_form.FormSelectors<DTO, ERROR>;
|
|
188
|
+
};
|
|
189
|
+
declare function provideFormState<DTO, ERROR, CREATE_DTO = DTO>(featureKey: string, facadeToken: InjectionToken<FormFacade<DTO, ERROR, CREATE_DTO>>, service: ProviderToken<FormService<DTO, CREATE_DTO>>, notificationService: ProviderToken<FormNotificationService<ERROR>>): (_angular_core.Type<FormService<DTO, CREATE_DTO>> | _angular_core.AbstractType<FormService<DTO, CREATE_DTO>> | InjectionToken<FormService<DTO, CREATE_DTO>> | _angular_core.Type<FormNotificationService<ERROR>> | _angular_core.AbstractType<FormNotificationService<ERROR>> | _angular_core.EnvironmentProviders | {
|
|
190
|
+
provide: InjectionToken<FormFacade<DTO, ERROR, CREATE_DTO>>;
|
|
191
|
+
useFactory: () => FormFacade<DTO, ERROR, CREATE_DTO>;
|
|
192
|
+
})[];
|
|
193
|
+
|
|
194
|
+
export { AbstractFormEffects, AbstractFormFacade, AbstractFormReducerManager, FORM_FEATURE_KEY, createFormActions, createFormReducer, createFormSelectors, createFormState, provideFormState };
|
|
195
|
+
export type { FormActions, FormFacade, FormSelectors, FormState };
|
package/esm2022/index.mjs
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { RequestState } from '@ngdux/data-model-common';
|
|
2
|
-
export * from './lib/+state/abstract-form-effects';
|
|
3
|
-
export * from './lib/+state/abstract-form-state.service';
|
|
4
|
-
export * from './lib/+state/abstract-form.facade';
|
|
5
|
-
export * from './lib/+state/form-actions';
|
|
6
|
-
export * from './lib/+state/form-reducer';
|
|
7
|
-
export * from './lib/+state/form-selectors';
|
|
8
|
-
export * from './lib/+state/form-state';
|
|
9
|
-
export * from './lib/models/form.model';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvZm9ybS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF3QyxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RixjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBGb3JtTm90aWZpY2F0aW9uU2VydmljZSwgRm9ybVNlcnZpY2UsIFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9hYnN0cmFjdC1mb3JtLWVmZmVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1zdGF0ZS5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2Fic3RyYWN0LWZvcm0uZmFjYWRlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvK3N0YXRlL2Zvcm0tYWN0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliLytzdGF0ZS9mb3JtLXJlZHVjZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvZm9ybS1zZWxlY3RvcnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi8rc3RhdGUvZm9ybS1zdGF0ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21vZGVscy9mb3JtLm1vZGVsJztcclxuIl19
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { createEffect, ofType } from '@ngrx/effects';
|
|
2
|
-
import { of } from 'rxjs';
|
|
3
|
-
import { catchError, exhaustMap, map, switchMap, tap } from 'rxjs/operators';
|
|
4
|
-
export class AbstractFormEffects {
|
|
5
|
-
constructor(actions$, store, service, formActions, notificationService) {
|
|
6
|
-
this.actions$ = actions$;
|
|
7
|
-
this.store = store;
|
|
8
|
-
this.service = service;
|
|
9
|
-
this.formActions = formActions;
|
|
10
|
-
this.notificationService = notificationService;
|
|
11
|
-
this.load$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.load), switchMap(({ id }) => this.service.loadResource(id).pipe(map(resource => this.formActions.loadSuccess({ resource })), catchError((errors) => of(this.formActions.loadFailure({ errors })))))));
|
|
12
|
-
this.create$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.create), switchMap(action => {
|
|
13
|
-
if (!this.service.createResource) {
|
|
14
|
-
throw new Error('createResource not implement in the ListService');
|
|
15
|
-
}
|
|
16
|
-
return this.service.createResource(action.resource).pipe(map(resource => this.formActions.createSuccess({ resource })), catchError((errors) => of(this.formActions.createFailure({ errors }))));
|
|
17
|
-
})));
|
|
18
|
-
this.update$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.save), switchMap(({ resource }) => {
|
|
19
|
-
if (!this.service.saveResource) {
|
|
20
|
-
throw new Error('saveResource not implement in the ListService');
|
|
21
|
-
}
|
|
22
|
-
return this.service.saveResource(resource).pipe(map(response => this.formActions.saveSuccess({ resource: response })), catchError((errors) => of(this.formActions.saveFailure({ errors }))));
|
|
23
|
-
})));
|
|
24
|
-
this.delete$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.delete), exhaustMap(action => {
|
|
25
|
-
if (!this.service.deleteResource) {
|
|
26
|
-
throw new Error('deleteResource not implement in the ListService');
|
|
27
|
-
}
|
|
28
|
-
return this.service.deleteResource(action.id).pipe(map(() => this.formActions.deleteSuccess({ id: action.id })), catchError((errors) => of(this.formActions.deleteFailure({ errors }))));
|
|
29
|
-
})));
|
|
30
|
-
this.errorsHandler$ = createEffect(() => this.actions$.pipe(ofType(this.formActions.saveFailure, this.formActions.loadFailure, this.formActions.deleteFailure, this.formActions.createFailure), tap(({ errors }) => {
|
|
31
|
-
this.notificationService.onFormErrors(errors);
|
|
32
|
-
})), { dispatch: false });
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1lZmZlY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3RSxNQUFNLE9BQWdCLG1CQUFtQjtJQTZFdkMsWUFDcUIsUUFBaUIsRUFDakIsS0FBWSxFQUNkLE9BQXFDLEVBQ3JDLFdBQWdELEVBQ2hELG1CQUFtRDtRQUpqRCxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUE4QjtRQUNyQyxnQkFBVyxHQUFYLFdBQVcsQ0FBcUM7UUFDaEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFnQztRQWpGdEUsVUFBSyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUM3QixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNoQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENB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Q0FBQyxDQUFDLENBQUMsQ0FDOUUsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQ0YsQ0FBQztRQUVGLG1CQUFjLEdBQUcsWUFBWSxDQUMzQixHQUFHLEVBQUUsQ0FDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUMvQixFQUNELEdBQUcsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUNILEVBQ0gsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQ3BCLENBQUM7SUFRQyxDQUFDO0NBQ0wiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtTm90aWZpY2F0aW9uU2VydmljZSwgRm9ybVNlcnZpY2UgfSBmcm9tICdAbmdkdXgvZGF0YS1tb2RlbC1jb21tb24nO1xyXG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZXhoYXVzdE1hcCwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRm9ybUFjdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGb3JtRWZmZWN0czxEVE8sIEVSUk9SLCBDUkVBVEVfRFRPID0gRFRPPiB7XHJcbiAgbG9hZCQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMuZm9ybUFjdGlvbnMubG9hZCksXHJcbiAgICAgIHN3aXRjaE1hcCgoeyBpZCB9KSA9PlxyXG4gICAgICAgIHRoaXMuc2VydmljZS5sb2FkUmVzb3VyY2UoaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAocmVzb3VyY2UgPT4gdGhpcy5mb3JtQWN0aW9ucy5sb2FkU3VjY2Vzcyh7IHJlc291cmNlIH0pKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRVJST1IpID0+IG9mKHRoaXMuZm9ybUFjdGlvbnMubG9hZEZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgIClcclxuICAgICAgKVxyXG4gICAgKVxyXG4gICk7XHJcblxyXG4gIGNyZWF0ZSQgPSBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcclxuICAgICAgb2ZUeXBlKHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlKSxcclxuICAgICAgc3dpdGNoTWFwKGFjdGlvbiA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNlcnZpY2UuY3JlYXRlUmVzb3VyY2UpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignY3JlYXRlUmVzb3VyY2Ugbm90IGltcGxlbWVudCBpbiB0aGUgTGlzdFNlcnZpY2UnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2UuY3JlYXRlUmVzb3VyY2UoYWN0aW9uLnJlc291cmNlKS5waXBlKFxyXG4gICAgICAgICAgbWFwKHJlc291cmNlID0+IHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlU3VjY2Vzcyh7IHJlc291cmNlIH0pKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yczogRVJST1IpID0+IG9mKHRoaXMuZm9ybUFjdGlvbnMuY3JlYXRlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG5cclxuICB1cGRhdGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmZvcm1BY3Rpb25zLnNhdmUpLFxyXG4gICAgICBzd2l0Y2hNYXAoKHsgcmVzb3VyY2UgfSkgPT4ge1xyXG4gICAgICAgIGlmICghdGhpcy5zZXJ2aWNlLnNhdmVSZXNvdXJjZSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzYXZlUmVzb3VyY2Ugbm90IGltcGxlbWVudCBpbiB0aGUgTGlzdFNlcnZpY2UnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLnNlcnZpY2Uuc2F2ZVJlc291cmNlKHJlc291cmNlKS5waXBlKFxyXG4gICAgICAgICAgbWFwKHJlc3BvbnNlID0+IHRoaXMuZm9ybUFjdGlvbnMuc2F2ZVN1Y2Nlc3MoeyByZXNvdXJjZTogcmVzcG9uc2UgfSkpLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3JzOiBFUlJPUikgPT4gb2YodGhpcy5mb3JtQWN0aW9ucy5zYXZlRmFpbHVyZSh7IGVycm9ycyB9KSkpXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG5cclxuICBkZWxldGUkID0gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZSh0aGlzLmZvcm1BY3Rpb25zLmRlbGV0ZSksXHJcbiAgICAgIGV4aGF1c3RNYXAoYWN0aW9uID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZSkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkZWxldGVSZXNvdXJjZSBub3QgaW1wbGVtZW50IGluIHRoZSBMaXN0U2VydmljZScpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VydmljZS5kZWxldGVSZXNvdXJjZShhY3Rpb24uaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtQWN0aW9ucy5kZWxldGVTdWNjZXNzKHsgaWQ6IGFjdGlvbi5pZCB9KSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcnM6IEVSUk9SKSA9PiBvZih0aGlzLmZvcm1BY3Rpb25zLmRlbGV0ZUZhaWx1cmUoeyBlcnJvcnMgfSkpKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxuXHJcbiAgZXJyb3JzSGFuZGxlciQgPSBjcmVhdGVFZmZlY3QoXHJcbiAgICAoKSA9PlxyXG4gICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKFxyXG4gICAgICAgICAgdGhpcy5mb3JtQWN0aW9ucy5zYXZlRmFpbHVyZSxcclxuICAgICAgICAgIHRoaXMuZm9ybUFjdGlvbnMubG9hZEZhaWx1cmUsXHJcbiAgICAgICAgICB0aGlzLmZvcm1BY3Rpb25zLmRlbGV0ZUZhaWx1cmUsXHJcbiAgICAgICAgICB0aGlzLmZvcm1BY3Rpb25zLmNyZWF0ZUZhaWx1cmVcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgoeyBlcnJvcnMgfSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLm9uRm9ybUVycm9ycyhlcnJvcnMpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICksXHJcbiAgICB7IGRpc3BhdGNoOiBmYWxzZSB9XHJcbiAgKTtcclxuXHJcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN0b3JlOiBTdG9yZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogRm9ybVNlcnZpY2U8RFRPLCBDUkVBVEVfRFRPPixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUFjdGlvbnM6IEZvcm1BY3Rpb25zPERUTywgRVJST1IsIENSRUFURV9EVE8+LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBGb3JtTm90aWZpY2F0aW9uU2VydmljZTxFUlJPUj5cclxuICApIHt9XHJcbn1cclxuIl19
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { ReducerManager, createFeatureSelector } from '@ngrx/store';
|
|
3
|
-
import { FORM_FEATURE_KEY } from '../models/form.model';
|
|
4
|
-
import { createFormActions } from './form-actions';
|
|
5
|
-
import { createFormReducer } from './form-reducer';
|
|
6
|
-
import { createFormSelectors } from './form-selectors';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@ngrx/store";
|
|
9
|
-
export class AbstractFormReducerManager {
|
|
10
|
-
constructor(reducerManager, featureKey) {
|
|
11
|
-
this.reducerManager = reducerManager;
|
|
12
|
-
this.featureKey = featureKey;
|
|
13
|
-
this.actions = this.getActions();
|
|
14
|
-
this.addReducer();
|
|
15
|
-
this.selectors = this.getSelectors();
|
|
16
|
-
}
|
|
17
|
-
getActions() {
|
|
18
|
-
return createFormActions(this.featureKey);
|
|
19
|
-
}
|
|
20
|
-
addReducer() {
|
|
21
|
-
if (!this.reducerManager.currentReducers[this.featureKey]) {
|
|
22
|
-
const reducer = createFormReducer(this.actions);
|
|
23
|
-
this.reducerManager.addReducer(this.featureKey, reducer);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
getSelectors() {
|
|
27
|
-
const getState = createFeatureSelector(this.featureKey);
|
|
28
|
-
return createFormSelectors(getState);
|
|
29
|
-
}
|
|
30
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AbstractFormReducerManager, deps: [{ token: i1.ReducerManager }, { token: FORM_FEATURE_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
31
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AbstractFormReducerManager }); }
|
|
32
|
-
}
|
|
33
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.2", ngImport: i0, type: AbstractFormReducerManager, decorators: [{
|
|
34
|
-
type: Injectable
|
|
35
|
-
}], ctorParameters: () => [{ type: i1.ReducerManager }, { type: undefined, decorators: [{
|
|
36
|
-
type: Inject,
|
|
37
|
-
args: [FORM_FEATURE_KEY]
|
|
38
|
-
}] }] });
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvYWJzdHJhY3QtZm9ybS1zdGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUF5QyxNQUFNLHNCQUFzQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7QUFHdkQsTUFBTSxPQUFnQiwwQkFBMEI7SUFJOUMsWUFDbUIsY0FBOEIsRUFDSixVQUFrQjtRQUQ1QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDSixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBRTdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRVMsVUFBVTtRQUNsQixPQUFPLGlCQUFpQixDQUF5QixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVTLFVBQVU7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzFELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNoRCxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDO0lBRVMsWUFBWTtRQUNwQixNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBd0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQzs4R0EzQm1CLDBCQUEwQixnREFNcEMsZ0JBQWdCO2tIQU5OLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEL0MsVUFBVTs7MEJBT04sTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVkdWNlck1hbmFnZXIsIGNyZWF0ZUZlYXR1cmVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgRk9STV9GRUFUVVJFX0tFWSwgRm9ybUFjdGlvbnMsIEZvcm1TZWxlY3RvcnMsIEZvcm1TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgY3JlYXRlRm9ybUFjdGlvbnMgfSBmcm9tICcuL2Zvcm0tYWN0aW9ucyc7XHJcbmltcG9ydCB7IGNyZWF0ZUZvcm1SZWR1Y2VyIH0gZnJvbSAnLi9mb3JtLXJlZHVjZXInO1xyXG5pbXBvcnQgeyBjcmVhdGVGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi9mb3JtLXNlbGVjdG9ycyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEZvcm1SZWR1Y2VyTWFuYWdlcjxEVE8sIEVSUk9SLCBDUkVBVEVfRFRPID0gRFRPPiB7XHJcbiAgYWN0aW9uczogRm9ybUFjdGlvbnM8RFRPLCBFUlJPUiwgQ1JFQVRFX0RUTz47XHJcbiAgc2VsZWN0b3JzOiBGb3JtU2VsZWN0b3JzPERUTywgRVJST1I+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVkdWNlck1hbmFnZXI6IFJlZHVjZXJNYW5hZ2VyLFxyXG4gICAgQEluamVjdChGT1JNX0ZFQVRVUkVfS0VZKSBwcml2YXRlIHJlYWRvbmx5IGZlYXR1cmVLZXk6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgdGhpcy5hY3Rpb25zID0gdGhpcy5nZXRBY3Rpb25zKCk7XHJcbiAgICB0aGlzLmFkZFJlZHVjZXIoKTtcclxuICAgIHRoaXMuc2VsZWN0b3JzID0gdGhpcy5nZXRTZWxlY3RvcnMoKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRBY3Rpb25zKCkge1xyXG4gICAgcmV0dXJuIGNyZWF0ZUZvcm1BY3Rpb25zPERUTywgRVJST1IsIENSRUFURV9EVE8+KHRoaXMuZmVhdHVyZUtleSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYWRkUmVkdWNlcigpIHtcclxuICAgIGlmICghdGhpcy5yZWR1Y2VyTWFuYWdlci5jdXJyZW50UmVkdWNlcnNbdGhpcy5mZWF0dXJlS2V5XSkge1xyXG4gICAgICBjb25zdCByZWR1Y2VyID0gY3JlYXRlRm9ybVJlZHVjZXIodGhpcy5hY3Rpb25zKTtcclxuICAgICAgdGhpcy5yZWR1Y2VyTWFuYWdlci5hZGRSZWR1Y2VyKHRoaXMuZmVhdHVyZUtleSwgcmVkdWNlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0U2VsZWN0b3JzKCkge1xyXG4gICAgY29uc3QgZ2V0U3RhdGUgPSBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8Rm9ybVN0YXRlPERUTywgRVJST1I+Pih0aGlzLmZlYXR1cmVLZXkpO1xyXG4gICAgcmV0dXJuIGNyZWF0ZUZvcm1TZWxlY3RvcnMoZ2V0U3RhdGUpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { select } from '@ngrx/store';
|
|
2
|
-
export class AbstractFormFacade {
|
|
3
|
-
constructor(store, formActions, formSelectors) {
|
|
4
|
-
this.store = store;
|
|
5
|
-
this.formActions = formActions;
|
|
6
|
-
this.formSelectors = formSelectors;
|
|
7
|
-
this.resource$ = this.store.pipe(select(this.formSelectors.getResource));
|
|
8
|
-
this.loadingState$ = this.store.pipe(select(this.formSelectors.getLoadingState));
|
|
9
|
-
this.requestState$ = this.store.pipe(select(this.formSelectors.getRequestState));
|
|
10
|
-
this.errors$ = this.store.pipe(select(this.formSelectors.getErrors));
|
|
11
|
-
this.isReady$ = this.store.pipe(select(this.formSelectors.isReady));
|
|
12
|
-
}
|
|
13
|
-
create(props) {
|
|
14
|
-
this.store.dispatch(this.formActions.create(props));
|
|
15
|
-
}
|
|
16
|
-
load(props) {
|
|
17
|
-
this.store.dispatch(this.formActions.load(props));
|
|
18
|
-
}
|
|
19
|
-
save(props) {
|
|
20
|
-
this.store.dispatch(this.formActions.save(props));
|
|
21
|
-
}
|
|
22
|
-
delete(props) {
|
|
23
|
-
this.store.dispatch(this.formActions.delete(props));
|
|
24
|
-
}
|
|
25
|
-
reset() {
|
|
26
|
-
this.store.dispatch(this.formActions.reset());
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZm9ybS5mYWNhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvZm9ybS9zcmMvbGliLytzdGF0ZS9hYnN0cmFjdC1mb3JtLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRzVDLE1BQU0sT0FBZ0Isa0JBQWtCO0lBT3RDLFlBQ3FCLEtBQVksRUFDZCxXQUE0QyxFQUM1QyxhQUFvQztRQUZsQyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ2QsZ0JBQVcsR0FBWCxXQUFXLENBQWlDO1FBQzVDLGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQVQ5QyxjQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNwRSxrQkFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDNUUsa0JBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQzVFLFlBQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLGFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBTXJFLENBQUM7SUFFSixNQUFNLENBQUMsS0FBK0Q7UUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQTZEO1FBQ2hFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksQ0FBQyxLQUE2RDtRQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxNQUFNLENBQUMsS0FBK0Q7UUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25QYXlsb2FkIH0gZnJvbSAnQG5nZHV4L3N0b3JlLWNvbW1vbic7XHJcbmltcG9ydCB7IHNlbGVjdCwgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IEZvcm1BY3Rpb25zLCBGb3JtU2VsZWN0b3JzIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Rm9ybUZhY2FkZTxEVE8sIEUsIENSRUFURV9EVE8gPSBEVE8+IHtcclxuICByZWFkb25seSByZXNvdXJjZSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMuZm9ybVNlbGVjdG9ycy5nZXRSZXNvdXJjZSkpO1xyXG4gIHJlYWRvbmx5IGxvYWRpbmdTdGF0ZSQgPSB0aGlzLnN0b3JlLnBpcGUoc2VsZWN0KHRoaXMuZm9ybVNlbGVjdG9ycy5nZXRMb2FkaW5nU3RhdGUpKTtcclxuICByZWFkb25seSByZXF1ZXN0U3RhdGUkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmZvcm1TZWxlY3RvcnMuZ2V0UmVxdWVzdFN0YXRlKSk7XHJcbiAgcmVhZG9ubHkgZXJyb3JzJCA9IHRoaXMuc3RvcmUucGlwZShzZWxlY3QodGhpcy5mb3JtU2VsZWN0b3JzLmdldEVycm9ycykpO1xyXG4gIHJlYWRvbmx5IGlzUmVhZHkkID0gdGhpcy5zdG9yZS5waXBlKHNlbGVjdCh0aGlzLmZvcm1TZWxlY3RvcnMuaXNSZWFkeSkpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBzdG9yZTogU3RvcmUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1BY3Rpb25zOiBGb3JtQWN0aW9uczxEVE8sIEUsIENSRUFURV9EVE8+LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtU2VsZWN0b3JzOiBGb3JtU2VsZWN0b3JzPERUTywgRT5cclxuICApIHt9XHJcblxyXG4gIGNyZWF0ZShwcm9wczogQWN0aW9uUGF5bG9hZDxGb3JtQWN0aW9uczxEVE8sIEUsIENSRUFURV9EVE8+WydjcmVhdGUnXT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5mb3JtQWN0aW9ucy5jcmVhdGUocHJvcHMpKTtcclxuICB9XHJcblxyXG4gIGxvYWQocHJvcHM6IEFjdGlvblBheWxvYWQ8Rm9ybUFjdGlvbnM8RFRPLCBFLCBDUkVBVEVfRFRPPlsnbG9hZCddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmZvcm1BY3Rpb25zLmxvYWQocHJvcHMpKTtcclxuICB9XHJcblxyXG4gIHNhdmUocHJvcHM6IEFjdGlvblBheWxvYWQ8Rm9ybUFjdGlvbnM8RFRPLCBFLCBDUkVBVEVfRFRPPlsnc2F2ZSddPik6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmZvcm1BY3Rpb25zLnNhdmUocHJvcHMpKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZShwcm9wczogQWN0aW9uUGF5bG9hZDxGb3JtQWN0aW9uczxEVE8sIEUsIENSRUFURV9EVE8+WydkZWxldGUnXT4pOiB2b2lkIHtcclxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2godGhpcy5mb3JtQWN0aW9ucy5kZWxldGUocHJvcHMpKTtcclxuICB9XHJcblxyXG4gIHJlc2V0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaCh0aGlzLmZvcm1BY3Rpb25zLnJlc2V0KCkpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { createAction, props } from '@ngrx/store';
|
|
2
|
-
export function createFormActions(featureName) {
|
|
3
|
-
const load = createAction(`[${featureName} API] Load ${featureName}`, props());
|
|
4
|
-
const loadSuccess = createAction(`[${featureName} API] Load ${featureName} Success`, props());
|
|
5
|
-
const loadFailure = createAction(`[${featureName} API] Load ${featureName} Failure`, props());
|
|
6
|
-
const save = createAction(`[${featureName} API] Save ${featureName}`, props());
|
|
7
|
-
const saveSuccess = createAction(`[${featureName} API] Save ${featureName} Success`, props());
|
|
8
|
-
const saveFailure = createAction(`[${featureName} API] Save ${featureName} Failure`, props());
|
|
9
|
-
const deleteAction = createAction(`[${featureName} API] Delete ${featureName}`, props());
|
|
10
|
-
const deleteSuccess = createAction(`[${featureName} API] Delete ${featureName} Success`, props());
|
|
11
|
-
const deleteFailure = createAction(`[${featureName} API] Delete ${featureName} Failure`, props());
|
|
12
|
-
const create = createAction(`[${featureName} API] Create ${featureName}`, props());
|
|
13
|
-
const createSuccess = createAction(`[${featureName} API] Create ${featureName} Success`, props());
|
|
14
|
-
const createFailure = createAction(`[${featureName} API] Create ${featureName} Failure`, props());
|
|
15
|
-
const reset = createAction(`[${featureName} API] Reset ${featureName}`);
|
|
16
|
-
return {
|
|
17
|
-
load,
|
|
18
|
-
loadSuccess,
|
|
19
|
-
loadFailure,
|
|
20
|
-
save,
|
|
21
|
-
saveSuccess,
|
|
22
|
-
saveFailure,
|
|
23
|
-
delete: deleteAction,
|
|
24
|
-
deleteSuccess,
|
|
25
|
-
deleteFailure,
|
|
26
|
-
create,
|
|
27
|
-
createSuccess,
|
|
28
|
-
createFailure,
|
|
29
|
-
reset
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvZm9ybS1hY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR2xELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsV0FBbUI7SUFFbkIsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxjQUFjLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBa0IsQ0FBQyxDQUFDO0lBQy9GLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsY0FBYyxXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQXFCLENBQUMsQ0FBQztJQUNqSCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGNBQWMsV0FBVyxVQUFVLEVBQUUsS0FBSyxFQUFxQixDQUFDLENBQUM7SUFFakgsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxjQUFjLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBcUIsQ0FBQyxDQUFDO0lBQ2xHLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxJQUFJLFdBQVcsY0FBYyxXQUFXLFVBQVUsRUFBRSxLQUFLLEVBQXFCLENBQUMsQ0FBQztJQUNqSCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsSUFBSSxXQUFXLGNBQWMsV0FBVyxVQUFVLEVBQUUsS0FBSyxFQUFxQixDQUFDLENBQUM7SUFFakgsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFrQixDQUFDLENBQUM7SUFDekcsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxVQUFVLEVBQUUsS0FBSyxFQUFrQixDQUFDLENBQUM7SUFDbEgsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxVQUFVLEVBQUUsS0FBSyxFQUFxQixDQUFDLENBQUM7SUFFckgsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUE0QixDQUFDLENBQUM7SUFDN0csTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxVQUFVLEVBQUUsS0FBSyxFQUFxQixDQUFDLENBQUM7SUFDckgsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxnQkFBZ0IsV0FBVyxVQUFVLEVBQUUsS0FBSyxFQUFxQixDQUFDLENBQUM7SUFFckgsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksV0FBVyxlQUFlLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFeEUsT0FBTztRQUNMLElBQUk7UUFDSixXQUFXO1FBQ1gsV0FBVztRQUNYLElBQUk7UUFDSixXQUFXO1FBQ1gsV0FBVztRQUNYLE1BQU0sRUFBRSxZQUFZO1FBQ3BCLGFBQWE7UUFDYixhQUFhO1FBQ2IsTUFBTTtRQUNOLGFBQWE7UUFDYixhQUFhO1FBQ2IsS0FBSztLQUNOLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgRm9ybUFjdGlvbnMgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybUFjdGlvbnM8RFRPLCBFUlJPUiwgQ1JFQVRFX0RUTyA9IERUTz4oXHJcbiAgZmVhdHVyZU5hbWU6IHN0cmluZ1xyXG4pOiBGb3JtQWN0aW9uczxEVE8sIEVSUk9SLCBDUkVBVEVfRFRPPiB7XHJcbiAgY29uc3QgbG9hZCA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gTG9hZCAke2ZlYXR1cmVOYW1lfWAsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKTtcclxuICBjb25zdCBsb2FkU3VjY2VzcyA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gTG9hZCAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCwgcHJvcHM8eyByZXNvdXJjZTogRFRPIH0+KCkpO1xyXG4gIGNvbnN0IGxvYWRGYWlsdXJlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBMb2FkICR7ZmVhdHVyZU5hbWV9IEZhaWx1cmVgLCBwcm9wczx7IGVycm9yczogRVJST1IgfT4oKSk7XHJcblxyXG4gIGNvbnN0IHNhdmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIFNhdmUgJHtmZWF0dXJlTmFtZX1gLCBwcm9wczx7IHJlc291cmNlOiBEVE8gfT4oKSk7XHJcbiAgY29uc3Qgc2F2ZVN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIFNhdmUgJHtmZWF0dXJlTmFtZX0gU3VjY2Vzc2AsIHByb3BzPHsgcmVzb3VyY2U6IERUTyB9PigpKTtcclxuICBjb25zdCBzYXZlRmFpbHVyZSA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gU2F2ZSAke2ZlYXR1cmVOYW1lfSBGYWlsdXJlYCwgcHJvcHM8eyBlcnJvcnM6IEVSUk9SIH0+KCkpO1xyXG5cclxuICBjb25zdCBkZWxldGVBY3Rpb24gPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIERlbGV0ZSAke2ZlYXR1cmVOYW1lfWAsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKTtcclxuICBjb25zdCBkZWxldGVTdWNjZXNzID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBEZWxldGUgJHtmZWF0dXJlTmFtZX0gU3VjY2Vzc2AsIHByb3BzPHsgaWQ6IHN0cmluZyB9PigpKTtcclxuICBjb25zdCBkZWxldGVGYWlsdXJlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBEZWxldGUgJHtmZWF0dXJlTmFtZX0gRmFpbHVyZWAsIHByb3BzPHsgZXJyb3JzOiBFUlJPUiB9PigpKTtcclxuXHJcbiAgY29uc3QgY3JlYXRlID0gY3JlYXRlQWN0aW9uKGBbJHtmZWF0dXJlTmFtZX0gQVBJXSBDcmVhdGUgJHtmZWF0dXJlTmFtZX1gLCBwcm9wczx7IHJlc291cmNlOiBDUkVBVEVfRFRPIH0+KCkpO1xyXG4gIGNvbnN0IGNyZWF0ZVN1Y2Nlc3MgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIENyZWF0ZSAke2ZlYXR1cmVOYW1lfSBTdWNjZXNzYCwgcHJvcHM8eyByZXNvdXJjZTogRFRPIH0+KCkpO1xyXG4gIGNvbnN0IGNyZWF0ZUZhaWx1cmUgPSBjcmVhdGVBY3Rpb24oYFske2ZlYXR1cmVOYW1lfSBBUEldIENyZWF0ZSAke2ZlYXR1cmVOYW1lfSBGYWlsdXJlYCwgcHJvcHM8eyBlcnJvcnM6IEVSUk9SIH0+KCkpO1xyXG5cclxuICBjb25zdCByZXNldCA9IGNyZWF0ZUFjdGlvbihgWyR7ZmVhdHVyZU5hbWV9IEFQSV0gUmVzZXQgJHtmZWF0dXJlTmFtZX1gKTtcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGxvYWQsXHJcbiAgICBsb2FkU3VjY2VzcyxcclxuICAgIGxvYWRGYWlsdXJlLFxyXG4gICAgc2F2ZSxcclxuICAgIHNhdmVTdWNjZXNzLFxyXG4gICAgc2F2ZUZhaWx1cmUsXHJcbiAgICBkZWxldGU6IGRlbGV0ZUFjdGlvbixcclxuICAgIGRlbGV0ZVN1Y2Nlc3MsXHJcbiAgICBkZWxldGVGYWlsdXJlLFxyXG4gICAgY3JlYXRlLFxyXG4gICAgY3JlYXRlU3VjY2VzcyxcclxuICAgIGNyZWF0ZUZhaWx1cmUsXHJcbiAgICByZXNldFxyXG4gIH07XHJcbn1cclxuIl19
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { RequestState } from '@ngdux/data-model-common';
|
|
2
|
-
import { createLoadingStateActionHandlers, createRequestStateActionHandlers } from '@ngdux/store-common';
|
|
3
|
-
import { createReducer, on } from '@ngrx/store';
|
|
4
|
-
export function createFormReducer(actions, actionHandlers, initialFormState) {
|
|
5
|
-
const initialState = { ...createInitialFormState(), ...initialFormState };
|
|
6
|
-
return createReducer(initialState, ...createFormActionHandlers(initialState, actions), ...(actionHandlers || []));
|
|
7
|
-
}
|
|
8
|
-
function createInitialFormState() {
|
|
9
|
-
return {
|
|
10
|
-
resource: undefined,
|
|
11
|
-
loadingState: RequestState.IDLE,
|
|
12
|
-
requestState: RequestState.IDLE,
|
|
13
|
-
errors: undefined
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
function createFormActionHandlers(initialFormState, actions) {
|
|
17
|
-
return [
|
|
18
|
-
on(actions.reset, () => initialFormState),
|
|
19
|
-
on(actions.loadSuccess, actions.createSuccess, actions.saveSuccess, (state, { resource }) => ({ ...state, resource })),
|
|
20
|
-
on(actions.deleteSuccess, (state) => ({
|
|
21
|
-
...state,
|
|
22
|
-
resource: undefined
|
|
23
|
-
})),
|
|
24
|
-
...createRequestStateActionHandlers(actions.load, actions.save, actions.saveSuccess, actions.saveFailure),
|
|
25
|
-
...createRequestStateActionHandlers(undefined, actions.create, actions.createSuccess, actions.createFailure),
|
|
26
|
-
...createRequestStateActionHandlers(undefined, actions.delete, actions.deleteSuccess, actions.deleteFailure),
|
|
27
|
-
...createLoadingStateActionHandlers(actions.load, actions.loadSuccess, actions.loadFailure)
|
|
28
|
-
];
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1yZWR1Y2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9uZ2R1eC91dGlsL3N0b3JlL2Zvcm0vc3JjL2xpYi8rc3RhdGUvZm9ybS1yZWR1Y2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RyxPQUFPLEVBQXVELGFBQWEsRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHckcsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixPQUE0QyxFQUM1QyxjQUF1RSxFQUN2RSxnQkFBc0M7SUFFdEMsTUFBTSxZQUFZLEdBQTBCLEVBQUUsR0FBRyxzQkFBc0IsRUFBYyxFQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztJQUM3RyxPQUFPLGFBQWEsQ0FDbEIsWUFBWSxFQUNaLEdBQUcsd0JBQXdCLENBQXlCLFlBQVksRUFBRSxPQUFPLENBQUMsRUFDMUUsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLHNCQUFzQjtJQUM3QixPQUFPO1FBQ0wsUUFBUSxFQUFFLFNBQVM7UUFDbkIsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJO1FBQy9CLFlBQVksRUFBRSxZQUFZLENBQUMsSUFBSTtRQUMvQixNQUFNLEVBQUUsU0FBUztLQUNsQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQy9CLGdCQUF1QyxFQUN2QyxPQUE0QztJQUU1QyxPQUFPO1FBQ0wsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBMEIsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1FBQ2hFLEVBQUUsQ0FDQSxPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsYUFBYSxFQUNyQixPQUFPLENBQUMsV0FBVyxFQUNuQixDQUFDLEtBQTRCLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBeUIsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUNoRztRQUNELEVBQUUsQ0FDQSxPQUFPLENBQUMsYUFBYSxFQUNyQixDQUFDLEtBQTRCLEVBQXlCLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELEdBQUcsS0FBSztZQUNSLFFBQVEsRUFBRSxTQUFTO1NBQ3BCLENBQUMsQ0FDSDtRQUNELEdBQUcsZ0NBQWdDLENBQ2pDLE9BQU8sQ0FBQyxJQUFJLEVBQ1osT0FBTyxDQUFDLElBQUksRUFDWixPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsV0FBVyxDQUNwQjtRQUNELEdBQUcsZ0NBQWdDLENBQ2pDLFNBQVMsRUFDVCxPQUFPLENBQUMsTUFBTSxFQUNkLE9BQU8sQ0FBQyxhQUFhLEVBQ3JCLE9BQU8sQ0FBQyxhQUFhLENBQ3RCO1FBQ0QsR0FBRyxnQ0FBZ0MsQ0FDakMsU0FBUyxFQUNULE9BQU8sQ0FBQyxNQUFNLEVBQ2QsT0FBTyxDQUFDLGFBQWEsRUFDckIsT0FBTyxDQUFDLGFBQWEsQ0FDdEI7UUFDRCxHQUFHLGdDQUFnQyxDQUF3QixPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQztLQUNuSCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IGNyZWF0ZUxvYWRpbmdTdGF0ZUFjdGlvbkhhbmRsZXJzLCBjcmVhdGVSZXF1ZXN0U3RhdGVBY3Rpb25IYW5kbGVycyB9IGZyb20gJ0BuZ2R1eC9zdG9yZS1jb21tb24nO1xyXG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yLCBBY3Rpb25SZWR1Y2VyLCBDcmVhdG9yLCBSZWR1Y2VyVHlwZXMsIGNyZWF0ZVJlZHVjZXIsIG9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQWN0aW9ucywgRm9ybVN0YXRlIH0gZnJvbSAnLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1SZWR1Y2VyPERUTywgRVJST1IsIENSRUFURV9EVE8gPSBEVE8+KFxyXG4gIGFjdGlvbnM6IEZvcm1BY3Rpb25zPERUTywgRVJST1IsIENSRUFURV9EVE8+LFxyXG4gIGFjdGlvbkhhbmRsZXJzPzogUmVkdWNlclR5cGVzPEZvcm1TdGF0ZTxEVE8sIEVSUk9SPiwgQWN0aW9uQ3JlYXRvcltdPltdLFxyXG4gIGluaXRpYWxGb3JtU3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+XHJcbik6IEFjdGlvblJlZHVjZXI8Rm9ybVN0YXRlPERUTywgRVJST1I+PiB7XHJcbiAgY29uc3QgaW5pdGlhbFN0YXRlOiBGb3JtU3RhdGU8RFRPLCBFUlJPUj4gPSB7IC4uLmNyZWF0ZUluaXRpYWxGb3JtU3RhdGU8RFRPLCBFUlJPUj4oKSwgLi4uaW5pdGlhbEZvcm1TdGF0ZSB9O1xyXG4gIHJldHVybiBjcmVhdGVSZWR1Y2VyPEZvcm1TdGF0ZTxEVE8sIEVSUk9SPj4oXHJcbiAgICBpbml0aWFsU3RhdGUsXHJcbiAgICAuLi5jcmVhdGVGb3JtQWN0aW9uSGFuZGxlcnM8RFRPLCBFUlJPUiwgQ1JFQVRFX0RUTz4oaW5pdGlhbFN0YXRlLCBhY3Rpb25zKSxcclxuICAgIC4uLihhY3Rpb25IYW5kbGVycyB8fCBbXSlcclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVJbml0aWFsRm9ybVN0YXRlPERUTywgRVJST1I+KCk6IEZvcm1TdGF0ZTxEVE8sIEVSUk9SPiB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHJlc291cmNlOiB1bmRlZmluZWQsXHJcbiAgICBsb2FkaW5nU3RhdGU6IFJlcXVlc3RTdGF0ZS5JRExFLFxyXG4gICAgcmVxdWVzdFN0YXRlOiBSZXF1ZXN0U3RhdGUuSURMRSxcclxuICAgIGVycm9yczogdW5kZWZpbmVkXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlRm9ybUFjdGlvbkhhbmRsZXJzPERUTywgRVJST1IsIENSRUFURV9EVE8gPSBEVE8+KFxyXG4gIGluaXRpYWxGb3JtU3RhdGU6IEZvcm1TdGF0ZTxEVE8sIEVSUk9SPixcclxuICBhY3Rpb25zOiBGb3JtQWN0aW9uczxEVE8sIEVSUk9SLCBDUkVBVEVfRFRPPlxyXG4pOiBSZWR1Y2VyVHlwZXM8Rm9ybVN0YXRlPERUTywgRVJST1I+LCBBY3Rpb25DcmVhdG9yPHN0cmluZywgQ3JlYXRvcjxhbnlbXSwgb2JqZWN0Pj5bXT5bXSB7XHJcbiAgcmV0dXJuIFtcclxuICAgIG9uKGFjdGlvbnMucmVzZXQsICgpOiBGb3JtU3RhdGU8RFRPLCBFUlJPUj4gPT4gaW5pdGlhbEZvcm1TdGF0ZSksXHJcbiAgICBvbihcclxuICAgICAgYWN0aW9ucy5sb2FkU3VjY2VzcyxcclxuICAgICAgYWN0aW9ucy5jcmVhdGVTdWNjZXNzLFxyXG4gICAgICBhY3Rpb25zLnNhdmVTdWNjZXNzLFxyXG4gICAgICAoc3RhdGU6IEZvcm1TdGF0ZTxEVE8sIEVSUk9SPiwgeyByZXNvdXJjZSB9KTogRm9ybVN0YXRlPERUTywgRVJST1I+ID0+ICh7IC4uLnN0YXRlLCByZXNvdXJjZSB9KVxyXG4gICAgKSxcclxuICAgIG9uKFxyXG4gICAgICBhY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MsXHJcbiAgICAgIChzdGF0ZTogRm9ybVN0YXRlPERUTywgRVJST1I+KTogRm9ybVN0YXRlPERUTywgRVJST1I+ID0+ICh7XHJcbiAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgcmVzb3VyY2U6IHVuZGVmaW5lZFxyXG4gICAgICB9KVxyXG4gICAgKSxcclxuICAgIC4uLmNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzPEZvcm1TdGF0ZTxEVE8sIEVSUk9SPiwgRVJST1I+KFxyXG4gICAgICBhY3Rpb25zLmxvYWQsXHJcbiAgICAgIGFjdGlvbnMuc2F2ZSxcclxuICAgICAgYWN0aW9ucy5zYXZlU3VjY2VzcyxcclxuICAgICAgYWN0aW9ucy5zYXZlRmFpbHVyZVxyXG4gICAgKSxcclxuICAgIC4uLmNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzPEZvcm1TdGF0ZTxEVE8sIEVSUk9SPiwgRVJST1I+KFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIGFjdGlvbnMuY3JlYXRlLFxyXG4gICAgICBhY3Rpb25zLmNyZWF0ZVN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMuY3JlYXRlRmFpbHVyZVxyXG4gICAgKSxcclxuICAgIC4uLmNyZWF0ZVJlcXVlc3RTdGF0ZUFjdGlvbkhhbmRsZXJzPEZvcm1TdGF0ZTxEVE8sIEVSUk9SPiwgRVJST1I+KFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIGFjdGlvbnMuZGVsZXRlLFxyXG4gICAgICBhY3Rpb25zLmRlbGV0ZVN1Y2Nlc3MsXHJcbiAgICAgIGFjdGlvbnMuZGVsZXRlRmFpbHVyZVxyXG4gICAgKSxcclxuICAgIC4uLmNyZWF0ZUxvYWRpbmdTdGF0ZUFjdGlvbkhhbmRsZXJzPEZvcm1TdGF0ZTxEVE8sIEVSUk9SPj4oYWN0aW9ucy5sb2FkLCBhY3Rpb25zLmxvYWRTdWNjZXNzLCBhY3Rpb25zLmxvYWRGYWlsdXJlKVxyXG4gIF07XHJcbn1cclxuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { RequestState } from '@ngdux/data-model-common';
|
|
2
|
-
import { createSelector } from '@ngrx/store';
|
|
3
|
-
export function createFormSelectors(getFormState) {
|
|
4
|
-
const getRequestState = createSelector(getFormState, state => state.requestState);
|
|
5
|
-
const getLoadingState = createSelector(getFormState, state => state.loadingState);
|
|
6
|
-
const getErrors = createSelector(getFormState, state => state.errors);
|
|
7
|
-
const getResource = createSelector(getFormState, state => state.resource);
|
|
8
|
-
const isReady = createSelector(getResource, getLoadingState, (resource, loadingState) => !!resource && loadingState === RequestState.SUCCESS);
|
|
9
|
-
return {
|
|
10
|
-
getRequestState,
|
|
11
|
-
getLoadingState,
|
|
12
|
-
getErrors,
|
|
13
|
-
getResource,
|
|
14
|
-
isReady
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWxlY3RvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL25nZHV4L3V0aWwvc3RvcmUvZm9ybS9zcmMvbGliLytzdGF0ZS9mb3JtLXNlbGVjdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBd0MsTUFBTSxhQUFhLENBQUM7QUFHbkYsTUFBTSxVQUFVLG1CQUFtQixDQUNqQyxZQUE0RjtJQUU1RixNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEYsTUFBTSxTQUFTLEdBQUcsY0FBYyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RSxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTFFLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FDNUIsV0FBVyxFQUNYLGVBQWUsRUFDZixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksWUFBWSxLQUFLLFlBQVksQ0FBQyxPQUFPLENBQ2hGLENBQUM7SUFFRixPQUFPO1FBQ0wsZUFBZTtRQUNmLGVBQWU7UUFDZixTQUFTO1FBQ1QsV0FBVztRQUNYLE9BQU87S0FDUixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcXVlc3RTdGF0ZSB9IGZyb20gJ0BuZ2R1eC9kYXRhLW1vZGVsLWNvbW1vbic7XHJcbmltcG9ydCB7IGNyZWF0ZVNlbGVjdG9yLCBEZWZhdWx0UHJvamVjdG9yRm4sIE1lbW9pemVkU2VsZWN0b3IgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcbmltcG9ydCB7IEZvcm1TZWxlY3RvcnMsIEZvcm1TdGF0ZSB9IGZyb20gJy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtU2VsZWN0b3JzPFQsIEU+KFxyXG4gIGdldEZvcm1TdGF0ZTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIEZvcm1TdGF0ZTxULCBFPiwgRGVmYXVsdFByb2plY3RvckZuPEZvcm1TdGF0ZTxULCBFPj4+XHJcbik6IEZvcm1TZWxlY3RvcnM8VCwgRT4ge1xyXG4gIGNvbnN0IGdldFJlcXVlc3RTdGF0ZSA9IGNyZWF0ZVNlbGVjdG9yKGdldEZvcm1TdGF0ZSwgc3RhdGUgPT4gc3RhdGUucmVxdWVzdFN0YXRlKTtcclxuICBjb25zdCBnZXRMb2FkaW5nU3RhdGUgPSBjcmVhdGVTZWxlY3RvcihnZXRGb3JtU3RhdGUsIHN0YXRlID0+IHN0YXRlLmxvYWRpbmdTdGF0ZSk7XHJcbiAgY29uc3QgZ2V0RXJyb3JzID0gY3JlYXRlU2VsZWN0b3IoZ2V0Rm9ybVN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5lcnJvcnMpO1xyXG4gIGNvbnN0IGdldFJlc291cmNlID0gY3JlYXRlU2VsZWN0b3IoZ2V0Rm9ybVN0YXRlLCBzdGF0ZSA9PiBzdGF0ZS5yZXNvdXJjZSk7XHJcblxyXG4gIGNvbnN0IGlzUmVhZHkgPSBjcmVhdGVTZWxlY3RvcihcclxuICAgIGdldFJlc291cmNlLFxyXG4gICAgZ2V0TG9hZGluZ1N0YXRlLFxyXG4gICAgKHJlc291cmNlLCBsb2FkaW5nU3RhdGUpID0+ICEhcmVzb3VyY2UgJiYgbG9hZGluZ1N0YXRlID09PSBSZXF1ZXN0U3RhdGUuU1VDQ0VTU1xyXG4gICk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBnZXRSZXF1ZXN0U3RhdGUsXHJcbiAgICBnZXRMb2FkaW5nU3RhdGUsXHJcbiAgICBnZXRFcnJvcnMsXHJcbiAgICBnZXRSZXNvdXJjZSxcclxuICAgIGlzUmVhZHlcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { createFeatureSelector } from '@ngrx/store';
|
|
2
|
-
import { createFormActions } from './form-actions';
|
|
3
|
-
import { createFormReducer } from './form-reducer';
|
|
4
|
-
import { createFormSelectors } from './form-selectors';
|
|
5
|
-
export function createFormState(featureName) {
|
|
6
|
-
const actions = createFormActions(featureName);
|
|
7
|
-
const reducer = createFormReducer(actions);
|
|
8
|
-
const getState = createFeatureSelector(featureName);
|
|
9
|
-
const selectors = createFormSelectors(getState);
|
|
10
|
-
return {
|
|
11
|
-
actions,
|
|
12
|
-
reducer: (state, action) => reducer(state, action),
|
|
13
|
-
selectors
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9mb3JtL3NyYy9saWIvK3N0YXRlL2Zvcm0tc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXZELE1BQU0sVUFBVSxlQUFlLENBQStCLFdBQW1CO0lBQy9FLE1BQU0sT0FBTyxHQUFHLGlCQUFpQixDQUF5QixXQUFXLENBQUMsQ0FBQztJQUN2RSxNQUFNLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBd0IsV0FBVyxDQUFDLENBQUM7SUFDM0UsTUFBTSxTQUFTLEdBQUcsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFaEQsT0FBTztRQUNMLE9BQU87UUFDUCxPQUFPLEVBQUUsQ0FBQyxLQUE0QixFQUFFLE1BQWMsRUFBeUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO1FBQ3hHLFNBQVM7S0FDVixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgY3JlYXRlRmVhdHVyZVNlbGVjdG9yIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IGNyZWF0ZUZvcm1BY3Rpb25zIH0gZnJvbSAnLi9mb3JtLWFjdGlvbnMnO1xyXG5pbXBvcnQgeyBjcmVhdGVGb3JtUmVkdWNlciB9IGZyb20gJy4vZm9ybS1yZWR1Y2VyJztcclxuaW1wb3J0IHsgY3JlYXRlRm9ybVNlbGVjdG9ycyB9IGZyb20gJy4vZm9ybS1zZWxlY3RvcnMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1TdGF0ZTxEVE8sIEVSUk9SLCBDUkVBVEVfRFRPID0gRFRPPihmZWF0dXJlTmFtZTogc3RyaW5nKSB7XHJcbiAgY29uc3QgYWN0aW9ucyA9IGNyZWF0ZUZvcm1BY3Rpb25zPERUTywgRVJST1IsIENSRUFURV9EVE8+KGZlYXR1cmVOYW1lKTtcclxuICBjb25zdCByZWR1Y2VyID0gY3JlYXRlRm9ybVJlZHVjZXIoYWN0aW9ucyk7XHJcbiAgY29uc3QgZ2V0U3RhdGUgPSBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8Rm9ybVN0YXRlPERUTywgRVJST1I+PihmZWF0dXJlTmFtZSk7XHJcbiAgY29uc3Qgc2VsZWN0b3JzID0gY3JlYXRlRm9ybVNlbGVjdG9ycyhnZXRTdGF0ZSk7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBhY3Rpb25zLFxyXG4gICAgcmVkdWNlcjogKHN0YXRlOiBGb3JtU3RhdGU8RFRPLCBFUlJPUj4sIGFjdGlvbjogQWN0aW9uKTogRm9ybVN0YXRlPERUTywgRVJST1I+ID0+IHJlZHVjZXIoc3RhdGUsIGFjdGlvbiksXHJcbiAgICBzZWxlY3RvcnNcclxuICB9O1xyXG59XHJcbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
export const FORM_FEATURE_KEY = new InjectionToken('FORM_FEATURE_KEY');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9mb3JtL3NyYy9saWIvbW9kZWxzL2Zvcm0ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0vQyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLGNBQWMsQ0FBUyxrQkFBa0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVxdWVzdFN0YXRlIH0gZnJvbSAnQG5nZHV4L2RhdGEtbW9kZWwtY29tbW9uJztcclxuaW1wb3J0IHsgQXBpUmVxdWVzdFN0YXRlLCBMb2FkaW5nU3RhdGUgfSBmcm9tICdAbmdkdXgvc3RvcmUtY29tbW9uJztcclxuaW1wb3J0IHsgQWN0aW9uQ3JlYXRvciwgTWVtb2l6ZWRTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgVHlwZWRBY3Rpb24gfSBmcm9tICdAbmdyeC9zdG9yZS9zcmMvbW9kZWxzJztcclxuXHJcbmV4cG9ydCBjb25zdCBGT1JNX0ZFQVRVUkVfS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0ZPUk1fRkVBVFVSRV9LRVknKTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVN0YXRlPFQsIEU+IGV4dGVuZHMgQXBpUmVxdWVzdFN0YXRlPEU+LCBMb2FkaW5nU3RhdGUge1xyXG4gIHJlc291cmNlPzogVDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VsZWN0b3JzPFQsIEU+IHtcclxuICBnZXRSZXF1ZXN0U3RhdGU6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBSZXF1ZXN0U3RhdGU+O1xyXG4gIGdldExvYWRpbmdTdGF0ZTogTWVtb2l6ZWRTZWxlY3RvcjxvYmplY3QsIFJlcXVlc3RTdGF0ZT47XHJcbiAgZ2V0RXJyb3JzOiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgRSB8IHVuZGVmaW5lZD47XHJcbiAgZ2V0UmVzb3VyY2U6IE1lbW9pemVkU2VsZWN0b3I8b2JqZWN0LCBUIHwgdW5kZWZpbmVkPjtcclxuICBpc1JlYWR5OiBNZW1vaXplZFNlbGVjdG9yPG9iamVjdCwgYm9vbGVhbj47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybUFjdGlvbnM8RFRPLCBFUlJPUiwgQ1JFQVRFX0RUTyA9IERUTz4ge1xyXG4gIGxvYWQ6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgaWQ6IHN0cmluZyB9KSA9PiB7IGlkOiBzdHJpbmcgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIGxvYWRTdWNjZXNzOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IHJlc291cmNlOiBEVE8gfSkgPT4geyByZXNvdXJjZTogRFRPIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBsb2FkRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEVSUk9SIH0pID0+IHsgZXJyb3JzOiBFUlJPUiB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcblxyXG4gIHNhdmU6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgcmVzb3VyY2U6IERUTyB9KSA9PiB7IHJlc291cmNlOiBEVE8gfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xyXG4gIHNhdmVTdWNjZXNzOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IHJlc291cmNlOiBEVE8gfSkgPT4geyByZXNvdXJjZTogRFRPIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBzYXZlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEVSUk9SIH0pID0+IHsgZXJyb3JzOiBFUlJPUiB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcblxyXG4gIGRlbGV0ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBpZDogc3RyaW5nIH0pID0+IHsgaWQ6IHN0cmluZyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgZGVsZXRlU3VjY2VzczogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBpZDogc3RyaW5nIH0pID0+IHsgaWQ6IHN0cmluZyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcbiAgZGVsZXRlRmFpbHVyZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcnM6IEVSUk9SIH0pID0+IHsgZXJyb3JzOiBFUlJPUiB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XHJcblxyXG4gIGNyZWF0ZTogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyByZXNvdXJjZTogQ1JFQVRFX0RUTyB9KSA9PiB7IHJlc291cmNlOiBDUkVBVEVfRFRPIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBjcmVhdGVTdWNjZXNzOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IHJlc291cmNlOiBEVE8gfSkgPT4geyByZXNvdXJjZTogRFRPIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuICBjcmVhdGVGYWlsdXJlOiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGVycm9yczogRVJST1IgfSkgPT4geyBlcnJvcnM6IEVSUk9SIH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxuXHJcbiAgcmVzZXQ6IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAoKSA9PiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcclxufVxyXG4iXX0=
|
package/esm2022/ngdux-form.mjs
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdkdXgtZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbmdkdXgvdXRpbC9zdG9yZS9mb3JtL3NyYy9uZ2R1eC1mb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
package/index.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export { FormNotificationService, FormService, RequestState } from '@ngdux/data-model-common';
|
|
2
|
-
export * from './lib/+state/abstract-form-effects';
|
|
3
|
-
export * from './lib/+state/abstract-form-state.service';
|
|
4
|
-
export * from './lib/+state/abstract-form.facade';
|
|
5
|
-
export * from './lib/+state/form-actions';
|
|
6
|
-
export * from './lib/+state/form-reducer';
|
|
7
|
-
export * from './lib/+state/form-selectors';
|
|
8
|
-
export * from './lib/+state/form-state';
|
|
9
|
-
export * from './lib/models/form.model';
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { FormNotificationService, FormService } from '@ngdux/data-model-common';
|
|
2
|
-
import { Actions } from '@ngrx/effects';
|
|
3
|
-
import { Store } from '@ngrx/store';
|
|
4
|
-
import { FormActions } from '../models/form.model';
|
|
5
|
-
export declare abstract class AbstractFormEffects<DTO, ERROR, CREATE_DTO = DTO> {
|
|
6
|
-
protected readonly actions$: Actions;
|
|
7
|
-
protected readonly store: Store;
|
|
8
|
-
private readonly service;
|
|
9
|
-
private readonly formActions;
|
|
10
|
-
private readonly notificationService;
|
|
11
|
-
load$: import("rxjs").Observable<({
|
|
12
|
-
resource: DTO;
|
|
13
|
-
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
14
|
-
errors: ERROR;
|
|
15
|
-
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
16
|
-
create$: import("rxjs").Observable<({
|
|
17
|
-
resource: DTO;
|
|
18
|
-
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
19
|
-
errors: ERROR;
|
|
20
|
-
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
21
|
-
update$: import("rxjs").Observable<({
|
|
22
|
-
resource: DTO;
|
|
23
|
-
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
24
|
-
errors: ERROR;
|
|
25
|
-
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
26
|
-
delete$: import("rxjs").Observable<({
|
|
27
|
-
id: string;
|
|
28
|
-
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
29
|
-
errors: ERROR;
|
|
30
|
-
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
31
|
-
errorsHandler$: import("rxjs").Observable<({
|
|
32
|
-
errors: ERROR;
|
|
33
|
-
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
34
|
-
errors: ERROR;
|
|
35
|
-
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
36
|
-
errors: ERROR;
|
|
37
|
-
} & import("@ngrx/store/src/models").TypedAction<string>) | ({
|
|
38
|
-
errors: ERROR;
|
|
39
|
-
} & import("@ngrx/store/src/models").TypedAction<string>)> & import("@ngrx/effects").CreateEffectMetadata;
|
|
40
|
-
protected constructor(actions$: Actions, store: Store, service: FormService<DTO, CREATE_DTO>, formActions: FormActions<DTO, ERROR, CREATE_DTO>, notificationService: FormNotificationService<ERROR>);
|
|
41
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ReducerManager } from '@ngrx/store';
|
|
2
|
-
import { FormActions, FormSelectors } from '../models/form.model';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare abstract class AbstractFormReducerManager<DTO, ERROR, CREATE_DTO = DTO> {
|
|
5
|
-
private readonly reducerManager;
|
|
6
|
-
private readonly featureKey;
|
|
7
|
-
actions: FormActions<DTO, ERROR, CREATE_DTO>;
|
|
8
|
-
selectors: FormSelectors<DTO, ERROR>;
|
|
9
|
-
constructor(reducerManager: ReducerManager, featureKey: string);
|
|
10
|
-
protected getActions(): FormActions<DTO, ERROR, CREATE_DTO>;
|
|
11
|
-
protected addReducer(): void;
|
|
12
|
-
protected getSelectors(): FormSelectors<DTO, ERROR>;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AbstractFormReducerManager<any, any, any>, never>;
|
|
14
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AbstractFormReducerManager<any, any, any>>;
|
|
15
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ActionPayload } from '@ngdux/store-common';
|
|
2
|
-
import { Store } from '@ngrx/store';
|
|
3
|
-
import { FormActions, FormSelectors } from '../models/form.model';
|
|
4
|
-
export declare abstract class AbstractFormFacade<DTO, E, CREATE_DTO = DTO> {
|
|
5
|
-
protected readonly store: Store;
|
|
6
|
-
private readonly formActions;
|
|
7
|
-
private readonly formSelectors;
|
|
8
|
-
readonly resource$: import("rxjs").Observable<DTO | undefined>;
|
|
9
|
-
readonly loadingState$: import("rxjs").Observable<import("@ngdux/data-model-common").RequestState>;
|
|
10
|
-
readonly requestState$: import("rxjs").Observable<import("@ngdux/data-model-common").RequestState>;
|
|
11
|
-
readonly errors$: import("rxjs").Observable<E | undefined>;
|
|
12
|
-
readonly isReady$: import("rxjs").Observable<boolean>;
|
|
13
|
-
constructor(store: Store, formActions: FormActions<DTO, E, CREATE_DTO>, formSelectors: FormSelectors<DTO, E>);
|
|
14
|
-
create(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['create']>): void;
|
|
15
|
-
load(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['load']>): void;
|
|
16
|
-
save(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['save']>): void;
|
|
17
|
-
delete(props: ActionPayload<FormActions<DTO, E, CREATE_DTO>['delete']>): void;
|
|
18
|
-
reset(): void;
|
|
19
|
-
}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { ActionCreator, ActionReducer, ReducerTypes } from '@ngrx/store';
|
|
2
|
-
import { FormActions, FormState } from '../models/form.model';
|
|
3
|
-
export declare function createFormReducer<DTO, ERROR, CREATE_DTO = DTO>(actions: FormActions<DTO, ERROR, CREATE_DTO>, actionHandlers?: ReducerTypes<FormState<DTO, ERROR>, ActionCreator[]>[], initialFormState?: Record<string, any>): ActionReducer<FormState<DTO, ERROR>>;
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { DefaultProjectorFn, MemoizedSelector } from '@ngrx/store';
|
|
2
|
-
import { FormSelectors, FormState } from '../models/form.model';
|
|
3
|
-
export declare function createFormSelectors<T, E>(getFormState: MemoizedSelector<object, FormState<T, E>, DefaultProjectorFn<FormState<T, E>>>): FormSelectors<T, E>;
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { Action } from '@ngrx/store';
|
|
2
|
-
import { FormState } from '../models/form.model';
|
|
3
|
-
export declare function createFormState<DTO, ERROR, CREATE_DTO = DTO>(featureName: string): {
|
|
4
|
-
actions: import("../models/form.model").FormActions<DTO, ERROR, CREATE_DTO>;
|
|
5
|
-
reducer: (state: FormState<DTO, ERROR>, action: Action) => FormState<DTO, ERROR>;
|
|
6
|
-
selectors: import("../models/form.model").FormSelectors<DTO, ERROR>;
|
|
7
|
-
};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
2
|
-
import { RequestState } from '@ngdux/data-model-common';
|
|
3
|
-
import { ApiRequestState, LoadingState } from '@ngdux/store-common';
|
|
4
|
-
import { ActionCreator, MemoizedSelector } from '@ngrx/store';
|
|
5
|
-
import { TypedAction } from '@ngrx/store/src/models';
|
|
6
|
-
export declare const FORM_FEATURE_KEY: InjectionToken<string>;
|
|
7
|
-
export interface FormState<T, E> extends ApiRequestState<E>, LoadingState {
|
|
8
|
-
resource?: T;
|
|
9
|
-
}
|
|
10
|
-
export interface FormSelectors<T, E> {
|
|
11
|
-
getRequestState: MemoizedSelector<object, RequestState>;
|
|
12
|
-
getLoadingState: MemoizedSelector<object, RequestState>;
|
|
13
|
-
getErrors: MemoizedSelector<object, E | undefined>;
|
|
14
|
-
getResource: MemoizedSelector<object, T | undefined>;
|
|
15
|
-
isReady: MemoizedSelector<object, boolean>;
|
|
16
|
-
}
|
|
17
|
-
export interface FormActions<DTO, ERROR, CREATE_DTO = DTO> {
|
|
18
|
-
load: ActionCreator<string, (props: {
|
|
19
|
-
id: string;
|
|
20
|
-
}) => {
|
|
21
|
-
id: string;
|
|
22
|
-
} & TypedAction<string>>;
|
|
23
|
-
loadSuccess: ActionCreator<string, (props: {
|
|
24
|
-
resource: DTO;
|
|
25
|
-
}) => {
|
|
26
|
-
resource: DTO;
|
|
27
|
-
} & TypedAction<string>>;
|
|
28
|
-
loadFailure: ActionCreator<string, (props: {
|
|
29
|
-
errors: ERROR;
|
|
30
|
-
}) => {
|
|
31
|
-
errors: ERROR;
|
|
32
|
-
} & TypedAction<string>>;
|
|
33
|
-
save: ActionCreator<string, (props: {
|
|
34
|
-
resource: DTO;
|
|
35
|
-
}) => {
|
|
36
|
-
resource: DTO;
|
|
37
|
-
} & TypedAction<string>>;
|
|
38
|
-
saveSuccess: ActionCreator<string, (props: {
|
|
39
|
-
resource: DTO;
|
|
40
|
-
}) => {
|
|
41
|
-
resource: DTO;
|
|
42
|
-
} & TypedAction<string>>;
|
|
43
|
-
saveFailure: ActionCreator<string, (props: {
|
|
44
|
-
errors: ERROR;
|
|
45
|
-
}) => {
|
|
46
|
-
errors: ERROR;
|
|
47
|
-
} & TypedAction<string>>;
|
|
48
|
-
delete: ActionCreator<string, (props: {
|
|
49
|
-
id: string;
|
|
50
|
-
}) => {
|
|
51
|
-
id: string;
|
|
52
|
-
} & TypedAction<string>>;
|
|
53
|
-
deleteSuccess: ActionCreator<string, (props: {
|
|
54
|
-
id: string;
|
|
55
|
-
}) => {
|
|
56
|
-
id: string;
|
|
57
|
-
} & TypedAction<string>>;
|
|
58
|
-
deleteFailure: ActionCreator<string, (props: {
|
|
59
|
-
errors: ERROR;
|
|
60
|
-
}) => {
|
|
61
|
-
errors: ERROR;
|
|
62
|
-
} & TypedAction<string>>;
|
|
63
|
-
create: ActionCreator<string, (props: {
|
|
64
|
-
resource: CREATE_DTO;
|
|
65
|
-
}) => {
|
|
66
|
-
resource: CREATE_DTO;
|
|
67
|
-
} & TypedAction<string>>;
|
|
68
|
-
createSuccess: ActionCreator<string, (props: {
|
|
69
|
-
resource: DTO;
|
|
70
|
-
}) => {
|
|
71
|
-
resource: DTO;
|
|
72
|
-
} & TypedAction<string>>;
|
|
73
|
-
createFailure: ActionCreator<string, (props: {
|
|
74
|
-
errors: ERROR;
|
|
75
|
-
}) => {
|
|
76
|
-
errors: ERROR;
|
|
77
|
-
} & TypedAction<string>>;
|
|
78
|
-
reset: ActionCreator<string, () => TypedAction<string>>;
|
|
79
|
-
}
|