@verisoft/store 18.7.0 → 18.8.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.
Files changed (46) hide show
  1. package/README.md +7 -56
  2. package/esm2022/index.mjs +11 -0
  3. package/esm2022/lib/binding-state/binding.actions.mjs +35 -0
  4. package/esm2022/lib/binding-state/binding.effects.mjs +124 -0
  5. package/esm2022/lib/detail-state/detail.actions.mjs +47 -0
  6. package/esm2022/lib/detail-state/detail.effects.mjs +116 -0
  7. package/esm2022/lib/detail-state/detail.models.mjs +12 -0
  8. package/esm2022/lib/detail-state/detail.reducer.mjs +87 -0
  9. package/esm2022/lib/table-state/actions.mjs +50 -0
  10. package/esm2022/lib/table-state/effects.mjs +49 -0
  11. package/esm2022/lib/table-state/models.mjs +12 -0
  12. package/esm2022/lib/table-state/reducers.mjs +80 -0
  13. package/esm2022/verisoft-store.mjs +5 -0
  14. package/fesm2022/verisoft-store.mjs +602 -0
  15. package/fesm2022/verisoft-store.mjs.map +1 -0
  16. package/{src/index.ts → index.d.ts} +10 -12
  17. package/lib/binding-state/binding.actions.d.ts +43 -0
  18. package/lib/binding-state/binding.effects.d.ts +45 -0
  19. package/lib/detail-state/detail.actions.d.ts +52 -0
  20. package/lib/detail-state/detail.effects.d.ts +52 -0
  21. package/lib/detail-state/detail.models.d.ts +27 -0
  22. package/lib/detail-state/detail.reducer.d.ts +4 -0
  23. package/lib/table-state/actions.d.ts +48 -0
  24. package/lib/table-state/effects.d.ts +25 -0
  25. package/lib/table-state/models.d.ts +9 -0
  26. package/lib/table-state/reducers.d.ts +3 -0
  27. package/package.json +28 -13
  28. package/.eslintrc.json +0 -43
  29. package/jest.config.ts +0 -22
  30. package/ng-package.json +0 -7
  31. package/project.json +0 -36
  32. package/src/lib/binding-state/binding.actions.ts +0 -76
  33. package/src/lib/binding-state/binding.effects.ts +0 -472
  34. package/src/lib/detail-state/detail.actions.ts +0 -89
  35. package/src/lib/detail-state/detail.effects.ts +0 -283
  36. package/src/lib/detail-state/detail.models.ts +0 -42
  37. package/src/lib/detail-state/detail.reducer.ts +0 -147
  38. package/src/lib/table-state/actions.ts +0 -93
  39. package/src/lib/table-state/effects.ts +0 -99
  40. package/src/lib/table-state/models.ts +0 -20
  41. package/src/lib/table-state/reducers.ts +0 -126
  42. package/src/test-setup.ts +0 -8
  43. package/tsconfig.json +0 -29
  44. package/tsconfig.lib.json +0 -17
  45. package/tsconfig.lib.prod.json +0 -9
  46. package/tsconfig.spec.json +0 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verisoft-store.mjs","sources":["../../../../../src/libs/store/src/lib/detail-state/detail.actions.ts","../../../../../src/libs/store/src/lib/detail-state/detail.models.ts","../../../../../src/libs/store/src/lib/detail-state/detail.reducer.ts","../../../../../src/libs/store/src/lib/detail-state/detail.effects.ts","../../../../../src/libs/store/src/lib/table-state/actions.ts","../../../../../src/libs/store/src/lib/table-state/models.ts","../../../../../src/libs/store/src/lib/table-state/reducers.ts","../../../../../src/libs/store/src/lib/table-state/effects.ts","../../../../../src/libs/store/src/lib/binding-state/binding.actions.ts","../../../../../src/libs/store/src/lib/binding-state/binding.effects.ts","../../../../../src/libs/store/src/verisoft-store.ts"],"sourcesContent":["import { createAction, props } from '@ngrx/store';\nimport { FormState } from './detail.models';\n\nexport function createInitDetailAction(detailsRepository: string) {\n return createAction(\n `[${detailsRepository} Page] Init`,\n props<{ obj: string | null | number | undefined | any }>()\n );\n}\n\nexport function createInitNewDetailAction(detailsRepository: string) {\n return createAction(`[${detailsRepository} Page] Init New`);\n}\n\nexport function createLoadDetailSuccessAction<T>(detailsRepository: string) {\n return createAction(\n `[${detailsRepository}/API] Load ${detailsRepository} Success`,\n props<{ item: T }>()\n );\n}\n\nexport function createLoadDetailFailureAction(detailsRepository: string) {\n return createAction(\n `[${detailsRepository}/API] Load ${detailsRepository} Failure`,\n props<{ error: any }>()\n );\n}\n\nexport function createUpdateDetailAction<T>(detailsRepository: string) {\n return createAction(\n `[${detailsRepository}/API] Update ${detailsRepository}`,\n props<{ item: T }>()\n );\n}\n\nexport function createUpdateDetailSetErrorsAction(detailsRepository: string) {\n return createAction(\n `[${detailsRepository}/API] Update Validation Errors ${detailsRepository}`,\n props<{ error: any }>()\n )\n}\n\nexport function createUpdateFormStateAction(detailsRepository: string) {\n return createAction(\n `[${detailsRepository}/API] Update Form State`,\n props<{ formState: FormState }>()\n );\n}\n\nexport function createSaveDetailAction(detailsRepository: string) {\n return createAction(`[${detailsRepository}/API] Save Detail `);\n}\n\nexport function createSaveDetailSuccessAction<T>(detailsRepository: string) {\n return createAction(\n `[${detailsRepository}/API] Save Detail Success`,\n props<{ item: T }>()\n );\n}\n\nexport function createSaveDetailFailureAction(detailsRepository: string) {\n return createAction(\n `[${detailsRepository}/API] Save Detail Failure`,\n props<{ error: any }>()\n );\n}\n\nexport function createUpdateSaveDetailAction(detailsRepository: string) {\n return createAction(`[${detailsRepository}/API] Update Detail `);\n}\n\nexport function createResetStateAction(detailsRepository: string) {\n return createAction(`[${detailsRepository}/API] Reset State`);\n}\n\nexport function createDeleteDetailAction(detailsRepository: string) {\n return createAction(`[${detailsRepository}/API] Delete Detail`);\n}\n\nexport function createDeleteDetailSuccessAction(detailsRepository: string) {\n return createAction(`[${detailsRepository}/API] Delete Detail Success`);\n}\n\nexport function createDeleteDetailFailureAction(detailsRepository: string) {\n return createAction(\n `[${detailsRepository}/API] Delete Detail Failure`,\n props<{ error: any }>()\n );\n}\n","export interface DetailState<T> {\n loaded: boolean;\n item?: T;\n formState?: FormState;\n error?: string | null;\n saveItemState: SaveItemState;\n backendValidationErrors: BackendValidationError[];\n}\n\nexport interface BackendValidationError {\n code: string;\n message: string;\n parameters: string;\n}\n\nexport interface ChosenRowsState<T> { \n rows: Array<T>;\n}\n\nexport interface SaveItemState {\n saveInProgress: boolean;\n error?: string | null;\n}\n\nexport const INITIAL_SAVE_ITEM_STATE: SaveItemState = {\n saveInProgress: false,\n};\n\nexport const INITIAL_CHOSEN_ROW_STATE: ChosenRowsState<any> = {\n rows: []\n}\n\nexport const INITIAL_DETAIL_STATE: DetailState<any> = {\n loaded: false,\n saveItemState: INITIAL_SAVE_ITEM_STATE,\n backendValidationErrors: [],\n};\n\nexport interface FormState {\n dirty: boolean;\n valid: boolean;\n}\n","import { ActionCreator, createReducer, on, ReducerTypes } from '@ngrx/store';\nimport {\n createInitDetailAction,\n createInitNewDetailAction,\n createLoadDetailFailureAction,\n createLoadDetailSuccessAction,\n createResetStateAction,\n createSaveDetailAction,\n createSaveDetailFailureAction,\n createSaveDetailSuccessAction,\n createUpdateDetailAction,\n createUpdateDetailSetErrorsAction,\n createUpdateFormStateAction,\n} from './detail.actions';\nimport {\n DetailState,\n INITIAL_DETAIL_STATE,\n INITIAL_SAVE_ITEM_STATE,\n} from './detail.models';\n\nexport function createDetailReducers<\n T = any,\n TState extends DetailState<T> = DetailState<T>\n>(\n detailRepository: string,\n initialState: TState = INITIAL_DETAIL_STATE as unknown as TState,\n ...ons: ReducerTypes<TState, readonly ActionCreator[]>[]\n) {\n return createReducer(\n initialState,\n on(createInitDetailAction(detailRepository), (state) => {\n return {\n ...state,\n loaded: false,\n error: null,\n };\n }),\n\n on(createInitNewDetailAction(detailRepository), (state) => {\n return {\n ...state,\n loaded: false,\n error: null,\n };\n }),\n\n on(createLoadDetailSuccessAction(detailRepository), (state, { item }) => {\n return {\n ...state,\n loaded: true,\n item,\n };\n }),\n\n on(createLoadDetailFailureAction(detailRepository), (state, { error }) => {\n return {\n ...state,\n loaded: true,\n error,\n };\n }),\n\n on(createUpdateDetailAction(detailRepository), (state, { item }) => {\n return {\n ...state,\n item,\n formState: {\n dirty: true,\n valid: state.formState?.valid ?? true,\n },\n };\n }),\n\n on(createUpdateDetailSetErrorsAction(detailRepository), (state, { error }) => {\n return {\n ...state,\n backendValidationErrors: error\n }\n }),\n\n on(\n createUpdateFormStateAction(detailRepository),\n (state, { formState }) => {\n return {\n ...state,\n formState,\n };\n }\n ),\n\n on(createSaveDetailSuccessAction(detailRepository), (state) => {\n return {\n ...state,\n formState: {\n dirty: false,\n valid: state.formState?.valid ?? true,\n },\n };\n }),\n \n on(createResetStateAction(detailRepository), () => {\n return {\n ...(initialState as any),\n };\n }),\n \n on(createSaveDetailFailureAction(detailRepository), (state, { error }) => {\n return {\n ...state,\n backendValidationErrors: error.error\n }\n }),\n ...ons\n );\n}\n\nexport function createSaveDetailReducers(\n detailRepository: string,\n initialState = INITIAL_SAVE_ITEM_STATE\n) {\n return createReducer(\n initialState,\n\n on(createSaveDetailAction(detailRepository), (state) => {\n return {\n ...state,\n saveInProgress: true,\n };\n }),\n\n on(createSaveDetailSuccessAction(detailRepository), (state, { item }) => {\n return {\n ...state,\n item,\n saveInProgress: false,\n };\n }),\n\n on(createSaveDetailFailureAction(detailRepository), (state, { error }) => {\n return {\n ...state,\n error,\n saveInProgress: false,\n };\n })\n );\n}\n","import { Router } from '@angular/router';\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { BaseHttpService } from '@verisoft/core';\nimport {\n catchError,\n EMPTY,\n map,\n Observable,\n of,\n switchMap,\n tap,\n withLatestFrom,\n} from 'rxjs';\nimport {\n createDeleteDetailAction,\n createDeleteDetailFailureAction,\n createDeleteDetailSuccessAction,\n createInitDetailAction,\n createInitNewDetailAction,\n createLoadDetailFailureAction,\n createLoadDetailSuccessAction,\n createSaveDetailAction,\n createSaveDetailFailureAction,\n createSaveDetailSuccessAction,\n} from './detail.actions';\n\nexport interface CreateInitFormConfig<T> {\n service?: BaseHttpService<T>;\n get?: (obj: any) => Observable<T>;\n snackbar?: any;\n errorMessage?: string;\n notFoundMessage?: string;\n successMessge?: string;\n}\n\nexport interface DetailEffectConfig<T> {\n detail$: Observable<T | undefined>;\n snackbar?: any;\n router?: Router;\n redirectPath?: string;\n useItemId?: boolean;\n navigationMap?: Map<keyof T, string>;\n}\n\nexport function createInitDetailEffect<T>(\n detailsRepository: string,\n actions$: Actions,\n config: CreateInitFormConfig<T>\n) {\n return createEffect(() => {\n return actions$.pipe(\n ofType(createInitDetailAction(detailsRepository)),\n switchMap(({ obj }) => {\n const get$: Observable<any> = (config?.service?.get(obj as any) ??\n config?.get?.(obj)) as Observable<any>;\n if (!get$) return EMPTY;\n return get$?.pipe(\n map((item) => {\n return createLoadDetailSuccessAction(detailsRepository)({ item });\n }),\n catchError((error) => {\n if (error.status === 404) {\n config?.snackbar?.showError(config?.notFoundMessage ?? error);\n } else {\n config?.snackbar?.showError(config?.errorMessage ?? error);\n }\n\n console.error('Error', error);\n return of(\n createLoadDetailFailureAction(detailsRepository)({ error })\n );\n })\n );\n })\n );\n });\n}\n\nexport function createInitNewDetailEffect(\n detailsRepository: string,\n actions$: Actions\n) {\n return createEffect(() =>\n actions$.pipe(\n ofType(createInitNewDetailAction(detailsRepository)),\n map(() => {\n return createLoadDetailSuccessAction(detailsRepository)({ item: null });\n })\n )\n );\n}\n\nexport function createSaveDetailEffect<\n T extends { id: number | string },\n SERVICE extends BaseHttpService<T>\n>(\n detailsRepository: string,\n actions$: Actions,\n service: SERVICE,\n config: DetailEffectConfig<T>\n) {\n return createEffect(() =>\n actions$.pipe(\n ofType(createSaveDetailAction(detailsRepository)),\n withLatestFrom(config.detail$),\n switchMap(([, savedItem]) => {\n const isNew = !savedItem?.id;\n const saveAction = isNew\n ? service.post(savedItem as T)\n : service.put(savedItem.id, savedItem);\n return saveAction.pipe(\n map((item) => {\n if (isNew && config?.router && config?.redirectPath) {\n const suffix = config?.useItemId ? '/' + item.id : '';\n config.router.navigateByUrl(config.redirectPath + suffix);\n }\n\n if (isNew && config?.router && config?.navigationMap) {\n const url = constructUrlFromNavigationMap(item, config.navigationMap)\n config.router.navigateByUrl(url);\n }\n\n return createSaveDetailSuccessAction(detailsRepository)({\n item: item,\n });\n }),\n catchError((error) => {\n console.error('Error', error);\n return of(\n createSaveDetailFailureAction(detailsRepository)({ error })\n );\n })\n );\n })\n )\n );\n}\n\nexport function createSaveDetailSuccessEffect(\n detailsRepository: string,\n actions$: Actions,\n config?: CreateInitFormConfig<unknown>\n) {\n return createEffect(\n () =>\n actions$.pipe(\n ofType(createSaveDetailSuccessAction(detailsRepository)),\n map((data: any) => {\n config?.snackbar?.showSuccess(\n config?.successMessge ?? `Item successfully saved.`\n );\n return createInitDetailAction(detailsRepository)({ obj: data.item.id });\n })\n )\n );\n}\n\nexport function createSaveDetailFailureEffect(\n detailsRepository: string,\n actions$: Actions,\n config?: CreateInitFormConfig<unknown>\n) {\n return createEffect(\n () =>\n actions$.pipe(\n ofType(createSaveDetailFailureAction(detailsRepository)),\n tap(({ error }) => {\n config?.snackbar?.showError(\n config.errorMessage ?? `Error saving item. ${error.message}`\n );\n })\n ),\n {\n dispatch: false,\n }\n );\n}\n\nexport function createDeleteDetailEffect<\n T extends { id: number | string },\n SERVICE extends BaseHttpService<T>\n>(\n detailsRepository: string,\n actions$: Actions,\n service: SERVICE,\n config: DetailEffectConfig<T>,\n) {\n return createEffect(() =>\n actions$.pipe(\n ofType(createDeleteDetailAction(detailsRepository)),\n withLatestFrom(config.detail$),\n switchMap(([, savedItem]) => {\n const id = savedItem?.id;\n if (!id) {\n return of(\n createSaveDetailFailureAction(detailsRepository)({\n error: 'Item has no id',\n })\n );\n }\n\n return service.delete(id).pipe(\n map(() => {\n if (config?.router && config?.redirectPath) {\n config.router.navigateByUrl(`${config.redirectPath}`);\n }\n\n if (config?.router && config?.navigationMap) {\n const url = constructUrlFromNavigationMap(savedItem, config.navigationMap)\n config.router.navigateByUrl(url);\n }\n\n return createDeleteDetailSuccessAction(detailsRepository)();\n }),\n catchError((error) => {\n console.error('Error', error);\n config.snackbar?.showError('Failed to delete item.');\n return of(\n createDeleteDetailFailureAction(detailsRepository)({ error })\n );\n })\n );\n })\n )\n );\n}\n\nexport function createDeleteDetailSuccessEffect(\n detailsRepository: string,\n actions$: Actions,\n config?: CreateInitFormConfig<unknown>\n) {\n return createEffect(\n () =>\n actions$.pipe(\n ofType(createDeleteDetailSuccessAction(detailsRepository)),\n tap(() => {\n config?.snackbar?.showSuccess(\n config.successMessge ?? `Item successfully deleted.`\n );\n })\n ),\n {\n dispatch: false,\n }\n );\n}\n\nexport function createDeleteDetailFailureEffect(\n detailsRepository: string,\n actions$: Actions,\n config?: CreateInitFormConfig<unknown>\n) {\n return createEffect(\n () =>\n actions$.pipe(\n ofType(createDeleteDetailFailureAction(detailsRepository)),\n tap(({ error }) => {\n config?.snackbar?.showError(\n config.errorMessage ?? `Error deleting item. ${error.message}`\n );\n })\n ),\n {\n dispatch: false,\n }\n );\n}\n\nfunction constructUrlFromNavigationMap<T extends object>(\n item: T,\n navigationMap: Map<keyof T, string>)\n : string {\n let url = '';\n navigationMap.forEach((urlPartValue, suffixPropertyKey) => {\n const suffix = item[suffixPropertyKey];\n if (suffix) {\n url += `${urlPartValue}/${suffix}`;\n }\n });\n\n return url;\n}\n","import { createAction, props } from '@ngrx/store';\nimport { Page, Sort } from '@verisoft/core';\n\nenum TablePageAction {\n GET_PAGE = 'Get page',\n CREATE_STATIC_FILTER = 'Create static filter',\n DATA_LOAD_SUCCESS = 'Data load success',\n DATA_LOAD_ERROR = 'Data load error',\n REFRESH_PAGE = 'Refresh page',\n FILTER_PAGE = 'Filter page',\n CHANGE_PAGE_SIZE = 'Change page size',\n SORT_PAGE = 'Sort page',\n DESTROY = 'Destroy',\n SELECT_ITEMS = 'Select items',\n REMOVE_RANGE = 'Remove range',\n}\n\nexport function createGetPageTableAction<T = any>(tableRepository: string) {\n return createAction(\n `${tableRepository} ${TablePageAction.GET_PAGE}`,\n props<{\n page: number;\n size: number;\n id?: string | null;\n filter?: Partial<T>;\n sort?: Sort[];\n }>()\n );\n}\n\nexport function createStaticFilterTableAction<T = any>(\n tableRepository: string\n) {\n return createAction(\n `${tableRepository} ${TablePageAction.CREATE_STATIC_FILTER}`,\n props<{\n filter?: Partial<T>;\n }>()\n );\n}\n\nexport function createDataLoadSuccessTableAction<T>(tableRepository: string) {\n return createAction(\n `${tableRepository} ${TablePageAction.DATA_LOAD_SUCCESS}`,\n props<{ gPage: Page<T> }>()\n );\n}\n\nexport function createDataLoadErrorTableAction(tableRepository: string) {\n return createAction(\n `${tableRepository} ${TablePageAction.DATA_LOAD_ERROR}`,\n props<{ error: any }>()\n );\n}\n\nexport function createChangePageSizeTableAction(tableRepository: string) {\n return createAction(\n `${tableRepository} ${TablePageAction.CHANGE_PAGE_SIZE}`,\n props<{ size: number }>()\n );\n}\n\n// TODO: use action in delete item effect\nexport function createRefreshPageTableAction(tableRepository: string) {\n return createAction(`${tableRepository} ${TablePageAction.REFRESH_PAGE}`);\n}\n\nexport function createFilterPageTableAction<T>(tableRepository: string) {\n return createAction(\n `${tableRepository} ${TablePageAction.REFRESH_PAGE}`,\n props<{ filter: Partial<T> }>()\n );\n}\n\nexport function createResetTableFilterAction(tableRepository: string) {\n return createAction(`${tableRepository} ${TablePageAction.REFRESH_PAGE}`);\n}\n\nexport function createDestroyTableAction(tableRepository: string) {\n return createAction(`${tableRepository} ${TablePageAction.DESTROY}`);\n}\n\nexport function createSelectItemsTableAction<T>(tableRepository: string) {\n return createAction(\n `${tableRepository} ${TablePageAction.SELECT_ITEMS}`,\n props<{ selectedItems: T[] }>()\n );\n}\n\nexport function createRemoveRangeTableAction(tableRepository: string) {\n return createAction(`${tableRepository} ${TablePageAction.REMOVE_RANGE}`\n );\n}","import { DEFAULT_SEARCH_LIMIT, DEFAULT_SEARCH_PARAMS, Page, RequestParams } from \"@verisoft/core\";\n\nexport interface TableState<T> {\n dataLoading: boolean;\n requestParams: RequestParams<T>;\n gPage?: Page<T>;\n error?: string | null;\n selectedItems?: T[];\n}\n\nexport const INITIAL_TABLE_STATE: TableState<any> = {\n gPage: {\n data: [],\n size: DEFAULT_SEARCH_LIMIT,\n total: 0.\n } as unknown as Page<any>,\n dataLoading: false,\n requestParams: DEFAULT_SEARCH_PARAMS,\n selectedItems: []\n};","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ActionCreator, ReducerTypes, createReducer, on } from '@ngrx/store';\nimport {\n createGetPageTableAction,\n createStaticFilterTableAction,\n createDataLoadSuccessTableAction,\n createDataLoadErrorTableAction,\n createFilterPageTableAction,\n createDestroyTableAction,\n createSelectItemsTableAction,\n createChangePageSizeTableAction,\n createResetTableFilterAction,\n} from './actions';\nimport { INITIAL_TABLE_STATE, TableState } from './models';\n\nexport function createTablePageReducers<\n T = any,\n TState extends TableState<T> = TableState<T>\n>(\n tableRepository: string,\n initialState: TState = INITIAL_TABLE_STATE as unknown as TState,\n ...ons: ReducerTypes<TState, readonly ActionCreator[]>[]\n) {\n return createReducer(\n initialState,\n on(\n createGetPageTableAction(tableRepository),\n (state, { page, id, filter, sort }) => {\n return {\n ...state,\n requestParams: {\n ...state.requestParams,\n filter: filter ?? state.requestParams.filter,\n sort: sort ?? state.requestParams.sort,\n id: id ?? state.requestParams.id,\n page,\n },\n dataLoading: true,\n submitted: true,\n };\n }\n ),\n\n on(createStaticFilterTableAction(tableRepository), (state, { filter }) => {\n return {\n ...state,\n requestParams: {\n ...state.requestParams,\n filter: {\n ...state.requestParams?.filter,\n filter,\n },\n },\n };\n }),\n\n on(createResetTableFilterAction(tableRepository), (state) => {\n return {\n ...state,\n requestParams: {\n ...state.requestParams,\n filter: undefined,\n page: 1\n },\n }\n }),\n\n on(\n createDataLoadSuccessTableAction(tableRepository),\n (state, { gPage }) => {\n return {\n ...state,\n gPage,\n dataLoading: false,\n };\n }\n ),\n\n on(createDataLoadErrorTableAction(tableRepository), (state, { error }) => {\n return {\n ...state,\n error,\n dataLoading: false,\n };\n }),\n\n on(createFilterPageTableAction(tableRepository), (state, { filter }) => {\n return {\n ...state,\n requestParams: {\n ...state.requestParams,\n filter: filter,\n page: 1,\n },\n dataLoading: true,\n };\n }),\n\n on(createDestroyTableAction(tableRepository), () => {\n return {\n ...(initialState as any),\n };\n }),\n\n on(\n createSelectItemsTableAction(tableRepository),\n (state, { selectedItems }) => {\n return {\n ...state,\n selectedItems,\n };\n }\n ),\n\n on(createChangePageSizeTableAction(tableRepository), (state, { size }) => {\n return {\n ...state,\n requestParams: {\n ...state.requestParams,\n size,\n }\n }\n }),\n ...ons\n );\n}\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { createFeatureSelector, createSelector, Store } from '@ngrx/store';\nimport { BaseHttpService, DEFAULT_SEARCH_LIMIT, Page, RequestParams } from '@verisoft/core';\nimport { catchError, map, Observable, of, switchMap, withLatestFrom } from 'rxjs';\nimport {\n createGetPageTableAction,\n createDataLoadSuccessTableAction,\n createDataLoadErrorTableAction,\n createRemoveRangeTableAction,\n} from './actions';\nimport { TableState } from './models';\n\nexport interface CreateGetPageActionConfig<T> {\n service?: BaseHttpService<T>;\n fetchList?: (requestParams: RequestParams<any>) => Observable<Page<T>>;\n snackbar?: any;\n ngrxFeatureKey?: string;\n requireFilters?: boolean;\n}\n\nexport function createGetPageTableEffect<T>(\n tableRepository: string,\n actions$: Actions,\n config: CreateGetPageActionConfig<T>\n) {\n return createEffect(() => {\n return actions$.pipe(\n ofType(createGetPageTableAction(tableRepository)),\n switchMap(({ page, filter, sort, size }) => {\n const requestParams: RequestParams<any> = {\n offset: page * size,\n limit: size,\n sort,\n filter,\n };\n\n const params = config.service?.createParams(requestParams) ?? requestParams;\n\n const fetchList$: Observable<Page<T>> = (config.service?.fetchList(\n params\n ) ?? config.fetchList?.(params)) as Observable<Page<T>>;\n if (!fetchList$) {\n throw new Error('Service or fetchList$ must by defined.');\n }\n\n return fetchList$.pipe(\n map((gPage) => {\n const p = { ...gPage, number: page };\n return createDataLoadSuccessTableAction(tableRepository)({\n gPage: p,\n });\n }),\n catchError((error) => {\n config.snackbar?.showError(error.message);\n return of(\n createDataLoadErrorTableAction(tableRepository)({ error })\n );\n })\n );\n })\n );\n });\n}\n\nexport function createRemoveRangeTableEffect<T>(\n tableRepository: string,\n ngrxFeatureKey: string,\n actions$: Actions,\n store$: Store<any>,\n config: CreateGetPageActionConfig<T>\n) {\n return createEffect(() => {\n if(!config?.service) {\n throw new Error('Service must be defined!');\n }\n\n const selectedItems = createSelector(\n createFeatureSelector<any>(ngrxFeatureKey),\n (state: any) => {\n return (state?.[tableRepository] as TableState<any>)?.selectedItems as any;\n }\n );\n\n return actions$.pipe(\n ofType(createRemoveRangeTableAction(tableRepository)),\n withLatestFrom(selectedItems),\n switchMap(([, { selectedItems }]) => {\n return config.service!.removeRange(selectedItems).pipe(\n map(() => {\n return createGetPageTableAction(tableRepository)\n ({ page: 0, size: DEFAULT_SEARCH_LIMIT })\n }),\n catchError(error => {\n return of(createDataLoadErrorTableAction(tableRepository)({ error }))\n })\n );\n })\n );\n });\n}\n","import { createAction, props } from '@ngrx/store';\n\nexport function createAddBindingAction<TCreate>(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Add bindings`,\n props<{ binding: TCreate }>()\n );\n}\n\nexport function createAddBindingsAction<TCreate>(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Add bindings`,\n props<{ bindings: TCreate[] }>()\n );\n}\n\nexport function createAddBindingsFailureAction(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Add bindings failure`,\n props<{ error: any }>()\n );\n}\n\nexport function createAddBindingsSuccessAction(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Add bindings success`\n );\n}\n\nexport function createEditBindingAction<TEdit>(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Edit binding`,\n props<{ binding: TEdit }>()\n );\n}\n\nexport function createEditBindingFailureAction(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Edit binding failure`,\n props<{ error: any }>()\n );\n}\n\nexport function createEditBindingSuccessAction(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Edit binding success`\n );\n}\n\nexport function createDeleteBindingAction(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Delete binding`,\n props<{ id: number | string }>()\n );\n}\n\nexport function createDeleteBindingsAction(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Delete bindings`,\n props<{ bindingIds: number[] }>()\n );\n}\n\nexport function createDeleteBindingsFailureAction(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Delete bindings failure`,\n props<{ error: any }>()\n );\n}\n\nexport function createDeleteBindingsSuccessAction(bindingsRepository: string) {\n return createAction(\n `[${bindingsRepository}/API] Delete bindings success`\n );\n}\n\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\nimport {\n catchError,\n map,\n Observable,\n of,\n switchMap,\n tap,\n withLatestFrom,\n} from 'rxjs';\nimport {\n createAddBindingAction,\n createAddBindingsAction,\n createAddBindingsFailureAction,\n createAddBindingsSuccessAction,\n createDeleteBindingAction,\n createDeleteBindingsAction,\n createDeleteBindingsFailureAction,\n createDeleteBindingsSuccessAction,\n createEditBindingAction,\n createEditBindingFailureAction,\n createEditBindingSuccessAction,\n} from './binding.actions';\n\nexport function createSingleBindingEffectsWithEdit<\n T extends { id: number | string },\n TCreate,\n TEdit extends { id?: number | string }\n>(\n bindingsRepository: string,\n actions$: Actions,\n detail$: Observable<T | undefined>,\n bindingSingularName: string,\n bindingPluralName: string,\n addFunction: (\n bindings: TCreate,\n ) => Observable<any>,\n editFunction: (binding: TEdit, detailId: number | string) => Observable<any>,\n deleteFunction: (\n bindingIds: string | number,\n detailId: number | string\n ) => Observable<any>,\n snackbar: any,\n translateService: any,\n tableService: any,\n overrideDetailWithBinding = false,\n) {\n const addEffect = createAddBindingEffect(\n bindingsRepository,\n actions$,\n detail$,\n bindingPluralName,\n addFunction,\n snackbar,\n translateService,\n );\n\n const editEffect = createEditBindingEffect(\n bindingsRepository,\n actions$,\n detail$,\n bindingSingularName,\n editFunction,\n snackbar,\n translateService,\n overrideDetailWithBinding\n );\n\n const deleteEffect = createDeleteBindingEffect(\n bindingsRepository,\n actions$,\n detail$,\n bindingPluralName,\n deleteFunction,\n snackbar,\n translateService\n );\n\n const modifiedSuccessEffect = createBindingModifiedSuccessEffect(\n bindingsRepository,\n actions$,\n tableService\n );\n\n return { addEffect, editEffect, deleteEffect, modifiedSuccessEffect };\n}\n\nexport function createBindingsEffectsWithEdit<\n T extends { id: number | string },\n TCreate,\n TEdit extends { id?: number | string }\n>(\n bindingsRepository: string,\n actions$: Actions,\n detail$: Observable<T | undefined>,\n bindingSingularName: string,\n bindingPluralName: string,\n addFunction: (\n bindings: TCreate[],\n detailId: number | string\n ) => Observable<any>,\n editFunction: (binding: TEdit, detailId: number | string) => Observable<any>,\n deleteFunction: (\n bindingIds: number[],\n detailId: number | string\n ) => Observable<any>,\n snackbar: any,\n translateService: any,\n tableService: any,\n overrideDetailWithBinding = false,\n) {\n const addEffect = createAddBindingsEffect(\n bindingsRepository,\n actions$,\n detail$,\n bindingPluralName,\n addFunction,\n snackbar,\n translateService\n );\n\n const editEffect = createEditBindingEffect(\n bindingsRepository,\n actions$,\n detail$,\n bindingSingularName,\n editFunction,\n snackbar,\n translateService,\n overrideDetailWithBinding\n );\n\n const deleteEffect = createDeleteBindingsEffect(\n bindingsRepository,\n actions$,\n detail$,\n bindingPluralName,\n deleteFunction,\n snackbar,\n translateService\n );\n\n const modifiedSuccessEffect = createBindingModifiedSuccessEffect(\n bindingsRepository,\n actions$,\n tableService\n );\n\n return { addEffect, editEffect, deleteEffect, modifiedSuccessEffect };\n}\n\nexport function createBindingsEffects<\n T extends { id: number | string },\n TCreate\n>(\n bindingsRepository: string,\n actions$: Actions,\n detail$: Observable<T | undefined>,\n bindingPluralName: string,\n addFunction: (\n bindings: TCreate[],\n detailId: number | string\n ) => Observable<any>,\n deleteFunction: (\n bindingIds: number[],\n detailId: number | string\n ) => Observable<any>,\n snackbar: any,\n translateService: any,\n tableService: any\n) {\n const addEffect = createAddBindingsEffect(\n bindingsRepository,\n actions$,\n detail$,\n bindingPluralName,\n addFunction,\n snackbar,\n translateService\n );\n\n const deleteEffect = createDeleteBindingsEffect(\n bindingsRepository,\n actions$,\n detail$,\n bindingPluralName,\n deleteFunction,\n snackbar,\n translateService\n );\n\n const modifiedSuccessEffect = createBindingModifiedSuccessEffect(\n bindingsRepository,\n actions$,\n tableService\n );\n\n return { addEffect, deleteEffect, modifiedSuccessEffect };\n}\n\nfunction createAddBindingEffect<T extends { id: number | string }, TCreate>(\n bindingsRepository: string,\n actions$: Actions,\n detail$: Observable<T | undefined>,\n bindingPluralName: string,\n addFunction: (\n bindings: TCreate,\n ) => Observable<any>,\n snackbar: any,\n translateService: any,\n) {\n return createEffect(() =>\n actions$.pipe(\n ofType(createAddBindingAction<TCreate>(bindingsRepository)),\n withLatestFrom(detail$),\n switchMap(([{ binding }, detail]) => {\n const translatedPluralName =\n translateService.instant(bindingPluralName);\n const successMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.SUCCESS_ADD'\n )} ${translatedPluralName}!`;\n const failureMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.FAILURE_ADD'\n )} ${translatedPluralName}!`;\n\n return addFunction(binding).pipe(\n map(() => {\n snackbar.showSuccess(successMessage);\n return createAddBindingsSuccessAction(bindingsRepository)();\n }),\n catchError((error) => {\n snackbar.showError(failureMessage);\n return of(\n createAddBindingsFailureAction(bindingsRepository)({ error })\n );\n })\n );\n })\n )\n );\n}\n\nfunction createAddBindingsEffect<T extends { id: number | string }, TCreate>(\n bindingsRepository: string,\n actions$: Actions,\n detail$: Observable<T | undefined>,\n bindingPluralName: string,\n addFunction: (\n bindings: TCreate[],\n detailId: number | string\n ) => Observable<any>,\n snackbar: any,\n translateService: any\n) {\n return createEffect(() =>\n actions$.pipe(\n ofType(createAddBindingsAction<TCreate>(bindingsRepository)),\n withLatestFrom(detail$),\n switchMap(([{ bindings }, detail]) => {\n const translatedPluralName =\n translateService.instant(bindingPluralName);\n const successMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.SUCCESS_ADD'\n )} ${translatedPluralName}!`;\n const failureMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.FAILURE_ADD'\n )} ${translatedPluralName}!`;\n\n if (!detail?.id) {\n snackbar.showError(failureMessage);\n return of(\n createAddBindingsFailureAction(bindingsRepository)({\n error: failureMessage,\n })\n );\n }\n\n return addFunction(bindings, detail.id).pipe(\n map(() => {\n snackbar.showSuccess(successMessage);\n return createAddBindingsSuccessAction(bindingsRepository)();\n }),\n catchError((error) => {\n snackbar.showError(failureMessage);\n return of(\n createAddBindingsFailureAction(bindingsRepository)({ error })\n );\n })\n );\n })\n )\n );\n}\n\nfunction createEditBindingEffect<\n T extends { id: number | string },\n TEdit extends { id?: number | string }\n>(\n bindingsRepository: string,\n actions$: Actions,\n detail$: Observable<T | undefined>,\n bindingSingularName: string,\n editFunction: (binding: TEdit, detailId: number | string) => Observable<any>,\n snackbar: any,\n translateService: any,\n overrideDetailWithBinding = false,\n) {\n return createEffect(() =>\n actions$.pipe(\n ofType(createEditBindingAction<TEdit>(bindingsRepository)),\n withLatestFrom(detail$),\n switchMap(([{ binding }, detail]) => {\n const translatedPluralName =\n translateService.instant(bindingSingularName);\n const successMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.SUCCESS_EDIT'\n )} ${translatedPluralName}!`;\n const failureMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.FAILURE_EDIT'\n )} ${translatedPluralName}!`;\n\n const id = overrideDetailWithBinding ? binding?.id : detail?.id;\n if (!id) {\n snackbar.showError(failureMessage);\n return of(\n createEditBindingFailureAction(bindingsRepository)({\n error: failureMessage,\n })\n );\n }\n\n return editFunction(binding, id).pipe(\n map(() => {\n snackbar.showSuccess(successMessage);\n return createEditBindingSuccessAction(bindingsRepository)();\n }),\n catchError((error) => {\n snackbar.showError(failureMessage);\n return of(\n createEditBindingFailureAction(bindingsRepository)({ error })\n );\n })\n );\n })\n )\n );\n}\n\nfunction createDeleteBindingEffect<T extends { id: number | string }>(\n bindingsRepository: string,\n actions$: Actions,\n detail$: Observable<T | undefined>,\n bindingPluralName: string,\n deleteFunction: (\n bindingIds: string | number,\n detailId: string | number\n ) => Observable<any>,\n snackbar: any,\n translateService: any\n) {\n return createEffect(() =>\n actions$.pipe(\n ofType(createDeleteBindingAction(bindingsRepository)),\n withLatestFrom(detail$),\n switchMap(([{ id }, detail]) => {\n const translatedPluralName =\n translateService.instant(bindingPluralName);\n const successMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.SUCCESS_DELETE'\n )} ${translatedPluralName}!`;\n const failureMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.FAILURE_DELETE'\n )} ${translatedPluralName}!`;\n\n if (!id && !detail?.id) {\n snackbar.showError(failureMessage);\n return of(\n createDeleteBindingsFailureAction(bindingsRepository)({\n error: failureMessage,\n })\n );\n }\n\n return deleteFunction(id, id ?? detail?.id).pipe(\n map(() => {\n snackbar.showSuccess(successMessage);\n return createDeleteBindingsSuccessAction(bindingsRepository)();\n }),\n catchError((error) => {\n snackbar.showError(failureMessage);\n return of(\n createDeleteBindingsFailureAction(bindingsRepository)({ error })\n );\n })\n );\n })\n )\n );\n}\n\nfunction createDeleteBindingsEffect<T extends { id: number | string }>(\n bindingsRepository: string,\n actions$: Actions,\n detail$: Observable<T | undefined>,\n bindingPluralName: string,\n deleteFunction: (\n bindingIds: number[],\n detailId: string | number\n ) => Observable<any>,\n snackbar: any,\n translateService: any\n) {\n return createEffect(() =>\n actions$.pipe(\n ofType(createDeleteBindingsAction(bindingsRepository)),\n withLatestFrom(detail$),\n switchMap(([{ bindingIds }, detail]) => {\n const translatedPluralName =\n translateService.instant(bindingPluralName);\n const successMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.SUCCESS_DELETE'\n )} ${translatedPluralName}!`;\n const failureMessage = `${translateService.instant(\n 'BINDINGS_EFFECTS.FAILURE_DELETE'\n )} ${translatedPluralName}!`;\n\n if (!detail?.id) {\n snackbar.showError(failureMessage);\n return of(\n createDeleteBindingsFailureAction(bindingsRepository)({\n error: failureMessage,\n })\n );\n }\n\n return deleteFunction(bindingIds, detail.id).pipe(\n map(() => {\n snackbar.showSuccess(successMessage);\n return createDeleteBindingsSuccessAction(bindingsRepository)();\n }),\n catchError((error) => {\n snackbar.showError(failureMessage);\n return of(\n createDeleteBindingsFailureAction(bindingsRepository)({ error })\n );\n })\n );\n })\n )\n );\n}\n\nfunction createBindingModifiedSuccessEffect(\n bindingsRepository: string,\n actions$: Actions,\n tableService: any\n) {\n return createEffect(\n () =>\n actions$.pipe(\n ofType(\n createAddBindingsSuccessAction(bindingsRepository),\n createEditBindingSuccessAction(bindingsRepository),\n createDeleteBindingsSuccessAction(bindingsRepository)\n ),\n tap(() => {\n tableService.forceReload();\n })\n ),\n { dispatch: false }\n );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,12 +1,10 @@
