@angular/router 20.3.3 → 20.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/router.mjs +3 -3
- package/fesm2022/router.mjs.map +1 -1
- package/fesm2022/router2.mjs +53 -52
- package/fesm2022/router2.mjs.map +1 -1
- package/fesm2022/router_module.mjs +57 -27
- package/fesm2022/router_module.mjs.map +1 -1
- package/fesm2022/testing.mjs +12 -12
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/upgrade.mjs +2 -2
- package/fesm2022/upgrade.mjs.map +1 -1
- package/index.d.ts +3 -3
- package/package.json +4 -4
- package/router_module.d.d.ts +3 -2
- package/testing/index.d.ts +2 -2
- package/upgrade/index.d.ts +2 -2
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.3.
|
|
3
|
-
* (c) 2010-2025 Google LLC. https://angular.
|
|
2
|
+
* @license Angular v20.3.5
|
|
3
|
+
* (c) 2010-2025 Google LLC. https://angular.dev/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
import * as i3 from '@angular/common';
|
|
8
8
|
import { LOCATION_INITIALIZED, ViewportScroller, LocationStrategy, HashLocationStrategy, Location, PathLocationStrategy } from '@angular/common';
|
|
9
9
|
import * as i0 from '@angular/core';
|
|
10
|
-
import { signal, untracked, inject, ɵINTERNAL_APPLICATION_ERROR_HANDLER as _INTERNAL_APPLICATION_ERROR_HANDLER, HostAttributeToken, ɵRuntimeError as _RuntimeError, booleanAttribute, Directive, Attribute, HostBinding, Input, HostListener, EventEmitter, Optional, ContentChildren, Output, Injectable, createEnvironmentInjector, InjectionToken, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, Injector, ApplicationRef, ɵIS_ENABLED_BLOCKING_INITIAL_NAVIGATION as _IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, provideAppInitializer, ɵperformanceMarkFeature as _performanceMarkFeature, ENVIRONMENT_INITIALIZER, NgZone, SkipSelf, NgModule } from '@angular/core';
|
|
10
|
+
import { signal, untracked, inject, ɵINTERNAL_APPLICATION_ERROR_HANDLER as _INTERNAL_APPLICATION_ERROR_HANDLER, HostAttributeToken, ɵRuntimeError as _RuntimeError, booleanAttribute, Directive, Attribute, HostBinding, Input, HostListener, EventEmitter, Optional, ContentChildren, Output, Injectable, createEnvironmentInjector, InjectionToken, ɵpublishExternalGlobalUtil as _publishExternalGlobalUtil, makeEnvironmentProviders, APP_BOOTSTRAP_LISTENER, Injector, ApplicationRef, ɵIS_ENABLED_BLOCKING_INITIAL_NAVIGATION as _IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, provideAppInitializer, ɵperformanceMarkFeature as _performanceMarkFeature, ENVIRONMENT_INITIALIZER, NgZone, SkipSelf, NgModule } from '@angular/core';
|
|
11
11
|
import { ROUTER_CONFIGURATION, NavigationEnd, isUrlTree, Router, ActivatedRoute, RouterConfigLoader, IMPERATIVE_NAVIGATION, NavigationStart, NavigationSkipped, NavigationSkippedCode, Scroll, UrlSerializer, NavigationTransitions, ROUTES, afterNextNavigation, stringifyEvent, NAVIGATION_ERROR_HANDLER, RoutedComponentInputBinder, INPUT_BINDER, CREATE_VIEW_TRANSITION, createViewTransition, VIEW_TRANSITION_OPTIONS, DefaultUrlSerializer, ChildrenOutletContexts, RouterOutlet, ɵEmptyOutletComponent as _EmptyOutletComponent } from './router2.mjs';
|
|
12
12
|
import { Subject, of, from } from 'rxjs';
|
|
13
13
|
import { mergeAll, catchError, filter, concatMap, mergeMap } from 'rxjs/operators';
|
|
@@ -387,10 +387,10 @@ class RouterLink {
|
|
|
387
387
|
preserveFragment: this.preserveFragment,
|
|
388
388
|
});
|
|
389
389
|
}
|
|
390
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
391
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.
|
|
390
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterLink, deps: [{ token: Router }, { token: ActivatedRoute }, { token: 'tabindex', attribute: true }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i3.LocationStrategy }], target: i0.ɵɵFactoryTarget.Directive });
|
|
391
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.5", type: RouterLink, isStandalone: true, selector: "[routerLink]", inputs: { target: "target", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", state: "state", info: "info", relativeTo: "relativeTo", preserveFragment: ["preserveFragment", "preserveFragment", booleanAttribute], skipLocationChange: ["skipLocationChange", "skipLocationChange", booleanAttribute], replaceUrl: ["replaceUrl", "replaceUrl", booleanAttribute], routerLink: "routerLink" }, host: { listeners: { "click": "onClick($event.button,$event.ctrlKey,$event.shiftKey,$event.altKey,$event.metaKey)" }, properties: { "attr.href": "reactiveHref()", "attr.target": "this.target" } }, usesOnChanges: true, ngImport: i0 });
|
|
392
392
|
}
|
|
393
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
393
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterLink, decorators: [{
|
|
394
394
|
type: Directive,
|
|
395
395
|
args: [{
|
|
396
396
|
selector: '[routerLink]',
|
|
@@ -649,10 +649,10 @@ class RouterLinkActive {
|
|
|
649
649
|
const isActiveCheckFn = this.isLinkActive(this.router);
|
|
650
650
|
return (this.link && isActiveCheckFn(this.link)) || this.links.some(isActiveCheckFn);
|
|
651
651
|
}
|
|
652
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
653
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.
|
|
652
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterLinkActive, deps: [{ token: Router }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
653
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.5", type: RouterLinkActive, isStandalone: true, selector: "[routerLinkActive]", inputs: { routerLinkActiveOptions: "routerLinkActiveOptions", ariaCurrentWhenActive: "ariaCurrentWhenActive", routerLinkActive: "routerLinkActive" }, outputs: { isActiveChange: "isActiveChange" }, queries: [{ propertyName: "links", predicate: RouterLink, descendants: true }], exportAs: ["routerLinkActive"], usesOnChanges: true, ngImport: i0 });
|
|
654
654
|
}
|
|
655
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
655
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterLinkActive, decorators: [{
|
|
656
656
|
type: Directive,
|
|
657
657
|
args: [{
|
|
658
658
|
selector: '[routerLinkActive]',
|
|
@@ -703,10 +703,10 @@ class PreloadAllModules {
|
|
|
703
703
|
preload(route, fn) {
|
|
704
704
|
return fn().pipe(catchError(() => of(null)));
|
|
705
705
|
}
|
|
706
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
707
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
706
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: PreloadAllModules, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
707
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: PreloadAllModules, providedIn: 'root' });
|
|
708
708
|
}
|
|
709
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
709
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: PreloadAllModules, decorators: [{
|
|
710
710
|
type: Injectable,
|
|
711
711
|
args: [{ providedIn: 'root' }]
|
|
712
712
|
}] });
|
|
@@ -723,10 +723,10 @@ class NoPreloading {
|
|
|
723
723
|
preload(route, fn) {
|
|
724
724
|
return of(null);
|
|
725
725
|
}
|
|
726
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
727
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
726
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: NoPreloading, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
727
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: NoPreloading, providedIn: 'root' });
|
|
728
728
|
}
|
|
729
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
729
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: NoPreloading, decorators: [{
|
|
730
730
|
type: Injectable,
|
|
731
731
|
args: [{ providedIn: 'root' }]
|
|
732
732
|
}] });
|
|
@@ -822,10 +822,10 @@ class RouterPreloader {
|
|
|
822
822
|
}
|
|
823
823
|
});
|
|
824
824
|
}
|
|
825
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
826
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
825
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterPreloader, deps: [{ token: Router }, { token: i0.EnvironmentInjector }, { token: PreloadingStrategy }, { token: RouterConfigLoader }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
826
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterPreloader, providedIn: 'root' });
|
|
827
827
|
}
|
|
828
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
828
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterPreloader, decorators: [{
|
|
829
829
|
type: Injectable,
|
|
830
830
|
args: [{ providedIn: 'root' }]
|
|
831
831
|
}], ctorParameters: () => [{ type: Router }, { type: i0.EnvironmentInjector }, { type: PreloadingStrategy }, { type: RouterConfigLoader }] });
|
|
@@ -888,13 +888,14 @@ class RouterScroller {
|
|
|
888
888
|
return this.transitions.events.subscribe((e) => {
|
|
889
889
|
if (!(e instanceof Scroll))
|
|
890
890
|
return;
|
|
891
|
+
const instantScroll = { behavior: 'instant' };
|
|
891
892
|
// a popstate event. The pop state event will always ignore anchor scrolling.
|
|
892
893
|
if (e.position) {
|
|
893
894
|
if (this.options.scrollPositionRestoration === 'top') {
|
|
894
|
-
this.viewportScroller.scrollToPosition([0, 0]);
|
|
895
|
+
this.viewportScroller.scrollToPosition([0, 0], instantScroll);
|
|
895
896
|
}
|
|
896
897
|
else if (this.options.scrollPositionRestoration === 'enabled') {
|
|
897
|
-
this.viewportScroller.scrollToPosition(e.position);
|
|
898
|
+
this.viewportScroller.scrollToPosition(e.position, instantScroll);
|
|
898
899
|
}
|
|
899
900
|
// imperative navigation "forward"
|
|
900
901
|
}
|
|
@@ -934,13 +935,36 @@ class RouterScroller {
|
|
|
934
935
|
this.routerEventsSubscription?.unsubscribe();
|
|
935
936
|
this.scrollEventsSubscription?.unsubscribe();
|
|
936
937
|
}
|
|
937
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
938
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.
|
|
938
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterScroller, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
|
|
939
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterScroller });
|
|
939
940
|
}
|
|
940
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
941
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterScroller, decorators: [{
|
|
941
942
|
type: Injectable
|
|
942
943
|
}], ctorParameters: () => [{ type: UrlSerializer }, { type: NavigationTransitions }, { type: i3.ViewportScroller }, { type: i0.NgZone }, { type: undefined }] });
|
|
943
944
|
|
|
945
|
+
/**
|
|
946
|
+
* Returns the loaded routes for a given route.
|
|
947
|
+
*/
|
|
948
|
+
function getLoadedRoutes(route) {
|
|
949
|
+
return route._loadedRoutes;
|
|
950
|
+
}
|
|
951
|
+
/**
|
|
952
|
+
* Returns the Router instance from the given injector, or null if not available.
|
|
953
|
+
*/
|
|
954
|
+
function getRouterInstance(injector) {
|
|
955
|
+
return injector.get(Router, null, { optional: true });
|
|
956
|
+
}
|
|
957
|
+
/**
|
|
958
|
+
* Navigates the given router to the specified URL.
|
|
959
|
+
* Throws if the provided router is not an Angular Router.
|
|
960
|
+
*/
|
|
961
|
+
function navigateByUrl(router, url) {
|
|
962
|
+
if (!(router instanceof Router)) {
|
|
963
|
+
throw new Error('The provided router is not an Angular Router.');
|
|
964
|
+
}
|
|
965
|
+
return router.navigateByUrl(url);
|
|
966
|
+
}
|
|
967
|
+
|
|
944
968
|
/**
|
|
945
969
|
* Sets up providers necessary to enable `Router` functionality for the application.
|
|
946
970
|
* Allows to configure a set of routes as well as extra features that should be enabled.
|
|
@@ -978,6 +1002,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.3", ngImpor
|
|
|
978
1002
|
* @returns A set of providers to setup a Router.
|
|
979
1003
|
*/
|
|
980
1004
|
function provideRouter(routes, ...features) {
|
|
1005
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
1006
|
+
// Publish this util when the router is provided so that the devtools can use it.
|
|
1007
|
+
_publishExternalGlobalUtil('ɵgetLoadedRoutes', getLoadedRoutes);
|
|
1008
|
+
_publishExternalGlobalUtil('ɵgetRouterInstance', getRouterInstance);
|
|
1009
|
+
_publishExternalGlobalUtil('ɵnavigateByUrl', navigateByUrl);
|
|
1010
|
+
}
|
|
981
1011
|
return makeEnvironmentProviders([
|
|
982
1012
|
{ provide: ROUTES, multi: true, useValue: routes },
|
|
983
1013
|
typeof ngDevMode === 'undefined' || ngDevMode
|
|
@@ -1602,11 +1632,11 @@ class RouterModule {
|
|
|
1602
1632
|
providers: [{ provide: ROUTES, multi: true, useValue: routes }],
|
|
1603
1633
|
};
|
|
1604
1634
|
}
|
|
1605
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
1606
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
1607
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
1635
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1636
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.5", ngImport: i0, type: RouterModule, imports: [RouterOutlet, RouterLink, RouterLinkActive, _EmptyOutletComponent], exports: [RouterOutlet, RouterLink, RouterLinkActive, _EmptyOutletComponent] });
|
|
1637
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterModule });
|
|
1608
1638
|
}
|
|
1609
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
1639
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.5", ngImport: i0, type: RouterModule, decorators: [{
|
|
1610
1640
|
type: NgModule,
|
|
1611
1641
|
args: [{
|
|
1612
1642
|
imports: ROUTER_DIRECTIVES,
|