@coolon/angular-ui-powerups 12.4.0-alpha.45 → 12.4.0-alpha.47

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.
@@ -1,7 +1,12 @@
1
1
  import { Component, HostBinding, Input } from '@angular/core';
2
- export class SectionHeaderComponent {
2
+ import { DisposableComponent } from '../disposable-component';
3
+ export class SectionHeaderComponent extends DisposableComponent {
3
4
  constructor() {
4
- this.underline = false;
5
+ super();
6
+ // readonly i18n = I18nMarsUi.components.layout.header;
7
+ this.size = 'medium';
8
+ this.borderTop = false;
9
+ this.borderBottom = false;
5
10
  }
6
11
  ngOnInit() {
7
12
  }
@@ -9,12 +14,14 @@ export class SectionHeaderComponent {
9
14
  SectionHeaderComponent.decorators = [
10
15
  { type: Component, args: [{
11
16
  selector: 'aup-section-header',
12
- template: "<ng-content></ng-content>\n",
13
- styles: [":host{--def-border-bottom-color:var(--border-bottom-color,rgba(0,0,0,0.07));display:block;padding:8px 16px;font-size:12px;line-height:12px;color:rgba(0,0,0,.5)}:host.underline{border-bottom:1px solid var(--def-border-bottom-color)}"]
17
+ template: "<span class=\"container-start\"><ng-content select=\"[header-start]\"></ng-content><ng-content></ng-content></span>\n<span class=\"container-middle\"><ng-content select=\"[header-center]\"></ng-content></span>\n<span class=\"container-end\"><ng-content select=\"[header-end]\"></ng-content></span>\n",
18
+ styles: [":host{display:flex;flex-direction:row;align-items:center;--resolved-padding:var(--padding,var(--default-padding));--resolved-padding-right:var(--padding-right,calc(var(--default-padding)/2));padding-left:var(--resolved-padding);padding-right:var(--resolved-padding-right);box-sizing:border-box}:host.has-back-button{padding-left:0}:host.toolbar{height:56px;min-height:56px}:host.toolbar span{font-weight:500;font-size:18px;color:rgba(0,0,0,.67)}:host.large{height:48px;min-height:48px}:host.large span{font-weight:500;font-size:14px;color:rgba(0,0,0,.67)}:host.medium{height:48px;min-height:48px}:host.medium span{font-weight:500;font-size:13px;color:rgba(0,0,0,.67)}:host.small{height:30px;min-height:30px}:host.small span{font-weight:300;font-size:12px;color:rgba(0,0,0,.67)}:host.border-top{border-top:var(--pinstripe-border)}:host.border-bottom{border-bottom:var(--pinstripe-border)}span{white-space:nowrap;display:inline-flex;flex-direction:row;align-items:center}span.container-start{justify-content:flex-start}span.container-middle{justify-content:center;flex:1;width:0;overflow:hidden}span.container-end{justify-content:flex-end}"]
14
19
  },] }
15
20
  ];
16
21
  SectionHeaderComponent.ctorParameters = () => [];
17
22
  SectionHeaderComponent.propDecorators = {
18
- underline: [{ type: Input }, { type: HostBinding, args: ['class.underline',] }]
23
+ size: [{ type: Input }, { type: HostBinding, args: ['class',] }],
24
+ borderTop: [{ type: Input }, { type: HostBinding, args: ['class.border-top',] }],
25
+ borderBottom: [{ type: Input }, { type: HostBinding, args: ['class.border-bottom',] }]
19
26
  };
20
27
  //# sourceMappingURL=section-header.component.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"section-header.component.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/section-header/section-header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AAOtE,MAAM,OAAO,sBAAsB;IAMjC;QAFA,cAAS,GAAG,KAAK,CAAC;IAEF,CAAC;IAEjB,QAAQ;IACR,CAAC;;;YAdF,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,uCAA8C;;aAE/C;;;;wBAGE,KAAK,YACL,WAAW,SAAC,iBAAiB","sourcesContent":["import { Component, HostBinding, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'aup-section-header',\n templateUrl: './section-header.component.html',\n styleUrls: ['./section-header.component.scss']\n})\nexport class SectionHeaderComponent implements OnInit {\n\n @Input()\n @HostBinding('class.underline')\n underline = false;\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n"]}
1
+ {"version":3,"file":"section-header.component.js","sourceRoot":"","sources":["../../../../../../../libs/angular-ui-powerups/src/lib/components/section-header/section-header.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAU,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAO9D,MAAM,OAAO,sBAAuB,SAAQ,mBAAmB;IAgB7D;QACE,KAAK,EAAE,CAAC;QAfV,uDAAuD;QAIvD,SAAI,GAA6C,QAAQ,CAAC;QAI1D,cAAS,GAAG,KAAK,CAAC;QAIlB,iBAAY,GAAG,KAAK,CAAC;IAIrB,CAAC;IAED,QAAQ;IACR,CAAC;;;YA1BF,SAAS,SAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,uTAA8C;;aAE/C;;;;mBAKE,KAAK,YACL,WAAW,SAAC,OAAO;wBAGnB,KAAK,YACL,WAAW,SAAC,kBAAkB;2BAG9B,KAAK,YACL,WAAW,SAAC,qBAAqB","sourcesContent":["import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { DisposableComponent } from '../disposable-component';\n\n@Component({\n selector: 'aup-section-header',\n templateUrl: './section-header.component.html',\n styleUrls: ['./section-header.component.scss']\n})\nexport class SectionHeaderComponent extends DisposableComponent implements OnInit {\n\n // readonly i18n = I18nMarsUi.components.layout.header;\n\n @Input()\n @HostBinding('class')\n size: 'toolbar' | 'large' | 'medium' | 'small' = 'medium';\n\n @Input()\n @HostBinding('class.border-top')\n borderTop = false;\n\n @Input()\n @HostBinding('class.border-bottom')\n borderBottom = false;\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n }\n\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"SectionHeaderComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"aup-section-header","template":"<ng-content></ng-content>\n","styles":[":host{--def-border-bottom-color:var(--border-bottom-color,rgba(0,0,0,0.07));display:block;padding:8px 16px;font-size:12px;line-height:12px;color:rgba(0,0,0,.5)}:host.underline{border-bottom:1px solid var(--def-border-bottom-color)}"]}]}],"members":{"underline":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":10,"character":3},"arguments":["class.underline"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"SectionHeaderComponent":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"../disposable-component","name":"DisposableComponent","line":8,"character":44},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"aup-section-header","template":"<span class=\"container-start\"><ng-content select=\"[header-start]\"></ng-content><ng-content></ng-content></span>\n<span class=\"container-middle\"><ng-content select=\"[header-center]\"></ng-content></span>\n<span class=\"container-end\"><ng-content select=\"[header-end]\"></ng-content></span>\n","styles":[":host{display:flex;flex-direction:row;align-items:center;--resolved-padding:var(--padding,var(--default-padding));--resolved-padding-right:var(--padding-right,calc(var(--default-padding)/2));padding-left:var(--resolved-padding);padding-right:var(--resolved-padding-right);box-sizing:border-box}:host.has-back-button{padding-left:0}:host.toolbar{height:56px;min-height:56px}:host.toolbar span{font-weight:500;font-size:18px;color:rgba(0,0,0,.67)}:host.large{height:48px;min-height:48px}:host.large span{font-weight:500;font-size:14px;color:rgba(0,0,0,.67)}:host.medium{height:48px;min-height:48px}:host.medium span{font-weight:500;font-size:13px;color:rgba(0,0,0,.67)}:host.small{height:30px;min-height:30px}:host.small span{font-weight:300;font-size:12px;color:rgba(0,0,0,.67)}:host.border-top{border-top:var(--pinstripe-border)}:host.border-bottom{border-bottom:var(--pinstripe-border)}span{white-space:nowrap;display:inline-flex;flex-direction:row;align-items:center}span.container-start{justify-content:flex-start}span.container-middle{justify-content:center;flex:1;width:0;overflow:hidden}span.container-end{justify-content:flex-end}"]}]}],"members":{"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":13,"character":3},"arguments":["class"]}]}],"borderTop":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":17,"character":3},"arguments":["class.border-top"]}]}],"borderBottom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostBinding","line":21,"character":3},"arguments":["class.border-bottom"]}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}}}}]
@@ -19,6 +19,9 @@ import * as i2 from "@angular/common";
19
19
  import * as i3 from "../interaction/services/interaction.service";
