@coolon/angular-ui-powerups 11.0.0-alpha.17 → 11.0.0-alpha.2

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 (144) hide show
  1. package/assets/table.scss +6 -13
  2. package/bundles/coolon-angular-ui-powerups.umd.js +104 -266
  3. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  5. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  6. package/coolon-angular-ui-powerups.metadata.json +1 -1
  7. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  8. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  9. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  10. package/esm2015/lib/components/commands/command/command.component.js +1 -5
  11. package/esm2015/lib/components/commands/command/command.component.js.map +1 -1
  12. package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -1
  13. package/esm2015/lib/components/components.module.js +3 -0
  14. package/esm2015/lib/components/components.module.js.map +1 -1
  15. package/esm2015/lib/components/components.module.metadata.json +1 -1
  16. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  17. package/esm2015/lib/components/table/column-model.js +1 -2
  18. package/esm2015/lib/components/table/column-model.js.map +1 -1
  19. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  20. package/esm2015/lib/components/table/default-cell-renderer/default-cell-renderer.component.js +1 -1
  21. package/esm2015/lib/components/table/default-cell-renderer/default-cell-renderer.component.js.map +1 -1
  22. package/esm2015/lib/components/table/default-cell-renderer/default-cell-renderer.component.metadata.json +1 -1
  23. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  24. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.metadata.json +1 -1
  25. package/esm2015/lib/components/table/table-model.js +0 -9
  26. package/esm2015/lib/components/table/table-model.js.map +1 -1
  27. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  28. package/esm2015/lib/components/table/table.component.js +3 -30
  29. package/esm2015/lib/components/table/table.component.js.map +1 -1
  30. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  31. package/esm2015/lib/components/track-by.js +1 -5
  32. package/esm2015/lib/components/track-by.js.map +1 -1
  33. package/esm2015/lib/components/tree-table/decorated-tree-node.js +22 -19
  34. package/esm2015/lib/components/tree-table/decorated-tree-node.js.map +1 -1
  35. package/esm2015/lib/components/tree-table/tree-table-component.js +4 -21
  36. package/esm2015/lib/components/tree-table/tree-table-component.js.map +1 -1
  37. package/esm2015/lib/components/tree-table/tree-table-component.metadata.json +1 -1
  38. package/esm2015/lib/directives/directives.module.js +2 -8
  39. package/esm2015/lib/directives/directives.module.js.map +1 -1
  40. package/esm2015/lib/directives/directives.module.metadata.json +1 -1
  41. package/esm2015/lib/directives/directives.module.ngfactory.js.map +1 -1
  42. package/esm2015/lib/directives/exports.js +0 -2
  43. package/esm2015/lib/directives/exports.js.map +1 -1
  44. package/esm2015/lib/directives/exports.metadata.json +1 -1
  45. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  46. package/esm2015/lib/place/components/abstract-place-navigation.component.js +11 -21
  47. package/esm2015/lib/place/components/abstract-place-navigation.component.js.map +1 -1
  48. package/esm2015/lib/place/components/abstract-place-navigation.component.metadata.json +1 -1
  49. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  50. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  51. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  52. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +14 -23
  53. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js.map +1 -1
  54. package/esm2015/lib/place/components/place-outlet/place-outlet.component.metadata.json +1 -1
  55. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +1 -1
  56. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js.map +1 -1
  57. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.metadata.json +1 -1
  58. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  59. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js.map +1 -1
  60. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  61. package/esm2015/lib/place/exports.js +0 -1
  62. package/esm2015/lib/place/exports.js.map +1 -1
  63. package/esm2015/lib/place/exports.metadata.json +1 -1
  64. package/esm2015/lib/place/guards/place.guard.js +8 -5
  65. package/esm2015/lib/place/guards/place.guard.js.map +1 -1
  66. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +0 -2
  67. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js.map +1 -1
  68. package/esm2015/lib/place/place-component.js +3 -1
  69. package/esm2015/lib/place/place-component.js.map +1 -1
  70. package/esm2015/lib/place/place-component.metadata.json +1 -1
  71. package/esm2015/lib/place/place-router.js +4 -15
  72. package/esm2015/lib/place/place-router.js.map +1 -1
  73. package/esm2015/lib/place/place-router.metadata.json +1 -1
  74. package/esm2015/lib/place/place.module.js +2 -6
  75. package/esm2015/lib/place/place.module.js.map +1 -1
  76. package/esm2015/lib/place/place.module.metadata.json +1 -1
  77. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  78. package/fesm2015/coolon-angular-ui-powerups.js +84 -238
  79. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  80. package/lib/components/commands/command/command.component.d.ts +1 -2
  81. package/lib/components/table/column-model.d.ts +0 -1
  82. package/lib/components/table/table-model.d.ts +0 -9
  83. package/lib/components/table/table.component.d.ts +6 -24
  84. package/lib/components/track-by.d.ts +1 -3
  85. package/lib/components/tree-table/tree-table-component.d.ts +0 -9
  86. package/lib/directives/exports.d.ts +0 -2
  87. package/lib/place/components/abstract-place-navigation.component.d.ts +2 -9
  88. package/lib/place/components/place-outlet/place-outlet.component.d.ts +3 -10
  89. package/lib/place/exports.d.ts +0 -1
  90. package/lib/place/place-component.d.ts +1 -1
  91. package/lib/place/place-router.d.ts +6 -10
  92. package/package.json +1 -1
  93. package/schematics/aup-i18n/index.js +28 -8
  94. package/schematics/aup-i18n/index.js.map +1 -1
  95. package/schematics/aup-i18n/templates/i18n/aup/components.yml.template +69 -0
  96. package/schematics/bootstrap-app/index.js +4 -5
  97. package/schematics/bootstrap-app/index.js.map +1 -1
  98. package/schematics/bootstrap-app/templates/{i18n.config.json.template → i18n/config.json.template} +0 -2
  99. package/schematics/bootstrap-app/templates/i18n/notifications.yml.template +19 -0
  100. package/schematics/ng-add/index.js +2 -2
  101. package/schematics/ng-add/index.js.map +1 -1
  102. package/schematics/place-add/index.js +5 -4
  103. package/schematics/place-add/index.js.map +1 -1
  104. package/schematics/place-add/templates/component/__name@dasherize__.component.ts.template +1 -3
  105. package/schematics/place-add/templates/files/i18n/places/__name@dasherize__.yml.template +7 -0
  106. package/schematics/utils/build-context.d.ts +5 -4
  107. package/schematics/utils/workspace.d.ts +4 -3
  108. package/schematics/utils/workspace.js.map +1 -1
  109. package/esm2015/lib/directives/highlight-text-model.directive.js +0 -20
  110. package/esm2015/lib/directives/highlight-text-model.directive.js.map +0 -1
  111. package/esm2015/lib/directives/highlight-text-model.directive.metadata.json +0 -1
  112. package/esm2015/lib/directives/highlight-text-model.directive.ngfactory.js.map +0 -1
  113. package/esm2015/lib/directives/highlight.pipe.js +0 -43
  114. package/esm2015/lib/directives/highlight.pipe.js.map +0 -1
  115. package/esm2015/lib/directives/highlight.pipe.metadata.json +0 -1
  116. package/esm2015/lib/directives/highlight.pipe.ngfactory.js.map +0 -1
  117. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +0 -14
  118. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js.map +0 -1
  119. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.metadata.json +0 -1
  120. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.ngfactory.js.map +0 -1
  121. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.scss.shim.ngstyle.js.map +0 -1
  122. package/lib/directives/highlight-text-model.directive.d.ts +0 -5
  123. package/lib/directives/highlight.pipe.d.ts +0 -11
  124. package/lib/place/components/not-authorised-notice/not-authorised-notice.component.d.ts +0 -3
  125. package/schematics/aup-i18n/templates/app/aup.i18n.yml.template +0 -80
  126. package/schematics/place-add/templates/component/__name@dasherize__.i18n.yml.template +0 -5
  127. /package/schematics/bootstrap-app/templates/{src/app → app}/app-routing.module.ts.template +0 -0
  128. /package/schematics/bootstrap-app/templates/{src/app → app}/app.component.html.template +0 -0
  129. /package/schematics/bootstrap-app/templates/{src/app → app}/app.component.scss.template +0 -0
  130. /package/schematics/bootstrap-app/templates/{src/app → app}/app.component.ts.template +0 -0
  131. /package/schematics/bootstrap-app/templates/{src/app → app}/app.module.ts.template +0 -0
  132. /package/schematics/bootstrap-app/templates/{src/app → app}/i18n.ts.template +0 -0
  133. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/MaterialIcons-Regular.eot +0 -0
  134. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/MaterialIcons-Regular.ijmap +0 -0
  135. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/MaterialIcons-Regular.svg +0 -0
  136. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/MaterialIcons-Regular.ttf +0 -0
  137. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/MaterialIcons-Regular.woff +0 -0
  138. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/MaterialIcons-Regular.woff2 +0 -0
  139. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/README.md +0 -0
  140. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/codepoints +0 -0
  141. /package/schematics/bootstrap-app/templates/{src/assets → assets}/fonts/material-design-icons/material-icons.css +0 -0
  142. /package/schematics/bootstrap-app/templates/{src/index.html.template → index.html.template} +0 -0
  143. /package/schematics/bootstrap-app/templates/{src/styles → styles}/global-variables.scss.template +0 -0
  144. /package/schematics/bootstrap-app/templates/{src/styles.scss.template → styles.scss.template} +0 -0
