UNPKG

@catull/igniteui-angular

Version:

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

186 lines 18 kB
import { __decorate, __extends, __metadata } from "tslib"; import { Directive, ElementRef, Renderer2, NgZone, HostBinding, TemplateRef } from '@angular/core'; import { IgxDropDirective } from '../../directives/drag-drop/drag-drop.directive'; import { SortingDirection } from '../../data-operations/sorting-expression.interface'; import { IgxColumnMovingDragDirective } from '../moving/moving.drag.directive'; /** * @hidden */ var IgxGroupByRowTemplateDirective = /** @class */ (function () { function IgxGroupByRowTemplateDirective(template) { this.template = template; } IgxGroupByRowTemplateDirective.ctorParameters = function () { return [ { type: TemplateRef } ]; }; IgxGroupByRowTemplateDirective = __decorate([ Directive({ selector: '[igxGroupByRow]' }), __metadata("design:paramtypes", [TemplateRef]) ], IgxGroupByRowTemplateDirective); return IgxGroupByRowTemplateDirective; }()); export { IgxGroupByRowTemplateDirective }; /** * @hidden */ var IgxGridDetailTemplateDirective = /** @class */ (function () { function IgxGridDetailTemplateDirective() { } IgxGridDetailTemplateDirective = __decorate([ Directive({ selector: '[igxGridDetail]' }) ], IgxGridDetailTemplateDirective); return IgxGridDetailTemplateDirective; }()); export { IgxGridDetailTemplateDirective }; /** * @hidden */ var IgxRowExpandedIndicatorDirective = /** @class */ (function () { function IgxRowExpandedIndicatorDirective() { } IgxRowExpandedIndicatorDirective = __decorate([ Directive({ selector: '[igxRowExpandedIndicator]' }) ], IgxRowExpandedIndicatorDirective); return IgxRowExpandedIndicatorDirective; }()); export { IgxRowExpandedIndicatorDirective }; /** * @hidden */ var IgxRowCollapsedIndicatorDirective = /** @class */ (function () { function IgxRowCollapsedIndicatorDirective() { } IgxRowCollapsedIndicatorDirective = __decorate([ Directive({ selector: '[igxRowCollapsedIndicator]' }) ], IgxRowCollapsedIndicatorDirective); return IgxRowCollapsedIndicatorDirective; }()); export { IgxRowCollapsedIndicatorDirective }; /** * @hidden */ var IgxHeaderExpandIndicatorDirective = /** @class */ (function () { function IgxHeaderExpandIndicatorDirective() { } IgxHeaderExpandIndicatorDirective = __decorate([ Directive({ selector: '[igxHeaderExpandedIndicator]' }) ], IgxHeaderExpandIndicatorDirective); return IgxHeaderExpandIndicatorDirective; }()); export { IgxHeaderExpandIndicatorDirective }; /** * @hidden */ var IgxHeaderCollapseIndicatorDirective = /** @class */ (function () { function IgxHeaderCollapseIndicatorDirective() { } IgxHeaderCollapseIndicatorDirective = __decorate([ Directive({ selector: '[igxHeaderCollapsedIndicator]' }) ], IgxHeaderCollapseIndicatorDirective); return IgxHeaderCollapseIndicatorDirective; }()); export { IgxHeaderCollapseIndicatorDirective }; /** * @hidden */ var IgxGroupAreaDropDirective = /** @class */ (function (_super) { __extends(IgxGroupAreaDropDirective, _super); function IgxGroupAreaDropDirective(elementRef, renderer, zone) { var _this = _super.call(this, elementRef, renderer, zone) || this; _this.elementRef = elementRef; _this.renderer = renderer; _this.zone = zone; _this.hovered = false; return _this; } IgxGroupAreaDropDirective.prototype.onDragEnter = function (event) { var drag = event.detail.owner; var column = drag.column; if (!this.columnBelongsToGrid(column)) { return; } var grid = column.grid; var isGrouped = grid.groupingExpressions.findIndex(function (item) { return item.fieldName === column.field; }) !== -1; if (column.groupable && !isGrouped && !column.columnGroup && !!column.field) { drag.icon.innerText = 'group_work'; this.hovered = true; } else { drag.icon.innerText = 'block'; this.hovered = false; } }; IgxGroupAreaDropDirective.prototype.onDragLeave = function (event) { var drag = event.detail.owner; var column = drag.column; if (!this.columnBelongsToGrid(column)) { return; } event.detail.owner.icon.innerText = 'block'; this.hovered = false; }; IgxGroupAreaDropDirective.prototype.onDragDrop = function (event) { var drag = event.detail.owner; if (drag instanceof IgxColumnMovingDragDirective) { var column_1 = drag.column; if (!this.columnBelongsToGrid(column_1)) { return; } var grid = column_1.grid; var isGrouped = grid.groupingExpressions.findIndex(function (item) { return item.fieldName === column_1.field; }) !== -1; if (column_1.groupable && !isGrouped && !column_1.columnGroup && !!column_1.field) { grid.groupBy({ fieldName: column_1.field, dir: SortingDirection.Asc, ignoreCase: column_1.sortingIgnoreCase, strategy: column_1.sortStrategy, groupingComparer: column_1.groupingComparer }); } } }; IgxGroupAreaDropDirective.prototype.closestParentByAttr = function (elem, attr) { return elem.hasAttribute(attr) ? elem : this.closestParentByAttr(elem.parentElement, attr); }; IgxGroupAreaDropDirective.prototype.columnBelongsToGrid = function (column) { var elem = this.elementRef.nativeElement; var closestGridID = this.closestParentByAttr(elem, 'igxGroupAreaDrop').getAttribute('gridId'); if (!column) { return false; } else { var grid = column.grid; if (!grid || grid.id !== closestGridID) { return false; } return true; } }; IgxGroupAreaDropDirective.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: NgZone } ]; }; __decorate([ HostBinding('class.igx-drop-area--hover'), __metadata("design:type", Object) ], IgxGroupAreaDropDirective.prototype, "hovered", void 0); IgxGroupAreaDropDirective = __decorate([ Directive({ selector: '[igxGroupAreaDrop]' }), __metadata("design:paramtypes", [ElementRef, Renderer2, NgZone]) ], IgxGroupAreaDropDirective); return IgxGroupAreaDropDirective; }(IgxDropDirective)); export { IgxGroupAreaDropDirective }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9ncmlkcy9ncmlkL2dyaWQuZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9FOztHQUVHO0FBSUg7SUFFSSx3Q0FBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFBSSxDQUFDOztnQkFBckIsV0FBVzs7SUFGL0IsOEJBQThCO1FBSDFDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxpQkFBaUI7U0FDOUIsQ0FBQzt5Q0FHK0IsV0FBVztPQUYvQiw4QkFBOEIsQ0FJMUM7SUFBRCxxQ0FBQztDQUFBLEFBSkQsSUFJQztTQUpZLDhCQUE4QjtBQU0zQzs7R0FFRztBQUlIO0lBQUE7SUFDQSxDQUFDO0lBRFksOEJBQThCO1FBSDFDLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxpQkFBaUI7U0FDOUIsQ0FBQztPQUNXLDhCQUE4QixDQUMxQztJQUFELHFDQUFDO0NBQUEsQUFERCxJQUNDO1NBRFksOEJBQThCO0FBRzNDOztHQUVHO0FBSUg7SUFBQTtJQUNBLENBQUM7SUFEWSxnQ0FBZ0M7UUFINUMsU0FBUyxDQUFDO1lBQ1AsUUFBUSxFQUFFLDJCQUEyQjtTQUN4QyxDQUFDO09BQ1csZ0NBQWdDLENBQzVDO0lBQUQsdUNBQUM7Q0FBQSxBQURELElBQ0M7U0FEWSxnQ0FBZ0M7QUFHN0M7O0dB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QkFBa0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUM7U0FDaEI7YUFBTTtZQUNILElBQU0sSUFBSSxHQUFxQixNQUFNLENBQUMsSUFBSSxDQUFDO1lBQzNDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxhQUFhLEVBQUU7Z0JBQ3BDLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQ0QsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7O2dCQXJFK0IsVUFBVTtnQkFBb0IsU0FBUztnQkFBZ0IsTUFBTTs7SUFLN0Y7UUFEQyxXQUFXLENBQUMsNEJBQTRCLENBQUM7OzhEQUNuQjtJQVBkLHlCQUF5QjtRQUhyQyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsb0JBQW9CO1NBQ2pDLENBQUM7eUNBR2tDLFVBQVUsRUFBb0IsU0FBUyxFQUFnQixNQUFNO09BRnBGLHlCQUF5QixDQXdFckM7SUFBRCxnQ0FBQztDQUFBLEFBeEVELENBQStDLGdCQUFnQixHQXdFOUQ7U0F4RVkseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBSZW5kZXJlcjIsIE5nWm9uZSwgSG9zdEJpbmRpbmcsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9kcmFnLWRyb3AvZHJhZy1kcm9wLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5Db21wb25lbnQgfSBmcm9tICcuLi9jb2x1bW5zL2NvbHVtbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4R3JpZENvbXBvbmVudCB9IGZyb20gJy4vZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU29ydGluZ0RpcmVjdGlvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUgfSBmcm9tICcuLi9tb3ZpbmcvbW92aW5nLmRyYWcuZGlyZWN0aXZlJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEdyb3VwQnlSb3ddJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcm91cEJ5Um93VGVtcGxhdGVEaXJlY3RpdmUge1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+KSB7IH1cblxufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4R3JpZERldGFpbF0nXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWREZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZSB7XG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hSb3dFeHBhbmRlZEluZGljYXRvcl0nXG59KVxuZXhwb3J0IGNsYXNzIElneFJvd0V4cGFuZGVkSW5kaWNhdG9yRGlyZWN0aXZlIHtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFJvd0NvbGxhcHNlZEluZGljYXRvcl0nXG59KVxuZXhwb3J0IGNsYXNzIElneFJvd0NvbGxhcHNlZEluZGljYXRvckRpcmVjdGl2ZSB7XG59XG5cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEhlYWRlckV4cGFuZGVkSW5kaWNhdG9yXSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4SGVhZGVyRXhwYW5kSW5kaWNhdG9yRGlyZWN0aXZlIHtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEhlYWRlckNvbGxhcHNlZEluZGljYXRvcl0nXG59KVxuZXhwb3J0IGNsYXNzIElneEhlYWRlckNvbGxhcHNlSW5kaWNhdG9yRGlyZWN0aXZlIHtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneEdyb3VwQXJlYURyb3BdJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcm91cEFyZWFEcm9wRGlyZWN0aXZlIGV4dGVuZHMgSWd4RHJvcERpcmVjdGl2ZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcbiAgICAgICAgc3VwZXIoZWxlbWVudFJlZiwgcmVuZGVyZXIsIHpvbmUpO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWRyb3AtYXJlYS0taG92ZXInKVxuICAgIHB1YmxpYyBob3ZlcmVkID0gZmFsc2U7XG5cblxuICAgIHB1YmxpYyBvbkRyYWdFbnRlcihldmVudCkge1xuICAgICAgICBjb25zdCBkcmFnOiBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlID0gZXZlbnQuZGV0YWlsLm93bmVyO1xuICAgICAgICBjb25zdCBjb2x1bW46IElneENvbHVtbkNvbXBvbmVudCA9IGRyYWcuY29sdW1uO1xuICAgICAgICBpZiAoIXRoaXMuY29sdW1uQmVsb25nc1RvR3JpZChjb2x1bW4pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZ3JpZCA9IDxJZ3hHcmlkQ29tcG9uZW50PmNvbHVtbi5ncmlkO1xuICAgICAgICBjb25zdCBpc0dyb3VwZWQgPSBncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmZpZWxkTmFtZSA9PT0gY29sdW1uLmZpZWxkKSAhPT0gLTE7XG4gICAgICAgIGlmIChjb2x1bW4uZ3JvdXBhYmxlICYmICFpc0dyb3VwZWQgJiYgIWNvbHVtbi5jb2x1bW5Hcm91cCAmJiAhIWNvbHVtbi5maWVsZCkge1xuICAgICAgICAgICAgZHJhZy5pY29uLmlubmVyVGV4dCA9ICdncm91cF93b3JrJztcbiAgICAgICAgICAgIHRoaXMuaG92ZXJlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkcmFnLmljb24uaW5uZXJUZXh0ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgIHRoaXMuaG92ZXJlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uRHJhZ0xlYXZlKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRyYWc6IElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUgPSBldmVudC5kZXRhaWwub3duZXI7XG4gICAgICAgIGNvbnN0IGNvbHVtbjogSWd4Q29sdW1uQ29tcG9uZW50ID0gZHJhZy5jb2x1bW47XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW5CZWxvbmdzVG9HcmlkKGNvbHVtbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5kZXRhaWwub3duZXIuaWNvbi5pbm5lclRleHQgPSAnYmxvY2snO1xuICAgICAgICB0aGlzLmhvdmVyZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnRHJvcChldmVudCkge1xuICAgICAgICBjb25zdCBkcmFnOiBJZ3hDb2x1bW5Nb3ZpbmdEcmFnRGlyZWN0aXZlID0gZXZlbnQuZGV0YWlsLm93bmVyO1xuICAgICAgICBpZiAoZHJhZyBpbnN0YW5jZW9mIElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbjogSWd4Q29sdW1uQ29tcG9uZW50ID0gZHJhZy5jb2x1bW47XG4gICAgICAgICAgICBpZiAoIXRoaXMuY29sdW1uQmVsb25nc1RvR3JpZChjb2x1bW4pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZ3JpZCA9IDxJZ3hHcmlkQ29tcG9uZW50PmNvbHVtbi5ncmlkO1xuICAgICAgICAgICAgY29uc3QgaXNHcm91cGVkID0gZ3JpZC5ncm91cGluZ0V4cHJlc3Npb25zLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5maWVsZE5hbWUgPT09IGNvbHVtbi5maWVsZCkgIT09IC0xO1xuICAgICAgICAgICAgaWYgKGNvbHVtbi5ncm91cGFibGUgJiYgIWlzR3JvdXBlZCAmJiAhY29sdW1uLmNvbHVtbkdyb3VwICYmICEhY29sdW1uLmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgZ3JpZC5ncm91cEJ5KHsgZmllbGROYW1lOiBjb2x1bW4uZmllbGQsIGRpcjogU29ydGluZ0RpcmVjdGlvbi5Bc2MsIGlnbm9yZUNhc2U6IGNvbHVtbi5zb3J0aW5nSWdub3JlQ2FzZSxcbiAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k6IGNvbHVtbi5zb3J0U3RyYXRlZ3ksIGdyb3VwaW5nQ29tcGFyZXI6IGNvbHVtbi5ncm91cGluZ0NvbXBhcmVyIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbG9zZXN0UGFyZW50QnlBdHRyKGVsZW0sIGF0dHIpIHtcbiAgICAgICAgcmV0dXJuIGVsZW0uaGFzQXR0cmlidXRlKGF0dHIpID9cbiAgICAgICAgICAgIGVsZW0gOlxuICAgICAgICAgICAgdGhpcy5jbG9zZXN0UGFyZW50QnlBdHRyKGVsZW0ucGFyZW50RWxlbWVudCwgYXR0cik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb2x1bW5CZWxvbmdzVG9HcmlkKGNvbHVtbikge1xuICAgICAgICBjb25zdCBlbGVtID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3RHcmlkSUQgPSB0aGlzLmNsb3Nlc3RQYXJlbnRCeUF0dHIoZWxlbSwgJ2lneEdyb3VwQXJlYURyb3AnKS5nZXRBdHRyaWJ1dGUoJ2dyaWRJZCcpO1xuICAgICAgICBpZiAoIWNvbHVtbikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ3JpZCA9IDxJZ3hHcmlkQ29tcG9uZW50PmNvbHVtbi5ncmlkO1xuICAgICAgICAgICAgaWYgKCFncmlkIHx8IGdyaWQuaWQgIT09IGNsb3Nlc3RHcmlkSUQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==