@ngrx-traits/common 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/async-action/async-action.model.d.ts +19 -0
- package/async-action/async-action.trait.d.ts +59 -0
- package/async-action/index.d.ts +2 -0
- package/bundles/ngrx-traits-common.umd.js +2126 -0
- package/bundles/ngrx-traits-common.umd.js.map +1 -0
- package/crud-entities/crud-entities.model.d.ts +76 -0
- package/crud-entities/crud-entities.trait.actions.d.ts +2 -0
- package/crud-entities/crud-entities.trait.d.ts +35 -0
- package/crud-entities/crud-entities.trait.mutators.d.ts +3 -0
- package/crud-entities/crud-entities.trait.reducer.d.ts +7 -0
- package/crud-entities/crud-entities.trait.selectors.d.ts +3 -0
- package/crud-entities/index.d.ts +2 -0
- package/entities-pagination/entities-pagination.model.d.ts +82 -0
- package/entities-pagination/entities-pagination.model.internal.d.ts +12 -0
- package/entities-pagination/entities-pagination.trait.actions.d.ts +2 -0
- package/entities-pagination/entities-pagination.trait.d.ts +55 -0
- package/entities-pagination/entities-pagination.trait.effects.d.ts +8 -0
- package/entities-pagination/entities-pagination.trait.mutators.d.ts +3 -0
- package/entities-pagination/entities-pagination.trait.reducer.d.ts +7 -0
- package/entities-pagination/entities-pagination.trait.selectors.d.ts +4 -0
- package/entities-pagination/index.d.ts +2 -0
- package/esm2015/async-action/async-action.model.js +2 -0
- package/esm2015/async-action/async-action.model.js.map +1 -0
- package/esm2015/async-action/async-action.trait.js +96 -0
- package/esm2015/async-action/async-action.trait.js.map +1 -0
- package/esm2015/async-action/index.js +3 -0
- package/esm2015/async-action/index.js.map +1 -0
- package/esm2015/crud-entities/crud-entities.model.js +8 -0
- package/esm2015/crud-entities/crud-entities.model.js.map +1 -0
- package/esm2015/crud-entities/crud-entities.trait.actions.js +20 -0
- package/esm2015/crud-entities/crud-entities.trait.actions.js.map +1 -0
- package/esm2015/crud-entities/crud-entities.trait.js +53 -0
- package/esm2015/crud-entities/crud-entities.trait.js.map +1 -0
- package/esm2015/crud-entities/crud-entities.trait.mutators.js +101 -0
- package/esm2015/crud-entities/crud-entities.trait.mutators.js.map +1 -0
- package/esm2015/crud-entities/crud-entities.trait.reducer.js +15 -0
- package/esm2015/crud-entities/crud-entities.trait.reducer.js.map +1 -0
- package/esm2015/crud-entities/crud-entities.trait.selectors.js +70 -0
- package/esm2015/crud-entities/crud-entities.trait.selectors.js.map +1 -0
- package/esm2015/crud-entities/index.js +3 -0
- package/esm2015/crud-entities/index.js.map +1 -0
- package/esm2015/entities-pagination/entities-pagination.model.internal.js +2 -0
- package/esm2015/entities-pagination/entities-pagination.model.internal.js.map +1 -0
- package/esm2015/entities-pagination/entities-pagination.model.js +2 -0
- package/esm2015/entities-pagination/entities-pagination.model.js.map +1 -0
- package/esm2015/entities-pagination/entities-pagination.trait.actions.js +20 -0
- package/esm2015/entities-pagination/entities-pagination.trait.actions.js.map +1 -0
- package/esm2015/entities-pagination/entities-pagination.trait.effects.js +54 -0
- package/esm2015/entities-pagination/entities-pagination.trait.effects.js.map +1 -0
- package/esm2015/entities-pagination/entities-pagination.trait.js +80 -0
- package/esm2015/entities-pagination/entities-pagination.trait.js.map +1 -0
- package/esm2015/entities-pagination/entities-pagination.trait.mutators.js +23 -0
- package/esm2015/entities-pagination/entities-pagination.trait.mutators.js.map +1 -0
- package/esm2015/entities-pagination/entities-pagination.trait.reducer.js +33 -0
- package/esm2015/entities-pagination/entities-pagination.trait.reducer.js.map +1 -0
- package/esm2015/entities-pagination/entities-pagination.trait.selectors.js +65 -0
- package/esm2015/entities-pagination/entities-pagination.trait.selectors.js.map +1 -0
- package/esm2015/entities-pagination/index.js +3 -0
- package/esm2015/entities-pagination/index.js.map +1 -0
- package/esm2015/filter-entities/filter-entities.model.internal.js +2 -0
- package/esm2015/filter-entities/filter-entities.model.internal.js.map +1 -0
- package/esm2015/filter-entities/filter-entities.model.js +2 -0
- package/esm2015/filter-entities/filter-entities.model.js.map +1 -0
- package/esm2015/filter-entities/filter-entities.trait.actions.js +16 -0
- package/esm2015/filter-entities/filter-entities.trait.actions.js.map +1 -0
- package/esm2015/filter-entities/filter-entities.trait.effect.js +56 -0
- package/esm2015/filter-entities/filter-entities.trait.effect.js.map +1 -0
- package/esm2015/filter-entities/filter-entities.trait.js +68 -0
- package/esm2015/filter-entities/filter-entities.trait.js.map +1 -0
- package/esm2015/filter-entities/filter-entities.trait.mutators.js +7 -0
- package/esm2015/filter-entities/filter-entities.trait.mutators.js.map +1 -0
- package/esm2015/filter-entities/filter-entities.trait.reducer.js +9 -0
- package/esm2015/filter-entities/filter-entities.trait.reducer.js.map +1 -0
- package/esm2015/filter-entities/filter-entities.trait.selectors.js +9 -0
- package/esm2015/filter-entities/filter-entities.trait.selectors.js.map +1 -0
- package/esm2015/filter-entities/index.js +3 -0
- package/esm2015/filter-entities/index.js.map +1 -0
- package/esm2015/index.js +12 -0
- package/esm2015/index.js.map +1 -0
- package/esm2015/load-entities/index.js +3 -0
- package/esm2015/load-entities/index.js.map +1 -0
- package/esm2015/load-entities/load-entities.model.js +2 -0
- package/esm2015/load-entities/load-entities.model.js.map +1 -0
- package/esm2015/load-entities/load-entities.mutators.js +8 -0
- package/esm2015/load-entities/load-entities.mutators.js.map +1 -0
- package/esm2015/load-entities/load-entities.trait.actions.js +10 -0
- package/esm2015/load-entities/load-entities.trait.actions.js.map +1 -0
- package/esm2015/load-entities/load-entities.trait.js +57 -0
- package/esm2015/load-entities/load-entities.trait.js.map +1 -0
- package/esm2015/load-entities/load-entities.trait.reducer.js +12 -0
- package/esm2015/load-entities/load-entities.trait.reducer.js.map +1 -0
- package/esm2015/load-entities/load-entities.trait.selectors.js +33 -0
- package/esm2015/load-entities/load-entities.trait.selectors.js.map +1 -0
- package/esm2015/load-entities/load-entities.utils.js +10 -0
- package/esm2015/load-entities/load-entities.utils.js.map +1 -0
- package/esm2015/load-entity/index.js +3 -0
- package/esm2015/load-entity/index.js.map +1 -0
- package/esm2015/load-entity/load-entity.model.js +2 -0
- package/esm2015/load-entity/load-entity.model.js.map +1 -0
- package/esm2015/load-entity/load-entity.traits.js +65 -0
- package/esm2015/load-entity/load-entity.traits.js.map +1 -0
- package/esm2015/ngrx-traits-common.js +5 -0
- package/esm2015/ngrx-traits-common.js.map +1 -0
- package/esm2015/public_api.js +2 -0
- package/esm2015/public_api.js.map +1 -0
- package/esm2015/reset/index.js +2 -0
- package/esm2015/reset/index.js.map +1 -0
- package/esm2015/reset/reset.trait.js +66 -0
- package/esm2015/reset/reset.trait.js.map +1 -0
- package/esm2015/select-entities/index.js +4 -0
- package/esm2015/select-entities/index.js.map +1 -0
- package/esm2015/select-entities/select-entities.model.js +2 -0
- package/esm2015/select-entities/select-entities.model.js.map +1 -0
- package/esm2015/select-entities/select-entities.trait.actions.js +11 -0
- package/esm2015/select-entities/select-entities.trait.actions.js.map +1 -0
- package/esm2015/select-entities/select-entities.trait.js +50 -0
- package/esm2015/select-entities/select-entities.trait.js.map +1 -0
- package/esm2015/select-entities/select-entities.trait.mutators.js +21 -0
- package/esm2015/select-entities/select-entities.trait.mutators.js.map +1 -0
- package/esm2015/select-entities/select-entities.trait.reducer.js +40 -0
- package/esm2015/select-entities/select-entities.trait.reducer.js.map +1 -0
- package/esm2015/select-entities/select-entities.trait.selectors.js +28 -0
- package/esm2015/select-entities/select-entities.trait.selectors.js.map +1 -0
- package/esm2015/select-entities/select-entities.utils.js +25 -0
- package/esm2015/select-entities/select-entities.utils.js.map +1 -0
- package/esm2015/select-entity/index.js +3 -0
- package/esm2015/select-entity/index.js.map +1 -0
- package/esm2015/select-entity/select-entity.model.js +2 -0
- package/esm2015/select-entity/select-entity.model.js.map +1 -0
- package/esm2015/select-entity/select-entity.trait.actions.js +9 -0
- package/esm2015/select-entity/select-entity.trait.actions.js.map +1 -0
- package/esm2015/select-entity/select-entity.trait.js +47 -0
- package/esm2015/select-entity/select-entity.trait.js.map +1 -0
- package/esm2015/select-entity/select-entity.trait.mutators.js +17 -0
- package/esm2015/select-entity/select-entity.trait.mutators.js.map +1 -0
- package/esm2015/select-entity/select-entity.trait.reducer.js +26 -0
- package/esm2015/select-entity/select-entity.trait.reducer.js.map +1 -0
- package/esm2015/select-entity/select-entity.trait.selectors.js +13 -0
- package/esm2015/select-entity/select-entity.trait.selectors.js.map +1 -0
- package/esm2015/set-entity/index.js +3 -0
- package/esm2015/set-entity/index.js.map +1 -0
- package/esm2015/set-entity/set-entity.model.js +2 -0
- package/esm2015/set-entity/set-entity.model.js.map +1 -0
- package/esm2015/set-entity/set-entity.trait.js +52 -0
- package/esm2015/set-entity/set-entity.trait.js.map +1 -0
- package/esm2015/sort-entities/index.js +4 -0
- package/esm2015/sort-entities/index.js.map +1 -0
- package/esm2015/sort-entities/sort-entities.model.js +2 -0
- package/esm2015/sort-entities/sort-entities.model.js.map +1 -0
- package/esm2015/sort-entities/sort-entities.trait.actions.js +8 -0
- package/esm2015/sort-entities/sort-entities.trait.actions.js.map +1 -0
- package/esm2015/sort-entities/sort-entities.trait.effect.js +28 -0
- package/esm2015/sort-entities/sort-entities.trait.effect.js.map +1 -0
- package/esm2015/sort-entities/sort-entities.trait.js +53 -0
- package/esm2015/sort-entities/sort-entities.trait.js.map +1 -0
- package/esm2015/sort-entities/sort-entities.trait.mutators.js +13 -0
- package/esm2015/sort-entities/sort-entities.trait.mutators.js.map +1 -0
- package/esm2015/sort-entities/sort-entities.trait.reducer.js +22 -0
- package/esm2015/sort-entities/sort-entities.trait.reducer.js.map +1 -0
- package/esm2015/sort-entities/sort-entities.trait.selectors.js +10 -0
- package/esm2015/sort-entities/sort-entities.trait.selectors.js.map +1 -0
- package/esm2015/sort-entities/sort-entities.utils.js +61 -0
- package/esm2015/sort-entities/sort-entities.utils.js.map +1 -0
- package/fesm2015/ngrx-traits-common.js +1511 -0
- package/fesm2015/ngrx-traits-common.js.map +1 -0
- package/filter-entities/filter-entities.model.d.ts +57 -0
- package/filter-entities/filter-entities.model.internal.d.ts +14 -0
- package/filter-entities/filter-entities.trait.actions.d.ts +2 -0
- package/filter-entities/filter-entities.trait.d.ts +42 -0
- package/filter-entities/filter-entities.trait.effect.d.ts +6 -0
- package/filter-entities/filter-entities.trait.mutators.d.ts +2 -0
- package/filter-entities/filter-entities.trait.reducer.d.ts +5 -0
- package/filter-entities/filter-entities.trait.selectors.d.ts +4 -0
- package/filter-entities/index.d.ts +2 -0
- package/index.d.ts +11 -0
- package/load-entities/index.d.ts +2 -0
- package/load-entities/load-entities.model.d.ts +97 -0
- package/load-entities/load-entities.mutators.d.ts +3 -0
- package/load-entities/load-entities.trait.actions.d.ts +2 -0
- package/load-entities/load-entities.trait.d.ts +39 -0
- package/load-entities/load-entities.trait.reducer.d.ts +4 -0
- package/load-entities/load-entities.trait.selectors.d.ts +3 -0
- package/load-entities/load-entities.utils.d.ts +4 -0
- package/load-entity/index.d.ts +2 -0
- package/load-entity/load-entity.model.d.ts +9 -0
- package/load-entity/load-entity.traits.d.ts +64 -0
- package/ngrx-traits-common.d.ts +5 -0
- package/package.json +28 -0
- package/public_api.d.ts +1 -0
- package/reset/index.d.ts +1 -0
- package/reset/reset.trait.d.ts +32 -0
- package/select-entities/index.d.ts +3 -0
- package/select-entities/select-entities.model.d.ts +41 -0
- package/select-entities/select-entities.trait.actions.d.ts +2 -0
- package/select-entities/select-entities.trait.d.ts +34 -0
- package/select-entities/select-entities.trait.mutators.d.ts +2 -0
- package/select-entities/select-entities.trait.reducer.d.ts +8 -0
- package/select-entities/select-entities.trait.selectors.d.ts +3 -0
- package/select-entities/select-entities.utils.d.ts +7 -0
- package/select-entity/index.d.ts +2 -0
- package/select-entity/select-entity.model.d.ts +33 -0
- package/select-entity/select-entity.trait.actions.d.ts +2 -0
- package/select-entity/select-entity.trait.d.ts +30 -0
- package/select-entity/select-entity.trait.mutators.d.ts +2 -0
- package/select-entity/select-entity.trait.reducer.d.ts +8 -0
- package/select-entity/select-entity.trait.selectors.d.ts +2 -0
- package/set-entity/index.d.ts +2 -0
- package/set-entity/set-entity.model.d.ts +16 -0
- package/set-entity/set-entity.trait.d.ts +39 -0
- package/sort-entities/index.d.ts +3 -0
- package/sort-entities/sort-entities.model.d.ts +35 -0
- package/sort-entities/sort-entities.trait.actions.d.ts +2 -0
- package/sort-entities/sort-entities.trait.d.ts +33 -0
- package/sort-entities/sort-entities.trait.effect.d.ts +6 -0
- package/sort-entities/sort-entities.trait.mutators.d.ts +3 -0
- package/sort-entities/sort-entities.trait.reducer.d.ts +4 -0
- package/sort-entities/sort-entities.trait.selectors.d.ts +2 -0
- package/sort-entities/sort-entities.utils.d.ts +8 -0
package/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './load-entities';
|
|
2
|
+
export * from './filter-entities';
|
|
3
|
+
export * from './entities-pagination';
|
|
4
|
+
export * from './select-entities';
|
|
5
|
+
export * from './select-entity';
|
|
6
|
+
export * from './crud-entities';
|
|
7
|
+
export * from './sort-entities';
|
|
8
|
+
export * from './reset';
|
|
9
|
+
export * from './load-entity';
|
|
10
|
+
export * from './async-action';
|
|
11
|
+
export * from './set-entity';
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { Comparer, EntityAdapter, EntityState, IdSelector } from '@ngrx/entity';
|
|
2
|
+
import { ActionCreator, TypedAction } from '@ngrx/store/src/models';
|
|
3
|
+
import { Dictionary } from '@ngrx/entity/src/models';
|
|
4
|
+
import { KeyedConfig } from '@ngrx-traits/core';
|
|
5
|
+
export declare type Status = 'loading' | 'success' | 'fail';
|
|
6
|
+
export interface StatusState {
|
|
7
|
+
status?: Status;
|
|
8
|
+
}
|
|
9
|
+
export interface LoadEntitiesState<T> extends EntityState<T>, StatusState {
|
|
10
|
+
}
|
|
11
|
+
export declare type LoadEntitiesActions<T> = {
|
|
12
|
+
/**
|
|
13
|
+
* load entities from backend
|
|
14
|
+
*/
|
|
15
|
+
loadEntities: ActionCreator<string, () => TypedAction<string>>;
|
|
16
|
+
/**
|
|
17
|
+
* entities where loaded successfully
|
|
18
|
+
*/
|
|
19
|
+
loadEntitiesSuccess: ActionCreator<string, (props: {
|
|
20
|
+
entities: T[];
|
|
21
|
+
total?: number;
|
|
22
|
+
}) => {
|
|
23
|
+
entities: T[];
|
|
24
|
+
total?: number;
|
|
25
|
+
} & TypedAction<string>>;
|
|
26
|
+
/**
|
|
27
|
+
* entities failed loading
|
|
28
|
+
*/
|
|
29
|
+
loadEntitiesFail: ActionCreator<string, (props?: {
|
|
30
|
+
error?: string;
|
|
31
|
+
}) => {
|
|
32
|
+
error?: string;
|
|
33
|
+
} & TypedAction<string>>;
|
|
34
|
+
};
|
|
35
|
+
export declare type LoadEntitiesSelectors<T> = {
|
|
36
|
+
/**
|
|
37
|
+
* returns all ids of the entities in an array
|
|
38
|
+
* @param state
|
|
39
|
+
*/
|
|
40
|
+
selectEntitiesIdsList: (state: LoadEntitiesState<T>) => string[] | number[];
|
|
41
|
+
/**
|
|
42
|
+
* returns all entities in a map with the id as key of the map
|
|
43
|
+
* @param state
|
|
44
|
+
*/
|
|
45
|
+
selectEntitiesMap: (state: LoadEntitiesState<T>) => Dictionary<T>;
|
|
46
|
+
/**
|
|
47
|
+
* returns all entities in an array
|
|
48
|
+
* @param state
|
|
49
|
+
*/
|
|
50
|
+
selectEntitiesList: (state: LoadEntitiesState<T>) => T[];
|
|
51
|
+
/**
|
|
52
|
+
* returns the total number of entities
|
|
53
|
+
* @param state
|
|
54
|
+
*/
|
|
55
|
+
selectEntitiesTotal: (state: LoadEntitiesState<T>) => number;
|
|
56
|
+
/**
|
|
57
|
+
* is currently loading entities
|
|
58
|
+
* @param state
|
|
59
|
+
*/
|
|
60
|
+
isEntitiesLoading: (state: LoadEntitiesState<T>) => boolean;
|
|
61
|
+
/**
|
|
62
|
+
* were the entities loaded successfully
|
|
63
|
+
* @param state
|
|
64
|
+
*/
|
|
65
|
+
isEntitiesLoadingSuccess: (state: LoadEntitiesState<T>) => boolean;
|
|
66
|
+
/**
|
|
67
|
+
* did the entities fail loading
|
|
68
|
+
* @param state
|
|
69
|
+
*/
|
|
70
|
+
isEntitiesLoadingFail: (state: LoadEntitiesState<T>) => boolean;
|
|
71
|
+
};
|
|
72
|
+
export declare type LoadEntitiesMutators<T> = {
|
|
73
|
+
/**
|
|
74
|
+
* set or replace all entities currently in store
|
|
75
|
+
* @param entities
|
|
76
|
+
* @param state
|
|
77
|
+
*/
|
|
78
|
+
setEntitiesList<S extends LoadEntitiesState<T>>(entities: T[], state: S): S;
|
|
79
|
+
};
|
|
80
|
+
export declare type GenericActionCreator = ActionCreator<string, (...args: unknown[]) => TypedAction<string>>;
|
|
81
|
+
export declare const loadEntitiesTraitKey = "loadEntities";
|
|
82
|
+
export declare type LoadEntitiesConfig<T = unknown> = {
|
|
83
|
+
/**
|
|
84
|
+
* Function that returns the id of an entity if not set it attempts to return the values
|
|
85
|
+
* of a property call id, this is pass to @ngrx/entity EntityAdapter
|
|
86
|
+
*/
|
|
87
|
+
selectId?: IdSelector<T>;
|
|
88
|
+
/**
|
|
89
|
+
* Default sort function for to @ngrx/entity EntityAdapter
|
|
90
|
+
*/
|
|
91
|
+
sortComparer?: false | Comparer<T>;
|
|
92
|
+
/**
|
|
93
|
+
* @ngrx/entity EntityAdapter
|
|
94
|
+
*/
|
|
95
|
+
adapter: EntityAdapter<T>;
|
|
96
|
+
};
|
|
97
|
+
export declare type LoadEntitiesKeyedConfig<T> = KeyedConfig<typeof loadEntitiesTraitKey, LoadEntitiesConfig<T>>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { LoadEntitiesKeyedConfig, LoadEntitiesMutators } from './load-entities.model';
|
|
2
|
+
import { EntitiesPaginationKeyedConfig } from '../entities-pagination';
|
|
3
|
+
export declare function createLoadEntitiesTraitMutators<Entity>(allConfigs: LoadEntitiesKeyedConfig<Entity> & EntitiesPaginationKeyedConfig): LoadEntitiesMutators<Entity>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { LoadEntitiesState, LoadEntitiesConfig } from './load-entities.model';
|
|
2
|
+
/**
|
|
3
|
+
* Generates the ngrx code needed to load a list of entities from the backend
|
|
4
|
+
* with a load[EntitiesName], load[EntitiesName]Success, load[EntitiesName]Fail actions, and selectors to query the
|
|
5
|
+
* entities like selectEntity[EntitiesName]List, selectEntity[EntitiesName]Ids, selectEntity[EntitiesName]Map, and its progress loading
|
|
6
|
+
* with isLoading[EntitiesName],isLoading[EntitiesName]Success, isLoading[EntitiesName]Fail. This trait is the base for all other traits related
|
|
7
|
+
* to a list of entities, the other will call loadEntities when needing data.
|
|
8
|
+
* @param traitConfig - Config object fot the trait factory
|
|
9
|
+
* @param traitConfig.selectId - Function that returns the id of an entity
|
|
10
|
+
* @param traitConfig.sortComparer - Default sort function for to @ngrx/entity EntityAdapter
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* // The following trait config
|
|
14
|
+
*
|
|
15
|
+
* export interface TestState
|
|
16
|
+
* extends LoadEntitiesState<Todo>{}
|
|
17
|
+
*
|
|
18
|
+
* const traits = createEntityFeatureFactory(
|
|
19
|
+
* {entityName: 'Todo'},
|
|
20
|
+
* addLoadEntitiesTrait<Todo>(),
|
|
21
|
+
* )({
|
|
22
|
+
* actionsGroupKey: '[Todos]',
|
|
23
|
+
* featureSelector: createFeatureSelector<TestState>>(
|
|
24
|
+
* 'todos',
|
|
25
|
+
* ),
|
|
26
|
+
* });
|
|
27
|
+
* // will generate the actions and selectors
|
|
28
|
+
* traits.actions.loadTodos()
|
|
29
|
+
* traits.actions.loadTodosSuccess({entities: todos})
|
|
30
|
+
* traits.actions.loadTodosFail();
|
|
31
|
+
* traits.selectors.selectTodosList
|
|
32
|
+
* traits.selectors.selectTodosMap
|
|
33
|
+
* traits.selectors.selectTodosIds
|
|
34
|
+
* traits.selectors.selectTodosTotal
|
|
35
|
+
* traits.selectors.isLoadingTodos
|
|
36
|
+
* traits.selectors.isSuccessTodosSuccess
|
|
37
|
+
* traits.selectors.isFailTodosFail
|
|
38
|
+
*/
|
|
39
|
+
export declare function addLoadEntitiesTrait<Entity>(traitConfig?: Omit<LoadEntitiesConfig<Entity>, 'adapter'>): import("@ngrx-traits/core").TraitFactory<LoadEntitiesState<Entity>, import("./load-entities.model").LoadEntitiesActions<Entity>, import("./load-entities.model").LoadEntitiesSelectors<Entity>, import("./load-entities.model").LoadEntitiesMutators<Entity>, "loadEntities", LoadEntitiesConfig<Entity>, import("@ngrx-traits/core").AllTraitConfigs>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { LoadEntitiesState, LoadEntitiesActions, LoadEntitiesKeyedConfig, LoadEntitiesMutators } from './load-entities.model';
|
|
2
|
+
import { EntitiesPaginationKeyedConfig } from '../entities-pagination';
|
|
3
|
+
export declare function createLoadEntitiesInitialState<Entity>(previousInitialState: {} | undefined, allConfigs: LoadEntitiesKeyedConfig<Entity>): LoadEntitiesState<Entity>;
|
|
4
|
+
export declare function createLoadEntitiesTraitReducer<T, S extends LoadEntitiesState<T>>(initialState: S, actions: LoadEntitiesActions<T>, allMutators: LoadEntitiesMutators<T>, allConfigs: LoadEntitiesKeyedConfig<T> & EntitiesPaginationKeyedConfig): import("@ngrx/store").ActionReducer<S, import("@ngrx/store").Action>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { LoadEntitiesKeyedConfig, LoadEntitiesSelectors } from './load-entities.model';
|
|
2
|
+
import { FilterEntitiesKeyedConfig } from '../filter-entities';
|
|
3
|
+
export declare function createLoadEntitiesTraitSelectors<Entity>(allConfigs?: LoadEntitiesKeyedConfig<Entity> & FilterEntitiesKeyedConfig<Entity, unknown>): LoadEntitiesSelectors<Entity>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { StatusState } from './load-entities.model';
|
|
2
|
+
export declare function isLoading<S extends StatusState>(state: S): boolean;
|
|
3
|
+
export declare function isSuccess<S extends StatusState>(state: S): boolean;
|
|
4
|
+
export declare function isFail<S extends StatusState>(state: S): boolean;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PostfixProps, PrefixProps, TraitActions } from '@ngrx-traits/core';
|
|
2
|
+
import { AsyncActionActions, AsyncActionState } from '../async-action/async-action.model';
|
|
3
|
+
export declare type LoadEntityActions<J extends string, Request extends object, Response extends object, Failure extends object> = PrefixProps<AsyncActionActions<Request, Response, Failure, J>, 'load'> & TraitActions;
|
|
4
|
+
export declare type LoadEntityState<T, J extends string> = AsyncActionState<`load${Capitalize<J & string>}`> & PrefixProps<{
|
|
5
|
+
''?: T;
|
|
6
|
+
}, J>;
|
|
7
|
+
export declare type LoadEntitySelectors<T, J extends string> = PostfixProps<{
|
|
8
|
+
select: (state: LoadEntityState<T, J>) => T;
|
|
9
|
+
}, J>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ActionCreatorProps } from '@ngrx/store/src/models';
|
|
2
|
+
import { LoadEntityState } from './load-entity.model';
|
|
3
|
+
declare type RecordEntity<T> = T extends Record<string, infer J> ? J : never;
|
|
4
|
+
/**
|
|
5
|
+
* Generates ngrx code needed to load and entity and store it in a state
|
|
6
|
+
* @param entityName - Entity name, should be in camel case
|
|
7
|
+
* @param options.actionProps - Optional param for the main request action,
|
|
8
|
+
* use the props() function for its value, if not present action will have no params,
|
|
9
|
+
* @param options.actionSuccessProps - Optional param for the request success
|
|
10
|
+
* action, use the props() function for its value, if not present action success will have no params
|
|
11
|
+
* @param options.actionFailProps - Optional param for the request fail action,
|
|
12
|
+
* use the props() function for its value, if not present action fail will have no params
|
|
13
|
+
* @returns the trait factory
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* const traits = createEntityFeatureFactory(
|
|
17
|
+
* ...addLoadEntityTraits({
|
|
18
|
+
* entityName: 'client',
|
|
19
|
+
* requestProps: props<{ id: string }>(),
|
|
20
|
+
* responseProps: props<{ client: Client }>(),
|
|
21
|
+
* }),
|
|
22
|
+
* )({
|
|
23
|
+
* actionsGroupKey: 'Client',
|
|
24
|
+
* featureSelector: createFeatureSelector<
|
|
25
|
+
* LoadEntityState<Client, 'client'>
|
|
26
|
+
* >('client'),
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // will generate
|
|
30
|
+
* traits.actions.loadClient({id:123});
|
|
31
|
+
* traits.actions.loadClientSuccess({client: {id: '123', name: 'gabs'}});
|
|
32
|
+
* traits.actions.loadClientFail();
|
|
33
|
+
* traits.selectors.selectClient
|
|
34
|
+
* traits.selectors.isLoadingLoadClient
|
|
35
|
+
* traits.selectors.isSuccessLoadClient
|
|
36
|
+
* traits.selectors.isFailLoadClient
|
|
37
|
+
*/
|
|
38
|
+
export declare function addLoadEntityTraits<J extends string, Request extends object | undefined = undefined, Response extends Record<J, any> | undefined = undefined, Failure extends object | undefined = undefined, Entity = RecordEntity<Response>, State = LoadEntityState<Entity, J>>({ entityName, actionProps, actionSuccessProps, actionFailProps, }: {
|
|
39
|
+
entityName: J;
|
|
40
|
+
actionProps?: ActionCreatorProps<Request>;
|
|
41
|
+
actionSuccessProps?: ActionCreatorProps<Response>;
|
|
42
|
+
actionFailProps?: ActionCreatorProps<Failure>;
|
|
43
|
+
}): readonly [import("@ngrx-traits/core").TraitFactory<import("@ngrx-traits/core").PrefixProps<import("@ngrx-traits/common").StatusState, `load${Capitalize<J & string>}`>, import("@ngrx-traits/core").PrefixProps<{
|
|
44
|
+
'': import("@ngrx-traits/common").ActionCreatorWithOptionalProps<Request>;
|
|
45
|
+
Success: import("@ngrx-traits/common").ActionCreatorWithOptionalProps<Response>;
|
|
46
|
+
Fail: import("@ngrx-traits/common").ActionCreatorWithOptionalProps<Failure>;
|
|
47
|
+
}, `load${Capitalize<J & string>}`>, import("@ngrx-traits/core").PostfixProps<{
|
|
48
|
+
isLoading: (state: import("@ngrx-traits/core").PrefixProps<import("@ngrx-traits/common").StatusState, `load${Capitalize<J & string>}`>) => boolean;
|
|
49
|
+
isSuccess: (state: import("@ngrx-traits/core").PrefixProps<import("@ngrx-traits/common").StatusState, `load${Capitalize<J & string>}`>) => boolean;
|
|
50
|
+
isFail: (state: import("@ngrx-traits/core").PrefixProps<import("@ngrx-traits/common").StatusState, `load${Capitalize<J & string>}`>) => boolean;
|
|
51
|
+
}, `load${Capitalize<J & string>}`>, {}, string, {
|
|
52
|
+
name: `load${Capitalize<J & string>}`;
|
|
53
|
+
actionProps: ActionCreatorProps<Request> | undefined;
|
|
54
|
+
actionSuccessProps: ActionCreatorProps<Response> | undefined;
|
|
55
|
+
actionFailProps: ActionCreatorProps<Failure> | undefined;
|
|
56
|
+
}, import("@ngrx-traits/core").AllTraitConfigs>, import("@ngrx-traits/core").TraitFactory<State, {}, import("@ngrx-traits/core").PostfixProps<{
|
|
57
|
+
select: (state: LoadEntityState<Entity, J>) => Entity;
|
|
58
|
+
}, J>, {}, string, {
|
|
59
|
+
entityName: J;
|
|
60
|
+
actionProps: ActionCreatorProps<Request> | undefined;
|
|
61
|
+
actionSuccessProps: ActionCreatorProps<Response> | undefined;
|
|
62
|
+
actionFailProps: ActionCreatorProps<Failure> | undefined;
|
|
63
|
+
}, import("@ngrx-traits/core").AllTraitConfigs>];
|
|
64
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@ngrx-traits/common",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": "^12.0.0",
|
|
6
|
+
"@angular/compiler": "^12.0.0",
|
|
7
|
+
"@angular/core": "^12.0.0",
|
|
8
|
+
"@ngrx/effects": "^12.2.0",
|
|
9
|
+
"@ngrx/entity": "^12.2.0",
|
|
10
|
+
"@ngrx/store": "^12.2.0",
|
|
11
|
+
"@ngrx-traits/core": "0.0.1",
|
|
12
|
+
"rxjs": "~6.6.0"
|
|
13
|
+
},
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "https://github.com/gabrielguerrero/ngrx-traits.git"
|
|
17
|
+
},
|
|
18
|
+
"main": "bundles/ngrx-traits-common.umd.js",
|
|
19
|
+
"module": "fesm2015/ngrx-traits-common.js",
|
|
20
|
+
"es2015": "fesm2015/ngrx-traits-common.js",
|
|
21
|
+
"esm2015": "esm2015/ngrx-traits-common.js",
|
|
22
|
+
"fesm2015": "fesm2015/ngrx-traits-common.js",
|
|
23
|
+
"typings": "ngrx-traits-common.d.ts",
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"tslib": "^2.2.0"
|
|
27
|
+
}
|
|
28
|
+
}
|
package/public_api.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './index';
|
package/reset/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './reset.trait';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { GenericActionCreator } from '../load-entities';
|
|
2
|
+
/**
|
|
3
|
+
* Generates the ngrx code needed to reset the current state to the initial state.
|
|
4
|
+
* @param traitConfig - Config object fot the trait factory
|
|
5
|
+
* @param traitConfig.resetOn - set an extra action which will also trigger a reset state,
|
|
6
|
+
* useful if you want to create an action that reset several features states
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* // The following trait config
|
|
10
|
+
*
|
|
11
|
+
* export interface TestState
|
|
12
|
+
* extends EntityAndStatusState<Todo>,FilterState<TodoFilter>{}
|
|
13
|
+
*
|
|
14
|
+
* const traits = createEntityFeatureFactory(
|
|
15
|
+
* addLoadEntitiesTrait<Todo>(),
|
|
16
|
+
* addResetEntitiesStateTrait()
|
|
17
|
+
* )({
|
|
18
|
+
* actionsGroupKey: '[Todos]',
|
|
19
|
+
* featureSelector: createFeatureSelector<TestState>>(
|
|
20
|
+
* 'todos',
|
|
21
|
+
* ),
|
|
22
|
+
* });
|
|
23
|
+
* // will generate the following actions, plus the ones generated by other traits
|
|
24
|
+
* traits.actions.resetTodosState()
|
|
25
|
+
*/
|
|
26
|
+
export declare function addResetEntitiesStateTrait(traitConfig?: {
|
|
27
|
+
resetOn?: GenericActionCreator[];
|
|
28
|
+
}): import("@ngrx-traits/core").TraitFactory<{}, {
|
|
29
|
+
resetEntitiesState: import("@ngrx/store").ActionCreator<string, () => import("@ngrx/store/src/models").TypedAction<string>>;
|
|
30
|
+
}, {}, {}, "reset", {
|
|
31
|
+
resetOn?: GenericActionCreator[] | undefined;
|
|
32
|
+
}, import("@ngrx-traits/core").AllTraitConfigs>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Dictionary } from '@ngrx/entity';
|
|
2
|
+
import { LoadEntitiesState } from '../load-entities/load-entities.model';
|
|
3
|
+
import { ActionCreator, TypedAction } from '@ngrx/store/src/models';
|
|
4
|
+
export interface SelectEntitiesState {
|
|
5
|
+
selectedIds: Dictionary<boolean>;
|
|
6
|
+
}
|
|
7
|
+
export declare type SelectEntitiesActions = {
|
|
8
|
+
selectEntities: ActionCreator<string, (props: {
|
|
9
|
+
id: number | string;
|
|
10
|
+
}) => {
|
|
11
|
+
id: number | string;
|
|
12
|
+
} & TypedAction<string>>;
|
|
13
|
+
deselectEntities: ActionCreator<string, (props: {
|
|
14
|
+
id: number | string;
|
|
15
|
+
}) => {
|
|
16
|
+
id: number | string;
|
|
17
|
+
} & TypedAction<string>>;
|
|
18
|
+
toggleSelectEntities: ActionCreator<string, (props: {
|
|
19
|
+
id: number | string;
|
|
20
|
+
}) => {
|
|
21
|
+
id: number | string;
|
|
22
|
+
} & TypedAction<string>>;
|
|
23
|
+
toggleSelectAllEntities: ActionCreator<string, () => TypedAction<string>>;
|
|
24
|
+
clearEntitiesSelection: ActionCreator<string, () => TypedAction<string>>;
|
|
25
|
+
};
|
|
26
|
+
export declare type SelectEntitiesSelectors<Entity> = {
|
|
27
|
+
isAllEntitiesSelected: (state: LoadEntitiesState<Entity> & SelectEntitiesState) => Selected;
|
|
28
|
+
selectEntitiesIdsSelectedMap: (state: LoadEntitiesState<Entity> & SelectEntitiesState) => Dictionary<boolean>;
|
|
29
|
+
selectEntitiesIdsSelectedList: (state: LoadEntitiesState<Entity> & SelectEntitiesState) => number[] | string[];
|
|
30
|
+
selectEntitiesSelectedMap: (state: LoadEntitiesState<Entity> & SelectEntitiesState) => Dictionary<Entity>;
|
|
31
|
+
selectEntitiesSelectedList: (state: LoadEntitiesState<Entity> & SelectEntitiesState) => Entity[];
|
|
32
|
+
selectTotalSelectedEntities: (state: LoadEntitiesState<Entity> & SelectEntitiesState) => number;
|
|
33
|
+
};
|
|
34
|
+
export declare type SelectEntitiesMutators<Entity> = {
|
|
35
|
+
selectEntities: <S extends LoadEntitiesState<Entity> & SelectEntitiesState>(id: number | string, state: S) => S;
|
|
36
|
+
deselectEntities<S extends LoadEntitiesState<Entity> & SelectEntitiesState>(id: number | string, state: S): S;
|
|
37
|
+
toggleSelectEntities<S extends LoadEntitiesState<Entity> & SelectEntitiesState>(id: number | string, state: S): S;
|
|
38
|
+
toggleSelectAllEntities<S extends LoadEntitiesState<Entity> & SelectEntitiesState>(state: S): S;
|
|
39
|
+
clearEntitiesSelection<S extends LoadEntitiesState<Entity> & SelectEntitiesState>(state: S): S;
|
|
40
|
+
};
|
|
41
|
+
export declare type Selected = 'all' | 'some' | 'none';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { SelectEntitiesSelectors, SelectEntitiesActions } from './select-entities.model';
|
|
2
|
+
/**
|
|
3
|
+
* Generates ngrx code to add multi selection to a list
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* // The following trait config
|
|
7
|
+
*
|
|
8
|
+
* export interface TestState
|
|
9
|
+
* extends EntityAndStatusState<Todo>,MultipleSelectionState{}
|
|
10
|
+
*
|
|
11
|
+
* const traits = createEntityFeatureFactory(
|
|
12
|
+
* addLoadEntitiesTrait<Todo>(),
|
|
13
|
+
* addSelectEntitiesTrait<Todo>()
|
|
14
|
+
* )({
|
|
15
|
+
* actionsGroupKey: '[Todos]',
|
|
16
|
+
* featureSelector: createFeatureSelector<TestState>>(
|
|
17
|
+
* 'todos',
|
|
18
|
+
* ),
|
|
19
|
+
* });
|
|
20
|
+
* // will generate the following actions and selectors, plus the ones generated by other traits
|
|
21
|
+
* traits.actions.selectTodos({id})
|
|
22
|
+
* traits.actions.deselectTodos({id})
|
|
23
|
+
* traits.actions.toggleSectTodos({id})
|
|
24
|
+
* traits.actions.toggleSelectAllTodos()
|
|
25
|
+
* traits.actions.clearTodosSelection()
|
|
26
|
+
*
|
|
27
|
+
* traits.selectors.isAllTodosSelected()
|
|
28
|
+
* traits.selectors.selectTodosIdsSelectedMap()
|
|
29
|
+
* traits.selectors.selectTodosIdsSelectedList()
|
|
30
|
+
* traits.selectors.selectTodosSelectedMap()
|
|
31
|
+
* traits.selectors.selectTodosSelectedList()
|
|
32
|
+
* traits.selectors.selectTotalSelectedTodos()
|
|
33
|
+
*/
|
|
34
|
+
export declare function addSelectEntitiesTrait<Entity>(): import("@ngrx-traits/core").TraitFactory<import("../load-entities/load-entities.model").LoadEntitiesState<Entity> & import("./select-entities.model").SelectEntitiesState, SelectEntitiesActions, SelectEntitiesSelectors<Entity>, import("./select-entities.model").SelectEntitiesMutators<Entity>, "SelectEntities", unknown, import("@ngrx-traits/core").AllTraitConfigs>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoadEntitiesActions, LoadEntitiesKeyedConfig, LoadEntitiesState } from '../load-entities/load-entities.model';
|
|
2
|
+
import { SortEntitiesActions, SortEntitiesKeyedConfig } from '../sort-entities/sort-entities.model';
|
|
3
|
+
import { SelectEntitiesMutators, SelectEntitiesActions, SelectEntitiesState } from './select-entities.model';
|
|
4
|
+
import { CrudEntitiesActions } from '../crud-entities/crud-entities.model';
|
|
5
|
+
import { EntitiesPaginationActions, EntitiesPaginationKeyedConfig } from '../entities-pagination/entities-pagination.model';
|
|
6
|
+
import { FilterEntitiesActions } from '../filter-entities';
|
|
7
|
+
export declare function createSelectEntitiesInitialState<Entity>(previousInitialState: any): LoadEntitiesState<Entity> & SelectEntitiesState;
|
|
8
|
+
export declare function createSelectEntitiesTraitReducer<Entity, S extends LoadEntitiesState<Entity> & SelectEntitiesState>(initialState: S, allActions: SelectEntitiesActions & CrudEntitiesActions<Entity> & SortEntitiesActions<Entity> & LoadEntitiesActions<Entity> & FilterEntitiesActions<any> & EntitiesPaginationActions, allMutators: SelectEntitiesMutators<Entity>, allConfigs: LoadEntitiesKeyedConfig<Entity> & EntitiesPaginationKeyedConfig & SortEntitiesKeyedConfig<Entity>): import("@ngrx/store").ActionReducer<S, import("@ngrx/store").Action>;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { SelectEntitiesSelectors } from './select-entities.model';
|
|
2
|
+
import { LoadEntitiesSelectors } from '../load-entities';
|
|
3
|
+
export declare function createSelectEntitiesTraitSelectors<Entity>(previousSelectors: LoadEntitiesSelectors<Entity>): SelectEntitiesSelectors<Entity>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SelectEntitiesState } from './select-entities.model';
|
|
2
|
+
import { LoadEntitiesState } from '../load-entities';
|
|
3
|
+
export declare function deselectEntities<S extends SelectEntitiesState>(id: number | string, state: S): S;
|
|
4
|
+
export declare function selectEntities<S extends SelectEntitiesState>(id: number | string, state: S): S;
|
|
5
|
+
export declare function toggleSelectEntities<S extends SelectEntitiesState>(id: number | string, state: S): S;
|
|
6
|
+
export declare function clearEntitiesSelection<S extends SelectEntitiesState>(state: S): S;
|
|
7
|
+
export declare function selectTotalSelectedEntities<Entity, S extends LoadEntitiesState<Entity> & SelectEntitiesState>(state: S): number;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ActionCreator, TypedAction } from '@ngrx/store/src/models';
|
|
2
|
+
import { KeyedConfig } from '@ngrx-traits/core';
|
|
3
|
+
import { LoadEntitiesState } from '../load-entities/load-entities.model';
|
|
4
|
+
export interface SelectEntityState {
|
|
5
|
+
selectedId?: number | string;
|
|
6
|
+
}
|
|
7
|
+
export declare type SelectEntityActions = {
|
|
8
|
+
selectEntity: ActionCreator<string, (props: {
|
|
9
|
+
id: number | string;
|
|
10
|
+
}) => {
|
|
11
|
+
id: number | string;
|
|
12
|
+
} & TypedAction<string>>;
|
|
13
|
+
deselectEntity: ActionCreator<string, () => TypedAction<string>>;
|
|
14
|
+
toggleSelectEntity: ActionCreator<string, (props: {
|
|
15
|
+
id: number | string;
|
|
16
|
+
}) => {
|
|
17
|
+
id: number | string;
|
|
18
|
+
} & TypedAction<string>>;
|
|
19
|
+
};
|
|
20
|
+
export declare type SelectEntitySelectors<T> = {
|
|
21
|
+
selectEntityIdSelected: (state: LoadEntitiesState<T> & SelectEntityState) => string | number | undefined;
|
|
22
|
+
selectEntitySelected: (state: LoadEntitiesState<T> & SelectEntityState) => T | undefined;
|
|
23
|
+
};
|
|
24
|
+
export declare type SelectEntityMutators<T> = {
|
|
25
|
+
selectEntity<S extends LoadEntitiesState<T> & SelectEntityState>(id: string | number, state: S): S;
|
|
26
|
+
deselectEntity<S extends LoadEntitiesState<T> & SelectEntityState>(state: S): S;
|
|
27
|
+
toggleSelectEntity<S extends LoadEntitiesState<T> & SelectEntityState>(id: string | number, state: S): S;
|
|
28
|
+
};
|
|
29
|
+
export interface SelectEntityConfig {
|
|
30
|
+
selectedId?: string | number;
|
|
31
|
+
}
|
|
32
|
+
export declare const selectEntityTraitKey = "singleSelection";
|
|
33
|
+
export declare type SelectEntityKeyedConfig = KeyedConfig<typeof selectEntityTraitKey, SelectEntityConfig>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SelectEntityActions, SelectEntityConfig } from './select-entity.model';
|
|
2
|
+
/**
|
|
3
|
+
* Generates ngrx code to add single selection to a list
|
|
4
|
+
* @param config
|
|
5
|
+
* @param config.selectedId - Default selected id
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* // The following trait config
|
|
9
|
+
*
|
|
10
|
+
* export interface TestState
|
|
11
|
+
* extends EntityAndStatusState<Todo>,SelectEntityState{}
|
|
12
|
+
*
|
|
13
|
+
* const traits = createEntityFeatureFactory(
|
|
14
|
+
* addLoadEntitiesTrait<Todo>(),
|
|
15
|
+
* addSelectEntityTrait<Todo>()
|
|
16
|
+
* )({
|
|
17
|
+
* actionsGroupKey: '[Todos]',
|
|
18
|
+
* featureSelector: createFeatureSelector<TestState>>(
|
|
19
|
+
* 'todos',
|
|
20
|
+
* ),
|
|
21
|
+
* });
|
|
22
|
+
* // will generate the following actions and selectors, plus the ones generated by other traits
|
|
23
|
+
* traits.actions.selectTodo({id})
|
|
24
|
+
* traits.actions.deselectTodo()
|
|
25
|
+
* traits.actions.toggleSelectTodo({id})
|
|
26
|
+
*
|
|
27
|
+
* traits.selectors.selectTodoIdSelected()
|
|
28
|
+
* traits.selectors.selectTodoSelected()
|
|
29
|
+
*/
|
|
30
|
+
export declare function addSelectEntityTrait<Entity>(config?: SelectEntityConfig): import("@ngrx-traits/core").TraitFactory<import("../load-entities/load-entities.model").LoadEntitiesState<Entity> & import("./select-entity.model").SelectEntityState, SelectEntityActions, import("./select-entity.model").SelectEntitySelectors<Entity>, import("./select-entity.model").SelectEntityMutators<unknown>, "singleSelection", SelectEntityConfig, import("@ngrx-traits/core").AllTraitConfigs>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LoadEntitiesActions, LoadEntitiesKeyedConfig, LoadEntitiesState } from '../load-entities/load-entities.model';
|
|
2
|
+
import { SortEntitiesActions, SortEntitiesKeyedConfig } from '../sort-entities/sort-entities.model';
|
|
3
|
+
import { SelectEntityActions, SelectEntityKeyedConfig, SelectEntityMutators, SelectEntityState } from './select-entity.model';
|
|
4
|
+
import { CrudEntitiesActions } from '../crud-entities/crud-entities.model';
|
|
5
|
+
import { EntitiesPaginationActions, EntitiesPaginationKeyedConfig } from '../entities-pagination/entities-pagination.model';
|
|
6
|
+
import { FilterEntitiesActions } from '../filter-entities';
|
|
7
|
+
export declare function createSelectEntityInitialState<Entity>(previousInitialState: any, allConfigs: SelectEntityKeyedConfig): LoadEntitiesState<Entity> & SelectEntityState;
|
|
8
|
+
export declare function createSelectEntityTraitReducer<Entity, S extends LoadEntitiesState<Entity> & SelectEntityState>(initialState: S, allActions: SelectEntityActions & CrudEntitiesActions<Entity> & SortEntitiesActions<Entity> & EntitiesPaginationActions & FilterEntitiesActions<any> & LoadEntitiesActions<Entity>, allMutators: SelectEntityMutators<Entity>, allConfigs: SelectEntityKeyedConfig & LoadEntitiesKeyedConfig<Entity> & EntitiesPaginationKeyedConfig & SortEntitiesKeyedConfig<Entity>): import("@ngrx/store").ActionReducer<S, import("@ngrx/store").Action>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PostfixProps } from '@ngrx-traits/core';
|
|
2
|
+
import { ActionCreator, TypedAction } from '@ngrx/store/src/models';
|
|
3
|
+
declare type SetActions<T> = {
|
|
4
|
+
/**
|
|
5
|
+
* set entity in the store
|
|
6
|
+
*/
|
|
7
|
+
set: ActionCreator<string, (props: T) => TypedAction<string>>;
|
|
8
|
+
};
|
|
9
|
+
export declare type SetEntityActions<Entity, J extends string> = PostfixProps<SetActions<Entity>, J>;
|
|
10
|
+
export declare type SetEntityState<Entity, J extends string> = {
|
|
11
|
+
[key in `${J}`]?: Entity;
|
|
12
|
+
};
|
|
13
|
+
export declare type SetEntitySelectors<Entity, J extends string> = PostfixProps<{
|
|
14
|
+
select: (state: SetEntityState<Entity, J>) => Entity;
|
|
15
|
+
}, J>;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SetEntityState } from './set-entity.model';
|
|
2
|
+
import { ActionCreatorProps } from '@ngrx/store/src/models';
|
|
3
|
+
declare type RecordEntity<T> = T extends Record<string, infer J> ? J : never;
|
|
4
|
+
/**
|
|
5
|
+
* Generates ngrx code needed to set and entity in the store state
|
|
6
|
+
* @param entityName - Entity name, should be in camel case
|
|
7
|
+
* @param options.actionProps - param for the main request action,
|
|
8
|
+
* use the props() function for its value
|
|
9
|
+
* @returns the trait factory
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const traits = createEntityFeatureFactory(
|
|
13
|
+
* addSetEntityTraits({
|
|
14
|
+
* entityName: 'client',
|
|
15
|
+
* actionProps: props<{ client: { id: number; name: string } }
|
|
16
|
+
* }),
|
|
17
|
+
* )({
|
|
18
|
+
* actionsGroupKey: 'Client',
|
|
19
|
+
* featureSelector: createFeatureSelector<
|
|
20
|
+
* SetEntityState<Client, 'client'>
|
|
21
|
+
* >('client'),
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // will generate
|
|
25
|
+
* traits.actions.setClient({client: {id:123, name: 'gabs'}});
|
|
26
|
+
* traits.selectors.selectClient
|
|
27
|
+
*/
|
|
28
|
+
export declare function addSetEntityTrait<J extends string, Payload extends Record<J, any> | undefined = undefined, Entity = RecordEntity<Payload>, State = SetEntityState<Entity, J>>({ entityName, actionProps, }: {
|
|
29
|
+
entityName: J;
|
|
30
|
+
actionProps?: ActionCreatorProps<Payload>;
|
|
31
|
+
}): import("@ngrx-traits/core").TraitFactory<State, import("@ngrx-traits/core").PostfixProps<{
|
|
32
|
+
set: import("@ngrx/store").ActionCreator<string, (props: Payload) => import("@ngrx/store/src/models").TypedAction<string>>;
|
|
33
|
+
}, J>, import("@ngrx-traits/core").PostfixProps<{
|
|
34
|
+
select: (state: SetEntityState<Entity, J>) => Entity;
|
|
35
|
+
}, J>, {}, string, {
|
|
36
|
+
entityName: J;
|
|
37
|
+
actionProps: ActionCreatorProps<Payload> | undefined;
|
|
38
|
+
}, import("@ngrx-traits/core").AllTraitConfigs>;
|
|
39
|
+
export {};
|