@@ -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/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/autocomplete'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/divider'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/table'), require('@angular/material/tooltip'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@coolon/pectin'), require('@angular/platform-browser'), require('lodash'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('typescript-string-enums'), require('resize-observer-polyfill'), require('@coolon/typescript-utilities'), require('immer'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations')) :
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/cdk/portal', '@angular/cdk/scrolling', '@angular/material/autocomplete', '@angular/material/button', '@angular/material/checkbox', '@angular/material/divider', '@angular/material/icon', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/table', '@angular/material/tooltip', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@coolon/pectin', '@angular/platform-browser', 'lodash', '@typescript-plus/fast-memoize-decorator/dist/src', 'typescript-string-enums', 'resize-observer-polyfill', '@coolon/typescript-utilities', 'immer', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : 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.cdk.portal, global.ng.cdk.scrolling, global.ng.material.autocomplete, global.ng.material.button, global.ng.material.checkbox, global.ng.material.divider, global.ng.material.icon, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.table, global.ng.material.tooltip, global.angularFontawesome, global.freeSolidSvgIcons, global.pectin, global.ng.platformBrowser, global._, global.src, global.typescriptStringEnums, global.ResizeObserver, global.typescriptUtilities, global.produce, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations));
5
- }(this, (function (exports, i2, i0, forms, formField, input, select, tabs, animations, portal, scrolling, autocomplete, button, checkbox, divider, icon, menu, progressSpinner, table, tooltip, angularFontawesome, freeSolidSvgIcons, pectin, platformBrowser, _, src, typescriptStringEnums, ResizeObserver, typescriptUtilities, produce, flexLayout, i1, i1$1, overlay, list, fastMemoizeDecorator, reflectMetadata, animations$1) { '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/cdk/portal'), require('@angular/cdk/scrolling'), require('@angular/material/autocomplete'), require('@angular/material/button'), require('@angular/material/checkbox'), require('@angular/material/divider'), require('@angular/material/icon'), require('@angular/material/menu'), require('@angular/material/progress-spinner'), require('@angular/material/table'), require('@angular/material/tooltip'), require('@fortawesome/angular-fontawesome'), require('@fortawesome/free-solid-svg-icons'), require('@coolon/pectin'), require('@typescript-plus/fast-memoize-decorator/dist/src'), require('lodash'), require('typescript-string-enums'), require('resize-observer-polyfill'), require('@coolon/typescript-utilities'), require('immer'), require('@angular/flex-layout'), require('@angular/material/dialog'), require('@angular/router'), require('@angular/cdk/overlay'), require('@angular/material/list'), require('@typescript-plus/fast-memoize-decorator'), require('reflect-metadata'), require('@angular/animations')) :
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/cdk/portal', '@angular/cdk/scrolling', '@angular/material/autocomplete', '@angular/material/button', '@angular/material/checkbox', '@angular/material/divider', '@angular/material/icon', '@angular/material/menu', '@angular/material/progress-spinner', '@angular/material/table', '@angular/material/tooltip', '@fortawesome/angular-fontawesome', '@fortawesome/free-solid-svg-icons', '@coolon/pectin', '@typescript-plus/fast-memoize-decorator/dist/src', 'lodash', 'typescript-string-enums', 'resize-observer-polyfill', '@coolon/typescript-utilities', 'immer', '@angular/flex-layout', '@angular/material/dialog', '@angular/router', '@angular/cdk/overlay', '@angular/material/list', '@typescript-plus/fast-memoize-decorator', 'reflect-metadata', '@angular/animations'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : 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.cdk.portal, global.ng.cdk.scrolling, global.ng.material.autocomplete, global.ng.material.button, global.ng.material.checkbox, global.ng.material.divider, global.ng.material.icon, global.ng.material.menu, global.ng.material.progressSpinner, global.ng.material.table, global.ng.material.tooltip, global.angularFontawesome, global.freeSolidSvgIcons, global.pectin, global.src, global._, global.typescriptStringEnums, global.ResizeObserver, global.typescriptUtilities, global.produce, global.ng.flexLayout, global.ng.material.dialog, global.ng.router, global.ng.cdk.overlay, global.ng.material.list, global.fastMemoizeDecorator, null, global.ng.animations));
5
+ }(this, (function (exports, i2, i0, forms, formField, input, select, tabs, animations, portal, scrolling, autocomplete, button, checkbox, divider, icon, menu, progressSpinner, table, tooltip, angularFontawesome, freeSolidSvgIcons, pectin, src, _, typescriptStringEnums, ResizeObserver, typescriptUtilities, produce, flexLayout, i1, i1$1, overlay, list, fastMemoizeDecorator, reflectMetadata, animations$1) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -605,66 +605,6 @@
605
605
  onFocusOut: [{ type: i0.HostListener, args: ['focusout',] }]
606
606
  };
607
607
 
608
- var HighlightTextModelDirective = /** @class */ (function () {
609
- function HighlightTextModelDirective() {
610
- }
611
- return HighlightTextModelDirective;
612
- }());
613
- HighlightTextModelDirective.decorators = [
614
- { type: i0.Directive, args: [{
615
- selector: '[aupHighlightTextModel]'
616
- },] }
617
- ];
618
- HighlightTextModelDirective.ctorParameters = function () { return []; };
619
- HighlightTextModelDirective.propDecorators = {
620
- aupHighlightTextModel: [{ type: i0.Input }]
621
- };
622
- __decorate([
623
- pectin.TrackExternal(),
624
- __metadata("design:type", pectin.ValueModel)
625
- ], HighlightTextModelDirective.prototype, "aupHighlightTextModel", void 0);
626
-
627
- var HighlightPipe = /** @class */ (function (_super) {
628
- __extends(HighlightPipe, _super);
629
- function HighlightPipe(sanitizer, highlightContext) {
630
- var _this = _super.call(this) || this;
631
- _this.sanitizer = sanitizer;
632
- _this.highlightContext = highlightContext;
633
- return _this;
634
- }
635
- HighlightPipe.prototype.ngOnDestroy = function () {
636
- this.dispose();
637
- };
638
- HighlightPipe.prototype.transform = function (value, searchModel) {
639
- var _a;
640
- var model = searchModel !== null && searchModel !== void 0 ? searchModel : (_a = this.highlightContext) === null || _a === void 0 ? void 0 : _a.aupHighlightTextModel;
641
- var searchText = model === null || model === void 0 ? void 0 : model.value;
642
- if (___default['default'].isEmpty(searchText) || !___default['default'].isString(value)) {
643
- return value;
644
- }
645
- // Match in a case insensitive manner
646
- var re = new RegExp(searchText, 'gi');
647
- var match = value.match(re);
648
- // If there's no match, just return the original value.
649
- if (!match) {
650
- return value;
651
- }
652
- var result = value.replace(re, '<mark>' + match[0] + '</mark>');
653
- return this.sanitizer.bypassSecurityTrustHtml(result);
654
- };
655
- return HighlightPipe;
656
- }(pectin.GarbageCollector));
657
- HighlightPipe.decorators = [
658
- { type: i0.Pipe, args: [{
659
- name: 'aupHighlight',
660
- pure: false
661
- },] }
662
- ];
663
- HighlightPipe.ctorParameters = function () { return [
664
- { type: platformBrowser.DomSanitizer },
665
- { type: HighlightTextModelDirective, decorators: [{ type: i0.Optional }] }
666
- ]; };
667
-
668
608
  var DirectivesModule = /** @class */ (function () {
669
609
  function DirectivesModule() {
670
610
  }
@@ -674,9 +614,7 @@
674
614
  { type: i0.NgModule, args: [{
675
615
  declarations: [
676
616
  CommandDirective,
677
- FocusBindingDirective,
678
- HighlightPipe,
679
- HighlightTextModelDirective
617
+ FocusBindingDirective
680
618
  ],
681
619
  imports: [
682
620
  i2.CommonModule,
@@ -689,9 +627,7 @@
689
627
  ],
690
628
  exports: [
691
629
  CommandDirective,
692
- FocusBindingDirective,
693
- HighlightPipe,
694
- HighlightTextModelDirective
630
+ FocusBindingDirective
695
631
  ]
696
632
  },] }
697
633
  ];
@@ -793,7 +729,7 @@
793
729
  { type: i0.Component, args: [{
794
730
  selector: 'aup-card-container',
795
731
  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-command-face *ngIf=\"addCardFace\" [faces]=\"[addCardFace]\"></aup-command-face>\n <aup-icon *ngIf=\"!addCardFace\" 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",
796
- styles: [":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:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-auto-rows:minmax(var(--resolved-card-min-height),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:hsla(0,0%,100%,.8);transition:all .28s cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);transition:all .28s 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}"]
732
+ styles: [":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:grid;grid-template-columns:repeat(auto-fill,var(--resolved-card-width));grid-template-rows:repeat(auto-fit,minmax(var(--resolved-card-min-height),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:hsla(0,0%,100%,.8);transition:all .28s cubic-bezier(.4,0,.2,1)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{transition:box-shadow .28s cubic-bezier(.4,0,.2,1);transition:all .28s 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}"]
797
733
  },] }
798
734
  ];
799
735
  CardContainerComponent.ctorParameters = function () { return []; };
@@ -1073,9 +1009,6 @@
1073
1009
  _this.activeFace = _this.faces.first();
1074
1010
  _this.buttonStyle = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getStyleOf(f); });
