@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
126 lines • 15.2 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 { DOMUtils } from '../common/dom-utils.class';
var EditorTextComponent = /** @class */ (function () {
function EditorTextComponent(_renderer) {
this._renderer = _renderer;
this.ie = false;
this.valueChanged = false;
this.height = 0;
this.commit = new EventEmitter();
this.change = new EventEmitter();
this.cancel = new EventEmitter();
}
EditorTextComponent.prototype.init = function (value, valueChanged, height, ie, wasShown) {
if (ie === void 0) { ie = false; }
if (wasShown === void 0) { wasShown = false; }
this.value = value;
this.valueChanged = valueChanged;
this.height = height;
this.ie = ie;
if (this.state.iOS) {
DOMUtils.focusAndOpenKeyboard(this.input.nativeElement, 50);
}
};
// Останавливаем propagation, чтобы не влиять на grid
EditorTextComponent.prototype.inputMouseDown = function (e) {
e.stopPropagation();
};
EditorTextComponent.prototype.inputChange = function (e) {
this.change.emit(e);
};
EditorTextComponent.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;
}
};
EditorTextComponent.prototype.ngAfterContentInit = function () {
var _this = this;
if (!this.valueChanged) {
if (this.state.iOS) {
// Мы уже позаботились об этом при инициализации
}
else {
setTimeout(function () {
_this.input.nativeElement.select();
_this.input.nativeElement.focus();
});
}
}
else {
this.input.nativeElement.focus();
this._renderer.setProperty(this.input.nativeElement, 'value', this.value);
this._renderer.setProperty(this.input.nativeElement, 'selectionStart', this.value.length);
this._renderer.setProperty(this.input.nativeElement, 'selectionEnd', this.value.length);
}
};
// Если у нас есть информация о высоте строки - берем её и не
// назначаем никакого класса
EditorTextComponent.prototype.getClass = function () {
if ((this.height !== null && this.height > 0)) {
return 'true-grid__input-container';
}
if (this.ie) {
return 'true-grid-editor-ie';
}
else {
return 'true-grid-editor-100p';
}
};
EditorTextComponent.prototype.getH = function () {
if (this.height !== null && this.height > 0) {
return this.height + 'px';
}
return '100%';
};
tslib_1.__decorate([
ViewChild('input', { static: true }),
tslib_1.__metadata("design:type", Object)
], EditorTextComponent.prototype, "input", void 0);
tslib_1.__decorate([
Output("commit"),
tslib_1.__metadata("design:type", EventEmitter)
], EditorTextComponent.prototype, "commit", void 0);
tslib_1.__decorate([
Output("change"),
tslib_1.__metadata("design:type", EventEmitter)
], EditorTextComponent.prototype, "change", void 0);
tslib_1.__decorate([
Output("cancel"),
tslib_1.__metadata("design:type", EventEmitter)
], EditorTextComponent.prototype, "cancel", void 0);
EditorTextComponent = tslib_1.__decorate([
Component({
selector: 'true-editor-text',
template: "<input #input class=\"true-grid-input\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"inputChange($event)\"\n [style.height]=\"getH()\"\n [ngClass]=\"getClass()\"\n (mousedown)=\"inputMouseDown($event)\"\n (keydown)=\"inputKeyDown($event)\" />",
styles: ["\n :host {\n padding: 0;\n }\n "]
}),
tslib_1.__metadata("design:paramtypes", [Renderer2])
], EditorTextComponent);
return EditorTextComponent;
}());
export { EditorTextComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXRleHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHRydWUtZGlyZWN0aXZlL2dyaWQvIiwic291cmNlcyI6WyJzcmMvZWRpdG9ycy9lZGl0b3ItdGV4dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0VBSUU7QUFDRixPQUFPLEVBQUUsU0FBUyxFQUFTLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUNqRCxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSzVDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQWlCckQ7SUE2R0UsNkJBQXNCLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUEzR2xDLE9BQUUsR0FBWSxLQUFLLENBQUM7UUFDcEIsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDOUIsV0FBTSxHQUFXLENBQUMsQ0FBQztRQVkzQixXQUFNLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHbEQsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRy9DLFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQXVGRixDQUFDO0lBckYvQyxrQ0FBSSxHQUFKLFVBQUssS0FBVSxFQUFFLFlBQXFCLEVBQUUsTUFBYyxFQUFFLEVBQW1CLEVBQUUsUUFBeUI7UUFBOUMsbUJBQUEsRUFBQSxVQUFtQjtRQUFFLHlCQUFBLEVBQUEsZ0JBQXlCO1FBQ3BHLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZ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RSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzNDLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDM0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBOUZEO1FBREMsU0FBUyxDQUFDLE9BQU8sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUMsQ0FBQzs7c0RBQ3hCO0lBR1g7UUFEQyxNQUFNLENBQUMsUUFBUSxDQUFDOzBDQUNULFlBQVk7dURBQThCO0lBR2xEO1FBREMsTUFBTSxDQUFDLFFBQVEsQ0FBQzswQ0FDVCxZQUFZO3VEQUEyQjtJQUcvQztRQURDLE1BQU0sQ0FBQyxRQUFRLENBQUM7MENBQ1QsWUFBWTt1REFBNEI7SUF0QnJDLG1CQUFtQjtRQWYvQixTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFFBQVEsRUFBRSx5VkFNMEM7cUJBQzNDLCtDQUlOO1NBQ0YsQ0FBQztpREE4RytCLFNBQVM7T0E3Ry9CLG1CQUFtQixDQThHL0I7SUFBRCwwQkFBQztDQUFBLEFBOUdELElBOEdDO1NBOUdZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBBbGVrc2V5IE1lbG5pa292LCBUcnVlIERpcmVjdGl2ZSBDb21wYW55LlxyXG4gKiBAbGluayBodHRwczovL3RydWVkaXJlY3RpdmUuY29tL1xyXG4gKiBAbGljZW5zZSBNSVRcclxuKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCxcclxuICAgICAgICAgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICdAdHJ1ZS1kaXJlY3RpdmUvYmFzZSc7XHJcbmltcG9ydCB7IEtleXMgfSBmcm9tICdAdHJ1ZS1kaXJlY3RpdmUvYmFzZSc7XHJcblxyXG5pbXBvcnQgeyBHcmlkU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vZ3JpZC1zdGF0ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSUVkaXRvciB9IGZyb20gXCIuL2VkaXRvci5pbnRlcmZhY2VcIjtcclxuXHJcbmltcG9ydCB7IERPTVV0aWxzIH0gZnJvbSAnLi4vY29tbW9uL2RvbS11dGlscy5jbGFzcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RydWUtZWRpdG9yLXRleHQnLFxyXG4gIHRlbXBsYXRlOiBgPGlucHV0ICNpbnB1dCBjbGFzcz1cInRydWUtZ3JpZC1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJpbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodF09XCJnZXRIKClcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRDbGFzcygpXCJcclxuICAgICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJpbnB1dE1vdXNlRG93bigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwiaW5wdXRLZXlEb3duKCRldmVudClcIiAvPmAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgOmhvc3Qge1xyXG4gICAgICBwYWRkaW5nOiAwO1xyXG4gICAgfVxyXG4gICAgYF1cclxuICB9KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yVGV4dENvbXBvbmVudCBpbXBsZW1lbnRzIElFZGl0b3Ige1xyXG5cclxuICBwcml2YXRlIGllOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSB2YWx1ZUNoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIGhlaWdodDogbnVtYmVyID0gMDtcclxuXHJcbiAgcHVibGljIHZhbHVlOiBzdHJpbmc7XHJcblxyXG4gIHN0YXRlOiBHcmlkU3RhdGVTZXJ2aWNlO1xyXG4gIGNvbHVtbjogQ29sdW1uO1xyXG4gIHJvdzogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcsIHtzdGF0aWM6IHRydWV9KVxyXG4gIGlucHV0OiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoXCJjb21taXRcIilcclxuICBjb21taXQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KFwiY2hhbmdlXCIpXHJcbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dChcImNhbmNlbFwiKVxyXG4gIGNhbmNlbDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBpbml0KHZhbHVlOiBhbnksIHZhbHVlQ2hhbmdlZDogYm9vbGVhbiwgaGVpZ2h0OiBudW1iZXIsIGllOiBib29sZWFuID0gZmFsc2UsIHdhc1Nob3duOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VkID0gdmFsdWVDaGFuZ2VkO1xyXG4gICAgdGhpcy5oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICB0aGlzLmllID0gaWU7XHJcbiAgICBpZiAodGhpcy5zdGF0ZS5pT1MpIHtcclxuICAgICAgRE9NVXRpbHMuZm9jdXNBbmRPcGVuS2V5Ym9hcmQodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LCA1MCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDQntGB0YLQsNC90LDQstC70LjQstCw0LXQvCBwcm9wYWdhdGlvbiwg0YfRgtC+0LHRiyDQvdC1INCy0LvQuNGP0YLRjCDQvdCwIGdyaWRcclxuICBpbnB1dE1vdXNlRG93bihlOiBhbnkpIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBpbnB1dENoYW5nZShlOiBhbnkpIHtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQoZSk7XHJcbiAgfVxyXG5cclxuICBpbnB1dEtleURvd24oZTogYW55KSB7XHJcblxyXG4gICAgaWYgKGUuZGVmYXVsdFByZXZlbnRlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGUua2V5Q29kZSA9PT0gS2V5cy5VUCB8fFxyXG4gICAgICAgIGUua2V5Q29kZSA9PT0gS2V5cy5ET1dOIHx8XHJcbiAgICAgICAgZS5rZXlDb2RlID09PSBLZXlzLlBBR0VfVVAgfHxcclxuICAgICAgICBlLmtleUNvZGUgPT09IEtleXMuUEFHRV9ET1dOIHx8XHJcbiAgICAgICAgZS5rZXlDb2RlID09PSBLZXlzLlRBQikge1xyXG4gICAgICAvLyDQn9C+INC40LTQtdC1INC/0YDQvtGB0YLQviDQuNGFINC00L7Qu9C20LXQvSDQvtGC0YDQsNCx0L7RgtCw0YLRjCDQs9GA0LjQtFxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICBpZiAoZS5rZXlDb2RlID09PSBLZXlzLkVTQ0FQRSkge1xyXG4gICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZS5rZXlDb2RlID09PSBLZXlzLkVOVEVSKSB7XHJcbiAgICAgIHRoaXMuY29tbWl0LmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcclxuICAgIGlmKCF0aGlzLnZhbHVlQ2hhbmdlZCkge1xyXG4gICAgICBpZiAodGhpcy5zdGF0ZS5pT1MpIHtcclxuICAgICAgICAvLyDQnNGLINGD0LbQtSDQv9C+0LfQsNCx0L7RgtC40LvQuNGB0Ywg0L7QsSDRjdGC0L7QvCDQv9GA0Lgg0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40LhcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5zZWxlY3QoKVxyXG4gICAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICd2YWx1ZScsIHRoaXMudmFsdWUpO1xyXG4gICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQsICdzZWxlY3Rpb25TdGFydCcsIHRoaXMudmFsdWUubGVuZ3RoKTtcclxuICAgICAgdGhpcy5fcmVuZGVyZXIuc2V0UHJvcGVydHkodGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LCAnc2VsZWN0aW9uRW5kJywgdGhpcy52YWx1ZS5sZW5ndGgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8g0JXRgdC70Lgg0YMg0L3QsNGBINC10YHRgtGMINC40L3RhNC+0YDQvNCw0YbQuNGPINC+INCy0YvRgdC+0YLQtSDRgdGC0YDQvtC60LggLSDQsdC10YDQtdC8INC10ZEg0Lgg0L3QtVxyXG4gIC8vINC90LDQt9C90LDRh9Cw0LXQvCDQvdC40LrQsNC60L7Qs9C+INC60LvQsNGB0YHQsFxyXG4gIGdldENsYXNzKCkge1xyXG4gICAgaWYgKCh0aGlzLmhlaWdodCAhPT0gbnVsbCAmJiB0aGlzLmhlaWdodCA+IDApKSB7XHJcbiAgICAgIHJldHVybiAndHJ1ZS1ncmlkX19pbnB1dC1jb250YWluZXInO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaWUpIHtcclxuICAgICAgcmV0dXJuICd0cnVlLWdyaWQtZWRpdG9yLWllJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAndHJ1ZS1ncmlkLWVkaXRvci0xMDBwJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEgoKSB7XHJcbiAgICBpZiAodGhpcy5oZWlnaHQgIT09IG51bGwgJiYgdGhpcy5oZWlnaHQgPiAwKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmhlaWdodCArICdweCc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gJzEwMCUnO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIF9yZW5kZXJlcjogUmVuZGVyZXIyKSB7IH1cclxufVxyXG4iXX0=