UNPKG

@true-directive/grid

Version:

Angular Data Grid from Yopsilon.

144 lines 17.2 kB
import * as tslib_1 from "tslib"; /** * Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company. * @link https://truedirective.com/ * @license MIT */ import { Component, Output, EventEmitter, ViewChild, Renderer2 } from '@angular/core'; import { Keys } from '@true-directive/base'; import { MaskNumberDirective } from '../mask/mask-number.directive'; var EditorNumberComponent = /** @class */ (function () { function EditorNumberComponent(_renderer) { this._renderer = _renderer; this.ie = false; this.value = null; this.format = '{1.2}'; this.height = 0; this.commit = new EventEmitter(); this.cancel = new EventEmitter(); this.change = new EventEmitter(); this._initialized = false; } EditorNumberComponent.prototype.init = function (value, valueChanged, height, ie, wasShown) { if (ie === void 0) { ie = false; } if (wasShown === void 0) { wasShown = false; } this.ie = ie; this.valueChanged = valueChanged; this.valueTemp = value; this.height = height; }; EditorNumberComponent.prototype.ngAfterContentInit = function () { var _this = this; if (!this.valueChanged) { this.value = this.valueTemp; setTimeout(function () { return _this.input.nativeElement.select(); }); this._initialized = true; } else { var txt_1 = this.valueTemp; setTimeout(function () { if (txt_1 !== null && txt_1 !== '') { for (var i = 0; i < txt_1.length; i++) { var e = Keys.generateEvent(_this.input.nativeElement, 99, txt_1[i]); _this.maskNumberDirective.processKey(e); } _this._initialized = true; _this.inputChange(txt_1); } _this.input.nativeElement.focus(); }); } }; EditorNumberComponent.prototype.inputMouseDown = function (e) { e.stopPropagation(); }; EditorNumberComponent.prototype.inputChange = function (e) { if (!this._initialized) { return; } //Только если valid number. Иначе нулл if (isNaN(e) || e === '' || e === null) { this.change.emit(null); return; } this.change.emit(+e); }; EditorNumberComponent.prototype.inputKeyDown = function (e) { if (e.defaultPrevented) { return; } if (e.keyCode === Keys.UP || e.keyCode === Keys.DOWN || e.keyCode === Keys.PAGE_UP || e.keyCode === Keys.PAGE_DOWN || e.keyCode === Keys.TAB) { // По идее просто их должен отработать грид return; } e.stopPropagation(); if (e.keyCode === Keys.ESCAPE) { this.cancel.emit(); return; } if (e.keyCode === Keys.ENTER) { this.commit.emit(this.value); return; } }; // Если у нас есть информация о высоте строки - берем её и не // назначаем никакого класса EditorNumberComponent.prototype.getClass = function () { if ((this.height !== null && this.height > 0)) { return ''; } if (this.ie) { return 'true-grid-editor-ie'; } else { return 'true-grid-editor-100p'; } }; EditorNumberComponent.prototype.getH = function () { if (this.height !== null && this.height > 0) { return this.height + 'px'; } return '100%'; }; EditorNumberComponent.prototype.getFormat = function () { if (this.column.format !== '') { return this.column.format; } return '{1}'; }; tslib_1.__decorate([ ViewChild('input', { static: true }), tslib_1.__metadata("design:type", Object) ], EditorNumberComponent.prototype, "input", void 0); tslib_1.__decorate([ ViewChild('input', { read: MaskNumberDirective, static: true }), tslib_1.__metadata("design:type", MaskNumberDirective) ], EditorNumberComponent.prototype, "maskNumberDirective", void 0); tslib_1.__decorate([ Output('commit'), tslib_1.__metadata("design:type", EventEmitter) ], EditorNumberComponent.prototype, "commit", void 0); tslib_1.__decorate([ Output('cancel'), tslib_1.__metadata("design:type", EventEmitter) ], EditorNumberComponent.prototype, "cancel", void 0); tslib_1.__decorate([ Output('change'), tslib_1.__metadata("design:type", EventEmitter) ], EditorNumberComponent.prototype, "change", void 0); EditorNumberComponent = tslib_1.__decorate([ Component({ selector: 'true-editor-number', template: "<input #input\n class=\"true-grid-input true-editor-number__input true-grid__input-container\"\n [true-mask-number]=\"getFormat()\"\n [style.height]=\"getH()\"\n [ngClass]=\"getClass()\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"inputChange($event)\"\n (mousedown)=\"inputMouseDown($event)\"\n (keydown)=\"inputKeyDown($event)\" />", styles: ["\n :host {\n padding: 0;\n }\n .true-editor-number__input {\n text-align: right;\n }\n "] }), tslib_1.__metadata("design:paramtypes", [Renderer2]) ], EditorNumberComponent); return EditorNumberComponent; }()); export { EditorNumberComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLW51bWJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9lZGl0b3JzL2VkaXRvci1udW1iZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztFQUlFO0FBQ0YsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJN0YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBd0JwRTtJQXFJRSwrQkFBc0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQW5JMUMsT0FBRSxHQUFHLEtBQUssQ0FBQztRQUNYLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBRzVCLFdBQU0sR0FBRyxPQUFPLENBQUM7UUFDakIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQWNYLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcvQyxXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHaEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBd0dpQixDQUFDO0lBdkcvQyxvQ0FBSSxHQUFKLFVBQUssS0FBVSxFQUFFLFlBQXFCLEVBQUUsTUFBYyxFQUFFLEVBQW1CLEVBQUUsUUFBeUI7UUFBOUMsbUJBQUEsRUFBQSxVQUFtQjtRQUFFLHlCQUFBLEVBQUEsZ0JBQXlCO1FBQ3BHLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0s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UUFBUSxFQUFFLHViQVFzQztxQkFDdkMsa0hBT047U0FDRixDQUFDO2lEQXNJK0IsU0FBUztPQXJJL0IscUJBQXFCLENBc0lqQztJQUFELDRCQUFDO0NBQUEsQUF0SUQsSUFzSUM7U0F0SVkscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDE5IEFsZWtzZXkgTWVsbmlrb3YsIFRydWUgRGlyZWN0aXZlIENvbXBhbnkuXHJcbiAqIEBsaW5rIGh0dHBzOi8vdHJ1ZWRpcmVjdGl2ZS5jb20vXHJcbiAqIEBsaWNlbnNlIE1JVFxyXG4qL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENvbHVtbiB9IGZyb20gJ0B0cnVlLWRpcmVjdGl2ZS9iYXNlJztcclxuaW1wb3J0IHsgR3JpZFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2dyaWQtc3RhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEtleXMgfSBmcm9tICdAdHJ1ZS1kaXJlY3RpdmUvYmFzZSc7XHJcblxyXG5pbXBvcnQgeyBNYXNrTnVtYmVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vbWFzay9tYXNrLW51bWJlci5kaXJlY3RpdmUnO1xyXG5cclxuaW1wb3J0IHsgSUVkaXRvciB9IGZyb20gXCIuL2VkaXRvci5pbnRlcmZhY2VcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1ZS1lZGl0b3ItbnVtYmVyJyxcclxuICB0ZW1wbGF0ZTogYDxpbnB1dCAjaW5wdXRcclxuICAgICAgICAgICAgICBjbGFzcz1cInRydWUtZ3JpZC1pbnB1dCB0cnVlLWVkaXRvci1udW1iZXJfX2lucHV0IHRydWUtZ3JpZF9faW5wdXQtY29udGFpbmVyXCJcclxuICAgICAgICAgICAgICBbdHJ1ZS1tYXNrLW51bWJlcl09XCJnZXRGb3JtYXQoKVwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJnZXRIKClcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdldENsYXNzKClcIlxyXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImlucHV0Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIChtb3VzZWRvd24pPVwiaW5wdXRNb3VzZURvd24oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGtleWRvd24pPVwiaW5wdXRLZXlEb3duKCRldmVudClcIiAvPmAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgOmhvc3Qge1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG4gICAgLnRydWUtZWRpdG9yLW51bWJlcl9faW5wdXQge1xyXG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIH1cclxuICAgIGBdXHJcbiAgfSlcclxuZXhwb3J0IGNsYXNzIEVkaXRvck51bWJlckNvbXBvbmVudCBpbXBsZW1lbnRzIElFZGl0b3Ige1xyXG5cclxuICBpZSA9IGZhbHNlO1xyXG4gIHZhbHVlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcclxuICB2YWx1ZVRlbXA6IGFueTtcclxuICB2YWx1ZUNoYW5nZWQ6IGJvb2xlYW47XHJcbiAgZm9ybWF0ID0gJ3sxLjJ9JztcclxuICBoZWlnaHQgPSAwO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHtzdGF0aWM6IHRydWV9KVxyXG4gIGlucHV0OiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Jywge3JlYWQ6IE1hc2tOdW1iZXJEaXJlY3RpdmUsIHN0YXRpYzogdHJ1ZX0pXHJcbiAgbWFza051bWJlckRpcmVjdGl2ZTogTWFza051bWJlckRpcmVjdGl2ZTtcclxuXHJcbiAgLy8gSW1wbGVtZW50YXRpb24gb2YgSUVkaXRvclxyXG4gIHN0YXRlOiBHcmlkU3RhdGVTZXJ2aWNlO1xyXG4gIGNvbHVtbjogQ29sdW1uO1xyXG4gIHJvdzogYW55O1xyXG5cclxuICBAT3V0cHV0KCdjb21taXQnKVxyXG4gIGNvbW1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoJ2NhbmNlbCcpXHJcbiAgY2FuY2VsOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBPdXRwdXQoJ2NoYW5nZScpXHJcbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICBpbml0KHZhbHVlOiBhbnksIHZhbHVlQ2hhbmdlZDogYm9vbGVhbiwgaGVpZ2h0OiBudW1iZXIsIGllOiBib29sZWFuID0gZmFsc2UsIHdhc1Nob3duOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuaWUgPSBpZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VkID0gdmFsdWVDaGFuZ2VkO1xyXG4gICAgdGhpcy52YWx1ZVRlbXAgPSB2YWx1ZTtcclxuICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgaWYoIXRoaXMudmFsdWVDaGFuZ2VkKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlVGVtcDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCkpO1xyXG4gICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB0eHQgPSB0aGlzLnZhbHVlVGVtcDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHR4dCAhPT0gbnVsbCAmJiB0eHQgIT09ICcnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBlID0gS2V5cy5nZW5lcmF0ZUV2ZW50KHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCwgOTksIHR4dFtpXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWFza051bWJlckRpcmVjdGl2ZS5wcm9jZXNzS2V5KGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pbnB1dENoYW5nZSh0eHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dE1vdXNlRG93bihlOiBhbnkpIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBpbnB1dENoYW5nZShlOiBhbnkpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuX2luaXRpYWxpemVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICAvL9Ci0L7Qu9GM0LrQviDQtdGB0LvQuCB2YWxpZCBudW1iZXIuINCY0L3QsNGH0LUg0L3Rg9C70LtcclxuICAgIGlmIChpc05hTihlKSB8fCBlID09PSAnJyB8fCBlID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQobnVsbCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoK2UpO1xyXG4gIH1cclxuXHJcbiAgaW5wdXRLZXlEb3duKGU6IGFueSkge1xyXG5cclxuICAgIGlmIChlLmRlZmF1bHRQcmV2ZW50ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlLmtleUNvZGUgPT09IEtleXMuVVAgfHxcclxuICAgICAgICBlLmtleUNvZGUgPT09IEtleXMuRE9XTiB8fFxyXG4gICAgICAgIGUua2V5Q29kZSA9PT0gS2V5cy5QQUdFX1VQIHx8XHJcbiAgICAgICAgZS5rZXlDb2RlID09PSBLZXlzLlBBR0VfRE9XTiB8fFxyXG4gICAgICAgIGUua2V5Q29kZSA9PT0gS2V5cy5UQUIpIHtcclxuICAgICAgLy8g0J/QviDQuNC00LXQtSDQv9GA0L7RgdGC0L4g0LjRhSDQtNC+0LvQttC10L0g0L7RgtGA0LDQsdC+0YLQsNGC0Ywg0LPRgNC40LRcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgaWYgKGUua2V5Q29kZSA9PT0gS2V5cy5FU0NBUEUpIHtcclxuICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGUua2V5Q29kZSA9PT0gS2V5cy5FTlRFUikge1xyXG4gICAgICB0aGlzLmNvbW1pdC5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDQldGB0LvQuCDRgyDQvdCw0YEg0LXRgdGC0Ywg0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0LLRi9GB0L7RgtC1INGB0YLRgNC+0LrQuCAtINCx0LXRgNC10Lwg0LXRkSDQuCDQvdC1XHJcbiAgLy8g0L3QsNC30L3QsNGH0LDQtdC8INC90LjQutCw0LrQvtCz0L4g0LrQu9Cw0YHRgdCwXHJcbiAgZ2V0Q2xhc3MoKSB7XHJcblxyXG4gICAgaWYgKCh0aGlzLmhlaWdodCAhPT0gbnVsbCAmJiB0aGlzLmhlaWdodCA+IDApKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pZSkge1xyXG4gICAgICByZXR1cm4gJ3RydWUtZ3JpZC1lZGl0b3ItaWUnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICd0cnVlLWdyaWQtZWRpdG9yLTEwMHAnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0SCgpIHtcclxuICAgIGlmICh0aGlzLmhlaWdodCAhPT0gbnVsbCAmJiB0aGlzLmhlaWdodCA+IDApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaGVpZ2h0ICsgJ3B4JztcclxuICAgIH1cclxuICAgIHJldHVybiAnMTAwJSc7XHJcbiAgfVxyXG5cclxuICBnZXRGb3JtYXQoKSB7XHJcbiAgICBpZiAodGhpcy5jb2x1bW4uZm9ybWF0ICE9PSAnJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZm9ybWF0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICd7MX0nO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9yZW5kZXJlcjogUmVuZGVyZXIyKSB7IH1cclxufVxyXG4iXX0=