@coolon/angular-ui-powerups 1.4.1 → 1.5.0

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 (89) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/assets/styles.scss +32 -0
  3. package/bundles/coolon-angular-ui-powerups.umd.js +213 -73
  4. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  5. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  6. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  7. package/coolon-angular-ui-powerups.d.ts +27 -25
  8. package/coolon-angular-ui-powerups.metadata.json +1 -1
  9. package/esm2015/coolon-angular-ui-powerups.js +25 -23
  10. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  11. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  12. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  13. package/esm2015/lib/components/card-container/card-container.component.js +43 -0
  14. package/esm2015/lib/components/card-container/card-container.component.js.map +1 -0
  15. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -0
  16. package/esm2015/lib/components/card-container/card-container.component.ngfactory.js.map +1 -0
  17. package/esm2015/lib/components/card-container/card-container.component.scss.shim.ngstyle.js.map +1 -0
  18. package/esm2015/lib/components/components.module.js +5 -2
  19. package/esm2015/lib/components/components.module.js.map +1 -1
  20. package/esm2015/lib/components/components.module.metadata.json +1 -1
  21. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  22. package/esm2015/lib/components/focusable.component.js +1 -0
  23. package/esm2015/lib/components/focusable.component.js.map +1 -1
  24. package/esm2015/lib/components/index.js +1 -0
  25. package/esm2015/lib/components/index.js.map +1 -1
  26. package/esm2015/lib/components/index.metadata.json +1 -1
  27. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js +37 -27
  28. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js.map +1 -1
  29. package/esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.metadata.json +1 -1
  30. package/esm2015/lib/interaction/activity.js +3 -2
  31. package/esm2015/lib/interaction/activity.js.map +1 -1
  32. package/esm2015/lib/interaction/activity.metadata.json +1 -1
  33. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +2 -2
  34. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  35. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  36. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +83 -0
  37. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js.map +1 -0
  38. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -0
  39. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.ngfactory.js.map +1 -0
  40. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.scss.shim.ngstyle.js.map +1 -0
  41. package/esm2015/lib/place/index.js +1 -0
  42. package/esm2015/lib/place/index.js.map +1 -1
  43. package/esm2015/lib/place/index.metadata.json +1 -1
  44. package/esm2015/lib/place/place.module.js +6 -1
  45. package/esm2015/lib/place/place.module.js.map +1 -1
  46. package/esm2015/lib/place/place.module.metadata.json +1 -1
  47. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  48. package/esm5/coolon-angular-ui-powerups.js +25 -23
  49. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  50. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  51. package/esm5/lib/components/card-container/card-container.component.js +44 -0
  52. package/esm5/lib/components/card-container/card-container.component.js.map +1 -0
  53. package/esm5/lib/components/card-container/card-container.component.ngfactory.js.map +1 -0
  54. package/esm5/lib/components/card-container/card-container.component.scss.shim.ngstyle.js.map +1 -0
  55. package/esm5/lib/components/components.module.js +5 -2
  56. package/esm5/lib/components/components.module.js.map +1 -1
  57. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  58. package/esm5/lib/components/focusable.component.js +1 -0
  59. package/esm5/lib/components/focusable.component.js.map +1 -1
  60. package/esm5/lib/components/index.js +1 -0
  61. package/esm5/lib/components/index.js.map +1 -1
  62. package/esm5/lib/components/vertical-focus-container/vertical-focus-container.component.js +37 -27
  63. package/esm5/lib/components/vertical-focus-container/vertical-focus-container.component.js.map +1 -1
  64. package/esm5/lib/interaction/activity.js +3 -2
  65. package/esm5/lib/interaction/activity.js.map +1 -1
  66. package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js +2 -2
  67. package/esm5/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  68. package/esm5/lib/place/components/side-place-navigation/side-place-navigation.component.js +86 -0
  69. package/esm5/lib/place/components/side-place-navigation/side-place-navigation.component.js.map +1 -0
  70. package/esm5/lib/place/components/side-place-navigation/side-place-navigation.component.ngfactory.js.map +1 -0
  71. package/esm5/lib/place/components/side-place-navigation/side-place-navigation.component.scss.shim.ngstyle.js.map +1 -0
  72. package/esm5/lib/place/index.js +1 -0
  73. package/esm5/lib/place/index.js.map +1 -1
  74. package/esm5/lib/place/place.module.js +6 -1
  75. package/esm5/lib/place/place.module.js.map +1 -1
  76. package/esm5/lib/place/place.module.ngfactory.js.map +1 -1
  77. package/fesm2015/coolon-angular-ui-powerups.js +166 -33
  78. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  79. package/fesm5/coolon-angular-ui-powerups.js +170 -33
  80. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  81. package/lib/components/card-container/card-container.component.d.ts +23 -0
  82. package/lib/components/index.d.ts +1 -0
  83. package/lib/components/vertical-focus-container/vertical-focus-container.component.d.ts +5 -1
  84. package/lib/interaction/activity.d.ts +3 -2
  85. package/lib/place/components/side-place-navigation/side-place-navigation.component.d.ts +53 -0
  86. package/lib/place/index.d.ts +1 -0
  87. package/package.json +3 -2
  88. package/schematics/place-routes/place-builder.js +1 -1
  89. package/schematics/place-routes/place-builder.js.map +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [1.5.0](https://bitbucket.org/coolon/angular-ui-powerups/compare/v1.4.2...v1.5.0) (2020-05-22)
6
+
7
+
8
+ ### Features
9
+
10
+ * added CardContainerComponent ([21730e9](https://bitbucket.org/coolon/angular-ui-powerups/commit/21730e99ea04ebd09b2a94c1496a882ad63d2c54))
11
+ * added SidePlaceNavigationComponent ([17d201d](https://bitbucket.org/coolon/angular-ui-powerups/commit/17d201d7048626232ee6348b9e3b9be2e87dfb35))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * corrected place-builder ts compiler include error message ([72e46d8](https://bitbucket.org/coolon/angular-ui-powerups/commit/72e46d8f8073cc84b5c3fe936cc1a63ebadc5891))
17
+ * updated to extend DisposableComponent to ensure garbage collection ([558dd10](https://bitbucket.org/coolon/angular-ui-powerups/commit/558dd103ed1f749e41c4e411f05292721560d8ac))
18
+
19
+ ### [1.4.2](https://bitbucket.org/coolon/angular-ui-powerups/compare/v1.4.1...v1.4.2) (2020-05-21)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * missing dispose of focusContext ([6edfc2f](https://bitbucket.org/coolon/angular-ui-powerups/commit/6edfc2faad04095cb25948d545ccce552f0bf0d0))
25
+ * reinstated arrowLeft/Right commands ([869be40](https://bitbucket.org/coolon/angular-ui-powerups/commit/869be40b8e97eb995448404a779d87efcabafc1d))
26
+
5
27
  ### [1.4.1](https://bitbucket.org/coolon/angular-ui-powerups/compare/v1.4.0...v1.4.1) (2020-05-21)
6
28
 
7
29
 
@@ -1,3 +1,5 @@
1
+ @import "~@angular/material/theming";
2
+
1
3
  :root {
2
4
  --aup-default-padding: var(--default-padding, 18px);
3
5
  }
@@ -39,3 +41,33 @@
39
41
  right: 0;
40
42
  }
41
43
  }
44
+
45
+ @mixin elevate-on-hover($height:2) {
46
+ @include mat-elevation-transition;
47
+ //@include mat-elevation(2);
48
+ &:hover {
49
+ @include mat-elevation($height);
50
+ }
51
+ }
52
+
53
+ @mixin new-card-placeholder-style($color: rgba(0,0,0,0.54), $background-color: rgba(255,255,255,0.8), $hover-color: $color, $background-hover-color: white) {
54
+ box-sizing: border-box;
55
+ border: 2px dashed rgba(0,0,0,0.1);
56
+ border-radius: 6px;
57
+
58
+ font-weight: 300;
59
+ cursor: pointer;
60
+ color: $color;
61
+ background-color: $background-color;
62
+ transition: all $mat-elevation-transition-duration $mat-elevation-transition-timing-function;
63
+
64
+ &:hover {
65
+ @include elevate-on-hover(4);
66
+ transition: all $mat-elevation-transition-duration $mat-elevation-transition-timing-function;
67
+ border-color: transparent;
68
+ background-color: $background-hover-color;
69
+ color: $hover-color;
70
+ }
71
+
72
+ }
73
+
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/icon'), require('@coolon/pectin'), require('@angular/cdk/portal'), require('@angular/material/dialog'), require('@angular/router'), require('@coolon/typescript-utilities'), require('lodash'), require('@angular/material/progress-spinner'), require('@angular/material/list'), require('@angular/material/tooltip'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('resize-observer-polyfill'), require('rxjs')) :
3
- typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/material/button', '@angular/material/checkbox', '@angular/material/icon', '@coolon/pectin', '@angular/cdk/portal', '@angular/material/dialog', '@angular/router', '@coolon/typescript-utilities', 'lodash', '@angular/material/progress-spinner', '@angular/material/list', '@angular/material/tooltip', '@typescript-plus/fast-memoize-decorator/dist/src', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'resize-observer-polyfill', 'rxjs'], factory) :
4
- (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.material.button, global.ng.material.checkbox, global.ng.material.icon, global.pectin, global.ng.cdk.portal, global.ng.material.dialog, global.ng.router, global.typescriptUtilities, global.___default, global.ng.material.progressSpinner, global.ng.material.list, global.ng.material.tooltip, global.src, global.fastMemoizeDecorator, null, global.ng.animations, global.ResizeObserver, global.rxjs));
5
- }(this, (function (exports, common, core, forms, formField, input, select, tabs, animations, button, checkbox, icon, pectin, portal, dialog, router, typescriptUtilities, ___default, progressSpinner, list, tooltip, src, fastMemoizeDecorator, reflectMetadata, animations$1, ResizeObserver, rxjs) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/common'), require('@angular/core'), require('@angular/forms'), require('@angular/material/form-field'), require('@angular/material/input'), require('@angular/material/select'), require('@angular/material/tabs'), require('@angular/platform-browser/animations'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/icon'), require('@coolon/pectin'), require('@angular/cdk/portal'), require('@angular/material/dialog'), require('@angular/router'), require('@coolon/typescript-utilities'), require('lodash'), require('@angular/flex-layout'), require('@angular/material/progress-spinner'), require('@angular/material/list'), require('@angular/material/tooltip'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations'), require('resize-observer-polyfill'), require('rxjs')) :
3
+ typeof define === 'function' && define.amd ? define('@coolon/angular-ui-powerups', ['exports', '@angular/common', '@angular/core', '@angular/forms', '@angular/material/form-field', '@angular/material/input', '@angular/material/select', '@angular/material/tabs', '@angular/platform-browser/animations', '@angular/material/button', '@angular/material/checkbox', '@angular/material/icon', '@coolon/pectin', '@angular/cdk/portal', '@angular/material/dialog', '@angular/router', '@coolon/typescript-utilities', 'lodash', '@angular/flex-layout', '@angular/material/progress-spinner', '@angular/material/list', '@angular/material/tooltip', '@typescript-plus/fast-memoize-decorator/dist/src', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations', 'resize-observer-polyfill', 'rxjs'], factory) :
4
+ (global = global || self, factory((global.coolon = global.coolon || {}, global.coolon['angular-ui-powerups'] = {}), global.ng.common, global.ng.core, global.ng.forms, global.ng.material.formField, global.ng.material.input, global.ng.material.select, global.ng.material.tabs, global.ng.platformBrowser.animations, global.ng.material.button, global.ng.material.checkbox, global.ng.material.icon, global.pectin, global.ng.cdk.portal, global.ng.material.dialog, global.ng.router, global.typescriptUtilities, global.___default, global.ng.flexLayout, global.ng.material.progressSpinner, global.ng.material.list, global.ng.material.tooltip, global.src, global.fastMemoizeDecorator, null, global.ng.animations, global.ResizeObserver, global.rxjs));
5
+ }(this, (function (exports, common, core, forms, formField, input, select, tabs, animations, button, checkbox, icon, pectin, portal, dialog, router, typescriptUtilities, ___default, flexLayout, progressSpinner, list, tooltip, src, fastMemoizeDecorator, reflectMetadata, animations$1, ResizeObserver, rxjs) { 'use strict';
6
6
 
7
7
  var ___default__default = 'default' in ___default ? ___default['default'] : ___default;
8
8
  ResizeObserver = ResizeObserver && Object.prototype.hasOwnProperty.call(ResizeObserver, 'default') ? ResizeObserver['default'] : ResizeObserver;
@@ -587,6 +587,7 @@
587
587
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, valueOf = _a.valueOf, before = _a.before, when = _a.when, after = _a.after, observe = _a.observe, switchOn = _a.switchOn;
588
588
  if (_this.focusManager) {
589
589
  _this._focusContext = _this.focusManager.registerFocusable(_this);
590
+ _this.registerDisposable(_this._focusContext);
590
591
  _this.registerDisposable(focusBindingFactory.createBinding(el.nativeElement, _this.focusContext));
591
592
  }
592
593
  return _this;
@@ -1143,32 +1144,20 @@
1143
1144
  _this.focusManager = focusManager;
1144
1145
  return _this;
1145
1146
  }
1146
- // The key listeners seem to be preventing manual binding
1147
- // @Input('command.arrowRight')
1148
- // @TrackExternal()
1149
- // rightArrowCommand: Command<void>;
1150
- //
1151
- // @Input('command.arrowLeft')
1152
- // @TrackExternal()
1153
- // leftArrowCommand: Command<void>;
1154
- //
1155
- // @HostListener('keyup.arrowLeft', ['$event'])
1156
- // arrowLeft(event: KeyboardEvent) {
1157
- // if (this.leftArrowCommand.enabled.value) {
1158
- // event.preventDefault();
1159
- // event.stopPropagation();
1160
- // this.leftArrowCommand.execute();
1161
- // }
1162
- // }
1163
- //
1164
- // @HostListener('keyup.arrowRight', ['$event'])
1165
- // arrowRight(event: KeyboardEvent) {
1166
- // if (this.rightArrowCommand.enabled.value) {
1167
- // event.preventDefault();
1168
- // event.stopPropagation();
1169
- // this.rightArrowCommand.execute();
1170
- // }
1171
- // }
1147
+ VerticalFocusContainerComponent.prototype.arrowLeft = function (event) {
1148
+ if (this.leftArrowCommand.enabled.value) {
1149
+ event.preventDefault();
1150
+ event.stopPropagation();
1151
+ this.leftArrowCommand.execute();
1152
+ }
1153
+ };
1154
+ VerticalFocusContainerComponent.prototype.arrowRight = function (event) {
1155
+ if (this.rightArrowCommand.enabled.value) {
1156
+ event.preventDefault();
1157
+ event.stopPropagation();
1158
+ this.rightArrowCommand.execute();
1159
+ }
1160
+ };
1172
1161
  VerticalFocusContainerComponent.prototype.arrowDown = function (event) {
1173
1162
  event.preventDefault();
1174
1163
  event.stopPropagation();
@@ -1184,6 +1173,28 @@
1184
1173
  VerticalFocusContainerComponent.ctorParameters = function () { return [
1185
1174
  { type: pectin.FocusManager, decorators: [{ type: core.Self }] }
1186
1175
  ]; };
1176
+ __decorate([
1177
+ core.Input('command.arrowRight'),
1178
+ pectin.TrackExternal(),
1179
+ __metadata("design:type", pectin.Command)
1180
+ ], VerticalFocusContainerComponent.prototype, "rightArrowCommand", void 0);
1181
+ __decorate([
1182
+ core.Input('command.arrowLeft'),
1183
+ pectin.TrackExternal(),
1184
+ __metadata("design:type", pectin.Command)
1185
+ ], VerticalFocusContainerComponent.prototype, "leftArrowCommand", void 0);
1186
+ __decorate([
1187
+ core.HostListener('keyup.arrowLeft', ['$event']),
1188
+ __metadata("design:type", Function),
1189
+ __metadata("design:paramtypes", [KeyboardEvent]),
1190
+ __metadata("design:returntype", void 0)
1191
+ ], VerticalFocusContainerComponent.prototype, "arrowLeft", null);
1192
+ __decorate([
1193
+ core.HostListener('keyup.arrowRight', ['$event']),
1194
+ __metadata("design:type", Function),
1195
+ __metadata("design:paramtypes", [KeyboardEvent]),
1196
+ __metadata("design:returntype", void 0)
1197
+ ], VerticalFocusContainerComponent.prototype, "arrowRight", null);
1187
1198
  __decorate([
1188
1199
  core.HostListener('keyup.arrowDown', ['$event']),
1189
1200
  __metadata("design:type", Function),
@@ -1211,6 +1222,46 @@
1211
1222
  return VerticalFocusContainerComponent;
1212
1223
  }(FocusContainerComponent));
1213
1224
 
1225
+ /**
1226
+ * @example
1227
+ * // CSS Vars
1228
+ * --resolved-card-gap: var(--card-gap, 16px);
1229
+ * --resolved-card-width: var(--card-width, 300px);
1230
+ * --resolved-card-height: var(--card-height, auto);
1231
+ * --resolved-card-background: var(--card-background, #fcfcfb);
1232
+ *
1233
+ * // Content Templates:
1234
+ * #addCardTemplate
1235
+ * <ng-template #addCardTemplate>
1236
+ * This is a new card template, it will the the size of the other cards.
1237
+ * </nav-template>
1238
+ *
1239
+ */
1240
+ var CardContainerComponent = /** @class */ (function () {
1241
+ function CardContainerComponent() {
1242
+ }
1243
+ CardContainerComponent.prototype.ngOnInit = function () {
1244
+ };
1245
+ __decorate([
1246
+ core.Input(),
1247
+ pectin.TrackExternal(),
1248
+ __metadata("design:type", pectin.Command)
1249
+ ], CardContainerComponent.prototype, "addCardCommand", void 0);
1250
+ __decorate([
1251
+ core.ContentChild("addCardTemplate"),
1252
+ __metadata("design:type", core.TemplateRef)
1253
+ ], CardContainerComponent.prototype, "addCardTemplate", void 0);
1254
+ CardContainerComponent = __decorate([
1255
+ core.Component({
1256
+ selector: 'aup-card-container',
1257
+ template: "<div class=\"card-container\">\n <ng-content></ng-content>\n\n <div class=\"add-card-container\" *ngIf=\"addCardCommand.enabled.value\" [pectinCommand]=\"addCardCommand\">\n <mat-icon>add</mat-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",
1258
+ styles: [":root{--aup-default-padding:var(--default-padding, 18px)}.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}[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}.router-outlet-container>*{position:absolute;top:0;left:0;bottom:0;right:0}:host{--resolved-card-gap:var(--card-gap, 16px);--resolved-card-width:var(--card-width, 300px);--resolved-card-height:var(--card-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);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}"]
1259
+ }),
1260
+ __metadata("design:paramtypes", [])
1261
+ ], CardContainerComponent);
1262
+ return CardContainerComponent;
1263
+ }());
1264
+
1214
1265
  var ComponentsModule = /** @class */ (function () {
1215
1266
  function ComponentsModule() {
1216
1267
  }
@@ -1230,7 +1281,8 @@
1230
1281
  SwitchCaseDefaultDirective,
1231
1282
  FocusContainerComponent,
1232
1283
  VerticalFocusContainerComponent,
1233
- FocusableComponent
1284
+ FocusableComponent,
1285
+ CardContainerComponent
1234
1286
  ],
1235
1287
  imports: [
1236
1288
  common.CommonModule,
@@ -1258,7 +1310,8 @@
1258
1310
  SwitchCaseDefaultDirective,
1259
1311
  FocusContainerComponent,
1260
1312
  VerticalFocusContainerComponent,
1261
- FocusableComponent
1313
+ FocusableComponent,
1314
+ CardContainerComponent
1262
1315
  ],
1263
1316
  providers: [
1264
1317
  FocusBindingFactory
@@ -1315,7 +1368,7 @@
1315
1368
  return !!this._activityContext;
1316
1369
  };
1317
1370
  return Activity;
1318
- }(pectin.GarbageCollector));
1371
+ }(DisposableComponent));
1319
1372
 
1320
1373
  var AlertDialogComponent = /** @class */ (function (_super) {
1321
1374
  __extends(AlertDialogComponent, _super);
@@ -1805,7 +1858,7 @@
1805
1858
  }());
1806
1859
 
1807
1860
  var inplaceMonitorCount = 0;
1808
- exports.ɵbe = /** @class */ (function () {
1861
+ exports.ɵbf = /** @class */ (function () {
1809
1862
  function InteractionService(modelInteractionContextFactory) {
1810
1863
  this.modelInteractionContextFactory = modelInteractionContextFactory;
1811
1864
  this.garbage = new pectin.GarbageCollector();
@@ -1965,7 +2018,7 @@
1965
2018
  return ApiAdapter;
1966
2019
  }());
1967
2020
  InteractionService.ApiAdapter = ApiAdapter;
1968
- })(exports.ɵbe || (exports.ɵbe = {}));
2021
+ })(exports.ɵbf || (exports.ɵbf = {}));
1969
2022
 
1970
2023
  var InPlaceInteractionContextComponent = /** @class */ (function (_super) {
1971
2024
  __extends(InPlaceInteractionContextComponent, _super);
@@ -2009,7 +2062,7 @@
2009
2062
  return this.activityContainerComponent.startActivity(activityType, data);
2010
2063
  };
2011
2064
  InPlaceInteractionContextComponent.ctorParameters = function () { return [
2012
- { type: exports.ɵbe }
2065
+ { type: exports.ɵbf }
2013
2066
  ]; };
2014
2067
  __decorate([
2015
2068
  core.ViewChild('activityContainer', { static: true }),
@@ -2021,7 +2074,7 @@
2021
2074
  template: "<mat-tab-group no-tab-header [selectedIndex]=\"isActive() ? 1 : 0\" full-height-tabs [dynamicHeight]=\"false\">\n <mat-tab>\n <ng-content></ng-content>\n </mat-tab>\n <mat-tab>\n <aup-activity-container #activityContainer [dynamicHeight]=\"false\"></aup-activity-container>\n </mat-tab>\n</mat-tab-group>\n\n",
2022
2075
  styles: [":host{display:flex;flex-direction:column}mat-tab-group{flex:1}"]
2023
2076
  }),
2024
- __metadata("design:paramtypes", [exports.ɵbe])
2077
+ __metadata("design:paramtypes", [exports.ɵbf])
2025
2078
  ], InPlaceInteractionContextComponent);
2026
2079
  return InPlaceInteractionContextComponent;
2027
2080
  }(DisposableComponent));
@@ -2059,7 +2112,7 @@
2059
2112
  AlertDialogComponent
2060
2113
  ],
2061
2114
  providers: [
2062
- exports.ɵbe,
2115
+ exports.ɵbf,
2063
2116
  ]
2064
2117
  })
2065
2118
  ], InteractionModule);
