@indigina/kendo 1.1.8 → 1.1.9

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.
@@ -5,28 +5,35 @@ import * as i0 from "@angular/core";
5
5
  import * as i1 from "@angular/forms";
6
6
  import * as i2 from "@ngx-translate/core";
7
7
  import * as i3 from "@angular/common";
8
- const emptyString = '';
8
+ const defaultValue = null;
9
9
  export class NumberInputComponent extends FieldInputComponent {
10
10
  constructor(parent, eref) {
11
11
  super(parent, eref);
12
12
  this.parent = parent;
13
13
  this.eref = eref;
14
14
  this.isPositive = false;
15
- this.type = 'number';
15
+ this.type = 'text';
16
16
  }
17
17
  ngAfterContentInit() {
18
18
  const control = this.parent.form.get(this.fieldName);
19
+ control.setValue(this.presetDefaultValue(control.value));
19
20
  control.valueChanges.subscribe((value) => {
20
- if (value !== this.cachedValue) {
21
+ value = this.presetDefaultValue(value);
22
+ if (value !== this.cachedValue &&
23
+ value !== defaultValue &&
24
+ !value.endsWith('.')) {
21
25
  this.cachedValue =
22
26
  (!this.isPositive && (value || value === 0)) ||
23
- (this.isPositive && value >= 0 && value !== emptyString)
27
+ (this.isPositive && value >= 0)
24
28
  ? +value
25
- : emptyString;
29
+ : defaultValue;
26
30
  control.setValue(this.cachedValue);
27
31
  }
28
32
  });
29
33
  }
34
+ presetDefaultValue(value) {
35
+ return value == '' ? defaultValue : value;
36
+ }
30
37
  }
31
38
  NumberInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NumberInputComponent, deps: [{ token: i1.FormGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
32
39
  NumberInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: NumberInputComponent, selector: "number-input", inputs: { isPositive: "isPositive" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ id }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\">\n <input\n [formControlName]=\"fieldName\"\n id=\"{{ id }}\"\n [type]=\"type\"\n class=\"k-input\"\n autocomplete=\"new-{{ fieldName }}\"\n placeholder=\"{{ labelKey | translate }}\"\n [attr.disabled]=\"disabled ? disabledKey : null\"\n />\n <ng-content></ng-content>\n <div\n class=\"bg-danger\"\n *ngIf=\"\n parent.form.get(fieldName) &&\n parent.form.get(fieldName).invalid &&\n parent.form.get(fieldName).touched\n \"\n >\n <span *ngIf=\"parent.form.get(fieldName).errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"parent.form.get(fieldName).errors['email']\">{{\n 'ValidEmail' | translate\n }}</span>\n <span *ngIf=\"parent.form.get(fieldName).errors['serverErrorMsg']\">{{\n parent.form.get(fieldName).errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", directives: [{ type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i2.TranslatePipe }, viewProviders: [
@@ -40,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
40
47
  }], ctorParameters: function () { return [{ type: i1.FormGroupDirective }, { type: i0.ElementRef }]; }, propDecorators: { isPositive: [{
41
48
  type: Input
42
49
  }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvYW5ndWxhci9mb3Jtcy93aWRnZXRzL2ZpZWxkL2ZpZWxkLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZW5kby9zcmMvbGliL2FuZ3VsYXIvZm9ybXMvd2lkZ2V0cy9maWVsZC9maWVsZC1pbnB1dC9maWVsZC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFFOUQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBU3ZCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFDM0QsWUFBbUIsTUFBMEIsRUFBUyxJQUFnQjtRQUNwRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBREgsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBSzdELGVBQVUsR0FBWSxLQUFLLENBQUM7UUFIbkMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQU1ELGtCQUFrQjtRQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkMsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFdBQVc7b0JBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUM1QyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssV0FBVyxDQUFDO3dCQUN0RCxDQUFDLENBQUMsQ0FBQyxLQUFLO3dCQUNSLENBQUMsQ0FBQyxXQUFXLENBQUM7Z0JBRWxCLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3BDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztpSEF2QlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsaUhDYmpDLDRuQ0FxQ0EsNnVCRDVCaUI7UUFDYixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUU7S0FDL0Q7MkZBRVUsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLGNBQWMsaUJBRVQ7d0JBQ2IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO3FCQUMvRDtrSUFRUSxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbENvbnRhaW5lciwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZmllbGQtaW5wdXQuY29tcG9uZW50JztcblxuY29uc3QgZW1wdHlTdHJpbmcgPSAnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbnVtYmVyLWlucHV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgdmlld1Byb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IEZvcm1Hcm91cERpcmVjdGl2ZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOdW1iZXJJbnB1dENvbXBvbmVudCBleHRlbmRzIEZpZWxkSW5wdXRDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcGFyZW50OiBGb3JtR3JvdXBEaXJlY3RpdmUsIHB1YmxpYyBlcmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIocGFyZW50LCBlcmVmKTtcbiAgICB0aGlzLnR5cGUgPSAnbnVtYmVyJztcbiAgfVxuXG4gIEBJbnB1dCgpIGlzUG9zaXRpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGNhY2hlZFZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLnBhcmVudC5mb3JtLmdldCh0aGlzLmZpZWxkTmFtZSk7XG4gICAgY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKHZhbHVlICE9PSB0aGlzLmNhY2hlZFZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2FjaGVkVmFsdWUgPVxuICAgICAgICAgICghdGhpcy5pc1Bvc2l0aXZlICYmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkpIHx8XG4gICAgICAgICAgKHRoaXMuaXNQb3NpdGl2ZSAmJiB2YWx1ZSA+PSAwICYmIHZhbHVlICE9PSBlbXB0eVN0cmluZylcbiAgICAgICAgICAgID8gK3ZhbHVlXG4gICAgICAgICAgICA6IGVtcHR5U3RyaW5nO1xuXG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodGhpcy5jYWNoZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gIDxsYWJlbFxuICAgIGZvcj1cInt7IGlkIH19XCJcbiAgICBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIlxuICAgIHRyYW5zbGF0ZT1cInt7IGxhYmVsS2V5IH19XCJcbiAgPjwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxuICAgIDxpbnB1dFxuICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZE5hbWVcIlxuICAgICAgaWQ9XCJ7eyBpZCB9fVwiXG4gICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgIGNsYXNzPVwiay1pbnB1dFwiXG4gICAgICBhdXRvY29tcGxldGU9XCJuZXcte3sgZmllbGROYW1lIH19XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwie3sgbGFiZWxLZXkgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgW2F0dHIuZGlzYWJsZWRdPVwiZGlzYWJsZWQgPyBkaXNhYmxlZEtleSA6IG51bGxcIlxuICAgIC8+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYmctZGFuZ2VyXCJcbiAgICAgICpuZ0lmPVwiXG4gICAgICAgIHBhcmVudC5mb3JtLmdldChmaWVsZE5hbWUpICYmXG4gICAgICAgIHBhcmVudC5mb3JtLmdldChmaWVsZE5hbWUpLmludmFsaWQgJiZcbiAgICAgICAgcGFyZW50LmZvcm0uZ2V0KGZpZWxkTmFtZSkudG91Y2hlZFxuICAgICAgXCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cInBhcmVudC5mb3JtLmdldChmaWVsZE5hbWUpLmVycm9yc1sncmVxdWlyZWQnXVwiPnt7XG4gICAgICAgICdSZXF1aXJlZCcgfCB0cmFuc2xhdGU6IHsgcGFyYW0wOiBsYWJlbEtleSB8IHRyYW5zbGF0ZSB9XG4gICAgICB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGFyZW50LmZvcm0uZ2V0KGZpZWxkTmFtZSkuZXJyb3JzWydlbWFpbCddXCI+e3tcbiAgICAgICAgJ1ZhbGlkRW1haWwnIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGFyZW50LmZvcm0uZ2V0KGZpZWxkTmFtZSkuZXJyb3JzWydzZXJ2ZXJFcnJvck1zZyddXCI+e3tcbiAgICAgICAgcGFyZW50LmZvcm0uZ2V0KGZpZWxkTmFtZSkuZXJyb3JzWydzZXJ2ZXJFcnJvck1zZyddXG4gICAgICB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlbmRvL3NyYy9saWIvYW5ndWxhci9mb3Jtcy93aWRnZXRzL2ZpZWxkL2ZpZWxkLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZW5kby9zcmMvbGliL2FuZ3VsYXIvZm9ybXMvd2lkZ2V0cy9maWVsZC9maWVsZC1pbnB1dC9maWVsZC1pbnB1dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFFOUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBUzFCLE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxtQkFBbUI7SUFDM0QsWUFBbUIsTUFBMEIsRUFBUyxJQUFnQjtRQUNwRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBREgsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFBUyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBSzdELGVBQVUsR0FBWSxLQUFLLENBQUM7UUFIbkMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU1ELGtCQUFrQjtRQUNoQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDdkMsS0FBSyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QyxJQUNFLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVztnQkFDMUIsS0FBSyxLQUFLLFlBQVk7Z0JBQ3RCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFDcEI7Z0JBQ0EsSUFBSSxDQUFDLFdBQVc7b0JBQ2QsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDO3dCQUM1QyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQzt3QkFDN0IsQ0FBQyxDQUFDLENBQUMsS0FBSzt3QkFDUixDQUFDLENBQUMsWUFBWSxDQUFDO2dCQUVuQixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQXNCO1FBQy9DLE9BQU8sS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUMsQ0FBQzs7aUhBakNVLG9CQUFvQjtxR0FBcEIsb0JBQW9CLGlIQ2JqQyw0bkNBcUNBLDZ1QkQ1QmlCO1FBQ2IsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFO0tBQy9EOzJGQUVVLG9CQUFvQjtrQkFQaEMsU0FBUzsrQkFDRSxjQUFjLGlCQUVUO3dCQUNiLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxrQkFBa0IsRUFBRTtxQkFDL0Q7a0lBUVEsVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZpZWxkSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkLWlucHV0LmNvbXBvbmVudCc7XG5cbmNvbnN0IGRlZmF1bHRWYWx1ZSA9IG51bGw7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ251bWJlci1pbnB1dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9maWVsZC1pbnB1dC5jb21wb25lbnQuaHRtbCcsXG4gIHZpZXdQcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IENvbnRyb2xDb250YWluZXIsIHVzZUV4aXN0aW5nOiBGb3JtR3JvdXBEaXJlY3RpdmUgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTnVtYmVySW5wdXRDb21wb25lbnQgZXh0ZW5kcyBGaWVsZElucHV0Q29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHVibGljIHBhcmVudDogRm9ybUdyb3VwRGlyZWN0aXZlLCBwdWJsaWMgZXJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKHBhcmVudCwgZXJlZik7XG4gICAgdGhpcy50eXBlID0gJ3RleHQnO1xuICB9XG5cbiAgQElucHV0KCkgaXNQb3NpdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgY2FjaGVkVmFsdWU6IG51bWJlciB8IHN0cmluZztcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMucGFyZW50LmZvcm0uZ2V0KHRoaXMuZmllbGROYW1lKTtcbiAgICBjb250cm9sLnNldFZhbHVlKHRoaXMucHJlc2V0RGVmYXVsdFZhbHVlKGNvbnRyb2wudmFsdWUpKTtcbiAgICBjb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG4gICAgICB2YWx1ZSA9IHRoaXMucHJlc2V0RGVmYXVsdFZhbHVlKHZhbHVlKTtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWUgIT09IHRoaXMuY2FjaGVkVmFsdWUgJiZcbiAgICAgICAgdmFsdWUgIT09IGRlZmF1bHRWYWx1ZSAmJlxuICAgICAgICAhdmFsdWUuZW5kc1dpdGgoJy4nKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY2FjaGVkVmFsdWUgPVxuICAgICAgICAgICghdGhpcy5pc1Bvc2l0aXZlICYmICh2YWx1ZSB8fCB2YWx1ZSA9PT0gMCkpIHx8XG4gICAgICAgICAgKHRoaXMuaXNQb3NpdGl2ZSAmJiB2YWx1ZSA+PSAwKVxuICAgICAgICAgICAgPyArdmFsdWVcbiAgICAgICAgICAgIDogZGVmYXVsdFZhbHVlO1xuXG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUodGhpcy5jYWNoZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByZXNldERlZmF1bHRWYWx1ZSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHwgc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWUgPT0gJycgPyBkZWZhdWx0VmFsdWUgOiB2YWx1ZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsXG4gICAgZm9yPVwie3sgaWQgfX1cIlxuICAgIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiXG4gICAgdHJhbnNsYXRlPVwie3sgbGFiZWxLZXkgfX1cIlxuICA+PC9sYWJlbD5cbiAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XG4gICAgPGlucHV0XG4gICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkTmFtZVwiXG4gICAgICBpZD1cInt7IGlkIH19XCJcbiAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgY2xhc3M9XCJrLWlucHV0XCJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy17eyBmaWVsZE5hbWUgfX1cIlxuICAgICAgcGxhY2Vob2xkZXI9XCJ7eyBsYWJlbEtleSB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICBbYXR0ci5kaXNhYmxlZF09XCJkaXNhYmxlZCA/IGRpc2FibGVkS2V5IDogbnVsbFwiXG4gICAgLz5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJiZy1kYW5nZXJcIlxuICAgICAgKm5nSWY9XCJcbiAgICAgICAgcGFyZW50LmZvcm0uZ2V0KGZpZWxkTmFtZSkgJiZcbiAgICAgICAgcGFyZW50LmZvcm0uZ2V0KGZpZWxkTmFtZSkuaW52YWxpZCAmJlxuICAgICAgICBwYXJlbnQuZm9ybS5nZXQoZmllbGROYW1lKS50b3VjaGVkXG4gICAgICBcIlxuICAgID5cbiAgICAgIDxzcGFuICpuZ0lmPVwicGFyZW50LmZvcm0uZ2V0KGZpZWxkTmFtZSkuZXJyb3JzWydyZXF1aXJlZCddXCI+e3tcbiAgICAgICAgJ1JlcXVpcmVkJyB8IHRyYW5zbGF0ZTogeyBwYXJhbTA6IGxhYmVsS2V5IHwgdHJhbnNsYXRlIH1cbiAgICAgIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJwYXJlbnQuZm9ybS5nZXQoZmllbGROYW1lKS5lcnJvcnNbJ2VtYWlsJ11cIj57e1xuICAgICAgICAnVmFsaWRFbWFpbCcgfCB0cmFuc2xhdGVcbiAgICAgIH19PC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJwYXJlbnQuZm9ybS5nZXQoZmllbGROYW1lKS5lcnJvcnNbJ3NlcnZlckVycm9yTXNnJ11cIj57e1xuICAgICAgICBwYXJlbnQuZm9ybS5nZXQoZmllbGROYW1lKS5lcnJvcnNbJ3NlcnZlckVycm9yTXNnJ11cbiAgICAgIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -174,28 +174,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
174
174
  type: Input
175
175
  }] } });
