UNPKG

devextreme-angular

Version:

Angular UI and visualization components based on DevExtreme widgets

121 lines • 12.2 kB
/*! * 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