@@ -3178,7 +3231,7 @@
3178
3231
  return PopStateNavigation;
3179
3232
  }(AbstractPopStateNavigation));
3180
3233
 
3181
- exports.ɵbh = /** @class */ (function () {
3234
+ exports.ɵbi = /** @class */ (function () {
3182
3235
  function PlaceHistory() {
3183
3236
  this._archive = new Map();
3184
3237
  this.placeHistoryDepth = 4;
@@ -3315,7 +3368,7 @@
3315
3368
  // }
3316
3369
  //
3317
3370
  // }
3318
- })(exports.ɵbh || (exports.ɵbh = {}));
3371
+ })(exports.ɵbi || (exports.ɵbi = {}));
3319
3372
 
3320
3373
  exports.UrlSnapshot = /** @class */ (function () {
3321
3374
  // TODO: Update this accept a url Parser so it can be immutable and generate new trees on mutation using toString() are parseUrl.
@@ -3838,11 +3891,11 @@
3838
3891
  PlaceRouter.ctorParameters = function () { return [
3839
3892
  { type: router.Router },
3840
3893
  { type: common.Location },
3841
- { type: exports.ɵbe },
3894
+ { type: exports.ɵbf },
3842
3895
  { type: UrlService },
3843
- { type: exports.ɵbh }
3896
+ { type: exports.ɵbi }
3844
3897
  ]; };
3845
- PlaceRouter.ɵprov = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(common.Location), core.ɵɵinject(exports.ɵbe), core.ɵɵinject(UrlService), core.ɵɵinject(exports.ɵbh)); }, token: PlaceRouter, providedIn: "root" });
3898
+ PlaceRouter.ɵprov = core.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(core.ɵɵinject(router.Router), core.ɵɵinject(common.Location), core.ɵɵinject(exports.ɵbf), core.ɵɵinject(UrlService), core.ɵɵinject(exports.ɵbi)); }, token: PlaceRouter, providedIn: "root" });
3846
3899
  __decorate([
3847
3900
  pectin.Trace(),
3848
3901
  __metadata("design:type", Function),
@@ -3855,9 +3908,9 @@
3855
3908
  }),