176
176
 
177
- const emptyString = '';
177
+ const defaultValue = null;
178
178
  class NumberInputComponent extends FieldInputComponent {
179
179
  constructor(parent, eref) {
180
180
  super(parent, eref);
181
181
  this.parent = parent;
182
182
  this.eref = eref;
183
183
  this.isPositive = false;
184
- this.type = 'number';
184
+ this.type = 'text';
185
185
  }
186
186
  ngAfterContentInit() {
187
187
  const control = this.parent.form.get(this.fieldName);
188
+ control.setValue(this.presetDefaultValue(control.value));
188
189
  control.valueChanges.subscribe((value) => {
189
- if (value !== this.cachedValue) {
190
+ value = this.presetDefaultValue(value);
191
+ if (value !== this.cachedValue &&
192
+ value !== defaultValue &&
193
+ !value.endsWith('.')) {
190
194
  this.cachedValue =
191
195
  (!this.isPositive && (value || value === 0)) ||
192
- (this.isPositive && value >= 0 && value !== emptyString)
196
+ (this.isPositive && value >= 0)
193
197
  ? +value
194
- : emptyString;
198
+ : defaultValue;
195
199
  control.setValue(this.cachedValue);
196
200
  }
197
201
  });
198
202
  }
203
+ presetDefaultValue(value) {
204
+ return value == '' ? defaultValue : value;
205
+ }
199
206
  }
200
207
  NumberInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: NumberInputComponent, deps: [{ token: i1$3.FormGroupDirective }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
201
208
  NumberInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: NumberInputComponent, selector: "number-input", inputs: { isPositive: "isPositive" }, usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\">\n <label\n for=\"{{ id }}\"\n class=\"col-md-3 control-label\"\n translate=\"{{ labelKey }}\"\n ></label>\n <div class=\"col-md-9\">\n <input\n [formControlName]=\"fieldName\"\n id=\"{{ id }}\"\n [type]=\"type\"\n class=\"k-input\"\n autocomplete=\"new-{{ fieldName }}\"\n placeholder=\"{{ labelKey | translate }}\"\n [attr.disabled]=\"disabled ? disabledKey : null\"\n />\n <ng-content></ng-content>\n <div\n class=\"bg-danger\"\n *ngIf=\"\n parent.form.get(fieldName) &&\n parent.form.get(fieldName).invalid &&\n parent.form.get(fieldName).touched\n \"\n >\n <span *ngIf=\"parent.form.get(fieldName).errors['required']\">{{\n 'Required' | translate: { param0: labelKey | translate }\n }}</span>\n <span *ngIf=\"parent.form.get(fieldName).errors['email']\">{{\n 'ValidEmail' | translate\n }}</span>\n <span *ngIf=\"parent.form.get(fieldName).errors['serverErrorMsg']\">{{\n parent.form.get(fieldName).errors['serverErrorMsg']\n }}</span>\n </div>\n </div>\n</div>\n", directives: [{ type: i1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "translate": i1.TranslatePipe }, viewProviders: [