@coolon/angular-ui-powerups 2.0.0-alpha.4 → 2.0.0-alpha.6

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 (100) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bundles/coolon-angular-ui-powerups.umd.js +93 -36
  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/components/forms/abstract-input.component.js.map +1 -1
  8. package/esm2015/lib/components/forms/abstract-list-input.component.js +37 -5
  9. package/esm2015/lib/components/forms/abstract-list-input.component.js.map +1 -1
  10. package/esm2015/lib/components/forms/abstract-list-input.component.metadata.json +1 -1
  11. package/esm2015/lib/components/forms/abstract-value-input.component.js +30 -2
  12. package/esm2015/lib/components/forms/abstract-value-input.component.js.map +1 -1
  13. package/esm2015/lib/components/forms/abstract-value-input.component.metadata.json +1 -1
  14. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +2 -5
  15. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  16. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  17. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +0 -4
  18. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  19. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -1
  20. package/esm2015/lib/components/forms/number-input/number-input.component.js +2 -5
  21. package/esm2015/lib/components/forms/number-input/number-input.component.js.map +1 -1
  22. package/esm2015/lib/components/forms/number-input/number-input.component.metadata.json +1 -1
  23. package/esm2015/lib/components/forms/password-input/password-input.component.js +3 -6
  24. package/esm2015/lib/components/forms/password-input/password-input.component.js.map +1 -1
  25. package/esm2015/lib/components/forms/password-input/password-input.component.metadata.json +1 -1
  26. package/esm2015/lib/components/forms/select-input/select-input.component.js +0 -4
  27. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  28. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  29. package/esm2015/lib/components/forms/string-input/string-input.component.js +0 -4
  30. package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
  31. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  32. package/esm2015/lib/components/forms/text-input/text-input.component.js +2 -5
  33. package/esm2015/lib/components/forms/text-input/text-input.component.js.map +1 -1
  34. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  35. package/esm2015/lib/components/index.js +1 -1
  36. package/esm2015/lib/components/index.js.map +1 -1
  37. package/esm2015/lib/components/index.metadata.json +1 -1
  38. package/esm2015/lib/components/table/cell-editors.js.map +1 -1
  39. package/esm2015/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  40. package/esm2015/lib/components/table/cell-portal-ref.js.map +1 -0
  41. package/esm2015/lib/components/table/{cell-protal-ref.metadata.json → cell-portal-ref.metadata.json} +1 -1
  42. package/esm2015/lib/components/table/column-model.js +8 -5
  43. package/esm2015/lib/components/table/column-model.js.map +1 -1
  44. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  45. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  46. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  47. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  48. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  49. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  50. package/esm5/lib/components/forms/abstract-list-input.component.js +42 -5
  51. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -1
  52. package/esm5/lib/components/forms/abstract-value-input.component.js +35 -2
  53. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -1
  54. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +2 -5
  55. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  56. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +0 -4
  57. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -1
  58. package/esm5/lib/components/forms/number-input/number-input.component.js +2 -5
  59. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  60. package/esm5/lib/components/forms/password-input/password-input.component.js +3 -6
  61. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  62. package/esm5/lib/components/forms/select-input/select-input.component.js +0 -4
  63. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  64. package/esm5/lib/components/forms/string-input/string-input.component.js +0 -4
  65. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  66. package/esm5/lib/components/forms/text-input/text-input.component.js +2 -5
  67. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  68. package/esm5/lib/components/index.js +1 -1
  69. package/esm5/lib/components/index.js.map +1 -1
  70. package/esm5/lib/components/table/cell-editors.js.map +1 -1
  71. package/esm5/lib/components/table/{cell-protal-ref.js → cell-portal-ref.js} +7 -3
  72. package/esm5/lib/components/table/cell-portal-ref.js.map +1 -0
  73. package/esm5/lib/components/table/column-model.js +8 -5
  74. package/esm5/lib/components/table/column-model.js.map +1 -1
  75. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +1 -1
  76. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  77. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +1 -1
  78. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  79. package/fesm2015/coolon-angular-ui-powerups.js +84 -37
  80. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  81. package/fesm5/coolon-angular-ui-powerups.js +94 -37
  82. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  83. package/lib/components/forms/abstract-list-input.component.d.ts +8 -2
  84. package/lib/components/forms/abstract-value-input.component.d.ts +7 -2
  85. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +0 -2
  86. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +1 -2
  87. package/lib/components/forms/number-input/number-input.component.d.ts +0 -2
  88. package/lib/components/forms/password-input/password-input.component.d.ts +0 -2
  89. package/lib/components/forms/select-input/select-input.component.d.ts +1 -2
  90. package/lib/components/forms/string-input/string-input.component.d.ts +1 -2
  91. package/lib/components/forms/text-input/text-input.component.d.ts +0 -2
  92. package/lib/components/index.d.ts +1 -1
  93. package/lib/components/table/cell-editors.d.ts +3 -3
  94. package/lib/components/table/{cell-protal-ref.d.ts → cell-portal-ref.d.ts} +4 -4
  95. package/lib/components/table/column-model.d.ts +3 -3
  96. package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +1 -1
  97. package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +1 -1
  98. package/package.json +1 -1
  99. package/esm2015/lib/components/table/cell-protal-ref.js.map +0 -1
  100. package/esm5/lib/components/table/cell-protal-ref.js.map +0 -1