1
- export * from './lib/detail-state/detail.actions';
2
- export * from './lib/detail-state/detail.reducer';
3
- export * from './lib/detail-state/detail.effects';
4
- export * from './lib/detail-state/detail.models';
5
-
6
- export * from './lib/table-state/actions';
7
- export * from './lib/table-state/reducers';
8
- export * from './lib/table-state/effects';
9
- export * from './lib/table-state/models';
10
-
11
- export * from './lib/binding-state/binding.actions';
12
- export * from './lib/binding-state/binding.effects';
1
+ export * from './lib/detail-state/detail.actions';
2
+ export * from './lib/detail-state/detail.reducer';
3
+ export * from './lib/detail-state/detail.effects';
4
+ export * from './lib/detail-state/detail.models';
5
+ export * from './lib/table-state/actions';
6
+ export * from './lib/table-state/reducers';
7
+ export * from './lib/table-state/effects';
8
+ export * from './lib/table-state/models';
9
+ export * from './lib/binding-state/binding.actions';
10
+ export * from './lib/binding-state/binding.effects';
@@ -0,0 +1,43 @@
1
+ export declare function createAddBindingAction<TCreate>(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Add bindings`, (props: {
2
+ binding: TCreate;
3
+ }) => {
4
+ binding: TCreate;
5
+ } & import("@ngrx/store").Action<`[${string}/API] Add bindings`>>;
6
+ export declare function createAddBindingsAction<TCreate>(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Add bindings`, (props: {
7
+ bindings: TCreate[];
8
+ }) => {
9
+ bindings: TCreate[];
10
+ } & import("@ngrx/store").Action<`[${string}/API] Add bindings`>>;
11
+ export declare function createAddBindingsFailureAction(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Add bindings failure`, (props: {
12
+ error: any;
13
+ }) => {
14
+ error: any;
15
+ } & import("@ngrx/store").Action<`[${string}/API] Add bindings failure`>>;
16
+ export declare function createAddBindingsSuccessAction(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Add bindings success`, () => import("@ngrx/store").Action<`[${string}/API] Add bindings success`>>;
17
+ export declare function createEditBindingAction<TEdit>(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Edit binding`, (props: {
18
+ binding: TEdit;
19
+ }) => {
20
+ binding: TEdit;
21
+ } & import("@ngrx/store").Action<`[${string}/API] Edit binding`>>;
22
+ export declare function createEditBindingFailureAction(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Edit binding failure`, (props: {
23
+ error: any;
24
+ }) => {
25
+ error: any;
26
+ } & import("@ngrx/store").Action<`[${string}/API] Edit binding failure`>>;
27
+ export declare function createEditBindingSuccessAction(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Edit binding success`, () => import("@ngrx/store").Action<`[${string}/API] Edit binding success`>>;
28
+ export declare function createDeleteBindingAction(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Delete binding`, (props: {
29
+ id: number | string;
30
+ }) => {
31
+ id: number | string;
32
+ } & import("@ngrx/store").Action<`[${string}/API] Delete binding`>>;
33
+ export declare function createDeleteBindingsAction(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Delete bindings`, (props: {
34
+ bindingIds: number[];
35
+ }) => {
36
+ bindingIds: number[];
37
+ } & import("@ngrx/store").Action<`[${string}/API] Delete bindings`>>;
38
+ export declare function createDeleteBindingsFailureAction(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Delete bindings failure`, (props: {
39
+ error: any;
40
+ }) => {
41
+ error: any;
42
+ } & import("@ngrx/store").Action<`[${string}/API] Delete bindings failure`>>;
43
+ export declare function createDeleteBindingsSuccessAction(bindingsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Delete bindings success`, () => import("@ngrx/store").Action<`[${string}/API] Delete bindings success`>>;
@@ -0,0 +1,45 @@
1
+ import { Actions } from '@ngrx/effects';
2
+ import { Observable } from 'rxjs';
3
+ export declare function createSingleBindingEffectsWithEdit<T extends {
4
+ id: number | string;
5
+ }, TCreate, TEdit extends {
6
+ id?: number | string;
7
+ }>(bindingsRepository: string, actions$: Actions, detail$: Observable<T | undefined>, bindingSingularName: string, bindingPluralName: string, addFunction: (bindings: TCreate) => Observable<any>, editFunction: (binding: TEdit, detailId: number | string) => Observable<any>, deleteFunction: (bindingIds: string | number, detailId: number | string) => Observable<any>, snackbar: any, translateService: any, tableService: any, overrideDetailWithBinding?: boolean): {
8
+ addEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Add bindings success`> | ({
9
+ error: any;
10
+ } & import("@ngrx/store").Action<`[${string}/API] Add bindings failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
11
+ editEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Edit binding success`> | ({
12
+ error: any;
13
+ } & import("@ngrx/store").Action<`[${string}/API] Edit binding failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
14
+ deleteEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Delete bindings success`> | ({
15
+ error: any;
16
+ } & import("@ngrx/store").Action<`[${string}/API] Delete bindings failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
17
+ modifiedSuccessEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Add bindings success`> | import("@ngrx/store").Action<`[${string}/API] Edit binding success`> | import("@ngrx/store").Action<`[${string}/API] Delete bindings success`>> & import("@ngrx/effects").CreateEffectMetadata;
18
+ };
19
+ export declare function createBindingsEffectsWithEdit<T extends {
20
+ id: number | string;
21
+ }, TCreate, TEdit extends {
22
+ id?: number | string;
23
+ }>(bindingsRepository: string, actions$: Actions, detail$: Observable<T | undefined>, bindingSingularName: string, bindingPluralName: string, addFunction: (bindings: TCreate[], detailId: number | string) => Observable<any>, editFunction: (binding: TEdit, detailId: number | string) => Observable<any>, deleteFunction: (bindingIds: number[], detailId: number | string) => Observable<any>, snackbar: any, translateService: any, tableService: any, overrideDetailWithBinding?: boolean): {
24
+ addEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Add bindings success`> | ({
25
+ error: any;
26
+ } & import("@ngrx/store").Action<`[${string}/API] Add bindings failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
27
+ editEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Edit binding success`> | ({
28
+ error: any;
29
+ } & import("@ngrx/store").Action<`[${string}/API] Edit binding failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
30
+ deleteEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Delete bindings success`> | ({
31
+ error: any;
32
+ } & import("@ngrx/store").Action<`[${string}/API] Delete bindings failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
33
+ modifiedSuccessEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Add bindings success`> | import("@ngrx/store").Action<`[${string}/API] Edit binding success`> | import("@ngrx/store").Action<`[${string}/API] Delete bindings success`>> & import("@ngrx/effects").CreateEffectMetadata;
34
+ };
35
+ export declare function createBindingsEffects<T extends {
36
+ id: number | string;
37
+ }, TCreate>(bindingsRepository: string, actions$: Actions, detail$: Observable<T | undefined>, bindingPluralName: string, addFunction: (bindings: TCreate[], detailId: number | string) => Observable<any>, deleteFunction: (bindingIds: number[], detailId: number | string) => Observable<any>, snackbar: any, translateService: any, tableService: any): {
38
+ addEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Add bindings success`> | ({
39
+ error: any;
40
+ } & import("@ngrx/store").Action<`[${string}/API] Add bindings failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
41
+ deleteEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Delete bindings success`> | ({
42
+ error: any;
43
+ } & import("@ngrx/store").Action<`[${string}/API] Delete bindings failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
44
+ modifiedSuccessEffect: Observable<import("@ngrx/store").Action<`[${string}/API] Add bindings success`> | import("@ngrx/store").Action<`[${string}/API] Edit binding success`> | import("@ngrx/store").Action<`[${string}/API] Delete bindings success`>> & import("@ngrx/effects").CreateEffectMetadata;
45
+ };
@@ -0,0 +1,52 @@
1
+ import { FormState } from './detail.models';
2
+ export declare function createInitDetailAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string} Page] Init`, (props: {
3
+ obj: string | null | number | undefined | any;
4
+ }) => {
5
+ obj: string | null | number | undefined | any;
6
+ } & import("@ngrx/store").Action<`[${string} Page] Init`>>;
7
+ export declare function createInitNewDetailAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string} Page] Init New`, () => import("@ngrx/store").Action<`[${string} Page] Init New`>>;
8
+ export declare function createLoadDetailSuccessAction<T>(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Load ${string} Success`, (props: {
9
+ item: T;
10
+ }) => {
11
+ item: T;
12
+ } & import("@ngrx/store").Action<`[${string}/API] Load ${string} Success`>>;
13
+ export declare function createLoadDetailFailureAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Load ${string} Failure`, (props: {
14
+ error: any;
15
+ }) => {
16
+ error: any;
17
+ } & import("@ngrx/store").Action<`[${string}/API] Load ${string} Failure`>>;
18
+ export declare function createUpdateDetailAction<T>(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Update ${string}`, (props: {
19
+ item: T;
20
+ }) => {
21
+ item: T;
22
+ } & import("@ngrx/store").Action<`[${string}/API] Update ${string}`>>;
23
+ export declare function createUpdateDetailSetErrorsAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Update Validation Errors ${string}`, (props: {
24
+ error: any;
25
+ }) => {
26
+ error: any;
27
+ } & import("@ngrx/store").Action<`[${string}/API] Update Validation Errors ${string}`>>;
28
+ export declare function createUpdateFormStateAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Update Form State`, (props: {
29
+ formState: FormState;
30
+ }) => {
31
+ formState: FormState;
32
+ } & import("@ngrx/store").Action<`[${string}/API] Update Form State`>>;
33
+ export declare function createSaveDetailAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Save Detail `, () => import("@ngrx/store").Action<`[${string}/API] Save Detail `>>;
34
+ export declare function createSaveDetailSuccessAction<T>(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Save Detail Success`, (props: {
35
+ item: T;
36
+ }) => {
37
+ item: T;
38
+ } & import("@ngrx/store").Action<`[${string}/API] Save Detail Success`>>;
39
+ export declare function createSaveDetailFailureAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Save Detail Failure`, (props: {
40
+ error: any;
41
+ }) => {
42
+ error: any;
43
+ } & import("@ngrx/store").Action<`[${string}/API] Save Detail Failure`>>;
44
+ export declare function createUpdateSaveDetailAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Update Detail `, () => import("@ngrx/store").Action<`[${string}/API] Update Detail `>>;
45
+ export declare function createResetStateAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Reset State`, () => import("@ngrx/store").Action<`[${string}/API] Reset State`>>;
46
+ export declare function createDeleteDetailAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Delete Detail`, () => import("@ngrx/store").Action<`[${string}/API] Delete Detail`>>;
47
+ export declare function createDeleteDetailSuccessAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Delete Detail Success`, () => import("@ngrx/store").Action<`[${string}/API] Delete Detail Success`>>;
48
+ export declare function createDeleteDetailFailureAction(detailsRepository: string): import("@ngrx/store").ActionCreator<`[${string}/API] Delete Detail Failure`, (props: {
49
+ error: any;
50
+ }) => {
51
+ error: any;
52
+ } & import("@ngrx/store").Action<`[${string}/API] Delete Detail Failure`>>;
@@ -0,0 +1,52 @@
1
+ import { Router } from '@angular/router';
2
+ import { Actions } from '@ngrx/effects';
3
+ import { BaseHttpService } from '@verisoft/core';
4
+ import { Observable } from 'rxjs';
5
+ export interface CreateInitFormConfig<T> {
6
+ service?: BaseHttpService<T>;
7
+ get?: (obj: any) => Observable<T>;
8
+ snackbar?: any;
9
+ errorMessage?: string;
10
+ notFoundMessage?: string;
11
+ successMessge?: string;
12
+ }
13
+ export interface DetailEffectConfig<T> {
14
+ detail$: Observable<T | undefined>;
15
+ snackbar?: any;
16
+ router?: Router;
17
+ redirectPath?: string;
18
+ useItemId?: boolean;
19
+ navigationMap?: Map<keyof T, string>;
20
+ }
21
+ export declare function createInitDetailEffect<T>(detailsRepository: string, actions$: Actions, config: CreateInitFormConfig<T>): Observable<({
22
+ error: any;
23
+ } & import("@ngrx/store").Action<`[${string}/API] Load ${string} Failure`>) | ({
24
+ item: unknown;
25
+ } & import("@ngrx/store").Action<`[${string}/API] Load ${string} Success`>)> & import("@ngrx/effects").CreateEffectMetadata;
26
+ export declare function createInitNewDetailEffect(detailsRepository: string, actions$: Actions): Observable<{
27
+ item: unknown;
28
+ } & import("@ngrx/store").Action<`[${string}/API] Load ${string} Success`>> & import("@ngrx/effects").CreateEffectMetadata;
29
+ export declare function createSaveDetailEffect<T extends {
30
+ id: number | string;
31
+ }, SERVICE extends BaseHttpService<T>>(detailsRepository: string, actions$: Actions, service: SERVICE, config: DetailEffectConfig<T>): Observable<({
32
+ error: any;
33
+ } & import("@ngrx/store").Action<`[${string}/API] Save Detail Failure`>) | ({
34
+ item: unknown;
35
+ } & import("@ngrx/store").Action<`[${string}/API] Save Detail Success`>)> & import("@ngrx/effects").CreateEffectMetadata;
36
+ export declare function createSaveDetailSuccessEffect(detailsRepository: string, actions$: Actions, config?: CreateInitFormConfig<unknown>): Observable<{
37
+ obj: string | null | number | undefined | any;
38
+ } & import("@ngrx/store").Action<`[${string} Page] Init`>> & import("@ngrx/effects").CreateEffectMetadata;
39
+ export declare function createSaveDetailFailureEffect(detailsRepository: string, actions$: Actions, config?: CreateInitFormConfig<unknown>): Observable<{
40
+ error: any;
41
+ } & import("@ngrx/store").Action<`[${string}/API] Save Detail Failure`>> & import("@ngrx/effects").CreateEffectMetadata;
42
+ export declare function createDeleteDetailEffect<T extends {
43
+ id: number | string;
44
+ }, SERVICE extends BaseHttpService<T>>(detailsRepository: string, actions$: Actions, service: SERVICE, config: DetailEffectConfig<T>): Observable<import("@ngrx/store").Action<`[${string}/API] Delete Detail Success`> | ({
45
+ error: any;
46
+ } & import("@ngrx/store").Action<`[${string}/API] Save Detail Failure`>) | ({
47
+ error: any;
48
+ } & import("@ngrx/store").Action<`[${string}/API] Delete Detail Failure`>)> & import("@ngrx/effects").CreateEffectMetadata;
49
+ export declare function createDeleteDetailSuccessEffect(detailsRepository: string, actions$: Actions, config?: CreateInitFormConfig<unknown>): Observable<import("@ngrx/store").Action<`[${string}/API] Delete Detail Success`>> & import("@ngrx/effects").CreateEffectMetadata;
50
+ export declare function createDeleteDetailFailureEffect(detailsRepository: string, actions$: Actions, config?: CreateInitFormConfig<unknown>): Observable<{
51
+ error: any;
52
+ } & import("@ngrx/store").Action<`[${string}/API] Delete Detail Failure`>> & import("@ngrx/effects").CreateEffectMetadata;
@@ -0,0 +1,27 @@
1
+ export interface DetailState<T> {
2
+ loaded: boolean;
3
+ item?: T;
4
+ formState?: FormState;
5
+ error?: string | null;
6
+ saveItemState: SaveItemState;
7
+ backendValidationErrors: BackendValidationError[];
8
+ }
9
+ export interface BackendValidationError {
10
+ code: string;
11
+ message: string;
12
+ parameters: string;
13
+ }
14
+ export interface ChosenRowsState<T> {
15
+ rows: Array<T>;
16
+ }
17
+ export interface SaveItemState {
18
+ saveInProgress: boolean;
19
+ error?: string | null;
20
+ }
21
+ export declare const INITIAL_SAVE_ITEM_STATE: SaveItemState;
22
+ export declare const INITIAL_CHOSEN_ROW_STATE: ChosenRowsState<any>;
23
+ export declare const INITIAL_DETAIL_STATE: DetailState<any>;
24
+ export interface FormState {
25
+ dirty: boolean;
26
+ valid: boolean;
27
+ }
@@ -0,0 +1,4 @@
1
+ import { ActionCreator, ReducerTypes } from '@ngrx/store';
2
+ import { DetailState } from './detail.models';
3
+ export declare function createDetailReducers<T = any, TState extends DetailState<T> = DetailState<T>>(detailRepository: string, initialState?: TState, ...ons: ReducerTypes<TState, readonly ActionCreator[]>[]): import("@ngrx/store").ActionReducer<unknown extends TState ? any : TState, import("@ngrx/store").Action<string>>;
4
+ export declare function createSaveDetailReducers(detailRepository: string, initialState?: import("./detail.models").SaveItemState): import("@ngrx/store").ActionReducer<import("./detail.models").SaveItemState, import("@ngrx/store").Action<string>>;
@@ -0,0 +1,48 @@
1
+ import { Page, Sort } from '@verisoft/core';
2
+ export declare function createGetPageTableAction<T = any>(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Get page`, (props: {
3
+ page: number;
4
+ size: number;
5
+ id?: string | null;
6
+ filter?: Partial<T>;
7
+ sort?: Sort[];
8
+ }) => {
9
+ page: number;
10
+ size: number;
11
+ id?: string | null;
12
+ filter?: Partial<T>;
13
+ sort?: Sort[];
14
+ } & import("@ngrx/store").Action<`${string} Get page`>>;
15
+ export declare function createStaticFilterTableAction<T = any>(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Create static filter`, (props: {
16
+ filter?: Partial<T>;
17
+ }) => {
18
+ filter?: Partial<T>;
19
+ } & import("@ngrx/store").Action<`${string} Create static filter`>>;
20
+ export declare function createDataLoadSuccessTableAction<T>(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Data load success`, (props: {
21
+ gPage: Page<T>;
22
+ }) => {
23
+ gPage: Page<T>;
24
+ } & import("@ngrx/store").Action<`${string} Data load success`>>;
25
+ export declare function createDataLoadErrorTableAction(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Data load error`, (props: {
26
+ error: any;
27
+ }) => {
28
+ error: any;
29
+ } & import("@ngrx/store").Action<`${string} Data load error`>>;
30
+ export declare function createChangePageSizeTableAction(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Change page size`, (props: {
31
+ size: number;
32
+ }) => {
33
+ size: number;
34
+ } & import("@ngrx/store").Action<`${string} Change page size`>>;
35
+ export declare function createRefreshPageTableAction(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Refresh page`, () => import("@ngrx/store").Action<`${string} Refresh page`>>;
36
+ export declare function createFilterPageTableAction<T>(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Refresh page`, (props: {
37
+ filter: Partial<T>;
38
+ }) => {
39
+ filter: Partial<T>;
40
+ } & import("@ngrx/store").Action<`${string} Refresh page`>>;
41
+ export declare function createResetTableFilterAction(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Refresh page`, () => import("@ngrx/store").Action<`${string} Refresh page`>>;
42
+ export declare function createDestroyTableAction(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Destroy`, () => import("@ngrx/store").Action<`${string} Destroy`>>;
43
+ export declare function createSelectItemsTableAction<T>(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Select items`, (props: {
44
+ selectedItems: T[];
45
+ }) => {
46
+ selectedItems: T[];
47
+ } & import("@ngrx/store").Action<`${string} Select items`>>;
48
+ export declare function createRemoveRangeTableAction(tableRepository: string): import("@ngrx/store").ActionCreator<`${string} Remove range`, () => import("@ngrx/store").Action<`${string} Remove range`>>;
@@ -0,0 +1,25 @@
1
+ import { Actions } from '@ngrx/effects';
2
+ import { Store } from '@ngrx/store';
3
+ import { BaseHttpService, Page, RequestParams } from '@verisoft/core';
4
+ import { Observable } from 'rxjs';
5
+ export interface CreateGetPageActionConfig<T> {
6
+ service?: BaseHttpService<T>;
7
+ fetchList?: (requestParams: RequestParams<any>) => Observable<Page<T>>;
8
+ snackbar?: any;
9
+ ngrxFeatureKey?: string;
10
+ requireFilters?: boolean;
11
+ }
12
+ export declare function createGetPageTableEffect<T>(tableRepository: string, actions$: Actions, config: CreateGetPageActionConfig<T>): Observable<({
13
+ error: any;
14
+ } & import("@ngrx/store").Action<`${string} Data load error`>) | ({
15
+ gPage: Page<unknown>;
16
+ } & import("@ngrx/store").Action<`${string} Data load success`>)> & import("@ngrx/effects").CreateEffectMetadata;
17
+ export declare function createRemoveRangeTableEffect<T>(tableRepository: string, ngrxFeatureKey: string, actions$: Actions, store$: Store<any>, config: CreateGetPageActionConfig<T>): Observable<({
18
+ error: any;
19
+ } & import("@ngrx/store").Action<`${string} Data load error`>) | ({
20
+ page: number;
21
+ size: number;
22
+ id?: string | null;
23
+ filter?: Partial<any> | undefined;
24
+ sort?: import("@verisoft/core").Sort[];
25
+ } & import("@ngrx/store").Action<`${string} Get page`>)> & import("@ngrx/effects").CreateEffectMetadata;
@@ -0,0 +1,9 @@
1
+ import { Page, RequestParams } from "@verisoft/core";
2
+ export interface TableState<T> {
3
+ dataLoading: boolean;
4
+ requestParams: RequestParams<T>;
5
+ gPage?: Page<T>;
6
+ error?: string | null;
7
+ selectedItems?: T[];
8
+ }
9
+ export declare const INITIAL_TABLE_STATE: TableState<any>;
@@ -0,0 +1,3 @@
1
+ import { ActionCreator, ReducerTypes } from '@ngrx/store';
2
+ import { TableState } from './models';
3
+ export declare function createTablePageReducers<T = any, TState extends TableState<T> = TableState<T>>(tableRepository: string, initialState?: TState, ...ons: ReducerTypes<TState, readonly ActionCreator[]>[]): import("@ngrx/store").ActionReducer<unknown extends TState ? any : TState, import("@ngrx/store").Action<string>>;
package/package.json CHANGED
@@ -1,13 +1,28 @@
1
- {
2
- "name": "@verisoft/store",
3
- "version": "18.7.0",
4
- "peerDependencies": {
5
- "@ngrx/store": "^18.0.2",
6
- "@verisoft/core": "18.7.0",
7
- "@ngrx/effects": "18.0.2",
8
- "rxjs": "~7.8.0",
9
- "@angular/router": "18.2.8"
10
- },
11
- "dependencies": {},
12
- "sideEffects": false
13
- }
1
+ {
2
+ "name": "@verisoft/store",
3
+ "version": "18.8.0",
4
+ "peerDependencies": {
5
+ "@ngrx/store": "^18.0.2",
6
+ "@verisoft/core": "18.0.0",
7
+ "@ngrx/effects": "18.0.2",
8
+ "rxjs": "~7.8.0",
9
+ "@angular/router": "18.2.8"
10
+ },
11
+ "dependencies": {
12
+ "tslib": "^2.3.0"
13
+ },
14
+ "sideEffects": false,
15
+ "module": "fesm2022/verisoft-store.mjs",
16
+ "typings": "index.d.ts",
17
+ "exports": {
18
+ "./package.json": {
19
+ "default": "./package.json"
20
+ },
21
+ ".": {
22
+ "types": "./index.d.ts",
23
+ "esm2022": "./esm2022/verisoft-store.mjs",
24
+ "esm": "./esm2022/verisoft-store.mjs",
25
+ "default": "./fesm2022/verisoft-store.mjs"
26
+ }
27
+ }
28
+ }
package/.eslintrc.json DELETED
@@ -1,43 +0,0 @@
1
- {
2
- "extends": ["../../../.eslintrc.base.json"],
3
- "ignorePatterns": ["!**/*"],
4
- "overrides": [
5
- {
6
- "files": ["*.ts"],
7
- "extends": [
8
- "plugin:@nx/angular",
9
- "plugin:@angular-eslint/template/process-inline-templates"
10
- ],
11
- "rules": {
12
- "@angular-eslint/directive-selector": [
13
- "error",
14
- {
15
- "type": "attribute",
16
- "prefix": "lib",
17
- "style": "camelCase"
18
- }
19
- ],
20
- "@angular-eslint/component-selector": [
21
- "error",
22
- {
23
- "type": "element",
24
- "prefix": "lib",
25
- "style": "kebab-case"
26
- }
27
- ]
28
- }
29
- },
30
- {
31
- "files": ["*.html"],
32
- "extends": ["plugin:@nx/angular-template"],
33
- "rules": {}
34
- },
35
- {
36
- "files": ["*.json"],
37
- "parser": "jsonc-eslint-parser",
38
- "rules": {
39
- "@nx/dependency-checks": "error"
40
- }
41
- }
42
- ]
43
- }
package/jest.config.ts DELETED
@@ -1,22 +0,0 @@
1
- /* eslint-disable */
2
- export default {
3
- displayName: 'store',
4
- preset: '../../../jest.preset.js',
5
- setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
6
- coverageDirectory: '../../../coverage/src/libs/store',
7
- transform: {
8
- '^.+\\.(ts|mjs|js|html)$': [
9
- 'jest-preset-angular',
10
- {
11
- tsconfig: '<rootDir>/tsconfig.spec.json',
12
- stringifyContentPathRegex: '\\.(html|svg)$',
13
- },
14
- ],
15
- },
16
- transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
17
- snapshotSerializers: [
18
- 'jest-preset-angular/build/serializers/no-ng-attributes',
19
- 'jest-preset-angular/build/serializers/ng-snapshot',
20
- 'jest-preset-angular/build/serializers/html-comment',
21
- ],
22
- };