@coolon/angular-ui-powerups 12.4.0-alpha.28 → 12.4.0-alpha.29

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 (79) hide show
  1. package/assets/form.scss +5 -2
  2. package/assets/interaction.scss +6 -7
  3. package/bundles/coolon-angular-ui-powerups.umd.js +323 -57
  4. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  5. package/coolon-angular-ui-powerups.metadata.json +1 -1
  6. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  7. package/esm2015/lib/components/components.module.js +4 -1
  8. package/esm2015/lib/components/components.module.js.map +1 -1
  9. package/esm2015/lib/components/components.module.metadata.json +1 -1
  10. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  11. package/esm2015/lib/components/exports.js +1 -0
  12. package/esm2015/lib/components/exports.js.map +1 -1
  13. package/esm2015/lib/components/exports.metadata.json +1 -1
  14. package/esm2015/lib/components/forms/abstract-input.component.js +1 -0
  15. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  16. package/esm2015/lib/components/labelled-value/labelled-value.component.js +22 -0
  17. package/esm2015/lib/components/labelled-value/labelled-value.component.js.map +1 -0
  18. package/esm2015/lib/components/labelled-value/labelled-value.component.metadata.json +1 -0
  19. package/esm2015/lib/components/labelled-value/labelled-value.component.ngfactory.js.map +1 -0
  20. package/esm2015/lib/components/labelled-value/labelled-value.component.scss.shim.ngstyle.js.map +1 -0
  21. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +17 -11
  22. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js.map +1 -1
  23. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.metadata.json +1 -1
  24. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +1 -1
  25. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.metadata.json +1 -1
  26. package/esm2015/lib/interaction/components/editors/edit-context.js +2 -0
  27. package/esm2015/lib/interaction/components/editors/edit-context.js.map +1 -0
  28. package/esm2015/lib/interaction/components/editors/edit-context.metadata.json +1 -0
  29. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js +28 -0
  30. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js.map +1 -0
  31. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.metadata.json +1 -0
  32. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +160 -0
  33. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js.map +1 -0
  34. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.metadata.json +1 -0
  35. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.ngfactory.js.map +1 -0
  36. package/esm2015/lib/interaction/components/input-activities/input-activity.js +71 -0
  37. package/esm2015/lib/interaction/components/input-activities/input-activity.js.map +1 -0
  38. package/esm2015/lib/interaction/components/input-activities/input-activity.metadata.json +1 -0
  39. package/esm2015/lib/interaction/components/input-activities/input-activity.ngfactory.js.map +1 -0
  40. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js +3 -3
  41. package/esm2015/lib/interaction/components/input-activities/select-input-activity.js.map +1 -1
  42. package/esm2015/lib/interaction/components/input-activities/select-input-activity.metadata.json +1 -1
  43. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js +3 -4
  44. package/esm2015/lib/interaction/components/input-activities/string-input-activity.js.map +1 -1
  45. package/esm2015/lib/interaction/components/input-activities/string-input-activity.metadata.json +1 -1
  46. package/esm2015/lib/interaction/exports.js +4 -3
  47. package/esm2015/lib/interaction/exports.js.map +1 -1
  48. package/esm2015/lib/interaction/exports.metadata.json +1 -1
  49. package/esm2015/lib/interaction/interaction.module.js +5 -2
  50. package/esm2015/lib/interaction/interaction.module.js.map +1 -1
  51. package/esm2015/lib/interaction/interaction.module.metadata.json +1 -1
  52. package/esm2015/lib/interaction/interaction.module.ngfactory.js.map +1 -1
  53. package/esm2015/lib/place/place.module.ngfactory.js.map +1 -1
  54. package/fesm2015/coolon-angular-ui-powerups.js +260 -29
  55. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  56. package/lib/components/exports.d.ts +1 -0
  57. package/lib/components/labelled-value/labelled-value.component.d.ts +7 -0
  58. package/lib/interaction/components/activity-actions/activity-actions.component.d.ts +14 -3
  59. package/lib/interaction/components/editors/edit-context.d.ts +3 -0
  60. package/lib/interaction/components/editors/inline-string-editor/inline-editor-model.d.ts +18 -0
  61. package/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.d.ts +56 -0
  62. package/lib/interaction/components/input-activities/input-activity.d.ts +33 -0
  63. package/lib/interaction/components/input-activities/select-input-activity.d.ts +11 -3
  64. package/lib/interaction/components/input-activities/string-input-activity.d.ts +2 -2
  65. package/lib/interaction/exports.d.ts +4 -3
  66. package/package.json +1 -1
  67. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js +0 -43
  68. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.js.map +0 -1
  69. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.metadata.json +0 -1
  70. package/esm2015/lib/interaction/components/input-activities/abstract-input-activity.ngfactory.js.map +0 -1
  71. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js +0 -2
  72. package/esm2015/lib/interaction/components/input-activities/input-activity-data.js.map +0 -1
  73. package/esm2015/lib/interaction/components/input-activities/input-activity-data.metadata.json +0 -1
  74. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js +0 -2
  75. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.js.map +0 -1
  76. package/esm2015/lib/interaction/components/input-activities/select-input-activity-data.metadata.json +0 -1
  77. package/lib/interaction/components/input-activities/abstract-input-activity.d.ts +0 -12
  78. package/lib/interaction/components/input-activities/input-activity-data.d.ts +0 -11
  79. package/lib/interaction/components/input-activities/select-input-activity-data.d.ts +0 -8
