@coolon/angular-ui-powerups 2.0.0-alpha.32 → 2.0.0-alpha.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/assets/interaction.scss +5 -0
  3. package/assets/tabs.scss +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.js +127 -36
  5. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  6. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  7. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  8. package/coolon-angular-ui-powerups.metadata.json +1 -1
  9. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  10. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  11. package/esm2015/lib/interaction/activity-ref.js +10 -2
  12. package/esm2015/lib/interaction/activity-ref.js.map +1 -1
  13. package/esm2015/lib/interaction/activity-ref.metadata.json +1 -1
  14. package/esm2015/lib/interaction/activity.js +18 -1
  15. package/esm2015/lib/interaction/activity.js.map +1 -1
  16. package/esm2015/lib/interaction/activity.metadata.json +1 -1
  17. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +1 -1
  18. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
  19. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +16 -17
  20. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  21. package/esm2015/lib/interaction/components/activity-container/activity-container.component.metadata.json +1 -1
  22. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +0 -1
  23. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js.map +1 -1
  24. package/esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.metadata.json +1 -1
  25. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  26. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +56 -16
  27. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  28. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  29. package/esm2015/lib/place/place-component.js +12 -0
  30. package/esm2015/lib/place/place-component.js.map +1 -1
  31. package/esm2015/lib/place/place-component.metadata.json +1 -1
  32. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  33. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  34. package/esm5/lib/interaction/activity-ref.js +14 -2
  35. package/esm5/lib/interaction/activity-ref.js.map +1 -1
  36. package/esm5/lib/interaction/activity.js +27 -1
  37. package/esm5/lib/interaction/activity.js.map +1 -1
  38. package/esm5/lib/interaction/components/activity-actions/activity-actions.component.js +1 -1
  39. package/esm5/lib/interaction/components/activity-container/activity-container.component.js +16 -17
  40. package/esm5/lib/interaction/components/activity-container/activity-container.component.js.map +1 -1
  41. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js +0 -1
  42. package/esm5/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js.map +1 -1
  43. package/esm5/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  44. package/esm5/lib/place/components/place-outlet/place-outlet.component.js +56 -16
  45. package/esm5/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  46. package/esm5/lib/place/place-component.js +16 -0
  47. package/esm5/lib/place/place-component.js.map +1 -1
  48. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  49. package/fesm2015/coolon-angular-ui-powerups.js +111 -37
  50. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  51. package/fesm5/coolon-angular-ui-powerups.js +128 -37
  52. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  53. package/lib/interaction/activity-ref.d.ts +3 -0
  54. package/lib/interaction/activity.d.ts +6 -2
  55. package/lib/interaction/components/activity-container/activity-container.component.d.ts +2 -2
  56. package/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.d.ts +0 -1
  57. package/lib/place/components/place-outlet/place-outlet.component.d.ts +8 -2
  58. package/lib/place/place-component.d.ts +6 -0
  59. package/package.json +1 -1
@@ -18,7 +18,7 @@ import { MatTableModule } from '@angular/material/table';
18
18
  import { MatTooltipModule } from '@angular/material/tooltip';