3856
3909
  __metadata("design:paramtypes", [router.Router,
3857
3910
  common.Location,
3858
- exports.ɵbe,
3911
+ exports.ɵbf,
3859
3912
  UrlService,
3860
- exports.ɵbh])
3913
+ exports.ɵbi])
3861
3914
  ], PlaceRouter);
3862
3915
  return PlaceRouter;
3863
3916
  }(pectin.GarbageCollector));
@@ -4236,8 +4289,8 @@
4236
4289
  ListPlaceNavComponent = __decorate([
4237
4290
  core.Component({
4238
4291
  selector: 'aup-list-place-nav',
4239
- template: "<mat-nav-list class=\"app-menu\">\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span class=\"expanded-only\">{{getNav(placeDefinition).title()}}</span>\n </a>\n</mat-nav-list>\n",
4240
- styles: [":host{display:flex;flex-direction:column;--expanded-width:235px;--nav-item-width:var(--nav-bar-height);width:var(--nav-item-width);transition:width 125ms linear}:host.expanded{width:var(--expanded-width);max-width:var(--expanded-width)}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}.header{display:flex;flex-direction:row;justify-content:flex-end;align-items:center;height:var(--nav-bar-height);border-bottom:var(--pinstripe-border);cursor:pointer}.header .menu{flex:1}.header button{color:inherit;width:var(--nav-item-width);height:var(--nav-bar-height)}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--nav-item-width);height:var(--nav-bar-height);color:rgba(0,0,0,.6)}.mat-list-item.active{background-color:rgba(0,0,0,.1);color:rgba(0,0,0,.9)}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item mat-icon{margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}a[ng-reflect-router-link=manage-instruments] mat-icon{transform:rotate(90deg)}.app-menu{padding-top:0}"]
4292
+ template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span class=\"expanded-only\">{{getNav(placeDefinition).title()}}</span>\n </a>\n</mat-nav-list>\n",
4293
+ styles: [":host{display:flex;flex-direction:column}"]
4241
4294
  }),
4242
4295
  __metadata("design:paramtypes", [PlaceRouter])
4243
4296
  ], ListPlaceNavComponent);
