@colijnit/corecomponents_v12 12.0.22 → 12.0.23

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 (35) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +277 -118
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.d.ts +5 -3
  4. package/colijnit-corecomponents_v12.metadata.json +1 -1
  5. package/esm2015/colijnit-corecomponents_v12.js +6 -4
  6. package/esm2015/lib/components/base/base-input.component.js +40 -9
  7. package/esm2015/lib/components/base/commit-buttons/commit-buttons.component.js +92 -0
  8. package/esm2015/lib/components/base/commit-buttons/commit-buttons.module.js +19 -0
  9. package/esm2015/lib/components/grid/co-grid.component.js +1 -2
  10. package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +19 -24
  11. package/esm2015/lib/components/input-text/input-text.component.js +8 -13
  12. package/esm2015/lib/components/input-text/input-text.module.js +4 -2
  13. package/esm2015/lib/components/simple-grid/base-simple-grid.component.js +10 -2
  14. package/esm2015/lib/components/simple-grid/simple-grid-cell.component.js +13 -12
  15. package/esm2015/lib/components/simple-grid/simple-grid-column.directive.js +16 -2
  16. package/esm2015/lib/components/simple-grid/simple-grid.component.js +25 -20
  17. package/esm2015/lib/core/constant/number-inputs-key-down-white-list.js +2 -1
  18. package/fesm2015/colijnit-corecomponents_v12.js +292 -134
  19. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  20. package/lib/components/base/base-input.component.d.ts +4 -1
  21. package/lib/components/base/commit-buttons/commit-buttons.component.d.ts +19 -0
  22. package/lib/components/base/commit-buttons/commit-buttons.module.d.ts +2 -0
  23. package/lib/components/base/commit-buttons/style/_layout.scss +127 -0
  24. package/lib/components/base/commit-buttons/style/_material-definition.scss +5 -0
  25. package/lib/components/base/commit-buttons/style/_theme.scss +34 -0
  26. package/lib/components/base/commit-buttons/style/material.scss +4 -0
  27. package/lib/components/input-number-picker/input-number-picker.component.d.ts +1 -6
  28. package/lib/components/input-text/style/_layout.scss +0 -39
  29. package/lib/components/input-text/style/_material-definition.scss +0 -4
  30. package/lib/components/input-text/style/_theme.scss +0 -16
  31. package/lib/components/input-text/style/material.scss +1 -0
  32. package/lib/components/simple-grid/base-simple-grid.component.d.ts +2 -0
  33. package/lib/components/simple-grid/simple-grid-column.directive.d.ts +6 -2
  34. package/lib/components/simple-grid/simple-grid.component.d.ts +4 -2
  35. package/package.json +1 -1
@@ -3224,6 +3224,8 @@
3224
3224
  this.noFormGroupControl = false;
3225
3225
  this.keepFocus = false;
3226
3226
  this.canSaveOrCancel = false;
3227
+ this.committing = false;
3228
+ this.commitFinished = true;
3227
3229
  this._markedAsUserTouched = false;
3228
3230
  this._destroyed = false;
3229
3231
  this._hasOnPushCdStrategy = false;
@@ -3594,16 +3596,24 @@
3594
3596
  };
3595
3597
  BaseInputComponent.prototype.commitClick = function (event) {
3596
3598
  return __awaiter(this, void 0, void 0, function () {
3599
+ var success;
3597
3600
  return __generator(this, function (_a) {
3598
3601
  switch (_a.label) {
3599
3602
  case 0:
3600
3603
  this.keepFocus = true;
3604
+ this.commitFinished = false;
3605
+ this.committing = true;
3601
3606
  return [4 /*yield*/, this.commit(this.model)];
3602
3607
  case 1:
3603
- _a.sent();
3608
+ success = _a.sent();
3604
3609
  this.keepFocus = false;
3605
- this.doBlur(event);
3606
- return [2 /*return*/];
3610
+ return [4 /*yield*/, this._commitFinished()];
3611
+ case 2:
3612
+ _a.sent();
3613
+ if (success) {
3614
+ this.doBlur(event);
3615
+ }
3616
+ return [2 /*return*/, success];
3607
3617
  }
3608
3618
  });
3609
3619
  });
@@ -3623,6 +3633,9 @@
3623
3633
  var componentFactory = this.componentFactoryResolver.resolveComponentFactory(ValidationErrorComponent);
3624
3634
  this._errorValidationComponent = this.validationErrorContainer.createComponent(componentFactory);
3625
3635
  this._errorValidationComponent.instance.error = error;
3636
+ if (this._hasOnPushCdStrategy) {
3637
+ this.changeDetector.markForCheck();
3638
+ }
3626
3639
  this._positionValidationError();
3627
3640
  }
3628
3641
  };
@@ -3645,6 +3658,9 @@
3645
3658
  if (this.canChange && this.input) {
3646
3659
  this.input.focus();
3647
3660
  this.focused = true;
3661
+ if (this._hasOnPushCdStrategy) {
3662
+ this.markForCheck();
3663
+ }
3648
3664
  }
3649
3665
  };
3650
3666
  BaseInputComponent.prototype.doFocus = function (event) {
@@ -3654,6 +3670,9 @@
3654
3670
  this._initialModelSet = false;
3655
3671
  this.focused = true;
3656
3672
  this.canSaveOrCancel = false;
3673
+ if (this._hasOnPushCdStrategy) {
3674
+ this.markForCheck();
3675
+ }
3657
3676
  this.focus.next();
3658
3677
  };
3659
3678
  BaseInputComponent.prototype.doBlur = function (event) {
@@ -3666,6 +3685,9 @@
3666
3685
  return false;
3667
3686
  }
3668
3687
  _this.focused = false;
3688
+ if (_this._hasOnPushCdStrategy) {
3689
+ _this.markForCheck();
3690
+ }
3669
3691
  if (_this.input) {
3670
3692
  _this.input.blur();
3671
3693
  }
@@ -3781,6 +3803,16 @@
3781
3803
  this.control.updateValueAndValidity();
3782
3804
  }
3783
3805
  };
