@true-directive/grid
Version:
Angular Data Grid from Yopsilon.
123 lines • 15 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, ComponentFactoryResolver, Inject, ViewContainerRef, ChangeDetectorRef, ViewChild } from '@angular/core';
import { GridStateService } from '../grid-state.service';
var FilterPopupComponent = /** @class */ (function () {
function FilterPopupComponent(state, _cfResolver, _changeDetector) {
this.state = state;
this._cfResolver = _cfResolver;
this._changeDetector = _changeDetector;
this.closed = new EventEmitter();
this.show = new EventEmitter();
this.setFilter = new EventEmitter();
this.resetFilter = new EventEmitter();
this._subscribes = [];
}
Object.defineProperty(FilterPopupComponent.prototype, "visible", {
get: function () {
return this.popup.visible;
},
enumerable: true,
configurable: true
});
FilterPopupComponent.prototype.popupClosed = function (e) {
this.closed.emit(e);
};
FilterPopupComponent.prototype.popupShow = function (e) {
this.show.emit();
};
FilterPopupComponent.prototype.createComponent = function (filterComponentType, filter, rows) {
var _this = this;
this.unsubscribeAll();
this.container.clear();
var factory = this._cfResolver.resolveComponentFactory(filterComponentType);
this._componentRef = this.container.createComponent(factory);
this._componentRef.instance.filter = filter;
this._componentRef.instance.rows = rows;
this._componentRef.instance.state = this.state;
this._componentRef.instance.init();
var s_closed;
var s_set;
var s_reset;
s_closed = this._componentRef.instance.closed.subscribe(function (e) { return _this.closePopup(); });
s_set = this._componentRef.instance.setFilter.subscribe(function (e) {
_this.setFilter.emit(e);
_this.closePopup(true);
});
s_reset = this._componentRef.instance.resetFilter.subscribe(function (e) {
_this.resetFilter.emit(e);
_this.closePopup(false);
});
this._subscribes.push(s_closed);
this._subscribes.push(s_set);
this._subscribes.push(s_reset);
};
FilterPopupComponent.prototype.showByTarget = function (target, filter, filterComponentType, rows) {
this.filter = filter;
this.createComponent(filterComponentType, filter, rows);
this.popup.showByTarget(target, 'left');
};
FilterPopupComponent.prototype.closePopup = function (result) {
if (result === void 0) { result = null; }
if (this._componentRef) {
this._componentRef.destroy();
this._componentRef = null;
}
this.popup.closePopup(result);
};
FilterPopupComponent.prototype.unsubscribeAll = function () {
this._subscribes.forEach(function (sb) { return sb.unsubscribe(); });
this._subscribes = [];
};
FilterPopupComponent.prototype.ngAfterContentInit = function () {
this.unsubscribeAll();
};
FilterPopupComponent.prototype.ngOnDestroy = function () {
this.unsubscribeAll();
};
FilterPopupComponent.prototype.changes = function () {
this._changeDetector.detectChanges();
};
tslib_1.__decorate([
ViewChild('popup', { static: true }),
tslib_1.__metadata("design:type", Object)
], FilterPopupComponent.prototype, "popup", void 0);
tslib_1.__decorate([
ViewChild('container', { read: ViewContainerRef, static: true }),
tslib_1.__metadata("design:type", Object)
], FilterPopupComponent.prototype, "container", void 0);
tslib_1.__decorate([
Output(),
tslib_1.__metadata("design:type", EventEmitter)
], FilterPopupComponent.prototype, "closed", void 0);
tslib_1.__decorate([
Output(),
tslib_1.__metadata("design:type", EventEmitter)
], FilterPopupComponent.prototype, "show", void 0);
tslib_1.__decorate([
Output(),
tslib_1.__metadata("design:type", EventEmitter)
], FilterPopupComponent.prototype, "setFilter", void 0);
tslib_1.__decorate([
Output(),
tslib_1.__metadata("design:type", EventEmitter)
], FilterPopupComponent.prototype, "resetFilter", void 0);
FilterPopupComponent = tslib_1.__decorate([
Component({
selector: 'true-filter-popup',
template: "\n <true-popup #popup (closed)=\"popupClosed($event)\" (show)=\"popupShow($event)\">\n <template #container></template>\n </true-popup>\n ",
styles: ["\n div {\n position: relative;\n }\n "]
}),
tslib_1.__param(0, Inject('gridState')),
tslib_1.__metadata("design:paramtypes", [GridStateService,
ComponentFactoryResolver,
ChangeDetectorRef])
], FilterPopupComponent);
return FilterPopupComponent;
}());
export { FilterPopupComponent };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0cnVlLWRpcmVjdGl2ZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2ZpbHRlcnMvZmlsdGVyLXBvcHVwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7RUFJRTtBQUNGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFDL0Isd0JBQXdCLEVBQUUsTUFBTSxFQUNoQyxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFDbkMsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBZ0J6RDtJQXFHRSw4QkFDOEIsS0FBdUIsRUFDM0MsV0FBcUMsRUFDckMsZUFBa0M7UUFGZCxVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUMzQyxnQkFBVyxHQUFYLFdBQVcsQ0FBMEI7UUFDckMsb0JBQWUsR0FBZixlQUFlLENBQW1CO1FBL0Y1QyxXQUFNLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFHcEQsU0FBSSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBR2xELGNBQVMsR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUd2RCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBVWpELGdCQUFXLEdBQVUsRUFBRSxDQUFDO0lBNEVnQixDQUFDO0lBcEZqRCxzQkFBSSx5Q0FBTzthQUFYO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUM1QixDQUFDOzs7T0FBQTtJQVFELDBDQUFXLEdBQVgsVUFBWSxDQUFNO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCx3Q0FBUyxHQUFULFVBQVUsQ0FBTTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7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aEIsQ0FBZ0IsQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxpREFBa0IsR0FBbEI7UUFDRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELDBDQUFXLEdBQVg7UUFDRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLHNDQUFPLEdBQWQ7UUFDRSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFoR0Q7UUFEQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDOzt1REFDeEI7SUFHWDtRQURDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDOzsyREFDbEQ7SUFHZjtRQURDLE1BQU0sRUFBRTswQ0FDRCxZQUFZO3dEQUFnQztJQUdwRDtRQURDLE1BQU0sRUFBRTswQ0FDSCxZQUFZO3NEQUFnQztJQUdsRDtRQURDLE1BQU0sRUFBRTswQ0FDRSxZQUFZOzJEQUFnQztJQUd2RDtRQURDLE1BQU0sRUFBRTswQ0FDSSxZQUFZOzZEQUFnQztJQWxCOUMsb0JBQW9CO1FBYmhDLFNBQVMsQ0FBQztZQUNULFFBQVEsRUFBRSxtQkFBbUI7WUFDN0IsUUFBUSxFQUFFLHdKQUlUO3FCQUNPLHFEQUlMO1NBQ0YsQ0FBQztRQXVHQyxtQkFBQSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7aURBQWUsZ0JBQWdCO1lBQzlCLHdCQUF3QjtZQUNwQixpQkFBaUI7T0F4R2pDLG9CQUFvQixDQXlHaEM7SUFBRCwyQkFBQztDQUFBLEFBekdELElBeUdDO1NBekdZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAxOSBBbGVrc2V5IE1lbG5pa292LCBUcnVlIERpcmVjdGl2ZSBDb21wYW55LlxyXG4gKiBAbGluayBodHRwczovL3RydWVkaXJlY3RpdmUuY29tL1xyXG4gKiBAbGljZW5zZSBNSVRcclxuKi9cclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25EZXN0cm95LFxyXG4gICAgICAgICBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEluamVjdCxcclxuICAgICAgICAgVmlld0NvbnRhaW5lclJlZiwgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgR3JpZFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2dyaWQtc3RhdGUuc2VydmljZSc7XHJcbmltcG9ydCB7IEZpbHRlciB9IGZyb20gJ0B0cnVlLWRpcmVjdGl2ZS9iYXNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHJ1ZS1maWx0ZXItcG9wdXAnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8dHJ1ZS1wb3B1cCAjcG9wdXAgKGNsb3NlZCk9XCJwb3B1cENsb3NlZCgkZXZlbnQpXCIgKHNob3cpPVwicG9wdXBTaG93KCRldmVudClcIj5cclxuICAgICAgPHRlbXBsYXRlICNjb250YWluZXI+PC90ZW1wbGF0ZT5cclxuICAgIDwvdHJ1ZS1wb3B1cD5cclxuICBgLFxyXG4gIHN0eWxlczpbYFxyXG4gICAgZGl2IHtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgfVxyXG4gICAgYF1cclxuICB9KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBAVmlld0NoaWxkKCdwb3B1cCcsIHtzdGF0aWM6IHRydWV9KVxyXG4gIHBvcHVwOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXHJcbiAgY29udGFpbmVyOiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIGNsb3NlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2hvdzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgc2V0RmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICByZXNldEZpbHRlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5wb3B1cC52aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGZpbHRlcjogRmlsdGVyO1xyXG5cclxuICBwcml2YXRlIF9jb21wb25lbnRSZWY6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaWJlczogYW55W10gPSBbXTtcclxuXHJcbiAgcG9wdXBDbG9zZWQoZTogYW55KSB7XHJcbiAgICB0aGlzLmNsb3NlZC5lbWl0KGUpO1xyXG4gIH1cclxuXHJcbiAgcG9wdXBTaG93KGU6IGFueSkge1xyXG4gICAgdGhpcy5zaG93LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNvbXBvbmVudChmaWx0ZXJDb21wb25lbnRUeXBlOiBhbnksIGZpbHRlcjogRmlsdGVyLCByb3dzOiBBcnJheTxhbnk+KSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XHJcbiAgICB0aGlzLmNvbnRhaW5lci5jbGVhcigpO1xyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX2NmUmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoZmlsdGVyQ29tcG9uZW50VHlwZSk7XHJcblxyXG4gICAgdGhpcy5fY29tcG9uZW50UmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xyXG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmZpbHRlciA9IGZpbHRlcjtcclxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5yb3dzID0gcm93cztcclxuICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZS5zdGF0ZSA9IHRoaXMuc3RhdGU7XHJcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2UuaW5pdCgpO1xyXG5cclxuICAgIGxldCBzX2Nsb3NlZDogYW55O1xyXG4gICAgbGV0IHNfc2V0OiBhbnk7XHJcbiAgICBsZXQgc19yZXNldDogYW55O1xyXG5cclxuICAgIHNfY2xvc2VkID0gdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLmNsb3NlZC5zdWJzY3JpYmUoKGU6IGFueSkgPT4gdGhpcy5jbG9zZVBvcHVwKCkpO1xyXG5cclxuICAgIHNfc2V0ID0gdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnNldEZpbHRlci5zdWJzY3JpYmUoKGU6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNldEZpbHRlci5lbWl0KGUpO1xyXG4gICAgICB0aGlzLmNsb3NlUG9wdXAodHJ1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBzX3Jlc2V0ID0gdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnJlc2V0RmlsdGVyLnN1YnNjcmliZSgoZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMucmVzZXRGaWx0ZXIuZW1pdChlKTtcclxuICAgICAgdGhpcy5jbG9zZVBvcHVwKGZhbHNlKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuX3N1YnNjcmliZXMucHVzaChzX2Nsb3NlZCk7XHJcbiAgICB0aGlzLl9zdWJzY3JpYmVzLnB1c2goc19zZXQpO1xyXG4gICAgdGhpcy5fc3Vic2NyaWJlcy5wdXNoKHNfcmVzZXQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dCeVRhcmdldCh0YXJnZXQ6IGFueSwgZmlsdGVyOiBGaWx0ZXIsIGZpbHRlckNvbXBvbmVudFR5cGU6IGFueSwgcm93czogQXJyYXk8YW55Pikge1xyXG4gICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XHJcbiAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudChmaWx0ZXJDb21wb25lbnRUeXBlLCBmaWx0ZXIsIHJvd3MpO1xyXG4gICAgdGhpcy5wb3B1cC5zaG93QnlUYXJnZXQodGFyZ2V0LCAnbGVmdCcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlUG9wdXAocmVzdWx0OiBhbnkgPSBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fY29tcG9uZW50UmVmKSB7XHJcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5kZXN0cm95KCk7XHJcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLnBvcHVwLmNsb3NlUG9wdXAocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdW5zdWJzY3JpYmVBbGwoKSB7XHJcbiAgICB0aGlzLl9zdWJzY3JpYmVzLmZvckVhY2goc2IgPT4gc2IudW5zdWJzY3JpYmUoKSk7XHJcbiAgICB0aGlzLl9zdWJzY3JpYmVzID0gW107XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjaGFuZ2VzKCkge1xyXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdncmlkU3RhdGUnKSBwdWJsaWMgc3RhdGU6IEdyaWRTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9jZlJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxyXG59XHJcbiJdfQ==