@@ -4263,6 +4316,86 @@
4263
4316
  return TabbedPlaceNavigationComponent;
4264
4317
  }(AbstractPlaceNavigationComponent));
4265
4318
 
4319
+ /**
4320
+ * @example
4321
+ * // Usage
4322
+ * <aup-vertical-place-navigation [places]="placeConstructorArray"
4323
+ * [placeOutlet]="placeOutletComponent">
4324
+ * </aup-vertical-place-navigation>
4325
+ * <aup-place-outlet #placeOutletComponent></aup-place-outlet>
4326
+ *
4327
+ * // CSS overrides:
4328
+ * --nav-width: 56px
4329
+ * --nav-expanded-width: 235px
4330
+ * --nav-item-height: var(--nav-width)
4331
+ * --nav-background-color: #555;
4332
+ * --nav-color: rgba(255, 255, 255, 0.9);
4333
+ *
4334
+ * // Content Templates:
4335
+ * #navEndTemplate
4336
+ * <ng-template #navEndTemplate>
4337
+ * <a mat-list-item (click)="logout()" matTooltip="Logout">
4338
+ * <mat-icon>exit_to_app</mat-icon>
4339
+ * <span class="expanded-only">Logout</span>
4340
+ * </a>
4341
+ * </nav-template>
4342
+ *
4343
+ * // Place nav item in an i18n.yml
4344
+ * places:
4345
+ * myPlace:
4346
+ * nav(NavItem):
4347
+ * title: "Activities"
4348
+ * icon: "build"
4349
+ * tooltip: "Alerts, confirms and dialogs"
4350
+ *
4351
+ * // In your place
4352
+ * (at)Place({
4353
+ * path: 'myPlace',
4354
+ * data: {
4355
+ * nav: I18n.places.myPlace.nav()
4356
+ * }
4357
+ * })
4358
+ */
4359
+ var SidePlaceNavigationComponent = /** @class */ (function (_super) {
4360
+ __extends(SidePlaceNavigationComponent, _super);
4361
+ function SidePlaceNavigationComponent(router, placeRouter) {
4362
+ var _this = _super.call(this, placeRouter) || this;
4363
+ _this.router = router;
4364
+ _this.expanded = false;
4365
+ return _this;
4366
+ }
4367
+ SidePlaceNavigationComponent.prototype.expandMenu = function () {
4368
+ this.expanded = true;
4369
+ };
4370
+ SidePlaceNavigationComponent.prototype.collapseMenu = function () {
4371
+ this.expanded = false;
4372
+ };
4373
+ SidePlaceNavigationComponent.prototype.toggleMenu = function () {
4374
+ this.expanded = !this.expanded;
4375
+ };
4376
+ SidePlaceNavigationComponent.ctorParameters = function () { return [
4377
+ { type: router.Router },
4378
+ { type: PlaceRouter }
4379
+ ]; };
4380
+ __decorate([
4381
+ core.HostBinding('class.expanded'),
4382
+ __metadata("design:type", Object)
4383
+ ], SidePlaceNavigationComponent.prototype, "expanded", void 0);
4384
+ __decorate([
4385
+ core.ContentChild('navEndTemplate'),
4386
+ __metadata("design:type", core.TemplateRef)
4387
+ ], SidePlaceNavigationComponent.prototype, "navEndTemplate", void 0);
4388
+ SidePlaceNavigationComponent = __decorate([
4389
+ core.Component({
4390
+ selector: 'aup-side-place-navigation',
4391
+ template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <mat-icon class=\"collapsed-only\">menu</mat-icon>\n <mat-icon class=\"expanded-only\">arrow_back</mat-icon>\n <span class=\"expanded-only\">Menu</span>\n </a>\n <a mat-list-item *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [class.active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNav(placeDefinition).tooltip()\">\n <mat-icon *ngIf=\"getNav(placeDefinition).icon()\">{{getNav(placeDefinition).icon()}}</mat-icon>\n <span\n class=\"expanded-only\">{{getNav(placeDefinition).title()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n",
4392
+ styles: [":host{display:flex;flex-direction:column;--resolved-nav-item-width:var(--nav-width, 56px);--resolved-nav-item-height:var(--nav-item-height, var(--resolved-nav-item-width));--resolved-expanded-width:var(--nav-expanded-width, 235px);--resolved-color:var(--nav-color, rgba(255, 255, 255, 0.9));--resolved-background-color:var(--nav-background-color, #555);width:var(--resolved-nav-item-width);transition:width 125ms linear;background-color:var(--resolved-background-color);color:var(--resolved-color)}:host.expanded{width:var(--resolved-expanded-width);max-width:var(--resolved-expanded-width)}:host-context(.expanded) .expanded-only{max-width:100%}:host-context(.expanded) .collapsed-only{max-width:0}:host-context(.expanded) .mat-list-item mat-icon:not(.collapsed-only){margin-right:12px}:host-context(.expanded) .mat-list-item span{text-wrap:none;white-space:nowrap}.expanded-only{max-width:0;overflow:hidden}.collapsed-only{max-width:100%;overflow:hidden}mat-nav-list{flex:1;display:flex;flex-direction:column}.mat-list-item{width:var(--resolved-nav-item-width);height:var(--resolved-nav-item-height);color:inherit}.mat-list-item.active{background-color:#444}.mat-list-item.home{text-align:left}mat-icon{color:inherit}mat-icon.flip-horizontal{transform:scaleX(-1)}"]
4393
+ }),
4394
+ __metadata("design:paramtypes", [router.Router, PlaceRouter])
4395
+ ], SidePlaceNavigationComponent);
4396
+ return SidePlaceNavigationComponent;
4397
+ }(AbstractPlaceNavigationComponent));
4398
+
4266
4399
  var PlaceModule = /** @class */ (function () {
4267
4400
  function PlaceModule() {
4268
4401
  }
@@ -4277,7 +4410,8 @@
4277
4410
  list.MatListModule,
4278
4411
  tooltip.MatTooltipModule,
4279
4412
  icon.MatIconModule,
4280
- DirectivesModule
4413
+ DirectivesModule,
4414
+ flexLayout.FlexModule
4281
4415
  ],
4282
4416
  declarations: [
4283
4417
  EmptyStateComponent,
@@ -4285,6 +4419,7 @@
4285
4419
  PlaceOutletComponent,
4286
4420
  TabbedPlaceNavigationComponent,
4287
4421
  ListPlaceNavComponent,
4422
+ SidePlaceNavigationComponent,
4288
4423
  AbstractPlaceNavigationComponent
4289
4424
  ],
4290
4425
  entryComponents: [BusyOverlayComponent],
@@ -4294,6 +4429,7 @@
4294
4429
  EmptyStateComponent,
4295
4430
  TabbedPlaceNavigationComponent,
4296
4431
  ListPlaceNavComponent,
4432
+ SidePlaceNavigationComponent,
4297
4433
  AbstractPlaceNavigationComponent
4298
4434
  ],
