devextreme-angular
Version:
Angular UI and visualization components based on DevExtreme widgets
121 lines • 12.2 kB
JavaScript
/*!
* devextreme-angular
* Version: 20.2.5
* Build date: Fri Jan 15 2021
*
* Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file in the root of the project for details.
*
* https://github.com/DevExpress/devextreme-angular
*/
import * as tslib_1 from "tslib";
/* tslint:disable:use-input-property-decorator */
import { Directive, NgModule, TemplateRef, ViewContainerRef, Input, Renderer2, NgZone, EmbeddedViewRef } from '@angular/core';
import { DxTemplateHost } from './template-host';
import { getElement } from './utils';
import * as events from 'devextreme/events';
import * as domAdapter from 'devextreme/core/dom_adapter';
export var DX_TEMPLATE_WRAPPER_CLASS = 'dx-template-wrapper';
var RenderData = /** @class */ (function () {
function RenderData() {
}
return RenderData;
}());
export { RenderData };
var DxTemplateDirective = /** @class */ (function () {
function DxTemplateDirective(templateRef, viewContainerRef, templateHost, renderer, zone) {
this.templateRef = templateRef;
this.viewContainerRef = viewContainerRef;
this.renderer = renderer;
this.zone = zone;
templateHost.setTemplate(this);
}
Object.defineProperty(DxTemplateDirective.prototype, "dxTemplateOf", {
set: function (value) {
this.name = value;
},
enumerable: true,
configurable: true
});
;
DxTemplateDirective.prototype.renderTemplate = function (renderData) {
var _this = this;
var childView = this.viewContainerRef.createEmbeddedView(this.templateRef, {
'$implicit': renderData.model,
index: renderData.index
});
var container = getElement(renderData.container);
if (renderData.container) {
childView.rootNodes.forEach(function (element) {
_this.renderer.appendChild(container, element);
});
}
return childView;
};
DxTemplateDirective.prototype.render = function (renderData) {
var _this = this;
var childView;
if (this.zone.isStable) {
childView = this.zone.run(function () {
return _this.renderTemplate(renderData);
});
}
else {
childView = this.renderTemplate(renderData);
// =========== WORKAROUND =============
// https://github.com/angular/angular/issues/12243
childView['detectChanges']();
// =========== /WORKAROUND =============
}
childView.rootNodes.forEach(function (element) {
if (element.nodeType === 1) {
domAdapter.setClass(element, DX_TEMPLATE_WRAPPER_CLASS, true);
}
events.one(element, 'dxremove', function (_a, params) {
if (!params || !params._angularIntegration) {
childView.destroy();
}
});
});
return childView.rootNodes;
};
DxTemplateDirective.ctorParameters = function () { return [
{ type: TemplateRef },
{ type: ViewContainerRef },
{ type: DxTemplateHost },
{ type: Renderer2 },
{ type: NgZone }
]; };
tslib_1.__decorate([
Input(),
tslib_1.__metadata("design:type", Object),
tslib_1.__metadata("design:paramtypes", [Object])
], DxTemplateDirective.prototype, "dxTemplateOf", null);
DxTemplateDirective = tslib_1.__decorate([
Directive({
selector: '[dxTemplate]'
}),
tslib_1.__metadata("design:paramtypes", [TemplateRef,
ViewContainerRef,
DxTemplateHost,
Renderer2,
NgZone])
], DxTemplateDirective);
return DxTemplateDirective;
}());
export { DxTemplateDirective };
var DxTemplateModule = /** @class */ (function () {
function DxTemplateModule() {
}
DxTemplateModule = tslib_1.__decorate([
NgModule({
declarations: [DxTemplateDirective],
exports: [DxTemplateDirective]
})
], DxTemplateModule);
return DxTemplateModule;
}());
export { DxTemplateModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kZXZleHRyZW1lLWFuZ3VsYXIvY29yZS8iLCJzb3VyY2VzIjpbInRlbXBsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHOztBQUVILGlEQUFpRDtBQUVqRCxPQUFPLEVBQ0gsU0FBUyxFQUNULFFBQVEsRUFDUixXQUFXLEVBQ1gsZ0JBQWdCLEVBQ2hCLEtBQUssRUFDTCxTQUFTLEVBQ1QsTUFBTSxFQUNOLGVBQWUsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDckMsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEtBQUssVUFBVSxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE1BQU0sQ0FBQyxJQUFNLHlCQUF5QixHQUFHLHFCQUFxQixDQUFDO0FBRS9EO0lBQUE7SUFJQSxDQUFDO0lBQUQsaUJBQUM7QUFBRCxDQUFDLEFBSkQsSUFJQzs7QUFLRDtJQU9JLDZCQUFvQixXQUE2QixFQUNyQyxnQkFBa0MsRUFDMUMsWUFBNEIsRUFDcEIsUUFBbUIsRUFDbkIsSUFBWTtRQUpKLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtRQUNyQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRWxDLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNwQixZQUFZLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFYRCxzQkFBSSw2Q0FBWTthQUFoQixVQUFpQixLQUFLO1lBQ2xCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUM7OztPQUFBO0lBQUEsQ0FBQztJQVdNLDRDQUFjLEdBQXRCLFVBQXVCLFVBQXNCO1FBQTdDLGlCQWNDO1FBYkcsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDekUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxLQUFLO1lBQzdCLEtBQUssRUFBRSxVQUFVLENBQUMsS0FBSztTQUMxQixDQUFDLENBQUM7UUFFSCxJQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRTtZQUN0QixTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFDLE9BQU87Z0JBQ2hDLEtBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELG9DQUFNLEdBQU4sVUFBTyxVQUFzQjtRQUE3QixpQkEyQkM7UUExQkcsSUFBSSxTQUFTLENBQUM7UUFDZCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3BCLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztnQkFDdEIsT0FBTyxLQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzNDLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFBTTtZQUNILFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzVDLHVDQUF1QztZQUN2QyxrREFBa0Q7WUFDbEQsU0FBUyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDN0Isd0NBQXdDO1NBQzNDO1FBRUQsU0FBUyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBQyxPQUFPO1lBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUU7Z0JBQ3hCLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ2pFO1lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQUMsRUFBRSxFQUFFLE1BQU07Z0JBQ3ZDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUU7b0JBQ3hDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztpQkFDdkI7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUMsU0FBUyxDQUFDO0lBQy9CLENBQUM7O2dCQW5EZ0MsV0FBVztnQkFDZCxnQkFBZ0I7Z0JBQzVCLGNBQWM7Z0JBQ1YsU0FBUztnQkFDYixNQUFNOztJQVR4QjtRQURDLEtBQUssRUFBRTs7OzJEQUdQO0lBSlEsbUJBQW1CO1FBSC9CLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxjQUFjO1NBQzNCLENBQUM7aURBUW1DLFdBQVc7WUFDZCxnQkFBZ0I7WUFDNUIsY0FBYztZQUNWLFNBQVM7WUFDYixNQUFNO09BWGYsbUJBQW1CLENBMkQvQjtJQUFELDBCQUFDO0NBQUEsQUEzREQsSUEyREM7U0EzRFksbUJBQW1CO0FBaUVoQztJQUFBO0lBQWdDLENBQUM7SUFBcEIsZ0JBQWdCO1FBSjVCLFFBQVEsQ0FBQztZQUNOLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO1lBQ25DLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO1NBQ2pDLENBQUM7T0FDVyxnQkFBZ0IsQ0FBSTtJQUFELHVCQUFDO0NBQUEsQUFBakMsSUFBaUM7U0FBcEIsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBkZXZleHRyZW1lLWFuZ3VsYXJcbiAqIFZlcnNpb246IDIwLjIuNVxuICogQnVpbGQgZGF0ZTogRnJpIEphbiAxNSAyMDIxXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyIC0gMjAyMSBEZXZlbG9wZXIgRXhwcmVzcyBJbmMuIEFMTCBSSUdIVFMgUkVTRVJWRURcbiAqXG4gKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zXG4gKiBvZiB0aGUgTUlUIGxpY2Vuc2UuIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBwcm9qZWN0IGZvciBkZXRhaWxzLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9EZXZFeHByZXNzL2RldmV4dHJlbWUtYW5ndWxhclxuICovXG5cbi8qIHRzbGludDpkaXNhYmxlOnVzZS1pbnB1dC1wcm9wZXJ0eS1kZWNvcmF0b3IgKi9cclxuXHJcbmltcG9ydCB7XHJcbiAgICBEaXJlY3RpdmUsXHJcbiAgICBOZ01vZHVsZSxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG4gICAgVmlld0NvbnRhaW5lclJlZixcclxuICAgIElucHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgTmdab25lLFxyXG4gICAgRW1iZWRkZWRWaWV3UmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBEeFRlbXBsYXRlSG9zdCB9IGZyb20gJy4vdGVtcGxhdGUtaG9zdCc7XHJcbmltcG9ydCB7IGdldEVsZW1lbnQgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0ICogYXMgZXZlbnRzIGZyb20gJ2RldmV4dHJlbWUvZXZlbnRzJztcclxuaW1wb3J0ICogYXMgZG9tQWRhcHRlciBmcm9tICdkZXZleHRyZW1lL2NvcmUvZG9tX2FkYXB0ZXInO1xyXG5cclxuZXhwb3J0IGNvbnN0IERYX1RFTVBMQVRFX1dSQVBQRVJfQ0xBU1MgPSAnZHgtdGVtcGxhdGUtd3JhcHBlcic7XHJcblxyXG5leHBvcnQgY2xhc3MgUmVuZGVyRGF0YSB7XHJcbiAgICBtb2RlbDogYW55O1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxuICAgIGNvbnRhaW5lcjogYW55O1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2R4VGVtcGxhdGVdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRHhUZW1wbGF0ZURpcmVjdGl2ZSB7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgc2V0IGR4VGVtcGxhdGVPZih2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMubmFtZSA9IHZhbHVlO1xyXG4gICAgfTtcclxuICAgIG5hbWU6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICB0ZW1wbGF0ZUhvc3Q6IER4VGVtcGxhdGVIb3N0LFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcclxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSkge1xyXG4gICAgICAgIHRlbXBsYXRlSG9zdC5zZXRUZW1wbGF0ZSh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlbmRlclRlbXBsYXRlKHJlbmRlckRhdGE6IFJlbmRlckRhdGEpOiBFbWJlZGRlZFZpZXdSZWY8YW55PiB7XHJcbiAgICAgICAgY29uc3QgY2hpbGRWaWV3ID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLnRlbXBsYXRlUmVmLCB7XHJcbiAgICAgICAgICAgICckaW1wbGljaXQnOiByZW5kZXJEYXRhLm1vZGVsLFxyXG4gICAgICAgICAgICBpbmRleDogcmVuZGVyRGF0YS5pbmRleFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBjb250YWluZXIgPSBnZXRFbGVtZW50KHJlbmRlckRhdGEuY29udGFpbmVyKTtcclxuICAgICAgICBpZiAocmVuZGVyRGF0YS5jb250YWluZXIpIHtcclxuICAgICAgICAgICAgY2hpbGRWaWV3LnJvb3ROb2Rlcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lciwgZWxlbWVudCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkVmlldztcclxuICAgIH1cclxuXHJcbiAgICByZW5kZXIocmVuZGVyRGF0YTogUmVuZGVyRGF0YSkge1xyXG4gICAgICAgIGxldCBjaGlsZFZpZXc7XHJcbiAgICAgICAgaWYgKHRoaXMuem9uZS5pc1N0YWJsZSkge1xyXG4gICAgICAgICAgICBjaGlsZFZpZXcgPSB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlclRlbXBsYXRlKHJlbmRlckRhdGEpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjaGlsZFZpZXcgPSB0aGlzLnJlbmRlclRlbXBsYXRlKHJlbmRlckRhdGEpO1xyXG4gICAgICAgICAgICAvLyA9PT09PT09PT09PSBXT1JLQVJPVU5EID09PT09PT09PT09PT1cclxuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTIyNDNcclxuICAgICAgICAgICAgY2hpbGRWaWV3WydkZXRlY3RDaGFuZ2VzJ10oKTtcclxuICAgICAgICAgICAgLy8gPT09PT09PT09PT0gL1dPUktBUk9VTkQgPT09PT09PT09PT09PVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2hpbGRWaWV3LnJvb3ROb2Rlcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7XHJcbiAgICAgICAgICAgICAgICBkb21BZGFwdGVyLnNldENsYXNzKGVsZW1lbnQsIERYX1RFTVBMQVRFX1dSQVBQRVJfQ0xBU1MsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBldmVudHMub25lKGVsZW1lbnQsICdkeHJlbW92ZScsICh7fSwgcGFyYW1zKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXBhcmFtcyB8fCAhcGFyYW1zLl9hbmd1bGFySW50ZWdyYXRpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZFZpZXcuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGNoaWxkVmlldy5yb290Tm9kZXM7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtEeFRlbXBsYXRlRGlyZWN0aXZlXSxcclxuICAgIGV4cG9ydHM6IFtEeFRlbXBsYXRlRGlyZWN0aXZlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHhUZW1wbGF0ZU1vZHVsZSB7IH1cclxuIl19