@coolon/angular-ui-powerups 0.0.37 → 0.0.41
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/bundles/coolon-angular-ui-powerups.umd.js +1787 -1051
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/coolon-angular-ui-powerups.d.ts +16 -14
- package/coolon-angular-ui-powerups.metadata.json +1 -1
- package/esm2015/coolon-angular-ui-powerups.js +16 -14
- package/esm2015/index.js +2 -2
- package/esm2015/lib/angular-ui-powerups.module.js +8 -8
- package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +1 -2
- package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -2
- package/esm2015/lib/place/components/abstract-place-navigation.component.js +75 -0
- package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +47 -0
- package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +110 -16
- package/esm2015/lib/place/components/place-outlet/route-animations.js +12 -5
- package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +5 -39
- package/esm2015/lib/place/guards/leave-place.guard.js +20 -3
- package/esm2015/lib/place/guards/place-route.guard.js +29 -37
- package/esm2015/lib/place/index.js +11 -9
- package/esm2015/lib/place/nav-item.js +23 -0
- package/esm2015/lib/place/place-component-like.js +17 -0
- package/esm2015/lib/place/place-component.js +119 -20
- package/esm2015/lib/place/place-updates-service.js +16 -0
- package/esm2015/lib/place/place.decorator.js +1 -1
- package/esm2015/lib/place/place.module.js +6 -3
- package/esm2015/lib/place/place.service.js +28 -26
- package/esm2015/lib/place/route/default-parameter-sanitiser.js +78 -0
- package/esm2015/lib/place/route/parameter-decorators.js +15 -7
- package/esm2015/lib/place/route/parameter-definition.class.js +2 -2
- package/esm2015/lib/place/route/parameter-sanitiser.js +17 -2
- package/esm2015/lib/place/route/parameter-snapshot.js +382 -0
- package/esm2015/lib/place/route/parameter-type.js +3 -2
- package/esm2015/lib/place/route/route-parameter-sanitiser.js +73 -38
- package/esm2015/lib/place/visit.js +22 -0
- package/esm2015/public_api.js +2 -2
- package/esm5/coolon-angular-ui-powerups.js +16 -14
- package/esm5/index.js +2 -2
- package/esm5/lib/angular-ui-powerups.module.js +8 -8
- package/esm5/lib/interaction/components/activity-container/activity-container.component.js +1 -2
- package/esm5/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +1 -2
- package/esm5/lib/place/components/abstract-place-navigation.component.js +86 -0
- package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +61 -0
- package/esm5/lib/place/components/place-outlet/place-outlet.component.js +141 -20
- package/esm5/lib/place/components/place-outlet/route-animations.js +12 -5
- package/esm5/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +6 -43
- package/esm5/lib/place/guards/leave-place.guard.js +20 -3
- package/esm5/lib/place/guards/place-route.guard.js +28 -37
- package/esm5/lib/place/index.js +11 -9
- package/esm5/lib/place/nav-item.js +23 -0
- package/esm5/lib/place/place-component-like.js +17 -0
- package/esm5/lib/place/place-component.js +137 -22
- package/esm5/lib/place/place-updates-service.js +16 -0
- package/esm5/lib/place/place.decorator.js +1 -1
- package/esm5/lib/place/place.module.js +6 -3
- package/esm5/lib/place/place.service.js +48 -29
- package/esm5/lib/place/route/default-parameter-sanitiser.js +85 -0
- package/esm5/lib/place/route/parameter-decorators.js +15 -7
- package/esm5/lib/place/route/parameter-definition.class.js +2 -2
- package/esm5/lib/place/route/parameter-sanitiser.js +17 -2
- package/esm5/lib/place/route/parameter-snapshot.js +474 -0
- package/esm5/lib/place/route/parameter-type.js +3 -2
- package/esm5/lib/place/route/route-parameter-sanitiser.js +100 -45
- package/esm5/lib/place/visit.js +22 -0
- package/esm5/public_api.js +2 -2
- package/fesm2015/coolon-angular-ui-powerups.js +1244 -673
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +1750 -1021
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/lib/place/components/abstract-place-navigation.component.d.ts +13 -0
- package/lib/place/components/list-place-nav/list-place-nav.component.d.ts +8 -0
- package/lib/place/components/place-outlet/place-outlet.component.d.ts +16 -8
- package/lib/place/components/place-outlet/route-animations.d.ts +1 -0
- package/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.d.ts +2 -9
- package/lib/place/guards/place-route.guard.d.ts +4 -4
- package/lib/place/index.d.ts +8 -6
- package/lib/place/nav-item.d.ts +5 -0
- package/lib/place/{i-place-component.d.ts → place-component-like.d.ts} +1 -1
- package/lib/place/place-component.d.ts +19 -8
- package/lib/place/place-updates-service.d.ts +10 -0
- package/lib/place/place.service.d.ts +11 -8
- package/lib/place/route/default-parameter-sanitiser.d.ts +13 -0
- package/lib/place/route/parameter-decorators.d.ts +6 -2
- package/lib/place/route/parameter-definition.class.d.ts +3 -3
- package/lib/place/route/parameter-sanitiser.d.ts +8 -1
- package/lib/place/route/parameter-snapshot.d.ts +46 -0
- package/lib/place/route/route-parameter-sanitiser.d.ts +13 -9
- package/lib/place/visit.d.ts +6 -0
- package/package.json +1 -1
- package/schematics/place-routes/index.js +8 -95
- package/schematics/place-routes/index.js.map +1 -1
- package/schematics/place-routes/place-builder.d.ts +19 -0
- package/schematics/place-routes/place-builder.js +109 -0
- package/schematics/place-routes/place-builder.js.map +1 -0
- package/schematics/place-routes/{scanner.d.ts → place-class-scanner.d.ts} +10 -6
- package/schematics/place-routes/{scanner.js → place-class-scanner.js} +43 -18
- package/schematics/place-routes/place-class-scanner.js.map +1 -0
- package/schematics/place-routes/place-def.d.ts +19 -4
- package/schematics/place-routes/place-def.js +54 -4
- package/schematics/place-routes/place-def.js.map +1 -1
- package/schematics/place-routes/templates/{place-routes.ts.template → places.ts.template} +14 -11
- package/esm2015/lib/place/i-place-component.js +0 -17
- package/esm2015/lib/place/i-place-service.js +0 -16
- package/esm2015/lib/place/route/resolved-parameter.js +0 -16
- package/esm2015/lib/place/route/resolved-route-parameter-snapshot.js +0 -106
- package/esm2015/lib/place/route/route-parameter-bindings.js +0 -150
- package/esm2015/lib/place/route/visit-snapshot.js +0 -7
- package/esm5/lib/place/i-place-component.js +0 -17
- package/esm5/lib/place/i-place-service.js +0 -16
- package/esm5/lib/place/route/resolved-parameter.js +0 -16
- package/esm5/lib/place/route/resolved-route-parameter-snapshot.js +0 -129
- package/esm5/lib/place/route/route-parameter-bindings.js +0 -167
- package/esm5/lib/place/route/visit-snapshot.js +0 -11
- package/lib/place/i-place-service.d.ts +0 -10
- package/lib/place/route/resolved-parameter.d.ts +0 -5
- package/lib/place/route/resolved-route-parameter-snapshot.d.ts +0 -12
- package/lib/place/route/route-parameter-bindings.d.ts +0 -17
- package/lib/place/route/visit-snapshot.d.ts +0 -2
- package/schematics/place-routes/scanner.js.map +0 -1
- package/schematics/place-routes/templates/place-router.ts.template +0 -33
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';
|
|
2
|
+
export declare class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {
|
|
3
|
+
expanded: boolean;
|
|
4
|
+
constructor();
|
|
5
|
+
expandMenu(): void;
|
|
6
|
+
collapseMenu(): void;
|
|
7
|
+
toggleMenu(): void;
|
|
8
|
+
}
|
|
@@ -1,17 +1,25 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import { RouterOutlet } from '@angular/router';
|
|
1
|
+
import { AfterViewChecked, AfterViewInit, OnInit, QueryList } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute, RouterOutlet } from '@angular/router';
|
|
3
|
+
import { DisposableComponent } from '../../../components/disposable-component';
|
|
3
4
|
import { PlaceComponent } from '../../place-component';
|
|
4
5
|
import { PlaceService } from '../../place.service';
|
|
5
|
-
export declare class PlaceOutletComponent implements OnInit {
|
|
6
|
+
export declare class PlaceOutletComponent extends DisposableComponent implements OnInit, AfterViewInit, AfterViewChecked {
|
|
6
7
|
private readonly placeService;
|
|
8
|
+
private activatedRoute;
|
|
7
9
|
animate: boolean;
|
|
8
|
-
|
|
10
|
+
routerOutLetQuery: QueryList<RouterOutlet>;
|
|
9
11
|
private currentPlace;
|
|
10
|
-
|
|
12
|
+
private myPath;
|
|
13
|
+
private outletUrlSegment;
|
|
14
|
+
private outletChildPath;
|
|
15
|
+
private state;
|
|
16
|
+
constructor(placeService: PlaceService, activatedRoute: ActivatedRoute);
|
|
11
17
|
ngOnInit(): void;
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
ngAfterViewInit(): void;
|
|
19
|
+
ngAfterViewChecked(): void;
|
|
20
|
+
onOutletActivated($event: PlaceComponent): void;
|
|
21
|
+
onOutletDeactivated($event: PlaceComponent): void;
|
|
14
22
|
getPlaceOrder(outlet: RouterOutlet): any;
|
|
15
23
|
animationDone(): void;
|
|
16
|
-
private
|
|
24
|
+
private updateRouterOutlet;
|
|
17
25
|
}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { DisposableComponent } from '../../../components/disposable-component';
|
|
4
|
-
import { PlaceComponent } from '../../place-component';
|
|
5
|
-
export declare class TabbedPlaceNavigationComponent extends DisposableComponent implements OnInit {
|
|
6
|
-
places: Constructable<PlaceComponent>[];
|
|
7
|
-
placesModel: ListModel<Constructable<PlaceComponent>>;
|
|
8
|
-
readonly orderedPlaces: ListModelChain<PlaceComponent.Definition>;
|
|
1
|
+
import { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';
|
|
2
|
+
export declare class TabbedPlaceNavigationComponent extends AbstractPlaceNavigationComponent {
|
|
9
3
|
constructor();
|
|
10
|
-
ngOnInit(): void;
|
|
11
4
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Injector } from '@angular/core';
|
|
2
1
|
import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';
|
|
3
2
|
import { Observable } from 'rxjs';
|
|
3
|
+
import { PlaceService } from '../place.service';
|
|
4
4
|
export declare class PlaceRouteGuard implements CanActivate {
|
|
5
|
-
private
|
|
6
|
-
private
|
|
7
|
-
constructor(
|
|
5
|
+
private readonly placeService;
|
|
6
|
+
private readonly router;
|
|
7
|
+
constructor(placeService: PlaceService, router: Router);
|
|
8
8
|
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree;
|
|
9
9
|
}
|
package/lib/place/index.d.ts
CHANGED
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Automatically generated by barrelsby.
|
|
3
3
|
*/
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./
|
|
4
|
+
export * from "./nav-item";
|
|
5
|
+
export * from "./place-component-like";
|
|
6
6
|
export * from "./place-component";
|
|
7
|
+
export * from "./place-updates-service";
|
|
7
8
|
export * from "./place.decorator";
|
|
8
9
|
export * from "./place.module";
|
|
9
10
|
export * from "./place.service";
|
|
11
|
+
export * from "./visit";
|
|
12
|
+
export * from "./components/abstract-place-navigation.component";
|
|
10
13
|
export * from "./components/busy-overlay/busy-overlay.component";
|
|
11
14
|
export * from "./components/empty-state/empty-state.component";
|
|
15
|
+
export * from "./components/list-place-nav/list-place-nav.component";
|
|
12
16
|
export * from "./components/place-outlet/place-outlet.component";
|
|
13
17
|
export * from "./components/place-outlet/route-animations";
|
|
14
18
|
export * from "./components/tabbed-place-navigation/tabbed-place-navigation.component";
|
|
15
19
|
export * from "./guards/leave-place.guard";
|
|
16
20
|
export * from "./guards/place-route.guard";
|
|
21
|
+
export * from "./route/default-parameter-sanitiser";
|
|
17
22
|
export * from "./route/json-types";
|
|
18
23
|
export * from "./route/parameter-decorators";
|
|
19
24
|
export * from "./route/parameter-definition.class";
|
|
20
25
|
export * from "./route/parameter-sanitiser";
|
|
26
|
+
export * from "./route/parameter-snapshot";
|
|
21
27
|
export * from "./route/parameter-type";
|
|
22
|
-
export * from "./route/resolved-parameter";
|
|
23
|
-
export * from "./route/resolved-route-parameter-snapshot";
|
|
24
|
-
export * from "./route/route-parameter-bindings";
|
|
25
28
|
export * from "./route/route-parameter-sanitiser";
|
|
26
|
-
export * from "./route/visit-snapshot";
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import { ActivatedRoute } from '@angular/router';
|
|
2
|
-
import { Constructable } from '@coolon/pectin';
|
|
2
|
+
import { Constructable, MutableValueModel, ValueModel } from '@coolon/pectin';
|
|
3
3
|
import 'reflect-metadata';
|
|
4
4
|
import { DisposableComponent } from '../components/disposable-component';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { PlaceComponentLike } from './place-component-like';
|
|
6
|
+
import { PlaceUpdatesService } from './place-updates-service';
|
|
7
|
+
import { ParameterDefinition } from './route/parameter-definition.class';
|
|
7
8
|
export declare const DEFINITION_META_DATA_KEY = "PLACE_DEFINITION_OPTIONS";
|
|
8
|
-
export declare
|
|
9
|
+
export declare const ROUTE_PARAMETER_LIST_KEY: unique symbol;
|
|
10
|
+
export declare class PlaceComponent extends DisposableComponent implements PlaceComponentLike {
|
|
9
11
|
readonly activatedRoute: ActivatedRoute;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
readonly _incomingRouteChange: MutableValueModel<boolean>;
|
|
13
|
+
private readonly resolvedParameters;
|
|
14
|
+
constructor(activatedRoute: ActivatedRoute, placeService: PlaceUpdatesService);
|
|
15
|
+
readonly incomingRouteChange: ValueModel<boolean>;
|
|
16
|
+
private installBinding;
|
|
17
|
+
readonly placeDefinition: PlaceComponent.Definition;
|
|
13
18
|
canDeactivate(): boolean | Promise<boolean>;
|
|
14
19
|
onPlaceReady(): void;
|
|
15
20
|
}
|
|
@@ -22,8 +27,10 @@ export declare namespace PlaceComponent {
|
|
|
22
27
|
readonly data: {
|
|
23
28
|
[key: string]: any;
|
|
24
29
|
};
|
|
30
|
+
readonly children: Constructable<PlaceComponent>[];
|
|
25
31
|
constructor(component: Constructable<PlaceComponent>, options: PlaceComponent.Options);
|
|
26
|
-
|
|
32
|
+
getRouteParameters(): ParameterDefinition<any>[];
|
|
33
|
+
isDescriptorForType(constructable: Constructable<PlaceComponent>): boolean;
|
|
27
34
|
isDescriptorFor(placeComponent: PlaceComponent): boolean;
|
|
28
35
|
getData<T>(key: string, defaultValue?: T): T;
|
|
29
36
|
searchData<T>(keys: string[], defaultValue?: T): T;
|
|
@@ -35,6 +42,10 @@ export declare namespace PlaceComponent {
|
|
|
35
42
|
[key: string]: any;
|
|
36
43
|
};
|
|
37
44
|
authenticate?: boolean;
|
|
45
|
+
children?: Constructable<PlaceComponent>[];
|
|
46
|
+
}
|
|
47
|
+
interface ChildOptions extends Options {
|
|
48
|
+
parent: Constructable<PlaceComponent>;
|
|
38
49
|
}
|
|
39
50
|
function getDefinition(klass: Constructable<PlaceComponent>): Definition;
|
|
40
51
|
function injectDefinition(klass: Constructable<PlaceComponent>, options: Options): void;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ActivatedRoute } from '@angular/router';
|
|
2
|
+
import { ParameterSnapshot } from './route/parameter-snapshot';
|
|
3
|
+
export interface PlaceUpdatesService {
|
|
4
|
+
notifyRouteParametersChanged(params: {
|
|
5
|
+
activatedRoute: ActivatedRoute;
|
|
6
|
+
next: ParameterSnapshot;
|
|
7
|
+
previous: ParameterSnapshot;
|
|
8
|
+
updateRoute: boolean;
|
|
9
|
+
}): any;
|
|
10
|
+
}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Injector } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute, Router } from '@angular/router';
|
|
2
3
|
import { GarbageCollector } from '@coolon/pectin';
|
|
3
|
-
import {
|
|
4
|
+
import { PlaceUpdatesService } from './place-updates-service';
|
|
4
5
|
import { PlaceComponent } from './place-component';
|
|
5
|
-
import {
|
|
6
|
-
export declare class PlaceService extends GarbageCollector implements
|
|
6
|
+
import { ParameterSnapshot } from './route/parameter-snapshot';
|
|
7
|
+
export declare class PlaceService extends GarbageCollector implements PlaceUpdatesService {
|
|
7
8
|
protected router: Router;
|
|
9
|
+
protected injector: Injector;
|
|
8
10
|
private _activePlaces;
|
|
9
|
-
constructor(router: Router);
|
|
11
|
+
constructor(router: Router, injector: Injector);
|
|
10
12
|
readonly activePlaces: import("@coolon/pectin").ListModel<PlaceComponent>;
|
|
11
13
|
onActivate(place: PlaceComponent): void;
|
|
12
14
|
onDeactivate(place: PlaceComponent): void;
|
|
13
15
|
notifyRouteParametersChanged(params: {
|
|
14
|
-
|
|
15
|
-
next:
|
|
16
|
-
previous:
|
|
16
|
+
activatedRoute: ActivatedRoute;
|
|
17
|
+
next: ParameterSnapshot;
|
|
18
|
+
previous: ParameterSnapshot;
|
|
17
19
|
updateRoute: boolean;
|
|
18
20
|
}): void;
|
|
21
|
+
sanitise(snapshot: ParameterSnapshot): Promise<ParameterSnapshot>;
|
|
19
22
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PlaceService } from '../place.service';
|
|
2
|
+
import { Visit } from '../visit';
|
|
3
|
+
import { ParameterDefinition } from './parameter-definition.class';
|
|
4
|
+
import { ParameterSanitiser } from './parameter-sanitiser';
|
|
5
|
+
export declare class DefaultParameterSanitiser<T, S> implements ParameterSanitiser<S> {
|
|
6
|
+
private def;
|
|
7
|
+
private readonly placeService;
|
|
8
|
+
private remember;
|
|
9
|
+
private defaultValue;
|
|
10
|
+
constructor(def: ParameterDefinition<T, S>, placeService: PlaceService, options: ParameterSanitiser.Options<S>);
|
|
11
|
+
sanitise(value: S, visit: Visit): Promise<S> | S;
|
|
12
|
+
private isBlank;
|
|
13
|
+
}
|
|
@@ -4,12 +4,16 @@ import { ParameterType } from './parameter-type';
|
|
|
4
4
|
export interface ParameterOptions<T> {
|
|
5
5
|
as?: string;
|
|
6
6
|
optional?: boolean;
|
|
7
|
-
|
|
7
|
+
remember?: boolean;
|
|
8
|
+
defaultValue?: T;
|
|
9
|
+
sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser.Options<T>;
|
|
8
10
|
}
|
|
9
11
|
export interface ListParameterOptions<T> {
|
|
10
12
|
as?: string;
|
|
11
13
|
optional?: boolean;
|
|
12
|
-
|
|
14
|
+
remember?: boolean;
|
|
15
|
+
defaultValue?: T[];
|
|
16
|
+
sanitiser?: Constructable<ParameterSanitiser<T[]>> | ParameterSanitiser.Options<T[]>;
|
|
13
17
|
}
|
|
14
18
|
export declare function RouteId<T extends string | number>(type: ParameterType<T>, options?: ParameterOptions<T>): PropertyDecorator;
|
|
15
19
|
export declare function RouteParameter<T>(type: ParameterType<T>, options?: ParameterOptions<T>): PropertyDecorator;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Constructable } from '@coolon/pectin';
|
|
2
2
|
import { ParameterSanitiser } from './parameter-sanitiser';
|
|
3
3
|
import { ParameterType } from './parameter-type';
|
|
4
|
-
export interface ParameterDefinition<
|
|
4
|
+
export interface ParameterDefinition<T, S = T> {
|
|
5
5
|
readonly name: string;
|
|
6
6
|
readonly propertyName: string;
|
|
7
|
-
readonly type: ParameterType<
|
|
8
|
-
readonly sanitiser: Constructable<ParameterSanitiser<S
|
|
7
|
+
readonly type: ParameterType<T>;
|
|
8
|
+
readonly sanitiser: Constructable<ParameterSanitiser<S>> | ParameterSanitiser.Options<S>;
|
|
9
9
|
readonly isRouteId: boolean;
|
|
10
10
|
readonly isArray: boolean;
|
|
11
11
|
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import { Visit } from '../visit';
|
|
1
2
|
export interface ParameterSanitiser<T> {
|
|
2
|
-
sanitise(value: T): T | Promise<T>;
|
|
3
|
+
sanitise(value: T, visit?: Visit): T | Promise<T>;
|
|
4
|
+
}
|
|
5
|
+
export declare namespace ParameterSanitiser {
|
|
6
|
+
interface Options<T> {
|
|
7
|
+
remember?: boolean;
|
|
8
|
+
defaultValue?: T;
|
|
9
|
+
}
|
|
3
10
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ParamMap, UrlSegment } from '@angular/router';
|
|
2
|
+
import { PlaceComponent } from '../place-component';
|
|
3
|
+
import { Visit } from '../visit';
|
|
4
|
+
import { ParameterDefinition } from './parameter-definition.class';
|
|
5
|
+
export declare class ParameterSnapshot implements Visit {
|
|
6
|
+
readonly placeDefinition: PlaceComponent.Definition;
|
|
7
|
+
private readonly resolved;
|
|
8
|
+
constructor(placeDefinition: PlaceComponent.Definition, resolved: ParameterSnapshot.ResolvedParameter<any, any>[]);
|
|
9
|
+
hasChanged(other: ParameterSnapshot): boolean;
|
|
10
|
+
asUrlSegment(other: ParameterSnapshot): any[];
|
|
11
|
+
getResolvedParameter<T, S>(parameterDef: ParameterDefinition<T, S>): ParameterSnapshot.ResolvedParameter<T, S>;
|
|
12
|
+
getResolvedParameterValue<T, S>(parameterDef: ParameterDefinition<T, S>): S;
|
|
13
|
+
getRouteId(): any;
|
|
14
|
+
getRouteParameter(name: string): any;
|
|
15
|
+
private getResolvedRouteId;
|
|
16
|
+
hasRouteId(): boolean;
|
|
17
|
+
getFormattedRouteId(): string;
|
|
18
|
+
getFormattedParameters(): {};
|
|
19
|
+
replace<T, S>(parameter: ParameterDefinition<T, S>, value: S): ParameterSnapshot;
|
|
20
|
+
updateUrl(url: UrlSegment[]): UrlSegment[];
|
|
21
|
+
}
|
|
22
|
+
export declare namespace ParameterSnapshot {
|
|
23
|
+
function create(placeDef: PlaceComponent.Definition, paramMap: ParamMap): ParameterSnapshot;
|
|
24
|
+
abstract class ResolvedParameter<T, S = T> {
|
|
25
|
+
readonly parameterDef: ParameterDefinition<T, S>;
|
|
26
|
+
readonly value: S;
|
|
27
|
+
constructor(parameterDef: ParameterDefinition<T, S>, value: S);
|
|
28
|
+
abstract injectRouteParam(dest: {}): void;
|
|
29
|
+
abstract isSame(otherValue: S): boolean;
|
|
30
|
+
isRouteId(): boolean;
|
|
31
|
+
abstract formattedValue(): string | string[];
|
|
32
|
+
abstract replace(value: S): ResolvedParameter<T, S>;
|
|
33
|
+
}
|
|
34
|
+
class ResolvedValueParameter<T> extends ResolvedParameter<T, T> {
|
|
35
|
+
isSame(otherValue: T): boolean;
|
|
36
|
+
injectRouteParam(dest: {}): void;
|
|
37
|
+
replace(value: T): ParameterSnapshot.ResolvedParameter<T, T>;
|
|
38
|
+
formattedValue(): string;
|
|
39
|
+
}
|
|
40
|
+
class ResolvedArrayParameter<T> extends ResolvedParameter<T, T[]> {
|
|
41
|
+
isSame(otherValue: T[]): boolean;
|
|
42
|
+
injectRouteParam(dest: {}): void;
|
|
43
|
+
replace(value: T[]): ParameterSnapshot.ResolvedParameter<T, T[]>;
|
|
44
|
+
formattedValue(): string[];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -1,32 +1,36 @@
|
|
|
1
1
|
import { Injector } from '@angular/core';
|
|
2
|
-
import { ActivatedRouteSnapshot
|
|
2
|
+
import { ActivatedRouteSnapshot } from '@angular/router';
|
|
3
|
+
import { PlaceService } from '../place.service';
|
|
3
4
|
import { ParameterDefinition } from './parameter-definition.class';
|
|
4
5
|
import { ParameterSanitiser } from './parameter-sanitiser';
|
|
5
|
-
export declare
|
|
6
|
-
readonly parameterDef: ParameterDefinition<T>;
|
|
6
|
+
export declare class Sanitiser<T, S> {
|
|
7
|
+
readonly parameterDef: ParameterDefinition<T, S>;
|
|
7
8
|
readonly snapshot: ActivatedRouteSnapshot;
|
|
8
9
|
readonly sanitiser: ParameterSanitiser<S>;
|
|
9
10
|
private initialValue;
|
|
10
11
|
private _sanitisedValue;
|
|
11
|
-
constructor(parameterDef: ParameterDefinition<T>, snapshot: ActivatedRouteSnapshot, sanitiser: ParameterSanitiser<S>);
|
|
12
|
+
constructor(parameterDef: ParameterDefinition<T, S>, snapshot: ActivatedRouteSnapshot, sanitiser: ParameterSanitiser<S>);
|
|
12
13
|
isRouteId(): boolean;
|
|
13
14
|
readonly valueChanged: boolean;
|
|
14
15
|
readonly sanitisedValue: S;
|
|
15
|
-
protected
|
|
16
|
-
protected
|
|
17
|
-
|
|
16
|
+
protected readFrom(snapshot: ActivatedRouteSnapshot): S;
|
|
17
|
+
protected hasChanged(initialValue: S, sanitisedValue: S): boolean;
|
|
18
|
+
injectRouteParam(dest: {}): void;
|
|
18
19
|
sanitize(): Promise<boolean>;
|
|
19
20
|
}
|
|
20
21
|
export declare class RouteParameterSanitiser {
|
|
21
22
|
readonly parameterDefs: ParameterDefinition<any>[];
|
|
22
23
|
readonly snapshot: ActivatedRouteSnapshot;
|
|
24
|
+
readonly placeService: PlaceService;
|
|
23
25
|
readonly injector: Injector;
|
|
24
26
|
private readonly routeIdSanitiser;
|
|
25
27
|
private readonly parameterSanitisers;
|
|
26
|
-
constructor(parameterDefs: ParameterDefinition<any>[], snapshot: ActivatedRouteSnapshot, injector: Injector);
|
|
28
|
+
constructor(parameterDefs: ParameterDefinition<any>[], snapshot: ActivatedRouteSnapshot, placeService: PlaceService, injector: Injector);
|
|
27
29
|
sanitise(): Promise<boolean>;
|
|
28
|
-
redirect(router: Router): Promise<boolean>;
|
|
29
30
|
private getSanitiser;
|
|
31
|
+
routeIdHasChanged(): boolean;
|
|
32
|
+
getRedirectParams(): any[];
|
|
33
|
+
private isSanitiserContructor;
|
|
30
34
|
}
|
|
31
35
|
export declare namespace Sanitiser {
|
|
32
36
|
class Value<T> extends Sanitiser<T, T> {
|
package/package.json
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const core_1 = require("@angular-devkit/core");
|
|
4
|
-
const schematics_1 = require("@angular-devkit/schematics");
|
|
5
3
|
const pectin_1 = require("@coolon/pectin");
|
|
6
|
-
const
|
|
7
|
-
const ts_morph_1 = require("ts-morph");
|
|
8
|
-
const place_def_1 = require("./place-def");
|
|
9
|
-
const PLACE_ANNOTATION = /@Place\({([^}\))]*)}\)/m;
|
|
4
|
+
const place_builder_1 = require("./place-builder");
|
|
10
5
|
function generateRoutes(options) {
|
|
11
6
|
return (tree, context) => {
|
|
12
7
|
pectin_1.Logger.logTo({
|
|
@@ -25,96 +20,14 @@ function generateRoutes(options) {
|
|
|
25
20
|
if (!options.project) {
|
|
26
21
|
options.project = workspace.defaultProject;
|
|
27
22
|
}
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const placeDefs = extractPlaces(project, options, tree, context);
|
|
32
|
-
const projectType = project.projectType === 'application' ? 'app' : 'lib';
|
|
33
|
-
const files = schematics_1.apply(schematics_1.url('./templates'), [
|
|
34
|
-
schematics_1.applyTemplates(Object.assign({}, options, { placeDefs,
|
|
35
|
-
config }, core_1.strings)),
|
|
36
|
-
schematics_1.move(`${project.sourceRoot}/${projectType}`),
|
|
37
|
-
// @see https://github.com/angular/angular-cli/issues/11337#issuecomment-448259549
|
|
38
|
-
schematics_1.forEach((fileEntry) => {
|
|
39
|
-
if (tree.exists(fileEntry.path)) {
|
|
40
|
-
tree.overwrite(fileEntry.path, fileEntry.content);
|
|
41
|
-
}
|
|
42
|
-
return fileEntry;
|
|
43
|
-
})
|
|
44
|
-
]);
|
|
45
|
-
return schematics_1.mergeWith(files);
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
exports.generateRoutes = generateRoutes;
|
|
49
|
-
// function applyWithOverwrite(source: Source, rules: Rule[]): Rule {
|
|
50
|
-
// return (tree: Tree, _context: SchematicContext) => {
|
|
51
|
-
// const rule = mergeWith(
|
|
52
|
-
// apply(source, [
|
|
53
|
-
// ...rules,
|
|
54
|
-
// forEach((fileEntry) => {
|
|
55
|
-
// if (tree.exists(fileEntry.path)) {
|
|
56
|
-
// tree.overwrite(fileEntry.path, fileEntry.content);
|
|
57
|
-
// return null;
|
|
58
|
-
// }
|
|
59
|
-
// return fileEntry;
|
|
60
|
-
// })
|
|
61
|
-
// ])
|
|
62
|
-
// );
|
|
63
|
-
//
|
|
64
|
-
// return rule(tree, _context);
|
|
65
|
-
// };
|
|
66
|
-
// }
|
|
67
|
-
function createProject(project, context) {
|
|
68
|
-
const tsConfigPath = project.architect.build.options.tsConfig;
|
|
69
|
-
context.logger.info(`loading tsConfig from -> ${tsConfigPath}`);
|
|
70
|
-
try {
|
|
71
|
-
return new ts_morph_1.Project({
|
|
72
|
-
tsConfigFilePath: `./${tsConfigPath}`
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
context.logger.fatal(`Failed to load typescript project form: ${project.root} You probably need to specify the --project option?`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function loadConfig(project, tree, context) {
|
|
80
|
-
context.logger.info(`loading places config from -> ${project.root}/places.json (or places.json5)`);
|
|
81
|
-
const fileEntry = tree.get(`${project.root}/places.json5`) || tree.get(`${project.root}/places.json5`);
|
|
82
|
-
if (!fileEntry) {
|
|
83
|
-
throw new Error(`Unable to find config file at '${project.root}/places.json' or '${project.root}/places.json5'`);
|
|
84
|
-
}
|
|
85
|
-
const config = JSON5.parse(fileEntry.content.toString('utf-8'));
|
|
86
|
-
return config;
|
|
87
|
-
}
|
|
88
|
-
function extractPlaces(project, schema, tree, context) {
|
|
89
|
-
const projectType = project.projectType === 'application' ? 'app' : 'lib';
|
|
90
|
-
const projectRoot = `${project.root}`;
|
|
91
|
-
const sourceRoot = `${project.sourceRoot}/${projectType}`;
|
|
92
|
-
const importPrefix = `./${sourceRoot}`;
|
|
93
|
-
const tsProject = createProject(project, context);
|
|
94
|
-
const placeDefs = [];
|
|
95
|
-
context.logger.info(`Scanning sources in -> ${sourceRoot}`);
|
|
96
|
-
tree.getDir(sourceRoot).visit(filePath => {
|
|
97
|
-
if (!filePath.endsWith('.ts') || filePath.endsWith(".spec.ts")) {
|
|
98
|
-
return;
|
|
23
|
+
const placeBuilder = new place_builder_1.PlaceBuilder(options, workspace, context);
|
|
24
|
+
try {
|
|
25
|
+
return placeBuilder.process(tree);
|
|
99
26
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return;
|
|
27
|
+
catch (e) {
|
|
28
|
+
console.error(e);
|
|
103
29
|
}
|
|
104
|
-
|
|
105
|
-
// if (sourceText.match(PLACE_ANNOTATION)) {
|
|
106
|
-
const sourceFile = tsProject.getSourceFileOrThrow(`./${filePath}`);
|
|
107
|
-
sourceFile.getClasses().forEach((classDecl) => {
|
|
108
|
-
place_def_1.PlaceDef.scan(classDecl, context).onMatch(result => {
|
|
109
|
-
// context.logger.info(`filePath=${filePath}`);
|
|
110
|
-
const moduleImportPath = `./${filePath.substr(importPrefix.length, filePath.length - importPrefix.length - '.ts'.length)}`;
|
|
111
|
-
const definition = result.createDefinition(moduleImportPath);
|
|
112
|
-
context.logger.info(`${moduleImportPath} -> ${classDecl.getName()}(route: /${definition.fullPath})`);
|
|
113
|
-
placeDefs.push(definition);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
// }
|
|
117
|
-
});
|
|
118
|
-
return placeDefs;
|
|
30
|
+
};
|
|
119
31
|
}
|
|
32
|
+
exports.generateRoutes = generateRoutes;
|
|
120
33
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/angular-ui-powerups/schematics/place-routes/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/angular-ui-powerups/schematics/place-routes/index.ts"],"names":[],"mappings":";;AAEA,2CAAwC;AACxC,mDAA+C;AAG/C,SAAgB,cAAc,CAAC,OAAe;IAE5C,OAAO,CAAC,IAAU,EAAE,OAAyB,EAAE,EAAE;QAE/C,eAAM,CAAC,KAAK,CAAC;YACX,EAAE,CAAC,GAAiB;gBAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACnE;QAED,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC;QAEpD,0CAA0C;QAC1C,MAAM,SAAS,GAA2C,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEvF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC;SAC5C;QAED,MAAM,YAAY,GAAG,IAAI,4BAAY,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAEnE,IAAI;YACF,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACnC;QAAC,OAAM,CAAC,EAAE;YACT,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClB;IACH,CAAC,CAAC;AAEJ,CAAC;AAlCD,wCAkCC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { experimental } from '@angular-devkit/core';
|
|
2
|
+
import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';
|
|
3
|
+
import { Project } from 'ts-morph';
|
|
4
|
+
import { Schema } from './schema';
|
|
5
|
+
export declare class PlaceBuilder {
|
|
6
|
+
readonly options: Schema;
|
|
7
|
+
readonly context: SchematicContext;
|
|
8
|
+
private projectName;
|
|
9
|
+
private projectType;
|
|
10
|
+
private sourceRoot;
|
|
11
|
+
private workspaceProject;
|
|
12
|
+
private typescriptProject;
|
|
13
|
+
constructor(options: Schema, workspace: experimental.workspace.WorkspaceSchema, context: SchematicContext);
|
|
14
|
+
createTypeScriptProject(): Project;
|
|
15
|
+
process(tree: Tree): Rule;
|
|
16
|
+
private renderTemplates;
|
|
17
|
+
private extractPlaceDefinitions;
|
|
18
|
+
private buildPlaceHierarchy;
|
|
19
|
+
}
|