19
19
  import { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';
20
20
  import { fas } from '@fortawesome/free-solid-svg-icons';
21
- import { DelegatingValueModel, assert, UnaryCommand, lang, Dsl, GarbageCollector, Logger, TrackExternal, Command, MutableListModel, Disposable, MutableValueModel, StoreInValueModel, ListModel, FocusManager, EventListenerList, Form, Guard, Binding, DebugContext, StoreInListModel, ValueModel, MultipleSelectionModel, DirtyTrackingForm, DelegatingCommand, Deferred, Functions } from '@coolon/pectin';
21
+ import { DelegatingValueModel, assert, UnaryCommand, lang, Dsl, GarbageCollector, Logger, TrackExternal, Command, MutableListModel, Disposable, MutableValueModel, StoreInValueModel, ListModel, FocusManager, EventListenerList, Form, Guard, Binding, DebugContext, StoreInListModel, ValueModel, MultipleSelectionModel, DirtyTrackingForm, DelegatingCommand, Deferred, Trace, Functions } from '@coolon/pectin';
22
22
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
23
23
  import ___default, { isEqual, isNil } from 'lodash';
24
24
  import { Enum } from 'typescript-string-enums';
@@ -409,7 +409,7 @@ var CardContainerComponent = /** @class */ (function (_super) {
409
409
  Component({
410
410
  selector: 'aup-card-container',
411
411
  template: "<div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <aup-icon icon=\"mat:add\"></aup-icon>\n </div>\n\n <div class=\"add-card-template\" *ngIf=\"addCardTemplate\">\n <ng-container [ngTemplateOutlet]=\"addCardTemplate\"></ng-container>\n </div>\n\n</div>\n",
412
- styles: [":root{--aup-default-padding:var(--default-padding, 18px);--aup-default-background:white;--command-face-icon-gap:8px;--aup-icon-width:24px;--aup-fa-icon-width:18px}.router-outlet-container>*{position:absolute;top:0;left:0;bottom:0;right:0}[no-tab-header]>mat-tab-header{display:none}[full-height-tabs] .mat-tab-body-wrapper,mat-tab-group.full-height-tabs .mat-tab-body-wrapper{flex:1}[full-height-tabs] .mat-tab-body-wrapper .mat-tab-body-content,[full-height-tabs] .mat-tab-body-wrapper mat-tab-body,mat-tab-group.full-height-tabs .mat-tab-body-wrapper .mat-tab-body-content,mat-tab-group.full-height-tabs .mat-tab-body-wrapper mat-tab-body{display:flex;flex-direction:column;justify-content:stretch}.dialog-interaction-context{max-width:95vw!important;max-height:95vh!important}.dialog-interaction-context mat-dialog-container{max-width:95vw!important;max-height:95vh!important;padding:0}.aup-popup-interaction-panel{background:var(--aup-default-background,#fff);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(.4,0,.2,1)}.aup-input-activity{padding:calc(var(--aup-default-padding)/2)}.aup-input-component{display:block}.aup-input-component input,.aup-input-component mat-form-field{width:100%}.aup-input-component input mat-hint.faux-error,.aup-input-component mat-form-field mat-hint.faux-error{color:#f44336}.aup-input-component.dense mat-form-field .mat-form-field-infix{border-top:none}.aup-input-component.dense mat-form-field .mat-form-field-flex{padding-top:0}.aup-input-component.dense mat-form-field .mat-form-field-wrapper{padding-bottom:0;border-bottom:0}.aup-input-component.dense mat-form-field .mat-form-field-underline{bottom:0}.aup-input-component.dense mat-form-field.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label-wrapper{display:none}.aup-input-component.dense mat-form-field.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(0)}aup-table-cell-renderer>.aup-input-component .mat-form-field-flex{padding-top:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-infix{width:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-label-wrapper{display:none}aup-table{--default-column-gap:var(--column-gap, 24px);--resolved-row-hover-background-color:var(--row-hover-background-color, rgba(0, 0, 0, 0.05))}aup-table .mat-table td.mat-cell:first-of-type,aup-table .mat-table td.mat-footer-cell:first-of-type,aup-table .mat-table th.mat-header-cell:first-of-type{padding-left:0}aup-table .mat-table tr.enable-hover:hover{background-color:var(--resolved-row-hover-background-color)}aup-table .mat-table td.enable-cursor{cursor:pointer}aup-table aup-table-cell-renderer,aup-table aup-table-header-cell-renderer{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%;min-height:47px}aup-table aup-table-cell-renderer.first-column,aup-table aup-table-cell-renderer:not(.first-column),aup-table aup-table-header-cell-renderer.first-column,aup-table aup-table-header-cell-renderer:not(.first-column){padding-left:var(--default-column-gap)}aup-table aup-table-cell-renderer.fillCell{justify-content:stretch;padding-left:0!important}aup-table aup-table-cell-renderer.padChild>:first-child{padding-left:var(--default-column-gap);flex:1}aup-icon{--fa-icon-offset:calc((var(--aup-icon-width) - var(--aup-fa-icon-width)) / 2);position:relative}aup-icon fa-icon .svg-inline--fa{position:absolute;top:var(--fa-icon-offset);left:var(--fa-icon-offset);width:var(--aup-fa-icon-width)!important;height:var(--aup-fa-icon-width)!important}.mat-menu-panel aup-icon .svg-inline--fa{opacity:.54}:host{--resolved-card-gap:var(--card-gap, 16px);--resolved-card-width:var(--card-width, 300px);--resolved-card-height:var(--card-height, auto);--resolved-card-min-height:var(--card-min-height, auto);--resolved-card-background:var(--card-background, #fcfcfb);flex:1;display:block;background:var(--resolved-card-background)}.card-container{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-template-rows:repeat(auto-fit,minmax(0,var(--resolved-card-height)));grid-gap:var(--resolved-card-gap);box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));min-width:calc(var(--resolved-card-width) + 2 * var(--resolved-card-gap));width:calc((var(--resolved-card-width) + var(--resolved-card-gap)) * 2 + var(--grid-gap));max-width:100%}.add-card-container{width:var(--resolved-card-width);height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:rgba(0,0,0,.54);background-color:rgba(255,255,255,.8);transition:280ms cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:280ms cubic-bezier(.4,0,.2,1);border-color:transparent;background-color:#fff;color:rgba(0,0,0,.54)}.add-card-container:hover:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.add-card-template-container{width:var(--resolved-card-width);height:var(--resolved-card-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}"]
412
+ styles: [":root{--aup-default-padding:var(--default-padding, 18px);--aup-default-background:white;--command-face-icon-gap:8px;--aup-icon-width:24px;--aup-fa-icon-width:18px}.router-outlet-container>*{position:absolute;top:0;left:0;bottom:0;right:0}[no-tab-header]>mat-tab-header{display:none}[full-height-tabs] .mat-tab-body-wrapper,mat-tab-group.full-height-tabs .mat-tab-body-wrapper{flex:1}[full-height-tabs] .mat-tab-body-wrapper .mat-tab-body-content,[full-height-tabs] .mat-tab-body-wrapper mat-tab-body,mat-tab-group.full-height-tabs .mat-tab-body-wrapper .mat-tab-body-content,mat-tab-group.full-height-tabs .mat-tab-body-wrapper mat-tab-body{display:flex;flex-direction:column;justify-content:stretch}.dialog-interaction-context{max-width:95vw!important;max-height:95vh!important}.dialog-interaction-context mat-dialog-container{max-width:95vw!important;max-height:95vh!important;padding:0}.activity-outlet-wrapper{display:flex;flex-direction:column;align-items:stretch}.aup-popup-interaction-panel{background:var(--aup-default-background,#fff);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);transition:box-shadow 280ms cubic-bezier(.4,0,.2,1)}.aup-input-activity{padding:calc(var(--aup-default-padding)/2)}.aup-input-component{display:block}.aup-input-component input,.aup-input-component mat-form-field{width:100%}.aup-input-component input mat-hint.faux-error,.aup-input-component mat-form-field mat-hint.faux-error{color:#f44336}.aup-input-component.dense mat-form-field .mat-form-field-infix{border-top:none}.aup-input-component.dense mat-form-field .mat-form-field-flex{padding-top:0}.aup-input-component.dense mat-form-field .mat-form-field-wrapper{padding-bottom:0;border-bottom:0}.aup-input-component.dense mat-form-field .mat-form-field-underline{bottom:0}.aup-input-component.dense mat-form-field.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label-wrapper{display:none}.aup-input-component.dense mat-form-field.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(0)}aup-table-cell-renderer>.aup-input-component .mat-form-field-flex{padding-top:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-infix{width:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-label-wrapper{display:none}aup-table{--default-column-gap:var(--column-gap, 24px);--resolved-row-hover-background-color:var(--row-hover-background-color, rgba(0, 0, 0, 0.05))}aup-table .mat-table td.mat-cell:first-of-type,aup-table .mat-table td.mat-footer-cell:first-of-type,aup-table .mat-table th.mat-header-cell:first-of-type{padding-left:0}aup-table .mat-table tr.enable-hover:hover{background-color:var(--resolved-row-hover-background-color)}aup-table .mat-table td.enable-cursor{cursor:pointer}aup-table aup-table-cell-renderer,aup-table aup-table-header-cell-renderer{display:flex;flex-direction:column;align-items:stretch;justify-content:center;height:100%;min-height:47px}aup-table aup-table-cell-renderer.first-column,aup-table aup-table-cell-renderer:not(.first-column),aup-table aup-table-header-cell-renderer.first-column,aup-table aup-table-header-cell-renderer:not(.first-column){padding-left:var(--default-column-gap)}aup-table aup-table-cell-renderer.fillCell{justify-content:stretch;padding-left:0!important}aup-table aup-table-cell-renderer.padChild>:first-child{padding-left:var(--default-column-gap);flex:1}aup-icon{--fa-icon-offset:calc((var(--aup-icon-width) - var(--aup-fa-icon-width)) / 2);position:relative}aup-icon fa-icon .svg-inline--fa{position:absolute;top:var(--fa-icon-offset);left:var(--fa-icon-offset);width:var(--aup-fa-icon-width)!important;height:var(--aup-fa-icon-width)!important}.mat-menu-panel aup-icon .svg-inline--fa{opacity:.54}:host{--resolved-card-gap:var(--card-gap, 16px);--resolved-card-width:var(--card-width, 300px);--resolved-card-height:var(--card-height, auto);--resolved-card-min-height:var(--card-min-height, auto);--resolved-card-background:var(--card-background, #fcfcfb);flex:1;display:block;background:var(--resolved-card-background)}.card-container{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-template-rows:repeat(auto-fit,minmax(0,var(--resolved-card-height)));grid-gap:var(--resolved-card-gap);box-sizing:border-box;padding:var(--resolved-card-gap);min-height:calc(var(--resolved-card-height) + 2 * var(--resolved-card-gap));min-width:calc(var(--resolved-card-width) + 2 * var(--resolved-card-gap));width:calc((var(--resolved-card-width) + var(--resolved-card-gap)) * 2 + var(--grid-gap));max-width:100%}.add-card-container{width:var(--resolved-card-width);height:var(--resolved-card-height);min-height:var(--resolved-card-min-height);display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;border:2px dashed rgba(0,0,0,.1);border-radius:6px;font-weight:300;cursor:pointer;color:rgba(0,0,0,.54);background-color:rgba(255,255,255,.8);transition:280ms cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:280ms cubic-bezier(.4,0,.2,1);border-color:transparent;background-color:#fff;color:rgba(0,0,0,.54)}.add-card-container:hover:hover{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.add-card-template-container{width:var(--resolved-card-width);height:var(--resolved-card-height);display:flex;flex-direction:column;align-items:stretch;justify-content:stretch}"]
413
413
  }),
414
414
  __metadata("design:paramtypes", [])
415
415
  ], CardContainerComponent);
@@ -3332,7 +3332,7 @@ var ActivityActionsComponent = /** @class */ (function (_super) {
3332
3332
  Component({
3333
3333
  selector: 'aup-activity-actions',
3334
3334
  template: "<ng-container *ngIf=\"hasCancelCommand()\">\n <button class=\"cancel\" *ngIf=\"!hasCancelText()\" mat-icon-button [pectinCommand]=\"cancelCommand\">\n <aup-icon icon=\"mat:clear\"></aup-icon>\n </button>\n <button class=\"cancel\" *ngIf=\"hasCancelText()\" mat-button [pectinCommand]=\"cancelCommand\">{{cancelText}}</button>\n</ng-container>\n<ng-container *ngIf=\"hasConfirmCommand()\">\n <button class=\"confirm\" *ngIf=\"!hasConfirmText()\" mat-icon-button [pectinCommand]=\"confirmCommand\">\n <aup-icon icon=\"mat:done\"></aup-icon>\n </button>\n <button class=\"confirm\" *ngIf=\"hasConfirmText()\" mat-button [pectinCommand]=\"confirmCommand\">{{confirmText}}</button>\n</ng-container>\n<div class=\"content\">\n <ng-content></ng-content>\n</div>\n",
3335
- styles: [":host{display:-ms-grid;display:grid;grid-template-areas:\"cancel confirm content\";-ms-grid-columns:auto auto 1fr;grid-template-columns:auto auto 1fr;-ms-grid-rows:auto;grid-template-rows:auto;align-items:center;justify-content:end}:host.align-end{grid-template-areas:\"content cancel confirm\";-ms-grid-columns:1fr auto auto;grid-template-columns:1fr auto auto}:host.align-stretch{grid-template-areas:\"cancel content confirm\";-ms-grid-columns:auto 1fr auto;grid-template-columns:auto 1fr auto}.cancel{-ms-grid-row:1;-ms-grid-column:1;grid-area:cancel}:host.align-end>.cancel{-ms-grid-row:1;-ms-grid-column:2}:host.align-stretch>.cancel{-ms-grid-row:1;-ms-grid-column:1}.confirm{-ms-grid-row:1;-ms-grid-column:2;grid-area:confirm}:host.align-end>.confirm{-ms-grid-row:1;-ms-grid-column:3}:host.align-stretch>.confirm{-ms-grid-row:1;-ms-grid-column:3}.content{-ms-grid-row:1;-ms-grid-column:3;grid-area:content;text-align:left}:host.align-end>.content{-ms-grid-row:1;-ms-grid-column:1}:host.align-stretch>.content{-ms-grid-row:1;-ms-grid-column:2}"]
3335
+ styles: [":host{display:-ms-grid;display:grid;grid-template-areas:\"cancel confirm content\";-ms-grid-columns:auto auto 1fr;grid-template-columns:auto auto 1fr;-ms-grid-rows:auto;grid-template-rows:auto;align-items:center;justify-content:end}:host.align-end{grid-template-areas:\"content cancel confirm\";-ms-grid-columns:1fr auto auto;grid-template-columns:1fr auto auto}:host.align-stretch{grid-template-areas:\"cancel content confirm\";-ms-grid-columns:auto 1fr auto;grid-template-columns:auto 1fr auto}.cancel{-ms-grid-row:1;-ms-grid-column:1;grid-area:cancel}:host.align-end>.cancel{-ms-grid-row:1;-ms-grid-column:2}:host.align-stretch>.cancel{-ms-grid-row:1;-ms-grid-column:1}.confirm{-ms-grid-row:1;-ms-grid-column:2;grid-area:confirm}:host.align-end>.confirm{-ms-grid-row:1;-ms-grid-column:3}:host.align-stretch>.confirm{-ms-grid-row:1;-ms-grid-column:3}.column{-ms-grid-row:1;-ms-grid-column:3;grid-area:content;text-align:left}:host.align-end>.column{-ms-grid-row:1;-ms-grid-column:1}:host.align-stretch>.column{-ms-grid-row:1;-ms-grid-column:2}"]
3336
3336
  })
3337
3337
  ], ActivityActionsComponent);
3338
3338
  return ActivityActionsComponent;
@@ -3344,13 +3344,27 @@ var Activity = /** @class */ (function (_super) {
3344
3344
  function Activity() {
3345
3345
  var _this = _super !== null && _super.apply(this, arguments) || this;
3346
3346
  _this._busyModel = new DelegatingValueModel().withDefault(false);
3347
+ _this._focusedModel = _this.registerDisposable(new DelegatingValueModel());
3347
3348
  _this.class = 'aup-activity';
3348
3349
  return _this;
3349
3350
  }
3351
+ Object.defineProperty(Activity.prototype, "isFocused", {
3352
+ get: function () {
3353
+ return this._focusedModel.value;
3354
+ },
3355
+ enumerable: true,
3356
+ configurable: true
3357
+ });
3350
3358
  Activity.prototype.initialise = function (nestedInteractionContext, activityContext) {
3359
+ var _this = this;
3360
+ var _a = Dsl.disposeWith(this), chain = _a.chain, when = _a.when;
3351
3361
  assert$1.isNil(this._activityContext);
3352
3362
  this._activityContext = activityContext;
3353
3363
  this._interactionContext = nestedInteractionContext;
3364
+ this._focusedModel.setDelegate(activityContext.focused);
3365
+ when(this._focusedModel).becomesTruthy(function () {
3366
+ _this.onActivityReady();
3367
+ });
3354
3368
  };
3355
3369
  Object.defineProperty(Activity.prototype, "interactionContext", {
3356
3370
  get: function () {
@@ -3376,6 +3390,13 @@ var Activity = /** @class */ (function (_super) {
3376
3390
  enumerable: true,
3377
3391
  configurable: true
3378
3392
  });
3393
+ Object.defineProperty(Activity.prototype, "focused", {
3394
+ get: function () {
3395
+ return this._focusedModel.readonly;
3396
+ },
3397
+ enumerable: true,
3398
+ configurable: true
3399
+ });
3379
3400
  Activity.prototype.busyWhile = function (busyModel) {
3380
3401
  this._busyModel.setDelegate(busyModel);
3381
3402
  };
@@ -3389,6 +3410,11 @@ var Activity = /** @class */ (function (_super) {
3389
3410
  HostBinding('class'),
3390
3411
  __metadata("design:type", Object)
3391
3412
  ], Activity.prototype, "class", void 0);
3413
+ __decorate([
3414
+ HostBinding('attr.focused'),
3415
+ __metadata("design:type", Object),
3416
+ __metadata("design:paramtypes", [])
3417
+ ], Activity.prototype, "isFocused", null);
3392
3418
  return Activity;
3393
3419
  }(DisposableComponent));
3394
3420
 
@@ -3527,6 +3553,7 @@ var ActivityRef = /** @class */ (function () {
3527
3553
  this.onComplete = onComplete;
3528
3554
  this._complete = false;
3529
3555
  this.deferredResult = Deferred.defer();
3556
+ this.focusedModel = new MutableValueModel();
3530
3557
  }
3531
3558
  ActivityRef.prototype.isActivityRealised = function () {
3532
3559
  return !!this._activity;
@@ -3542,6 +3569,16 @@ var ActivityRef = /** @class */ (function () {
3542
3569
  enumerable: true,
3543
3570
  configurable: true
3544
3571
  });
3572
+ ActivityRef.prototype.setFocused = function (focused) {
3573
+ this.focusedModel.value = focused;
3574
+ };
3575
+ Object.defineProperty(ActivityRef.prototype, "focused", {
3576
+ get: function () {
3577
+ return this.focusedModel.value;
3578
+ },
3579
+ enumerable: true,
3580
+ configurable: true
3581
+ });
3545
3582
  ActivityRef.prototype.notifyActivityCreated = function (activity, nestedInteractionContext) {
3546
3583
  assert.isNil(this._activity);
3547
3584
  this._activity = activity;
@@ -3552,7 +3589,8 @@ var ActivityRef = /** @class */ (function () {
3552
3589
  },
3553
3590
  onCancel: function (error) {
3554
3591
  self.finishActivity(function (deferred) { return deferred.reject(error); });
3555
- }
3592
+ },
3593
+ focused: this.focusedModel.readonly
3556
3594
  });
3557
3595
  };
3558
3596
  ActivityRef.prototype.finishActivity = function (resolveOrReject) {
@@ -3583,7 +3621,6 @@ var ActivityOutletComponent = /** @class */ (function () {
3583
3621
  this.componentFactoryResolver = componentFactoryResolver;
3584
3622
  this.viewContainerRef = viewContainerRef;
3585
3623
  this.injector = injector;
3586
- this._disableAnimation = false;
3587
3624
  }
3588
3625
  Object.defineProperty(ActivityOutletComponent.prototype, "activityRef", {
3589
3626
  get: function () {
@@ -3654,13 +3691,9 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3654
3691
  function ActivityContainerComponent() {
3655
3692
  var _this = _super.call(this) || this;
3656
3693
  _this.dynamicHeight = false;
3657
- _this.activityTabs = [];
3694
+ _this.activityRefs = [];
3658
3695
  _this.garbage = new GarbageCollector();
3659
- // We have issues where angular is triggering a leave animation when an
3660
- // new activity is started, but is not running the enter animation
3661
- // when it is scrolled back into view. So we track the tab changes and
3662
- // disable all animations inside the tab while we're animating.
3663
- _this.inTabChange = new MutableValueModel(false);
3696
+ _this.inAnimation = new MutableValueModel(false);
3664
3697
  return _this;
3665
3698
  }
3666
3699
  ActivityContainerComponent.prototype.ngOnInit = function () {
@@ -3709,7 +3742,7 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3709
3742
  if (!this.isActive()) {
3710
3743
  lang$1.illegalState('no activity in progress');
3711
3744
  }
3712
- return ___default.findLast(this.activityTabs, function (tab) { return !tab.isComplete(); });
3745
+ return ___default.findLast(this.activityRefs, function (tab) { return !tab.isComplete(); });
3713
3746
  };
3714
3747
  /**
3715
3748
  * Cancels the current activity and returns true the context is no longer active, false if
@@ -3748,14 +3781,14 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3748
3781
  });
3749
3782
  this.launchActivity(activityRef);
3750
3783
  // if this is the first activity let the interaction service know.
3751
- if (this.activityTabs.length === 1) {
3784
+ if (this.activityRefs.length === 1) {
3752
3785
  // console.log('Now active!!!');
3753
3786
  this.interactionServiceApi.notifyActive(this);
3754
3787
  }
3755
3788
  return activityRef.activityResult;
3756
3789
  };
3757
3790
  ActivityContainerComponent.prototype.getActiveActivityCount = function () {
3758
- return this.activityTabs.filter(function (ref) { return !ref.isComplete(); }).length;
3791
+ return this.activityRefs.filter(function (ref) { return !ref.isComplete(); }).length;
3759
3792
  };
3760
3793
  /**
3761
3794
  * Checks if this interaction context has finished an is in the process of waiting
@@ -3782,7 +3815,7 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3782
3815
  // Without this our animation done wasn't called when a single
3783
3816
  // new activity followed a single tab activity (since we're tracking
3784
3817
  // by activity index)
3785
- this.activityTabs = [];
3818
+ this.activityRefs = [];
3786
3819
  var promise = this.interactionServiceApi.notifyFinished(this);
3787
3820
  this._deferredCleanUp = promise
3788
3821
  .finally(function () {
@@ -3792,8 +3825,8 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3792
3825
  };
3793
3826
  // @Trace()
3794
3827
  ActivityContainerComponent.prototype.launchActivity = function (activityRef) {
3795
- var cleanedTabs = this.activityTabs.filter(function (tab) { return !tab.isComplete(); });
3796
- this.activityTabs = cleanedTabs.concat(activityRef);
3828
+ var cleanedTabs = this.activityRefs.filter(function (tab) { return !tab.isComplete(); });
3829
+ this.activityRefs = cleanedTabs.concat(activityRef);
3797
3830
  this.synchroniseSelectedTabIndex();
3798
3831
  };
3799
3832
  ActivityContainerComponent.prototype.activityIndex = function (index, activityRef) {
@@ -3806,7 +3839,6 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3806
3839
  this.onAnimationFinishedJob();
3807
3840
  this.onAnimationFinishedJob = undefined;
3808
3841
  }
3809
- this.inTabChange.value = false;
3810
3842
  };
3811
3843
  /**
3812
3844
  * Synchronises the selected tab index.
@@ -3817,11 +3849,15 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3817
3849
  var previousIndex = this.tabs.selectedIndex;
3818
3850
  var newIndex = this.getActiveActivityCount() - 1;
3819
3851
  if (previousIndex !== newIndex) {
3820
- this.inTabChange.value = true;
3852
+ this.inAnimation.value = true;
3853
+ this.activityRefs[newIndex].setFocused(false);
3821
3854
  this.tabs.selectedIndex = newIndex;
3822
3855
  this.onAnimationFinishedJob = function () {
3823
- _this.getSelectedOutlet().component.onActivityReady();
3824
- _this.activityTabs = _this.activityTabs.filter(function (tab) { return !tab.isComplete(); });
3856
+ _this.activityRefs = _this.activityRefs.filter(function (tab) { return !tab.isComplete(); });
3857
+ _this.inAnimation.value = false;
3858
+ _this.activityRefs.forEach(function (ref, index) {
3859
+ ref.setFocused(index === newIndex);
3860
+ });
3825
3861
  };
3826
3862
  }
3827
3863
  };
@@ -3858,7 +3894,7 @@ var ActivityContainerComponent = /** @class */ (function (_super) {
3858
3894
  ActivityContainerComponent = __decorate([
3859
3895
  Component({
3860
3896
  selector: 'aup-activity-container',
3861
- template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let tab of activityTabs; let i = index; trackBy: activityIndex\"\n [@.disabled]=\"inTabChange.value || i !== getSelectedTabIndex()\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"tab\"></aup-activity-outlet>\n </mat-tab>\n</mat-tab-group>\n",
3897
+ template: "<mat-tab-group #tabs no-tab-header\n [dynamicHeight]=\"dynamicHeight\"\n [class.full-height-tabs]=\"!dynamicHeight\">\n <mat-tab *ngFor=\"let activityRef of activityRefs; let i = index; trackBy: activityIndex\">\n <!--\n We have issues where angular is triggering a leave animation when an\n new activity is started, but is not running the enter animation\n when it is scrolled back into view. So we track the tab changes and\n disable all animations inside the tab while we're animating.\n -->\n <div class=\"activity-outlet-wrapper\" [@.disabled]=\"!activityRef.focused\">\n <aup-activity-outlet [nestedInteractionContext]=\"this\" [activityRef]=\"activityRef\"></aup-activity-outlet>\n </div>\n </mat-tab>\n</mat-tab-group>\n",
3862
3898
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
3863
3899
  }),
3864
3900
  __metadata("design:paramtypes", [])
@@ -4929,6 +4965,9 @@ var PlaceComponent = /** @class */ (function (_super) {
4929
4965
  var _this = _super.call(this) || this;
4930
4966
  _this.visitModel = new MutableValueModel();
4931
4967
  _this._inVisitUpdate = new Guard();
4968
+ _this._active = new MutableValueModel(false);
4969
+ var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
4970
+ when(_this._active).becomesTruthy(function () { return _this.onPlaceReady(); });
4932
4971
  return _this;
4933
4972
  }
4934
4973
  PlaceComponent_1 = PlaceComponent;
@@ -4986,6 +5025,19 @@ var PlaceComponent = /** @class */ (function (_super) {
4986
5025
  enumerable: true,
4987
5026
  configurable: true
4988
5027
  });
5028
+ Object.defineProperty(PlaceComponent.prototype, "active", {
5029
+ get: function () {
5030
+ return this._active.readonly;
5031
+ },
5032
+ enumerable: true,
5033
+ configurable: true
5034
+ });
5035
+ /**
5036
+ * Called by the router when the place is ready to interact after any animations have run.
5037
+ */
5038
+ PlaceComponent.prototype._notifyActive = function (active) {
5039
+ this._active.value = active;
5040
+ };
4989
5041
  PlaceComponent.prototype.onPlaceReady = function () {
4990
5042
  };
4991
5043
  var PlaceComponent_1;
@@ -6523,6 +6575,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6523
6575
  _this._activePlaceModel = new MutableValueModel();
6524
6576
  _this.initialPlaceIndex = null;
6525
6577
  _this._isPushingVisitToRoute = new MutableValueModel(false);
6578
+ _this.isVeryFirstLoad = true;
6526
6579
  var _a = Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
6527
6580
  _this.parentOutletModel = new MutableValueModel(parentOutlet);
6528
6581
  var defaultPlaceAnimationOrder = chain(_this.parentOutletModel)
@@ -6531,8 +6584,9 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6531
6584
  .pluckList('children')
6532
6585
  .pluck('component');
6533
6586
  var activatePlaceType = chain(_this.activePlaceModel).map(function (p) { return p.constructor; });
6534
- _this.placeAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
6535
- .otherwise(defaultPlaceAnimationOrder)
6587
+ _this.placesInAnimationOrder = chain(_this.customPlaceAnimationOrderModel)
6588
+ .otherwise(defaultPlaceAnimationOrder);
6589
+ _this.activePlaceAnimationPosition = _this.placesInAnimationOrder
6536
6590
  .reduce(function (placesInOrder) {
6537
6591
  var placeIndex = 0;
6538
6592
  if (activatePlaceType.value) {
@@ -6543,14 +6597,16 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6543
6597
  }
6544
6598
  return isNil(_this.initialPlaceIndex) ? 0 : placeIndex - _this.initialPlaceIndex;
6545
6599
  }, { dependsOn: activatePlaceType });
6600
+ _this.animationSupported = _this.placesInAnimationOrder.count().isGreaterThan(0);
6601
+ _this.animationEnabled = valueOf.all(_this.animateModel, _this.animationSupported).areTruthy();
6546
6602
  // Extract our visit model from the place router.
6547
6603
  _this._activePlaceDefinition = chain(_this._activePlaceModel).pluck('placeDefinition');
6548
6604
  _this.routerVisitModel = _this._activePlaceDefinition.findIn(chain(placeRouter.activeVisitsByPlaceDefinition));
6549
6605
  _this.navigationInProgress = chain(_this.placeRouter.navigationInProgress);
6550
- when.valueOf(_this.navigationInProgress).becomesFalsey(function () {
6606
+ when(_this.navigationInProgress).becomesFalsey(function () {
6551
6607
  _this.checkStateAndInitialise();
6552
6608
  });
6553
- when.valueOf(_this.outletActivated).becomesTruthy(function () {
6609
+ when(_this.outletActivated).becomesTruthy(function () {
6554
6610
  _this.checkStateAndInitialise();
6555
6611
  });
6556
6612
  chain(_this._activePlaceModel)
@@ -6563,7 +6619,7 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6563
6619
  };
6564
6620
  // @Trace()
6565
6621
  PlaceOutletComponent.prototype.getAnimationOrder = function () {
6566
- return this.placeAnimationOrder.value;
6622
+ return this.activePlaceAnimationPosition.value;
6567
6623
  };
6568
6624
  Object.defineProperty(PlaceOutletComponent.prototype, "animationDuration", {
6569
6625
  get: function () {
@@ -6574,7 +6630,10 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6574
6630
  });
6575
6631
  // @Trace()
6576
6632
  PlaceOutletComponent.prototype.navigate = function (visit) {
6577
- // console.log({ activatedRoute: this._activatedRouteModel.value });
6633
+ // const place = this.placesInAnimationOrder.query().findMatching(p => visit.placeDefinition.component === p);
6634
+ // if (!place) {
6635
+ // lang.illegalState()
6636
+ // }
6578
6637
  this.placeRouter.navigate(visit, {
6579
6638
  relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null
6580
6639
  });
@@ -6600,14 +6659,25 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6600
6659
  enumerable: true,
6601
6660
  configurable: true
6602
6661
  });
6603
- // @Trace()
6604
6662
  PlaceOutletComponent.prototype.onOutletActivated = function (routerOutlet, place) {
6605
6663
  this._activatedRouteModel.value = routerOutlet.activatedRoute;
6606
6664
  this._activePlaceModel.value = place;
6665
+ this.validateAnimationState(place);
6607
6666
  this.outletActivated.value = true;
6608
6667
  this.checkStateAndInitialise();
6609
6668
  };
6610
- // @Trace()
6669
+ PlaceOutletComponent.prototype.validateAnimationState = function (place) {
6670
+ if (this.animateModel.value) {
6671
+ if (this.placesInAnimationOrder.length < 1) {
6672
+ console.error('PlaceOutlet.animate === true but placeAnimationOrder has not been set. Animation is disabled.');
6673
+ }
6674
+ else {
6675
+ if (!this.placesInAnimationOrder.query().includes(place.placeDefinition.component)) {
6676
+ console.error("PlaceOutlet.animate === true but placeAnimationOrder doesn't contain " + place.placeDefinition.component.name + ".");
6677
+ }
6678
+ }
6679
+ }
6680
+ };
6611
6681
  PlaceOutletComponent.prototype.onOutletDeactivated = function () {
6612
6682
  this.outletActivated.value = false;
6613
6683
  this._activePlaceModel.value = null;
@@ -6624,7 +6694,6 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6624
6694
  this.initialisePlace(routerVisit, activePlace);
6625
6695
  }
6626
6696
  };
6627
- // @Trace()
6628
6697
  PlaceOutletComponent.prototype.initialisePlace = function (routerVisit, activePlace) {
6629
6698
  var _this = this;
6630
6699
  var visitModel = new MutableValueModel(routerVisit);
@@ -6632,9 +6701,18 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6632
6701
  activePlace.initialiseVisit(routerVisit, function (current, previous) {
6633
6702
  _this.pushVisitChangeToRoute(previous, current);
6634
6703
  });
6635
- if (!this.animateModel.value) {
6636
- // we're not animating so trigger any post animation callbacks now.
6637
- this.animationDone();
6704
+ var finishPlaceLoad = function () {
6705
+ _this._activePlaceModel.value._notifyActive(true);
6706
+ };
6707
+ if (!this.animationEnabled.value || this.isVeryFirstLoad) {
6708
+ // if animation is disabled or this is the very first load then
6709
+ // we won't get our animation done callback so we finish the
6710
+ // process here and now.
6711
+ this.isVeryFirstLoad = false;
6712
+ finishPlaceLoad();
6713
+ }
6714
+ else {
6715
+ this.onAnimationFinishedJob = finishPlaceLoad;
6638
6716
  }
6639
6717
  var _a = Dsl.disposeWith(activePlace), when = _a.when, chain = _a.chain, valueOf = _a.valueOf;
6640
6718
  when.valueOf(this.routerVisitModel)
@@ -6657,8 +6735,9 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6657
6735
  };
6658
6736
  // @Trace()
6659
6737
  PlaceOutletComponent.prototype.animationDone = function () {
6660
- if (this._activePlaceModel.value) {
6661
- this._activePlaceModel.value.onPlaceReady();
6738
+ if (this.onAnimationFinishedJob) {
6739
+ this.onAnimationFinishedJob();
6740
+ this.onAnimationFinishedJob = undefined;
6662
6741
  }
6663
6742
  };
6664
6743
  PlaceOutletComponent.ctorParameters = function () { return [
@@ -6691,10 +6770,22 @@ var PlaceOutletComponent = /** @class */ (function (_super) {
6691
6770
  ViewChild('routeOutlet', { static: true }),
6692
6771
  __metadata("design:type", RouterOutlet)
6693
6772
  ], PlaceOutletComponent.prototype, "routerOut", void 0);
6773
+ __decorate([
6774
+ Trace(),
6775
+ __metadata("design:type", Function),
6776
+ __metadata("design:paramtypes", [RouterOutlet, PlaceComponent]),
6777
+ __metadata("design:returntype", void 0)
6778
+ ], PlaceOutletComponent.prototype, "onOutletActivated", null);
6779
+ __decorate([
6780
+ Trace(),
6781
+ __metadata("design:type", Function),
6782
+ __metadata("design:paramtypes", []),
6783
+ __metadata("design:returntype", void 0)
6784
+ ], PlaceOutletComponent.prototype, "onOutletDeactivated", null);
6694
6785
  PlaceOutletComponent = __decorate([
6695
6786
  Component({
6696
6787
  selector: 'aup-place-outlet',
6697
- template: "<ng-container *ngIf=\"animateModel.value\">\n <div class=\"router-outlet-container\" cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animateModel.value\">\n <div class=\"router-outlet-container\" cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n",
6788
+ template: "<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\" cdkScrollable\n [@routeAnimations]=\"{value: getAnimationOrder(), params:{duration: animationDuration}}\"\n (@routeAnimations.start)=\"animationStarted()\"\n (@routeAnimations.done)=\"animationDone()\"\n >\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"!animationEnabled.value\">\n <div class=\"router-outlet-container\" cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n",
6698
6789
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
6699
6790
  styles: [":host{display:flex;flex-direction:column;min-height:0}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:scroll}router-outlet{display:none}"]
6700
6791
  }),