3806
+ BaseInputComponent.prototype._commitFinished = function () {
3807
+ var _this = this;
3808
+ return new Promise(function (resolve) {
3809
+ _this.commitFinished = true;
3810
+ setTimeout(function () {
3811
+ _this.committing = false;
3812
+ resolve();
3813
+ }, 800);
3814
+ });
3815
+ };
3784
3816
  BaseInputComponent.prototype._clearErrorComponent = function () {
3785
3817
  if (this.validationErrorContainer) {
3786
3818
  this.validationErrorContainer.clear();
@@ -3880,7 +3912,7 @@
3880
3912
  };
3881
3913
  BaseInputComponent.prototype._handleKeyDown = function (event) {
3882
3914
  return __awaiter(this, void 0, void 0, function () {
3883
- var _a, nextSiblingToFocus;
3915
+ var _a, nextSiblingToFocus, success;
3884
3916
  return __generator(this, function (_b) {
3885
3917
  switch (_b.label) {
3886
3918
  case 0:
@@ -3902,12 +3934,14 @@
3902
3934
  event.preventDefault();
3903
3935
  return [4 /*yield*/, this.commitClick()];
3904
3936
  case 4:
3905
- _b.sent();
3906
- if (nextSiblingToFocus) {
3907
- try {
3908
- this._setFocusOnNextPossibleInput(nextSiblingToFocus, event.shiftKey);
3909
- }
3910
- catch (e) {
3937
+ success = _b.sent();
3938
+ if (success) {
3939
+ if (nextSiblingToFocus) {
3940
+ try {
3941
+ this._setFocusOnNextPossibleInput(nextSiblingToFocus, event.shiftKey);
3942
+ }
3943
+ catch (e) {
3944
+ }
3911
3945
  }
3912
3946
  }
3913
3947
  return [2 /*return*/, false];
@@ -4842,7 +4876,7 @@
4842
4876
  CoGridComponent.decorators = [
4843
4877
  { type: core.Component, args: [{
4844
4878
  selector: 'co-grid',
4845
- template: "\n <co-grid-toolbar></co-grid-toolbar>\n <ejs-grid #grid id=\"grid\"\n [dataSource]=\"data\"\n [columns]=\"columns\"\n [contextMenuItems]=\"contextMenuItems\"\n [pageSettings]=\"pageSettings\"\n [toolbar]=\"toolbarOptions\"\n [gridLines]=\"gridLines\"\n [frozenColumns]=\"frozenColumns\"\n [frozenRows]=\"frozenRows\"\n [selectionSettings]=\"selectionOptions\"\n [editSettings]=\"editSettings\"\n [allowPaging]=\"pagingEnabled\"\n [allowSorting]=\"sortingEnabled\"\n [allowFiltering]=\"filteringEnabled\"\n [allowGrouping]=\"groupingEnabled\"\n [allowReordering]=\"reorderingEnabled\"\n [allowResizing]=\"resizingEnabled\"\n [allowRowDragAndDrop]=\"rowDragAndDropEnabled\"\n [showColumnMenu]=\"showColumnMenu\"\n [showColumnChooser]=\"showColumnChooser\"\n [allowExcelExport]=\"exportExcelEnabled\"\n [allowPdfExport]=\"exportPdfEnabled\"\n (toolbarClick)=\"toolbarClick($event)\"\n (rowSelected)=\"handleRowSelected($event)\"\n (recordDoubleClick)=\"handleDoubleClick($event)\"\n (recordClick)=\"handleRecordClick($event)\"\n (actionComplete)=\"handleActionComplete($event)\"\n (contextMenuClick)=\"contextMenuClick($event)\"\n (rowDragStart)=\"rowDragStartClick($event)\"\n (rowDrop)=\"rowDropClick($event)\"\n (beforeBatchDelete)=\"handleBeforeBatchDelete($event)\"\n (batchDelete)=\"handleBatchDelete($event)\"\n >\n </ejs-grid>\n ",
4879
+ template: "\n <ejs-grid #grid id=\"grid\"\n [dataSource]=\"data\"\n [columns]=\"columns\"\n [contextMenuItems]=\"contextMenuItems\"\n [pageSettings]=\"pageSettings\"\n [toolbar]=\"toolbarOptions\"\n [gridLines]=\"gridLines\"\n [frozenColumns]=\"frozenColumns\"\n [frozenRows]=\"frozenRows\"\n [selectionSettings]=\"selectionOptions\"\n [editSettings]=\"editSettings\"\n [allowPaging]=\"pagingEnabled\"\n [allowSorting]=\"sortingEnabled\"\n [allowFiltering]=\"filteringEnabled\"\n [allowGrouping]=\"groupingEnabled\"\n [allowReordering]=\"reorderingEnabled\"\n [allowResizing]=\"resizingEnabled\"\n [allowRowDragAndDrop]=\"rowDragAndDropEnabled\"\n [showColumnMenu]=\"showColumnMenu\"\n [showColumnChooser]=\"showColumnChooser\"\n [allowExcelExport]=\"exportExcelEnabled\"\n [allowPdfExport]=\"exportPdfEnabled\"\n (toolbarClick)=\"toolbarClick($event)\"\n (rowSelected)=\"handleRowSelected($event)\"\n (recordDoubleClick)=\"handleDoubleClick($event)\"\n (recordClick)=\"handleRecordClick($event)\"\n (actionComplete)=\"handleActionComplete($event)\"\n (contextMenuClick)=\"contextMenuClick($event)\"\n (rowDragStart)=\"rowDragStartClick($event)\"\n (rowDrop)=\"rowDropClick($event)\"\n (beforeBatchDelete)=\"handleBeforeBatchDelete($event)\"\n (batchDelete)=\"handleBatchDelete($event)\"\n >\n </ejs-grid>\n ",
4846
4880
  providers: [
4847
4881
  ej2AngularGrids.RowDDService
4848
4882
  ],
@@ -5604,6 +5638,7 @@
5604
5638
  KeyboardCode.Down,
5605
5639
  KeyboardCode.Up,
5606
5640
  KeyboardCode.Tab,
5641
+ KeyboardCode.Enter,
5607
5642
  KeyboardCode.Home,
5608
5643
  KeyboardCode.End,
5609
5644
  KeyboardCode.Delete,
@@ -5639,67 +5674,6 @@
5639
5674
  KeyboardCode.NumpadNine
5640
5675
  ];
5641
5676
 
5642
- var InputTextComponent = /** @class */ (function (_super) {
5643
- __extends(InputTextComponent, _super);
5644
- function InputTextComponent(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
5645
- var _this = _super.call(this, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) || this;
5646
- _this.formComponent = formComponent;
5647
- _this.changeDetector = changeDetector;
5648
- _this.componentFactoryResolver = componentFactoryResolver;
5649
- _this.formUserChangeListener = formUserChangeListener;
5650
- _this.ngZoneWrapper = ngZoneWrapper;
5651
- _this.elementRef = elementRef;
5652
- _this.Icons = exports.CoreComponentsIcon;
5653
- _this.placeholder = "";
5654
- _this.type = "text";
5655
- _this.showClearButton = undefined;
5656
- _this.hasOwnLabel = true;
5657
- _super.prototype._markAsOnPush.call(_this);
5658
- return _this;
5659
- }
5660
- InputTextComponent.prototype.showClass = function () {
5661
- return true;
5662
- };
5663
- return InputTextComponent;
5664
- }(BaseInputComponent));
5665
- InputTextComponent.decorators = [
5666
- { type: core.Component, args: [{
5667
- selector: "co-input-text",
5668
- template: "\n <label [textContent]=\"placeholder\"></label>\n <input #input\n [type]=\"type\"\n [ngModel]=\"model\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (ngModelChange)=\"modelChange.emit($event)\"\n >\n <div *ngIf=\"showSaveCancel && focused && canSaveOrCancel\" class=\"input-save-cancel-button-wrapper\" @showHideSaveCancel>\n <div class=\"input-save-cancel-button save\" (click)=\"commitClick($event)\"></div>\n <div class=\"input-save-cancel-button cancel\" (click)=\"cancelClick($event)\"></div>\n </div>\n <div class=\"required-indicator\"></div>\n <ng-template #validationError></ng-template>\n ",
5669
- providers: [{
5670
- provide: COMPONENT_INTERFACE_NAME,
5671
- useExisting: core.forwardRef(function () { return InputTextComponent; })
5672
- }, {
5673
- provide: BaseInputComponent,
5674
- useExisting: InputTextComponent
5675
- }],
5676
- animations: [
5677
- animations.trigger('showHideSaveCancel', [
5678
- animations.state('*', animations.style({ transform: 'scaleY(1)', opacity: 1 })),
5679
- animations.state('void', animations.style({ transform: 'scaleY(0)', opacity: 0 })),
5680
- animations.transition('void <=> *', animations.animate(200))
5681
- ]),
5682
- ],
5683
- encapsulation: core.ViewEncapsulation.None
5684
- },] }
5685
- ];
5686
- InputTextComponent.ctorParameters = function () { return [
5687
- { type: FormComponent, decorators: [{ type: core.Optional }] },
5688
- { type: core.ChangeDetectorRef },
5689
- { type: core.ComponentFactoryResolver },
5690
- { type: FormInputUserModelChangeListenerService },
5691
- { type: NgZoneWrapperService },
5692
- { type: core.ElementRef }
5693
- ]; };
5694
- InputTextComponent.propDecorators = {
5695
- placeholder: [{ type: core.Input }],
5696
- type: [{ type: core.Input }],
5697
- showClearButton: [{ type: core.Input }],
5698
- keyDownWhiteList: [{ type: core.Input }],
5699
- showClass: [{ type: core.HostBinding, args: ["class.co-input-text",] }],
5700
- hasOwnLabel: [{ type: core.HostBinding, args: ["class.has-own-label",] }]
5701
- };
5702
-
5703
5677
  // Input values for 'buttonShowMode' of NumberPickerComponent.
5704
5678
  var InputNumberPickerButtonShowMode;
5705
5679
  (function (InputNumberPickerButtonShowMode) {
@@ -5741,8 +5715,8 @@
5741
5715
  _this._stepFactor = _this._stepFactors[0];
5742
5716
  _this._mayAutoCount = false;
5743
5717
  _this._numberLogicValueChangeSub = _this.numberLogic.valueChange.subscribe(function (value) {
5744
- _this.inputTextComp.model = "" + value; // faster than this.detectChanges() just for that input
5745
5718
  if (!_this._mayAutoCount) {
5719
+ _this.model = value;
5746
5720
  _this.modelChange.emit(value);
5747
5721
  // custom form user chagne listener .next because we don't user super.updateModel() which normally does that for us
5748
5722
  if (_this._markedAsUserTouched) {
@@ -5753,18 +5727,17 @@
5753
5727
  });
5754
5728
  return _this;
5755
5729
  }
5756
- Object.defineProperty(InputNumberPickerComponent.prototype, "model", {
5757
- get: function () {
5758
- return this.numberLogic.value;
5759
- },
5760
- // @override
5761
- set: function (model) {
5762
- this.numberLogic.value = model;
5763
- },
5764
- enumerable: false,
5765
- configurable: true
5766
- });
5767
5730
  Object.defineProperty(InputNumberPickerComponent.prototype, "min", {
5731
+ // @override
5732
+ // @Input()
5733
+ // public set model(model: number) {
5734
+ // super.model = model;
5735
+ // this.numberLogic.value = model;
5736
+ // }
5737
+ //
5738
+ // public get model(): number {
5739
+ // return this.numberLogic.value;
5740
+ // }
5768
5741
  set: function (min) {
5769
5742
  this.numberLogic.min = min;
5770
5743
  },
@@ -5838,6 +5811,11 @@
5838
5811
  if (this.myKeyDownWhiteList.find(function (k) { return k === event.keyCode; }) === undefined) {
5839
5812
  return false;
5840
5813
  }
5814
+ _super.prototype.handleKeyDown.call(this, event);
5815
+ };
5816
+ InputNumberPickerComponent.prototype.handleChangeModel = function (value) {
5817
+ console.log(value);
5818
+ this.numberLogic.setValue(value);
5841
5819
  };
5842
5820
  // Note: recursive through setTimeout().
5843
5821
  InputNumberPickerComponent.prototype.doDecrementAuto = function () {
@@ -5912,17 +5890,6 @@
5912
5890
  }
5913
5891
  }, this._delayBeforeStartAutoCountMs);
5914
5892
  };
5915
- // Possibly show buttons.
5916
- InputNumberPickerComponent.prototype.onNumberInputFocus = function () {
5917
- this._numberInputHasFocus = true;
5918
- this._updateButtonsShowState();
5919
- };
5920
- // Value correction point.
5921
- InputNumberPickerComponent.prototype.onNumberInputBlur = function () {
5922
- this._numberInputHasFocus = false;
5923
- this.numberLogic.setValueByUserInputText(this.inputTextComp.model);
5924
- this._updateButtonsShowState();
5925
- };
5926
5893
  // Note: recursive.
5927
5894
  InputNumberPickerComponent.prototype._doIncreaseStepFactor = function () {
5928
5895
  var _this = this;
@@ -5960,7 +5927,7 @@
5960
5927
  InputNumberPickerComponent.decorators = [
5961
5928
  { type: core.Component, args: [{
5962
5929
  selector: 'co-input-number-picker',
5963
- template: "\n <div class=\"button-wrapper\">\n <co-button *ngIf=\"showButtons\" class=\"minus-operator circle\" [class.select]=\"minSelected\"\n [disabled]=\"readonly\"\n [iconData]=\"iconCacheService.getIcon(minusIcon)\"\n (mousedown)=\"onMinusMouseDown($event)\"\n (mouseup)=\"stopAutoCounting()\" (mouseleave)=\"stopAutoCounting()\"></co-button>\n </div>\n <input type=\"text\"\n [ngModel]=\"numberLogic.valueAsSting\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (keydown)=\"handleKeyDown($event)\"/>\n <div class=\"button-wrapper\">\n <co-button *ngIf=\"showButtons\" class=\"plus-operator circle\" [class.select]=\"plusSelected\"\n [disabled]=\"readonly\"\n [iconData]=\"iconCacheService.getIcon(plusIcon)\"\n (mousedown)=\"onPlusMouseDown($event)\"\n (mouseup)=\"stopAutoCounting()\" (mouseleave)=\"stopAutoCounting()\"></co-button>\n </div>\n ",
5930
+ template: "\n <div class=\"button-wrapper\">\n <co-button *ngIf=\"showButtons\" class=\"minus-operator circle\" [class.select]=\"minSelected\"\n [disabled]=\"readonly\"\n [iconData]=\"iconCacheService.getIcon(minusIcon)\"\n (mousedown)=\"onMinusMouseDown($event)\"\n (mouseup)=\"stopAutoCounting()\" (mouseleave)=\"stopAutoCounting()\"></co-button>\n </div>\n <input type=\"text\"\n [ngModel]=\"model\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n (ngModelChange)=\"handleChangeModel($event)\"\n (keydown)=\"handleKeyDown($event)\"/>\n <div class=\"button-wrapper\">\n <co-button *ngIf=\"showButtons\" class=\"plus-operator circle\" [class.select]=\"plusSelected\"\n [disabled]=\"readonly\"\n [iconData]=\"iconCacheService.getIcon(plusIcon)\"\n (mousedown)=\"onPlusMouseDown($event)\"\n (mouseup)=\"stopAutoCounting()\" (mouseleave)=\"stopAutoCounting()\"></co-button>\n </div>\n ",
5964
5931
  providers: [{
5965
5932
  provide: COMPONENT_INTERFACE_NAME, useExisting: core.forwardRef(function () { return InputNumberPickerComponent; })
5966
5933
  }, {
@@ -5980,7 +5947,6 @@
5980
5947
  { type: FormInputUserModelChangeListenerService }
5981
5948
  ]; };
5982
5949
  InputNumberPickerComponent.propDecorators = {
5983
- model: [{ type: core.Input }],
5984
5950
  min: [{ type: core.Input }],
5985
5951
  step: [{ type: core.Input }],
5986
5952
  max: [{ type: core.Input }],
@@ -5991,7 +5957,6 @@
5991
5957
  noValidation: [{ type: core.Input }],
5992
5958
  decimals: [{ type: core.Input }],
5993
5959
  modelChange: [{ type: core.Output }],
5994
- inputTextComp: [{ type: core.ViewChild, args: [InputTextComponent, { static: true },] }],
5995
5960
  showButtonsOnFocusOnly: [{ type: core.HostBinding, args: ["class.show-buttons-on-focus-only",] }],
5996
5961
  hasLabel: [{ type: core.HostBinding, args: ["class.has-label",] }],
5997
5962
  showClass: [{ type: core.HostBinding, args: ['class.co-input-number-picker',] }]
@@ -6000,6 +5965,60 @@
6000
5965
  InputBoolean()
6001
5966
  ], InputNumberPickerComponent.prototype, "noValidation", void 0);
6002
5967
 
5968
+ var InputTextComponent = /** @class */ (function (_super) {
5969
+ __extends(InputTextComponent, _super);
5970
+ function InputTextComponent(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
5971
+ var _this = _super.call(this, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) || this;
5972
+ _this.formComponent = formComponent;
5973
+ _this.changeDetector = changeDetector;
5974
+ _this.componentFactoryResolver = componentFactoryResolver;
5975
+ _this.formUserChangeListener = formUserChangeListener;
5976
+ _this.ngZoneWrapper = ngZoneWrapper;
5977
+ _this.elementRef = elementRef;
5978
+ _this.Icons = exports.CoreComponentsIcon;
5979
+ _this.placeholder = "";
5980
+ _this.type = "text";
5981
+ _this.showClearButton = undefined;
5982
+ _this.hasOwnLabel = true;
5983
+ _super.prototype._markAsOnPush.call(_this);
5984
+ return _this;
5985
+ }
5986
+ InputTextComponent.prototype.showClass = function () {
5987
+ return true;
5988
+ };
5989
+ return InputTextComponent;
5990
+ }(BaseInputComponent));
5991
+ InputTextComponent.decorators = [
5992
+ { type: core.Component, args: [{
5993
+ selector: "co-input-text",
5994
+ template: "\n <label [textContent]=\"placeholder\"></label>\n <input #input\n [type]=\"type\"\n [ngModel]=\"model\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n (ngModelChange)=\"modelChange.emit($event)\"\n >\n <co-commit-buttons *ngIf=\"showSaveCancel && focused && canSaveOrCancel\"\n [committing]=\"committing\"\n [commitFinished]=\"commitFinished\"\n (commitClick)=\"commitClick($event)\"\n (cancelClick)=\"cancelClick($event)\"\n >\n </co-commit-buttons>\n <div class=\"required-indicator\"></div>\n <ng-template #validationError></ng-template>\n ",
5995
+ providers: [{
5996
+ provide: COMPONENT_INTERFACE_NAME,
5997
+ useExisting: core.forwardRef(function () { return InputTextComponent; })
5998
+ }, {
5999
+ provide: BaseInputComponent,
6000
+ useExisting: InputTextComponent
6001
+ }],
6002
+ encapsulation: core.ViewEncapsulation.None
6003
+ },] }
6004
+ ];
6005
+ InputTextComponent.ctorParameters = function () { return [
6006
+ { type: FormComponent, decorators: [{ type: core.Optional }] },
6007
+ { type: core.ChangeDetectorRef },
6008
+ { type: core.ComponentFactoryResolver },
6009
+ { type: FormInputUserModelChangeListenerService },
6010
+ { type: NgZoneWrapperService },
6011
+ { type: core.ElementRef }
6012
+ ]; };
6013
+ InputTextComponent.propDecorators = {
6014
+ placeholder: [{ type: core.Input }],
6015
+ type: [{ type: core.Input }],
6016
+ showClearButton: [{ type: core.Input }],
6017
+ keyDownWhiteList: [{ type: core.Input }],
6018
+ showClass: [{ type: core.HostBinding, args: ["class.co-input-text",] }],
6019
+ hasOwnLabel: [{ type: core.HostBinding, args: ["class.has-own-label",] }]
6020
+ };
6021
+
6003
6022
  var ValidationErrorModule = /** @class */ (function () {
6004
6023
  function ValidationErrorModule() {
6005
6024
  }
@@ -6020,6 +6039,115 @@
6020
6039
  },] }
6021
6040
  ];
6022
6041
 
6042
+ var CommitButtonsComponent = /** @class */ (function () {
6043
+ function CommitButtonsComponent(_renderer) {
6044
+ var _this = this;
6045
+ this._renderer = _renderer;
6046
+ this.cancelClick = new core.EventEmitter();
6047
+ this.commitClick = new core.EventEmitter();
6048
+ this._committing = false;
6049
+ this._commitFinished = false;
6050
+ this._handleAnimationIteration = function (event) {
6051
+ _this._renderer.removeClass(event.currentTarget, 'animate');
6052
+ event.currentTarget.removeEventListener('animationiteration', _this._handleAnimationIteration);
6053
+ // elem.removeEventListener('webkitAnimationIteration', () => this._handleAnimationIteration(elem));
6054
+ };
6055
+ }
6056
+ Object.defineProperty(CommitButtonsComponent.prototype, "content", {
6057
+ set: function (children) {
6058
+ this.animateDivs = children.toArray();
6059
+ this._checkAnimation();
6060
+ },
6061
+ enumerable: false,
6062
+ configurable: true
6063
+ });
6064
+ Object.defineProperty(CommitButtonsComponent.prototype, "committing", {
6065
+ get: function () {
6066
+ return this._committing;
6067
+ },
6068
+ set: function (value) {
6069
+ this._committing = value;
6070
+ this._checkAnimation();
6071
+ },
6072
+ enumerable: false,
6073
+ configurable: true
6074
+ });
6075
+ Object.defineProperty(CommitButtonsComponent.prototype, "commitFinished", {
6076
+ get: function () {
6077
+ return this._commitFinished;
6078
+ },
6079
+ set: function (value) {
6080
+ this._commitFinished = value;
6081
+ this._checkAnimationFinished();
6082
+ },
6083
+ enumerable: false,
6084
+ configurable: true
6085
+ });
6086
+ CommitButtonsComponent.prototype.showClass = function () {
6087
+ return true;
6088
+ };
6089
+ CommitButtonsComponent.prototype._checkAnimation = function () {
6090
+ var _this = this;
6091
+ if (this.committing && this.animateDivs) {
6092
+ this.animateDivs.forEach(function (a) { return _this._renderer.addClass(a.nativeElement, 'animate'); });
6093
+ }
6094
+ };
6095
+ CommitButtonsComponent.prototype._checkAnimationFinished = function () {
6096
+ var _this = this;
6097
+ if (this.commitFinished && this.animateDivs) {
6098
+ this.animateDivs.forEach(function (a) {
6099
+ a.nativeElement.addEventListener('animationiteration', _this._handleAnimationIteration);
6100
+ // a.nativeElement.addEventListener('webkitAnimationIteration', (event) => this._handleAnimationIteration(event));
6101
+ });
6102
+ }
6103
+ };
6104
+ return CommitButtonsComponent;
6105
+ }());
6106
+ CommitButtonsComponent.decorators = [
6107
+ { type: core.Component, args: [{
6108
+ selector: "co-commit-buttons",
6109
+ template: "\n <div class=\"commit-buttons-wrapper\" @showHideSaveCancel>\n <div class=\"commit-buttons-button save\" [class.finished]=\"commitFinished\"\n (click)=\"commitClick.emit($event)\">\n <div class=\"save-button-spinner\" *ngIf=\"committing || commitFinished\">\n <div #animatediv></div>\n <div #animatediv></div>\n <div #animatediv></div>\n <div #animatediv></div>\n </div>\n <div class=\"spinner-checkmark\" *ngIf=\"!committing || commitFinished\"></div>\n </div>\n <div class=\"commit-buttons-button cancel\" (click)=\"cancelClick.emit($event)\">\n <div class=\"cancel-button\"></div>\n </div>\n </div>\n ",
6110
+ animations: [
6111
+ animations.trigger('showHideSaveCancel', [
6112
+ animations.state('*', animations.style({ transform: 'scaleY(1)', opacity: 1 })),
6113
+ animations.state('void', animations.style({ transform: 'scaleY(0)', opacity: 0 })),
6114
+ animations.transition('void <=> *', animations.animate(200))
6115
+ ]),
6116
+ ],
6117
+ encapsulation: core.ViewEncapsulation.None
6118
+ },] }
6119
+ ];
6120
+ CommitButtonsComponent.ctorParameters = function () { return [
6121
+ { type: core.Renderer2 }
6122
+ ]; };
6123
+ CommitButtonsComponent.propDecorators = {
6124
+ content: [{ type: core.ViewChildren, args: ['animatediv', { read: core.ElementRef },] }],
6125
+ committing: [{ type: core.Input }],
6126
+ commitFinished: [{ type: core.Input }],
6127
+ cancelClick: [{ type: core.Output }],
6128
+ commitClick: [{ type: core.Output }],
6129
+ showClass: [{ type: core.HostBinding, args: ["class.co-commit-buttons",] }]
6130
+ };
6131
+
6132
+ var CommitButtonsModule = /** @class */ (function () {
6133
+ function CommitButtonsModule() {
6134
+ }
6135
+ return CommitButtonsModule;
6136
+ }());
6137
+ CommitButtonsModule.decorators = [
6138
+ { type: core.NgModule, args: [{
6139
+ imports: [
6140
+ common.CommonModule
6141
+ ],
6142
+ declarations: [
6143
+ CommitButtonsComponent
6144
+ ],
6145
+ exports: [
6146
+ CommitButtonsComponent
6147
+ ]
6148
+ },] }
6149
+ ];
6150
+
6023
6151
  var InputTextModule = /** @class */ (function () {
6024
6152
  function InputTextModule() {
6025
6153
  }
@@ -6035,7 +6163,8 @@
6035
6163
  AppendPipeModule,
6036
6164
  ej2AngularInputs.TextBoxAllModule,
6037
6165
  ej2AngularInputs.NumericTextBoxModule,
6038
- ValidationErrorModule
6166
+ ValidationErrorModule,
6167
+ CommitButtonsModule
6039
6168
  ],
6040
6169
  declarations: [
6041
6170
  InputTextComponent
@@ -7904,6 +8033,8 @@
7904
8033
  this.resizable = true;
7905
8034
  this.required = false;
7906
8035
  this.readonly = false;
8036
+ this.order = 0;
8037
+ this.singleColumn = false;
7907
8038
  }
7908
8039
  Object.defineProperty(SimpleGridColumnDirective.prototype, "template", {
7909
8040
  get: function () {
@@ -7929,6 +8060,9 @@
7929
8060
  enumerable: false,
7930
8061
  configurable: true
7931
8062
  });
8063
+ SimpleGridColumnDirective.prototype.ngOnInit = function () {
8064
+ this._setSingleColumnProps();
8065
+ };
7932
8066
  SimpleGridColumnDirective.prototype.getFieldValue = function (value) {
7933
8067
  var _this = this;
7934
8068
  if (this.collection && this.displayField) {
@@ -7939,6 +8073,13 @@
7939
8073
  }
7940
8074
  return value;
7941
8075
  };
8076
+ SimpleGridColumnDirective.prototype._setSingleColumnProps = function () {
8077
+ if (this.singleColumn) {
8078
+ this.resizable = false;
8079
+ this.readonly = true;
8080
+ this.width = 0;
8081
+ }
8082
+ };
7942
8083
  return SimpleGridColumnDirective;
7943
8084
  }());
7944
8085
  SimpleGridColumnDirective._MinManualResizeWidthPx = 50;
@@ -7960,7 +8101,9 @@
7960
8101
  required: [{ type: core.Input }],
7961
8102
  width: [{ type: core.Input }],
7962
8103
  readonly: [{ type: core.Input }],
7963
- collection: [{ type: core.Input }]
8104
+ collection: [{ type: core.Input }],
8105
+ order: [{ type: core.Input }],
8106
+ singleColumn: [{ type: core.Input }]
7964
8107
  };
7965
8108
 
7966
8109
  var BaseSimpleGridComponent = /** @class */ (function () {
@@ -7982,7 +8125,14 @@
7982
8125
  }
7983
8126
  Object.defineProperty(BaseSimpleGridComponent.prototype, "content", {
7984
8127
  set: function (columnComponents) {
7985
- this.columns = columnComponents.toArray();
8128
+ this._setColumns(columnComponents.toArray());
8129
+ },
8130
+ enumerable: false,
8131
+ configurable: true
8132
+ });
8133
+ Object.defineProperty(BaseSimpleGridComponent.prototype, "extraColumns", {
8134
+ set: function (value) {
8135
+ this._setColumns(value);
7986
8136
  },
7987
8137
  enumerable: false,
7988
8138
  configurable: true
@@ -8023,6 +8173,11 @@
8023
8173
  console.error(e);
8024
8174
  }
8025
8175
  };
8176
+ BaseSimpleGridComponent.prototype._setColumns = function (columns) {
8177
+ var _a;
8178
+ (_a = this.columns).push.apply(_a, __spreadArray([], __read(columns)));
8179
+ this.columns.sort(function (a, b) { return a.order < b.order ? -1 : 1; });
8180
+ };
8026
8181
  return BaseSimpleGridComponent;
8027
8182
  }());
8028
8183
  BaseSimpleGridComponent.decorators = [
@@ -8035,6 +8190,7 @@
8035
8190
  inlineEdit: [{ type: core.Input }],
8036
8191
  showToolbar: [{ type: core.Input }],
8037
8192
  emitDragDrop: [{ type: core.Input }],
8193
+ extraColumns: [{ type: core.Input }],
8038
8194
  onDrop: [{ type: core.Output }],
8039
8195
  selectRow: [{ type: core.Output }],
8040
8196
  dblClickRow: [{ type: core.Output }],
@@ -8071,6 +8227,7 @@
8071
8227
  this._nextAvailableCellToEdit(!event.shiftKey, this.editCellIndex)
8072
8228
  .then(function (index) {
8073
8229
  _this.editCellIndex = index;
8230
+ _this._changeDetection.markForCheck();
8074
8231
  });
8075
8232
  this._detectChanges();
8076
8233
  }
@@ -8081,6 +8238,14 @@
8081
8238
  this.validateAndSave();
8082
8239
  }
8083
8240
  };
8241
+ SimpleGridComponent.prototype.isSingleColumn = function (column) {
8242
+ return column.singleColumn;
8243
+ };
8244
+ SimpleGridComponent.prototype.rowContainsSingleColumn = function (row, columns) {
8245
+ var _this = this;
8246
+ var singleColumn = columns.find(function (column) { return _this.isSingleColumn(column) && !!row[column.field]; });
8247
+ return !!singleColumn;
8248
+ };
8084
8249
  SimpleGridComponent.prototype.addRow = function () {
8085
8250
  var _this = this;
8086
8251
  var valid = this.validateAndSave();
@@ -8286,23 +8451,18 @@
8286
8451
  this._detectChanges();
8287
8452
  };
8288
8453
  SimpleGridComponent.prototype._detectChanges = function () {
8289
- // setTimeout(() => {
8290
- // this._changeDetection.markForCheck();
8291
- // this._changeDetection.reattach();
8292
8454
  this._changeDetection.detectChanges();
8293
- // this._changeDetection.detach();
8294
- // });
8295
8455
  };
8296
8456
  return SimpleGridComponent;
8297
8457
  }(BaseSimpleGridComponent));
8298
8458
  SimpleGridComponent.decorators = [
8299
8459
  { type: core.Component, args: [{
8300
8460
  selector: "co-simple-grid",
8301
- template: "\n <co-grid-toolbar *ngIf=\"inlineEdit && showToolbar\"\n (addClick)=\"addRow()\"\n (editClick)=\"editRow($event)\"\n (saveClick)=\"validateAndSave()\"\n (cancelClick)=\"cancelEditRow()\"\n ></co-grid-toolbar>\n <div class=\"simple-grid-column-header-wrapper\">\n <div class=\"simple-grid-column-header\" *ngFor=\"let column of columns; let index = index\"\n [style.min-width.px]=\"column.width\" [style.max-width.px]=\"column.width\">\n <div class=\"simple-grid-column-header-label\" [ngClass]=\"column.textAlign ? column.textAlign : defaultTextAlign\"\n [textContent]=\"column.headerText\"\n ></div>\n <div *ngIf=\"column.resizable\" class=\"simple-grid-column-sizer\"\n (mousedown)=\"handleSizerMouseDown($event, column)\"\n ></div>\n </div>\n </div>\n <div cdkDropListGroup class=\"drop-list-group\">\n <div #dropList cdkDropList cdkDropListOrientation=\"vertical\"\n class=\"simple-grid-drag-drop-list\"\n [cdkDropListDisabled]=\"!dragDropEnabled\"\n [cdkDropListData]=\"data\"\n [cdkDropListEnterPredicate]=\"handleCanDragDrop\"\n (cdkDropListDropped)=\"handleDrop($event)\"\n >\n <div class=\"simple-grid-row\" [class.selected]=\"rowIndex === selectedRowIndex\" [class.editting]=\"rowIndex === editRowIndex\" *ngFor=\"let row of data; let rowIndex = index\" cdkDrag\n (click)=\"handleClickRow($event, rowIndex)\" (dblclick)=\"handleDblClickRow($event, rowIndex)\">\n <co-form class=\"simple-grid-row-form\">\n <div class=\"simple-grid-column-cell\" *ngFor=\"let column of columns; let columnIndex = index\"\n [style.min-width.px]=\"column.width\" [style.max-width.px]=\"column.width\">\n <co-simple-grid-cell\n [column]=\"column\"\n [row]=\"row\"\n [editMode]=\"inlineEdit && editting && rowIndex === editRowIndex\"\n [fieldEditMode]=\"editCellIndex === columnIndex\"\n (cellClick)=\"handleCellClick(columnIndex)\"\n ></co-simple-grid-cell>\n <div *ngIf=\"column.resizable\" class=\"simple-grid-column-sizer-placeholder\"></div>\n </div>\n </co-form>\n </div>\n </div>\n </div>\n ",
8461
+ template: "\n <co-grid-toolbar *ngIf=\"inlineEdit && showToolbar\"\n (addClick)=\"addRow()\"\n (editClick)=\"editRow($event)\"\n (saveClick)=\"validateAndSave()\"\n (cancelClick)=\"cancelEditRow()\"\n ></co-grid-toolbar>\n <div class=\"simple-grid-column-header-wrapper\">\n <div class=\"simple-grid-column-header\" *ngFor=\"let column of columns; let index = index\"\n [style.min-width.px]=\"column.width\" [style.max-width.px]=\"column.width\" [style.padding-right.px]=\"isSingleColumn(column) ? 0 : 5\">\n <div class=\"simple-grid-column-header-label\" [ngClass]=\"column.textAlign ? column.textAlign : defaultTextAlign\"\n [textContent]=\"column.headerText\"\n ></div>\n <div *ngIf=\"column.resizable\" class=\"simple-grid-column-sizer\"\n (mousedown)=\"handleSizerMouseDown($event, column)\"\n ></div>\n </div>\n </div>\n <div cdkDropListGroup class=\"drop-list-group\">\n <div #dropList cdkDropList cdkDropListOrientation=\"vertical\"\n class=\"simple-grid-drag-drop-list\"\n [cdkDropListDisabled]=\"!dragDropEnabled\"\n [cdkDropListData]=\"data\"\n [cdkDropListEnterPredicate]=\"handleCanDragDrop\"\n (cdkDropListDropped)=\"handleDrop($event)\"\n >\n <div class=\"simple-grid-row\" [class.selected]=\"rowIndex === selectedRowIndex\"\n [class.editting]=\"rowIndex === editRowIndex\" *ngFor=\"let row of data; let rowIndex = index\" cdkDrag\n (click)=\"handleClickRow($event, rowIndex)\" (dblclick)=\"handleDblClickRow($event, rowIndex)\">\n <co-form class=\"simple-grid-row-form\">\n <div class=\"simple-grid-column-cell\" *ngFor=\"let column of columns; let columnIndex = index\"\n [style.min-width]=\"isSingleColumn(column) ? 'fit-content' : column.width\" [style.max-width.px]=\"column.width\"\n [style.padding-right.px]=\"isSingleColumn(column) ? 0 : 5\" >\n <co-simple-grid-cell\n [column]=\"column\"\n [row]=\"row\"\n [editMode]=\"inlineEdit && editting && rowIndex === editRowIndex && !isSingleColumn(column) && !rowContainsSingleColumn(row, columns)\"\n [fieldEditMode]=\"editCellIndex === columnIndex\"\n (cellClick)=\"handleCellClick(columnIndex)\"\n ></co-simple-grid-cell>\n <div *ngIf=\"column.resizable\" class=\"simple-grid-column-sizer-placeholder\"></div>\n </div>\n </co-form>\n </div>\n </div>\n </div>\n ",
8302
8462
  providers: [
8303
8463
  FormMasterService
8304
8464
  ],
8305
- // changeDetection: ChangeDetectionStrategy.OnPush,
8465
+ changeDetection: core.ChangeDetectionStrategy.OnPush,
8306
8466
  encapsulation: core.ViewEncapsulation.None
8307
8467
  },] }
8308
8468
  ];
@@ -8438,19 +8598,16 @@
8438
8598
  }
8439
8599
  };
8440
8600
  SimpleGridCellComponent.prototype._detectChanges = function () {
8441
- // setTimeout(() => {
8442
- this._changeDetector.markForCheck();
8443
- // this._changeDetector.detectChanges();
8444
- // });
8601
+ this._changeDetector.detectChanges();
8445
8602
  };
8446
8603
  return SimpleGridCellComponent;
8447
8604
  }());
8448
8605
  SimpleGridCellComponent.decorators = [
8449
8606
  { type: core.Component, args: [{
8450
8607
  selector: "co-simple-grid-cell",
8451
- template: "\n <div class=\"simple-grid-column-cell-value\" [ngClass]=\"column.textAlign ? column.textAlign : defaultTextAlign\">\n <ng-container *ngIf=\"editMode; else noInlineEdit\">\n <ng-container #editTemplate *ngIf=\"column.editTemplate; else noEditTemplate\" [ngTemplateOutlet]=\"column.editTemplate\" [ngTemplateOutletContext]=\"{value: row[column.field], row: row}\"></ng-container>\n <ng-template #noEditTemplate>\n <ng-container *ngIf=\"column.template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{value: row[column.field], row: row}\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <co-input-text [(model)]=\"row[column.field]\" [required]=\"column.required\"></co-input-text>\n </ng-template>\n </ng-template>\n </ng-container>\n <ng-template #noInlineEdit>\n <ng-container *ngIf=\"column.template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"column.template\" [ngTemplateOutletContext]=\"{value: row[column.field], row: row}\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <div [textContent]=\"column.getFieldValue(row[column.field])\"></div>\n </ng-template>\n </ng-template>\n </div>\n ",
8452
- encapsulation: core.ViewEncapsulation.None //,
8453
- // changeDetection: ChangeDetectionStrategy.OnPush
8608
+ template: "\n <div class=\"simple-grid-column-cell-value\" [ngClass]=\"column.textAlign ? column.textAlign : defaultTextAlign\">\n <ng-container *ngIf=\"editMode; else noInlineEdit\">\n <ng-container #editTemplate *ngIf=\"column.editTemplate; else noEditTemplate\"\n [ngTemplateOutlet]=\"column.editTemplate\"\n [ngTemplateOutletContext]=\"{value: row[column.field], row: row}\"></ng-container>\n <ng-template #noEditTemplate>\n <ng-container *ngIf=\"column.template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"{value: row[column.field], row: row}\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <co-input-text [(model)]=\"row[column.field]\" [required]=\"column.required\"></co-input-text>\n </ng-template>\n </ng-template>\n </ng-container>\n <ng-template #noInlineEdit>\n <ng-container *ngIf=\"column.template; else noTemplate\">\n <ng-container [ngTemplateOutlet]=\"column.template\"\n [ngTemplateOutletContext]=\"{value: row[column.field], row: row}\"></ng-container>\n </ng-container>\n <ng-template #noTemplate>\n <div [textContent]=\"column.getFieldValue(row[column.field])\"></div>\n </ng-template>\n </ng-template>\n </div>\n ",
8609
+ encapsulation: core.ViewEncapsulation.None,
8610
+ changeDetection: core.ChangeDetectionStrategy.OnPush
8454
8611
  },] }
8455
8612
  ];
8456
8613
  SimpleGridCellComponent.ctorParameters = function () { return [
@@ -8956,6 +9113,8 @@
8956
9113
  exports.TileModule = TileModule;
8957
9114
  exports["ɵa"] = RippleModule;
8958
9115
  exports["ɵb"] = MD_RIPPLE_GLOBAL_OPTIONS;
9116
+ exports["ɵba"] = BaseSimpleGridComponent;
9117
+ exports["ɵbb"] = SimpleGridCellComponent;
8959
9118
  exports["ɵc"] = CoRippleDirective;
8960
9119
  exports["ɵd"] = CoViewportRulerService;
8961
9120
  exports["ɵe"] = CoScrollDispatcherService;
@@ -8977,9 +9136,9 @@
8977
9136
  exports["ɵu"] = AppendPipe;
8978
9137
  exports["ɵv"] = ValidationErrorModule;
8979
9138
  exports["ɵw"] = ValidationErrorComponent;
8980
- exports["ɵx"] = PopupShowerService;
8981
- exports["ɵy"] = BaseSimpleGridComponent;
8982
- exports["ɵz"] = SimpleGridCellComponent;
9139
+ exports["ɵx"] = CommitButtonsModule;
9140
+ exports["ɵy"] = CommitButtonsComponent;
9141
+ exports["ɵz"] = PopupShowerService;
8983
9142
 
8984
9143
  Object.defineProperty(exports, '__esModule', { value: true });
8985
9144