20
20
  import * as i4 from "./url-service";
21
21
  import * as i5 from "./place-history";
22
+ function asArray(item) {
23
+ return Array.isArray(item) ? item : [item];
24
+ }
22
25
  export class PlaceRouter extends GarbageCollector {
23
26
  constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
24
27
  super();
@@ -182,11 +185,10 @@ export class PlaceRouter extends GarbageCollector {
182
185
  this.currentSession.onRouterEnd(event);
183
186
  }
184
187
  navigate(visit, options) {
188
+ const commands = asArray(visit).reduce((result, v) => {
189
+ return [...result, v.placeDefinition.path, ...this.createRouteParameters(v)];
190
+ }, []);
185
191
  return this.doNavigation(visit, (router) => __awaiter(this, void 0, void 0, function* () {
186
- const commands = [
187
- visit.placeDefinition.path,
188
- ...this.createRouteParameters(visit)
189
- ];
190
192
  yield this.angularRouter.navigate(commands, {
191
193
  relativeTo: options ? options.relativeTo : null
192
194
  });
@@ -199,7 +201,7 @@ export class PlaceRouter extends GarbageCollector {
199
201
  lang.illegalState('Navigation already in progress');
200
202
  }
201
203
  const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
202
- navigation.storeVisit(visit);
204
+ asArray(visit).forEach(v => navigation.storeVisit(v));
203
205
  this.transitionTo(navigation);
204
206
  try {
205
207
  yield runNavigationCommands(this.angularRouter);
@@ -1 +1 @@
1
- {"version":3,"file":"place-router.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/place-router.ts"],"names":[],"mappings":"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","sourcesContent":["import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\nimport {\n assert,\n Binding,\n DebugContext,\n DelegatingValueModel,\n Dsl,\n GarbageCollector,\n lang,\n ListModel,\n MutableListModel,\n MutableValueModel,\n Trace,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { InteractionServiceRoutingAdapter } from '../interaction/services/interaction-service-routing-adapter';\nimport { InteractionService } from '../interaction/services/interaction.service';\nimport { NavigatingDuringInteraction } from './navigation/session/interactions/navigating-during-interaction';\nimport { PopStateDuringInteractionNavigation } from './navigation/session/interactions/pop-state-during-interaction-navigation';\nimport { SynchroniseInteractionContextIdsWithRoute } from './navigation/session/interactions/synchronise-interaction-context-ids-with-route';\nimport { Navigating } from './navigation/session/navigating';\nimport { NavigationContext } from './navigation/session/navigation-context';\nimport { NavigationSession } from './navigation/session/navigation-session';\nimport { PopStateNavigation } from './navigation/session/pop-state-navigation';\nimport { PlaceAccessGuard } from './place-access-guard';\nimport { PlaceDefinition } from './place-definition';\nimport { PlaceHistory } from './place-history';\nimport { UrlService } from './url-service';\nimport { UrlSnapshot } from './url-snapshot';\nimport { Visit } from './visit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceRouter extends GarbageCollector {\n\n readonly navigationSessionModel = new MutableValueModel<NavigationSession>();\n readonly navigationInProgress: ValueModelChain<boolean>;\n readonly navigationSessionName: ValueModelChain<string>; // used by tests\n\n private readonly navigationContext: NavigationContext.Impl;\n\n private readonly _activeVisits = new MutableListModel<Visit>();\n private readonly routerInteractionAdapter: InteractionServiceRoutingAdapter;\n private sessionFinishedJobs: (() => void)[] = [];\n\n public readonly state: ValueModel<PlaceRouter.State>;\n\n /**\n * An observable model containing the authoriser function. This allows places to react to changes\n * in permissions when any underlying auth logic changes, e.g. a role being removed from a user.\n */\n private readonly _accessGuard = new DelegatingValueModel<PlaceAccessGuard>().withDefault(new PlaceAccessGuard.NoAuth());\n private redirections: PlaceRouter.Redirections;\n\n constructor(private readonly angularRouter: Router,\n private readonly angularLocation: Location,\n private readonly interactionService: InteractionService,\n private readonly urlService: UrlService,\n private readonly placeHistory: PlaceHistory) {\n super();\n\n if (window['Cypress']) {\n window['aup.PlaceRouter'] = this;\n }\n\n this.routerInteractionAdapter = interactionService.registerPlaceRouter(this);\n\n // TODO: Make this an interface and use 'this' instead.\n this.navigationContext = new NavigationContext.Impl(\n this.urlService,\n this.routerInteractionAdapter,\n (urlSnapshot: UrlSnapshot, options: { replaceUrl: boolean }) => {\n return this.navigateByUrl(urlSnapshot, options);\n },\n state => {\n this.transitionTo(state);\n },\n visits => {\n this.routingSessionFinished(visits);\n });\n\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.navigationInProgress = chain(this.navigationSessionModel).isNotNil();\n\n const idleStateName = chain(this.interactionService.active).map(active => active ? 'IdleDuringInteraction' : 'Idle');\n this.navigationSessionName = chain(this.navigationSessionModel)\n .pluck('name')\n .otherwise(idleStateName);\n\n DebugContext.tag(this._activeVisits, 'PlaceRouter.activeVisits');\n this.state = chain(this._activeVisits).reduce(visits => new PlaceRouter.State(visits));\n\n // TODO: make setup the callbacks in during module initiation to make this testable.\n angularRouter.events.subscribe(event => {\n // Routing event sequence\n // ======================\n // NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session\n // NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.\n // NavigationStart -> .... -> NavigationError --> navigation aborted, end session.\n // =======================\n if (event instanceof NavigationStart) {\n // console.log(`---> NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);\n if (event.navigationTrigger === 'popstate') {\n this.onPopState(event);\n } else {\n this.onRouterStarted(event);\n }\n // console.log(`<--- NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);\n }\n if (event instanceof NavigationEnd) {\n // console.log(`---> NavigationEnd[${event.id}]: ${event.url}`);\n this.onRouterEnd(event);\n // console.log(`<--- NavigationEnd[${event.id}]: ${event.url}`);\n }\n if (event instanceof NavigationError) {\n // console.log(`---> NavigationError[${event.id}]: ${event.url}`);\n this.onRouterError(event);\n // console.log(`<--- NavigationError[${event.id}]: ${event.url}`);\n }\n if (event instanceof NavigationCancel) {\n // console.log(`---> NavigationCancel[${event.id}]: ${event.url}`);\n this.onRouterCancelled(event);\n // console.log(`<--- NavigationCancel[${event.id}]: ${event.url}`);\n }\n });\n\n // The router needs to know about url changes and in some cases they are the only way the router can know if\n // the back button was clicked.\n angularLocation.onUrlChange(url => this.onUrlChanged(url));\n\n }\n\n get accessGuard(): ValueModel<PlaceAccessGuard> {\n return this._accessGuard.readonly;\n }\n\n // @Trace()\n configureAuth(accessGrant: ValueModel<PlaceAccessGuard>, redirections: PlaceRouter.Redirections) {\n // We need a shitty mutable model until setDelegate is clever enough to work with readonly models.\n const hackyMutableModel = new MutableValueModel<PlaceAccessGuard>();\n const binding = new Binding(hackyMutableModel, accessGrant, {\n toRight(leftValue: PlaceAccessGuard) {\n return lang.illegalState('hackyMutableModel is read only');\n },\n toLeft: (rightValue: PlaceAccessGuard) => rightValue\n });\n binding.writeLeft();\n this._accessGuard.setDelegate(hackyMutableModel);\n this.redirections = redirections;\n }\n\n getAuthenticationFailureRedirect(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Visit {\n return this.redirections.onAuthenticationFailure(activatedRoute, state);\n }\n\n get navigationSession() {\n return this.navigationSessionModel.value;\n }\n\n get currentSession() {\n return this.navigationSessionModel.value;\n }\n\n isNavigating(): boolean {\n return this.navigationInProgress.value;\n }\n\n waitUntilIdle(): Promise<this> {\n const { when } = Dsl.disposeWith(this);\n return new Promise<this>(resolve => {\n when(this.navigationInProgress).becomesFalsey(() => resolve(this), {\n initialValue: 'evaluate',\n once: true\n });\n });\n }\n\n // @Trace()\n onPopState(event: NavigationStart) {\n assert.isTruthy(event.navigationTrigger === 'popstate');\n if (this.currentSession) {\n this.currentSession.onPopState(event);\n } else {\n const poppedHistoryUrl = event.url;\n const currentRouterUrl = this.urlService.getCurrentRouterUrl();\n const session = this.interactionService.isActive() ?\n new PopStateDuringInteractionNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl) :\n new PopStateNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl);\n this.transitionTo(session);\n }\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart) {\n assert.isFalsey(event.navigationTrigger === 'popstate');\n const inInteraction = this.interactionService.isActive();\n if (this.currentSession) {\n this.currentSession.onRouterStarted(event);\n } else {\n this.transitionTo(this.createNavigationSession(this.urlService.getCurrentRouterUrl()));\n }\n }\n\n // @Trace()\n onUrlChanged(newUrl: string) {\n // the back button can trigger a url change without a navigation session in progress so we\n // console.log(`---> Url Changed ${newUrl}`);\n if (this.currentSession) {\n this.currentSession.onUrlChange(newUrl);\n } else {\n console.log('FYI: url changed without a navigation session in progress');\n }\n // console.log(`<--- Url Changed`);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel) {\n this.currentSession.onRouterCancelled(event);\n }\n\n // @Trace()\n onRouterError(event: NavigationError) {\n this.currentSession.onRouterError(event);\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd) {\n this.currentSession.onRouterEnd(event);\n }\n\n navigate(visit: Visit, options?: { relativeTo: ActivatedRoute }) {\n return this.doNavigation(visit, async router => {\n const commands = [\n visit.placeDefinition.path,\n ...this.createRouteParameters(visit)\n ];\n await this.angularRouter.navigate(commands, {\n relativeTo: options ? options.relativeTo : null\n });\n });\n }\n\n // @Trace()\n async doNavigation(visit: Visit, runNavigationCommands: (router: Router) => any) {\n if (this.navigationInProgress.value) {\n lang.illegalState('Navigation already in progress');\n }\n const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());\n navigation.storeVisit(visit);\n this.transitionTo(navigation);\n try {\n await runNavigationCommands(this.angularRouter);\n } finally {\n // Check if the router has finished (in the case where no router change required) and we're still in a\n // transient state and finish of the transition.\n if (!this.angularRouter.getCurrentNavigation() && this.currentSession) {\n this.currentSession.onRouterEnd(new NavigationEnd(-1, '', ''));\n }\n }\n }\n\n navigateByUrl(urlSnapshot: UrlSnapshot, navigationExtras?: NavigationExtras): Promise<boolean> {\n console.log(`### navigationByUrl -> ${urlSnapshot.urlTree.toString()}`);\n return this.angularRouter.navigateByUrl(urlSnapshot.urlTree, navigationExtras);\n }\n\n get activeVisits(): ListModel<Visit> {\n return this._activeVisits.readonly;\n }\n\n // @Trace()\n async pushVisitChangesToRoute(previous: Visit, next: Visit): Promise<void> {\n this.placeHistory.updateVisit(next);\n\n // FIXME: no route id -> route id duplicates route parameters\n if (next.hasRoutingChangedFrom(previous)) {\n return this.doNavigation(next, router => {\n const urlSnapshot = this.urlService.parseUrl(this.angularRouter.routerState.snapshot.url).updateVisitSegments(next);\n // console.log('### Push Changes to route Redirect', { commands: urlSnapshot.url });\n return this.navigateByUrl(urlSnapshot);\n });\n }\n }\n\n\n private createNavigationSession(currentRouterUrl: string): NavigationSession {\n const inInteraction = this.interactionService.isActive();\n return inInteraction ?\n new NavigatingDuringInteraction(this.navigationContext, currentRouterUrl) :\n new Navigating(this.navigationContext, currentRouterUrl);\n }\n\n // @Trace()\n protected transitionTo(next: NavigationSession) {\n const previous = this.navigationSessionModel.value;\n if (!previous) {\n this.placeHistory.notifyNavigationStarted();\n }\n assert.isTruthy(next !== previous);\n // Logger.get(this).info(`### Router State Transition: ${previous ? previous.toString() : 'null'} -> ${next.toString()}`);\n this.navigationSessionModel.value = next;\n if (!!previous) {\n previous.dispose();\n }\n next.notifyActive();\n }\n\n // @Trace()\n private routingSessionFinished(visits: Visit[]) {\n if (visits && visits.length > 0) {\n assert.isTruthy(this.navigationInProgress.value);\n this.placeHistory.notifyNavigationFinished(visits);\n // We update the active visits before we finish the session so the\n // place outlets can ignore the incoming changes until things are\n // settled. TODO: can we removed the event'ness here and just do a push?\n this._activeVisits.value = visits;\n }\n const session = this.currentSession;\n session.dispose();\n this.navigationSessionModel.value = null;\n // console.log(`### Router Session Finished (was ${session.toString()})`);\n this.sessionFinishedJobs.forEach(job => job());\n this.sessionFinishedJobs = [];\n }\n\n private runAfterRoutingSessionFinishes(func: () => void) {\n assert.isTruthy(this.navigationInProgress);\n this.sessionFinishedJobs.push(func);\n }\n\n\n /**\n * Sync's the current interaction state with the URL. We need to push something in the URL in order\n * to be able to capture the back button on the first page. If we don't then the back click will exit\n * the app directly and we don't get to ask.\n */\n // @Trace()\n syncInteractionContextIdsWithRouter(): Promise<void> {\n if (this.navigationSession) {\n // console.log(`Navigation active -> ${this.navigationSession.toString()}, sync delayed until finished.`);\n const session = this.navigationSession;\n return new Promise<void>((resolve, reject) => {\n this.runAfterRoutingSessionFinishes(() => {\n this.runAfterRoutingSessionFinishes(resolve);\n const syncSession = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);\n this.transitionTo(syncSession);\n });\n });\n } else {\n return new Promise<void>(((resolve, reject) => {\n // console.log(`No navigation in progress, starting synchronisation job`);\n this.runAfterRoutingSessionFinishes(resolve);\n const session = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);\n this.transitionTo(session);\n }));\n\n }\n }\n\n\n private createRouteParameters(visit: Visit) {\n const def = visit.placeDefinition;\n return visit.hasRouteId() ?\n [def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :\n [def.getFormattedRouteParameters(visit)];\n }\n\n}\n\nexport namespace PlaceRouter {\n\n export interface Redirections {\n onAuthenticationFailure(activatedRoute?: ActivatedRouteSnapshot, state?: RouterStateSnapshot): Visit;\n }\n\n export class State {\n constructor(private readonly activeVisits: Visit[]) {\n }\n\n isPlaceActive(placeDefinition: PlaceDefinition): boolean {\n return !!this.getVisitFor(placeDefinition);\n }\n\n getVisitFor(placeDefinition: PlaceDefinition): Visit {\n return this.activeVisits.find(v => v.placeDefinition === placeDefinition);\n }\n }\n\n}\n"]}
1
+ {"version":3,"file":"place-router.js","sourceRoot":"","sources":["../../../../../../libs/angular-ui-powerups/src/lib/place/place-router.ts"],"names":[],"mappings":"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","sourcesContent":["import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n RouterStateSnapshot\n} from '@angular/router';\nimport {\n assert,\n Binding,\n DebugContext,\n DelegatingValueModel,\n Dsl,\n GarbageCollector,\n lang,\n ListModel,\n MutableListModel,\n MutableValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { InteractionServiceRoutingAdapter } from '../interaction/services/interaction-service-routing-adapter';\nimport { InteractionService } from '../interaction/services/interaction.service';\nimport { NavigatingDuringInteraction } from './navigation/session/interactions/navigating-during-interaction';\nimport { PopStateDuringInteractionNavigation } from './navigation/session/interactions/pop-state-during-interaction-navigation';\nimport { SynchroniseInteractionContextIdsWithRoute } from './navigation/session/interactions/synchronise-interaction-context-ids-with-route';\nimport { Navigating } from './navigation/session/navigating';\nimport { NavigationContext } from './navigation/session/navigation-context';\nimport { NavigationSession } from './navigation/session/navigation-session';\nimport { PopStateNavigation } from './navigation/session/pop-state-navigation';\nimport { PlaceAccessGuard } from './place-access-guard';\nimport { PlaceDefinition } from './place-definition';\nimport { PlaceHistory } from './place-history';\nimport { UrlService } from './url-service';\nimport { UrlSnapshot } from './url-snapshot';\nimport { Visit } from './visit';\n\nfunction asArray<T>(item: T | T[]):T[] {\n return Array.isArray(item) ? item : [item];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceRouter extends GarbageCollector {\n\n readonly navigationSessionModel = new MutableValueModel<NavigationSession>();\n readonly navigationInProgress: ValueModelChain<boolean>;\n readonly navigationSessionName: ValueModelChain<string>; // used by tests\n\n private readonly navigationContext: NavigationContext.Impl;\n\n private readonly _activeVisits = new MutableListModel<Visit>();\n private readonly routerInteractionAdapter: InteractionServiceRoutingAdapter;\n private sessionFinishedJobs: (() => void)[] = [];\n\n public readonly state: ValueModel<PlaceRouter.State>;\n\n /**\n * An observable model containing the authoriser function. This allows places to react to changes\n * in permissions when any underlying auth logic changes, e.g. a role being removed from a user.\n */\n private readonly _accessGuard = new DelegatingValueModel<PlaceAccessGuard>().withDefault(new PlaceAccessGuard.NoAuth());\n private redirections: PlaceRouter.Redirections;\n\n constructor(private readonly angularRouter: Router,\n private readonly angularLocation: Location,\n private readonly interactionService: InteractionService,\n private readonly urlService: UrlService,\n private readonly placeHistory: PlaceHistory) {\n super();\n\n if (window['Cypress']) {\n window['aup.PlaceRouter'] = this;\n }\n\n this.routerInteractionAdapter = interactionService.registerPlaceRouter(this);\n\n // TODO: Make this an interface and use 'this' instead.\n this.navigationContext = new NavigationContext.Impl(\n this.urlService,\n this.routerInteractionAdapter,\n (urlSnapshot: UrlSnapshot, options: { replaceUrl: boolean }) => {\n return this.navigateByUrl(urlSnapshot, options);\n },\n state => {\n this.transitionTo(state);\n },\n visits => {\n this.routingSessionFinished(visits);\n });\n\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.navigationInProgress = chain(this.navigationSessionModel).isNotNil();\n\n const idleStateName = chain(this.interactionService.active).map(active => active ? 'IdleDuringInteraction' : 'Idle');\n this.navigationSessionName = chain(this.navigationSessionModel)\n .pluck('name')\n .otherwise(idleStateName);\n\n DebugContext.tag(this._activeVisits, 'PlaceRouter.activeVisits');\n this.state = chain(this._activeVisits).reduce(visits => new PlaceRouter.State(visits));\n\n // TODO: make setup the callbacks in during module initiation to make this testable.\n angularRouter.events.subscribe(event => {\n // Routing event sequence\n // ======================\n // NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session\n // NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.\n // NavigationStart -> .... -> NavigationError --> navigation aborted, end session.\n // =======================\n if (event instanceof NavigationStart) {\n // console.log(`---> NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);\n if (event.navigationTrigger === 'popstate') {\n this.onPopState(event);\n } else {\n this.onRouterStarted(event);\n }\n // console.log(`<--- NavigationStart[${event.id}]: ${event.url} (${event.navigationTrigger})`);\n }\n if (event instanceof NavigationEnd) {\n // console.log(`---> NavigationEnd[${event.id}]: ${event.url}`);\n this.onRouterEnd(event);\n // console.log(`<--- NavigationEnd[${event.id}]: ${event.url}`);\n }\n if (event instanceof NavigationError) {\n // console.log(`---> NavigationError[${event.id}]: ${event.url}`);\n this.onRouterError(event);\n // console.log(`<--- NavigationError[${event.id}]: ${event.url}`);\n }\n if (event instanceof NavigationCancel) {\n // console.log(`---> NavigationCancel[${event.id}]: ${event.url}`);\n this.onRouterCancelled(event);\n // console.log(`<--- NavigationCancel[${event.id}]: ${event.url}`);\n }\n });\n\n // The router needs to know about url changes and in some cases they are the only way the router can know if\n // the back button was clicked.\n angularLocation.onUrlChange(url => this.onUrlChanged(url));\n\n }\n\n get accessGuard(): ValueModel<PlaceAccessGuard> {\n return this._accessGuard.readonly;\n }\n\n // @Trace()\n configureAuth(accessGrant: ValueModel<PlaceAccessGuard>, redirections: PlaceRouter.Redirections) {\n // We need a shitty mutable model until setDelegate is clever enough to work with readonly models.\n const hackyMutableModel = new MutableValueModel<PlaceAccessGuard>();\n const binding = new Binding(hackyMutableModel, accessGrant, {\n toRight(leftValue: PlaceAccessGuard) {\n return lang.illegalState('hackyMutableModel is read only');\n },\n toLeft: (rightValue: PlaceAccessGuard) => rightValue\n });\n binding.writeLeft();\n this._accessGuard.setDelegate(hackyMutableModel);\n this.redirections = redirections;\n }\n\n getAuthenticationFailureRedirect(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Visit {\n return this.redirections.onAuthenticationFailure(activatedRoute, state);\n }\n\n get navigationSession() {\n return this.navigationSessionModel.value;\n }\n\n get currentSession() {\n return this.navigationSessionModel.value;\n }\n\n isNavigating(): boolean {\n return this.navigationInProgress.value;\n }\n\n waitUntilIdle(): Promise<this> {\n const { when } = Dsl.disposeWith(this);\n return new Promise<this>(resolve => {\n when(this.navigationInProgress).becomesFalsey(() => resolve(this), {\n initialValue: 'evaluate',\n once: true\n });\n });\n }\n\n // @Trace()\n onPopState(event: NavigationStart) {\n assert.isTruthy(event.navigationTrigger === 'popstate');\n if (this.currentSession) {\n this.currentSession.onPopState(event);\n } else {\n const poppedHistoryUrl = event.url;\n const currentRouterUrl = this.urlService.getCurrentRouterUrl();\n const session = this.interactionService.isActive() ?\n new PopStateDuringInteractionNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl) :\n new PopStateNavigation(this.navigationContext, currentRouterUrl, poppedHistoryUrl);\n this.transitionTo(session);\n }\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart) {\n assert.isFalsey(event.navigationTrigger === 'popstate');\n const inInteraction = this.interactionService.isActive();\n if (this.currentSession) {\n this.currentSession.onRouterStarted(event);\n } else {\n this.transitionTo(this.createNavigationSession(this.urlService.getCurrentRouterUrl()));\n }\n }\n\n // @Trace()\n onUrlChanged(newUrl: string) {\n // the back button can trigger a url change without a navigation session in progress so we\n // console.log(`---> Url Changed ${newUrl}`);\n if (this.currentSession) {\n this.currentSession.onUrlChange(newUrl);\n } else {\n console.log('FYI: url changed without a navigation session in progress');\n }\n // console.log(`<--- Url Changed`);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel) {\n this.currentSession.onRouterCancelled(event);\n }\n\n // @Trace()\n onRouterError(event: NavigationError) {\n this.currentSession.onRouterError(event);\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd) {\n this.currentSession.onRouterEnd(event);\n }\n\n navigate(visit: Visit | Visit[], options?: { relativeTo: ActivatedRoute }) {\n const commands = asArray(visit).reduce((result, v) => {\n return [...result, v.placeDefinition.path, ...this.createRouteParameters(v)];\n }, []);\n return this.doNavigation(visit, async router => {\n await this.angularRouter.navigate(commands, {\n relativeTo: options ? options.relativeTo : null\n });\n });\n }\n\n // @Trace()\n async doNavigation(visit: Visit| Visit[], runNavigationCommands: (router: Router) => any) {\n if (this.navigationInProgress.value) {\n lang.illegalState('Navigation already in progress');\n }\n const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());\n asArray(visit).forEach(v => navigation.storeVisit(v));\n this.transitionTo(navigation);\n try {\n await runNavigationCommands(this.angularRouter);\n } finally {\n // Check if the router has finished (in the case where no router change required) and we're still in a\n // transient state and finish of the transition.\n if (!this.angularRouter.getCurrentNavigation() && this.currentSession) {\n this.currentSession.onRouterEnd(new NavigationEnd(-1, '', ''));\n }\n }\n }\n\n navigateByUrl(urlSnapshot: UrlSnapshot, navigationExtras?: NavigationExtras): Promise<boolean> {\n console.log(`### navigationByUrl -> ${urlSnapshot.urlTree.toString()}`);\n return this.angularRouter.navigateByUrl(urlSnapshot.urlTree, navigationExtras);\n }\n\n get activeVisits(): ListModel<Visit> {\n return this._activeVisits.readonly;\n }\n\n // @Trace()\n async pushVisitChangesToRoute(previous: Visit, next: Visit): Promise<void> {\n this.placeHistory.updateVisit(next);\n\n // FIXME: no route id -> route id duplicates route parameters\n if (next.hasRoutingChangedFrom(previous)) {\n return this.doNavigation(next, router => {\n const urlSnapshot = this.urlService.parseUrl(this.angularRouter.routerState.snapshot.url).updateVisitSegments(next);\n // console.log('### Push Changes to route Redirect', { commands: urlSnapshot.url });\n return this.navigateByUrl(urlSnapshot);\n });\n }\n }\n\n\n private createNavigationSession(currentRouterUrl: string): NavigationSession {\n const inInteraction = this.interactionService.isActive();\n return inInteraction ?\n new NavigatingDuringInteraction(this.navigationContext, currentRouterUrl) :\n new Navigating(this.navigationContext, currentRouterUrl);\n }\n\n // @Trace()\n protected transitionTo(next: NavigationSession) {\n const previous = this.navigationSessionModel.value;\n if (!previous) {\n this.placeHistory.notifyNavigationStarted();\n }\n assert.isTruthy(next !== previous);\n // Logger.get(this).info(`### Router State Transition: ${previous ? previous.toString() : 'null'} -> ${next.toString()}`);\n this.navigationSessionModel.value = next;\n if (!!previous) {\n previous.dispose();\n }\n next.notifyActive();\n }\n\n // @Trace()\n private routingSessionFinished(visits: Visit[]) {\n if (visits && visits.length > 0) {\n assert.isTruthy(this.navigationInProgress.value);\n this.placeHistory.notifyNavigationFinished(visits);\n // We update the active visits before we finish the session so the\n // place outlets can ignore the incoming changes until things are\n // settled. TODO: can we removed the event'ness here and just do a push?\n this._activeVisits.value = visits;\n }\n const session = this.currentSession;\n session.dispose();\n this.navigationSessionModel.value = null;\n // console.log(`### Router Session Finished (was ${session.toString()})`);\n this.sessionFinishedJobs.forEach(job => job());\n this.sessionFinishedJobs = [];\n }\n\n private runAfterRoutingSessionFinishes(func: () => void) {\n assert.isTruthy(this.navigationInProgress);\n this.sessionFinishedJobs.push(func);\n }\n\n\n /**\n * Sync's the current interaction state with the URL. We need to push something in the URL in order\n * to be able to capture the back button on the first page. If we don't then the back click will exit\n * the app directly and we don't get to ask.\n */\n // @Trace()\n syncInteractionContextIdsWithRouter(): Promise<void> {\n if (this.navigationSession) {\n // console.log(`Navigation active -> ${this.navigationSession.toString()}, sync delayed until finished.`);\n const session = this.navigationSession;\n return new Promise<void>((resolve, reject) => {\n this.runAfterRoutingSessionFinishes(() => {\n this.runAfterRoutingSessionFinishes(resolve);\n const syncSession = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);\n this.transitionTo(syncSession);\n });\n });\n } else {\n return new Promise<void>(((resolve, reject) => {\n // console.log(`No navigation in progress, starting synchronisation job`);\n this.runAfterRoutingSessionFinishes(resolve);\n const session = new SynchroniseInteractionContextIdsWithRoute(this.navigationContext, this.urlService.getCurrentRouterUrl(), false);\n this.transitionTo(session);\n }));\n\n }\n }\n\n\n private createRouteParameters(visit: Visit) {\n const def = visit.placeDefinition;\n return visit.hasRouteId() ?\n [def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :\n [def.getFormattedRouteParameters(visit)];\n }\n\n}\n\nexport namespace PlaceRouter {\n\n export interface Redirections {\n onAuthenticationFailure(activatedRoute?: ActivatedRouteSnapshot, state?: RouterStateSnapshot): Visit;\n }\n\n export class State {\n constructor(private readonly activeVisits: Visit[]) {\n }\n\n isPlaceActive(placeDefinition: PlaceDefinition): boolean {\n return !!this.getVisitFor(placeDefinition);\n }\n\n getVisitFor(placeDefinition: PlaceDefinition): Visit {\n return this.activeVisits.find(v => v.placeDefinition === placeDefinition);\n }\n }\n\n}\n"]}
@@ -1 +1 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"PlaceRouter":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"GarbageCollector","line":47,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":44,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":68,"character":46},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":69,"character":48},{"__symbolic":"reference","module":"../interaction/services/interaction.service","name":"InteractionService","line":70,"character":51},{"__symbolic":"reference","module":"./url-service","name":"UrlService","line":71,"character":43},{"__symbolic":"reference","module":"./place-history","name":"PlaceHistory","line":72,"character":45}]}],"configureAuth":[{"__symbolic":"method"}],"getAuthenticationFailureRedirect":[{"__symbolic":"method"}],"isNavigating":[{"__symbolic":"method"}],"waitUntilIdle":[{"__symbolic":"method"}],"onPopState":[{"__symbolic":"method"}],"onRouterStarted":[{"__symbolic":"method"}],"onUrlChanged":[{"__symbolic":"method"}],"onRouterCancelled":[{"__symbolic":"method"}],"onRouterError":[{"__symbolic":"method"}],"onRouterEnd":[{"__symbolic":"method"}],"navigate":[{"__symbolic":"method"}],"doNavigation":[{"__symbolic":"method"}],"navigateByUrl":[{"__symbolic":"method"}],"pushVisitChangesToRoute":[{"__symbolic":"method"}],"createNavigationSession":[{"__symbolic":"method"}],"transitionTo":[{"__symbolic":"method"}],"routingSessionFinished":[{"__symbolic":"method"}],"runAfterRoutingSessionFinishes":[{"__symbolic":"method"}],"syncInteractionContextIdsWithRouter":[{"__symbolic":"method"}],"createRouteParameters":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}}}]
1
+ [{"__symbolic":"module","version":4,"metadata":{"PlaceRouter":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@coolon/pectin","name":"GarbageCollector","line":50,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":47,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":71,"character":46},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":72,"character":48},{"__symbolic":"reference","module":"../interaction/services/interaction.service","name":"InteractionService","line":73,"character":51},{"__symbolic":"reference","module":"./url-service","name":"UrlService","line":74,"character":43},{"__symbolic":"reference","module":"./place-history","name":"PlaceHistory","line":75,"character":45}]}],"configureAuth":[{"__symbolic":"method"}],"getAuthenticationFailureRedirect":[{"__symbolic":"method"}],"isNavigating":[{"__symbolic":"method"}],"waitUntilIdle":[{"__symbolic":"method"}],"onPopState":[{"__symbolic":"method"}],"onRouterStarted":[{"__symbolic":"method"}],"onUrlChanged":[{"__symbolic":"method"}],"onRouterCancelled":[{"__symbolic":"method"}],"onRouterError":[{"__symbolic":"method"}],"onRouterEnd":[{"__symbolic":"method"}],"navigate":[{"__symbolic":"method"}],"doNavigation":[{"__symbolic":"method"}],"navigateByUrl":[{"__symbolic":"method"}],"pushVisitChangesToRoute":[{"__symbolic":"method"}],"createNavigationSession":[{"__symbolic":"method"}],"transitionTo":[{"__symbolic":"method"}],"routingSessionFinished":[{"__symbolic":"method"}],"runAfterRoutingSessionFinishes":[{"__symbolic":"method"}],"syncInteractionContextIdsWithRouter":[{"__symbolic":"method"}],"createRouteParameters":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}}}]
@@ -1977,9 +1977,13 @@ ScrollContainerComponent.decorators = [
1977
1977
  ];