1075
1011
  _this.colorModel = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getColorOf(f); });
1076
- _this.iconOnly = _this.faces.select(function (face) {
1077
- return ___default['default'].isEmpty(exports.CommandFace.getTextOf(face)) && !___default['default'].isEmpty(exports.CommandFace.getIconOf(face));
1078
- }).count().equals(_this.faces.count());
1079
1012
  return _this;
1080
1013
  }
1081
1014
  CommandComponent.prototype.isActive = function (face) {
@@ -1094,7 +1027,7 @@
1094
1027
  CommandComponent.decorators = [
1095
1028
  { type: i0.Component, args: [{
1096
1029
  selector: 'aup-command',
1097
- template: "<ng-container *ngIf=\"iconOnly.value\">\n <button mat-icon-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\">\n <aup-command-face class=\"centered\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n</ng-container>\n<ng-container *ngIf=\"!iconOnly.value\">\n <ng-container [ngSwitch]=\"buttonStyle.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\">\n <aup-command-face class=\"centered\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\">\n <aup-command-face class=\"centered\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\">\n <aup-command-face class=\"centered\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n </ng-container>\n</ng-container>\n",
1030
+ template: "<ng-container [ngSwitch]=\"buttonStyle.value\">\n <ng-container *ngSwitchCase=\"CommandFace.Style.STROKED\">\n <button mat-stroked-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\">\n <aup-command-face class=\"centered\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchCase=\"CommandFace.Style.RAISED\">\n <button mat-raised-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\">\n <aup-command-face class=\"centered\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <button mat-button [pectinCommand]=\"command\" [color]=\"colorModel.value\" [class.busy]=\"command.busy.value\">\n <aup-command-face class=\"centered\" [faces]=\"faces.value\"></aup-command-face>\n </button>\n </ng-container>\n</ng-container>\n",
1098
1031
  styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}button{flex:1}"]
1099
1032
  },] }
1100
1033
  ];
@@ -1271,11 +1204,7 @@
1271
1204
  ], MoreMenuComponent.prototype, "tooltip", void 0);
1272
1205
 
1273
1206
  (function (TrackBy) {
1274
- TrackBy.byIndex = function (index, item) { return index; };
1275
- function trackByProperty(property) {
1276
- return function (index, item) { return item[property]; };
1277
- }
1278
- TrackBy.trackByProperty = trackByProperty;
1207
+ TrackBy.byIndex = function (data, index) { return index; };
1279
1208
  })(exports.TrackBy || (exports.TrackBy = {}));
1280
1209
 
