@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
167 lines • 16.7 kB
JavaScript
import { __decorate, __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
*/
let IgxGroupByRowTemplateDirective = class IgxGroupByRowTemplateDirective {
constructor(template) {
this.template = template;
}
};
IgxGroupByRowTemplateDirective.ctorParameters = () => [
{ type: TemplateRef }
];
IgxGroupByRowTemplateDirective = __decorate([
Directive({
selector: '[igxGroupByRow]'
}),
__metadata("design:paramtypes", [TemplateRef])
], IgxGroupByRowTemplateDirective);
export { IgxGroupByRowTemplateDirective };
/**
* @hidden
*/
let IgxGridDetailTemplateDirective = class IgxGridDetailTemplateDirective {
};
IgxGridDetailTemplateDirective = __decorate([
Directive({
selector: '[igxGridDetail]'
})
], IgxGridDetailTemplateDirective);
export { IgxGridDetailTemplateDirective };
/**
* @hidden
*/
let IgxRowExpandedIndicatorDirective = class IgxRowExpandedIndicatorDirective {
};
IgxRowExpandedIndicatorDirective = __decorate([
Directive({
selector: '[igxRowExpandedIndicator]'
})
], IgxRowExpandedIndicatorDirective);
export { IgxRowExpandedIndicatorDirective };
/**
* @hidden
*/
let IgxRowCollapsedIndicatorDirective = class IgxRowCollapsedIndicatorDirective {
};
IgxRowCollapsedIndicatorDirective = __decorate([
Directive({
selector: '[igxRowCollapsedIndicator]'
})
], IgxRowCollapsedIndicatorDirective);
export { IgxRowCollapsedIndicatorDirective };
/**
* @hidden
*/
let IgxHeaderExpandIndicatorDirective = class IgxHeaderExpandIndicatorDirective {
};
IgxHeaderExpandIndicatorDirective = __decorate([
Directive({
selector: '[igxHeaderExpandedIndicator]'
})
], IgxHeaderExpandIndicatorDirective);
export { IgxHeaderExpandIndicatorDirective };
/**
* @hidden
*/
let IgxHeaderCollapseIndicatorDirective = class IgxHeaderCollapseIndicatorDirective {
};
IgxHeaderCollapseIndicatorDirective = __decorate([
Directive({
selector: '[igxHeaderCollapsedIndicator]'
})
], IgxHeaderCollapseIndicatorDirective);
export { IgxHeaderCollapseIndicatorDirective };
/**
* @hidden
*/
let IgxGroupAreaDropDirective = class IgxGroupAreaDropDirective extends IgxDropDirective {
constructor(elementRef, renderer, zone) {
super(elementRef, renderer, zone);
this.elementRef = elementRef;
this.renderer = renderer;
this.zone = zone;
this.hovered = false;
}
onDragEnter(event) {
const drag = event.detail.owner;
const column = drag.column;
if (!this.columnBelongsToGrid(column)) {
return;
}
const grid = column.grid;
const isGrouped = grid.groupingExpressions.findIndex((item) => 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;
}
}
onDragLeave(event) {
const drag = event.detail.owner;
const column = drag.column;
if (!this.columnBelongsToGrid(column)) {
return;
}
event.detail.owner.icon.innerText = 'block';
this.hovered = false;
}
onDragDrop(event) {
const drag = event.detail.owner;
if (drag instanceof IgxColumnMovingDragDirective) {
const column = drag.column;
if (!this.columnBelongsToGrid(column)) {
return;
}
const grid = column.grid;
const isGrouped = grid.groupingExpressions.findIndex((item) => item.fieldName === column.field) !== -1;
if (column.groupable && !isGrouped && !column.columnGroup && !!column.field) {
grid.groupBy({ fieldName: column.field, dir: SortingDirection.Asc, ignoreCase: column.sortingIgnoreCase,
strategy: column.sortStrategy, groupingComparer: column.groupingComparer });
}
}
}
closestParentByAttr(elem, attr) {
return elem.hasAttribute(attr) ?
elem :
this.closestParentByAttr(elem.parentElement, attr);
}
columnBelongsToGrid(column) {
const elem = this.elementRef.nativeElement;
const closestGridID = this.closestParentByAttr(elem, 'igxGroupAreaDrop').getAttribute('gridId');
if (!column) {
return false;
}
else {
const grid = column.grid;
if (!grid || grid.id !== closestGridID) {
return false;
}
return true;
}
}
};
IgxGroupAreaDropDirective.ctorParameters = () => [
{ 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);
export { IgxGroupAreaDropDirective };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vaWduaXRldWktYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9ncmlkcy9ncmlkL2dyaWQuZGlyZWN0aXZlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBR2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRS9FOztHQUVHO0FBSUgsSUFBYSw4QkFBOEIsR0FBM0MsTUFBYSw4QkFBOEI7SUFFdkMsWUFBbUIsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFBSSxDQUFDO0NBRXJELENBQUE7O1lBRmdDLFdBQVc7O0FBRi9CLDhCQUE4QjtJQUgxQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsaUJBQWlCO0tBQzlCLENBQUM7cUNBRytCLFdBQVc7R0FGL0IsOEJBQThCLENBSTFDO1NBSlksOEJBQThCO0FBTTNDOztHQUVHO0FBSUgsSUFBYSw4QkFBOEIsR0FBM0MsTUFBYSw4QkFBOEI7Q0FDMUMsQ0FBQTtBQURZLDhCQUE4QjtJQUgxQyxTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsaUJBQWlCO0tBQzlCLENBQUM7R0FDVyw4QkFBOEIsQ0FDMUM7U0FEWSw4QkFBOEI7QUFHM0M7O0dBRUc7QUFJSCxJQUFhLGdDQUFnQyxHQUE3QyxNQUFhLGdDQUFnQztDQUM1QyxDQUFBO0FBRFksZ0NBQWdDO0lBSDVDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSwyQkFBMkI7S0FDeEMsQ0FBQztHQUNXLGdDQUFnQyxDQUM1QztTQURZLGdD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QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2hCO2FBQU07WUFDSCxNQUFNLElBQUksR0FBcUIsTUFBTSxDQUFDLElBQUksQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssYUFBYSxFQUFFO2dCQUNwQyxPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUF0RW1DLFVBQVU7WUFBb0IsU0FBUztZQUFnQixNQUFNOztBQUs3RjtJQURDLFdBQVcsQ0FBQyw0QkFBNEIsQ0FBQzs7MERBQ25CO0FBUGQseUJBQXlCO0lBSHJDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxvQkFBb0I7S0FDakMsQ0FBQztxQ0FHa0MsVUFBVSxFQUFvQixTQUFTLEVBQWdCLE1BQU07R0FGcEYseUJBQXlCLENBd0VyQztTQXhFWSx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIFJlbmRlcmVyMiwgTmdab25lLCBIb3N0QmluZGluZywgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElneERyb3BEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RyYWctZHJvcC9kcmFnLWRyb3AuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneENvbHVtbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbHVtbnMvY29sdW1uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTb3J0aW5nRGlyZWN0aW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSWd4Q29sdW1uTW92aW5nRHJhZ0RpcmVjdGl2ZSB9IGZyb20gJy4uL21vdmluZy9tb3ZpbmcuZHJhZy5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4R3JvdXBCeVJvd10nXG59KVxuZXhwb3J0IGNsYXNzIElneEdyb3VwQnlSb3dUZW1wbGF0ZURpcmVjdGl2ZSB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pIHsgfVxuXG59XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tpZ3hHcmlkRGV0YWlsXSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4R3JpZERldGFpbFRlbXBsYXRlRGlyZWN0aXZlIHtcbn1cblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW2lneFJvd0V4cGFuZGVkSW5kaWNhdG9yXSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4Um93RXhwYW5kZWRJbmRpY2F0b3JEaXJlY3RpdmUge1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4Um93Q29sbGFwc2VkSW5kaWNhdG9yXSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4Um93Q29sbGFwc2VkSW5kaWNhdG9yRGlyZWN0aXZlIHtcbn1cblxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4SGVhZGVyRXhwYW5kZWRJbmRpY2F0b3JdJ1xufSlcbmV4cG9ydCBjbGFzcyBJZ3hIZWFkZXJFeHBhbmRJbmRpY2F0b3JEaXJlY3RpdmUge1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4SGVhZGVyQ29sbGFwc2VkSW5kaWNhdG9yXSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4SGVhZGVyQ29sbGFwc2VJbmRpY2F0b3JEaXJlY3RpdmUge1xufVxuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4R3JvdXBBcmVhRHJvcF0nXG59KVxuZXhwb3J0IGNsYXNzIElneEdyb3VwQXJlYURyb3BEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hEcm9wRGlyZWN0aXZlIHtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIHpvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcihlbGVtZW50UmVmLCByZW5kZXJlciwgem9uZSk7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZHJvcC1hcmVhLS1ob3ZlcicpXG4gICAgcHVibGljIGhvdmVyZWQgPSBmYWxzZTtcblxuXG4gICAgcHVibGljIG9uRHJhZ0VudGVyKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRyYWc6IElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUgPSBldmVudC5kZXRhaWwub3duZXI7XG4gICAgICAgIGNvbnN0IGNvbHVtbjogSWd4Q29sdW1uQ29tcG9uZW50ID0gZHJhZy5jb2x1bW47XG4gICAgICAgIGlmICghdGhpcy5jb2x1bW5CZWxvbmdzVG9HcmlkKGNvbHVtbikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncmlkID0gPElneEdyaWRDb21wb25lbnQ+Y29sdW1uLmdyaWQ7XG4gICAgICAgIGNvbnN0IGlzR3JvdXBlZCA9IGdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uZmllbGROYW1lID09PSBjb2x1bW4uZmllbGQpICE9PSAtMTtcbiAgICAgICAgaWYgKGNvbHVtbi5ncm91cGFibGUgJiYgIWlzR3JvdXBlZCAmJiAhY29sdW1uLmNvbHVtbkdyb3VwICYmICEhY29sdW1uLmZpZWxkKSB7XG4gICAgICAgICAgICBkcmFnLmljb24uaW5uZXJUZXh0ID0gJ2dyb3VwX3dvcmsnO1xuICAgICAgICAgICAgdGhpcy5ob3ZlcmVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRyYWcuaWNvbi5pbm5lclRleHQgPSAnYmxvY2snO1xuICAgICAgICAgICAgdGhpcy5ob3ZlcmVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25EcmFnTGVhdmUoZXZlbnQpIHtcbiAgICAgICAgY29uc3QgZHJhZzogSWd4Q29sdW1uTW92aW5nRHJhZ0RpcmVjdGl2ZSA9IGV2ZW50LmRldGFpbC5vd25lcjtcbiAgICAgICAgY29uc3QgY29sdW1uOiBJZ3hDb2x1bW5Db21wb25lbnQgPSBkcmFnLmNvbHVtbjtcbiAgICAgICAgaWYgKCF0aGlzLmNvbHVtbkJlbG9uZ3NUb0dyaWQoY29sdW1uKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LmRldGFpbC5vd25lci5pY29uLmlubmVyVGV4dCA9ICdibG9jayc7XG4gICAgICAgIHRoaXMuaG92ZXJlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRyYWdEcm9wKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGRyYWc6IElneENvbHVtbk1vdmluZ0RyYWdEaXJlY3RpdmUgPSBldmVudC5kZXRhaWwub3duZXI7XG4gICAgICAgIGlmIChkcmFnIGluc3RhbmNlb2YgSWd4Q29sdW1uTW92aW5nRHJhZ0RpcmVjdGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uOiBJZ3hDb2x1bW5Db21wb25lbnQgPSBkcmFnLmNvbHVtbjtcbiAgICAgICAgICAgIGlmICghdGhpcy5jb2x1bW5CZWxvbmdzVG9HcmlkKGNvbHVtbikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBncmlkID0gPElneEdyaWRDb21wb25lbnQ+Y29sdW1uLmdyaWQ7XG4gICAgICAgICAgICBjb25zdCBpc0dyb3VwZWQgPSBncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmZpZWxkTmFtZSA9PT0gY29sdW1uLmZpZWxkKSAhPT0gLTE7XG4gICAgICAgICAgICBpZiAoY29sdW1uLmdyb3VwYWJsZSAmJiAhaXNHcm91cGVkICYmICFjb2x1bW4uY29sdW1uR3JvdXAgJiYgISFjb2x1bW4uZmllbGQpIHtcbiAgICAgICAgICAgICAgICBncmlkLmdyb3VwQnkoeyBmaWVsZE5hbWU6IGNvbHVtbi5maWVsZCwgZGlyOiBTb3J0aW5nRGlyZWN0aW9uLkFzYywgaWdub3JlQ2FzZTogY29sdW1uLnNvcnRpbmdJZ25vcmVDYXNlLFxuICAgICAgICAgICAgICAgICAgICBzdHJhdGVneTogY29sdW1uLnNvcnRTdHJhdGVneSwgZ3JvdXBpbmdDb21wYXJlcjogY29sdW1uLmdyb3VwaW5nQ29tcGFyZXIgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNsb3Nlc3RQYXJlbnRCeUF0dHIoZWxlbSwgYXR0cikge1xuICAgICAgICByZXR1cm4gZWxlbS5oYXNBdHRyaWJ1dGUoYXR0cikgP1xuICAgICAgICAgICAgZWxlbSA6XG4gICAgICAgICAgICB0aGlzLmNsb3Nlc3RQYXJlbnRCeUF0dHIoZWxlbS5wYXJlbnRFbGVtZW50LCBhdHRyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbHVtbkJlbG9uZ3NUb0dyaWQoY29sdW1uKSB7XG4gICAgICAgIGNvbnN0IGVsZW0gPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY2xvc2VzdEdyaWRJRCA9IHRoaXMuY2xvc2VzdFBhcmVudEJ5QXR0cihlbGVtLCAnaWd4R3JvdXBBcmVhRHJvcCcpLmdldEF0dHJpYnV0ZSgnZ3JpZElkJyk7XG4gICAgICAgIGlmICghY29sdW1uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBncmlkID0gPElneEdyaWRDb21wb25lbnQ+Y29sdW1uLmdyaWQ7XG4gICAgICAgICAgICBpZiAoIWdyaWQgfHwgZ3JpZC5pZCAhPT0gY2xvc2VzdEdyaWRJRCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19