devexpress-reporting
Version:
DevExpress Reporting provides the capability to develop a reporting application to create and customize reports.
49 lines (48 loc) • 1.75 kB
JavaScript
/**
* DevExpress HTML/JS Reporting (designer\tools\generator\_reportMenuSettings.js)
* Version: 24.2.6
* Build date: Mar 18, 2025
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* License: https://www.devexpress.com/Support/EULAs/universal.xml
*/
import { MenuSettings } from '@devexpress/analytics-core/analytics-internal';
import * as events from 'devextreme/events';
import * as ko from 'knockout';
export class ReportMenuSettings extends MenuSettings {
dispose() {
super.dispose();
events.off(document, 'dxpointerdown', this.toggleAppMenu);
this._$menuElement = null;
}
setMenuElement($element) {
this._$menuElement = $element;
}
constructor() {
super();
this._appMenuVisible = ko.observable(false);
this._$menuElement = null;
this.isMenuCollapsed = ko.observable(false);
this.toggleAppMenu = (event) => {
const canToggle = !event || !this._$menuElement.is(event.target) && !this._$menuElement.find(event.target).length;
canToggle && this._toggleAppMenu();
return canToggle;
};
}
_toggleAppMenu() {
this.appMenuVisible(!this.appMenuVisible());
if (this.appMenuVisible()) {
events.on(document, 'dxpointerdown', this.toggleAppMenu);
}
else {
this.isMenuCollapsed(false);
events.off(document, 'dxpointerdown', this.toggleAppMenu);
}
}
generate() {
const result = super.generate();
if (this.isMenuCollapsed)
result['isMenuCollapsed'] = this.isMenuCollapsed;
result['setMenuElement'] = ($element) => this.setMenuElement($element);
return result;
}
}