1281
1210
  exports.CommandContainer = /** @class */ (function (_super) {
@@ -2634,7 +2563,7 @@
2634
2563
  DefaultCellRendererComponent.decorators = [
2635
2564
  { type: i0.Component, args: [{
2636
2565
  selector: 'aup-default-cell-renderer',
2637
- template: "<span [innerHTML]=\"value| aupHighlight\"></span>\n",
2566
+ template: "{{value}}\n",
2638
2567
  styles: [""]
2639
2568
  },] }
2640
2569
  ];
@@ -2778,7 +2707,6 @@
2778
2707
  this._flex = false;
2779
2708
  this._visibleModel = new pectin.DelegatingValueModel().withDefault(true);
2780
2709
  this.installHeaderRenderer();
2781
- this.dasherisedColumnId = typescriptUtilities.Stringy.from(columnId).dasherize().toString();
2782
2710
  }
2783
2711
  ColumnModel.prototype.installHeaderRenderer = function () {
2784
2712
  this.cellHeaderRenderer(DefaultHeaderCellRendererComponent, function (component, column) {
@@ -3404,32 +3332,15 @@
3404
3332
  *
3405
3333
  * Styling
3406
3334
  * @example
3407
- * // global settings
3408
- * :root {
3409
- * --aup-table-column-gap: 10px; // defaults to 24px
3410
- * --aup-table-row-hover-background-color, rgba(0, 0, 0, 0.05)
3411
- * --aup-table-row-selected-background-color: rebeccapurple; // defaults to transparent
3412
- * --aup-table-first-column-padding-left: 18px // defaults to --column-gap
3413
- * --aup-table-last-column-padding-right: 18px // defaults to --column-gap
3414
- * }
3415
- *
3416
- * // per table settings.
3417
3335
  * aup-table {
3418
3336
  * --column-gap: 10px; // defaults to 24px
3419
3337
  * --row-hover-background-color, rgba(0, 0, 0, 0.05)
3420
3338
  * --row-selected-background-color: rebeccapurple; // defaults to transparent
3421
- * --first-column-padding-left: 18px // defaults to --column-gap
3422
- * --last-column-padding-right: 18px // defaults to --column-gap
3423
- *
3424
- * aup-table-header-cell-renderer,
3425
3339
  * aup-table-cell-renderer {
3426
- * &.aup-col-my-dasherised-column-id {
3427
- * // do stuff
3428
- * }
3429
- * &.first-visible-column {
3340
+ * &:first-column {
3430
3341
  * // do stuff
3431
3342
  * }
3432
- * &.last-visible-column {
3343
+ * &:last-column {
3433
3344
  * // do stuff
3434
3345
  * }
3435
3346
  * }
@@ -3499,22 +3410,12 @@
3499
3410
  var _a;
3500
3411
  return ((_a = this.tableModel.lastVisibleColumn.query().value) === null || _a === void 0 ? void 0 : _a.columnId) === columnId;
3501
3412
  };
3502
- TableComponent.prototype.getColumnClasses = function (columnId) {
3503
- var classes = ["aup-col-" + this.columnsById.get(columnId).dasherisedColumnId];
3504
- if (this.isFirstVisibleColumn(columnId)) {
3505
- classes.push('first-visible-column');
3506
- }
3507
- if (this.isLastVisibleColumn(columnId)) {
3508
- classes.push('last-visible-column');
3509
- }
3510
- return classes;
3511
- };
3512
3413
  return TableComponent;
3513
3414
  }(ResizeAwareComponent));
3514
3415
  TableComponent.decorators = [
3515
3416
  { type: i0.Component, args: [{
3516
3417
  selector: 'aup-table',
3517
- template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"tableModel.dataSource.value\" [trackBy]=\"tableModel.trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell-renderer [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-header-cell-renderer>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell-renderer [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class]=\"getColumnClasses(column.columnId)\"\n ></aup-table-cell-renderer>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\" [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.trackBy]=\"tableModel.trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n",
3418
+ template: "<div class=\"scroll-container\">\n <table mat-table [dataSource]=\"tableModel.dataSource.value\" [trackBy]=\"tableModel.trackBy\">\n\n <ng-container *ngFor=\"let column of columns.value; index as index; first as first; last as last\"\n matColumnDef=\"{{column.columnId}}\">\n <th mat-header-cell *matHeaderCellDef [class.flex]=\"column.isFlex()\" [class.hide]=\"!column.isVisible()\">\n <aup-table-header-cell-renderer [column]=\"column\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class.first-visible-column]=\"isFirstVisibleColumn(column.columnId)\"\n [class.last-visible-column]=\"isLastVisibleColumn(column.columnId)\"\n ></aup-table-header-cell-renderer>\n </th>\n <td mat-cell *matCellDef=\"let row\" (click)=\"notifyCellClicked(column, row)\"\n [class.enable-cursor]=\"tableModel.isCursorEnabled(column)\"\n [class.flex]=\"column.isFlex()\"\n [class.hide]=\"!column.isVisible()\"\n >\n <aup-table-cell-renderer [column]=\"column\"\n [row]=\"row\"\n [tableModel]=\"tableModel\"\n [editSession]=\"tableModel.getEditSessionFor(row)\"\n [attr.column-index]=\"index\"\n [attr.column-id]=\"column.columnId\"\n [class.first-visible-column]=\"isFirstVisibleColumn(column.columnId)\"\n [class.last-visible-column]=\"isLastVisibleColumn(column.columnId)\"\n ></aup-table-cell-renderer>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"columnIds.value\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: columnIds.value; let i = index\"\n [ngClass]=\"tableModel.getRowClasses(row)\" [class.enable-hover]=\"tableModel.isHoverEnabled()\"\n [attr.trackBy]=\"tableModel.trackBy(i, row)\"\n ></tr>\n\n </table>\n</div>\n",
3518
3419
  styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host table{width:100%}:host.enable-scrolling{min-height:0}:host.enable-scrolling .scroll-container{flex:1;flex-basis:0;overflow-y:scroll;display:flex;flex-direction:column;align-items:stretch}"]
3519
3420
  },] }
3520
3421
  ];
@@ -4013,7 +3914,7 @@
4013
3914
  Object.defineProperty(DecoratedTreeNodeMixin.prototype, "decoratedSelf", {
4014
3915
  get: function () {
4015
3916
  var _this = this;
4016
- return this.memoize('decoratedSelf', function () {
3917
+ return this.memoize("decoratedSelf", function () {
4017
3918
  return _this.parent ? _this.parent.children.find(function (child) { return child.node === _this.node; }) : exports.DecoratedTreeNode.createRoot(_this.node);
4018
3919
  });
4019
3920
  },
@@ -4023,7 +3924,7 @@
4023
3924
  Object.defineProperty(DecoratedTreeNodeMixin.prototype, "children", {
4024
3925
  get: function () {
4025
3926
  var _this = this;
4026
- return this.memoize('children', function () {
3927
+ return this.memoize("children", function () {
4027
3928
  return _this.node.children ? _this.node.children.map(function (child) {
4028
3929
  return typescriptUtilities.Mixin.createProxy(child, new DecoratedTreeNodeMixin(_this.decoratedSelf, child));
4029
3930
  }) : [];
@@ -4034,7 +3935,7 @@
4034
3935
  });
4035
3936
  DecoratedTreeNodeMixin.prototype.descendants = function () {
4036
3937
  var _this = this;
4037
- return this.memoize('descendants', function () {
3938
+ return this.memoize("descendants", function () {
4038
3939
  var result = [];
4039
3940
  _this.visitDescendants(function (child) { return result.push(child); });
4040
3941
  return result;
@@ -4042,7 +3943,7 @@
4042
3943
  };
4043
3944
  DecoratedTreeNodeMixin.prototype.selfAndDescendants = function () {
4044
3945
  var _this = this;
4045
- return this.memoize('selfAndDescendants', function () {
3946
+ return this.memoize("selfAndDescendants", function () {
4046
3947
  var result = [];
4047
3948
  _this.visitSelfAndDescendants(function (child) { return result.push(child); });
4048
3949
  return result;
@@ -4113,24 +4014,29 @@
4113
4014
  };
4114
4015
  DecoratedTreeNodeMixin.prototype.ancestorsAndSelf = function () {
4115
4016
  var _this = this;
4116
- return this.memoize('ancestorsAndSelf', function () {
4017
+ return this.memoize("ancestorsAndSelf", function () {
4117
4018
  return _this.ancestors().concat([(_this.decoratedSelf)]);
4118
4019
  });
4119
4020
  };
4120
4021
  DecoratedTreeNodeMixin.prototype.pathToParent = function (parent) {
4121
- if (this.node === parent.node) {
4122
- return [];
4123
- }
4124
- else if (this.parent) {
4125
- var pathToParent = this.parent.pathToParent(parent);
4126
- return pathToParent.concat([this.parent]);
4127
- }
4128
- else {
4129
- throw new Error('parent is not an ancestor');
4130
- }
4022
+ var _this = this;
4023
+ return this.memoize("pathToParent", function () {
4024
+ if (_this.node === parent.node) {
4025
+ return [];
4026
+ }
4027
+ else if (_this.parent) {
4028
+ return _this.parent.pathToParent(parent).concat([_this.parent]);
4029
+ }
4030
+ else {
4031
+ throw new Error('parent is not an ancestor');
4032
+ }
4033
+ });
4131
4034
  };
4132
4035
  DecoratedTreeNodeMixin.prototype.pathToParentAndSelf = function (parent) {
4133
- return this.pathToParent(parent).concat([this.decoratedSelf]);
4036
+ var _this = this;
4037
+ return this.memoize("pathToParentAndSelf", function () {
4038
+ return _this.pathToParent(parent).concat([_this.decoratedSelf]);
4039
+ });
4134
4040
  };
4135
4041
  DecoratedTreeNodeMixin.prototype.isRoot = function () {
4136
4042
  return !this.parent;
@@ -4146,20 +4052,20 @@
4146
4052
  return !this.isRoot() && this.node.children.length < 1;
4147
4053
  };
4148
4054
  DecoratedTreeNodeMixin.prototype.hasChildren = function () {
4149
- return this.node.children && this.node.children.length > 0;
4055
+ return this.node.children.length > 0;
4150
4056
  };
4151
4057
  DecoratedTreeNodeMixin.prototype.depthFromParent = function (parent) {
4152
4058
  return this.pathToParent(parent).length;
4153
4059
  };
4154
4060
  DecoratedTreeNodeMixin.prototype.treeDepth = function () {
4155
4061
  var _this = this;
4156
- return this.memoize('treeDepth', function () {
4062
+ return this.memoize("treeDepth", function () {
4157
4063
  return 1 + _this.descendants().map(function (child) { return child.depthFromParent(_this); }).reduce(function (prev, current) { return Math.max(prev, current); });
4158
4064
  });
4159
4065
  };
4160
4066
  DecoratedTreeNodeMixin.prototype.flatten = function () {
4161
4067
  var _this = this;
4162
- return this.memoize('flatten', function () {
4068
+ return this.memoize("flatten", function () {
4163
4069
  return _this.flattenInto([]);
4164
4070
  });
4165
4071
  };
@@ -4369,21 +4275,14 @@
4369
4275
  var TreeTableComponent = /** @class */ (function (_super) {
4370
4276
  __extends(TreeTableComponent, _super);
4371
4277
  function TreeTableComponent() {
4372
- var _this = _super.call(this) || this;
4373
- /**
4374
- * Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
4375
- * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
4376
- * containment area.
4377
- */
4378
- _this.enableScrolling = false;
4379
- return _this;
4278
+ return _super.call(this) || this;
4380
4279
  }
4381
4280
  return TreeTableComponent;
4382
4281
  }(DisposableComponent));
4383
4282
  TreeTableComponent.decorators = [
4384
4283
  { type: i0.Component, args: [{
4385
4284
  selector: "aup-tree-table",
4386
- template: "<aup-table [tableModel]=\"treeTableModel\" [showHeaderModel]=\"showHeaderModel\" [enableScrolling]=\"enableScrolling\"></aup-table>\n",
4285
+ template: "<aup-table [tableModel]=\"treeTableModel\"></aup-table>\n",
4387
4286
  encapsulation: i0.ViewEncapsulation.None // allow us to target nested table styles
4388
4287
  ,
4389
4288
  styles: ["td.mat-cell{border-top-width:0!important;border-bottom-width:0!important}td.mat-column-tree-label{width:1px}aup-table-cell-renderer[column-id=tree-label]{padding-left:8px!important}aup-tree-label-cell-renderer{flex:1}"]
@@ -4391,23 +4290,12 @@
4391
4290
  ];
4392
4291
  TreeTableComponent.ctorParameters = function () { return []; };
4393
4292
  TreeTableComponent.propDecorators = {
4394
- treeTableModel: [{ type: i0.Input }],
4395
- showHeaderModel: [{ type: i0.Input }],
4396
- showHeader: [{ type: i0.Input }],
4397
- enableScrolling: [{ type: i0.Input }, { type: i0.HostBinding, args: ['class.enable-scrolling',] }]
4293
+ treeTableModel: [{ type: i0.Input }]
4398
4294
  };
4399
4295
  __decorate([
4400
4296
  pectin.TrackExternal(),
4401
4297
  __metadata("design:type", TreeTableModel)
4402
4298
  ], TreeTableComponent.prototype, "treeTableModel", void 0);
4403
- __decorate([
4404
- pectin.TrackExternal({ defaultValue: true }),
4405
- __metadata("design:type", pectin.ValueModel)
4406
- ], TreeTableComponent.prototype, "showHeaderModel", void 0);
4407
- __decorate([
4408
- pectin.StoreInValueModel('showHeaderModel'),
4409
- __metadata("design:type", Boolean)
4410
- ], TreeTableComponent.prototype, "showHeader", void 0);
4411
4299
 
4412
4300
  var VerticalFocusContainerComponent = /** @class */ (function (_super) {
4413
4301
  __extends(VerticalFocusContainerComponent, _super);
@@ -4580,9 +4468,12 @@
4580
4468
  TreeTableComponent,
4581
4469
  exports.TreeInheritanceIconComponent,
4582
4470
  TreeLabelCellRendererComponent,
4471
+ exports.IconComponent,
4583
4472
  BusyOverlayComponent,
4584
4473
  EmptyStateComponent,
4585
4474
  PaginatorComponent,
4475
+ exports.IconComponent,
4476
+ exports.IconComponent
4586
4477
  ],
4587
4478
  imports: [
4588
4479
  i2.CommonModule,
@@ -6071,15 +5962,6 @@
6071
5962
  * table.addCustomColumn("fullName", hero => `${hero.firstName} ${hero.lastName}`);
6072
5963
  * });
6073
5964
  *
6074
- * Template columns
6075
- * @example
6076
- * const model = TableModel.fromList(heroList, table => {
6077
- * table.addSelectionColumn(selectionModel); // <- can be single or multiple selection model
6078
- * table.addTemplateColumn("myTemplate");
6079
- * });
6080
- *
6081
- * <div *aupColumnTemplate="let hero; columnId: 'myTemplate'">{{hero.age}}</div>
6082
- *
6083
5965
  * I18n
6084
5966
  * @example
6085
5967
  * [table.yml]
@@ -6446,7 +6328,6 @@
6446
6328
  _this._active = new pectin.MutableValueModel(false);
6447
6329
  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;
6448
6330
  when(_this._active).becomesTruthy(function () { return _this.onPlaceReady(); });
6449
- _this.childPlaces = _this.placeDefinition.children.map(function (d) { return d.component; });
6450
6331
  return _this;
6451
6332
  }
6452
6333
  // @Trace()
@@ -6496,6 +6377,13 @@
6496
6377
  enumerable: false,
6497
6378
  configurable: true
6498
6379
  });
6380
+ Object.defineProperty(PlaceComponent.prototype, "childPlaces", {
6381
+ get: function () {
6382
+ return this.placeDefinition.children.map(function (d) { return d.component; });
6383
+ },
6384
+ enumerable: false,
6385
+ configurable: true
6386
+ });
6499
6387
  Object.defineProperty(PlaceComponent.prototype, "active", {
6500
6388
  get: function () {
6501
6389
  return this._active.readonly;
@@ -6562,7 +6450,6 @@
6562
6450
  this.component = component;
6563
6451
  this.navigationSession = navigationSession;
6564
6452
  this.isPrimaryComponent = isPrimaryComponent;
6565
- pectin.assert.notNil(component);
6566
6453
  }
6567
6454
  Object.defineProperty(PlaceComponentDeactivationHandler.prototype, "routerInteractionAdapter", {
6568
6455
  get: function () {
@@ -7730,7 +7617,7 @@
7730
7617
  { type: i1$1.UrlSerializer }
7731
7618
  ]; };
7732
7619
 
7733
- exports.PlaceRouter = /** @class */ (function (_super) {
7620
+ var PlaceRouter = /** @class */ (function (_super) {
7734
7621
  __extends(PlaceRouter, _super);
7735
7622
  function PlaceRouter(angularRouter, angularLocation, interactionService, urlService, placeHistory) {
7736
7623
  var _this = _super.call(this) || this;
@@ -7766,7 +7653,7 @@
7766
7653
  .pluck('name')
7767
7654
  .otherwise(idleStateName);
7768
7655
  pectin.DebugContext.tag(_this._activeVisits, 'PlaceRouter.activeVisits');
7769
- _this.state = chain(_this._activeVisits).reduce(function (visits) { return new PlaceRouter.State(visits); });
7656
+ _this.activeVisitsByPlaceDefinition = chain(_this._activeVisits).indexBy('placeDefinition');
7770
7657
  // TODO: make setup the callbacks in during module initiation to make this testable.
7771
7658
  angularRouter.events.subscribe(function (event) {
7772
7659
  // Routing event sequence
@@ -7830,6 +7717,9 @@
7830
7717
  PlaceRouter.prototype.getAuthenticationFailureRedirect = function (activatedRoute, state) {
7831
7718
  return this.redirections.onAuthenticationFailure(activatedRoute, state);
7832
7719
  };
7720
+ PlaceRouter.prototype.getAuthorisationFailureRedirect = function (activatedRoute, state) {
7721
+ return this.redirections.onAuthorisationFailure(activatedRoute, state);
7722
+ };
7833
7723
  Object.defineProperty(PlaceRouter.prototype, "navigationSession", {
7834
7724
  get: function () {
7835
7725
  return this.navigationSessionModel.value;
@@ -8065,34 +7955,19 @@
8065
7955
  };
8066
7956
  return PlaceRouter;
8067
7957
  }(pectin.GarbageCollector));
8068
- exports.PlaceRouter.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new exports.PlaceRouter(i0.ɵɵinject(i1$1.Router), i0.ɵɵinject(i2.Location), i0.ɵɵinject(exports.InteractionService), i0.ɵɵinject(UrlService), i0.ɵɵinject(exports.PlaceHistory)); }, token: exports.PlaceRouter, providedIn: "root" });
8069
- exports.PlaceRouter.decorators = [
7958
+ PlaceRouter.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlaceRouter_Factory() { return new PlaceRouter(i0.ɵɵinject(i1$1.Router), i0.ɵɵinject(i2.Location), i0.ɵɵinject(exports.InteractionService), i0.ɵɵinject(UrlService), i0.ɵɵinject(exports.PlaceHistory)); }, token: PlaceRouter, providedIn: "root" });
7959
+ PlaceRouter.decorators = [
8070
7960
  { type: i0.Injectable, args: [{
8071
7961
  providedIn: 'root'
8072
7962
  },] }
8073
7963
  ];
8074
- exports.PlaceRouter.ctorParameters = function () { return [
7964
+ PlaceRouter.ctorParameters = function () { return [
8075
7965
  { type: i1$1.Router },
8076
7966
  { type: i2.Location },
8077
7967
  { type: exports.InteractionService },
8078
7968
  { type: UrlService },
8079
7969
  { type: exports.PlaceHistory }
8080
7970
  ]; };
8081
- (function (PlaceRouter) {
8082
- var State = /** @class */ (function () {
8083
- function State(activeVisits) {
8084
- this.activeVisits = activeVisits;
8085
- }
8086
- State.prototype.isPlaceActive = function (placeDefinition) {
8087
- return !!this.getVisitFor(placeDefinition);
8088
- };
8089
- State.prototype.getVisitFor = function (placeDefinition) {
8090
- return this.activeVisits.find(function (v) { return v.placeDefinition === placeDefinition; });
8091
- };
8092
- return State;
8093
- }());
8094
- PlaceRouter.State = State;
8095
- })(exports.PlaceRouter || (exports.PlaceRouter = {}));
8096
7971
 
8097
7972
  var Visit = /** @class */ (function () {
8098
7973
  function Visit(placeDefinition, visitParameters) {
@@ -8165,20 +8040,6 @@
8165
8040
 
8166
8041
  var AUP_PLACE_CONFIG = new i0.InjectionToken('AUP_PLACE_CONFIG');
8167
8042
 
8168
- var NotAuthorisedNoticeComponent = /** @class */ (function () {
8169
- function NotAuthorisedNoticeComponent() {
8170
- }
8171
- return NotAuthorisedNoticeComponent;
8172
- }());
8173
- NotAuthorisedNoticeComponent.decorators = [
8174
- { type: i0.Component, args: [{
8175
- selector: 'aup-not-authorised-notice',
8176
- template: "<p>You are not authorised to access this page</p>\n",
8177
- styles: [":host{display:flex;flex-direction:column;align-items:center;justify-content:center}"]
8178
- },] }
8179
- ];
8180
- NotAuthorisedNoticeComponent.ctorParameters = function () { return []; };
8181
-
8182
8043
  // Freezes the state of the components at the start of the animation.
8183
8044
  var animationStartStyle = animations$1.style({ position: 'absolute', top: '0', left: '0', bottom: '0', right: '0' });
8184
8045
  var left = [
@@ -8223,15 +8084,13 @@
8223
8084
  }
8224
8085
  var LEFT_RIGHT_PLACE_ANIMATION = leftRightPlaceAnimation('0.3s');
8225
8086
 
8226
- var AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT = new i0.InjectionToken('AUP_UNAUTHORISED_PLACE_COMPONENT');
8227
8087
  var PlaceOutletComponent = /** @class */ (function (_super) {
8228
8088
  __extends(PlaceOutletComponent, _super);
8229
- function PlaceOutletComponent(router, placeRouter, placeConfig, unauthorisedPlaceNotice, parentOutlet, cdr) {
8089
+ function PlaceOutletComponent(router, placeRouter, placeConfig, parentOutlet) {
8230
8090
  var _this = _super.call(this) || this;
8231
8091
  _this.router = router;
8232
8092
  _this.placeRouter = placeRouter;
8233
8093
  _this.placeConfig = placeConfig;
8234
- _this.cdr = cdr;
8235
8094
  _this.placeChanged = new i0.EventEmitter();
8236
8095
  _this.outletActivated = new pectin.MutableValueModel(false);
8237
8096
  _this._activatedRouteModel = new pectin.MutableValueModel();
@@ -8264,7 +8123,7 @@
8264
8123
  _this.animationEnabled = valueOf.all(_this.animateModel, _this.animationSupported).areTruthy();
8265
8124
  // Extract our visit model from the place router.
8266
8125
  _this._activePlaceDefinition = chain(_this._activePlaceModel).pluck('placeDefinition');
8267
- _this.routerVisitModel = chain(placeRouter.state).map(function (state) { return state.getVisitFor(_this._activePlaceDefinition.value); }, { dependsOn: _this._activePlaceDefinition });
8126
+ _this.routerVisitModel = _this._activePlaceDefinition.findIn(chain(placeRouter.activeVisitsByPlaceDefinition));
8268
8127
  _this.navigationInProgress = chain(_this.placeRouter.navigationInProgress);
8269
8128
  when(_this.navigationInProgress).becomesFalsey(function () {
8270
8129
  _this.checkStateAndInitialise();
@@ -8275,11 +8134,13 @@
8275
8134
  chain(_this._activePlaceModel)
8276
8135
  .postponeWhile(_this.navigationInProgress)
8277
8136
  .subscribe(function (place) { return _this.placeChanged.emit(place); });
8278
- _this.authorised = chain(placeRouter.accessGuard).map(function (guard) { return guard.isAuthorised(_this._activePlaceDefinition.value); }, {
8279
- dependsOn: _this._activePlaceDefinition,
8280
- postponeWhile: chain(_this._activePlaceDefinition).isNil()
8281
- }).otherwise(true); // if we don't have a place def yet we need to show the outlet so we get one injected.
8282
- _this.notAuthorisedNoticePortal = new portal.ComponentPortal(unauthorisedPlaceNotice !== null && unauthorisedPlaceNotice !== void 0 ? unauthorisedPlaceNotice : NotAuthorisedNoticeComponent);
8137
+ when(placeRouter.accessGuard).changes(function (guard) {
8138
+ var activePlace = _this._activePlaceModel.value;
8139
+ if (activePlace && !guard.isAuthorised(activePlace.placeDefinition)) {
8140
+ var visit = placeRouter.getAuthorisationFailureRedirect(_this._activatedRouteModel.value.snapshot, _this.router.routerState.snapshot);
8141
+ _this.placeRouter.navigate(visit);
8142
+ }
8143
+ });
8283
8144
  return _this;
8284
8145
  }
8285
8146
  // @Trace()
@@ -8296,13 +8157,6 @@
8296
8157
  enumerable: false,
8297
8158
  configurable: true
8298
8159
  });
8299
- Object.defineProperty(PlaceOutletComponent.prototype, "isAuthorised", {
8300
- get: function () {
8301
- return this.authorised.value;
8302
- },
8303
- enumerable: false,
8304
- configurable: true
8305
- });
8306
8160
  // @Trace()
8307
8161
  PlaceOutletComponent.prototype.navigate = function (visit) {
8308
8162
  // const place = this.placesInAnimationOrder.query().findMatching(p => visit.placeDefinition.component === p);
@@ -8369,7 +8223,6 @@
8369
8223
  pectin.lang.illegalState('wrong visit!!!');
8370
8224
  }
8371
8225
  this.initialisePlace(routerVisit, activePlace);
8372
- this.cdr.detectChanges();
8373
8226
  }
8374
8227
  };
8375
8228
  PlaceOutletComponent.prototype.initialisePlace = function (routerVisit, activePlace) {
@@ -8423,18 +8276,16 @@
8423
8276
  PlaceOutletComponent.decorators = [
8424
8277
  { type: i0.Component, args: [{
8425
8278
  selector: 'aup-place-outlet',
8426
- template: "<ng-container *ngIf=\"animationEnabled.value\">\n <div class=\"router-outlet-container\"\n 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\"\n cdkScrollable>\n <router-outlet #routerOutlet=\"outlet\"\n (activate)=\"onOutletActivated(routerOutlet, $event)\"\n (deactivate)=\"onOutletDeactivated()\">\n </router-outlet>\n </div>\n</ng-container>\n\n<div class=\"not-authorised-component-container\" *ngIf=\"!authorised.value\">\n <ng-template [cdkPortalOutlet]=\"notAuthorisedNoticePortal\"></ng-template>\n</div>\n",
8279
+ 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",
8427
8280
  animations: [LEFT_RIGHT_PLACE_ANIMATION],
8428
- styles: [":host{display:flex;flex-direction:column;min-height:0}:host:not(.authorised) .router-outlet-container{display:none}.router-outlet-container{flex:1;display:block;position:relative;min-height:0;overflow-x:hidden;overflow-y:scroll}router-outlet{display:none}.not-authorised-component-container{flex:1;display:grid;grid-template-columns:1fr;grid-template-rows:1fr}"]
8281
+ 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}"]
8429
8282
  },] }
8430
8283
  ];
8431
8284
  PlaceOutletComponent.ctorParameters = function () { return [
8432
8285
  { type: i1$1.Router },
8433
- { type: exports.PlaceRouter },
8286
+ { type: PlaceRouter },
8434
8287
  { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [AUP_PLACE_CONFIG,] }] },
8435
- { type: undefined, decorators: [{ type: i0.Optional }, { type: i0.Inject, args: [AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT,] }] },
8436
- { type: PlaceOutletComponent, decorators: [{ type: i0.SkipSelf }, { type: i0.Optional }] },
8437
- { type: i0.ChangeDetectorRef }
8288
+ { type: PlaceOutletComponent, decorators: [{ type: i0.SkipSelf }, { type: i0.Optional }] }
8438
8289
  ]; };
8439
8290
  PlaceOutletComponent.propDecorators = {
8440
8291
  animate: [{ type: i0.Input }],
@@ -8442,8 +8293,7 @@
8442
8293
  customPlaceAnimationOrderModel: [{ type: i0.Input, args: ['placeAnimationOrderModel',] }],
8443
8294
  customPlaceAnimationOrder: [{ type: i0.Input, args: ['placeAnimationOrder',] }],
8444
8295
  placeChanged: [{ type: i0.Output }],
8445
- routerOut: [{ type: i0.ViewChild, args: ['routeOutlet', { static: true },] }],
8446
- isAuthorised: [{ type: i0.HostBinding, args: ["class.authorised",] }]
8296
+ routerOut: [{ type: i0.ViewChild, args: ['routeOutlet', { static: true },] }]
8447
8297
  };
8448
8298
  __decorate([
8449
8299
  pectin.StoreInValueModel('animateModel'),
@@ -8468,38 +8318,25 @@
8468
8318
  var _this = _super.call(this) || this;
8469
8319
  _this.placeRouter = placeRouter;
8470
8320
  _this._activePlaceComponent = new pectin.DelegatingValueModel();
8471
- _this.trackByPlaceDef = function (data) { return data.place; };
8472
8321
  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;
8473
8322
  _this.placeDefinitions = chain(_this.placesModel)
8474
8323
  .map(function (c) { return exports.PlaceComponent.getDefinition(c); })
8475
8324
  .select(function (d) {
8476
8325
  var guard = placeRouter.accessGuard.value;
8477
- var state = placeRouter.state.value;
8478
- return guard.isAuthorised(d) || state.isPlaceActive(d);
8479
- }, { dependsOn: [placeRouter.accessGuard, placeRouter.state] });
8326
+ return guard.isAuthorised(d);
8327
+ }, { dependsOn: placeRouter.accessGuard });
8480
8328
  _this.commandFactory = pectin.Command.createFactory(function (placeDefinition) {
8481
8329
  _this.placeOutlet.navigate(new Visit(placeDefinition));
8482
8330
  });
8483
- when(_this.placeOutletModel).changes(function (outlet) { return _this.handlePlaceOutLetChanged(outlet); }, { initialValue: "triggerChange" });
8484
- _this.activePlaceDefinition = chain(_this._activePlaceComponent).pluck('placeDefinition');
8485
- _this.menuItems = chain(_this.placeDefinitions).map(function (d) {
8486
- return {
8487
- place: d,
8488
- active: _this.activePlaceDefinition.value === d
8489
- };
8490
- }, {
8491
- dependsOn: _this.activePlaceDefinition
8331
+ when(_this.placeOutletModel).changes(function (outlet) {
8332
+ // NOTE: this updates during a change cycle and causes our isActiveMethod to return 2 different
8333
+ // values in the one change detection cycle. So instead we delay the update to a different
8334
+ // tick.
8335
+ setTimeout(function () { return _this._activePlaceComponent.setDelegate(outlet ? outlet.activePlaceModel : null); });
8492
8336
  });
8337
+ _this.activePlaceDefinition = chain(_this._activePlaceComponent).pluck('placeDefinition');
8493
8338
  return _this;
8494
- // const txo = new TransactionObserver({ verbose: true }).onEvent(e => console.log(e.name, e.payload));
8495
- // txo.observe('this.placesModel', this.placesModel);
8496
- // txo.observe('this.placeDefinitions', this.placeDefinitions);
8497
- // txo.observe('this.activePlaceDefinition', this.activePlaceDefinition);
8498
- // txo.observe('this.menuItems', this.menuItems);
8499
8339
  }
8500
- AbstractPlaceNavigationComponent.prototype.handlePlaceOutLetChanged = function (outlet) {
8501
- this._activePlaceComponent.setDelegate(outlet ? outlet.activePlaceModel : null);
8502
- };
8503
8340
  AbstractPlaceNavigationComponent.prototype.getNavigationFace = function (placeDef) {
8504
8341
  var navItem = placeDef.getPlaceData('nav');
8505
8342
  return {
@@ -8508,6 +8345,9 @@
8508
8345
  icon: function () { return navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null); }
8509
8346
  };
8510
8347
  };
8348
+ AbstractPlaceNavigationComponent.prototype.isActive = function (place) {
8349
+ return this.activePlaceDefinition.query().equals(place);
8350
+ };
8511
8351
  AbstractPlaceNavigationComponent.prototype.ngOnInit = function () {
8512
8352
  };
8513
8353
  return AbstractPlaceNavigationComponent;
@@ -8518,7 +8358,7 @@
8518
8358
  },] }
8519
8359
  ];
8520
8360
  AbstractPlaceNavigationComponent.ctorParameters = function () { return [
8521
- { type: exports.PlaceRouter }
8361
+ { type: PlaceRouter }
8522
8362
  ]; };
8523
8363
  AbstractPlaceNavigationComponent.propDecorators = {
8524
8364
  places: [{ type: i0.Input }],
@@ -8559,12 +8399,12 @@
8559
8399
  ListPlaceNavComponent.decorators = [
8560
8400
  { type: i0.Component, args: [{
8561
8401
  selector: 'aup-list-place-nav',
8562
- template: "<mat-nav-list fxFlex>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n",
8402
+ 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]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(placeDefinition)]\"></aup-command-face>\n </a>\n</mat-nav-list>\n",
8563
8403
  styles: [":host{display:flex;flex-direction:column;--selected-border-color:#838383;--selected-color:inherit;--selected-background:#f1f1f1}mat-nav-list{padding-top:0}a{border-right:2px solid transparent}a.active{border-right:2px solid var(--selected-border-color);background:var(--selected-background);color:var(--selected-color)}"]
8564
8404
  },] }
8565
8405
  ];
8566
8406
  ListPlaceNavComponent.ctorParameters = function () { return [
8567
- { type: exports.PlaceRouter }
8407
+ { type: PlaceRouter }
8568
8408
  ]; };
8569
8409
 
8570
8410
  /**
@@ -8630,12 +8470,12 @@
8630
8470
  SidePlaceNavigationComponent.decorators = [
8631
8471
  { type: i0.Component, args: [{
8632
8472
  selector: 'aup-side-place-navigation',
8633
- template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <aup-icon class=\"collapsed-only\" icon=\"mat:menu\"></aup-icon>\n <aup-icon class=\"expanded-only\" icon=\"mat:arrow_back\"></aup-icon>\n <span class=\"expanded-only\">Menu</span>\n </a>\n <a mat-list-item *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [class.active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-icon *ngIf=\"getNavigationFace(item.place).icon()\" [icon]=\"getNavigationFace(item.place).icon()\"></aup-icon>\n <span class=\"expanded-only\">{{getNavigationFace(item.place).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n",
8473
+ template: "<mat-nav-list>\n <a mat-list-item (click)=\"toggleMenu()\" class=\"home\">\n <aup-icon class=\"collapsed-only\" icon=\"mat:menu\"></aup-icon>\n <aup-icon class=\"expanded-only\" icon=\"mat:arrow_back\"></aup-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]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-icon *ngIf=\"getNavigationFace(placeDefinition).icon()\" [icon]=\"getNavigationFace(placeDefinition).icon()\"></aup-icon>\n <span class=\"expanded-only\">{{getNavigationFace(placeDefinition).text()}}</span>\n </a>\n <span [style.flex]=\"1\"></span>\n <ng-container *ngIf=\"navEndTemplate\" [ngTemplateOutlet]=\"navEndTemplate\"></ng-container>\n</mat-nav-list>\n",
8634
8474
  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,hsla(0,0%,100%,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 aup-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)}"]
8635
8475
  },] }
8636
8476
  ];
8637
8477
  SidePlaceNavigationComponent.ctorParameters = function () { return [
8638
- { type: exports.PlaceRouter }
8478
+ { type: PlaceRouter }
8639
8479
  ]; };
8640
8480
  SidePlaceNavigationComponent.propDecorators = {
8641
8481
  expanded: [{ type: i0.HostBinding, args: ['class.expanded',] }],
@@ -8652,12 +8492,12 @@
8652
8492
  TabbedPlaceNavigationComponent.decorators = [
8653
8493
  { type: i0.Component, args: [{
8654
8494
  selector: 'aup-tabbed-place-navigation',
8655
- template: "<nav mat-tab-nav-bar>\n <a mat-tab-link *ngFor=\"let item of menuItems.value; trackBy: trackByPlaceDef\"\n [pectinCommand]=\"commandFactory.create(item.place)\"\n [active]=\"item.active\"\n [matTooltip]=\"getNavigationFace(item.place).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(item.place)]\"></aup-command-face>\n </a>\n</nav>\n",
8495
+ template: "<nav mat-tab-nav-bar>\n <a mat-tab-link *ngFor=\"let placeDefinition of placeDefinitions.value\"\n [pectinCommand]=\"commandFactory.create(placeDefinition)\"\n [active]=\"isActive(placeDefinition)\"\n [matTooltip]=\"getNavigationFace(placeDefinition).tooltip()\">\n <aup-command-face [faces]=\"[getNavigationFace(placeDefinition)]\"></aup-command-face>\n </a>\n</nav>\n",
8656
8496
  styles: [""]
8657
8497
  },] }
8658
8498
  ];
8659
8499
  TabbedPlaceNavigationComponent.ctorParameters = function () { return [
8660
- { type: exports.PlaceRouter }
8500
+ { type: PlaceRouter }
8661
8501
  ]; };
8662
8502
 
8663
8503
  var PlaceModule = /** @class */ (function () {
@@ -8678,16 +8518,14 @@
8678
8518
  icon.MatIconModule,
8679
8519
  DirectivesModule,
8680
8520
  flexLayout.FlexModule,
8681
- ComponentsModule,
8682
- portal.PortalModule
8521
+ ComponentsModule
8683
8522
  ],
8684
8523
  declarations: [
8685
8524
  PlaceOutletComponent,
8686
8525
  TabbedPlaceNavigationComponent,
8687
8526
  ListPlaceNavComponent,
8688
8527
  SidePlaceNavigationComponent,
8689
- AbstractPlaceNavigationComponent,
8690
- NotAuthorisedNoticeComponent
8528
+ AbstractPlaceNavigationComponent
8691
8529
  ],
8692
8530
  entryComponents: [],
8693
8531
  exports: [
@@ -9019,7 +8857,7 @@
9019
8857
  // @Trace()
9020
8858
  PlaceGuard.prototype.canActivate = function (activatedRoute, state) {
9021
8859
  return __awaiter(this, void 0, void 0, function () {
9022
- var placeDefinition_1, redirectLocation, nextPlaceDef, result;
8860
+ var placeDefinition_1, redirectLocation, nextPlaceDef, redirectLocation, nextPlaceDef, result;
9023
8861
  var _this = this;
9024
8862
  return __generator(this, function (_a) {
9025
8863
  switch (_a.label) {
@@ -9037,6 +8875,14 @@
9037
8875
  }
9038
8876
  return [2 /*return*/, this.createUrlTree(redirectLocation)];
9039
8877
  }
8878
+ if (!(this.placeRouter.accessGuard.value ? this.placeRouter.accessGuard.value.isAuthorised(placeDefinition_1) : true)) {
8879
+ redirectLocation = this.placeRouter.getAuthorisationFailureRedirect(activatedRoute, state);
8880
+ nextPlaceDef = this.getPlaceDefinition(redirectLocation);
8881
+ if (!(this.placeRouter.accessGuard.value ? this.placeRouter.accessGuard.value.isAuthorised(nextPlaceDef) : true)) {
8882
+ pectin.lang.illegalState("handleNotAuthorised hook returned place " + nextPlaceDef.component.name + " that is not authorised for the current user.");
8883
+ }
8884
+ return [2 /*return*/, this.createUrlTree(redirectLocation)];
8885
+ }
9040
8886
  _a.label = 2;
9041
8887
  case 2: return [4 /*yield*/, this.cleanInteractionState(activatedRoute, state, function () { return __awaiter(_this, void 0, void 0, function () {
9042
8888
  var params, parsedParams, navigationSession, initialVisit, sanitiser, sanitisedVisit, urlSnapshot;
@@ -9080,11 +8926,6 @@
9080
8926
  return __generator(this, function (_a) {
9081
8927
  switch (_a.label) {
9082
8928
  case 0:
9083
- if (!component) {
9084
- // this happens when the place wasn't authorised and the associated
9085
- // router outlet was removed from the dom.
9086
- return [2 /*return*/, true];
9087
- }
9088
8929
  currentUrl = this.urlService.parseUrl(currentState.url);
9089
8930
  nextUrl = this.urlService.parseUrl(nextState.url);
9090
8931
  return [4 /*yield*/, this.placeRouter.navigationSession.canDeactivatePlace(component, currentUrl, nextUrl)];
@@ -9145,14 +8986,14 @@
9145
8986
  };
9146
8987
  return PlaceGuard;
9147
8988
  }());
9148
- PlaceGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlaceGuard_Factory() { return new PlaceGuard(i0.ɵɵinject(i1$1.Router), i0.ɵɵinject(UrlService), i0.ɵɵinject(exports.PlaceRouter), i0.ɵɵinject(exports.PlaceHistory), i0.ɵɵinject(exports.InteractionService), i0.ɵɵinject(i0.INJECTOR)); }, token: PlaceGuard, providedIn: "root" });
8989
+ PlaceGuard.ɵprov = i0.ɵɵdefineInjectable({ factory: function PlaceGuard_Factory() { return new PlaceGuard(i0.ɵɵinject(i1$1.Router), i0.ɵɵinject(UrlService), i0.ɵɵinject(PlaceRouter), i0.ɵɵinject(exports.PlaceHistory), i0.ɵɵinject(exports.InteractionService), i0.ɵɵinject(i0.INJECTOR)); }, token: PlaceGuard, providedIn: "root" });
9149
8990
  PlaceGuard.decorators = [
9150
8991
  { type: i0.Injectable, args: [{ providedIn: 'root' },] }
9151
8992
  ];
9152
8993
  PlaceGuard.ctorParameters = function () { return [
9153
8994
  { type: i1$1.Router },
9154
8995
  { type: UrlService },
9155
- { type: exports.PlaceRouter },
8996
+ { type: PlaceRouter },
9156
8997
  { type: exports.PlaceHistory },
9157
8998
  { type: exports.InteractionService },
9158
8999
  { type: i0.Injector }
@@ -9268,7 +9109,6 @@
9268
9109
 
9269
9110
  exports.ACTIVITY_DATA = ACTIVITY_DATA;
9270
9111
  exports.AUP_PLACE_CONFIG = AUP_PLACE_CONFIG;
9271
- exports.AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT = AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT;
9272
9112
  exports.AbstractInputActivity = AbstractInputActivity;
9273
9113
  exports.AbstractInputComponent = AbstractInputComponent;
9274
9114
  exports.AbstractInteractionContext = AbstractInteractionContext;
@@ -9331,8 +9171,6 @@
9331
9171
  exports.FocusContainerComponent = FocusContainerComponent;
9332
9172
  exports.FocusableComponent = FocusableComponent;
9333
9173
  exports.HEADER_CELL_RENDERER_PORTAL = HEADER_CELL_RENDERER_PORTAL;
9334
- exports.HighlightPipe = HighlightPipe;
9335
- exports.HighlightTextModelDirective = HighlightTextModelDirective;
9336
9174
  exports.InPlaceInteractionContextComponent = InPlaceInteractionContextComponent;
9337
9175
  exports.InteractionContextTriggerFor = InteractionContextTriggerFor;
9338
9176
  exports.InteractionModule = InteractionModule;
@@ -9348,7 +9186,6 @@
9348
9186
  exports.NavigationSession = NavigationSession;
9349
9187
  exports.NoopAuthGuard = NoopAuthGuard;
9350
9188
  exports.NoopComponent = NoopComponent;
9351
- exports.NotAuthorisedNoticeComponent = NotAuthorisedNoticeComponent;
9352
9189
  exports.NumberInputComponent = NumberInputComponent;
9353
9190
  exports.POPUP_CONTAINER = POPUP_CONTAINER;
9354
9191
  exports.PORTAL_EDITOR_COMPONENT = PORTAL_EDITOR_COMPONENT;
@@ -9361,6 +9198,7 @@
9361
9198
  exports.PlaceGuard = PlaceGuard;
9362
9199
  exports.PlaceModule = PlaceModule;
9363
9200
  exports.PlaceOutletComponent = PlaceOutletComponent;
9201
+ exports.PlaceRouter = PlaceRouter;
9364
9202
  exports.Point = Point;
9365
9203
  exports.PopStateDuringInteractionNavigation = PopStateDuringInteractionNavigation;
9366
9204
  exports.PopStateNavigation = PopStateNavigation;