@coolon/angular-ui-powerups 3.5.0 → 3.5.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 (82) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bundles/coolon-angular-ui-powerups-cypress.umd.js.map +1 -1
  3. package/bundles/coolon-angular-ui-powerups-cypress.umd.min.js.map +1 -1
  4. package/bundles/coolon-angular-ui-powerups.umd.js +98 -103
  5. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  6. package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
  7. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  8. package/coolon-angular-ui-powerups.d.ts +1 -1
  9. package/coolon-angular-ui-powerups.metadata.json +1 -1
  10. package/cypress/components/aup-tool-bar.d.ts +2 -2
  11. package/cypress/package.json +1 -1
  12. package/esm2015/coolon-angular-ui-powerups.js +1 -1
  13. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  14. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  15. package/esm2015/cypress/components/aup-tool-bar.js.map +1 -1
  16. package/esm2015/cypress/components/aup-tool-bar.metadata.json +1 -1
  17. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  18. package/esm2015/lib/components/card-container/card-container.component.js.map +1 -1
  19. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  20. package/esm2015/lib/components/commands/command/command.component.js +14 -8
  21. package/esm2015/lib/components/commands/command/command.component.js.map +1 -1
  22. package/esm2015/lib/components/commands/command/command.component.metadata.json +1 -1
  23. package/esm2015/lib/components/commands/command-face/command-face.component.js +20 -29
  24. package/esm2015/lib/components/commands/command-face/command-face.component.js.map +1 -1
  25. package/esm2015/lib/components/commands/command-face/command-face.component.metadata.json +1 -1
  26. package/esm2015/lib/components/commands/group/command-group/command-group.component.js +4 -2
  27. package/esm2015/lib/components/commands/group/command-group/command-group.component.js.map +1 -1
  28. package/esm2015/lib/components/commands/group/command-group/command-group.component.metadata.json +1 -1
  29. package/esm2015/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.js +1 -1
  30. package/esm2015/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.js.map +1 -1
  31. package/esm2015/lib/components/commands/group/command-group-menu-renderer/command-group-menu-renderer.component.metadata.json +1 -1
  32. package/esm2015/lib/components/commands/group/command-group-renderer/command-group-renderer.component.js +3 -2
  33. package/esm2015/lib/components/commands/group/command-group-renderer/command-group-renderer.component.js.map +1 -1
  34. package/esm2015/lib/components/commands/group/command-group-renderer/command-group-renderer.component.metadata.json +1 -1
  35. package/esm2015/lib/components/commands/group/command-group.js +10 -7
  36. package/esm2015/lib/components/commands/group/command-group.js.map +1 -1
  37. package/esm2015/lib/components/commands/group/more-menu.component.js +8 -6
  38. package/esm2015/lib/components/commands/group/more-menu.component.js.map +1 -1
  39. package/esm2015/lib/components/commands/group/popup-menu.component.js +1 -1
  40. package/esm2015/lib/components/commands/group/popup-menu.component.js.map +1 -1
  41. package/esm2015/lib/components/commands/group/registration.js +6 -6
  42. package/esm2015/lib/components/commands/group/registration.js.map +1 -1
  43. package/esm2015/lib/components/commands/group/view-data.js +24 -15
  44. package/esm2015/lib/components/commands/group/view-data.js.map +1 -1
  45. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  46. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js.map +1 -1
  47. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js +3 -1
  48. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js.map +1 -1
  49. package/esm2015/lib/interaction/components/input-activities/select-input-activity.metadata.json +1 -1
  50. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js +2 -1
  51. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js.map +1 -1
  52. package/esm2015/lib/interaction/components/input-activities/string-input-activity.metadata.json +1 -1
  53. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  54. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +1 -1
  55. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js.map +1 -1
  56. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.metadata.json +1 -1
  57. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +1 -1
  58. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js.map +1 -1
  59. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.metadata.json +1 -1
  60. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  61. package/esm2015/{public_api.js → public-api.js} +1 -1
  62. package/esm2015/{public_api.js.map → public-api.js.map} +1 -1
  63. package/fesm2015/coolon-angular-ui-powerups-cypress.js.map +1 -1
  64. package/fesm2015/coolon-angular-ui-powerups.js +96 -79
  65. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  66. package/lib/components/commands/command/command.component.d.ts +4 -2
  67. package/lib/components/commands/command-face/command-face.component.d.ts +9 -12
  68. package/lib/components/commands/group/command-group/command-group.component.d.ts +2 -1
  69. package/lib/components/commands/group/command-group.d.ts +5 -4
  70. package/lib/components/commands/group/registration.d.ts +5 -5
  71. package/lib/components/commands/group/view-data.d.ts +6 -5
  72. package/lib/interaction/components/input-activities/input-activity-data.d.ts +3 -1
  73. package/lib/place/navigation/place-component-deactivation-handler.d.ts +1 -1
  74. package/package.json +2 -3
  75. package/schematics/bootstrap-app/index.js +1 -1
  76. package/schematics/bootstrap-app/index.js.map +1 -1
  77. package/esm2015/index.js +0 -2
  78. package/esm2015/index.js.map +0 -1
  79. package/esm2015/index.metadata.json +0 -1
  80. package/index.d.ts +0 -1
  81. /package/esm2015/{public_api.metadata.json → public-api.metadata.json} +0 -0
  82. /package/{public_api.d.ts → public-api.d.ts} +0 -0
