devexpress-reporting-angular 23.2.5-build-2440-1343 → 23.2.5-build-2465-1730
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dx-report-viewer/components/analytics/properties/collectioneditor/collectioneditor.component.d.ts +4 -2
- package/dx-report-viewer/components/reporting/parameterspanel/date-range/date-range.component.d.ts +4 -2
- package/dx-report-viewer/dx-report-viewer.component.d.ts +2 -0
- package/esm2020/dx-report-viewer/components/analytics/properties/collectioneditor/collectioneditor.component.mjs +9 -4
- package/esm2020/dx-report-viewer/components/reporting/parameterspanel/date-range/date-range.component.mjs +18 -9
- package/esm2020/dx-report-viewer/dx-report-viewer.component.mjs +10 -1
- package/fesm2015/devexpress-reporting-angular-dx-report-viewer.mjs +33 -11
- package/fesm2015/devexpress-reporting-angular-dx-report-viewer.mjs.map +1 -1
- package/fesm2020/devexpress-reporting-angular-dx-report-viewer.mjs +32 -11
- package/fesm2020/devexpress-reporting-angular-dx-report-viewer.mjs.map +1 -1
- package/package.json +3 -3
@@ -5,6 +5,7 @@ import { _inputConverter, _booleanConverter, DxReportingComponent } from 'devexp
|
|
5
5
|
import '@devexpress/analytics-core/dx-analytics-core-svg-templates';
|
6
6
|
import 'devexpress-reporting/dx-reporting-svg-templates';
|
7
7
|
import { JSReportViewerBinding } from 'devexpress-reporting/viewer/binding/jsReportViewerBinding';
|
8
|
+
import { ViewModelChangedEvent } from '@devexpress/analytics-core/serializer/native/viewModels/viewModelGenerator';
|
8
9
|
import * as i1 from '@angular/common';
|
9
10
|
import { CommonModule } from '@angular/common';
|
10
11
|
import { SvgTemplatesEngine } from '@devexpress/analytics-core/property-grid/widgets/internal/_svgTemplateEngine';
|
@@ -738,25 +739,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
738
739
|
}] });
|
739
740
|
|
740
741
|
class CollectionEditorComponent {
|
741
|
-
constructor() {
|
742
|
+
constructor(_changeDetectorRef) {
|
743
|
+
this._changeDetectorRef = _changeDetectorRef;
|
742
744
|
}
|
743
745
|
ngOnDestroy() {
|
746
|
+
this._vmSubscription && this._vmSubscription();
|
744
747
|
this._model.dispose();
|
745
748
|
}
|
746
749
|
ngOnInit() {
|
747
750
|
this._model = new CollectionEditorViewModel(this.options);
|
748
751
|
this.data = this._model.getViewModel();
|
752
|
+
this._vmSubscription = this.data
|
753
|
+
._viewModelEvents.on(ViewModelChangedEvent, () => this._changeDetectorRef.markForCheck());
|
749
754
|
}
|
750
755
|
onScrollViewInitialized(args) {
|
751
756
|
args.component.option('useKeyboard', false);
|
752
757
|
}
|
753
758
|
}
|
754
|
-
CollectionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
759
|
+
CollectionEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
755
760
|
CollectionEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: CollectionEditorComponent, selector: "dxa-collectioneditor", inputs: { options: ["data", "options"], contentTemplate: "contentTemplate" }, ngImport: i0, template: "<div class=\"dx-collectioneditor\">\n <div [dxaAccordion]=\"data\" [dxMutationObserver]=\"data.keyboardHelper\">\n <div class=\"dx-collectioneditor-header dx-accordion-header\">\n <div class=\"dx-editor-header\">\n <div role=\"treeitem\"\n class=\"dx-field dx-accessibility-focus-border-accented dxrd-accessibility-accordion-trigger\"\n [attr.aria-expanded]=\"data.alwaysShow || !data.collapsed ? 'true' : 'false'\"\n [attr.aria-owns]=\"data.contentId\" [attr.id]=\"data.headerId\">\n <div *ngIf=\"data.showButtons\" class=\"dx-collectioneditor-actions-wrapper\">\n <dx-button *ngIf=\"data.buttons.up.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.up.action($event)\" [disabled]=\"data.buttons.up.disabled\"\n icon=\"dxrd-svg-operations-moveup\" iconClass=\"dx-image-moveup\"\n [template]=\"data.buttons.up.template\"\n [attr.title]=\"data.buttons.up.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.down.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.down.action($event)\" [disabled]=\"data.buttons.down.disabled\"\n icon=\"dxrd-svg-operations-movedown\" iconClass=\"dx-image-movedown\"\n [template]=\"data.buttons.down.template\"\n [attr.title]=\"data.buttons.down.text\"></dx-button>\n <div class=\"dx-collectioneditor-action-separator\"></div>\n <dx-button *ngIf=\"data.buttons.add.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.add.action($event)\" [disabled]=\"data.buttons.add.disabled\"\n [template]=\"data.buttons.add.template\"\n icon=\"dxrd-svg-operations-add\" iconClass=\"dx-image-add\"\n [attr.title]=\"data.buttons.add.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.delete.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.delete.action($event)\" [disabled]=\"data.buttons.delete.disabled\"\n [template]=\"data.buttons.delete.template\"\n icon=\"dxrd-svg-operations-remove\" iconClass=\"dx-image-remove\"\n [attr.title]=\"data.buttons.delete.text\"></dx-button>\n </div>\n <div *ngIf=\"!!data.displayName\" class=\"dx-collectioneditor-header-text dxd-text-primary\"\n [style.padding-left]=\"data.padding + 'px'\">\n <dxa-template class=\"dx-collapsing-image dxrd-display-inline-block\"\n template=\"dxrd-svg-collapsed\"\n [class.dx-image-expanded]=\"!data.collapsed \"></dxa-template>\n <div class=\"dx-group-header-font dxd-text-primary dxrd-display-inline-block\" [attr.title]=\"data.displayName\">\n {{data.displayName}}</div>\n </div>\n </div>\n </div>\n </div>\n <div role=\"group\" class=\"dx-accordion-content\"\n [attr.aria-hidden]=\"!data.alwaysShow && data.collapsed ? 'true' : 'false'\"\n [attr.aria-labelledby]=\"data.headerId\" [attr.id]=\"data.contentId\">\n <dx-scroll-view [hidden]=\"data.disabled\" showScrollbar=\"onHover\" [disabled]=\"!data.showScroll\"\n [useNative]=\"false\" [scrollByThumb]=\"true\" (onInitialized)=\"onScrollViewInitialized($event)\">\n <div *ngIf=\"data.values.length === 0\"\n class=\"dx-collectioneditor-empty dxd-empty-area-placeholder-text-color dxd-text-info\">\n <span class=\"dx-collectioneditor-empty-text\">{{data.emptyAreaText}}</span>\n </div>\n <div *ngIf=\"data.values.length !== 0\" class=\"dx-collectioneditor-items\">\n <div *ngFor=\"let value of data.values\"\n class=\"dx-collectioneditor-item-container dxd-button-back-color dxd-state-normal dxd-back-highlighted dx-accessibility-list-item dx-accessibility-focus-border-accented\"\n [attr.aria-selected]=\"value.selected\" [dxActionModel]=\"value\" [dxAction]=\"value.select\"\n [class.dxd-state-selected]=\"value.selected\">\n <div class=\"dx-collection-item\">\n <ng-container *ngTemplateOutlet=\"contentTemplate, context: { data: value }\"></ng-container>\n </div>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i2.DxScrollViewComponent, selector: "dx-scroll-view", inputs: ["bounceEnabled", "direction", "disabled", "elementAttr", "height", "pulledDownText", "pullingDownText", "reachBottomText", "refreshingText", "rtlEnabled", "scrollByContent", "scrollByThumb", "showScrollbar", "useNative", "width"], outputs: ["onDisposing", "onInitialized", "onOptionChanged", "onPullDown", "onReachBottom", "onScroll", "onUpdated", "bounceEnabledChange", "directionChange", "disabledChange", "elementAttrChange", "heightChange", "pulledDownTextChange", "pullingDownTextChange", "reachBottomTextChange", "refreshingTextChange", "rtlEnabledChange", "scrollByContentChange", "scrollByThumbChange", "showScrollbarChange", "useNativeChange", "widthChange"] }, { kind: "component", type: TemplateComponent, selector: "dxa-template", inputs: ["data", "template"] }, { kind: "directive", type: DxActionDirective, selector: "[dxAction]", inputs: ["dxActionModel", "dxAction"] }, { kind: "directive", type: AccordionDirective, selector: "[dxaAccordion]", inputs: ["dxaAccordion"] }, { kind: "directive", type: DxMutationObserverDirective, selector: "[dxMutationObserver]", inputs: ["dxMutationObserver"] }] });
|
756
761
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CollectionEditorComponent, decorators: [{
|
757
762
|
type: Component,
|
758
763
|
args: [{ selector: 'dxa-collectioneditor', template: "<div class=\"dx-collectioneditor\">\n <div [dxaAccordion]=\"data\" [dxMutationObserver]=\"data.keyboardHelper\">\n <div class=\"dx-collectioneditor-header dx-accordion-header\">\n <div class=\"dx-editor-header\">\n <div role=\"treeitem\"\n class=\"dx-field dx-accessibility-focus-border-accented dxrd-accessibility-accordion-trigger\"\n [attr.aria-expanded]=\"data.alwaysShow || !data.collapsed ? 'true' : 'false'\"\n [attr.aria-owns]=\"data.contentId\" [attr.id]=\"data.headerId\">\n <div *ngIf=\"data.showButtons\" class=\"dx-collectioneditor-actions-wrapper\">\n <dx-button *ngIf=\"data.buttons.up.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.up.action($event)\" [disabled]=\"data.buttons.up.disabled\"\n icon=\"dxrd-svg-operations-moveup\" iconClass=\"dx-image-moveup\"\n [template]=\"data.buttons.up.template\"\n [attr.title]=\"data.buttons.up.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.down.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.down.action($event)\" [disabled]=\"data.buttons.down.disabled\"\n icon=\"dxrd-svg-operations-movedown\" iconClass=\"dx-image-movedown\"\n [template]=\"data.buttons.down.template\"\n [attr.title]=\"data.buttons.down.text\"></dx-button>\n <div class=\"dx-collectioneditor-action-separator\"></div>\n <dx-button *ngIf=\"data.buttons.add.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.add.action($event)\" [disabled]=\"data.buttons.add.disabled\"\n [template]=\"data.buttons.add.template\"\n icon=\"dxrd-svg-operations-add\" iconClass=\"dx-image-add\"\n [attr.title]=\"data.buttons.add.text\"></dx-button>\n <dx-button *ngIf=\"data.buttons.delete.visible\"\n class=\"dx-collectioneditor-action dx-accessibility-focus-border-accented\"\n (onClick)=\"data.buttons.delete.action($event)\" [disabled]=\"data.buttons.delete.disabled\"\n [template]=\"data.buttons.delete.template\"\n icon=\"dxrd-svg-operations-remove\" iconClass=\"dx-image-remove\"\n [attr.title]=\"data.buttons.delete.text\"></dx-button>\n </div>\n <div *ngIf=\"!!data.displayName\" class=\"dx-collectioneditor-header-text dxd-text-primary\"\n [style.padding-left]=\"data.padding + 'px'\">\n <dxa-template class=\"dx-collapsing-image dxrd-display-inline-block\"\n template=\"dxrd-svg-collapsed\"\n [class.dx-image-expanded]=\"!data.collapsed \"></dxa-template>\n <div class=\"dx-group-header-font dxd-text-primary dxrd-display-inline-block\" [attr.title]=\"data.displayName\">\n {{data.displayName}}</div>\n </div>\n </div>\n </div>\n </div>\n <div role=\"group\" class=\"dx-accordion-content\"\n [attr.aria-hidden]=\"!data.alwaysShow && data.collapsed ? 'true' : 'false'\"\n [attr.aria-labelledby]=\"data.headerId\" [attr.id]=\"data.contentId\">\n <dx-scroll-view [hidden]=\"data.disabled\" showScrollbar=\"onHover\" [disabled]=\"!data.showScroll\"\n [useNative]=\"false\" [scrollByThumb]=\"true\" (onInitialized)=\"onScrollViewInitialized($event)\">\n <div *ngIf=\"data.values.length === 0\"\n class=\"dx-collectioneditor-empty dxd-empty-area-placeholder-text-color dxd-text-info\">\n <span class=\"dx-collectioneditor-empty-text\">{{data.emptyAreaText}}</span>\n </div>\n <div *ngIf=\"data.values.length !== 0\" class=\"dx-collectioneditor-items\">\n <div *ngFor=\"let value of data.values\"\n class=\"dx-collectioneditor-item-container dxd-button-back-color dxd-state-normal dxd-back-highlighted dx-accessibility-list-item dx-accessibility-focus-border-accented\"\n [attr.aria-selected]=\"value.selected\" [dxActionModel]=\"value\" [dxAction]=\"value.select\"\n [class.dxd-state-selected]=\"value.selected\">\n <div class=\"dx-collection-item\">\n <ng-container *ngTemplateOutlet=\"contentTemplate, context: { data: value }\"></ng-container>\n </div>\n </div>\n </div>\n </dx-scroll-view>\n </div>\n </div>\n</div>" }]
|
759
|
-
}], ctorParameters: function () { return []; }, propDecorators: { options: [{
|
764
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
|
760
765
|
type: Input,
|
761
766
|
args: ['data']
|
762
767
|
}], contentTemplate: [{
|
@@ -1324,46 +1329,54 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
1324
1329
|
}] } });
|
1325
1330
|
|
1326
1331
|
class DateRangeComponent {
|
1327
|
-
constructor(_currentElement) {
|
1332
|
+
constructor(_currentElement, _changeDetectorRef) {
|
1328
1333
|
this._currentElement = _currentElement;
|
1334
|
+
this._changeDetectorRef = _changeDetectorRef;
|
1329
1335
|
}
|
1330
1336
|
ngOnDestroy() {
|
1337
|
+
this._vmSubscription && this._vmSubscription();
|
1331
1338
|
this._editor.dispose();
|
1332
1339
|
}
|
1333
1340
|
ngOnInit() {
|
1334
1341
|
this._editor = createDateRangeEditor(this.options, this._currentElement.nativeElement, this.options);
|
1335
1342
|
this.data = this._editor.getViewModel();
|
1343
|
+
this._vmSubscription = this.data._viewModelEvents.on(ViewModelChangedEvent, () => {
|
1344
|
+
this._changeDetectorRef.markForCheck();
|
1345
|
+
});
|
1336
1346
|
this.data.cacheElement(this._currentElement.nativeElement);
|
1347
|
+
const processClickEvent = () => {
|
1348
|
+
this.data.showPopup();
|
1349
|
+
this._changeDetectorRef.markForCheck();
|
1350
|
+
};
|
1337
1351
|
const processKeyBoardEvent = (e) => {
|
1338
1352
|
if (e.key == KeyboardEnum.Enter || (e.key == KeyboardEnum.ArrowDown && e.altKey)) {
|
1339
1353
|
this.data.showPopup();
|
1354
|
+
this._changeDetectorRef.markForCheck();
|
1340
1355
|
}
|
1341
1356
|
};
|
1342
1357
|
this.subscribeToEvents = (event) => {
|
1343
1358
|
this.textBoxInputElement = event.element.querySelector('.dx-texteditor-input');
|
1344
|
-
this.textBoxInputElement?.addEventListener('click',
|
1359
|
+
this.textBoxInputElement?.addEventListener('click', processClickEvent);
|
1345
1360
|
this.textBoxInputElement?.addEventListener('keydown', processKeyBoardEvent);
|
1346
1361
|
};
|
1347
1362
|
this.unsubscribeFromEvents = () => {
|
1348
|
-
this.textBoxInputElement?.removeEventListener('click',
|
1363
|
+
this.textBoxInputElement?.removeEventListener('click', processClickEvent);
|
1349
1364
|
this.textBoxInputElement?.removeEventListener('keydown', processKeyBoardEvent);
|
1350
1365
|
};
|
1351
1366
|
this.showPopupOptions = {
|
1352
1367
|
disabled: false,
|
1353
|
-
onClick:
|
1354
|
-
this.data.showPopup();
|
1355
|
-
},
|
1368
|
+
onClick: processClickEvent,
|
1356
1369
|
template: generateIconTemplate('dx-ellipsis-image'),
|
1357
1370
|
icon: 'dxrd-svg-ellipsis'
|
1358
1371
|
};
|
1359
1372
|
}
|
1360
1373
|
}
|
1361
|
-
DateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
1374
|
+
DateRangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
1362
1375
|
DateRangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DateRangeComponent, selector: "dxv-date-range", inputs: { options: ["data", "options"] }, ngImport: i0, template: "<div class=\"dxrv-daterange-editor\">\n <dx-text-box \n [value]=\"data.displayValue\"\n [readOnly]=\"true\"\n (onContentReady)=\"subscribeToEvents($event)\" (onDisposing)=\"unsubscribeFromEvents()\"\n >\n <dxi-button\n name=\"showPopup\"\n location=\"after\"\n [options]=\"showPopupOptions\"\n ></dxi-button>\n </dx-text-box>\n <dxa-template [template]=\"data.popupTemplate\" [data]=\"data.popupModel\"></dxa-template>\n</div>", dependencies: [{ kind: "component", type: i1$1.DxiButtonComponent, selector: "dxi-button", inputs: ["location", "name", "options", "cssClass", "disabled", "hint", "icon", "onClick", "template", "text", "visible"] }, { kind: "component", type: i2.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isDirtyChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: TemplateComponent, selector: "dxa-template", inputs: ["data", "template"] }] });
|
1363
1376
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DateRangeComponent, decorators: [{
|
1364
1377
|
type: Component,
|
1365
1378
|
args: [{ selector: 'dxv-date-range', template: "<div class=\"dxrv-daterange-editor\">\n <dx-text-box \n [value]=\"data.displayValue\"\n [readOnly]=\"true\"\n (onContentReady)=\"subscribeToEvents($event)\" (onDisposing)=\"unsubscribeFromEvents()\"\n >\n <dxi-button\n name=\"showPopup\"\n location=\"after\"\n [options]=\"showPopupOptions\"\n ></dxi-button>\n </dx-text-box>\n <dxa-template [template]=\"data.popupTemplate\" [data]=\"data.popupModel\"></dxa-template>\n</div>" }]
|
1366
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { options: [{
|
1379
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
|
1367
1380
|
type: Input,
|
1368
1381
|
args: ['data']
|
1369
1382
|
}] } });
|
@@ -2676,18 +2689,26 @@ class DxReportViewerComponent extends DxReportingComponent {
|
|
2676
2689
|
super.ngAfterViewInit();
|
2677
2690
|
this.model = this._binding.sender;
|
2678
2691
|
this.viewModel = this.model.GetPreviewModel()?.getViewModel();
|
2692
|
+
this._disposeViewModelChangedSubscription = this._subscribeToViewModelChanged(this.viewModel);
|
2679
2693
|
this._disposableCallback = this.model.events.on('propertyChanged', (args) => {
|
2680
2694
|
if (args.propertyName === 'previewModel') {
|
2681
2695
|
this.viewModel = this.model.GetPreviewModel().getViewModel();
|
2696
|
+
this._disposeViewModelChangedSubscription && this._disposeViewModelChangedSubscription();
|
2697
|
+
this._disposeViewModelChangedSubscription = this._subscribeToViewModelChanged(this.viewModel);
|
2682
2698
|
}
|
2683
2699
|
});
|
2684
2700
|
this._cd.detectChanges();
|
2685
2701
|
}
|
2686
2702
|
ngOnDestroy() {
|
2687
2703
|
this._disposableCallback && this._disposableCallback();
|
2704
|
+
this._disposeViewModelChangedSubscription && this._disposeViewModelChangedSubscription();
|
2688
2705
|
this._binding.dispose();
|
2689
2706
|
super.ngOnDestroy();
|
2690
2707
|
}
|
2708
|
+
_subscribeToViewModelChanged(viewModel) {
|
2709
|
+
const eventHolder = viewModel;
|
2710
|
+
return eventHolder?._viewModelEvents?.on(ViewModelChangedEvent, () => this._cd.markForCheck());
|
2711
|
+
}
|
2691
2712
|
get accessibilityCompliant() {
|
2692
2713
|
return this._accessibilitySettings.accessibilityCompliant;
|
2693
2714
|
}
|