@@ -13,7 +13,7 @@ import { MatButtonModule } from '@angular/material/button';
13
13
  import { MatCheckboxModule } from '@angular/material/checkbox';
14
14
  import { MatIconModule } from '@angular/material/icon';
15
15
  import { MatTableModule } from '@angular/material/table';
16
- import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, Command, FocusManager, Form, ListModel, StoreInListModel, ValueModel, StoreInValueModel, MutableValueModel, MultipleSelectionModel, MutableListModel, DirtyTrackingForm, DelegatingCommand, Deferred, Trace, Guard, DebugContext, Binding, Functions } from '@coolon/pectin';
16
+ import { GarbageCollector, DelegatingValueModel, assert, UnaryCommand, lang, Dsl, Logger, TrackExternal, Command, FocusManager, Form, Guard, MutableListModel, MutableValueModel, ListModel, StoreInListModel, ValueModel, StoreInValueModel, MultipleSelectionModel, DirtyTrackingForm, DelegatingCommand, Deferred, Trace, DebugContext, Binding, Functions } from '@coolon/pectin';
17
17
  import { assert as assert$1, Opts, lang as lang$1, Klass } from '@coolon/typescript-utilities';
18
18
  import { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';
19
19
  import ___default, { isEqual, isNil } from 'lodash';
@@ -622,7 +622,7 @@ AbstractInputComponent = __decorate([
622
622
 
623
623
  let AbstractListInputComponent = class AbstractListInputComponent extends AbstractInputComponent {
624
624
  constructor() {
625
- super(...arguments);
625
+ super();
626
626
  /**
627
627
  * A backing model for all our @Input() valueModel properties which should be defined as follows.
628
628
  *
@@ -635,10 +635,42 @@ let AbstractListInputComponent = class AbstractListInputComponent extends Abstra
635
635
  */
636
636
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
637
637
  this.inputModel = this.registerDisposable(new Form.DelegatingListModel());
638
+ this.setValueIsInitialising = new Guard();
639
+ this.valueChange = new EventEmitter();
640
+ const { when } = Dsl.disposeWith(this);
641
+ when(this.inputModel).changes(value => this.valueChange.emit(value), {
642
+ initialValue: 'ignore',
643
+ unless: this.setValueIsInitialising
644
+ });
645
+ }
646
+ set value(value) {
647
+ if (!this.listHolder) {
648
+ this.setValueIsInitialising.whileTrue(() => {
649
+ this.listHolder = new MutableListModel(value);
650
+ this.listModel = this.listHolder;
651
+ });
652
+ }
653
+ else {
654
+ this.listHolder.value = value;
655
+ }
638
656
  }
639
657
  };
658
+ __decorate([
659
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
660
+ __metadata("design:type", Object)
661
+ ], AbstractListInputComponent.prototype, "listModel", void 0);
662
+ __decorate([
663
+ Input(),
664
+ __metadata("design:type", Array),
665
+ __metadata("design:paramtypes", [Array])
666
+ ], AbstractListInputComponent.prototype, "value", null);
667
+ __decorate([
668
+ Output(),
669
+ __metadata("design:type", Object)
670
+ ], AbstractListInputComponent.prototype, "valueChange", void 0);
640
671
  AbstractListInputComponent = __decorate([
641
- Component({ template: '' })
672
+ Component({ template: '' }),
673
+ __metadata("design:paramtypes", [])
642
674
  ], AbstractListInputComponent);
643
675
 
644
676
  let AbstractValueInputComponent = class AbstractValueInputComponent extends AbstractInputComponent {
@@ -656,8 +688,36 @@ let AbstractValueInputComponent = class AbstractValueInputComponent extends Abst
656
688
  */
657
689
  // We have to register it as a disposable so it ditches any listeners when we're disposed.
658
690
  this.inputModel = this.registerDisposable(new Form.DelegatingValueModel());
691
+ this.setValueIsInitialising = new Guard();
692
+ this.valueChange = new EventEmitter();
693
+ const { when } = Dsl.disposeWith(this);
694
+ when(this.inputModel).changes(value => this.valueChange.emit(value), { initialValue: 'ignore', unless: this.setValueIsInitialising });
695
+ }
696
+ set value(value) {
697
+ if (!this.valueHolder) {
698
+ this.setValueIsInitialising.whileTrue(() => {
699
+ this.valueHolder = new MutableValueModel(value);
700
+ this.valueModel = this.valueHolder;
701
+ });
702
+ }
703
+ else {
704
+ this.valueHolder.value = value;
705
+ }
659
706
  }
660
707
  };
708
+ __decorate([
709
+ Input(), TrackExternal({ delegateTo: 'inputModel' }),
710
+ __metadata("design:type", Object)
711
+ ], AbstractValueInputComponent.prototype, "valueModel", void 0);
712
+ __decorate([
713
+ Input(),
714
+ __metadata("design:type", Object),
715
+ __metadata("design:paramtypes", [Object])
716
+ ], AbstractValueInputComponent.prototype, "value", null);
717
+ __decorate([
718
+ Output(),
719
+ __metadata("design:type", Object)
720
+ ], AbstractValueInputComponent.prototype, "valueChange", void 0);
661
721
  AbstractValueInputComponent = __decorate([
662
722
  Component({ template: '' }),
663
723
  __metadata("design:paramtypes", [])
@@ -666,16 +726,14 @@ AbstractValueInputComponent = __decorate([
666
726
  let CheckboxInputComponent = class CheckboxInputComponent extends AbstractValueInputComponent {
667
727
  constructor() {
668
728
  super();
729
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
730
+ // valueModel: Form.ValueModelBase<boolean> | IMutableValueModel<boolean>;
669
731
  this.color = 'accent';
670
732
  this.labelPosition = 'after';
671
733
  }
672
734
  ngOnInit() {
673
735
  }
674
736
  };
675
- __decorate([
676
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
677
- __metadata("design:type", Object)
678
- ], CheckboxInputComponent.prototype, "valueModel", void 0);
679
737
  __decorate([
680
738
  Input(),
681
739
  __metadata("design:type", String)
@@ -696,16 +754,14 @@ CheckboxInputComponent = __decorate([
696
754
  let NumberInputComponent = class NumberInputComponent extends AbstractValueInputComponent {
697
755
  constructor() {
698
756
  super();
757
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
758
+ // valueModel: Form.ValueModelBase<number> | IMutableValueModel<number>;
699
759
  this.min = Number.MIN_SAFE_INTEGER;
700
760
  this.max = Number.MAX_SAFE_INTEGER;
701
761
  }
702
762
  ngOnInit() {
703
763
  }
704
764
  };
705
- __decorate([
706
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
707
- __metadata("design:type", Object)
708
- ], NumberInputComponent.prototype, "valueModel", void 0);
709
765
  __decorate([
710
766
  Input(),
711
767
  __metadata("design:type", Object)
@@ -724,16 +780,14 @@ NumberInputComponent = __decorate([
724
780
  ], NumberInputComponent);
725
781
 
726
782
  let PasswordInputComponent = class PasswordInputComponent extends AbstractValueInputComponent {
783
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
784
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
727
785
  constructor() {
728
786
  super();
729
787
  }
730
788
  ngOnInit() {
731
789
  }
732
790
  };
733
- __decorate([
734
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
735
- __metadata("design:type", Object)
736
- ], PasswordInputComponent.prototype, "valueModel", void 0);
737
791
  PasswordInputComponent = __decorate([
738
792
  Component({
739
793
  selector: 'aup-password-input',
@@ -757,10 +811,6 @@ let SelectInputComponent = class SelectInputComponent extends AbstractValueInput
757
811
  ngOnInit() {
758
812
  }
759
813
  };
760
- __decorate([
761
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
762
- __metadata("design:type", Object)
763
- ], SelectInputComponent.prototype, "valueModel", void 0);
764
814
  __decorate([
765
815
  Input(), TrackExternal(),
766
816
  __metadata("design:type", ListModel)
@@ -810,10 +860,6 @@ let StringInputComponent = class StringInputComponent extends AbstractValueInput
810
860
  ngOnInit() {
811
861
  }
812
862
  };
813
- __decorate([
814
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
815
- __metadata("design:type", Object)
816
- ], StringInputComponent.prototype, "valueModel", void 0);
817
863
  __decorate([
818
864
  Input(), TrackExternal({ defaultValue: false }),
819
865
  __metadata("design:type", ValueModel)
@@ -834,16 +880,14 @@ StringInputComponent = __decorate([
834
880
  let TextInputComponent = class TextInputComponent extends AbstractValueInputComponent {
835
881
  constructor() {
836
882
  super();
883
+ // @Input() @TrackExternal({ delegateTo: 'inputModel' })
884
+ // valueModel: Form.ValueModelBase<string> | IMutableValueModel<string>;
837
885
  this.rows = 2;
838
886
  // const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
839
887
  }
840
888
  ngOnInit() {
841
889
  }
842
890
  };
843
- __decorate([
844
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
845
- __metadata("design:type", Object)
846
- ], TextInputComponent.prototype, "valueModel", void 0);
847
891
  __decorate([
848
892
  Input(),
849
893
  __metadata("design:type", Object)
@@ -1045,6 +1089,7 @@ class CellHeaderPortalRef extends CellPortalRef {
1045
1089
  assert$1.isTruthy(host);
1046
1090
  host[HEADER_CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
1047
1091
  }
1092
+ // @Trace()
1048
1093
  onPortalAttached(host, portalComponent) {
1049
1094
  this.initialiseHeader(portalComponent, host.column);
1050
1095
  }
@@ -1060,13 +1105,15 @@ class ComponentCellRendererPortalRef extends CellRendererPortalRef {
1060
1105
  initialiseHost(host, columnModel) {
1061
1106
  host[CELL_RENDERER_PORTAL] = new ComponentPortal(this.componentType);
1062
1107
  }
1108
+ // @Trace()
1063
1109
  onPortalAttached(host, portalComponent) {
1064
1110
  host[PORTAL_RENDERER_COMPONENT] = portalComponent;
1065
- this.updateComponent(portalComponent, host.getRowData());
1111
+ this.updateComponent(portalComponent, host.getRowData(), true);
1066
1112
  }
1113
+ // @Trace()
1067
1114
  pushState(host) {
1068
1115
  if (host[PORTAL_RENDERER_COMPONENT]) {
1069
- this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData());
1116
+ this.updateComponent(host[PORTAL_RENDERER_COMPONENT], host.getRowData(), false);
1070
1117
  }
1071
1118
  }
1072
1119
  }
@@ -1103,6 +1150,7 @@ class TemplateCellRendererPortalRef extends CellRendererPortalRef {
1103
1150
  onPortalAttached(host, portalComponent) {
1104
1151
  // don't care
1105
1152
  }
1153
+ // @Trace()
1106
1154
  pushState(host) {
1107
1155
  host[CELL_RENDERER_PORTAL] = this.createPortal(host.getRowData());
1108
1156
  host.fillCell = this.fillCell;
@@ -1365,15 +1413,18 @@ class PropertyColumnModel extends ColumnModel {
1365
1413
  this._format = (value) => value;
1366
1414
  this.cellRenderer(DefaultCellRendererComponent);
1367
1415
  }
1368
- cellRenderer(componentType) {
1369
- this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData) => {
1416
+ cellRenderer(componentType, onComponentInit) {
1417
+ this.configureCellRenderer(new ComponentCellRendererPortalRef(componentType, (component, rowData, firstTime) => {
1418
+ if (firstTime && onComponentInit) {
1419
+ onComponentInit(component);
1420
+ }
1370
1421
  component.value = this._format(rowData.row[this.property]);
1371
1422
  }));
1372
1423
  return this;
1373
1424
  }
1374
- cellEditor(editor, validatorsOrInitialiser, initialiseComponent) {
1425
+ cellEditor(editor, validatorsOrInitialiser, onComponentInit) {
1375
1426
  const validators = Array.isArray(validatorsOrInitialiser) ? validatorsOrInitialiser : undefined;
1376
- const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : initialiseComponent;
1427
+ const initialiser = ___default.isFunction(validatorsOrInitialiser) ? validatorsOrInitialiser : onComponentInit;
1377
1428
  this.configureCellEditor(new CellEditorPortalRef(editor, (component, editSession) => {
1378
1429
  const formValueModel = editSession.form.pluck(this.property);
1379
1430
  if (validators) {
@@ -2061,10 +2112,6 @@ let MultipleSelectInputComponent = class MultipleSelectInputComponent extends Ab
2061
2112
  ngOnInit() {
2062
2113
  }
2063
2114
  };
2064
- __decorate([
2065
- Input(), TrackExternal({ delegateTo: 'inputModel' }),
2066
- __metadata("design:type", Object)
2067
- ], MultipleSelectInputComponent.prototype, "listModel", void 0);
2068
2115
  __decorate([
2069
2116
  Input(), TrackExternal(),
2070
2117
  __metadata("design:type", ListModel)