package/assets/form.scss CHANGED
@@ -1,4 +1,4 @@
1
- @import "~@angular/material/theming";
1
+ @use "~@angular/material/theming";
2
2
 
3
3
  .aup-input-component {
4
4
 
@@ -8,7 +8,8 @@
8
8
  width: 100%;
9
9
 
10
10
  mat-hint.faux-error {
11
- color: mat-color(mat-palette($mat-red));
11
+ // TODO: move this out into theming...
12
+ color: theming.mat-color(theming.mat-palette(theming.$mat-red));
12
13
  }
13
14
  }
14
15
 
@@ -90,3 +91,5 @@ aup-table-cell-renderer > .aup-input-component {
90
91
 
91
92
 
92
93
 
94
+
95
+
@@ -1,4 +1,7 @@
1
- @import "~@angular/material/theming";
1
+ @use "~@angular/material/theming";
2
+
3
+ @use "interaction/editor/inline-string-editor";
4
+ @use "interaction/input-activity";
2
5
 
3
6
  .dialog-interaction-context {
4
7
  max-width: 95vw !important;
@@ -19,11 +22,7 @@
19
22
 
20
23
  .aup-popup-interaction-panel {
21
24
  background: var(--aup-default-background, white);
22
- @include mat-elevation(1);
23
- @include mat-elevation-transition;
24
- }
25
-
26
- .aup-input-activity {
27
- padding: calc(var(--aup-default-padding)/2);
25
+ @include theming.mat-elevation(1);
26
+ @include theming.mat-elevation-transition;
28
27
  }
29
28
 
@@ -1781,6 +1781,7 @@
1781
1781
  function AbstractInputComponent() {
1782
1782
  var _this = _super.call(this) || this;
1783
1783
  _this.onValueEditedListeners = new pectin.EventListenerList();
1784
+ _this.userFloatLabel = 'always'; // TODO: make this an injectable default
1784
1785
  _this.dense = false;
1785
1786
  // TODO: fix this.
1786
1787
  // tslint:disable-next-line:no-output-native
@@ -4779,6 +4780,28 @@
4779
4780
  __metadata("design:type", pectin.PageController)
4780
4781
  ], PaginatorComponent.prototype, "pageController", void 0);
4781
4782
 
4783
+ var LabelledValueComponent = /** @class */ (function (_super) {
4784
+ __extends(LabelledValueComponent, _super);
4785
+ function LabelledValueComponent() {
4786
+ return _super.call(this) || this;
4787
+ // const {chain} = Dsl.disposeWith(this);
4788
+ }
4789
+ LabelledValueComponent.prototype.ngOnInit = function () {
4790
+ };
4791
+ return LabelledValueComponent;
4792
+ }(DisposableComponent));
4793
+ LabelledValueComponent.decorators = [
4794
+ { type: i0.Component, args: [{
4795
+ selector: 'aup-labelled-value',
4796
+ template: "<label>{{label}}</label>\n<ng-content></ng-content>\n",
4797
+ styles: [":host{display:inline-flex;flex-direction:column;align-items:flex-start}label{font-weight:400;font-size:12px;color:rgba(0,0,0,.57);margin-bottom:6px;white-space:nowrap}"]
4798
+ },] }
4799
+ ];
4800
+ LabelledValueComponent.ctorParameters = function () { return []; };
4801
+ LabelledValueComponent.propDecorators = {
4802
+ label: [{ type: i0.Input }]
4803
+ };
4804
+
4782
4805
  var ComponentsModule = /** @class */ (function () {
4783
4806
  function ComponentsModule(faIconLibrary) {
4784
4807
  faIconLibrary.addIconPacks(freeSolidSvgIcons.fas);
@@ -4859,7 +4882,8 @@
4859
4882
  PaginatorComponent,
4860
4883
  AbstractTableComponent,
4861
4884
  AbstractCardContainerComponent,
4862
- CardStackComponent
4885
+ CardStackComponent,
4886
+ LabelledValueComponent
4863
4887
  ],
4864
4888
  exports: [
4865
4889
  NumberInputComponent,
@@ -4897,6 +4921,7 @@
4897
4921
  EmptyStateComponent,
4898
4922
  PaginatorComponent,
4899
4923
  CardStackComponent,
4924
+ LabelledValueComponent,
4900
4925
  ],
4901
4926
  providers: [
4902
4927
  FocusBindingFactory
@@ -4928,12 +4953,13 @@
4928
4953
  * <span>This content will be between the two commands</span>
4929
4954
  * </aup-activity-actions>
4930
4955
  */
4931
- var ActivityActionsComponent = /** @class */ (function (_super) {
4956
+ exports.ActivityActionsComponent = /** @class */ (function (_super) {
4932
4957
  __extends(ActivityActionsComponent, _super);
4933
4958
  function ActivityActionsComponent(cdr) {
4934
4959
  var _this = _super.call(this) || this;
4935
4960
  _this.cdr = cdr;
4936
- _this.align = 'stretch';
4961
+ _this.layout = ActivityActionsComponent.Layout.BLOCK;
4962
+ _this.align = ActivityActionsComponent.Align.STRETCH;
4937
4963
  return _this;
4938
4964
  }
4939
4965
  Object.defineProperty(ActivityActionsComponent.prototype, "faces", {
@@ -4954,20 +4980,6 @@
4954
4980
  enumerable: false,
4955
4981
  configurable: true
4956
4982
  });
4957
- Object.defineProperty(ActivityActionsComponent.prototype, "alignEnd", {
4958
- get: function () {
4959
- return this.align === 'end';
4960
- },
4961
- enumerable: false,
4962
- configurable: true
4963
- });
4964
- Object.defineProperty(ActivityActionsComponent.prototype, "alignStretch", {
4965
- get: function () {
4966
- return this.align === 'stretch';
4967
- },
4968
- enumerable: false,
4969
- configurable: true
4970
- });
4971
4983
  ActivityActionsComponent.prototype.ngOnInit = function () {
4972
4984
  };
4973
4985
  ActivityActionsComponent.prototype.hasConfirmFace = function () {
@@ -4983,35 +4995,45 @@
4983
4995
  };
4984
4996
  return ActivityActionsComponent;
4985
4997
  }(DisposableComponent));
4986
- ActivityActionsComponent.decorators = [
4998
+ exports.ActivityActionsComponent.decorators = [
4987
4999
  { type: i0.Component, args: [{
4988
5000
  selector: 'aup-activity-actions',
4989
5001
  template: "<div class=\"content\">\n <ng-content></ng-content>\n</div>\n<ng-container *ngIf=\"hasConfirmFace()\">\n <aup-command class=\"confirm\" [command]=\"confirmCommand\" [face]=\"confirmFace\" data-cy=\"confirm-command\"></aup-command>\n</ng-container>\n<ng-container *ngIf=\"hasCancelFace()\">\n <aup-command class=\"cancel\" [command]=\"cancelCommand\" [face]=\"cancelFace\" data-cy=\"cancel-command\"></aup-command>\n</ng-container>\n",
4990
- styles: [":host{display:grid;grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr;grid-template-rows:auto;align-items:center;justify-content:end}:host.align-end{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host.align-stretch{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}"]
5002
+ styles: [":host{display:grid;grid-template-rows:auto;align-items:center;justify-content:end}:host[layout=block][align=start]{grid-template-areas:\"cancel confirm content\";grid-template-columns:auto auto 1fr}:host[layout=block][align=end]{grid-template-areas:\"content cancel confirm\";grid-template-columns:1fr auto auto}:host[layout=block][align=stretch]{grid-template-areas:\"cancel content confirm\";grid-template-columns:auto 1fr auto}:host[layout=inline]{grid-template-areas:\"confirm cancel content\";grid-template-columns:auto auto 1fr;padding:0}.cancel{grid-area:cancel}.confirm{grid-area:confirm}.content{grid-area:content;text-align:left}"]
4991
5003
  },] }
4992
5004
  ];
4993
- ActivityActionsComponent.ctorParameters = function () { return [
5005
+ exports.ActivityActionsComponent.ctorParameters = function () { return [
4994
5006
  { type: i0.ChangeDetectorRef }
4995
5007
  ]; };
4996
- ActivityActionsComponent.propDecorators = {
5008
+ exports.ActivityActionsComponent.propDecorators = {
4997
5009
  confirmCommand: [{ type: i0.Input }],
4998
5010
  cancelCommand: [{ type: i0.Input }],
4999
5011
  faces: [{ type: i0.Input }],
5000
5012
  confirmFace: [{ type: i0.Input }],
5001
5013
  cancelFace: [{ type: i0.Input }],
5002
5014
  style: [{ type: i0.Input }],
5003
- align: [{ type: i0.Input }],
5004
- alignEnd: [{ type: i0.HostBinding, args: ['class.align-end',] }],
5005
- alignStretch: [{ type: i0.HostBinding, args: ['class.align-stretch',] }]
5015
+ layout: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.layout',] }],
5016
+ align: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.align',] }]
5006
5017
  };
5007
5018
  __decorate([
5008
5019
  pectin.TrackExternal(),
5009
5020
  __metadata("design:type", pectin.Command)
5010
- ], ActivityActionsComponent.prototype, "confirmCommand", void 0);
5021
+ ], exports.ActivityActionsComponent.prototype, "confirmCommand", void 0);
5011
5022
  __decorate([
5012
5023
  pectin.TrackExternal(),
5013
5024
  __metadata("design:type", pectin.Command)
5014
- ], ActivityActionsComponent.prototype, "cancelCommand", void 0);
5025
+ ], exports.ActivityActionsComponent.prototype, "cancelCommand", void 0);
5026
+ (function (ActivityActionsComponent) {
5027
+ ActivityActionsComponent.Layout = typescriptStringEnums.Enum({
5028
+ INLINE: 'inline',
5029
+ BLOCK: 'block'
5030
+ });
5031
+ ActivityActionsComponent.Align = typescriptStringEnums.Enum({
5032
+ START: 'start',
5033
+ END: 'end',
5034
+ STRETCH: 'stretch'
5035
+ });
5036
+ })(exports.ActivityActionsComponent || (exports.ActivityActionsComponent = {}));
5015
5037
 
5016
5038
  var ACTIVITY_DATA = new i0.InjectionToken('InteractionActivityData');
5017
5039
  var Activity = /** @class */ (function (_super) {
@@ -5094,7 +5116,7 @@
5094
5116
  ];
5095
5117
  Activity.ctorParameters = function () { return []; };
5096
5118
  Activity.propDecorators = {
5097
- activityActions: [{ type: i0.ViewChild, args: [ActivityActionsComponent,] }],
5119
+ activityActions: [{ type: i0.ViewChild, args: [exports.ActivityActionsComponent,] }],
5098
5120
  class: [{ type: i0.HostBinding, args: ['class',] }],
5099
5121
  isFocused: [{ type: i0.HostBinding, args: ['attr.focused',] }]
5100
5122
  };
@@ -6138,7 +6160,7 @@
6138
6160
  { type: i0.Component, args: [{
6139
6161
  selector: 'aup-add-card-activity',
6140
6162
  template: "<aup-in-place-interaction-context [animateFirstActivity]=\"false\" [pectinCommand]=\"startActivityCommand\">\n <aup-command *ngIf=\"isRenderAsButton()\" [command]=\"startActivityCommand\" [faceModel]=\"faceModel\" [alignFace]=\"alignFace\"></aup-command>\n <section *ngIf=\"isRenderAsCard()\" class=\"face-wrapper\">\n <aup-command-face class=\"mat-button\" [faces]=\"faceList.value\"></aup-command-face>\n </section>\n</aup-in-place-interaction-context>\n",
6141
- styles: [":host{display:flex;flex-direction:column;align-items:stretch}:host[interactionStyle=inline][renderas=card]:not(.active){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)}:host[interactionStyle=inline][renderas=card]:not(.active):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)}:host[interactionStyle=inline][renderas=card]:not(.active):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)}:host[interactionStyle=modal][renderas=card]{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)}:host[interactionStyle=modal][renderas=card]: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)}:host[interactionStyle=modal][renderas=card]: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)}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}"]
6163
+ styles: [":host{display:flex;flex-direction:column;align-items:stretch;background-color:#fff}:host[interactionStyle=inline][renderas=card]:not(.active){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)}:host[interactionStyle=inline][renderas=card]:not(.active):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)}:host[interactionStyle=inline][renderas=card]:not(.active):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)}:host[interactionStyle=modal][renderas=card]{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)}:host[interactionStyle=modal][renderas=card]: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)}:host[interactionStyle=modal][renderas=card]: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)}section.face-wrapper{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}aup-in-place-interaction-context{flex:1}aup-in-place-interaction-context.active{border:3px solid #6273c7;border-radius:4px;overflow:hidden}"]
6142
6164
  },] }
6143
6165
  ];
6144
6166
  exports.AddCardActivityComponent.ctorParameters = function () { return [
@@ -6422,45 +6444,85 @@
6422
6444
  // @see https://github.com/ng-packagr/ng-packagr/issues/641 and https://github.com/angular/angular/issues/21123
6423
6445
  // we're getting a metadata error for D for no reason that I can find and only during the build (ng serve works fine)
6424
6446
  // @dynamic
6425
- var AbstractInputActivity = /** @class */ (function (_super) {
6426
- __extends(AbstractInputActivity, _super);
6427
- function AbstractInputActivity(data) {
6447
+ exports.InputActivity = /** @class */ (function (_super) {
6448
+ __extends(InputActivity, _super);
6449
+ function InputActivity(data) {
6428
6450
  var _this = _super.call(this) || this;
6429
6451
  _this.data = data;
6430
6452
  _this.class = 'aup-input-activity';
6431
6453
  var form = new pectin.DirtyTrackingForm();
6432
6454
  _this.valueModel = form.valueModel(_this.data.initialValue);
6433
6455
  _this.valueModel.validateUsing(data.validators || []);
6434
- _this.confirmCommand = pectin.Command.create(function () {
6435
- if (_this.valueModel.validate()) {
6436
- if (data.save) {
6437
- return Promise.resolve(data.save(_this.valueModel, _this.interactionContext))
6438
- .then(function () { return _this.done(); });
6439
- }
6440
- else {
6441
- _this.done(_this.valueModel.value);
6456
+ _this.confirmCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
6457
+ var self_1, allGood_1, result, e_1;
6458
+ return __generator(this, function (_c) {
6459
+ switch (_c.label) {
6460
+ case 0:
6461
+ if (!this.valueModel.validate()) return [3 /*break*/, 6];
6462
+ if (!data.save) return [3 /*break*/, 5];
6463
+ self_1 = this;
6464
+ _c.label = 1;
6465
+ case 1:
6466
+ _c.trys.push([1, 3, , 4]);
6467
+ allGood_1 = true;
6468
+ return [4 /*yield*/, data.save(this.valueModel.value, {
6469
+ injectError: function (error) {
6470
+ allGood_1 = false;
6471
+ self_1.valueModel.injectErrors([error]);
6472
+ }
6473
+ })];
6474
+ case 2:
6475
+ result = _c.sent();
6476
+ if (allGood_1) {
6477
+ this.done(this.valueModel.value);
6478
+ }
6479
+ return [3 /*break*/, 4];
6480
+ case 3:
6481
+ e_1 = _c.sent();
6482
+ return [3 /*break*/, 4];
6483
+ case 4: return [3 /*break*/, 6];
6484
+ case 5:
6485
+ this.done(this.valueModel.value);
6486
+ _c.label = 6;
6487
+ case 6: return [2 /*return*/];
6442
6488
  }
6443
- }
6444
- });
6489
+ });
6490
+ }); });
6445
6491
  _this.cancelCommand = pectin.Command.create(function () {
6446
6492
  _this.cancel();
6447
6493
  });
6494
+ _this.busyWhile(_this.confirmCommand.busy);
6448
6495
  return _this;
6449
6496
  }
6450
- AbstractInputActivity.prototype.onActivityReady = function () {
6497
+ Object.defineProperty(InputActivity.prototype, "layout", {
6498
+ get: function () {
6499
+ var _a, _b;
6500
+ return (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.layout) !== null && _b !== void 0 ? _b : InputActivity.Layout.BLOCK;
6501
+ },
6502
+ enumerable: false,
6503
+ configurable: true
6504
+ });
6505
+ InputActivity.prototype.onActivityReady = function () {
6451
6506
  this.valueModel.focusContext.requestFocus();
6452
6507
  };
6453
- return AbstractInputActivity;
6508
+ return InputActivity;
6454
6509
  }(Activity));
6455
- AbstractInputActivity.decorators = [
6510
+ exports.InputActivity.decorators = [
6456
6511
  { type: i0.Component, args: [{ template: "" },] }
6457
6512
  ];
6458
- AbstractInputActivity.ctorParameters = function () { return [
6513
+ exports.InputActivity.ctorParameters = function () { return [
6459
6514
  { type: undefined, decorators: [{ type: i0.Inject, args: [ACTIVITY_DATA,] }] }
6460
6515
  ]; };
6461
- AbstractInputActivity.propDecorators = {
6462
- class: [{ type: i0.HostBinding, args: ['class',] }]
6516
+ exports.InputActivity.propDecorators = {
6517
+ class: [{ type: i0.HostBinding, args: ['class',] }],
6518
+ layout: [{ type: i0.Input }, { type: i0.HostBinding, args: ['attr.layout',] }]
6463
6519
  };
6520
+ (function (InputActivity) {
6521
+ InputActivity.Layout = typescriptStringEnums.Enum({
6522
+ INLINE: 'inline',
6523
+ BLOCK: 'block'
6524
+ });
6525
+ })(exports.InputActivity || (exports.InputActivity = {}));
6464
6526
 
6465
6527
  var StringInputActivity = /** @class */ (function (_super) {
6466
6528
  __extends(StringInputActivity, _super);
@@ -6468,11 +6530,11 @@
6468
6530
  return _super !== null && _super.apply(this, arguments) || this;
6469
6531
  }
6470
6532
  return StringInputActivity;
6471
- }(AbstractInputActivity));
6533
+ }(exports.InputActivity));
6472
6534
  StringInputActivity.decorators = [
6473
6535
  { type: i0.Component, args: [{
6474
6536
  selector: 'aup-string-input-activity',
6475
- 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 [faces]=\"data.buttonStyle\"></aup-activity-actions>\n "
6537
+ 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 [layout]=\"layout\" align=\"end\" [faces]=\"data.buttonStyle\"></aup-activity-actions>\n "
6476
6538
  },] }
6477
6539
  ];
6478
6540
 
@@ -6502,11 +6564,11 @@
6502
6564
  configurable: true
6503
6565
  });
6504
6566
  return SelectInputActivity;
6505
- }(AbstractInputActivity));
6567
+ }(exports.InputActivity));
6506
6568
  SelectInputActivity.decorators = [
6507
6569
  { type: i0.Component, args: [{
6508
6570
  selector: 'aup-select-input-activity',
6509
- 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\" [faces]=\"data.buttonStyle\"\n ></aup-activity-actions>\n "
6571
+ 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 [layout]=\"layout\" align=\"end\" [faces]=\"data.buttonStyle\"\n ></aup-activity-actions>\n "
6510
6572
  },] }
6511
6573
  ];
6512
6574
 
@@ -6678,6 +6740,209 @@
6678
6740
  _interactionContext: [{ type: i0.ViewChild, args: [PopupInteractionContextComponent, { static: true },] }]
6679
6741
  };
6680
6742
 
6743
+ exports.InlineEditorModel = /** @class */ (function () {
6744
+ function InlineEditorModel(valueModel, saveCallback) {
6745
+ this.valueModel = valueModel;
6746
+ this.saveCallback = saveCallback;
6747
+ this.editing = new pectin.MutableValueModel(false);
6748
+ this._validators = new pectin.MutableListModel();
6749
+ }
6750
+ Object.defineProperty(InlineEditorModel.prototype, "validators", {
6751
+ get: function () {
6752
+ return this._validators.readonly;
6753
+ },
6754
+ enumerable: false,
6755
+ configurable: true
6756
+ });
6757
+ InlineEditorModel.prototype.validateUsing = function (validator) {
6758
+ this._validators.push(validator);
6759
+ return this;
6760
+ };
6761
+ ;
6762
+ InlineEditorModel.prototype.isEditing = function () {
6763
+ return this.editing.value;
6764
+ };
6765
+ return InlineEditorModel;
6766
+ }());
6767
+ (function (InlineEditorModel) {
6768
+ function create(valueModel, options) {
6769
+ return new InlineEditorModel(valueModel, options.save);
6770
+ }
6771
+ InlineEditorModel.create = create;
6772
+ })(exports.InlineEditorModel || (exports.InlineEditorModel = {}));
6773
+ pectin.TrackExternal.oneTimeBinding(exports.InlineEditorModel);
6774
+
6775
+ /**
6776
+ * @example
6777
+ * const source: ValueModel<string> = ...;
6778
+ * const model = InlineEditorModel.create(source, {
6779
+ * save(updated:string, context: InlineEditorModel.SaveContext) => {
6780
+ * try {
6781
+ * try and save the thing...
6782
+ * } catch(error) {
6783
+ * context.injectError(error)
6784
+ * }
6785
+ * }).validateUsing(Validator.present("We'll need a value");
6786
+ *
6787
+ * # in the view
6788
+ * <aup-inline-string-editor
6789
+ * label="My field"
6790
+ * placeHolder="I'm ready for a string..."
6791
+ * [editorModel]="model"></aup-inline-string-editor>
6792
+ */
6793
+ exports.InlineStringEditorComponent = /** @class */ (function (_super) {
6794
+ __extends(InlineStringEditorComponent, _super);
6795
+ function InlineStringEditorComponent(interactionService) {
6796
+ var _this = _super.call(this) || this;
6797
+ var _a = pectin.Dsl.disposeWith(_this), chain = _a.chain, when = _a.when, valueOf = _a.valueOf;
6798
+ var modalIC = interactionService.createModalInteractionContextDisposedWith(_this);
6799
+ var resolvedFacesModel = chain(_this.facesModel).map(function (userFaces) {
6800
+ return Object.assign(Object.assign({}, InlineStringEditorComponent.DEFAULT_FACES), userFaces);
6801
+ }, { allowNil: true });
6802
+ _this.editFaceModel = resolvedFacesModel.pluck('edit');
6803
+ _this.saveFace = resolvedFacesModel.pluck('save');
6804
+ _this.cancelFace = resolvedFacesModel.pluck('cancel');
6805
+ var self = _this;
6806
+ _this.editCommand = pectin.Command.create(function () { return __awaiter(_this, void 0, void 0, function () {
6807
+ var e_1;
6808
+ return __generator(this, function (_a) {
6809
+ switch (_a.label) {
6810
+ case 0:
6811
+ this.editorModel.editing.value = true;
6812
+ _a.label = 1;
6813
+ case 1:
6814
+ _a.trys.push([1, 3, 4, 5]);
6815
+ return [4 /*yield*/, this.interactionContext.startActivity(StringInputActivity, this.createInputActivityData())];
6816
+ case 2:
6817
+ _a.sent();
6818
+ return [3 /*break*/, 5];
6819
+ case 3:
6820
+ e_1 = _a.sent();
6821
+ return [3 /*break*/, 5];
6822
+ case 4:
6823
+ this.editorModel.editing.value = false;
6824
+ return [7 /*endfinally*/];
6825
+ case 5: return [2 /*return*/];
6826
+ }
6827
+ });
6828
+ }); });
6829
+ _this.onDispose(function () { return _this.cancelEdit(); });
6830
+ return _this;
6831
+ // const txo = new TransactionObserver({ verbose: true }).onEvent(e => console.log(e.name, e.payload));
6832
+ // txo.observe('this.editFace', this.editFaceModel);
6833
+ }
6834
+ InlineStringEditorComponent.prototype.ngOnInit = function () {
6835
+ var _this = this;
6836
+ // our editor model is a one time binding without delegates so we can only
6837
+ // use it once we've been initialised
6838
+ var _a = pectin.Dsl.disposeWith(this), chain = _a.chain, when = _a.when, valueOf = _a.valueOf;
6839
+ if (!this.editorModel) {
6840
+ typescriptUtilities.lang.illegalState("editorModel is required");
6841
+ }
6842
+ when(this.editorModel.editing).becomesTruthy(function () {
6843
+ _this.editCommand.execute();
6844
+ }, { asLongAs: this.editCommand.enabled });
6845
+ when(this.editorModel.editing).becomesFalsey(function () { return _this.cancelEdit(); });
6846
+ this.empty = valueOf.any(chain.stringValue(this.editorModel.valueModel).isBlank()
6847
+ // deviceDescription.isNil()
6848
+ ).areTruthy();
6849
+ this.displayValue = chain(this.editorModel.valueModel).map(function (v) {
6850
+ return ___namespace.isEmpty(v) ? _this.placeHolderModel.value : v;
6851
+ }, { dependsOn: this.placeHolderModel, allowNil: true });
6852
+ };
6853
+ InlineStringEditorComponent.prototype.createInputActivityData = function () {
6854
+ var self = this;
6855
+ return {
6856
+ initialValue: self.editorModel.valueModel.value,
6857
+ buttonStyle: { confirm: self.saveFace.value, cancel: self.cancelFace.value },
6858
+ placeholder: self.placeHolderModel.value,
6859
+ label: self.label,
6860
+ layout: exports.InputActivity.Layout.INLINE,
6861
+ validators: self.editorModel.validators.value,
6862
+ save: function (value, inputContext) {
6863
+ return __awaiter(this, void 0, void 0, function () {
6864
+ return __generator(this, function (_a) {
6865
+ switch (_a.label) {
6866
+ case 0: return [4 /*yield*/, self.editorModel.saveCallback(value, inputContext)];
6867
+ case 1:
6868
+ _a.sent();
6869
+ return [2 /*return*/];
6870
+ }
6871
+ });
6872
+ });
6873
+ }
6874
+ };
6875
+ };
6876
+ InlineStringEditorComponent.prototype.cancelEdit = function () {
6877
+ if (this.isEditing()) {
6878
+ this.interactionContext.cancelActiveActivity();
6879
+ }
6880
+ };
6881
+ InlineStringEditorComponent.prototype.startEdit = function () {
6882
+ if (!this.isEditing() && this.editCommand.enabled.value) {
6883
+ this.editCommand.execute();
6884
+ }
6885
+ };
6886
+ InlineStringEditorComponent.prototype.isEditing = function () {
6887
+ return this.interactionContext.isActive();
6888
+ };
6889
+ InlineStringEditorComponent.prototype.isEmpty = function () {
6890
+ return this.empty.value;
6891
+ };
6892
+ return InlineStringEditorComponent;
6893
+ }(DisposableComponent));
6894
+ exports.InlineStringEditorComponent.decorators = [
6895
+ { type: i0.Component, args: [{
6896
+ selector: 'aup-inline-string-editor',
6897
+ template: "<ng-container *ngIf=\"!editorModel.isEditing()\">\n <div class=\"content\" [class.editable]=\"editCommand.enabled.value\">\n <label>{{label}}</label>\n <p [class.place-holder]=\"empty.value\" (click)=\"editCommand.execute()\">{{displayValue.value}}</p>\n <aup-command *ngIf=\"editCommand.enabled.value\" [command]=\"editCommand\" [faceModel]=\"editFaceModel\"></aup-command>\n </div>\n</ng-container>\n<aup-in-place-interaction-context #interactionContext [animateFirstActivity]=\"false\"></aup-in-place-interaction-context>\n\n"
6898
+ },] }
6899
+ ];
6900
+ exports.InlineStringEditorComponent.ctorParameters = function () { return [
6901
+ { type: exports.InteractionService }
6902
+ ]; };
6903
+ exports.InlineStringEditorComponent.propDecorators = {
6904
+ editorModel: [{ type: i0.Input }],
6905
+ facesModel: [{ type: i0.Input }],
6906
+ faces: [{ type: i0.Input }],
6907
+ interactionContext: [{ type: i0.ViewChild, args: [InPlaceInteractionContextComponent,] }],
6908
+ label: [{ type: i0.Input }],
6909
+ placeHolder: [{ type: i0.Input }],
6910
+ placeHolderModel: [{ type: i0.Input }]
6911
+ };
6912
+ __decorate([
6913
+ pectin.TrackExternal(),
6914
+ __metadata("design:type", exports.InlineEditorModel)
6915
+ ], exports.InlineStringEditorComponent.prototype, "editorModel", void 0);
6916
+ __decorate([
6917
+ pectin.TrackExternal(),
6918
+ __metadata("design:type", pectin.ValueModel)
6919
+ ], exports.InlineStringEditorComponent.prototype, "facesModel", void 0);
6920
+ __decorate([
6921
+ pectin.StoreInValueModel('facesModel'),
6922
+ __metadata("design:type", Object)
6923
+ ], exports.InlineStringEditorComponent.prototype, "faces", void 0);
6924
+ __decorate([
6925
+ pectin.StoreInValueModel('placeHolderModel'),
6926
+ __metadata("design:type", String)
6927
+ ], exports.InlineStringEditorComponent.prototype, "placeHolder", void 0);
6928
+ __decorate([
6929
+ pectin.TrackExternal(),
6930
+ __metadata("design:type", pectin.ValueModel)
6931
+ ], exports.InlineStringEditorComponent.prototype, "placeHolderModel", void 0);
6932
+ (function (InlineStringEditorComponent) {
6933
+ InlineStringEditorComponent.DEFAULT_FACES = {
6934
+ edit: {
6935
+ icon: function () { return 'mat:edit'; }
6936
+ },
6937
+ save: {
6938
+ icon: function () { return 'mat:check'; }
6939
+ },
6940
+ cancel: {
6941
+ icon: function () { return 'mat:clear'; }
6942
+ }
6943
+ };
6944
+ })(exports.InlineStringEditorComponent || (exports.InlineStringEditorComponent = {}));
6945
+
6681
6946
  var InteractionModule = /** @class */ (function () {
6682
6947
  function InteractionModule() {
6683
6948
  }
@@ -6706,21 +6971,22 @@
6706
6971
  ActivityOutletComponent,
6707
6972
  InPlaceInteractionContextComponent,
6708
6973
  AddItemInteractionContextComponent,
6709
- ActivityActionsComponent,
6974
+ exports.ActivityActionsComponent,
6710
6975
  PopupInteractionContextComponent,
6711
6976
  StringInputActivity,
6712
6977
  SelectInputActivity,
6713
- AbstractInputActivity,
6978
+ exports.InputActivity,
6714
6979
  InteractionContextTriggerFor,
6715
6980
  Activity,
6716
6981
  ActivityTitleComponent,
6717
6982
  ActivityBodyComponent,
6718
- ActivityActionsComponent,
6983
+ exports.ActivityActionsComponent,
6719
6984
  AbstractActivityTriggerComponent,
6720
6985
  PopupActivityTriggerComponent,
6721
6986
  InlineActivityTriggerComponent,
6722
6987
  ModalActivityTriggerComponent,
6723
6988
  exports.AddCardActivityComponent,
6989
+ exports.InlineStringEditorComponent,
6724
6990
  ],
6725
6991
  exports: [
6726
6992
  ActivityContainerComponent,
@@ -6728,7 +6994,7 @@
6728
6994
  ActivityTitleComponent,
6729
6995
  InPlaceInteractionContextComponent,
6730
6996
  AddItemInteractionContextComponent,
6731
- ActivityActionsComponent,
6997
+ exports.ActivityActionsComponent,
6732
6998
  PopupInteractionContextComponent,
6733
6999
  InteractionContextTriggerFor,
6734
7000
  StringInputActivity,
@@ -6738,6 +7004,7 @@
6738
7004
  InlineActivityTriggerComponent,
6739
7005
  ModalActivityTriggerComponent,
6740
7006
  exports.AddCardActivityComponent,
7007
+ exports.InlineStringEditorComponent,
6741
7008
  ],
6742
7009
  entryComponents: [
6743
7010
  ActivityContainerComponent,
@@ -10020,7 +10287,6 @@
10020
10287
  exports.AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT = AUP_UNAUTHORISED_PLACE_NOTICE_COMPONENT;
10021
10288
  exports.AbstractActivityTriggerComponent = AbstractActivityTriggerComponent;
10022
10289
  exports.AbstractCardContainerComponent = AbstractCardContainerComponent;
10023
- exports.AbstractInputActivity = AbstractInputActivity;
10024
10290
  exports.AbstractInputComponent = AbstractInputComponent;
10025
10291
  exports.AbstractInteractionContext = AbstractInteractionContext;
10026
10292
  exports.AbstractListInputComponent = AbstractListInputComponent;
@@ -10031,7 +10297,6 @@
10031
10297
  exports.AbstractTableModel = AbstractTableModel;
10032
10298
  exports.AbstractValueInputComponent = AbstractValueInputComponent;
10033
10299
  exports.Activity = Activity;
10034
- exports.ActivityActionsComponent = ActivityActionsComponent;
10035
10300
  exports.ActivityBodyComponent = ActivityBodyComponent;
10036
10301
  exports.ActivityContainerComponent = ActivityContainerComponent;
10037
10302
  exports.ActivityOutletComponent = ActivityOutletComponent;
@@ -10095,6 +10360,7 @@
10095
10360
  exports.InteractionModule = InteractionModule;
10096
10361
  exports.InteractionServiceRoutingAdapter = InteractionServiceRoutingAdapter;
10097
10362
  exports.LEFT_RIGHT_PLACE_ANIMATION = LEFT_RIGHT_PLACE_ANIMATION;
10363
+ exports.LabelledValueComponent = LabelledValueComponent;
10098
10364
  exports.ListPlaceNavComponent = ListPlaceNavComponent;
10099
10365
  exports.ListPropertyColumnModel = ListPropertyColumnModel;
10100
10366
  exports.ModalActivityTriggerComponent = ModalActivityTriggerComponent;