chore: copia de libs/shared con prefijo Pi y APIs de terceros actualizadas

This commit is contained in:
2026-07-27 21:14:48 +02:00
parent 0758b00d54
commit 771d83c0aa
672 changed files with 47352 additions and 4692 deletions

View File

@@ -0,0 +1,31 @@
// Angular
import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
// Router
import { RouterStateUrl } from './state/router.reducer';
// Ngrx
import * as fromRouter from '@ngrx/router-store';
export class CustomSerializer implements fromRouter.RouterStateSerializer<RouterStateUrl> {
serialize(routerState: RouterStateSnapshot): RouterStateUrl {
const { url } = routerState;
const { queryParams } = routerState.root;
let route: ActivatedRouteSnapshot = routerState.root;
while (route.firstChild) {
route = route.firstChild;
}
const { params, routeConfig } = route;
// Only return an object including the URL, params and query params
// instead of the entire snapshot
return {
url,
params,
queryParams,
title: typeof routeConfig?.title === 'string' ? routeConfig.title : '',
};
}
}

View File

@@ -0,0 +1,11 @@
import { ErrorHandler, Injectable, Injector } from '@angular/core';
import { Router } from '@angular/router';
@Injectable()
export class GlobalErrorHandler implements ErrorHandler {
constructor(private injector: Injector) { }
handleError(error: any) {
const router = this.injector.get(Router);
console.error(error.stack.toString());
}
}

View File

@@ -0,0 +1,10 @@
export * from './util-router-store.module';
// State
export * from './state/router.actions';
export * from './state/router.effects';
export * from './state/router.reducer';
export * from './state/router.selectors';
// Error handler
export * from './error-handler';

View File

@@ -0,0 +1,29 @@
import { NavigationExtras } from '@angular/router';
import { createAction, props } from '@ngrx/store';
export const navigateTo = createAction(
'[Core Router] Navigate To',
props<{
payload: {
path: any[];
query?: object;
extras?: NavigationExtras;
};
}>()
);
export const navigateRefreshTo = createAction(
'[Core Router] Navigate Refresh To',
props<{
payload: {
path: any[];
query?: object;
extras?: NavigationExtras;
};
}>()
);
export const navigateBack = createAction('[Core Router] Navigate Back');
export const navigateForward = createAction('[Core Router] Navigate Forward');

View File

@@ -0,0 +1,74 @@
import { Actions, createEffect, ofType } from '@ngrx/effects';
import * as RouterActions from './router.actions';
import { map, tap } from 'rxjs/operators';
import { Injectable } from '@angular/core';
import { Location } from '@angular/common';
import { Router } from '@angular/router';
@Injectable()
export class RouterEffects {
navigateTo$ = createEffect(
() => {
return this.action$.pipe(
ofType(RouterActions.navigateTo),
map((action) => {
return action.payload;
}),
tap(({ path, query: queryParams, extras }) => {
this._router.navigate(path, { queryParams, ...extras });
})
);
},
{ dispatch: false }
);
navigateRefreshTo$ = createEffect(
() => {
return this.action$.pipe(
ofType(RouterActions.navigateRefreshTo),
map((action) => {
return action.payload;
}),
tap(({ path, query: queryParams, extras }) => {
this._router.routeReuseStrategy.shouldReuseRoute = () => false;
this._router.onSameUrlNavigation = 'reload';
this._router.navigate(path, { queryParams, ...extras });
})
);
},
{ dispatch: false }
);
navigateBack$ = createEffect(
() => {
return this.action$.pipe(
ofType(RouterActions.navigateBack),
tap(() => {
this._location.back();
})
);
},
{ dispatch: false }
);
navigateForward$ = createEffect(
() => {
return this.action$.pipe(
ofType(RouterActions.navigateForward),
tap(() => {
this._location.forward();
})
);
},
{ dispatch: false }
);
constructor(
private _location: Location,
private action$: Actions,
private _router: Router
) {}
}

View File

@@ -0,0 +1,16 @@
import * as fromRouter from '@ngrx/router-store';
import { Params } from '@angular/router';
export const coreRouterFeatureKey = 'CORE_router';
export interface RouterStateUrl {
url: string;
queryParams: Params;
params: Params;
title: string;
}
export interface RouterState {
routerReducer: fromRouter.RouterReducerState<RouterStateUrl>;
}

View File

@@ -0,0 +1,15 @@
import { createFeatureSelector, createSelector } from '@ngrx/store';
import * as fromRouter from '@ngrx/router-store';
import * as fromReducer from './router.reducer';
export const getRouterState = createFeatureSelector<
fromRouter.RouterReducerState<fromReducer.RouterStateUrl>
>(fromReducer.coreRouterFeatureKey);
export const getTitle = createSelector(getRouterState, (state) => {
return state?.state?.title
});
export const getRoute = createSelector(getRouterState, (state) => state?.state?.url);

View File

@@ -0,0 +1,16 @@
import { ErrorHandler, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterState, StoreRouterConnectingModule } from '@ngrx/router-store';
import { CustomSerializer } from './custom-route-serializer';
@NgModule({
imports: [
CommonModule,
StoreRouterConnectingModule.forRoot({
routerState: RouterState.Minimal,
serializer: CustomSerializer,
}),
],
})
export class PiSharedUtilRouterStoreModule {}