UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

107 lines 11.8 kB
import { __decorate, __metadata } from "tslib"; import { Directive, ElementRef, HostListener } from '@angular/core'; import { GridBaseAPIService } from './api.service'; /** @hidden */ let IgxRowEditTemplateDirective = class IgxRowEditTemplateDirective { }; IgxRowEditTemplateDirective = __decorate([ Directive({ selector: '[igxRowEdit]' }) ], IgxRowEditTemplateDirective); export { IgxRowEditTemplateDirective }; /** @hidden */ let IgxRowEditTextDirective = class IgxRowEditTextDirective { }; IgxRowEditTextDirective = __decorate([ Directive({ selector: '[igxRowEditText]' }) ], IgxRowEditTextDirective); export { IgxRowEditTextDirective }; /** @hidden */ let IgxRowEditActionsDirective = class IgxRowEditActionsDirective { }; IgxRowEditActionsDirective = __decorate([ Directive({ selector: '[igxRowEditActions]' }) ], IgxRowEditActionsDirective); export { IgxRowEditActionsDirective }; // TODO: Refactor circular ref, deps and logic /** @hidden */ let IgxRowEditTabStopDirective = class IgxRowEditTabStopDirective { constructor(api, element) { this.api = api; this.element = element; /** * Sets the cell in edit mode and focus its native element * @param cellIndex index of the cell to activate */ this.activateCell = () => { const cell = this.grid.rowInEditMode.cells.find(e => e.visibleColumnIndex === this.currentCellIndex); cell.nativeElement.focus(); cell.setEditMode(true); this.currentCellIndex = -1; }; } get grid() { return this.api.grid; } handleTab(event) { event.stopPropagation(); if ((this.grid.rowEditTabs.last === this && !event.shiftKey) || (this.grid.rowEditTabs.first === this && event.shiftKey)) { this.move(event); } } handleEscape(event) { this.grid.endEdit(false, event); const activeNode = this.grid.selectionService.activeElement; // on right click activeNode is deleted, so we may have no one if (activeNode) { const cell = this.grid.navigation.getCellElementByVisibleIndex(activeNode.row, activeNode.layout ? activeNode.layout.columnVisibleIndex : activeNode.column); cell.focus(); } } /** * Moves focus to first/last editable cell in the editable row and put the cell in edit mode. * If cell is out of view first scrolls to the cell * @param event keyboard event containing information about whether SHIFT key was pressed */ move(event) { event.preventDefault(); this.currentCellIndex = event.shiftKey ? this.grid.lastEditableColumnIndex : this.grid.firstEditableColumnIndex; if (!this.grid.navigation.isColumnFullyVisible(this.currentCellIndex)) { this.grid.navigation.performHorizontalScrollToCell(this.grid.rowInEditMode.index, this.currentCellIndex, false, this.activateCell); } else { this.activateCell(); } } }; IgxRowEditTabStopDirective.ctorParameters = () => [ { type: GridBaseAPIService }, { type: ElementRef } ]; __decorate([ HostListener('keydown.Tab', [`$event`]), HostListener('keydown.Shift.Tab', [`$event`]), __metadata("design:type", Function), __metadata("design:paramtypes", [KeyboardEvent]), __metadata("design:returntype", void 0) ], IgxRowEditTabStopDirective.prototype, "handleTab", null); __decorate([ HostListener('keydown.Escape', [`$event`]), __metadata("design:type", Function), __metadata("design:paramtypes", [KeyboardEvent]), __metadata("design:returntype", void 0) ], IgxRowEditTabStopDirective.prototype, "handleEscape", null); IgxRowEditTabStopDirective = __decorate([ Directive({ selector: `[igxRowEditTabStop]` }), __metadata("design:paramtypes", [GridBaseAPIService, ElementRef]) ], IgxRowEditTabStopDirective); export { IgxRowEditTabStopDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5yb3dFZGl0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZ3JpZHMvZ3JpZC5yb3dFZGl0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRCxjQUFjO0FBSWQsSUFBYSwyQkFBMkIsR0FBeEMsTUFBYSwyQkFBMkI7Q0FBSSxDQUFBO0FBQS9CLDJCQUEyQjtJQUh2QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsY0FBYztLQUMzQixDQUFDO0dBQ1csMkJBQTJCLENBQUk7U0FBL0IsMkJBQTJCO0FBRXhDLGNBQWM7QUFJZCxJQUFhLHVCQUF1QixHQUFwQyxNQUFhLHVCQUF1QjtDQUFJLENBQUE7QUFBM0IsdUJBQXVCO0lBSG5DLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxrQkFBa0I7S0FDL0IsQ0FBQztHQUNXLHVCQUF1QixDQUFJO1NBQTNCLHVCQUF1QjtBQUVwQyxjQUFjO0FBSWQsSUFBYSwwQkFBMEIsR0FBdkMsTUFBYSwwQkFBMEI7Q0FBSSxDQUFBO0FBQTlCLDBCQUEwQjtJQUh0QyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUscUJBQXFCO0tBQ2xDLENBQUM7R0FDVywwQkFBMEIsQ0FBSTtTQUE5QiwwQkFBMEI7QUFHdkMsOENBQThDO0FBQzlDLGNBQWM7QUFJZCxJQUFhLDBCQUEwQixHQUF2QyxNQUFhLDBCQUEwQjtJQUluQyxZQUFtQixHQUE0QixFQUFTLE9BQW1CO1FBQXhELFFBQUcsR0FBSCxHQUFHLENBQXlCO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQThDM0U7OztXQUdHO1FBQ0ssaUJBQVksR0FBRyxHQUFTLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsS0FBSyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNyRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQTtJQXZENkUsQ0FBQztJQUUvRSxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFJTSxTQUFTLENBQUMsS0FBb0I7UUFDakMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUN4RCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUMxRDtZQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDcEI7SUFDTCxDQUFDO0lBR00sWUFBWSxDQUFDLEtBQW9CO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztRQUM1RCwrREFBK0Q7UUFDL0QsSUFBSSxVQUFVLEVBQUU7WUFDWixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FDMUQsVUFBVSxDQUFDLEdBQUcsRUFDZCxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEYsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2hCO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxJQUFJLENBQUMsS0FBb0I7UUFDN0IsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ2hILElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNuRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyw2QkFBNkIsQ0FDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZGO2FBQU07WUFDSCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDdkI7SUFDTCxDQUFDO0NBWUosQ0FBQTs7WUF4RDJCLGtCQUFrQjtZQUF1QixVQUFVOztBQVEzRTtJQUZDLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2QyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQzs7cUNBQ3RCLGFBQWE7OzJEQU9wQztBQUdEO0lBREMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7O3FDQUNoQixhQUFhOzs4REFVdkM7QUFoQ1EsMEJBQTBCO0lBSHRDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxxQkFBcUI7S0FDbEMsQ0FBQztxQ0FLMEIsa0JBQWtCLEVBQXVCLFVBQVU7R0FKbEUsMEJBQTBCLENBNER0QztTQTVEWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZEJhc2VBUElTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBHcmlkVHlwZSB9IGZyb20gJy4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcblxuLyoqIEBoaWRkZW4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFJvd0VkaXRdJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hSb3dFZGl0VGVtcGxhdGVEaXJlY3RpdmUgeyB9XG5cbi8qKiBAaGlkZGVuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hSb3dFZGl0VGV4dF0nXG59KVxuZXhwb3J0IGNsYXNzIElneFJvd0VkaXRUZXh0RGlyZWN0aXZlIHsgfVxuXG4vKiogQGhpZGRlbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Um93RWRpdEFjdGlvbnNdJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hSb3dFZGl0QWN0aW9uc0RpcmVjdGl2ZSB7IH1cblxuXG4vLyBUT0RPOiBSZWZhY3RvciBjaXJjdWxhciByZWYsIGRlcHMgYW5kIGxvZ2ljXG4vKiogQGhpZGRlbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6IGBbaWd4Um93RWRpdFRhYlN0b3BdYFxufSlcbmV4cG9ydCBjbGFzcyBJZ3hSb3dFZGl0VGFiU3RvcERpcmVjdGl2ZSB7XG4gICAgcHJpdmF0ZSBjdXJyZW50Q2VsbEluZGV4OiBudW1iZXI7XG5cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBhcGk6IEdyaWRCYXNlQVBJU2VydmljZTxhbnk+LCBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZikge31cblxuICAgIGdldCBncmlkKCk6IEdyaWRUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdyaWQ7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5UYWInLCBbYCRldmVudGBdKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uU2hpZnQuVGFiJywgW2AkZXZlbnRgXSlcbiAgICBwdWJsaWMgaGFuZGxlVGFiKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoKHRoaXMuZ3JpZC5yb3dFZGl0VGFicy5sYXN0ID09PSB0aGlzICYmICFldmVudC5zaGlmdEtleSkgfHxcbiAgICAgICAgICAgICh0aGlzLmdyaWQucm93RWRpdFRhYnMuZmlyc3QgPT09IHRoaXMgJiYgZXZlbnQuc2hpZnRLZXkpXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5tb3ZlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uRXNjYXBlJywgW2AkZXZlbnRgXSlcbiAgICBwdWJsaWMgaGFuZGxlRXNjYXBlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ3JpZC5lbmRFZGl0KGZhbHNlLCBldmVudCk7XG4gICAgICAgIGNvbnN0IGFjdGl2ZU5vZGUgPSB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5hY3RpdmVFbGVtZW50O1xuICAgICAgICAvLyAgb24gcmlnaHQgY2xpY2sgYWN0aXZlTm9kZSBpcyBkZWxldGVkLCBzbyB3ZSBtYXkgaGF2ZSBubyBvbmVcbiAgICAgICAgaWYgKGFjdGl2ZU5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNlbGwgPSB0aGlzLmdyaWQubmF2aWdhdGlvbi5nZXRDZWxsRWxlbWVudEJ5VmlzaWJsZUluZGV4KFxuICAgICAgICAgICAgICAgIGFjdGl2ZU5vZGUucm93LFxuICAgICAgICAgICAgICAgIGFjdGl2ZU5vZGUubGF5b3V0ID8gYWN0aXZlTm9kZS5sYXlvdXQuY29sdW1uVmlzaWJsZUluZGV4IDogYWN0aXZlTm9kZS5jb2x1bW4pO1xuICAgICAgICAgICAgY2VsbC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTW92ZXMgZm9jdXMgdG8gZmlyc3QvbGFzdCBlZGl0YWJsZSBjZWxsIGluIHRoZSBlZGl0YWJsZSByb3cgYW5kIHB1dCB0aGUgY2VsbCBpbiBlZGl0IG1vZGUuXG4gICAgICogSWYgY2VsbCBpcyBvdXQgb2YgdmlldyBmaXJzdCBzY3JvbGxzIHRvIHRoZSBjZWxsXG4gICAgICogQHBhcmFtIGV2ZW50IGtleWJvYXJkIGV2ZW50IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hldGhlciBTSElGVCBrZXkgd2FzIHByZXNzZWRcbiAgICAgKi9cbiAgICBwcml2YXRlIG1vdmUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jdXJyZW50Q2VsbEluZGV4ID0gZXZlbnQuc2hpZnRLZXkgPyB0aGlzLmdyaWQubGFzdEVkaXRhYmxlQ29sdW1uSW5kZXggOiB0aGlzLmdyaWQuZmlyc3RFZGl0YWJsZUNvbHVtbkluZGV4O1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5uYXZpZ2F0aW9uLmlzQ29sdW1uRnVsbHlWaXNpYmxlKHRoaXMuY3VycmVudENlbGxJbmRleCkpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5uYXZpZ2F0aW9uLnBlcmZvcm1Ib3Jpem9udGFsU2Nyb2xsVG9DZWxsKFxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5yb3dJbkVkaXRNb2RlLmluZGV4LCB0aGlzLmN1cnJlbnRDZWxsSW5kZXgsIGZhbHNlLCB0aGlzLmFjdGl2YXRlQ2VsbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2YXRlQ2VsbCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY2VsbCBpbiBlZGl0IG1vZGUgYW5kIGZvY3VzIGl0cyBuYXRpdmUgZWxlbWVudFxuICAgICAqIEBwYXJhbSBjZWxsSW5kZXggaW5kZXggb2YgdGhlIGNlbGwgdG8gYWN0aXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIGFjdGl2YXRlQ2VsbCA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgY2VsbCA9IHRoaXMuZ3JpZC5yb3dJbkVkaXRNb2RlLmNlbGxzLmZpbmQoZSA9PiBlLnZpc2libGVDb2x1bW5JbmRleCA9PT0gdGhpcy5jdXJyZW50Q2VsbEluZGV4KTtcbiAgICAgICAgY2VsbC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIGNlbGwuc2V0RWRpdE1vZGUodHJ1ZSk7XG4gICAgICAgIHRoaXMuY3VycmVudENlbGxJbmRleCA9IC0xO1xuICAgIH1cbn1cbiJdfQ==