1978
1978
  ScrollContainerComponent.ctorParameters = () => [];
1979
1979
 
1980
- class SectionHeaderComponent {
1980
+ class SectionHeaderComponent extends DisposableComponent {
1981
1981
  constructor() {
1982
- this.underline = false;
1982
+ super();
1983
+ // readonly i18n = I18nMarsUi.components.layout.header;
1984
+ this.size = 'medium';
1985
+ this.borderTop = false;
1986
+ this.borderBottom = false;
1983
1987
  }
1984
1988
  ngOnInit() {
1985
1989
  }
@@ -1987,13 +1991,15 @@ class SectionHeaderComponent {
1987
1991
  SectionHeaderComponent.decorators = [
1988
1992
  { type: Component, args: [{
1989
1993
  selector: 'aup-section-header',
1990
- template: "<ng-content></ng-content>\n",
1991
- styles: [":host{--def-border-bottom-color:var(--border-bottom-color,rgba(0,0,0,0.07));display:block;padding:8px 16px;font-size:12px;line-height:12px;color:rgba(0,0,0,.5)}:host.underline{border-bottom:1px solid var(--def-border-bottom-color)}"]
1994
+ template: "<span class=\"container-start\"><ng-content select=\"[header-start]\"></ng-content><ng-content></ng-content></span>\n<span class=\"container-middle\"><ng-content select=\"[header-center]\"></ng-content></span>\n<span class=\"container-end\"><ng-content select=\"[header-end]\"></ng-content></span>\n",
1995
+ styles: [":host{display:flex;flex-direction:row;align-items:center;--resolved-padding:var(--padding,var(--default-padding));--resolved-padding-right:var(--padding-right,calc(var(--default-padding)/2));padding-left:var(--resolved-padding);padding-right:var(--resolved-padding-right);box-sizing:border-box}:host.has-back-button{padding-left:0}:host.toolbar{height:56px;min-height:56px}:host.toolbar span{font-weight:500;font-size:18px;color:rgba(0,0,0,.67)}:host.large{height:48px;min-height:48px}:host.large span{font-weight:500;font-size:14px;color:rgba(0,0,0,.67)}:host.medium{height:48px;min-height:48px}:host.medium span{font-weight:500;font-size:13px;color:rgba(0,0,0,.67)}:host.small{height:30px;min-height:30px}:host.small span{font-weight:300;font-size:12px;color:rgba(0,0,0,.67)}:host.border-top{border-top:var(--pinstripe-border)}:host.border-bottom{border-bottom:var(--pinstripe-border)}span{white-space:nowrap;display:inline-flex;flex-direction:row;align-items:center}span.container-start{justify-content:flex-start}span.container-middle{justify-content:center;flex:1;width:0;overflow:hidden}span.container-end{justify-content:flex-end}"]
1992
1996
  },] }
1993
1997
  ];
1994
1998
  SectionHeaderComponent.ctorParameters = () => [];
1995
1999
  SectionHeaderComponent.propDecorators = {
1996
- underline: [{ type: Input }, { type: HostBinding, args: ['class.underline',] }]
2000
+ size: [{ type: Input }, { type: HostBinding, args: ['class',] }],
2001
+ borderTop: [{ type: Input }, { type: HostBinding, args: ['class.border-top',] }],
2002
+ borderBottom: [{ type: Input }, { type: HostBinding, args: ['class.border-bottom',] }]
1997
2003
  };
1998
2004
 
1999
2005
  class SwitchCaseOption {
@@ -7785,6 +7791,9 @@ UrlService.ctorParameters = () => [
7785
7791
  { type: UrlSerializer }
7786
7792
  ];
7787
7793
 
7794
+ function asArray(item) {
7795
+ return Array.isArray(item) ? item : [item];
7796
+ }
7788
7797
  class PlaceRouter extends GarbageCollector {
7789
7798
  constructor(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
7790
7799
  super();
@@ -7948,11 +7957,10 @@ class PlaceRouter extends GarbageCollector {
7948
7957
  this.currentSession.onRouterEnd(event);
7949
7958
  }
7950
7959
  navigate(visit, options) {
7960
+ const commands = asArray(visit).reduce((result, v) => {
7961
+ return [...result, v.placeDefinition.path, ...this.createRouteParameters(v)];
7962
+ }, []);
7951
7963
  return this.doNavigation(visit, (router) => __awaiter(this, void 0, void 0, function* () {
7952
- const commands = [
7953
- visit.placeDefinition.path,
7954
- ...this.createRouteParameters(visit)
7955
- ];
7956
7964
  yield this.angularRouter.navigate(commands, {
7957
7965
  relativeTo: options ? options.relativeTo : null
7958
7966
  });
@@ -7965,7 +7973,7 @@ class PlaceRouter extends GarbageCollector {
7965
7973
  lang.illegalState('Navigation already in progress');
7966
7974
  }
7967
7975
  const navigation = this.createNavigationSession(this.urlService.getCurrentRouterUrl());
7968
- navigation.storeVisit(visit);
7976
+ asArray(visit).forEach(v => navigation.storeVisit(v));
7969
7977
  this.transitionTo(navigation);
7970
7978
  try {
7971
7979
  yield runNavigationCommands(this.angularRouter);