4299
4435
  providers: [
@@ -4985,6 +5121,7 @@
4985
5121
  exports.AlertDialogComponent = AlertDialogComponent;
4986
5122
  exports.AngularUiPowerupsModule = AngularUiPowerupsModule;
4987
5123
  exports.BusyOverlayComponent = BusyOverlayComponent;
5124
+ exports.CardContainerComponent = CardContainerComponent;
4988
5125
  exports.CheckboxInputComponent = CheckboxInputComponent;
4989
5126
  exports.CommandDirective = CommandDirective;
4990
5127
  exports.ComponentsModule = ComponentsModule;
@@ -5007,7 +5144,7 @@
5007
5144
  exports.FocusableComponent = FocusableComponent;
5008
5145
  exports.InPlaceInteractionContextComponent = InPlaceInteractionContextComponent;
5009
5146
  exports.InteractionModule = InteractionModule;
5010
- exports.InteractionService = exports.ɵbe;
5147
+ exports.InteractionService = exports.ɵbf;
5011
5148
  exports.InteractionServiceRoutingAdapter = InteractionServiceRoutingAdapter;
5012
5149
  exports.LEFT_RIGHT_PLACE_ANIMATION = LEFT_RIGHT_PLACE_ANIMATION;
5013
5150
  exports.ListPlaceNavComponent = ListPlaceNavComponent;
@@ -5023,7 +5160,7 @@
5023
5160
  exports.PlaceComponentDeactivationHandler = PlaceComponentDeactivationHandler;
5024
5161
  exports.PlaceDefinition = PlaceDefinition;
5025
5162
  exports.PlaceGuard = PlaceGuard;
5026
- exports.PlaceHistory = exports.ɵbh;
5163
+ exports.PlaceHistory = exports.ɵbi;
5027
5164
  exports.PlaceModule = PlaceModule;
5028
5165
  exports.PlaceOutletComponent = PlaceOutletComponent;
5029
5166
  exports.PlaceRouter = PlaceRouter;
@@ -5036,6 +5173,7 @@
5036
5173
  exports.RouteId = RouteId;
5037
5174
  exports.ScrollContainerComponent = ScrollContainerComponent;
5038
5175
  exports.SelectInputComponent = SelectInputComponent;
5176
+ exports.SidePlaceNavigationComponent = SidePlaceNavigationComponent;
5039
5177
  exports.StringInputComponent = StringInputComponent;
5040
5178
  exports.SwitchCaseComponent = SwitchCaseComponent;
5041
5179
  exports.SwitchCaseDefaultDirective = SwitchCaseDefaultDirective;
@@ -5057,24 +5195,26 @@
5057
5195
  exports.slideRightOnEnterAnimation = slideRightOnEnterAnimation;
5058
5196
  exports.ɵa = DirectivesModule;
5059
5197
  exports.ɵb = CommandDirective;
5060
- exports.ɵba = LEFT_RIGHT_PLACE_ANIMATION;
5061
- exports.ɵbb = AUP_PLACE_CONFIG;
5062
- exports.ɵbd = PlaceRouter;
5063
- exports.ɵbf = ModalInteractionContextFactory;
5064
- exports.ɵbg = UrlService;
5065
- exports.ɵbi = TabbedPlaceNavigationComponent;
5066
- exports.ɵbj = AbstractPlaceNavigationComponent;
5067
- exports.ɵbk = ListPlaceNavComponent;
5068
- exports.ɵbl = InteractionModule;
5069
- exports.ɵbm = ActivityContainerComponent;
5070
- exports.ɵbn = AbstractInteractionContext;
5071
- exports.ɵbo = ActivityOutletComponent;
5072
- exports.ɵbp = ConfirmationDialogComponent;
5073
- exports.ɵbq = ACTIVITY_DATA;
5074
- exports.ɵbr = Activity;
5075
- exports.ɵbt = ConfirmThenDialogComponent;
5076
- exports.ɵbu = AlertDialogComponent;
5077
- exports.ɵbw = InPlaceInteractionContextComponent;
5198
+ exports.ɵba = leftRightPlaceAnimation;
5199
+ exports.ɵbb = LEFT_RIGHT_PLACE_ANIMATION;
5200
+ exports.ɵbc = AUP_PLACE_CONFIG;
5201
+ exports.ɵbe = PlaceRouter;
5202
+ exports.ɵbg = ModalInteractionContextFactory;
5203
+ exports.ɵbh = UrlService;
5204
+ exports.ɵbj = TabbedPlaceNavigationComponent;
5205
+ exports.ɵbk = AbstractPlaceNavigationComponent;
5206
+ exports.ɵbl = ListPlaceNavComponent;
5207
+ exports.ɵbm = SidePlaceNavigationComponent;
5208
+ exports.ɵbn = InteractionModule;
5209
+ exports.ɵbo = ActivityContainerComponent;
5210
+ exports.ɵbp = AbstractInteractionContext;
5211
+ exports.ɵbq = ActivityOutletComponent;
5212
+ exports.ɵbr = ConfirmationDialogComponent;
5213
+ exports.ɵbs = ACTIVITY_DATA;
5214
+ exports.ɵbt = Activity;
5215
+ exports.ɵbv = ConfirmThenDialogComponent;
5216
+ exports.ɵbw = AlertDialogComponent;
5217
+ exports.ɵby = InPlaceInteractionContextComponent;
5078
5218
  exports.ɵc = FocusBindingDirective;
5079
5219
  exports.ɵd = DisposableComponent;
5080
5220
  exports.ɵe = FocusBindingFactory;
@@ -5094,11 +5234,11 @@
5094
5234
  exports.ɵs = FocusContainerComponent;
5095
5235
  exports.ɵt = VerticalFocusContainerComponent;
5096
5236
  exports.ɵu = FocusableComponent;
5097
- exports.ɵv = PlaceModule;
5098
- exports.ɵw = EmptyStateComponent;
5099
- exports.ɵx = BusyOverlayComponent;
5100
- exports.ɵy = PlaceOutletComponent;
5101
- exports.ɵz = leftRightPlaceAnimation;
5237
+ exports.ɵv = CardContainerComponent;
5238
+ exports.ɵw = PlaceModule;
5239
+ exports.ɵx = EmptyStateComponent;
5240
+ exports.ɵy = BusyOverlayComponent;
5241
+ exports.ɵz = PlaceOutletComponent;
5102
5242
 
5103
5243
  Object.defineProperty(exports, '__esModule', { value: true });
5104
5244