@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
155 lines • 16.5 kB
JavaScript
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';
let EditorNumberComponent = class EditorNumberComponent {
constructor(_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;
}
init(value, valueChanged, height, ie = false, wasShown = false) {
this.ie = ie;
this.valueChanged = valueChanged;
this.valueTemp = value;
this.height = height;
}
ngAfterContentInit() {
if (!this.valueChanged) {
this.value = this.valueTemp;
setTimeout(() => this.input.nativeElement.select());
this._initialized = true;
}
else {
const txt = this.valueTemp;
setTimeout(() => {
if (txt !== null && txt !== '') {
for (let i = 0; i < txt.length; i++) {
const e = Keys.generateEvent(this.input.nativeElement, 99, txt[i]);
this.maskNumberDirective.processKey(e);
}
this._initialized = true;
this.inputChange(txt);
}
this.input.nativeElement.focus();
});
}
}
inputMouseDown(e) {
e.stopPropagation();
}
inputChange(e) {
if (!this._initialized) {
return;
}
//Только если valid number. Иначе нулл
if (isNaN(e) || e === '' || e === null) {
this.change.emit(null);
return;
}
this.change.emit(+e);
}
inputKeyDown(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;
}
}
// Если у нас есть информация о высоте строки - берем её и не
// назначаем никакого класса
getClass() {
if ((this.height !== null && this.height > 0)) {
return '';
}
if (this.ie) {
return 'true-grid-editor-ie';
}
else {
return 'true-grid-editor-100p';
}
}
getH() {
if (this.height !== null && this.height > 0) {
return this.height + 'px';
}
return '100%';
}
getFormat() {
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
class="true-grid-input true-editor-number__input true-grid__input-container"
[true-mask-number]="getFormat()"
[style.height]="getH()"
[ngClass]="getClass()"
[(ngModel)]="value"
(ngModelChange)="inputChange($event)"
(mousedown)="inputMouseDown($event)"
(keydown)="inputKeyDown($event)" />`,
styles: [`
:host {
padding: 0;
}
.true-editor-number__input {
text-align: right;
}
`]
}),
tslib_1.__metadata("design:paramtypes", [Renderer2])
], EditorNumberComponent);
export { EditorNumberComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLW51bWJlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdHJ1ZS1kaXJlY3RpdmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9lZGl0b3JzL2VkaXRvci1udW1iZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztFQUlFO0FBQ0YsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJN0YsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBd0JwRSxJQUFhLHFCQUFxQixHQUFsQyxNQUFhLHFCQUFxQjtJQXFJaEMsWUFBc0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQW5JMUMsT0FBRSxHQUFHLEtBQUssQ0FBQztRQUNYLFVBQUssR0FBa0IsSUFBSSxDQUFDO1FBRzVCLFdBQU0sR0FBRyxPQUFPLENBQUM7UUFDakIsV0FBTSxHQUFHLENBQUMsQ0FBQztRQWNYLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUcvQyxXQUFNLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHaEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRXZDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBd0dpQixDQUFDO0lBdkcvQyxJQUFJLENBQUMsS0FBVSxFQUFFLFlBQXFCLEVBQUUsTUFBYyxFQUFFLEtBQWMsS0FBSyxFQUFFLFdBQW9CLEtBQUs7UUFDcEcsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FB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QXNJK0IsU0FBUztHQXJJL0IscUJBQXFCLENBc0lqQztTQXRJWSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQ29weXJpZ2h0IChjKSAyMDE4LTIwMTkgQWxla3NleSBNZWxuaWtvdiwgVHJ1ZSBEaXJlY3RpdmUgQ29tcGFueS5cclxuICogQGxpbmsgaHR0cHM6Ly90cnVlZGlyZWN0aXZlLmNvbS9cclxuICogQGxpY2Vuc2UgTUlUXHJcbiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgQ29sdW1uIH0gZnJvbSAnQHRydWUtZGlyZWN0aXZlL2Jhc2UnO1xyXG5pbXBvcnQgeyBHcmlkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgS2V5cyB9IGZyb20gJ0B0cnVlLWRpcmVjdGl2ZS9iYXNlJztcclxuXHJcbmltcG9ydCB7IE1hc2tOdW1iZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9tYXNrL21hc2stbnVtYmVyLmRpcmVjdGl2ZSc7XHJcblxyXG5pbXBvcnQgeyBJRWRpdG9yIH0gZnJvbSBcIi4vZWRpdG9yLmludGVyZmFjZVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnVlLWVkaXRvci1udW1iZXInLFxyXG4gIHRlbXBsYXRlOiBgPGlucHV0ICNpbnB1dFxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidHJ1ZS1ncmlkLWlucHV0IHRydWUtZWRpdG9yLW51bWJlcl9faW5wdXQgdHJ1ZS1ncmlkX19pbnB1dC1jb250YWluZXJcIlxyXG4gICAgICAgICAgICAgIFt0cnVlLW1hc2stbnVtYmVyXT1cImdldEZvcm1hdCgpXCJcclxuICAgICAgICAgICAgICBbc3R5bGUuaGVpZ2h0XT1cImdldEgoKVwiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ2V0Q2xhc3MoKVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiaW5wdXRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJpbnB1dE1vdXNlRG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoa2V5ZG93bik9XCJpbnB1dEtleURvd24oJGV2ZW50KVwiIC8+YCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICA6aG9zdCB7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICB9XHJcbiAgICAudHJ1ZS1lZGl0b3ItbnVtYmVyX19pbnB1dCB7XHJcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgfVxyXG4gICAgYF1cclxuICB9KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yTnVtYmVyQ29tcG9uZW50IGltcGxlbWVudHMgSUVkaXRvciB7XHJcblxyXG4gIGllID0gZmFsc2U7XHJcbiAgdmFsdWU6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gIHZhbHVlVGVtcDogYW55O1xyXG4gIHZhbHVlQ2hhbmdlZDogYm9vbGVhbjtcclxuICBmb3JtYXQgPSAnezEuMn0nO1xyXG4gIGhlaWdodCA9IDA7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0Jywge3N0YXRpYzogdHJ1ZX0pXHJcbiAgaW5wdXQ6IGFueTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnaW5wdXQnLCB7cmVhZDogTWFza051bWJlckRpcmVjdGl2ZSwgc3RhdGljOiB0cnVlfSlcclxuICBtYXNrTnVtYmVyRGlyZWN0aXZlOiBNYXNrTnVtYmVyRGlyZWN0aXZlO1xyXG5cclxuICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBJRWRpdG9yXHJcbiAgc3RhdGU6IEdyaWRTdGF0ZVNlcnZpY2U7XHJcbiAgY29sdW1uOiBDb2x1bW47XHJcbiAgcm93OiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoJ2NvbW1pdCcpXHJcbiAgY29tbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgnY2FuY2VsJylcclxuICBjYW5jZWw6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgnY2hhbmdlJylcclxuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcml2YXRlIF9pbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gIGluaXQodmFsdWU6IGFueSwgdmFsdWVDaGFuZ2VkOiBib29sZWFuLCBoZWlnaHQ6IG51bWJlciwgaWU6IGJvb2xlYW4gPSBmYWxzZSwgd2FzU2hvd246IGJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgdGhpcy5pZSA9IGllO1xyXG4gICAgdGhpcy52YWx1ZUNoYW5nZWQgPSB2YWx1ZUNoYW5nZWQ7XHJcbiAgICB0aGlzLnZhbHVlVGVtcCA9IHZhbHVlO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICBpZighdGhpcy52YWx1ZUNoYW5nZWQpIHtcclxuICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWVUZW1wO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3QoKSk7XHJcbiAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHR4dCA9IHRoaXMudmFsdWVUZW1wO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodHh0ICE9PSBudWxsICYmIHR4dCAhPT0gJycpIHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHh0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGUgPSBLZXlzLmdlbmVyYXRlRXZlbnQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LCA5OSwgdHh0W2ldKTtcclxuICAgICAgICAgICAgdGhpcy5tYXNrTnVtYmVyRGlyZWN0aXZlLnByb2Nlc3NLZXkoZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmlucHV0Q2hhbmdlKHR4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlucHV0TW91c2VEb3duKGU6IGFueSkge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGlucHV0Q2hhbmdlKGU6IGFueSkge1xyXG5cclxuICAgIGlmICghdGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8v0KLQvtC70YzQutC+INC10YHQu9C4IHZhbGlkIG51bWJlci4g0JjQvdCw0YfQtSDQvdGD0LvQu1xyXG4gICAgaWYgKGlzTmFOKGUpIHx8IGUgPT09ICcnIHx8IGUgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5jaGFuZ2UuZW1pdChudWxsKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGFuZ2UuZW1pdCgrZSk7XHJcbiAgfVxyXG5cclxuICBpbnB1dEtleURvd24oZTogYW55KSB7XHJcblxyXG4gICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGUua2V5Q29kZSA9PT0gS2V5cy5VUCB8fFxyXG4gICAgICAgIGUua2V5Q29kZSA9PT0gS2V5cy5ET1dOIHx8XHJcbiAgICAgICAgZS5rZXlDb2RlID09PSBLZXlzLlBBR0VfVVAgfHxcclxuICAgICAgICBlLmtleUNvZGUgPT09IEtleXMuUEFHRV9ET1dOIHx8XHJcbiAgICAgICAgZS5rZXlDb2RlID09PSBLZXlzLlRBQikge1xyXG4gICAgICAvLyDQn9C+INC40LTQtdC1INC/0YDQvtGB0YLQviDQuNGFINC00L7Qu9C20LXQvSDQvtGC0YDQsNCx0L7RgtCw0YLRjCDQs9GA0LjQtFxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAoZS5rZXlDb2RlID09PSBLZXlzLkVTQ0FQRSkge1xyXG4gICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZS5rZXlDb2RlID09PSBLZXlzLkVOVEVSKSB7XHJcbiAgICAgIHRoaXMuY29tbWl0LmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vINCV0YHQu9C4INGDINC90LDRgSDQtdGB0YLRjCDQuNC90YTQvtGA0LzQsNGG0LjRjyDQviDQstGL0YHQvtGC0LUg0YHRgtGA0L7QutC4IC0g0LHQtdGA0LXQvCDQtdGRINC4INC90LVcclxuICAvLyDQvdCw0LfQvdCw0YfQsNC10Lwg0L3QuNC60LDQutC+0LPQviDQutC70LDRgdGB0LBcclxuICBnZXRDbGFzcygpIHtcclxuXHJcbiAgICBpZiAoKHRoaXMuaGVpZ2h0ICE9PSBudWxsICYmIHRoaXMuaGVpZ2h0ID4gMCkpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmllKSB7XHJcbiAgICAgIHJldHVybiAndHJ1ZS1ncmlkLWVkaXRvci1pZSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3RydWUtZ3JpZC1lZGl0b3ItMTAwcCc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRIKCkge1xyXG4gICAgaWYgKHRoaXMuaGVpZ2h0ICE9PSBudWxsICYmIHRoaXMuaGVpZ2h0ID4gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5oZWlnaHQgKyAncHgnO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuICcxMDAlJztcclxuICB9XHJcblxyXG4gIGdldEZvcm1hdCgpIHtcclxuICAgIGlmICh0aGlzLmNvbHVtbi5mb3JtYXQgIT09ICcnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5mb3JtYXQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJ3sxfSc7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgX3JlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxyXG59XHJcbiJdfQ==