@@ -698,7 +698,7 @@
698
698
  CardContainerComponent.decorators = [
699
699
  { type: i0.Component, args: [{
700
700
  selector: 'aup-card-container',
701
- 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\" [face]=\"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",
701
+ 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",
702
702
  styles: [":root{--aup-default-background:#fff;--aup-default-padding:var(--default-padding,18px)}.router-outlet-container>*{bottom:0;left:0;position:absolute;right:0;top:0}[no-tab-header]>mat-tab-header{display:none}[full-height-tabs] .mat-tab-body-wrapper,mat-tab-group.full-height-tabs .mat-tab-body-wrapper{flex:1}[full-height-tabs] .mat-tab-body-wrapper .mat-tab-body-content,[full-height-tabs] .mat-tab-body-wrapper mat-tab-body,mat-tab-group.full-height-tabs .mat-tab-body-wrapper .mat-tab-body-content,mat-tab-group.full-height-tabs .mat-tab-body-wrapper mat-tab-body{display:flex;flex-direction:column;justify-content:stretch}.dialog-interaction-context,.dialog-interaction-context mat-dialog-container{max-height:95vh!important;max-width:95vw!important}.dialog-interaction-context mat-dialog-container{padding:0}.activity-outlet-wrapper{align-items:stretch;display:flex;flex-direction:column}.aup-popup-interaction-panel{background:var(--aup-default-background,#fff);box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.aup-input-activity{padding:calc(var(--aup-default-padding)/2)}.aup-input-component{display:block}.aup-input-component input,.aup-input-component mat-form-field{width:100%}.aup-input-component input mat-hint.faux-error,.aup-input-component mat-form-field mat-hint.faux-error{color:#f44336}.aup-input-component.dense mat-form-field .mat-form-field-infix{border-top:none}.aup-input-component.dense mat-form-field .mat-form-field-flex{padding-top:0}.aup-input-component.dense mat-form-field .mat-form-field-wrapper{border-bottom:0;padding-bottom:0}.aup-input-component.dense mat-form-field .mat-form-field-underline{bottom:0}.aup-input-component.dense mat-form-field.mat-form-field-can-float.mat-form-field-should-float .mat-form-field-label-wrapper{display:none}.aup-input-component.dense mat-form-field.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(0)}aup-table-cell-renderer>.aup-input-component .mat-form-field-flex{padding-top:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-infix{width:0}aup-table-cell-renderer>.aup-input-component .mat-form-field-label-wrapper{display:none}aup-table{--default-column-gap:var(--column-gap,24px);--resolved-row-hover-background-color:var(--row-hover-background-color,rgba(0,0,0,0.05))}aup-table .mat-table td.mat-cell:first-of-type,aup-table .mat-table td.mat-footer-cell:first-of-type,aup-table .mat-table th.mat-header-cell:first-of-type{padding-left:0}aup-table .mat-table tr.enable-hover:hover{background-color:var(--resolved-row-hover-background-color)}aup-table .mat-table td.enable-cursor{cursor:pointer}aup-table aup-table-cell-renderer,aup-table aup-table-header-cell-renderer{align-items:stretch;display:flex;flex-direction:column;height:100%;justify-content:center;min-height:47px}aup-table aup-table-cell-renderer.first-column,aup-table aup-table-cell-renderer:not(.first-column),aup-table aup-table-header-cell-renderer.first-column,aup-table aup-table-header-cell-renderer:not(.first-column){padding-left:var(--default-column-gap)}aup-table aup-table-cell-renderer.fillCell{justify-content:stretch;padding-left:0!important}aup-table aup-table-cell-renderer.padChild>:first-child{flex:1;padding-left:var(--default-column-gap)}:root{--aup-command-face-icon-gap:8px;--aup-fa-icon-width:18px;--aup-icon-width:24px}aup-icon{--fa-icon-offset:calc((var(--aup-icon-width) - var(--aup-fa-icon-width))/2);position:relative}aup-icon fa-icon .svg-inline--fa{height:var(--aup-fa-icon-width)!important;left:var(--fa-icon-offset);position:absolute;top:var(--fa-icon-offset);width:var(--aup-fa-icon-width)!important}.mat-menu-panel aup-icon .svg-inline--fa{opacity:.54}:host{--resolved-card-background:var(--card-background,#fcfcfb);--resolved-card-gap:var(--card-gap,16px);--resolved-card-height:var(--card-height,auto);--resolved-card-min-height:var(--card-min-height,auto);--resolved-card-width:var(--card-width,300px);background:var(--resolved-card-background);display:block;flex:1}.card-container{box-sizing:border-box;display:-ms-grid;display:grid;grid-gap:var(--resolved-card-gap);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)));max-width:100%;min-height:calc(var(--resolved-card-height) + 2*var(--resolved-card-gap));min-width:calc(var(--resolved-card-width) + 2*var(--resolved-card-gap));padding:var(--resolved-card-gap);width:calc((var(--resolved-card-width) + var(--resolved-card-gap))*2 + var(--grid-gap))}.add-card-container{align-items:center;background-color:hsla(0,0%,100%,.8);border:2px dashed rgba(0,0,0,.1);border-radius:6px;box-sizing:border-box;color:rgba(0,0,0,.54);cursor:pointer;display:flex;flex-direction:column;font-weight:300;height:var(--resolved-card-height);justify-content:center;min-height:var(--resolved-card-min-height);transition:all .28s cubic-bezier(.4,0,.2,1);width:var(--resolved-card-width)}.add-card-container mat-icon{font-size:200%}.add-card-container:hover{background-color:#fff;border-color:transparent;color:rgba(0,0,0,.54);transition:box-shadow .28s cubic-bezier(.4,0,.2,1);transition:all .28s cubic-bezier(.4,0,.2,1)}.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{align-items:stretch;display:flex;flex-direction:column;height:var(--resolved-card-height);justify-content:stretch;width:var(--resolved-card-width)}"]
703
703
  },] }
704
704
  ];
@@ -865,18 +865,31 @@
865
865
  (function (ViewData) {
866
866
  var FaceData = /** @class */ (function (_super) {
867
867
  __extends(FaceData, _super);
868
- function FaceData(face) {
868
+ function FaceData(faces) {
869
869
  var _this = _super.call(this) || this;
870
- _this.faceAdapter = new exports.CommandFace.Adapter(face);
870
+ _this.faces = faces;
871
+ pectin.assert.notNil(faces);
871
872
  return _this;
872
873
  }
874
+ Object.defineProperty(FaceData.prototype, "activeFaceAdapter", {
875
+ get: function () {
876
+ return new exports.CommandFace.Adapter(this.faces.length > 0 ? this.faces[0] : undefined);
877
+ },
878
+ enumerable: false,
879
+ configurable: true
880
+ });
873
881
  return FaceData;
874
882
  }(ViewData));
883
+ __decorate([
884
+ src.Memoize(),
885
+ __metadata("design:type", exports.CommandFace.Adapter),
886
+ __metadata("design:paramtypes", [])
887
+ ], FaceData.prototype, "activeFaceAdapter", null);
875
888
  ViewData.FaceData = FaceData;
876
889
  var GroupData = /** @class */ (function (_super) {
877
890
  __extends(GroupData, _super);
878
- function GroupData(face, xPosition, yPosition, children) {
879
- var _this = _super.call(this, face) || this;
891
+ function GroupData(faces, xPosition, yPosition, children) {
892
+ var _this = _super.call(this, faces) || this;
880
893
  _this.xPosition = xPosition;
881
894
  _this.yPosition = yPosition;
882
895
  _this.children = children;
@@ -885,7 +898,7 @@
885
898
  Object.defineProperty(GroupData.prototype, "hasMixedIcons", {
886
899
  get: function () {
887
900
  var hasFaces = this.children.filter(function (c) { return ViewData.hasFace(c); });
888
- var iconCount = hasFaces.filter(function (c) { return !!c.faceAdapter.icon; }).length;
901
+ var iconCount = hasFaces.filter(function (c) { return !!c.activeFaceAdapter.icon; }).length;
889
902
  return iconCount > 0 && hasFaces.length !== iconCount;
890
903
  },
891
904
  enumerable: false,
@@ -901,8 +914,8 @@
901
914
  ViewData.GroupData = GroupData;
902
915
  var CommandData = /** @class */ (function (_super) {
903
916
  __extends(CommandData, _super);
904
- function CommandData(face, command) {
905
- var _this = _super.call(this, face) || this;
917
+ function CommandData(command, faces) {
918
+ var _this = _super.call(this, faces) || this;
906
919
  _this.command = command;
907
920
  return _this;
908
921
  }
@@ -934,25 +947,25 @@
934
947
  }
935
948
  ViewData.getCommand = getCommand;
936
949
  function getTooltip(data) {
937
- return as(FaceData, data).faceAdapter.tooltip;
950
+ return as(FaceData, data).activeFaceAdapter.tooltip;
938
951
  }
939
952
  ViewData.getTooltip = getTooltip;
940
953
  function getStyle(data) {
941
- return as(FaceData, data).faceAdapter.style;
954
+ return as(FaceData, data).activeFaceAdapter.style;
942
955
  }
943
956
  ViewData.getStyle = getStyle;
944
957
  function getColor(data) {
945
- return as(FaceData, data).faceAdapter.color;
958
+ return as(FaceData, data).activeFaceAdapter.color;
946
959
  }
947
960
  ViewData.getColor = getColor;
948
961
  function hasText(data) {
949
- return !!as(FaceData, data).faceAdapter.text;
962
+ return !!as(FaceData, data).activeFaceAdapter.text;
950
963
  }
951
964
  ViewData.hasText = hasText;
952
- function getFace(data) {
953
- return as(FaceData, data).faceAdapter.face;
965
+ function getFaces(data) {
966
+ return as(FaceData, data).faces;
954
967
  }
955
- ViewData.getFace = getFace;
968
+ ViewData.getFaces = getFaces;
956
969
  function asGroup(viewData) {
957
970
  return as(GroupData, viewData);
958
971
  }
@@ -1009,7 +1022,7 @@
1009
1022
  CommandGroupMenuRendererComponent.decorators = [
1010
1023
  { type: i0.Component, args: [{
1011
1024
  selector: 'aup-command-group-menu',
1012
- template: "<mat-menu #menu [xPosition]=\"groupViewData.xPosition\" [yPosition]=\"groupViewData.yPosition\">\n <ng-container *ngFor=\"let data of children.value; trackBy: TrackBy.byIndex\" >\n <button *ngIf=\"ViewData.isCommand(data)\"\n [pectinCommand]=\"getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n mat-menu-item>\n <aup-command-face [face]=\"ViewData.getFace(data)\"\n [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n\n <ng-container *ngIf=\"ViewData.isGroup(data)\">\n <button mat-menu-item\n #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"innerPanel.menuComponent\"\n >\n <aup-command-face [face]=\"ViewData.getFace(data)\"\n [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n <aup-command-group-menu #innerPanel\n [groupViewData]=\"ViewData.asGroup(data)\"\n (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <mat-divider *ngIf=\"ViewData.isSeparator(data)\"></mat-divider>\n\n </ng-container>\n</mat-menu>\n"
1025
+ template: "<mat-menu #menu [xPosition]=\"groupViewData.xPosition\" [yPosition]=\"groupViewData.yPosition\">\n <ng-container *ngFor=\"let data of children.value; trackBy: TrackBy.byIndex\" >\n <button *ngIf=\"ViewData.isCommand(data)\"\n [pectinCommand]=\"getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n mat-menu-item>\n <aup-command-face [faces]=\"ViewData.getFaces(data)\"\n [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n\n <ng-container *ngIf=\"ViewData.isGroup(data)\">\n <button mat-menu-item\n #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"innerPanel.menuComponent\"\n >\n <aup-command-face [faces]=\"ViewData.getFaces(data)\"\n [includeMissingIconInLayout]=\"hasMixedIcons.value\"></aup-command-face>\n </button>\n <aup-command-group-menu #innerPanel\n [groupViewData]=\"ViewData.asGroup(data)\"\n (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <mat-divider *ngIf=\"ViewData.isSeparator(data)\"></mat-divider>\n\n </ng-container>\n</mat-menu>\n"
1013
1026
  },] }
1014
1027
  ];
1015
1028
  CommandGroupMenuRendererComponent.ctorParameters = function () { return [
@@ -1034,7 +1047,8 @@
1034
1047
  _this.ViewData = exports.ViewData;
1035
1048
  _this.TrackBy = exports.TrackBy;
1036
1049
  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;
1037
- _this.childViewDataModels = chain(_this.groupViewDataModel).pluckList('children');
1050
+ _this.childViewDataModels = chain(_this.groupViewDataModel)
1051
+ .pluckList('children');
1038
1052
  return _this;
1039
1053
  }
1040
1054
  return CommandGroupRendererComponent;
@@ -1042,7 +1056,7 @@
1042
1056
  CommandGroupRendererComponent.decorators = [
1043
1057
  { type: i0.Component, args: [{
1044
1058
  selector: 'aup-command-group-renderer',
1045
- template: "<ng-template #groupTemplate let-group>\n\n <ng-container *ngIf=\"ViewData.hasText(group)\" [ngSwitch]=\"ViewData.getStyle(group)\">\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-stroked-button>\n <aup-command-face [face]=\"ViewData.getFace(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'raised'\">\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-raised-button>\n <aup-command-face [face]=\"ViewData.getFace(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-button>\n <aup-command-face [face]=\"ViewData.getFace(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"!ViewData.hasText(group)\">\n <button #trigger=\"matMenuTrigger\"\n mat-icon-button\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n >\n <aup-command-face [face]=\"ViewData.getFace(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #commandTemplate let-data>\n\n <ng-container *ngIf=\"ViewData.hasText(data)\" [ngSwitch]=\"ViewData.getStyle(data)\">\n <button *ngSwitchCase=\"'raised'\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-raised-button>\n <aup-command-face [face]=\"ViewData.getFace(data)\"></aup-command-face>\n </button>\n <button *ngSwitchCase=\"'stroked'\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-stroked-button>\n <aup-command-face [face]=\"ViewData.getFace(data)\"></aup-command-face>\n </button>\n <button *ngSwitchDefault\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-button>\n <aup-command-face [face]=\"ViewData.getFace(data)\"></aup-command-face>\n </button>\n </ng-container>\n\n <button *ngIf=\"!ViewData.hasText(data)\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-icon-button>\n <aup-command-face [face]=\"ViewData.getFace(data)\"></aup-command-face>\n </button>\n\n</ng-template>\n\n\n<ng-template *ngIf=\"renderRootNode\"\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: groupViewDataModel.value }\">\n</ng-template>\n\n<ng-container *ngIf=\"!renderRootNode\">\n <ng-container *ngFor=\"let data of this.childViewDataModels.value; trackBy: TrackBy.byIndex\">\n <ng-template *ngIf=\"ViewData.isGroup(data)\"\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data }\">\n </ng-template>\n <ng-template *ngIf=\"ViewData.isCommand(data)\"\n [ngTemplateOutlet]=\"commandTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data }\">\n </ng-template>\n\n <mat-divider *ngIf=\"ViewData.isSeparator(data)\" [vertical]=\"true\"></mat-divider>\n </ng-container>\n\n</ng-container>\n",
1059
+ template: "<ng-template #groupTemplate let-group>\n\n <ng-container *ngIf=\"ViewData.hasText(group)\" [ngSwitch]=\"ViewData.getStyle(group)\">\n <ng-container *ngSwitchCase=\"'stroked'\">\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-stroked-button>\n <aup-command-face [faces]=\"ViewData.getFaces(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'raised'\">\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-raised-button>\n <aup-command-face [faces]=\"ViewData.getFaces(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <button #trigger=\"matMenuTrigger\"\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n mat-button>\n <aup-command-face [faces]=\"ViewData.getFaces(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n </ng-container>\n\n <ng-container *ngIf=\"!ViewData.hasText(group)\">\n <button #trigger=\"matMenuTrigger\"\n mat-icon-button\n [matMenuTriggerFor]=\"subMenu.menuComponent\"\n\n [matTooltip]=\"ViewData.getTooltip(group)\"\n [color]=\"ViewData.getColor(group)\"\n >\n <aup-command-face [faces]=\"ViewData.getFaces(group)\"></aup-command-face>\n </button>\n <aup-command-group-menu #subMenu [groupViewData]=\"group\" (commandFired)=\"trigger.closeMenu()\"></aup-command-group-menu>\n </ng-container>\n\n</ng-template>\n\n\n<ng-template #commandTemplate let-data>\n\n <ng-container *ngIf=\"ViewData.hasText(data)\" [ngSwitch]=\"ViewData.getStyle(data)\">\n <button *ngSwitchCase=\"'raised'\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-raised-button>\n <aup-command-face [faces]=\"ViewData.getFaces(data)\"></aup-command-face>\n </button>\n <button *ngSwitchCase=\"'stroked'\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-stroked-button>\n <aup-command-face [faces]=\"ViewData.getFaces(data)\"></aup-command-face>\n </button>\n <button *ngSwitchDefault\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-button>\n <aup-command-face [faces]=\"ViewData.getFaces(data)\"></aup-command-face>\n </button>\n </ng-container>\n\n <button *ngIf=\"!ViewData.hasText(data)\"\n [pectinCommand]=\"ViewData.getCommand(data)\"\n [matTooltip]=\"ViewData.getTooltip(data)\"\n [color]=\"ViewData.getColor(data)\"\n mat-icon-button>\n <aup-command-face [faces]=\"ViewData.getFaces(data)\"></aup-command-face>\n </button>\n\n</ng-template>\n\n\n<ng-template *ngIf=\"renderRootNode\"\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: groupViewDataModel.value }\">\n</ng-template>\n\n<ng-container *ngIf=\"!renderRootNode\">\n <ng-container *ngFor=\"let data of this.childViewDataModels.value; trackBy: TrackBy.byIndex\">\n <ng-template *ngIf=\"ViewData.isGroup(data)\"\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data }\">\n </ng-template>\n <ng-template *ngIf=\"ViewData.isCommand(data)\"\n [ngTemplateOutlet]=\"commandTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: data }\">\n </ng-template>\n\n <mat-divider *ngIf=\"ViewData.isSeparator(data)\" [vertical]=\"true\"></mat-divider>\n </ng-container>\n\n</ng-container>\n",
1046
1060
  styles: [":host{align-items:center;display:inline-flex;flex-direction:row}:host:not(.render-root) mat-divider{-ms-grid-row-align:stretch;align-self:stretch;margin:4px 0}:host:not(.render-root)>*+*{margin-left:8px}:host span.flex{flex:1}"]
1047
1061
  },] }
1048
1062
  ];
@@ -1071,9 +1085,9 @@
1071
1085
  (function (Registration) {
1072
1086
  var FaceRegistration = /** @class */ (function (_super) {
1073
1087
  __extends(FaceRegistration, _super);
1074
- function FaceRegistration(faceModel) {
1088
+ function FaceRegistration(faceListModel) {
1075
1089
  var _this = _super.call(this) || this;
1076
- _this.faceModel = faceModel;
1090
+ _this.faceListModel = faceListModel;
1077
1091
  return _this;
1078
1092
  }
1079
1093
  return FaceRegistration;
@@ -1081,13 +1095,13 @@
1081
1095
  Registration.FaceRegistration = FaceRegistration;
1082
1096
  var CommandRegistration = /** @class */ (function (_super) {
1083
1097
  __extends(CommandRegistration, _super);
1084
- function CommandRegistration(faceModel, command) {
1085
- var _this = _super.call(this, faceModel) || this;
1098
+ function CommandRegistration(command, faceListModel) {
1099
+ var _this = _super.call(this, faceListModel) || this;
1086
1100
  _this.command = command;
1087
1101
  return _this;
1088
1102
  }
1089
1103
  CommandRegistration.prototype.toTemplate = function () {
1090
- return new exports.ViewData.CommandData(this.faceModel.value, this.command);
1104
+ return new exports.ViewData.CommandData(this.command, this.faceListModel.value);
1091
1105
  };
1092
1106
  return CommandRegistration;
1093
1107
  }(FaceRegistration));
@@ -1100,7 +1114,7 @@
1100
1114
  return _this;
1101
1115
  }
1102
1116
  GroupRegistration.prototype.toTemplate = function () {
1103
- return new exports.ViewData.GroupData(this.faceModel.value, this.group.xPosition, this.group.yPosition, this.group.registrations.value.map(function (r) { return r.toTemplate(); }));
1117
+ return new exports.ViewData.GroupData(this.faceListModel.value, this.group.xPosition, this.group.yPosition, this.group.registrations.value.map(function (r) { return r.toTemplate(); }));
1104
1118
  };
1105
1119
  return GroupRegistration;
1106
1120
  }(FaceRegistration));
@@ -1178,7 +1192,7 @@
1178
1192
  this.notifyChanged();
1179
1193
  };
1180
1194
  CommandGroup.prototype.rebuildTemplates = function () {
1181
- this._rootTemplate.value = new exports.ViewData.GroupData(this.faceModel.value, this.xPosition, this.yPosition, this.registrations.value.map(function (r) { return r.toTemplate(); }));
1195
+ this._rootTemplate.value = new exports.ViewData.GroupData(this.faceListModel.value, this.xPosition, this.yPosition, this.registrations.value.map(function (r) { return r.toTemplate(); }));
1182
1196
  };
1183
1197
  Object.defineProperty(CommandGroup.prototype, "depth", {
1184
1198
  get: function () {
@@ -1190,8 +1204,8 @@
1190
1204
  CommandGroup.prototype.isRoot = function () {
1191
1205
  return false;
1192
1206
  };
1193
- CommandGroup.prototype.registerCommand = function (command, faceModel) {
1194
- return this.register(new exports.Registration.CommandRegistration(faceModel, command));
1207
+ CommandGroup.prototype.registerCommand = function (command, faceListModel) {
1208
+ return this.register(new exports.Registration.CommandRegistration(command, faceListModel));
1195
1209
  };
1196
1210
  CommandGroup.prototype.registerGroup = function (group, faceModel) {
1197
1211
  return this.register(new exports.Registration.GroupRegistration(faceModel, group));
@@ -1207,7 +1221,7 @@
1207
1221
  this._registrations.push(registration);
1208
1222
  if (registration instanceof exports.Registration.FaceRegistration) {
1209
1223
  var when = pectin.Dsl.disposeWith(registration).when;
1210
- when(registration.faceModel).changes(function (is, was) {
1224
+ when(registration.faceListModel).changes(function (is, was) {
1211
1225
  _this.notifyChildFaceChanged(is, was);
1212
1226
  }, { asLongAs: this.initialised });
1213
1227
  }
@@ -1220,7 +1234,7 @@
1220
1234
  var Root = /** @class */ (function (_super) {
1221
1235
  __extends(Root, _super);
1222
1236
  function Root() {
1223
- return _super !== null && _super.apply(this, arguments) || this;
1237
+ return _super.call(this) || this;
1224
1238
  }
1225
1239
  Root.prototype.isRoot = function () {
1226
1240
  return true;
@@ -1229,8 +1243,8 @@
1229
1243
  }(CommandGroup));
1230
1244
  __decorate([
1231
1245
  pectin.TrackExternal(),
1232
- __metadata("design:type", pectin.ValueModel)
1233
- ], Root.prototype, "faceModel", void 0);
1246
+ __metadata("design:type", pectin.ListModel)
1247
+ ], Root.prototype, "faceListModel", void 0);
1234
1248
  __decorate([
1235
1249
  pectin.TrackExternal({ defaultValue: 'after' }),
1236
1250
  __metadata("design:type", pectin.ValueModel)
@@ -1261,7 +1275,9 @@
1261
1275
  _this.parent = parent;
1262
1276
  _this.xPosition = 'after';
1263
1277
  _this.yPosition = 'below';
1264
- _this.parent.registerGroup(_this, _this.faceModel);
1278
+ 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;
1279
+ _this.faceListModel = chain(_this.faceModel).mapToList(function (v) { return [v]; });
1280
+ _this.parent.registerGroup(_this, _this.faceListModel);
1265
1281
  return _this;
1266
1282
  }
1267
1283
  return CommandGroupComponent;
@@ -1307,67 +1323,38 @@
1307
1323
  __extends(CommandFaceComponent, _super);
1308
1324
  function CommandFaceComponent() {
1309
1325
  var _this = _super.call(this) || this;
1310
- _this.faceModel = new pectin.MutableValueModel();
1326
+ _this.facesModel = new pectin.MutableListModel();
1311
1327
  _this.ignoreIcon = false;
1312
1328
  _this.ignoreText = false;
1313
1329
  _this.includeMissingIconInLayout = false;
1314
- var _b = pectin.Dsl.disposeWith(_this), chain = _b.chain, valueOf = _b.valueOf, before = _b.before, when = _b.when, after = _b.after, observe = _b.observe, switchOn = _b.switchOn;
1315
- // overkill /c: when all you have is a hammer...
1316
- var faceAdapter = chain(_this.faceModel).map(function (face) { return new exports.CommandFace.Adapter(face); });
1317
- _this.iconModel = faceAdapter.pluck('icon');
1318
- _this.textModel = faceAdapter.pluck('text');
1319
- _this.positionModel = faceAdapter.pluck('iconPosition');
1320
- _this.colorModel = faceAdapter.pluck('color');
1330
+ 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;
1331
+ _this.faceAdapters = chain(_this.facesModel).map(function (face) { return new exports.CommandFace.Adapter(face); });
1332
+ var activeFace = _this.faceAdapters.first();
1333
+ _this.activeIcon = activeFace.pluck("icon");
1334
+ _this.activeColor = activeFace.pluck("color");
1321
1335
  return _this;
1322
1336
  }
1323
1337
  Object.defineProperty(CommandFaceComponent.prototype, "requiresMissingIconInLayout", {
1324
1338
  get: function () {
1325
- return this.includeMissingIconInLayout && !this.iconModel.value;
1339
+ return this.includeMissingIconInLayout && !this.activeIcon.value;
1326
1340
  },
1327
1341
  enumerable: false,
1328
1342
  configurable: true
1329
1343
  });
1330
1344
  CommandFaceComponent.prototype.ngOnInit = function () {
1331
1345
  };
1332
- Object.defineProperty(CommandFaceComponent.prototype, "iconPosition", {
1333
- get: function () {
1334
- var _a;
1335
- return (_a = this.positionModel.value) !== null && _a !== void 0 ? _a : exports.CommandFace.Position.START;
1336
- },
1337
- enumerable: false,
1338
- configurable: true
1339
- });
1340
- Object.defineProperty(CommandFaceComponent.prototype, "shouldIncludeIcon", {
1341
- get: function () {
1342
- return (!this.ignoreIcon && this.iconModel.value) || this.includeMissingIconInLayout;
1343
- },
1344
- enumerable: false,
1345
- configurable: true
1346
- });
1347
- Object.defineProperty(CommandFaceComponent.prototype, "iconStart", {
1348
- get: function () {
1349
- return this.shouldIncludeIcon && this.iconPosition === exports.CommandFace.Position.START;
1350
- },
1351
- enumerable: false,
1352
- configurable: true
1353
- });
1354
- Object.defineProperty(CommandFaceComponent.prototype, "iconEnd", {
1355
- get: function () {
1356
- return this.shouldIncludeIcon && this.iconPosition === exports.CommandFace.Position.END;
1357
- },
1358
- enumerable: false,
1359
- configurable: true
1360
- });
1361
- Object.defineProperty(CommandFaceComponent.prototype, "text", {
1362
- get: function () {
1363
- return this.ignoreText ? undefined : this.textModel.value;
1364
- },
1365
- enumerable: false,
1366
- configurable: true
1367
- });
1346
+ CommandFaceComponent.prototype.shouldIncludeIcon = function (face) {
1347
+ return (!this.ignoreIcon && face.icon) || this.includeMissingIconInLayout;
1348
+ };
1349
+ CommandFaceComponent.prototype.hasIconStart = function (face) {
1350
+ return this.shouldIncludeIcon(face) && (!face.iconPosition || face.iconPosition === exports.CommandFace.Position.START);
1351
+ };
1352
+ CommandFaceComponent.prototype.hasIconEnd = function (face) {
1353
+ return this.shouldIncludeIcon(face) && face.iconPosition === exports.CommandFace.Position.END;
1354
+ };
1368
1355
  Object.defineProperty(CommandFaceComponent.prototype, "color", {
1369
1356
  get: function () {
1370
- return this.colorModel.value;
1357
+ return this.activeColor.value;
1371
1358
  },
1372
1359
  enumerable: false,
1373
1360
  configurable: true
@@ -1377,14 +1364,14 @@
1377
1364
  CommandFaceComponent.decorators = [
1378
1365
  { type: i0.Component, args: [{
1379
1366
  selector: 'aup-command-face',
1380
- template: "<aup-icon *ngIf=\"iconStart\" [icon]=\"iconModel.value\"></aup-icon>\n<span *ngIf=\"this.text\">{{this.text}}</span>\n<aup-icon *ngIf=\"iconEnd\" [icon]=\"iconModel.value\"></aup-icon>\n",
1367
+ template: "<div class=\"face-container\" *ngFor=\"let face of faceAdapters.value\">\n <aup-icon *ngIf=\"hasIconStart(face)\" [icon]=\"face.icon\"></aup-icon>\n <span *ngIf=\"face.text\">{{face.text}}</span>\n <aup-icon *ngIf=\"hasIconEnd(face)\" [icon]=\"face.icon\"></aup-icon>\n</div>\n",
1381
1368
  encapsulation: i0.ViewEncapsulation.None,
1382
- styles: ["aup-command-face{--icon-gap:var(--aup-command-face-icon-gap);align-items:center;display:inline-flex;flex-direction:row}aup-command-face *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}"]
1369
+ styles: ["aup-command-face{--icon-gap:var(--aup-command-face-icon-gap);display:-ms-inline-grid;display:inline-grid}aup-command-face>.face-container{-ms-grid-column:1;-ms-grid-row:1;align-items:center;display:inline-flex;flex-direction:row;grid-column:1;grid-row:1}aup-command-face>.face-container:not(:first-child){visibility:hidden}aup-command-face>.face-container *+*{margin-left:var(--icon-gap)}aup-command-face.hide-icon aup-icon{visibility:hidden}aup-command-face.centered{justify-items:center}"]
1383
1370
  },] }
1384
1371
  ];
1385
1372
  CommandFaceComponent.ctorParameters = function () { return []; };
1386
1373
  CommandFaceComponent.propDecorators = {
1387
- _rawFace: [{ type: i0.Input, args: ['face',] }],
1374
+ _rawFaces: [{ type: i0.Input, args: ['faces',] }],
1388
1375
  ignoreIcon: [{ type: i0.Input }],
1389
1376
  ignoreText: [{ type: i0.Input }],
1390
1377
  includeMissingIconInLayout: [{ type: i0.Input }],
@@ -1392,9 +1379,9 @@
1392
1379
  color: [{ type: i0.HostBinding, args: ['attr.color',] }]
1393
1380
  };
1394
1381
  __decorate([
1395
- pectin.StoreInValueModel('faceModel'),
1396
- __metadata("design:type", Object)
1397
- ], CommandFaceComponent.prototype, "_rawFace", void 0);
1382
+ pectin.StoreInListModel('facesModel'),
1383
+ __metadata("design:type", Array)
1384
+ ], CommandFaceComponent.prototype, "_rawFaces", void 0);
1398
1385
 
1399
1386
  /**
1400
1387
  *
@@ -1406,17 +1393,23 @@
1406
1393
  _this.parent = parent;
1407
1394
  _this.CommandFace = exports.CommandFace;
1408
1395
  var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, switchOn = _a.switchOn;
1409
- _this.activeFaceModel = switchOn(_this.command.busy).toValue(function (when) {
1410
- when.equalTo(true, _this.busyFaceModel);
1411
- when.otherwise(_this.faceModel);
1412
- }).otherwise(_this.faceModel);
1413
- _this.buttonStyle = chain(_this.activeFaceModel).map(function (f) { return exports.CommandFace.getStyleOf(f); });
1414
- _this.colorModel = chain(_this.activeFaceModel).map(function (f) { return exports.CommandFace.getColorOf(f); });
1396
+ _this.faces = chain(_this.command.busy).mapToList(function (busy) {
1397
+ return busy ?
1398
+ [_this.busyFaceModel.value, _this.faceModel.value] :
1399
+ [_this.faceModel.value, _this.busyFaceModel.value];
1400
+ }, { allowNil: true, dependsOn: [_this.faceModel, _this.busyFaceModel] })
1401
+ .rejectNil();
1402
+ _this.activeFace = _this.faces.first();
1403
+ _this.buttonStyle = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getStyleOf(f); });
1404
+ _this.colorModel = chain(_this.activeFace).map(function (f) { return exports.CommandFace.getColorOf(f); });
1415
1405
  if (parent) {
1416
- _this.registerDisposable(_this.parent.registerCommand(_this.command, _this.activeFaceModel));
1406
+ _this.registerDisposable(_this.parent.registerCommand(_this.command, _this.faces));
1417
1407
  }
1418
1408
  return _this;
1419
1409
  }
1410
+ CommandComponent.prototype.isActive = function (face) {
1411
+ return this.activeFace.query().equals(face);
1412
+ };
1420
1413
  CommandComponent.prototype.ngOnInit = function () {
1421
1414
  };
1422
1415
  return CommandComponent;
@@ -1424,7 +1417,7 @@
1424
1417
  CommandComponent.decorators = [
1425
1418
  { type: i0.Component, args: [{
1426
1419
  selector: 'aup-command',
1427
- template: "<ng-container *ngIf=\"!parent\">\n <ng-container [ngSwitch]=\"buttonStyle.value\">\n <button *ngSwitchCase=\"CommandFace.Style.STROKED\" mat-stroked-button [pectinCommand]=\"command\" [color]=\"colorModel.value\">\n <aup-command-face [face]=\"activeFaceModel.value\"></aup-command-face>\n </button>\n <button *ngSwitchCase=\"CommandFace.Style.RAISED\" mat-raised-button [pectinCommand]=\"command\" [color]=\"colorModel.value\">\n <aup-command-face [face]=\"activeFaceModel.value\"></aup-command-face>\n </button>\n <button *ngSwitchDefault mat-button [pectinCommand]=\"command\" [color]=\"colorModel.value\">\n <aup-command-face [face]=\"activeFaceModel.value\"></aup-command-face>\n </button>\n </ng-container>\n</ng-container>\n",
1420
+ template: "<ng-container *ngIf=\"!parent\">\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",
1428
1421
  styles: [":host{display:inline-flex;flex-direction:row;justify-content:stretch}button{flex:1}"]
1429
1422
  },] }
1430
1423
  ];
@@ -1498,13 +1491,15 @@
1498
1491
  _this.tooltipModel = new pectin.MutableValueModel();
1499
1492
  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;
1500
1493
  group.xPosition = 'before'; // this should be the default unless overridden by the user.
1501
- group.faceModel = chain(_this.tooltipModel).map(function (tooltip) {
1502
- return {
1503
- icon: function () { return 'mat:more_vert'; },
1504
- tooltip: function () {
1505
- return tooltip;
1494
+ group.faceListModel = chain(_this.tooltipModel).mapToList(function (tooltip) {
1495
+ return [
1496
+ {
1497
+ icon: function () { return 'mat:more_vert'; },
1498
+ tooltip: function () {
1499
+ return tooltip;
1500
+ }
1506
1501
  }
1507
- };
1502
+ ];
1508
1503
  }, { allowNil: true });
1509
1504
  return _this;
1510
1505
  }
@@ -1544,7 +1539,7 @@
1544
1539
  var _this = _super.call(this) || this;
1545
1540
  _this.group = group;
1546
1541
  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;
1547
- group.faceModel = _this.faceModel;
1542
+ group.faceListModel = chain(_this.faceModel).mapToList(function (face) { return [face]; });
1548
1543
  return _this;
1549
1544
  }
1550
1545
  // @Trace()
@@ -4955,7 +4950,7 @@
4955
4950
  StringInputActivity.decorators = [
4956
4951
  { type: i0.Component, args: [{
4957
4952
  selector: 'aup-string-input-activity',
4958
- template: "\n <aup-string-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"></aup-string-input>\n <aup-activity-actions align=\"end\"\n [confirmCommand]=\"confirmCommand\"\n [cancelCommand]=\"cancelCommand\"></aup-activity-actions>\n "
4953
+ template: "\n <aup-string-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"></aup-string-input>\n <aup-activity-actions align=\"end\"\n [confirmCommand]=\"confirmCommand\"\n [cancelCommand]=\"cancelCommand\"\n [style]=\"data.buttonStyle\"></aup-activity-actions>\n "
4959
4954
  },] }
4960
4955
  ];
4961
4956
 
@@ -4989,7 +4984,7 @@
4989
4984
  SelectInputActivity.decorators = [
4990
4985
  { type: i0.Component, args: [{
4991
4986
  selector: 'aup-select-input-activity',
4992
- template: "\n <aup-select-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"\n [options]=\"options\"\n [optionLabelFormat]=\"optionLabelFormat\"\n ></aup-select-input>\n <aup-activity-actions align=\"end\"\n [confirmCommand]=\"confirmCommand\"\n [cancelCommand]=\"cancelCommand\"></aup-activity-actions>\n "
4987
+ template: "\n <aup-select-input [valueModel]=\"valueModel\"\n [label]=\"data.label\"\n [placeholder]=\"data.placeholder\"\n [command.enter]=\"confirmCommand\"\n [command.escape]=\"cancelCommand\"\n [options]=\"options\"\n [optionLabelFormat]=\"optionLabelFormat\"\n ></aup-select-input>\n <aup-activity-actions align=\"end\"\n [confirmCommand]=\"confirmCommand\"\n [cancelCommand]=\"cancelCommand\"\n [style]=\"data.buttonStyle\"\n ></aup-activity-actions>\n "
4993
4988
  },] }
4994
4989
  ];
4995
4990
 
@@ -7464,7 +7459,7 @@
7464
7459
  ListPlaceNavComponent.decorators = [
7465
7460
  { type: i0.Component, args: [{
7466
7461
  selector: 'aup-list-place-nav',
7467
- 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 [face]=\"getNavigationFace(placeDefinition)\"></aup-command-face>\n </a>\n</mat-nav-list>\n",
7462
+ 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",
7468
7463
  styles: [":host{--selected-background:#f1f1f1;--selected-border-color:#838383;--selected-color:inherit;display:flex;flex-direction:column}mat-nav-list{padding-top:0}a.active{background:var(--selected-background);border-right:2px solid var(--selected-border-color);color:var(--selected-color)}"]
7469
7464
  },] }
7470
7465
  ];
@@ -7559,7 +7554,7 @@
7559
7554
  TabbedPlaceNavigationComponent.decorators = [
7560
7555
  { type: i0.Component, args: [{
7561
7556
  selector: 'aup-tabbed-place-navigation',
7562
- 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 [face]=\"getNavigationFace(placeDefinition)\"></aup-command-face>\n </a>\n</nav>\n",
7557
+ 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",
7563
7558
  styles: [""]
7564
7559
  },] }
7565
7560
  ];